<?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>AceEditor</name>
	<version>0.2.4</version>
  <mincmsversion>1.9</mincmsversion>
	<help><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhvc3RlZF9idXR0b25faWQiIHZhbHVlPSJGTEgyQU44OVVQUEFHIiAvPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9lbl9HQi9pL2J0bi9idG5fZG9uYXRlX0xHLmdpZiIgYm9yZGVyPSIwIiBuYW1lPSJzdWJtaXQiIGFsdD0iUGF5UGFsIOKAlCBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZS4iIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7IiAvPjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9kZV9ERS9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIC8+PC9mb3JtPjwvZGl2PjxkaXYgaWQ9InBhZ2VfdGFicyI+PGRpdiBpZD0iZ2VuZXJhbCI+QWxsZ2VtZWluPC9kaXY+PGRpdiBpZD0ic2hvcnRjdXRzIj5UYXN0YXR1cmsmdXVtbDtyemVsPC9kaXY+PGRpdiBpZD0iZnJvbnRlbmQiPkZyb250ZW5kPC9kaXY+PGRpdiBpZD0iYWJvdXQiPiZVdW1sO2JlcjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+PGRpdiBpZD0icGFnZV9jb250ZW50Ij48ZGl2IGlkPSJnZW5lcmFsX2MiPjxpbWcgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjowIDEwcHggMTBweCAxMHB4OyBib3JkZXI6IDVweCBzb2xpZCAjZjBmMGYwOyIgc3JjPSJodHRwOi8vbG9jYWxob3N0LzEuMTAuMy9tb2R1bGVzL0FjZUVkaXRvci9pbWFnZXMvZWRpdG9yLmpwZyIgYWx0PSJFZGl0b3IiIHdpZHRoPSIzMTYiIGhlaWdodD0iMjU5IiAvPjxoMz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9oMz4NCjxwPkFjZUVkaXRvciBpcyBhIFN5bnRheGhpZ2hsaWdodGVyIG1vZHVsZSB1c2luZyA8c3Ryb25nPkFjZTwvc3Ryb25nPiBhIHN0YW5kYWxvbmUgY29kZSBlZGl0b3Igd3JpdHRlbiBpbiBKYXZhU2NyaXB0LjxiciAvPiANCkdvYWwgb2YgQWNlIGNvZGUgZWRpdG9yIGdyb3VwIGlzIHRvIGNyZWF0ZSBhIHdlYiBiYXNlZCBjb2RlIGVkaXRvciB0aGF0IG1hdGNoZXMgYW5kIGV4dGVuZHMgdGhlIGZlYXR1cmVzLCB1c2FiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIG9mIGV4aXN0aW5nIG5hdGl2ZSBlZGl0b3JzIHN1Y2ggYXMgVGV4dE1hdGUsIFZpbSBvciBFY2xpcHNlLjxiciAvPg0KSXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbiBhbnkgd2ViIHBhZ2UgYW5kIEphdmFTY3JpcHQgYXBwbGljYXRpb24uPGJyIC8+IA0KQWNlIGlzIGRldmVsb3BlZCBhcyB0aGUgcHJpbWFyeSBlZGl0b3IgZm9yIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2xvdWQ5aWRlLmNvbSI+Q2xvdWQ5IElERTwvYT4gYW5kIHRoZSBzdWNjZXNzb3Igb2YgdGhlIE1vemlsbGEgU2t5d3JpdGVyIChCZXNwaW4pIFByb2plY3QuPC9wPg0KPGgzPkFjZSBpcyBob3N0ZWQgb24gR2l0SHViPC9oMz4NCjxwPlRoZSBBY2Ugc291cmNlIGNvZGUgaXMgaG9zdGVkIG9uIEdpdEh1Yi4gSXQgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1vemlsbGEgdHJpLWxpY2Vuc2UgKE1QTC9HUEwvTEdQTCkuPGJyIC8+DQpUaGlzIGlzIHRoZSBzYW1lIGxpY2Vuc2UgdXNlZCBieSBGaXJlZm94LiBUaGlzIGxpY2Vuc2UgaXMgZnJpZW5kbHkgdG8gYWxsIGtpbmRzIG9mIHByb2plY3RzLCB3aGV0aGVyIG9wZW4gc291cmNlIG9yIG5vdC48YnIgLz4NCiBUYWtlIGNoYXJnZSBvZiB5b3VyIGVkaXRvciBhbmQgYWRkIHlvdXIgZmF2b3JpdGUgbGFuZ3VhZ2UgaGlnaGxpZ2h0aW5nIGFuZCBrZXliaW5kaW5ncyE8L3A+DQo8aDM+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZTwvaDM+DQo8cD5Vc2luZyBBY2VFZGl0b3IgTW9kdWxlIGlzIHNpbXBsZS48YnIgLz4NCkFmdGVyIEFjZUVkaXRvciB3YXMgaW5zdGFsbGVkIGdvIHRvICZxdW90O015IFByZWZlcmVuY2VzICZyYXF1bzsgVXNlciBQcmVmZXJlbmNlcyZxdW90OyBhbmQgY2hvb3NlIEFjZUVkaXRvciBhcyB5b3VyIFN5bnRheGhpZ2hsaWdodGVyIG9mIGNob2ljZSBmcm9tICZxdW90O1NlbGVjdCBzeW50YXggaGlnaGxpZ2h0ZXIgdG8gdXNlOiZxdW90OyBEcm9wZG93bi48YnIgLz4NCk1ha2Ugc3VyZSB5b3UgaGF2ZSAmIzAzOTtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyYjMDM5OyBQZXJtc2lzc2lvbi48L3A+DQo8aDM+U2V0dGluZ3M8L2gzPg0KPHA+WW91IGNhbiBjaGFuZ2UgZGVmYXVsdCBTZXR0aW5ncyBhbmQgVGhlbWVzIGluICZxdW90O0V4dGVuc2lvbnMgJnJhcXVvOyBBY2VFZGl0b3ImcXVvdDs8L3A+PGJyIHN0eWxlID0iY2xlYXI6Ym90aDsiIC8+PC9kaXY+PGRpdiBpZD0ic2hvcnRjdXRzX2MiPjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+ICAgICAgPGgzPkRlZmF1bHQgS2V5Ym9hcmQgU2hvcnRjdXRzPC9oMz4NCg0KPHRhYmxlIGNsYXNzPSZxdW90O3BhZ2V0YWJsZSZxdW90OyBjZWxsc3BhY2luZz0mcXVvdDswJnF1b3Q7IHN1bW1hcnk9JnF1b3Q7RGVmYXVsdCBLZXlib2FyZCBTaG9ydGN1dHMmcXVvdDs+DQo8dGhlYWQ+PHRyPg0KPHRoPlBDIChXaW5kb3dzL0xpbnV4KTwvdGQ+DQo8dGg+TWFjPC90ZD4NCjx0aD5hY3Rpb248L3RkPg0KPC90cj48L3RoZWFkPg0KPHRib2R5Pg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz48L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1MPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmNlbnRlciBzZWxlY3Rpb248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLU9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmNvcHkgbGluZXMgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGxjYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUFsdC1VcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLU9wdGlvbi1VcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5jb3B5IGxpbmVzIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtRjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLUY8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+ZmluZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUs8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1HPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmZpbmQgbmV4dDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LUs8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1HPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmZpbmQgcHJldmlvdXM8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+RG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Eb3duLEN0cmwtTjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyBsaW5lIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+VXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+VXAsQ3RybC1QPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIGxpbmUgdXA8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1FbmQsQ3RybC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtRW5kLENvbW1hbmQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+TGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5MZWZ0LEN0cmwtQjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtTDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLUw8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtUmlnaHQsRW5kPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtUmlnaHQsRW5kLEN0cmwtRTwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtTGVmdCxIb21lPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtTGVmdCxIb21lLEN0cmwtQTwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1QYWdlRG93bixDdHJsLVY8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gcGFnZSBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tUGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIHBhZ2UgdXA8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UmlnaHQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UmlnaHQsQ3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtSG9tZSxDdHJsLVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtSG9tZSxDb21tYW5kLVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5UYWI8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+VGFiPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmluZGVudDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5tb3ZlIGxpbmVzIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+QWx0LVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1VcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5tb3ZlIGxpbmVzIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVRhYjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+b3V0ZGVudDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+SW5zZXJ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pm92ZXJ3cml0ZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz48L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UGFnZURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cGFnZWRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5wYWdldXA8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1TaGlmdC1aLEN0cmwtWTwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVNoaWZ0LVosQ29tbWFuZC1ZPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlZG88L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1EPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtRDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5yZW1vdmUgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz48L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSB0byBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz48L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLUJhY2tzcGFjZTwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5yZW1vdmUgdG8gbGluZXN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtQmFja3NwYWNlLEN0cmwtQWx0LUJhY2tzcGFjZTwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5yZW1vdmUgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtRGVsZXRlPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSB3b3JkIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtUjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLU9wdGlvbi1GPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlcGxhY2U8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1TaGlmdC1SPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtU2hpZnQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVwbGFjZSBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1BPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtQTwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgYWxsPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtRW5kPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtSG9tZTwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1Ib21lPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtUGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgcGFnZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1TaGlmdC1FbmQsQWx0LVNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCB0byBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+QWx0LVNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgdG8gbGluZSBzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LUhvbWUsQWx0LVNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHRvIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHdvcmQgbGVmdDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3Qgd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz48L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1PPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNwbGl0IGxpbmU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC03PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtNzwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz50b2dnbGUgY29tbWVudDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1UPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnRyYW5zcG9zZSBsZXR0ZXJzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtWjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVo8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+dW5kbzwvdGQ+DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+PC9kaXY+PC9kaXY+PGRpdiBpZD0iZnJvbnRlbmRfYyI+PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cD5UaGlzIE1vZHVsZSBhbmQgQWNlIFNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0ZXIuPGJyIC8+DQpUbyBtYWtlIGl0IHdvcmsgeW91IGhhdmUgdG8gaW5jbHVkZSBqUXVlcnkgRnJhbWV3b3JrLCBmb3IgZXhhbXBsZSB1c2luZyBDTVNNUyB7Y21zX2pxdWVyeX0gdGFnIGFuZCBhcyB3ZWxsIGluY2x1ZGUge0FjZUVkaXRvcn0gaW4geW91ciBwYWdlIHR3aWNlLiBGaXJzdCBhZGQgdGhlIG1vZHVsZSB0YWcgaW4geW91ciA8aGVhZD4gc2VjdGlvbiBvZiBUZW1wbGF0ZSBvciBpbiAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGRhdGEmcXVvdDsgZmllbGQgb2YgeW91ciBDb250ZW50IHBhZ2UsIGxpa2Uge0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30gYW5kIGFub3RoZXIgY2FsbCB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLCBmb3IgZXhhbXBsZSB7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+DQo8aDM+U28gaG93IGRvIHlvdSB1c2UgaXQ/PC9oMz4NCjxwPkZpcnN0IGluY2x1ZGUgalF1ZXJ5IGFuZCBNb2R1bGUgdGFnIGluIHlvdXIgUGFnZSA8aGVhZD4gYXJlYSwgZm9yIGV4YW1wbGUgaW4gJnF1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJnF1b3Q7OjwvcD4NCgk8cHJlPg0KCXtjbXNfanF1ZXJ5fQ0KCXtBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIGluY2x1ZGVzIG5lZWRlZCBzY3JpcHRzIGZvciBBY2UgU3ludGF4aGlnaGxpZ2h0ZXIgdG8gd29yay48YnIgLz4NCkluIE1vZHVsZXMgQWRtaW4gaW50ZXJmYWNlIHlvdSBjYW4gc2VsZWN0IGRlZmF1bHQgc2V0dGluZ3MgZm9yIHlvdXIgJiMwMzk7aGVhZCYjMDM5OyBhY3Rpb24gb3IgdXNlIHBhcmFtZXRlciBtb2Rlcz0mIzAzOTtodG1sLGphdmFzY3JpcHQmIzAzOTsgYW5kIHRoZW1lcz0mIzAzOTt0ZXh0bWF0ZSYjMDM5OyB3aGljaCB3b3VsZCBvdmVycmlkZSBzZWxlY3RlZCBQcmVmZXJlbmNlcy48L3A+DQo8cD5Ob3cgd2hlbiB5b3UgaGF2ZSBuZWVkZWQgc2NyaXB0cyBpbmNsdWRlZCwgb25lIG1vcmUgTW9kdWxlIHRhZyBjYWxsIGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUgaW4geW91ciBDb250ZW50IEVkaXRvciBhcmVhKSB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgb2YgeW91ciBQYWdlIHNob3VsZCBiZSBoaWdobGlnaHRlZC48L3A+DQoJPHByZT4NCgl7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O3NvbWUtaWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIHRhZyBpbmNsdWRlcyBuZWVkZWQgU2NyaXB0IGFuZCBTdHlsZSB0aGF0IGlzIHVzZWQgdG8gSGlnaGxpZ2h0IHNlbGVjdGVkIGVsZW1lbnQgd2l0aCBzcGVjaWZpZWQgaWQuPGJyIC8+DQpBbGwgeW91IG5lZWQgdGhlbiBpcyB3cml0ZSB5b3VyIENvZGUgdGhhdCB5b3Ugd2FudCB0byBIaWdobGlnaHQgYW5kIHdyYXAgaXQgaW5zaWRlIGFuIGVsZW1lbiBsaWtlIDxkaXY+IHdpdGggc3BlY2lmaWVkIGlkLjwvcD48cHJlPjxjb2RlPgombHQ7cHJlIGlkPSJzb21lLWlkIiZndAombHQ7aHRtbCZndDsKJmx0O2hlYWQmZ3Q7CgkmbHQ7c3R5bGUgdHlwZT0idGV4dC9jc3MiJmd0OwoJLnRleHQtbGF5ZXIgewoJCWZvbnQtZmFtaWx5OiBNb25hY28sICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKCQlmb250LXNpemU6IDEycHg7CgkJY3Vyc29yOiB0ZXh0OwoJfQoJJmx0Oy9zdHlsZSZndDsKJmx0Oy9oZWFkJmd0OwombHQ7Ym9keSZndDsKCSZsdDtoMSBzdHlsZT0iY29sb3I6cmVkIiZndDtZRVMhJmx0Oy9oMSZndDsKJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7CiZsdDsvcHJlJmd0OwoJCTwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj48ZGl2IGlkPSJhYm91dF9jIj48ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgR29yYW4gSWxpYyA8YSBocmVmPSJtYWlsdG86dW5pcXUzZUBnbWFpbC5jb20iPjx1bmlxdTNlQGdtYWlsLmNvbT48L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0IiByZWw9ImV4dGVybmFsIj53d3cuaWNoLW1hY2gtZGFzLmF0PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCgk8aDM+VGVhbTwvaDM+DQoJPHVsPg0KCQk8bGk+R29yYW4gSWxpYyAodW5pcXUzKSBnLmlsaWNAaS1hcnRzLmV1IDxiciAvPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2xpPgkNCgkJPGxpPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCkgY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyAgPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4JCQ0KCQk8bGk+Sm9uYXRoYW4gU2NobWlkIChGb2FseSopIGhpQGpvbmF0aGFuc2NobWlkLmRlIDxiciAvPnd3dy5qb25hdGhhbnNjaG1pZC5kZTwvbGk+DQoJPC91bD4NCjwvZGl2PjwvZGl2PjwvZGl2PjxoMz5QYXJhbWV0ZXI8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZGllIFNwcmFjaGUgZmVzdCwgZGllIHZvbSBNb2R1bCBmJnV1bWw7ciBkaWUgQXVzZ2FiZSBhdWYgZGVyIFdlYnNlaXRlIHZlcndlbmRldCB3aXJkLiBEaWVzIHdpcmQgamVkb2NoIG5pY2h0IHZvbiBhbGxlbiBNb2R1bGVuIHVudGVyc3QmdXVtbDt0enQgYnp3LiBiZW4mb3VtbDt0aWd0LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWN0aW9uPSJkZWZhdWx0IiAtIHdpcmQgdmVyd2VuZGV0LCB1bSBkaWUgQWt0aW9uIGRlcyBNb2R1bCB0YWdzIHp1IGJlc3RpbW1lbi4gTSZvdW1sO2dsaWNoZSB3ZXJ0ZSBzaW5kICYjMDM5O2RlZmF1bHQmIzAzOTsgdW5kICYjMDM5O2hlYWQmIzAzOTsuIEYmdXVtbDtyIGRpZSBrb3JyZWt0ZSBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRpbmcgRnVua3Rpb24gc2luZCBiZWlkZSBha3Rpb25lbiBub3R3ZW5kaWdiZW4mb3VtbDt0aWd0LiA8YnIgLz5NJm91bWw7Z2xpY2hlIHdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmhlYWQ8L2xpPg0KCTxsaT5kZWZhdWx0PC9saT4NCjwvdWw+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBtb2Rlcz0iaHRtbCIgLSB3aXJkIG1pdCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4gdmVyd2VuZGV0LiBTaWUgayZvdW1sO25uZW4gbWVocmVyZSBkdXJjaCBLb21tYSBnZXRyZW5udGUgJiMwMzk7bW9kZXMmIzAzOTssIGRpZSBTaWUgYXVmIElocmVyIFdlYnNpdGUgdmVyd2VuZGVuIHdlcmRlbiwgYW5nZWJlbi4gRGllcyBzb2xsdGUgaW0gJmFtcDtndDtoZWFkJmFtcDtsdDsgYmVyZWljaCBkZXMgVGVtcGxhdGVzIG9kZXIgdW50ZXIgU2VpdGVuc3BlemlmaXNjaGUtTWV0YWRhdGVuIGVpbmdlZ2ViZW4gd2VyZGVuLiBEaWVzICZ1dW1sO2JlcnNjaHJlaWJ0IElocmUgRWluc3RlbGx1bmdlbiBkaWUgaW0gTW9kdWwgQWRtaW4tQmVyZWljaCBhdXNnZXcmYXVtbDtobHQgd3VyZGVuLiA8YnIgLz5NJm91bWw7Z2xpY2hlIHdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmphdmFzY3JpcHQ8L2xpPiANCgk8bGk+cGxhaW48L2xpPiANCgk8bGk+c3ZnPC9saT4gDQoJPGxpPmh0bWw8L2xpPg0KCTxsaT5jc3M8L2xpPg0KCTxsaT5zY3NzPC9saT4NCgk8bGk+Y29mZmVlPC9saT4NCgk8bGk+anNvbjwvbGk+DQoJPGxpPnB5dGhvbjwvbGk+DQoJPGxpPnJ1Ynk8L2xpPg0KCTxsaT5wZXJsPC9saT4NCgk8bGk+cGhwPC9saT4NCgk8bGk+amF2YTwvbGk+DQoJPGxpPmNzaGFycDwvbGk+DQoJPGxpPmNfY3BwPC9saT4NCgk8bGk+Y2xvanVyZTwvbGk+DQoJPGxpPm9jYW1sPC9saT4NCgk8bGk+dGV4dGlsZTwvbGk+DQoJPGxpPmdyb292eTwvbGk+DQoJPGxpPnNjYWxhPC9saT4NCjwvdWw+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB0aGVtZXM9InRleHRtYXRlIiAtIHdpcmQgbWl0IDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPiB2ZXJ3ZW5kZXQuIFNpZSBrJm91bWw7bm5lbiBtZWhyZXJlIGR1cmNoIEtvbW1hIGdldHJlbm50ZSAmIzAzOTt0aGVtZXMmIzAzOTsgKFRlbXBsYXRlcyksIGRpZSBTaWUgYXVmIElocmVyIFdlYnNpdGUgdmVyd2VuZGVuIHdlcmRlbiwgYW5nZWJlbi4gRGllcyBzb2xsdGUgaW0gJmFtcDtndDtoZWFkJmFtcDtsdDsgYmVyZWljaCBkZXMgVGVtcGxhdGVzIG9kZXIgdW50ZXIgU2VpdGVuc3BlemlmaXNjaGUtTWV0YWRhdGVuIGVpbmdlZ2ViZW4gd2VyZGVuLiBEaWVzICZ1dW1sO2JlcnNjaHJlaWJ0IElocmUgRWluc3RlbGx1bmdlbiBkaWUgaW0gTW9kdWwgQWRtaW4tQmVyZWljaCBhdXNnZXcmYXVtbDtobHQgd3VyZGVuLiA8YnIgLz5NJm91bWw7Z2xpY2hlIHdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmNsb3VkczwvbGk+IA0KCTxsaT5jbG91ZHNfbWlkbmlnaHQ8L2xpPiANCgk8bGk+Y29iYWx0PC9saT4gDQoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCgk8bGk+ZGF3bjwvbGk+DQoJPGxpPmVjbGlwc2U8L2xpPg0KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPg0KCTxsaT5rcl90aGVtZTwvbGk+DQoJPGxpPm1lcmJpdm9yZTwvbGk+DQoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCgk8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCgk8bGk+bW9ub2thaTwvbGk+DQoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KCTxsaT50ZXh0bWF0ZTwvbGk+DQoJPGxpPnR3aWxpZ2h0PC9saT4NCgk8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG1vZGU9Imh0bWwiIC0gd2lyZCBpbm5lcmhhbGIgZWluZXIgU2VpdGUgbWl0IDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uID0gJiMwMzk7ZGVmYXVsdCYjMDM5O308L2NvZGU+IE1vZHVsLVRhZyB2ZXJ3ZW5kZXQuIERhbWl0IHdpcmQgU3ludGF4SGlnaGxpZ2h0ZXIgTW9kdXMgZiZ1dW1sO3IgYWt0dWVsbGVuIENvZGUtQmVyZWljaCBmZXN0Z2VsZWd0LiA8YnIgLz4gTSZvdW1sO2dsaWNoZSBXZXJ0ZSBzaW5kOg0KPHVsPg0KCTxsaT5qYXZhc2NyaXB0PC9saT4gDQoJPGxpPnBsYWluPC9saT4gDQoJPGxpPnN2ZzwvbGk+IA0KCTxsaT5odG1sPC9saT4NCgk8bGk+Y3NzPC9saT4NCgk8bGk+c2NzczwvbGk+DQoJPGxpPmNvZmZlZTwvbGk+DQoJPGxpPmpzb248L2xpPg0KCTxsaT5weXRob248L2xpPg0KCTxsaT5ydWJ5PC9saT4NCgk8bGk+cGVybDwvbGk+DQoJPGxpPnBocDwvbGk+DQoJPGxpPmphdmE8L2xpPg0KCTxsaT5jc2hhcnA8L2xpPg0KCTxsaT5jX2NwcDwvbGk+DQoJPGxpPmNsb2p1cmU8L2xpPg0KCTxsaT5vY2FtbDwvbGk+DQoJPGxpPnRleHRpbGU8L2xpPg0KCTxsaT5ncm9vdnk8L2xpPg0KCTxsaT5zY2FsYTwvbGk+DQo8L3VsPjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdGhlbWU9InRleHRtYXRlIiAtIHdpcmQgaW5uZXJoYWxiIGVpbmVyIFNlaXRlIG1pdCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbiA9ICYjMDM5O2RlZmF1bHQmIzAzOTt9PC9jb2RlPiBNb2R1bC1UYWcgdmVyd2VuZGV0LiBEYW1pdCB3aXJkIFN5bnRheEhpZ2hsaWdodGVyIFRlbXBsYXRlIGYmdXVtbDtyIGFrdHVlbGxlbiBDb2RlLUJlcmVpY2ggZmVzdGdlbGVndC4gPGJyIC8+IE0mb3VtbDtnbGljaGUgV2VydGUgc2luZDoNCjx1bD4NCgk8bGk+Y2xvdWRzPC9saT4gDQoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IA0KCTxsaT5jb2JhbHQ8L2xpPiANCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KCTxsaT5kYXduPC9saT4NCgk8bGk+ZWNsaXBzZTwvbGk+DQoJPGxpPmlkbGVfZmluZ2VyczwvbGk+DQoJPGxpPmtyX3RoZW1lPC9saT4NCgk8bGk+bWVyYml2b3JlPC9saT4NCgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KCTxsaT5tb25va2FpPC9saT4NCgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQoJPGxpPnRleHRtYXRlPC9saT4NCgk8bGk+dHdpbGlnaHQ8L2xpPg0KCTxsaT52aWJyYW50X2luazwvbGk+DQo8L3VsPjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gd2lkdGg9IjQwMCIgLSBiZXN0aW1tdCBkaWUgQnJlaXRlIGRlcyBTeW50YXhoaWdobGlnaHRlciBCZXJlaWNocyBpbiBQaXhlbC48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGhlaWdodD0iNDAwIiAtIGJlc3RpbW10IGRpZSBIJm91bWw7aGUgZGVzIFN5bnRheGhpZ2hsaWdodGVyIEJlcmVpY2hzIGluIFBpeGVsLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZGl2aWQ9ImVkaXRvciIgLSBpZCBkZXMgRWxlbWVudHMgbWl0IElocmVtIENvZGUuIFZlcndlbmRlbiBTaWUgZWluZGV1dGlnZSBJRCBmJnV1bWw7ciBqZWRlbiBDb2RlIHNuaXBwZXQuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEdvcmFuIElsaWMgJmx0O3VuaXF1M2VAZ21haWwuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb24gOiAwLjIuNDxiciAvPjxiciAvPiZBdW1sO25kZXJ1bmdzdmVybGF1Zjo8YnIgLz48aDM+VmVyc2lvbiAwLjE8L2gzPg0KPHVsPg0KCTxsaT5JdCYjMDM5O3MgZnJlc2ghIE5vdGhpbmcgY2hhbmdlZCB5ZXQhPC9saT4NCgk8bGk+VXNpbmcgQWNlIFZlcnNpb24gMC4yLjA8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMjwvaDM+DQo8dWw+DQoJPGxpPkFkZGVkIENUUkwtUyBLZXliaW5kaW5nPC9saT4NCgk8bGk+QWRkZWQgRnVsbHNjcmVlbm1vZGU8L2xpPg0KCTxsaT5BZGRlZCBGcm9udGVuZCBIaWdobGlnaHRpbmc8L2xpPg0KCTxsaT5VcGRhdGVkIEFjZTwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjE8L2gzPg0KPHVsPg0KCTxsaT5BZGRlZCBJbnRlcm5ldCBFeHBsb3JlciBwcmVmZXJlbmNlPC9saT4NCgk8bGk+VXBkYXRlZCBBQ0Ugd2l0aCB0aGVtZXM8L2xpPg0KPC91bD4NCjxoMz5Sb2FkbWFwPC9oMz4NCjx1bD4NCgk8bGk+PGRlbD5BZGQgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nPC9kZWw+PC9saT4NCgk8bGk+PGRlbD5BZGQgRnVsbHNjcmVlbm1vZGU8L2RlbD48L2xpPg0KCTxsaT48ZGVsPkFkZCBLZXliaW5kaW5nIChDVFJMK1MpPC9kZWw+PC9saT4NCgk8bGk+QWRkIEVkaXRvciBiZWhhdmlvciAoVmltLCBFTWFjcyk8L2xpPg0KCTxsaT5NYXliZSBhZGQgVG9vbGJhcjwvbGk+DQo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[AceEditor ist ein Syntaxhighlighter Modul das <strong>Ace</strong>,  einen eigenst&auml;ndigen Code-Editor geschrieben mit JavaScript  verwendet.<br /><strong>Hinweis:</strong> Internet Explorer wird zurzeit nicht unterst&uuml;zt!]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/ace/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ace/ChangeLog.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MjAxMS4wOC4wMiwgVmVyc2lvbiAwLjIuMAoKKiBTcGxpdCB2aWV3IChKdWxpYW4gVmllcmVjaykKICAtIHNwbGl0IGVkaXRvciBhcmVhIGhvcml6b250YWxseSBvciB2ZXJ0aXZhbGx5IHRvIHNob3cgdHdvIGZpbGVzIGF0IHRoZSBzYW1lCiAgICB0aW1lCgoqIENvZGUgRm9sZGluZyAoSnVsaWFuIFZpZXJlY2spCiAgLSBVbnN0cnVjdHVyZWQgY29kZSBmb2xkaW5nCiAgLSBXaWxsIGJlIHRoZSBiYXNpcyBmb3IgbGFuZ3VhZ2UgYXdhcmUgZm9sZGluZwoKKiBNb2RlIGJlaGF2aW91cnMgKENocmlzIFNwZW5jZXIpCiAgLSBBZGRzIG1vZGUgc3BlY2lmaWMgaG9va3Mgd2hpY2ggYWxsb3cgdHJhbnNmb3JtYXRpb25zIG9mIGVudGVyZWQgdGV4dAogIC0gQXV0b2Nsb3Npbmcgb2YgYnJhY2VzLCBwYXJhbnRoZXNpcyBhbmQgcXVvdGF0aW9uIG1hcmtzIGluIEMgc3R5bGUgbW9kZXMKICAtIEF1dG9jbG9zaW5nIG9mIGFuZ3VsYXIgYnJhY2tldHMgaW4gWE1MIHN0eWxlIG1vZGVzCgoqIE5ldyBsYW5ndWFnZSBtb2RlcwogIC0gQ2xvanVyZSAoQ2FyaW4gTWVpZXIpCiAgLSBDIyAoUm9iIENvbmVyeSkKICAtIEdyb292eSAoQmVuIFRpbGZvcmQpCiAgLSBTY2FsYSAoQmVuIFRpbGZvcmQpCiAgLSBKU09OCiAgLSBPQ2FtbCAoU2VyZ2kgTWFuc2lsbGEpCiAgLSBQZXJsIChQYW5hZ2lvdGlzIEFzdGl0aGFzKQogIC0gU0NTUy9TQVNTIChBbmRyZWFzIE1hZHNlbikKICAtIFNWRwogIC0gVGV4dGlsZSAoS2VsbGV5IHZhbiBFdmVydCkKICAtIFNDQUQgKEphY29iIEhhbnNzb24pCiAgCiogTGl2ZSBzeW50YXggY2hlY2tzCiAgLSBMaW50IGZvciBDc3MgdXNpbmcgQ1NTIExpbnQgPGh0dHA6Ly9jc3NsaW50Lm5ldC8+CiAgLSBDb2ZmZWVTY3JpcHQKCiogTmV3IFRoZW1lcwogIC0gQ3JpbXNvbiBFZGl0b3IgKGllYnVnZ3kpCiAgLSBNZXJiaXZvcmUgKE1pY2hhZWwgU2Nod2FydHopCiAgLSBNZXJiaXZvcmUgc29mdCAoTWljaGFlbCBTY2h3YXJ0eikKICAtIFNvbGFyaXplZCBkYXJrL2xpZ2h0IDxodHRwOi8vZXRoYW5zY2hvb25vdmVyLmNvbS9zb2xhcml6ZWQ+IChEYXZpZCBBbGFuCiAgICBIamVsbGUpCiAgLSBWaWJyYW50IEluayAoTWljaGFlbCBTY2h3YXJ0eikKCiogU21hbGwgRmVhdHVyZXMvRW5oYW5jZW1lbnRzCiAgLSBMb3RzIG9mIHJlbmRlciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIChIYXJ1dHl1biBBbWlyamFueWFuKQogIC0gSW1wcm92ZWQgUnVieSBoaWdobGlnaHRpbmcgKENocmlzIFdhbnN0cmF0aCwgVHJlbnQgT2dyZW4pCiAgLSBJbXByb3ZlZCBQSFAgaGlnaGxpZ2h0aW5nIChUaG9tYXMgSHJ1c2thKQogIC0gSW1wcm92ZWQgQ1NTIGhpZ2hsaWdodGluZyAoU2VhbiBLZWxsb2dnKQogIC0gQ2xpY2tzIHdoaWNoIGNhdXNlIHRoZSBlZGl0b3IgdG8gYmUgZm9jdXNlZCBkb24ndCByZXNldCB0aGUgc2VsZWN0aW9uCiAgLSBNYWtlIHBhZGRpbmcgdGV4dCBsYXllciBzcGVjaWZpYyBzbyB0aGF0IHByaW50IG1hcmdpbiBhbmQgYWN0aXZlIGxpbmUKICAgIGhpZ2hsaWdodCBhcmUgbm90IGFmZmVjdGVkIChJcmFrbGkgR296YWxpc2h2aWxpKQogIC0gQWRkZWQgc2V0Rm9udFNpemUgbWV0aG9kCiAgLSBJbXByb3ZlZCB2aSBrZXliaW5kaW5ncyAoVHJlbnQgT2dyZW4pCiAgLSBXaGVuIHVuZm9jdXNlZCBtYWtlIGN1cnNvciB0cmFuc3BhcmVudCBpbnN0ZWFkIG9mIHJlbW92aW5nIGl0IChIYXJ1dHl1bgogICAgQW1pcmphbnlhbikKICAtIFN1cHBvcnQgZm9yIG1hdGNoaW5nIGdyb3VwcyBpbiB0b2tlbml6ZXIgd2l0aCBhcnJheXMgb2YgdG9rZW5zIChDaHJpcwogICAgU3BlbmNlcikKCiogQnVnIGZpeGVzCiAgLSBBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBPU1ggc2Nyb2xsIGJhcnMKICAtIFByb3Blcmx5IGhpZ2hsaWdodCBKYXZhU2NyaXB0IHJlZ2V4cCBsaXRlcmFscwogIC0gUHJvcGVyIGhhbmRsaW5nIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpbiBKYXZhU2NyaXB0IGlkZW50aWZpZXJzCiAgLSBGaXggcmVtb3ZlIGxpbmVzIGNvbW1hbmQgb24gbGFzdCBsaW5lIChIYXJ1dHl1biBBbWlyamFueWFuKQogIC0gRml4IHNjcm9sbCB3aGVlbCBzbHVnZ2lzaG5lc3MgaW4gU2FmYXJpCiAgLSBNYWtlIGtleWJvYXJkIGluZnJhc3RydWN0dXJlIHJvdXRlIGtleXMgbGlrZSBbXV4kIHRoZSByaWdodCB3YXkgKEp1bGlhbgogICAgVmllcmVjaykKCjIwMTEuMDIuMTQsIFZlcnNpb24gMC4xLjYKCiogRmxvYXRpbmcgQW5jaG9ycwogIC0gQW4gQW5jaG9yIGlzIGEgZmxvYXRpbmcgcG9pbnRlciBpbiB0aGUgZG9jdW1lbnQuIAogIC0gV2hlbmV2ZXIgdGV4dCBpcyBpbnNlcnRlZCBvciBkZWxldGVkIGJlZm9yZSB0aGUgY3Vyc29yLCB0aGUgcG9zaXRpb24gb2YKICAgIHRoZSBjdXJzb3IgaXMgdXBkYXRlZAogIC0gVXNlc2QgZm9yIHRoZSBjdXJzb3IgYW5kIHNlbGVjdGlvbgogIC0gQmFzaXMgZm9yIGJvb2ttYXJrcywgbXVsdGlwbGUgY3Vyc29ycyBhbmQgc25pcHBldHMgaW4gdGhlIGZ1dHVyZQoqIEV4dGVuc2l2ZSBzdXBwb3J0IGZvciBDb2NvYSBzdHlsZSBrZXliaW5kaW5ncyBvbiB0aGUgTWFjIDxodHRwczovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2UvaXNzdWVzL2Nsb3NlZCNpc3N1ZS8xMTYvY29tbWVudC83Njc4MDM+CiogTmV3IGNvbW1hbmRzOgogIC0gY2VudGVyIHNlbGVjdGlvbiBpbiB2aWV3cG9ydAogIC0gcmVtb3ZlIHRvIGVuZC9zdGFydCBvZiBsaW5lCiAgLSBzcGxpdCBsaW5lCiAgLSB0cmFuc3Bvc2UgbGV0dGVycwoqIFJlZmF0b3IgbWFya2VycyAgCiAgLSBDdXN0b20gY29kZSBjYW4gYmUgdXNlZCB0byByZW5kZXIgbWFya2VycwogIC0gTWFya2VycyBjYW4gYmUgaW4gZnJvbnQgb3IgYmVoaW5kIHRoZSB0ZXh0CiAgLSBNYXJrZXJzIGFyZSBub3cgc3RvcmVkIGluIHRoZSBzZXNzaW9uICh3YXMgaW4gdGhlIHJlbmRlcmVyKQoqIExvdHMgb2YgSUU4IGZpeGVzIGluY2x1ZGluZyBjb3B5LCBjdXQgYW5kIHNlbGVjdGlvbnMKKiBVbml0IHRlc3RzIGNhbiBhbHNvIGJlIHJ1biBpbiB0aGUgYnJvd3NlcgogIDxodHRwczovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2UvYmxvYi9tYXN0ZXIvbGliL2FjZS90ZXN0L3Rlc3RzLmh0bWw+CiogU29mdCB3cmFwIGNhbiBhZGFwdCB0byB0aGUgd2lkdGggb2YgdGhlIGVkaXRvciAoTWlrZSBSYXRjbGlmZmUsIEpvZSBDaGVuZykKKiBBZGQgbWluaW1hbCBub2RlIHNlcnZlciBzZXJ2ZXIuanMgdG8gcnVuIHRoZSBBY2UgZGVtbyBpbiBDaHJvbWUKKiBUaGUgdG9wIGxldmVsIGVkaXRvci5odG1sIGRlbW8gaGFzIGJlZW4gcmVuYW1lZCB0byBpbmRleC5odG1sCiogQnVnIGZpeGVzCiAgLSBGaXhlZCBnb3RvTGluZSB0byBjb25zaWRlciB3cmFwcGVkIGxpbmVzIHdoZW4gY2FsY3VsYXRpbmcgd2hlcmUgdG8gc2Nyb2xsIHRvIChKYW1lcyBBbGxlbikKICAtIEZpeGVkIGlzdWVzIHdoZW4gdGhlIGVkaXRvciB3YXMgc2Nyb2xsZWQgaW4gdGhlIHdlYiBwYWdlIChFcmljIEFsbGFtKQogIC0gSGlnaGxpZ2h0aW5nIG9mIFB5dGhvbiBzdHJpbmcgbGl0ZXJhbHMKICAtIFN5bnRheCBydWxlIGZvciBQSFAgY29tbWVudHMKCjIwMTEuMDIuMDgsIFZlcnNpb24gMC4xLjUKCiogQWRkIENvZmZlZXNjcmlwdCBNb2RlIChTYXRvc2hpIE11cmFrYW1pKQoqIEZpeCB3b3JkIHdyYXAgYnVnIChKdWxpYW4gVmllcmVjaykKKiBGaXggcGFja2FnZWQgdmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBtb2RlCiogTG9hZGluZyBvZiB3b3JrZXJzIGlzIG1vcmUgcm9idXN0CiogRml4ICJjbGljayBzZWxlY3Rpb24iCiogQWxsb3cgdG9raXppbmcgZW1wdHkgbGluZXMgKERhbmllbCBLcmVjaCkKKiBNYWtlIFBhZ2VVcC9Eb3duIGJlaGF2aW9yIG1vcmUgY29uc2lzdGVudCB3aXRoIG5hdGl2ZSBPUyAoSm9lIENoZW5nKQoKMjAxMS4wMi4wNCwgVmVyc2lvbiAwLjEuNAoKKiBBZGQgQy9DKysgbW9kZSBjb250cmlidXRlZCBieSBHYXN0w7NuIEtsZWltYW4KKiBGaXggZXhjZXB0aW9uIGluIGtleSBpbnB1dAoKMjAxMS4wMi4wNCwgVmVyc2lvbiAwLjEuMwoKKiBMZXQgdGhlIHBhY2thZ2VkIHZlcnNpb24gcGxheSBuaWNlIHdpdGggcmVxdWlyZUpTCiogQWRkIFJ1YnkgbW9kZSBjb250cmlidXRlZCBieSBTaGxvbW8gWmFsbWFuIEhlaWdoCiogQWRkIEphdmEgbW9kZSBjb250cmlidXRlZCBieSBUb20gVGFzY2hlCiogRml4IGFubm90YXRpb24gYnVnCiogQ2hhbmdpbmcgYSBkb2N1bWVudCBhZGRlZCBhIG5ldyBlbXB0eSBsaW5lIGF0IHRoZSBlbmQ=]]></data>
	</file>
	<file>
	  <filename>/ace/Readme.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QWNlIChBamF4Lm9yZyBDbG91ZDkgRWRpdG9yKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpBY2UgaXMgYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC4gT3VyIGdvYWwgaXMgdG8gY3JlYXRlIGEgYnJvd3NlciBiYXNlZCBlZGl0b3IgdGhhdCBtYXRjaGVzIGFuZCBleHRlbmRzIHRoZSBmZWF0dXJlcywgdXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiBleGlzdGluZyBuYXRpdmUgZWRpdG9ycyBzdWNoIGFzIFRleHRNYXRlLCBWaW0gb3IgRWNsaXBzZS4gSXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbiBhbnkgd2ViIHBhZ2Ugb3IgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbi4gQWNlIGlzIGRldmVsb3BlZCBhcyB0aGUgcHJpbWFyeSBlZGl0b3IgZm9yIFtDbG91ZDkgSURFXShodHRwOi8vd3d3LmNsb3VkOWlkZS5jb20vKSBhbmQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUgTW96aWxsYSBTa3l3cml0ZXIgKEJlc3BpbikgUHJvamVjdC4KCkZlYXR1cmVzCi0tLS0tLS0tCgoqIFN5bnRheCBoaWdobGlnaHRpbmcKKiBBdXRvbWF0aWMgaW5kZW50IGFuZCBvdXRkZW50CiogQW4gb3B0aW9uYWwgY29tbWFuZCBsaW5lCiogSGFuZGxlcyBodWdlIGRvY3VtZW50cyAoMTAwLDAwMCBsaW5lcyBhbmQgbW9yZSBhcmUgbm8gcHJvYmxlbSkKKiBGdWxseSBjdXN0b21pemFibGUga2V5IGJpbmRpbmdzIGluY2x1ZGluZyBWSSBhbmQgRW1hY3MgbW9kZXMKKiBUaGVtZXMgKFRleHRNYXRlIHRoZW1lcyBjYW4gYmUgaW1wb3J0ZWQpCiogU2VhcmNoIGFuZCByZXBsYWNlIHdpdGggcmVndWxhciBleHByZXNzaW9ucwoqIEhpZ2hsaWdodCBtYXRjaGluZyBwYXJlbnRoZXNlcwoqIFRvZ2dsZSBiZXR3ZWVuIHNvZnQgdGFicyBhbmQgcmVhbCB0YWJzCiogRGlzcGxheXMgaGlkZGVuIGNoYXJhY3RlcnMKKiBEcmFnIGFuZCBkcm9wIHRleHQgdXNpbmcgdGhlIG1vdXNlCiogTGluZSB3cmFwcGluZwoqIFVuc3RydWN0dXJlZCAvIHVzZXIgY29kZSBmb2xkaW5nCiogTGl2ZSBzeW50YXggY2hlY2tlciAoY3VycmVudGx5IEphdmFTY3JpcHQvQ29mZmVlU2NyaXB0KQoKVGFrZSBBY2UgZm9yIGEgc3BpbiEKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoZWNrIG91dCB0aGUgQWNlIGxpdmUgW2RlbW9dKGh0dHA6Ly9hamF4b3JnLmdpdGh1Yi5jb20vYWNlLykgb3IgZ2V0IGEgW0Nsb3VkOSBJREUgYWNjb3VudF0oaHR0cDovL3J1bi5jbG91ZDlpZGUuY29tKSB0byBleHBlcmllbmNlIEFjZSB3aGlsZSBlZGl0aW5nIG9uZSBvZiB5b3VyIG93biBHaXRIdWIgcHJvamVjdHMuCgpJZiB5b3Ugd2FudCwgeW91IGNhbiB1c2UgQWNlIGFzIGEgdGV4dGFyZWEgcmVwbGFjZW1lbnQgdGhhbmtzIHRvIHRoZSBbQWNlIEJvb2ttYXJrbGV0XShodHRwOi8vYWpheG9yZy5naXRodWIuY29tL2FjZS9idWlsZC90ZXh0YXJlYS9lZGl0b3IuaHRtbCkuCgpIaXN0b3J5Ci0tLS0tLS0KClByZXZpb3VzbHkga25vd24gYXMg4oCcQmVzcGlu4oCdIGFuZCDigJxTa3l3cml0ZXLigJ0gaXTigJlzIG5vdyBrbm93biBhcyBBY2UgKEFqYXgub3JnIENsb3VkOSBFZGl0b3IpISBCZXNwaW4gYW5kIEFjZSBzdGFydGVkIGFzIHR3byBpbmRlcGVuZGVudCBwcm9qZWN0cywgYm90aCBhaW1pbmcgdG8gYnVpbGQgYSBuby1jb21wcm9taXNlIGNvZGUgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhlIHdlYi4gQmVzcGluIHN0YXJ0ZWQgYXMgcGFydCBvZiBNb3ppbGxhIExhYnMgYW5kIHdhcyBiYXNlZCBvbiB0aGUgY2FudmFzIHRhZywgd2hpbGUgQWNlIGlzIHRoZSBFZGl0b3IgY29tcG9uZW50IG9mIHRoZSBDbG91ZDkgSURFIGFuZCBpcyB1c2luZyB0aGUgRE9NIGZvciByZW5kZXJpbmcuIEFmdGVyIHRoZSByZWxlYXNlIG9mIEFjZSBhdCBKU0NvbmYuZXUgMjAxMCBpbiBCZXJsaW4gdGhlIFNreXdyaXRlciB0ZWFtIGRlY2lkZWQgdG8gbWVyZ2UgQWNlIHdpdGggYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgU2t5d3JpdGVyJ3MgcGx1Z2luIHN5c3RlbSBhbmQgc29tZSBvZiBTa3l3cml0ZXIncyBleHRlbnNpYmlsaXR5IHBvaW50cy4gQWxsIHRoZXNlIGNoYW5nZXMgaGF2ZSBiZWVuIG1lcmdlZCBiYWNrIHRvIEFjZS4gQm90aCBBamF4Lm9yZyBhbmQgTW96aWxsYSBhcmUgYWN0aXZlbHkgZGV2ZWxvcGluZyBhbmQgbWFpbnRhaW5pbmcgQWNlLgoKR2V0dGluZyB0aGUgY29kZQotLS0tLS0tLS0tLS0tLS0tCgpBY2UgaXMgYSBjb21tdW5pdHkgcHJvamVjdC4gV2UgYWN0aXZlbHkgZW5jb3VyYWdlIGFuZCBzdXBwb3J0IGNvbnRyaWJ1dGlvbnMuIFRoZSBBY2Ugc291cmNlIGNvZGUgaXMgaG9zdGVkIG9uIEdpdEh1Yi4gSXQgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1vemlsbGEgdHJpLWxpY2Vuc2UgKE1QTC9HUEwvTEdQTCksIHRoZSBzYW1lIGxpY2Vuc2UgdXNlZCBieSBGaXJlZm94LiBUaGlzIGxpY2Vuc2UgaXMgZnJpZW5kbHkgdG8gYWxsIGtpbmRzIG9mIHByb2plY3RzLCB3aGV0aGVyIG9wZW4gc291cmNlIG9yIG5vdC4gVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhCgpgYGBiYXNoCiAgICBnaXQgY2xvbmUgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS5naXQKICAgIGNkIGFjZQogICAgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlCmBgYAoKRW1iZWRkaW5nIEFjZQotLS0tLS0tLS0tLS0tCgpBY2UgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIGFueSBleGlzdGluZyB3ZWIgcGFnZS4gVGhlIEFjZSBnaXQgcmVwb3NpdG9yeSBzaGlwcyB3aXRoIGEgcHJlLXBhY2thZ2VkIHZlcnNpb24gb2YgQWNlIGluc2lkZSBvZiB0aGUgYGJ1aWxkYCBkaXJlY3RvcnkuIFRoZSBzYW1lIHBhY2thZ2VkIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZSBhcyBhIHNlcGFyYXRlIFtkb3dubG9hZF0oaHR0cHM6Ly9naXRodWIuY29tL2FqYXhvcmcvYWNlL2Rvd25sb2FkcykuIFNpbXBseSBjb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgYHNyY2Agc3ViZGlyZWN0b3J5IHNvbWV3aGVyZSBpbnRvIHlvdXIgcHJvamVjdCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGluY2x1ZGVkIGRlbW9zIG9mIGhvdyB0byB1c2UgQWNlLgoKVGhlIGVhc2llc3QgdmVyc2lvbiBpcyBzaW1wbHk6CgpgYGBodG1sCiAgICA8ZGl2IGlkPSJlZGl0b3IiPnNvbWUgdGV4dDwvZGl2PgogICAgPHNjcmlwdCBzcmM9InNyYy9hY2UuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgPHNjcmlwdD4KICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZWRpdG9yID0gYWNlLmVkaXQoImVkaXRvciIpOwogICAgfTsKICAgIDwvc2NyaXB0PgpgYGAKCldpdGggImVkaXRvciIgYmVpbmcgdGhlIGlkIG9mIHRoZSBET00gZWxlbWVudCwgd2hpY2ggc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBlZGl0b3IuIE5vdGUgdGhhdCB0aGlzIGVsZW1lbnQgbXVzdCBiZSBleHBsaWNpdGx5IHNpemVkIGFuZCBwb3NpdGlvbmVkIGBhYnNvbHV0ZWAgb3IgYHJlbGF0aXZlYCBmb3IgQWNlIHRvIHdvcmsuIGUuZy4KCmBgYGNzcwogICAgI2VkaXRvciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiA1MDBweDsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgfQpgYGAKClRvIGNoYW5nZSB0aGUgdGhlbWUgc2ltcGx5IGluY2x1ZGUgdGhlIFRoZW1lJ3MgSmF2YVNjcmlwdCBmaWxlCgpgYGBodG1sCiAgICA8c2NyaXB0IHNyYz0ic3JjL3RoZW1lLXR3aWxpZ2h0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KYGBgCgphbmQgY29uZmlndXJlIHRoZSBlZGl0b3IgdG8gdXNlIHRoZSB0aGVtZToKCmBgYGphdmFzY3JpcHQKICAgIGVkaXRvci5zZXRUaGVtZSgiYWNlL3RoZW1lL3R3aWxpZ2h0Iik7CmBgYAoKQnkgZGVmYXVsdCB0aGUgZWRpdG9yIG9ubHkgc3VwcG9ydHMgcGxhaW4gdGV4dCBtb2RlOyBtYW55IG90aGVyIGxhbmd1YWdlcyBhcmUgYXZhaWxhYmxlIGFzIHNlcGFyYXRlIG1vZHVsZXMuIEFmdGVyIGluY2x1ZGluZyB0aGUgbW9kZSdzIEphdmFTY3JpcHQgZmlsZToKCmBgYGh0bWwKICAgIDxzY3JpcHQgc3JjPSJzcmMvbW9kZS1qYXZhc2NyaXB0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KYGBgCgpUaGVuIHRoZSBtb2RlIGNhbiBiZSB1c2VkIGxpa2UgdGhpczoKCmBgYGphdmFzY3JpcHQKICAgIHZhciBKYXZhU2NyaXB0TW9kZSA9IHJlcXVpcmUoImFjZS9tb2RlL2phdmFzY3JpcHQiKS5Nb2RlOwogICAgZWRpdG9yLmdldFNlc3Npb24oKS5zZXRNb2RlKG5ldyBKYXZhU2NyaXB0TW9kZSgpKTsKYGBgCgpEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0KCllvdSBmaW5kIGEgbG90IG1vcmUgc2FtcGxlIGNvZGUgaW4gdGhlIFtkZW1vIGFwcF0oaHR0cHM6Ly9naXRodWIuY29tL2FqYXhvcmcvYWNlL2Jsb2IvbWFzdGVyL2RlbW8vZGVtby5qcykuCgpUaGVyZSBpcyBhbHNvIHNvbWUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgW3dpa2kgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL2FqYXhvcmcvYWNlL3dpa2kpLgoKSWYgeW91IHN0aWxsIG5lZWQgaGVscCwgZmVlbCBmcmVlIHRvIGRyb3AgYSBtYWlsIG9uIHRoZSBbYWNlIG1haWxpbmcgbGlzdF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2FjZS1kaXNjdXNzKS4KClJ1bm5pbmcgQWNlCi0tLS0tLS0tLS0tCgpBZnRlciB0aGUgY2hlY2tvdXQgQWNlIHdvcmtzIG91dCBvZiB0aGUgYm94LiBObyBidWlsZCBzdGVwIGlzIHJlcXVpcmVkLiBPcGVuICdlZGl0b3IuaHRtbCcgaW4gYW55IGJyb3dzZXIgZXhjZXB0IEdvb2dsZSBDaHJvbWUuIEdvb2dsZSBDaHJvbWUgZG9lc24ndCBhbGxvdyBYTUxIVFRQUmVxdWVzdHMgZnJvbSBmaWxlcyBsb2FkZWQgZnJvbSBkaXNjIChpLmUuIHdpdGggYSBmaWxlOi8vLyBVUkwpLiBUbyBvcGVuIEFjZSBpbiBDaHJvbWUgc2ltcGx5IHN0YXJ0IHRoZSBidW5kbGVkIG1pbmkgSFRUUCBzZXJ2ZXI6CgpgYGBiYXNoCiAgICAuL3N0YXRpYy5weQpgYGAKCk9yIHVzaW5nIE5vZGUuSlMKCmBgYGJhc2gKICAgIG5wbSBpbnN0YWxsIG1pbWUKICAgIC4vc3RhdGljLmpzCmBgYAoKVGhlIGVkaXRvciBjYW4gdGhlbiBiZSBvcGVuZWQgYXQgaHR0cDovL2xvY2FsaG9zdDo4ODg4L2luZGV4Lmh0bWwuCgpQYWNrYWdlIEFjZQotLS0tLS0tLS0tLQoKVG8gcGFja2FnZSBBY2Ugd2UgdXNlIHRoZSBkcnlpY2UgYnVpbGQgdG9vbCBkZXZlbG9wZWQgYnkgdGhlIE1vemlsbGEgU2t5d3JpdGVyIHRlYW0uIEJlZm9yZSB5b3UgY2FuIGJ1aWxkIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzdWJtb2R1bGVzIGFyZSB1cCB0byBkYXRlLgoKYGBgYmFzaAogICAgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlCmBgYAoKTWFrZSBzdXJlIHlvdSBhdCBsZWFzdCB2ZXJzaW9uIDAuMy4wIG9mIGRyeWljZQoKYGBgYmFzaAogICAgbnBtIGluc3RhbGwgZHJ5aWNlCmBgYAoKQWZ0ZXJ3YXJkcyBBY2UgY2FuIGJlIGJ1aWx0IGJ5IGNhbGxpbmcKCmBgYGJhc2gKICAgIC4vTWFrZWZpbGUuZHJ5aWNlLmpzIG5vcm1hbApgYGAKClRoZSBwYWNrYWdlZCBBY2Ugd2lsbCBiZSBwdXQgaW4gdGhlICdidWlsZCcgZm9sZGVyLgoKVG8gYnVpbGQgdGhlIGJvb2ttYXJrbGV0IHZlcnNpb24gZXhlY3V0ZQoKYGBgYmFzaAogICAgLi9NYWtlZmlsZS5kcnlpY2UuanMgYm0KYGBgCgpSdW5uaW5nIHRoZSBVbml0IFRlc3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBBY2UgdW5pdCB0ZXN0cyBydW4gb24gbm9kZS5qcy4gQmVmb3JlIHRoZSBmaXJzdCBydW4gYSBjb3VwbGUgb2Ygbm9kZSBtb2R1bGVzIGhhdmUgdG8gYmUgaW5zdGFsbGVkLiBUaGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhpcyBpcyBieSB1c2luZyB0aGUgbm9kZSBwYWNrYWdlIG1hbmFnZXIgKG5wbSkuIEluIHRoZSBBY2UgYmFzZSBkaXJlY3Rvcnkgc2ltcGx5IGNhbGwKCmBgYGJhc2gKICAgIG5wbSBsaW5rIC4KYGBgCgpUbyBydW4gdGhlIHRlc3RzIGNhbGw6CgpgYGBiYXNoCiAgICBub2RlIGxpYi9hY2UvdGVzdC9hbGwuanMKYGBgCgpZb3UgY2FuIGFsc28gcnVuIHRoZSB0ZXN0cyBpbiB5b3VyIGJyb3dzZXIgYnkgc2VydmluZzoKCiAgICBodHRwOi8vbG9jYWxob3N0Ojg4ODgvbGliL2FjZS90ZXN0L3Rlc3RzLmh0bWwKClRoaXMgbWFrZXMgZGVidWdnaW5nIGZhaWxpbmcgdGVzdHMgd2F5IG1vcmUgZWFzaWVyLgoKQ29udGludW91cyBJbnRlZ3JhdGlvbiBzdGF0dXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgcHJvamVjdCBpcyB0ZXN0ZWQgd2l0aCBbVHJhdmlzIENJXShodHRwOi8vdHJhdmlzLWNpLm9yZykKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3NlY3VyZS50cmF2aXMtY2kub3JnL2FqYXhvcmcvYWNlLnBuZyldKGh0dHA6Ly90cmF2aXMtY2kub3JnL2FqYXhvcmcvYWNlKQoKQ29udHJpYnV0aW5nCi0tLS0tLS0tLS0tLQoKQWNlIHdvdWxkbid0IGJlIHdoYXQgaXQgaXMgd2l0aG91dCBjb250cmlidXRpb25zISBGZWVsIGZyZWUgdG8gZm9yayBhbmQgaW1wcm92ZS9lbmhhbmNlIEFjZSBhbnkgd2F5IHlvdSB3YW50LiBJZiB5b3UgZmVlbCB0aGF0IHRoZSBlZGl0b3Igb3IgdGhlIEFjZSBjb21tdW5pdHkgd2lsbCBiZW5lZml0IGZyb20geW91ciBjaGFuZ2VzLCBwbGVhc2Ugb3BlbiBhIHB1bGwgcmVxdWVzdC4gVG8gcHJvdGVjdCB0aGUgaW50ZXJlc3RzIG9mIHRoZSBBY2UgY29udHJpYnV0b3JzIGFuZCB1c2VycyB3ZSByZXF1aXJlIGNvbnRyaWJ1dG9ycyB0byBzaWduIGEgQ29udHJpYnV0b3JzIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpIGJlZm9yZSB3ZSBwdWxsIHRoZSBjaGFuZ2VzIGludG8gdGhlIG1haW4gcmVwb3NpdG9yeS4gT3VyIENMQSBpcyB0aGUgc2ltcGxlc3Qgb2YgYWdyZWVtZW50cywgcmVxdWlyaW5nIHRoYXQgdGhlIGNvbnRyaWJ1dGlvbnMgeW91IG1ha2UgdG8gYW4gYWpheC5vcmcgcHJvamVjdCBhcmUgb25seSB0aG9zZSB5b3UncmUgYWxsb3dlZCB0byBtYWtlLiBUaGlzIGhlbHBzIHVzIHNpZ25pZmljYW50bHkgcmVkdWNlIGZ1dHVyZSBsZWdhbCByaXNrIGZvciBldmVyeW9uZSBpbnZvbHZlZC4gSXQgaXMgZWFzeSwgaGVscHMgZXZlcnlvbmUsIHRha2VzIHRlbiBtaW51dGVzLCBhbmQgb25seSBuZWVkcyB0byBiZSBjb21wbGV0ZWQgb25jZS4gIFRoZXJlIGFyZSB0d28gdmVyc2lvbnMgb2YgdGhlIGFncmVlbWVudDoKCjEuIFtUaGUgSW5kaXZpZHVhbCBDTEFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS9yYXcvbWFzdGVyL2RvYy9Db250cmlidXRvcl9MaWNlbnNlX0FncmVlbWVudC12Mi5wZGYpOiB1c2UgdGhpcyB2ZXJzaW9uIGlmIHlvdSdyZSB3b3JraW5nIG9uIGFuIGFqYXgub3JnIGluIHlvdXIgc3BhcmUgdGltZSwgb3IgY2FuIGNsZWFybHkgY2xhaW0gb3duZXJzaGlwIG9mIGNvcHlyaWdodCBpbiB3aGF0IHlvdSdsbCBiZSBzdWJtaXR0aW5nLgoyLiBbVGhlIENvcnBvcmF0ZSBDTEFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS9yYXcvbWFzdGVyL2RvYy9Db3Jwb3JhdGVfQ29udHJpYnV0b3JfTGljZW5zZV9BZ3JlZW1lbnQtdjIucGRmKTogaGF2ZSB5b3VyIGNvcnBvcmF0ZSBsYXd5ZXIgcmV2aWV3IGFuZCBzdWJtaXQgdGhpcyBpZiB5b3VyIGNvbXBhbnkgaXMgZ29pbmcgdG8gYmUgY29udHJpYnV0aW5nIHRvIGFqYXgub3JnICBwcm9qZWN0cwoKSWYgeW91IHdhbnQgdG8gY29udHJpYnV0ZSB0byBhbiBhamF4Lm9yZyBwcm9qZWN0IHBsZWFzZSBwcmludCB0aGUgQ0xBIGFuZCBmaWxsIGl0IG91dCBhbmQgc2lnbiBpdC4gVGhlbiBlaXRoZXIgc2VuZCBpdCBieSBzbmFpbCBtYWlsIG9yIGZheCB0byB1cyBvciBzZW5kIGl0IGJhY2sgc2Nhbm5lZCAob3IgYXMgYSBwaG90bykgYnkgZW1haWwuCgpFbWFpbDogZmFiaWFuLmpha29ic0B3ZWIuZGUKCkZheDogKzMxICgwKSAyMDYzODg5NTMKCkFkZHJlc3M6IEFqYXgub3JnIEIuVi4KICBLZWl6ZXJzZ3JhY2h0IDI0MQogIDEwMTYgRUEsIEFtc3RlcmRhbQogIHRoZSBOZXRoZXJsYW5kcw==]]></data>
	</file>
	<file>
	  <filename>/ace/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ace/src/ace.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhhKXtpZih0eXBlb2YgcmVxdWlyZWpzIT0idW5kZWZpbmVkIil7dmFyIGU9Yi5kZWZpbmU7Yi5kZWZpbmU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0eXBlb2YgYyE9ImZ1bmN0aW9uIj9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKGEsYixmdW5jdGlvbihhLGQsZSl7cmV0dXJuIGJbMl09PSJtb2R1bGUiJiYoZS5wYWNrYWdlZD0hMCksYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0sYi5kZWZpbmUucGFja2FnZWQ9ITA7cmV0dXJufXZhciBmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGQoIiIsYSxiKX07Zi5wYWNrYWdlZD0hMDt2YXIgZz1iO2EmJihiW2FdfHwoYlthXT17fSksZz1iW2FdKSxnLmRlZmluZSYmKGMub3JpZ2luYWw9Zy5kZWZpbmUpLGcuZGVmaW5lPWMsZy5yZXF1aXJlJiYoZC5vcmlnaW5hbD1nLnJlcXVpcmUpLGcucmVxdWlyZT1mfXZhciBhPSIiLGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSxjPWZ1bmN0aW9uKGEsYixkKXtpZih0eXBlb2YgYSE9InN0cmluZyIpe2Mub3JpZ2luYWw/Yy5vcmlnaW5hbC5hcHBseSh3aW5kb3csYXJndW1lbnRzKTooY29uc29sZS5lcnJvcigiZHJvcHBpbmcgbW9kdWxlIGJlY2F1c2UgZGVmaW5lIHdhc24ndCBhIHN0cmluZy4iKSxjb25zb2xlLnRyYWNlKCkpO3JldHVybn1hcmd1bWVudHMubGVuZ3RoPT0yJiYoZD1iKSxjLm1vZHVsZXN8fChjLm1vZHVsZXM9e30pLGMubW9kdWxlc1thXT1kfSxkPWZ1bmN0aW9uKGEsYixjKXtpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik9PT0iW29iamVjdCBBcnJheV0iKXt2YXIgZT1bXTtmb3IodmFyIGc9MCxoPWIubGVuZ3RoO2c8aDsrK2cpe3ZhciBpPWYoYSxiW2ddKTtpZighaSYmZC5vcmlnaW5hbClyZXR1cm4gZC5vcmlnaW5hbC5hcHBseSh3aW5kb3csYXJndW1lbnRzKTtlLnB1c2goaSl9YyYmYy5hcHBseShudWxsLGUpfWVsc2V7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgaj1mKGEsYik7cmV0dXJuIWomJmQub3JpZ2luYWw/ZC5vcmlnaW5hbC5hcHBseSh3aW5kb3csYXJndW1lbnRzKTooYyYmYygpLGopfWlmKGQub3JpZ2luYWwpcmV0dXJuIGQub3JpZ2luYWwuYXBwbHkod2luZG93LGFyZ3VtZW50cyl9fSxlPWZ1bmN0aW9uKGEsYil7aWYoYi5pbmRleE9mKCIhIikhPT0tMSl7dmFyIGM9Yi5zcGxpdCgiISIpO3JldHVybiBlKGEsY1swXSkrIiEiK2UoYSxjWzFdKX1pZihiLmNoYXJBdCgwKT09Ii4iKXt2YXIgZD1hLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpO2I9ZCsiLyIrYjt3aGlsZShiLmluZGV4T2YoIi4iKSE9PS0xJiZmIT1iKXt2YXIgZj1iO2I9Yi5yZXBsYWNlKC9cL1wuXC8vLCIvIikucmVwbGFjZSgvW15cL10rXC9cLlwuXC8vLCIiKX19cmV0dXJuIGJ9LGY9ZnVuY3Rpb24oYSxiKXtiPWUoYSxiKTt2YXIgZj1jLm1vZHVsZXNbYl07aWYoIWYpcmV0dXJuIG51bGw7aWYodHlwZW9mIGY9PSJmdW5jdGlvbiIpe3ZhciBnPXt9LGg9e2lkOmIsdXJpOiIiLGV4cG9ydHM6ZyxwYWNrYWdlZDohMH0saT1mdW5jdGlvbihhLGMpe3JldHVybiBkKGIsYSxjKX0saj1mKGksZyxoKTtyZXR1cm4gZz1qfHxoLmV4cG9ydHMsYy5tb2R1bGVzW2JdPWcsZ31yZXR1cm4gZn07ZyhhKX0pKCksZGVmaW5lKCJhY2UvYWNlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9maXhvbGRicm93c2VycyIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9ldmVudCIsImFjZS9lZGl0b3IiLCJhY2UvZWRpdF9zZXNzaW9uIiwiYWNlL3VuZG9tYW5hZ2VyIiwiYWNlL3ZpcnR1YWxfcmVuZGVyZXIiLCJhY2UvbXVsdGlfc2VsZWN0IiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL2tleWJvYXJkL2hhc2hfaGFuZGxlciIsImFjZS9rZXlib2FyZC9zdGF0ZV9oYW5kbGVyIiwiYWNlL3BsYWNlaG9sZGVyIiwiYWNlL2NvbmZpZyIsImFjZS90aGVtZS90ZXh0bWF0ZSJdLGZ1bmN0aW9uKGEsYixjKXthKCIuL2xpYi9maXhvbGRicm93c2VycyIpO3ZhciBkPWEoIi4vbGliL2RvbSIpLGU9YSgiLi9saWIvZXZlbnQiKSxmPWEoIi4vZWRpdG9yIikuRWRpdG9yLGc9YSgiLi9lZGl0X3Nlc3Npb24iKS5FZGl0U2Vzc2lvbixoPWEoIi4vdW5kb21hbmFnZXIiKS5VbmRvTWFuYWdlcixpPWEoIi4vdmlydHVhbF9yZW5kZXJlciIpLlZpcnR1YWxSZW5kZXJlcixqPWEoIi4vbXVsdGlfc2VsZWN0IikuTXVsdGlTZWxlY3Q7YSgiLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLGEoIi4va2V5Ym9hcmQvaGFzaF9oYW5kbGVyIiksYSgiLi9rZXlib2FyZC9zdGF0ZV9oYW5kbGVyIiksYSgiLi9wbGFjZWhvbGRlciIpLGIuY29uZmlnPWEoIi4vY29uZmlnIiksYi5lZGl0PWZ1bmN0aW9uKGIpe3R5cGVvZiBiPT0ic3RyaW5nIiYmKGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYikpO2lmKGIuZW52JiZiLmVudi5lZGl0b3IgaW5zdGFuY2VvZiBmKXJldHVybiBiLmVudi5lZGl0b3I7dmFyIGM9bmV3IGcoZC5nZXRJbm5lclRleHQoYikpO2Muc2V0VW5kb01hbmFnZXIobmV3IGgpLGIuaW5uZXJIVE1MPSIiO3ZhciBrPW5ldyBmKG5ldyBpKGIsYSgiLi90aGVtZS90ZXh0bWF0ZSIpKSk7bmV3IGooayksay5zZXRTZXNzaW9uKGMpO3ZhciBsPXt9O3JldHVybiBsLmRvY3VtZW50PWMsbC5lZGl0b3I9ayxrLnJlc2l6ZSgpLGUuYWRkTGlzdGVuZXIod2luZG93LCJyZXNpemUiLGZ1bmN0aW9uKCl7ay5yZXNpemUoKX0pLGIuZW52PWwsay5lbnY9bCxrfX0pLGRlZmluZSgiYWNlL2xpYi9maXhvbGRicm93c2VycyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvcmVnZXhwIiwiYWNlL2xpYi9lczUtc2hpbSJdLGZ1bmN0aW9uKGEsYixjKXthKCIuL3JlZ2V4cCIpLGEoIi4vZXM1LXNoaW0iKX0pLGRlZmluZSgiYWNlL2xpYi9yZWdleHAiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZyhhKXtyZXR1cm4oYS5nbG9iYWw/ImciOiIiKSsoYS5pZ25vcmVDYXNlPyJpIjoiIikrKGEubXVsdGlsaW5lPyJtIjoiIikrKGEuZXh0ZW5kZWQ/IngiOiIiKSsoYS5zdGlja3k/InkiOiIiKX1mdW5jdGlvbiBoKGEsYixjKXtpZihBcnJheS5wcm90b3R5cGUuaW5kZXhPZilyZXR1cm4gYS5pbmRleE9mKGIsYyk7Zm9yKHZhciBkPWN8fDA7ZDxhLmxlbmd0aDtkKyspaWYoYVtkXT09PWIpcmV0dXJuIGQ7cmV0dXJuLTF9dmFyIGQ9e2V4ZWM6UmVnRXhwLnByb3RvdHlwZS5leGVjLHRlc3Q6UmVnRXhwLnByb3RvdHlwZS50ZXN0LG1hdGNoOlN0cmluZy5wcm90b3R5cGUubWF0Y2gscmVwbGFjZTpTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Usc3BsaXQ6U3RyaW5nLnByb3RvdHlwZS5zcGxpdH0sZT1kLmV4ZWMuY2FsbCgvKCk/Py8sIiIpWzFdPT09dW5kZWZpbmVkLGY9ZnVuY3Rpb24oKXt2YXIgYT0vXi9nO3JldHVybiBkLnRlc3QuY2FsbChhLCIiKSwhYS5sYXN0SW5kZXh9KCk7aWYoZiYmZSlyZXR1cm47UmVnRXhwLnByb3RvdHlwZS5leGVjPWZ1bmN0aW9uKGEpe3ZhciBiPWQuZXhlYy5hcHBseSh0aGlzLGFyZ3VtZW50cyksYyxpO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmYil7IWUmJmIubGVuZ3RoPjEmJmgoYiwiIik+LTEmJihpPVJlZ0V4cCh0aGlzLnNvdXJjZSxkLnJlcGxhY2UuY2FsbChnKHRoaXMpLCJnIiwiIikpLGQucmVwbGFjZS5jYWxsKGEuc2xpY2UoYi5pbmRleCksaSxmdW5jdGlvbigpe2Zvcih2YXIgYT0xO2E8YXJndW1lbnRzLmxlbmd0aC0yO2ErKylhcmd1bWVudHNbYV09PT11bmRlZmluZWQmJihiW2FdPXVuZGVmaW5lZCl9KSk7aWYodGhpcy5feHJlZ2V4cCYmdGhpcy5feHJlZ2V4cC5jYXB0dXJlTmFtZXMpZm9yKHZhciBqPTE7ajxiLmxlbmd0aDtqKyspYz10aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lc1tqLTFdLGMmJihiW2NdPWJbal0pOyFmJiZ0aGlzLmdsb2JhbCYmIWJbMF0ubGVuZ3RoJiZ0aGlzLmxhc3RJbmRleD5iLmluZGV4JiZ0aGlzLmxhc3RJbmRleC0tfXJldHVybiBifSxmfHwoUmVnRXhwLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGEpe3ZhciBiPWQuZXhlYy5jYWxsKHRoaXMsYSk7cmV0dXJuIGImJnRoaXMuZ2xvYmFsJiYhYlswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PmIuaW5kZXgmJnRoaXMubGFzdEluZGV4LS0sISFifSl9KSxkZWZpbmUoImFjZS9saWIvZXM1LXNoaW0iLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gcChhKXt0cnl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJzZW50aW5lbCIse30pLCJzZW50aW5lbCJpbiBhfWNhdGNoKGIpe319RnVuY3Rpb24ucHJvdG90eXBlLmJpbmR8fChGdW5jdGlvbi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2lmKHR5cGVvZiBjIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGQ9Zy5jYWxsKGFyZ3VtZW50cywxKSxlPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBhPWZ1bmN0aW9uKCl7fTthLnByb3RvdHlwZT1jLnByb3RvdHlwZTt2YXIgZj1uZXcgYSxoPWMuYXBwbHkoZixkLmNvbmNhdChnLmNhbGwoYXJndW1lbnRzKSkpO3JldHVybiBoIT09bnVsbCYmT2JqZWN0KGgpPT09aD9oOmZ9cmV0dXJuIGMuYXBwbHkoYixkLmNvbmNhdChnLmNhbGwoYXJndW1lbnRzKSkpfTtyZXR1cm4gZX0pO3ZhciBkPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLGU9QXJyYXkucHJvdG90eXBlLGY9T2JqZWN0LnByb3RvdHlwZSxnPWUuc2xpY2UsaD1kLmJpbmQoZi50b1N0cmluZyksaT1kLmJpbmQoZi5oYXNPd25Qcm9wZXJ0eSksaixrLGwsbSxuO2lmKG49aShmLCJfX2RlZmluZUdldHRlcl9fIikpaj1kLmJpbmQoZi5fX2RlZmluZUdldHRlcl9fKSxrPWQuYmluZChmLl9fZGVmaW5lU2V0dGVyX18pLGw9ZC5iaW5kKGYuX19sb29rdXBHZXR0ZXJfXyksbT1kLmJpbmQoZi5fX2xvb2t1cFNldHRlcl9fKTtBcnJheS5pc0FycmF5fHwoQXJyYXkuaXNBcnJheT1mdW5jdGlvbihiKXtyZXR1cm4gaChiKT09IltvYmplY3QgQXJyYXldIn0pLEFycmF5LnByb3RvdHlwZS5mb3JFYWNofHwoQXJyYXkucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWFyZ3VtZW50c1sxXSxlPTAsZj1jLmxlbmd0aD4+PjA7aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO3doaWxlKGU8ZillIGluIGMmJmIuY2FsbChkLGNbZV0sZSxjKSxlKyt9KSxBcnJheS5wcm90b3R5cGUubWFwfHwoQXJyYXkucHJvdG90eXBlLm1hcD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9QXJyYXkoZCksZj1hcmd1bWVudHNbMV07aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgZz0wO2c8ZDtnKyspZyBpbiBjJiYoZVtnXT1iLmNhbGwoZixjW2ddLGcsYykpO3JldHVybiBlfSksQXJyYXkucHJvdG90eXBlLmZpbHRlcnx8KEFycmF5LnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MCxlPVtdLGY9YXJndW1lbnRzWzFdO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIGc9MDtnPGQ7ZysrKWcgaW4gYyYmYi5jYWxsKGYsY1tnXSxnLGMpJiZlLnB1c2goY1tnXSk7cmV0dXJuIGV9KSxBcnJheS5wcm90b3R5cGUuZXZlcnl8fChBcnJheS5wcm90b3R5cGUuZXZlcnk9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MCxlPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBmPTA7ZjxkO2YrKylpZihmIGluIGMmJiFiLmNhbGwoZSxjW2ZdLGYsYykpcmV0dXJuITE7cmV0dXJuITB9KSxBcnJheS5wcm90b3R5cGUuc29tZXx8KEFycmF5LnByb3RvdHlwZS5zb21lPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjAsZT1hcmd1bWVudHNbMV07aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgZj0wO2Y8ZDtmKyspaWYoZiBpbiBjJiZiLmNhbGwoZSxjW2ZdLGYsYykpcmV0dXJuITA7cmV0dXJuITF9KSxBcnJheS5wcm90b3R5cGUucmVkdWNlfHwoQXJyYXkucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighZCYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBlPTAsZjtpZihhcmd1bWVudHMubGVuZ3RoPj0yKWY9YXJndW1lbnRzWzFdO2Vsc2UgZG97aWYoZSBpbiBjKXtmPWNbZSsrXTticmVha31pZigrK2U+PWQpdGhyb3cgbmV3IFR5cGVFcnJvcn13aGlsZSghMCk7Zm9yKDtlPGQ7ZSsrKWUgaW4gYyYmKGY9Yi5jYWxsKHZvaWQgMCxmLGNbZV0sZSxjKSk7cmV0dXJuIGZ9KSxBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHR8fChBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQ9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7aWYoIWQmJmFyZ3VtZW50cy5sZW5ndGg9PTEpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZSxmPWQtMTtpZihhcmd1bWVudHMubGVuZ3RoPj0yKWU9YXJndW1lbnRzWzFdO2Vsc2UgZG97aWYoZiBpbiBjKXtlPWNbZi0tXTticmVha31pZigtLWY8MCl0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtkbyBmIGluIHRoaXMmJihlPWIuY2FsbCh2b2lkIDAsZSxjW2ZdLGYsYykpO3doaWxlKGYtLSk7cmV0dXJuIGV9KSxBcnJheS5wcm90b3R5cGUuaW5kZXhPZnx8KEFycmF5LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoIWQpcmV0dXJuLTE7dmFyIGU9MDthcmd1bWVudHMubGVuZ3RoPjEmJihlPUUoYXJndW1lbnRzWzFdKSksZT1lPj0wP2U6TWF0aC5tYXgoMCxkK2UpO2Zvcig7ZTxkO2UrKylpZihlIGluIGMmJmNbZV09PT1iKXJldHVybiBlO3JldHVybi0xfSksQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoIWQpcmV0dXJuLTE7dmFyIGU9ZC0xO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGU9TWF0aC5taW4oZSxFKGFyZ3VtZW50c1sxXSkpKSxlPWU+PTA/ZTpkLU1hdGguYWJzKGUpO2Zvcig7ZT49MDtlLS0paWYoZSBpbiBjJiZiPT09Y1tlXSlyZXR1cm4gZTtyZXR1cm4tMX0pLE9iamVjdC5nZXRQcm90b3R5cGVPZnx8KE9iamVjdC5nZXRQcm90b3R5cGVPZj1mdW5jdGlvbihiKXtyZXR1cm4gYi5fX3Byb3RvX198fChiLmNvbnN0cnVjdG9yP2IuY29uc3RydWN0b3IucHJvdG90eXBlOmYpfSk7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ipe3ZhciBvPSJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIGNhbGxlZCBvbiBhIG5vbi1vYmplY3Q6ICI7T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj1mdW5jdGlvbihiLGMpe2lmKHR5cGVvZiBiIT0ib2JqZWN0IiYmdHlwZW9mIGIhPSJmdW5jdGlvbiJ8fGI9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IobytiKTtpZighaShiLGMpKXJldHVybjt2YXIgZCxlLGc7ZD17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O2lmKG4pe3ZhciBoPWIuX19wcm90b19fO2IuX19wcm90b19fPWY7dmFyIGU9bChiLGMpLGc9bShiLGMpO2IuX19wcm90b19fPWg7aWYoZXx8ZylyZXR1cm4gZSYmKGQuZ2V0PWUpLGcmJihkLnNldD1nKSxkfXJldHVybiBkLnZhbHVlPWJbY10sZH19T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz1mdW5jdGlvbihiKXtyZXR1cm4gT2JqZWN0LmtleXMoYil9KSxPYmplY3QuY3JlYXRlfHwoT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbihiLGMpe3ZhciBkO2lmKGI9PT1udWxsKWQ9e19fcHJvdG9fXzpudWxsfTtlbHNle2lmKHR5cGVvZiBiIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJ0eXBlb2YgcHJvdG90eXBlWyIrdHlwZW9mIGIrIl0gIT0gJ29iamVjdCciKTt2YXIgZT1mdW5jdGlvbigpe307ZS5wcm90b3R5cGU9YixkPW5ldyBlLGQuX19wcm90b19fPWJ9cmV0dXJuIGMhPT12b2lkIDAmJk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsYyksZH0pO2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl7dmFyIHE9cCh7fSkscj10eXBlb2YgZG9jdW1lbnQ9PSJ1bmRlZmluZWQifHxwKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtpZighcXx8IXIpdmFyIHM9T2JqZWN0LmRlZmluZVByb3BlcnR5fWlmKCFPYmplY3QuZGVmaW5lUHJvcGVydHl8fHMpe3ZhciB0PSJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdDogIix1PSJPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbGVkIG9uIG5vbi1vYmplY3Q6ICIsdj0iZ2V0dGVycyAmIHNldHRlcnMgY2FuIG5vdCBiZSBkZWZpbmVkIG9uIHRoaXMgamF2YXNjcmlwdCBlbmdpbmUiO09iamVjdC5kZWZpbmVQcm9wZXJ0eT1mdW5jdGlvbihiLGMsZCl7aWYodHlwZW9mIGIhPSJvYmplY3QiJiZ0eXBlb2YgYiE9ImZ1bmN0aW9uInx8Yj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih1K2IpO2lmKHR5cGVvZiBkIT0ib2JqZWN0IiYmdHlwZW9mIGQhPSJmdW5jdGlvbiJ8fGQ9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IodCtkKTtpZihzKXRyeXtyZXR1cm4gcy5jYWxsKE9iamVjdCxiLGMsZCl9Y2F0Y2goZSl7fWlmKGkoZCwidmFsdWUiKSlpZihuJiYobChiLGMpfHxtKGIsYykpKXt2YXIgZz1iLl9fcHJvdG9fXztiLl9fcHJvdG9fXz1mLGRlbGV0ZSBiW2NdLGJbY109ZC52YWx1ZSxiLl9fcHJvdG9fXz1nfWVsc2UgYltjXT1kLnZhbHVlO2Vsc2V7aWYoIW4pdGhyb3cgbmV3IFR5cGVFcnJvcih2KTtpKGQsImdldCIpJiZqKGIsYyxkLmdldCksaShkLCJzZXQiKSYmayhiLGMsZC5zZXQpfXJldHVybiBifX1PYmplY3QuZGVmaW5lUHJvcGVydGllc3x8KE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPWZ1bmN0aW9uKGIsYyl7Zm9yKHZhciBkIGluIGMpaShjLGQpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYixkLGNbZF0pO3JldHVybiBifSksT2JqZWN0LnNlYWx8fChPYmplY3Quc2VhbD1mdW5jdGlvbihiKXtyZXR1cm4gYn0pLE9iamVjdC5mcmVlemV8fChPYmplY3QuZnJlZXplPWZ1bmN0aW9uKGIpe3JldHVybiBifSk7dHJ5e09iamVjdC5mcmVlemUoZnVuY3Rpb24oKXt9KX1jYXRjaCh3KXtPYmplY3QuZnJlZXplPWZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpiKGMpfX0oT2JqZWN0LmZyZWV6ZSl9T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zfHwoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBifSksT2JqZWN0LmlzU2VhbGVkfHwoT2JqZWN0LmlzU2VhbGVkPWZ1bmN0aW9uKGIpe3JldHVybiExfSksT2JqZWN0LmlzRnJvemVufHwoT2JqZWN0LmlzRnJvemVuPWZ1bmN0aW9uKGIpe3JldHVybiExfSksT2JqZWN0LmlzRXh0ZW5zaWJsZXx8KE9iamVjdC5pc0V4dGVuc2libGU9ZnVuY3Rpb24oYil7aWYoT2JqZWN0KGIpPT09Yil0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBjPSIiO3doaWxlKGkoYixjKSljKz0iPyI7YltjXT0hMDt2YXIgZD1pKGIsYyk7cmV0dXJuIGRlbGV0ZSBiW2NdLGR9KTtpZighT2JqZWN0LmtleXMpe3ZhciB4PSEwLHk9WyJ0b1N0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVPZiIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY29uc3RydWN0b3IiXSx6PXkubGVuZ3RoO2Zvcih2YXIgQSBpbnt0b1N0cmluZzpudWxsfSl4PSExO09iamVjdC5rZXlzPWZ1bmN0aW9uIEgoYSl7aWYodHlwZW9mIGEhPSJvYmplY3QiJiZ0eXBlb2YgYSE9ImZ1bmN0aW9uInx8YT09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmtleXMgY2FsbGVkIG9uIGEgbm9uLW9iamVjdCIpO3ZhciBIPVtdO2Zvcih2YXIgYiBpbiBhKWkoYSxiKSYmSC5wdXNoKGIpO2lmKHgpZm9yKHZhciBjPTAsZD16O2M8ZDtjKyspe3ZhciBlPXlbY107aShhLGUpJiZILnB1c2goZSl9cmV0dXJuIEh9fWlmKCFEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ3x8KG5ldyBEYXRlKC02MjE5ODc1NTJlNSkpLnRvSVNPU3RyaW5nKCkuaW5kZXhPZigiLTAwMDAwMSIpPT09LTEpRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYixjLGQsZTtpZighaXNGaW5pdGUodGhpcykpdGhyb3cgbmV3IFJhbmdlRXJyb3I7Yj1bdGhpcy5nZXRVVENNb250aCgpKzEsdGhpcy5nZXRVVENEYXRlKCksdGhpcy5nZXRVVENIb3VycygpLHRoaXMuZ2V0VVRDTWludXRlcygpLHRoaXMuZ2V0VVRDU2Vjb25kcygpXSxlPXRoaXMuZ2V0VVRDRnVsbFllYXIoKSxlPShlPDA/Ii0iOmU+OTk5OT8iKyI6IiIpKygiMDAwMDAiK01hdGguYWJzKGUpKS5zbGljZSgwPD1lJiZlPD05OTk5Py00Oi02KSxjPWIubGVuZ3RoO3doaWxlKGMtLSlkPWJbY10sZDwxMCYmKGJbY109IjAiK2QpO3JldHVybiBlKyItIitiLnNsaWNlKDAsMikuam9pbigiLSIpKyJUIitiLnNsaWNlKDIpLmpvaW4oIjoiKSsiLiIrKCIwMDAiK3RoaXMuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpLnNsaWNlKC0zKSsiWiJ9O0RhdGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0pLERhdGUucHJvdG90eXBlLnRvSlNPTnx8KERhdGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihiKXtpZih0eXBlb2YgdGhpcy50b0lTT1N0cmluZyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiB0aGlzLnRvSVNPU3RyaW5nKCl9KSxEYXRlLnBhcnNlKCIrMjc1NzYwLTA5LTEzVDAwOjAwOjAwLjAwMFoiKSE9PTg2NGUxMyYmKERhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24gZShiLGMsZCxmLGcsaCxpKXt2YXIgaj1hcmd1bWVudHMubGVuZ3RoO2lmKHRoaXMgaW5zdGFuY2VvZiBhKXt2YXIgaz1qPT0xJiZTdHJpbmcoYik9PT1iP25ldyBhKGUucGFyc2UoYikpOmo+PTc/bmV3IGEoYixjLGQsZixnLGgsaSk6aj49Nj9uZXcgYShiLGMsZCxmLGcsaCk6aj49NT9uZXcgYShiLGMsZCxmLGcpOmo+PTQ/bmV3IGEoYixjLGQsZik6aj49Mz9uZXcgYShiLGMsZCk6aj49Mj9uZXcgYShiLGMpOmo+PTE/bmV3IGEoYik6bmV3IGE7cmV0dXJuIGsuY29uc3RydWN0b3I9ZSxrfXJldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYz1uZXcgUmVnRXhwKCJeKFxcZHs0fXxbKy1dXFxkezZ9KSg/Oi0oXFxkezJ9KSg/Oi0oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSg/OjooXFxkezJ9KSg/OlxcLihcXGR7M30pKT8pPyg/Olp8KD86KFstK10pKFxcZHsyfSk6KFxcZHsyfSkpKT8pPyk/KT8kIik7Zm9yKHZhciBkIGluIGEpYltkXT1hW2RdO3JldHVybiBiLm5vdz1hLm5vdyxiLlVUQz1hLlVUQyxiLnByb3RvdHlwZT1hLnByb3RvdHlwZSxiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iLGIucGFyc2U9ZnVuY3Rpb24oZCl7dmFyIGU9Yy5leGVjKGQpO2lmKGUpe2Uuc2hpZnQoKTtmb3IodmFyIGY9MTtmPDc7ZisrKWVbZl09KyhlW2ZdfHwoZjwzPzE6MCkpLGY9PTEmJmVbZl0tLTt2YXIgZz0rZS5wb3AoKSxoPStlLnBvcCgpLGk9ZS5wb3AoKSxqPTA7aWYoaSl7aWYoaD4yM3x8Zz41OSlyZXR1cm4gTmFOO2o9KGgqNjArZykqNmU0KihpPT0iKyI/LTE6MSl9dmFyIGs9K2VbMF07cmV0dXJuIDA8PWsmJms8PTk5PyhlWzBdPWsrNDAwLGEuVVRDLmFwcGx5KHRoaXMsZSkrai0xMjYyMjc4MDhlNSk6YS5VVEMuYXBwbHkodGhpcyxlKStqfXJldHVybiBhLnBhcnNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYn0oRGF0ZSkpO3ZhciBCPSIJXG4LXGZcciDCoOGagOGgjuKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOe+7vyI7aWYoIVN0cmluZy5wcm90b3R5cGUudHJpbXx8Qi50cmltKCkpe0I9IlsiK0IrIl0iO3ZhciBDPW5ldyBSZWdFeHAoIl4iK0IrQisiKiIpLEQ9bmV3IFJlZ0V4cChCK0IrIiokIik7U3RyaW5nLnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzKS5yZXBsYWNlKEMsIiIpLnJlcGxhY2UoRCwiIil9fXZhciBFPWZ1bmN0aW9uKGEpe3JldHVybiBhPSthLGEhPT1hP2E9MDphIT09MCYmYSE9PTEvMCYmYSE9PS1JbmZpbml0eSYmKGE9KGE+MHx8LTEpKk1hdGguZmxvb3IoTWF0aC5hYnMoYSkpKSxhfSxGPSJhIlswXSE9ImEiLEc9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiBGJiZ0eXBlb2YgYT09InN0cmluZyImJmE/YS5zcGxpdCgiIik6T2JqZWN0KGEpfX0pLGRlZmluZSgiYWNlL2xpYi9kb20iLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2IuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihhLGIpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlM/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGJ8fGQsYSk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChhKX0sYi5zZXRUZXh0PWZ1bmN0aW9uKGEsYil7YS5pbm5lclRleHQhPT11bmRlZmluZWQmJihhLmlubmVyVGV4dD1iKSxhLnRleHRDb250ZW50IT09dW5kZWZpbmVkJiYoYS50ZXh0Q29udGVudD1iKX0sYi5oYXNDc3NDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY2xhc3NOYW1lLnNwbGl0KC9ccysvZyk7cmV0dXJuIGMuaW5kZXhPZihiKSE9PS0xfSxiLmFkZENzc0NsYXNzPWZ1bmN0aW9uKGEsYyl7Yi5oYXNDc3NDbGFzcyhhLGMpfHwoYS5jbGFzc05hbWUrPSIgIitjKX0sYi5yZW1vdmVDc3NDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY2xhc3NOYW1lLnNwbGl0KC9ccysvZyk7Zm9yKDs7KXt2YXIgZD1jLmluZGV4T2YoYik7aWYoZD09LTEpYnJlYWs7Yy5zcGxpY2UoZCwxKX1hLmNsYXNzTmFtZT1jLmpvaW4oIiAiKX0sYi50b2dnbGVDc3NDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY2xhc3NOYW1lLnNwbGl0KC9ccysvZyksZD0hMDtmb3IoOzspe3ZhciBlPWMuaW5kZXhPZihiKTtpZihlPT0tMSlicmVhaztkPSExLGMuc3BsaWNlKGUsMSl9cmV0dXJuIGQmJmMucHVzaChiKSxhLmNsYXNzTmFtZT1jLmpvaW4oIiAiKSxkfSxiLnNldENzc0NsYXNzPWZ1bmN0aW9uKGEsYyxkKXtkP2IuYWRkQ3NzQ2xhc3MoYSxjKTpiLnJlbW92ZUNzc0NsYXNzKGEsYyl9LGIuaGFzQ3NzU3RyaW5nPWZ1bmN0aW9uKGEsYil7dmFyIGM9MCxkO2I9Ynx8ZG9jdW1lbnQ7aWYoYi5jcmVhdGVTdHlsZVNoZWV0JiYoZD1iLnN0eWxlU2hlZXRzKSl7d2hpbGUoYzxkLmxlbmd0aClpZihkW2MrK10ub3duaW5nRWxlbWVudC5pZD09PWEpcmV0dXJuITB9ZWxzZSBpZihkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInN0eWxlIikpd2hpbGUoYzxkLmxlbmd0aClpZihkW2MrK10uaWQ9PT1hKXJldHVybiEwO3JldHVybiExfSxiLmltcG9ydENzc1N0cmluZz1mdW5jdGlvbihjLGUsZil7Zj1mfHxkb2N1bWVudDtpZihlJiZiLmhhc0Nzc1N0cmluZyhlLGYpKXJldHVybiBudWxsO3ZhciBnO2lmKGYuY3JlYXRlU3R5bGVTaGVldClnPWYuY3JlYXRlU3R5bGVTaGVldCgpLGcuY3NzVGV4dD1jLGUmJihnLm93bmluZ0VsZW1lbnQuaWQ9ZSk7ZWxzZXtnPWYuY3JlYXRlRWxlbWVudE5TP2YuY3JlYXRlRWxlbWVudE5TKGQsInN0eWxlIik6Zi5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLGcuYXBwZW5kQ2hpbGQoZi5jcmVhdGVUZXh0Tm9kZShjKSksZSYmKGcuaWQ9ZSk7dmFyIGg9Zi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxmLmRvY3VtZW50RWxlbWVudDtoLmFwcGVuZENoaWxkKGcpfX0sYi5pbXBvcnRDc3NTdHlsc2hlZXQ9ZnVuY3Rpb24oYSxjKXtpZihjLmNyZWF0ZVN0eWxlU2hlZXQpYy5jcmVhdGVTdHlsZVNoZWV0KGEpO2Vsc2V7dmFyIGQ9Yi5jcmVhdGVFbGVtZW50KCJsaW5rIik7ZC5yZWw9InN0eWxlc2hlZXQiLGQuaHJlZj1hO3ZhciBlPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Yy5kb2N1bWVudEVsZW1lbnQ7ZS5hcHBlbmRDaGlsZChkKX19LGIuZ2V0SW5uZXJXaWR0aD1mdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VJbnQoYi5jb21wdXRlZFN0eWxlKGEsInBhZGRpbmdMZWZ0IiksMTApK3BhcnNlSW50KGIuY29tcHV0ZWRTdHlsZShhLCJwYWRkaW5nUmlnaHQiKSwxMCkrYS5jbGllbnRXaWR0aH0sYi5nZXRJbm5lckhlaWdodD1mdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VJbnQoYi5jb21wdXRlZFN0eWxlKGEsInBhZGRpbmdUb3AiKSwxMCkrcGFyc2VJbnQoYi5jb21wdXRlZFN0eWxlKGEsInBhZGRpbmdCb3R0b20iKSwxMCkrYS5jbGllbnRIZWlnaHR9LHdpbmRvdy5wYWdlWU9mZnNldCE9PXVuZGVmaW5lZD8oYi5nZXRQYWdlU2Nyb2xsVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5wYWdlWU9mZnNldH0sYi5nZXRQYWdlU2Nyb2xsTGVmdD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cucGFnZVhPZmZzZXR9KTooYi5nZXRQYWdlU2Nyb2xsVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wfSxiLmdldFBhZ2VTY3JvbGxMZWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdH0pLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlP2IuY29tcHV0ZWRTdHlsZT1mdW5jdGlvbihhLGIpe3JldHVybiBiPyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhLCIiKXx8e30pW2JdfHwiIjp3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhLCIiKXx8e319OmIuY29tcHV0ZWRTdHlsZT1mdW5jdGlvbihhLGIpe3JldHVybiBiP2EuY3VycmVudFN0eWxlW2JdOmEuY3VycmVudFN0eWxlfSxiLnNjcm9sbGJhcldpZHRoPWZ1bmN0aW9uKGEpe3ZhciBjPWIuY3JlYXRlRWxlbWVudCgicCIpO2Muc3R5bGUud2lkdGg9IjEwMCUiLGMuc3R5bGUubWluV2lkdGg9IjBweCIsYy5zdHlsZS5oZWlnaHQ9IjIwMHB4Ijt2YXIgZD1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9ZC5zdHlsZTtlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZS5sZWZ0PSItMTAwMDBweCIsZS5vdmVyZmxvdz0iaGlkZGVuIixlLndpZHRoPSIyMDBweCIsZS5taW5XaWR0aD0iMHB4IixlLmhlaWdodD0iMTUwcHgiLGQuYXBwZW5kQ2hpbGQoYyk7dmFyIGY9YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudDtmLmFwcGVuZENoaWxkKGQpO3ZhciBnPWMub2Zmc2V0V2lkdGg7ZS5vdmVyZmxvdz0ic2Nyb2xsIjt2YXIgaD1jLm9mZnNldFdpZHRoO3JldHVybiBnPT1oJiYoaD1kLmNsaWVudFdpZHRoKSxmLnJlbW92ZUNoaWxkKGQpLGctaH0sYi5zZXRJbm5lckh0bWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNsb25lTm9kZSghMSk7cmV0dXJuIGMuaW5uZXJIVE1MPWIsYS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjLGEpLGN9LGIuc2V0SW5uZXJUZXh0PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5vd25lckRvY3VtZW50O2MuYm9keSYmInRleHRDb250ZW50ImluIGMuYm9keT9hLnRleHRDb250ZW50PWI6YS5pbm5lclRleHQ9Yn0sYi5nZXRJbm5lclRleHQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vd25lckRvY3VtZW50O3JldHVybiBiLmJvZHkmJiJ0ZXh0Q29udGVudCJpbiBiLmJvZHk/YS50ZXh0Q29udGVudDphLmlubmVyVGV4dHx8YS50ZXh0Q29udGVudHx8IiJ9LGIuZ2V0UGFyZW50V2luZG93PWZ1bmN0aW9uKGEpe3JldHVybiBhLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvd319KSxkZWZpbmUoImFjZS9saWIvZXZlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2tleXMiLCJhY2UvbGliL3VzZXJhZ2VudCIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSxiLGMpe3ZhciBmPTA7ZS5pc09wZXJhJiZlLmlzTWFjP2Y9MHwoYi5tZXRhS2V5PzE6MCl8KGIuYWx0S2V5PzI6MCl8KGIuc2hpZnRLZXk/NDowKXwoYi5jdHJsS2V5Pzg6MCk6Zj0wfChiLmN0cmxLZXk/MTowKXwoYi5hbHRLZXk/MjowKXwoYi5zaGlmdEtleT80OjApfChiLm1ldGFLZXk/ODowKTtpZihjIGluIGQuTU9ESUZJRVJfS0VZUyl7c3dpdGNoKGQuTU9ESUZJRVJfS0VZU1tjXSl7Y2FzZSJBbHQiOmY9MjticmVhaztjYXNlIlNoaWZ0IjpmPTQ7YnJlYWs7Y2FzZSJDdHJsIjpmPTE7YnJlYWs7ZGVmYXVsdDpmPTh9Yz0wfXJldHVybiBmJjgmJihjPT05MXx8Yz09OTMpJiYoYz0wKSwhIWZ8fGMgaW4gZC5GVU5DVElPTl9LRVlTfHxjIGluIGQuUFJJTlRBQkxFX0tFWVM/YShiLGYsYyk6ITF9dmFyIGQ9YSgiLi9rZXlzIiksZT1hKCIuL3VzZXJhZ2VudCIpLGY9YSgiLi9kb20iKTtiLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGEsYixjKXtpZihhLmFkZEV2ZW50TGlzdGVuZXIpcmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpO2lmKGEuYXR0YWNoRXZlbnQpe3ZhciBkPWZ1bmN0aW9uKCl7Yyh3aW5kb3cuZXZlbnQpfTtjLl93cmFwcGVyPWQsYS5hdHRhY2hFdmVudCgib24iK2IsZCl9fSxiLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGEsYixjKXtpZihhLnJlbW92ZUV2ZW50TGlzdGVuZXIpcmV0dXJuIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpO2EuZGV0YWNoRXZlbnQmJmEuZGV0YWNoRXZlbnQoIm9uIitiLGMuX3dyYXBwZXJ8fGMpfSxiLnN0b3BFdmVudD1mdW5jdGlvbihhKXtyZXR1cm4gYi5zdG9wUHJvcGFnYXRpb24oYSksYi5wcmV2ZW50RGVmYXVsdChhKSwhMX0sYi5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24/YS5zdG9wUHJvcGFnYXRpb24oKTphLmNhbmNlbEJ1YmJsZT0hMH0sYi5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExfSxiLmdldEJ1dHRvbj1mdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT0iZGJsY2xpY2siPzA6YS50eXBlPT0iY29udGV4dG1lbnUiPzI6YS5wcmV2ZW50RGVmYXVsdD9hLmJ1dHRvbjp7MTowLDI6Miw0OjF9W2EuYnV0dG9uXX0sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldENhcHR1cmU/Yi5jYXB0dXJlPWZ1bmN0aW9uKGEsYyxkKXtmdW5jdGlvbiBlKGEpe3JldHVybiBjKGEpLGIuc3RvcFByb3BhZ2F0aW9uKGEpfWZ1bmN0aW9uIGcoZSl7YyhlKSxmfHwoZj0hMCxkKGUpKSxiLnJlbW92ZUxpc3RlbmVyKGEsIm1vdXNlbW92ZSIsYyksYi5yZW1vdmVMaXN0ZW5lcihhLCJtb3VzZXVwIixnKSxiLnJlbW92ZUxpc3RlbmVyKGEsImxvc2VjYXB0dXJlIixnKSxhLnJlbGVhc2VDYXB0dXJlKCl9dmFyIGY9ITE7Yi5hZGRMaXN0ZW5lcihhLCJtb3VzZW1vdmUiLGMpLGIuYWRkTGlzdGVuZXIoYSwibW91c2V1cCIsZyksYi5hZGRMaXN0ZW5lcihhLCJsb3NlY2FwdHVyZSIsZyksYS5zZXRDYXB0dXJlKCl9OmIuY2FwdHVyZT1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtiKGEpLGEuc3RvcFByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gZShhKXtiJiZiKGEpLGMmJmMoYSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixkLCEwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixlLCEwKSxhLnN0b3BQcm9wYWdhdGlvbigpfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZCwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsZSwhMCl9LGIuYWRkTW91c2VXaGVlbExpc3RlbmVyPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9OCxlPWZ1bmN0aW9uKGEpe2Eud2hlZWxEZWx0YSE9PXVuZGVmaW5lZD9hLndoZWVsRGVsdGFYIT09dW5kZWZpbmVkPyhhLndoZWVsWD0tYS53aGVlbERlbHRhWC9kLGEud2hlZWxZPS1hLndoZWVsRGVsdGFZL2QpOihhLndoZWVsWD0wLGEud2hlZWxZPS1hLndoZWVsRGVsdGEvZCk6YS5heGlzJiZhLmF4aXM9PWEuSE9SSVpPTlRBTF9BWElTPyhhLndoZWVsWD0oYS5kZXRhaWx8fDApKjUsYS53aGVlbFk9MCk6KGEud2hlZWxYPTAsYS53aGVlbFk9KGEuZGV0YWlsfHwwKSo1KSxjKGEpfTtiLmFkZExpc3RlbmVyKGEsIkRPTU1vdXNlU2Nyb2xsIixlKSxiLmFkZExpc3RlbmVyKGEsIm1vdXNld2hlZWwiLGUpfSxiLmFkZE11bHRpTW91c2VEb3duTGlzdGVuZXI9ZnVuY3Rpb24oYSxjLGQsZixnKXt2YXIgaD0wLGksaixrPWZ1bmN0aW9uKGEpe2grPTEsaD09MSYmKGk9YS5jbGllbnRYLGo9YS5jbGllbnRZLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtoPTB9LGZ8fDYwMCkpO3ZhciBlPWIuZ2V0QnV0dG9uKGEpPT1jO2lmKCFlfHxNYXRoLmFicyhhLmNsaWVudFgtaSk+NXx8TWF0aC5hYnMoYS5jbGllbnRZLWopPjUpaD0wO2g9PWQmJihoPTAsZyhhKSk7aWYoZSlyZXR1cm4gYi5wcmV2ZW50RGVmYXVsdChhKX07Yi5hZGRMaXN0ZW5lcihhLCJtb3VzZWRvd24iLGspLGUuaXNPbGRJRSYmYi5hZGRMaXN0ZW5lcihhLCJkYmxjbGljayIsayl9LGIuYWRkQ29tbWFuZEtleUxpc3RlbmVyPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9Yi5hZGRMaXN0ZW5lcjtpZihlLmlzT2xkR2Vja298fGUuaXNPcGVyYSl7dmFyIGY9bnVsbDtkKGEsImtleWRvd24iLGZ1bmN0aW9uKGEpe2Y9YS5rZXlDb2RlfSksZChhLCJrZXlwcmVzcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGcoYyxhLGYpfSl9ZWxzZXt2YXIgaD1udWxsO2QoYSwia2V5ZG93biIsZnVuY3Rpb24oYSl7cmV0dXJuIGg9YS5rZXlJZGVudGlmaWVyfHxhLmtleUNvZGUsZyhjLGEsYS5rZXlDb2RlKX0pfX07aWYod2luZG93LnBvc3RNZXNzYWdlKXt2YXIgaD0xO2IubmV4dFRpY2s9ZnVuY3Rpb24oYSxjKXtjPWN8fHdpbmRvdzt2YXIgZD0iemVyby10aW1lb3V0LW1lc3NhZ2UtIitoO2IuYWRkTGlzdGVuZXIoYywibWVzc2FnZSIsZnVuY3Rpb24gZShmKXtmLmRhdGE9PWQmJihiLnN0b3BQcm9wYWdhdGlvbihmKSxiLnJlbW92ZUxpc3RlbmVyKGMsIm1lc3NhZ2UiLGUpLGEoKSl9KSxjLnBvc3RNZXNzYWdlKGQsIioiKX19ZWxzZSBiLm5leHRUaWNrPWZ1bmN0aW9uKGEsYil7Yj1ifHx3aW5kb3csd2luZG93LnNldFRpbWVvdXQoYSwwKX19KSxkZWZpbmUoImFjZS9saWIva2V5cyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vb29wIiksZT1mdW5jdGlvbigpe3ZhciBhPXtNT0RJRklFUl9LRVlTOnsxNjoiU2hpZnQiLDE3OiJDdHJsIiwxODoiQWx0IiwyMjQ6Ik1ldGEifSxLRVlfTU9EUzp7Y3RybDoxLGFsdDoyLG9wdGlvbjoyLHNoaWZ0OjQsbWV0YTo4LGNvbW1hbmQ6OH0sRlVOQ1RJT05fS0VZUzp7ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEzOiJSZXR1cm4iLDE5OiJQYXVzZSIsMjc6IkVzYyIsMzI6IlNwYWNlIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiTGVmdCIsMzg6IlVwIiwzOToiUmlnaHQiLDQwOiJEb3duIiw0NDoiUHJpbnQiLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDk2OiJOdW1wYWQwIiw5NzoiTnVtcGFkMSIsOTg6Ik51bXBhZDIiLDk5OiJOdW1wYWQzIiwxMDA6Ik51bXBhZDQiLDEwMToiTnVtcGFkNSIsMTAyOiJOdW1wYWQ2IiwxMDM6Ik51bXBhZDciLDEwNDoiTnVtcGFkOCIsMTA1OiJOdW1wYWQ5IiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bWxvY2siLDE0NToiU2Nyb2xsbG9jayJ9LFBSSU5UQUJMRV9LRVlTOnszMjoiICIsNDg6IjAiLDQ5OiIxIiw1MDoiMiIsNTE6IjMiLDUyOiI0Iiw1MzoiNSIsNTQ6IjYiLDU1OiI3Iiw1NjoiOCIsNTc6IjkiLDU5OiI7Iiw2MToiPSIsNjU6ImEiLDY2OiJiIiw2NzoiYyIsNjg6ImQiLDY5OiJlIiw3MDoiZiIsNzE6ImciLDcyOiJoIiw3MzoiaSIsNzQ6ImoiLDc1OiJrIiw3NjoibCIsNzc6Im0iLDc4OiJuIiw3OToibyIsODA6InAiLDgxOiJxIiw4MjoiciIsODM6InMiLDg0OiJ0Iiw4NToidSIsODY6InYiLDg3OiJ3Iiw4ODoieCIsODk6InkiLDkwOiJ6IiwxMDc6IisiLDEwOToiLSIsMTEwOiIuIiwxODg6IiwiLDE5MDoiLiIsMTkxOiIvIiwxOTI6ImAiLDIxOToiWyIsMjIwOiJcXCIsMjIxOiJdIiwyMjI6IicifX07Zm9yKHZhciBiIGluIGEuRlVOQ1RJT05fS0VZUyl7dmFyIGM9YS5GVU5DVElPTl9LRVlTW2JdLnRvVXBwZXJDYXNlKCk7YVtjXT1wYXJzZUludChiLDEwKX1yZXR1cm4gZC5taXhpbihhLGEuTU9ESUZJRVJfS0VZUyksZC5taXhpbihhLGEuUFJJTlRBQkxFX0tFWVMpLGQubWl4aW4oYSxhLkZVTkNUSU9OX0tFWVMpLGF9KCk7ZC5taXhpbihiLGUpLGIua2V5Q29kZVRvU3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybihlW2FdfHxTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKS50b0xvd2VyQ2FzZSgpfX0pLGRlZmluZSgiYWNlL2xpYi9vb3AiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7Yi5pbmhlcml0cz1mdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZnVuY3Rpb24oYixjKXthLnByb3RvdHlwZT1jLnByb3RvdHlwZSxiLnN1cGVyXz1jLnByb3RvdHlwZSxiLnByb3RvdHlwZT1uZXcgYSxiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ifX0oKSxiLm1peGluPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpYVtjXT1iW2NdfSxiLmltcGxlbWVudD1mdW5jdGlvbihhLGMpe2IubWl4aW4oYSxjKX19KSxkZWZpbmUoImFjZS9saWIvdXNlcmFnZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPShuYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goL21hY3x3aW58bGludXgvaSl8fFsib3RoZXIiXSlbMF0udG9Mb3dlckNhc2UoKSxlPW5hdmlnYXRvci51c2VyQWdlbnQ7Yi5pc1dpbj1kPT0id2luIixiLmlzTWFjPWQ9PSJtYWMiLGIuaXNMaW51eD1kPT0ibGludXgiLGIuaXNJRT1uYXZpZ2F0b3IuYXBwTmFtZT09Ik1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciImJnBhcnNlRmxvYXQobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRSAoWzAtOV0rW1wuMC05XSspLylbMV0pLGIuaXNPbGRJRT1iLmlzSUUmJmIuaXNJRTw5LGIuaXNHZWNrbz1iLmlzTW96aWxsYT13aW5kb3cuY29udHJvbGxlcnMmJndpbmRvdy5uYXZpZ2F0b3IucHJvZHVjdD09PSJHZWNrbyIsYi5pc09sZEdlY2tvPWIuaXNHZWNrbyYmcGFyc2VJbnQoKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL3J2XDooXGQrKS8pfHxbXSlbMV0sMTApPDQsYi5pc09wZXJhPXdpbmRvdy5vcGVyYSYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHdpbmRvdy5vcGVyYSk9PSJbb2JqZWN0IE9wZXJhXSIsYi5pc1dlYktpdD1wYXJzZUZsb2F0KGUuc3BsaXQoIldlYktpdC8iKVsxXSl8fHVuZGVmaW5lZCxiLmlzQ2hyb21lPXBhcnNlRmxvYXQoZS5zcGxpdCgiIENocm9tZS8iKVsxXSl8fHVuZGVmaW5lZCxiLmlzQUlSPWUuaW5kZXhPZigiQWRvYmVBSVIiKT49MCxiLmlzSVBhZD1lLmluZGV4T2YoImlQYWQiKT49MCxiLmlzVG91Y2hQYWQ9ZS5pbmRleE9mKCJUb3VjaFBhZCIpPj0wLGIuT1M9e0xJTlVYOiJMSU5VWCIsTUFDOiJNQUMiLFdJTkRPV1M6IldJTkRPV1MifSxiLmdldE9TPWZ1bmN0aW9uKCl7cmV0dXJuIGIuaXNNYWM/Yi5PUy5NQUM6Yi5pc0xpbnV4P2IuT1MuTElOVVg6Yi5PUy5XSU5ET1dTfX0pLGRlZmluZSgiYWNlL2VkaXRvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9saWIvdXNlcmFnZW50IiwiYWNlL2tleWJvYXJkL3RleHRpbnB1dCIsImFjZS9tb3VzZS9tb3VzZV9oYW5kbGVyIiwiYWNlL21vdXNlL2ZvbGRfaGFuZGxlciIsImFjZS9rZXlib2FyZC9rZXliaW5kaW5nIiwiYWNlL2VkaXRfc2Vzc2lvbiIsImFjZS9zZWFyY2giLCJhY2UvcmFuZ2UiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvY29tbWFuZHMvY29tbWFuZF9tYW5hZ2VyIiwiYWNlL2NvbW1hbmRzL2RlZmF1bHRfY29tbWFuZHMiXSxmdW5jdGlvbihhLGIsYyl7YSgiLi9saWIvZml4b2xkYnJvd3NlcnMiKTt2YXIgZD1hKCIuL2xpYi9vb3AiKSxlPWEoIi4vbGliL2xhbmciKSxmPWEoIi4vbGliL3VzZXJhZ2VudCIpLGc9YSgiLi9rZXlib2FyZC90ZXh0aW5wdXQiKS5UZXh0SW5wdXQsaD1hKCIuL21vdXNlL21vdXNlX2hhbmRsZXIiKS5Nb3VzZUhhbmRsZXIsaT1hKCIuL21vdXNlL2ZvbGRfaGFuZGxlciIpLkZvbGRIYW5kbGVyLGo9YSgiLi9rZXlib2FyZC9rZXliaW5kaW5nIikuS2V5QmluZGluZyxrPWEoIi4vZWRpdF9zZXNzaW9uIikuRWRpdFNlc3Npb24sbD1hKCIuL3NlYXJjaCIpLlNlYXJjaCxtPWEoIi4vcmFuZ2UiKS5SYW5nZSxuPWEoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsbz1hKCIuL2NvbW1hbmRzL2NvbW1hbmRfbWFuYWdlciIpLkNvbW1hbmRNYW5hZ2VyLHA9YSgiLi9jb21tYW5kcy9kZWZhdWx0X2NvbW1hbmRzIikuY29tbWFuZHMscT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0Q29udGFpbmVyRWxlbWVudCgpO3RoaXMuY29udGFpbmVyPWMsdGhpcy5yZW5kZXJlcj1hLHRoaXMuY29tbWFuZHM9bmV3IG8oZi5pc01hYz8ibWFjIjoid2luIixwKSx0aGlzLnRleHRJbnB1dD1uZXcgZyhhLmdldFRleHRBcmVhQ29udGFpbmVyKCksdGhpcyksdGhpcy5yZW5kZXJlci50ZXh0YXJlYT10aGlzLnRleHRJbnB1dC5nZXRFbGVtZW50KCksdGhpcy5rZXlCaW5kaW5nPW5ldyBqKHRoaXMpLGYuaXNJUGFkfHwodGhpcy4kbW91c2VIYW5kbGVyPW5ldyBoKHRoaXMpLG5ldyBpKHRoaXMpKSx0aGlzLiRibG9ja1Njcm9sbGluZz0wLHRoaXMuJHNlYXJjaD0obmV3IGwpLnNldCh7d3JhcDohMH0pLHRoaXMuc2V0U2Vzc2lvbihifHxuZXcgaygiIikpfTsoZnVuY3Rpb24oKXtkLmltcGxlbWVudCh0aGlzLG4pLHRoaXMuc2V0S2V5Ym9hcmRIYW5kbGVyPWZ1bmN0aW9uKGEpe3RoaXMua2V5QmluZGluZy5zZXRLZXlib2FyZEhhbmRsZXIoYSl9LHRoaXMuZ2V0S2V5Ym9hcmRIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2V5QmluZGluZy5nZXRLZXlib2FyZEhhbmRsZXIoKX0sdGhpcy5zZXRTZXNzaW9uPWZ1bmN0aW9uKGEpe2lmKHRoaXMuc2Vzc2lvbj09YSlyZXR1cm47aWYodGhpcy5zZXNzaW9uKXt2YXIgYj10aGlzLnNlc3Npb247dGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25Eb2N1bWVudENoYW5nZSksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZU1vZGUiLHRoaXMuJG9uQ2hhbmdlTW9kZSksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRva2VuaXplclVwZGF0ZSIsdGhpcy4kb25Ub2tlbml6ZXJVcGRhdGUpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VUYWJTaXplIix0aGlzLiRvbkNoYW5nZVRhYlNpemUpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VXcmFwTGltaXQiLHRoaXMuJG9uQ2hhbmdlV3JhcExpbWl0KSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlV3JhcE1vZGUiLHRoaXMuJG9uQ2hhbmdlV3JhcE1vZGUpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJvbkNoYW5nZUZvbGQiLHRoaXMuJG9uQ2hhbmdlRm9sZCksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZUZyb250TWFya2VyIix0aGlzLiRvbkNoYW5nZUZyb250TWFya2VyKSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlQmFja01hcmtlciIsdGhpcy4kb25DaGFuZ2VCYWNrTWFya2VyKSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlQnJlYWtwb2ludCIsdGhpcy4kb25DaGFuZ2VCcmVha3BvaW50KSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlQW5ub3RhdGlvbiIsdGhpcy4kb25DaGFuZ2VBbm5vdGF0aW9uKSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlT3ZlcndyaXRlIix0aGlzLiRvbkN1cnNvckNoYW5nZSksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZVNjcm9sbFRvcCIsdGhpcy4kb25TY3JvbGxUb3BDaGFuZ2UpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VMZWZ0VG9wIix0aGlzLiRvblNjcm9sbExlZnRDaGFuZ2UpO3ZhciBjPXRoaXMuc2Vzc2lvbi5nZXRTZWxlY3Rpb24oKTtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZUN1cnNvciIsdGhpcy4kb25DdXJzb3JDaGFuZ2UpLGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlU2VsZWN0aW9uIix0aGlzLiRvblNlbGVjdGlvbkNoYW5nZSl9dGhpcy5zZXNzaW9uPWEsdGhpcy4kb25Eb2N1bWVudENoYW5nZT10aGlzLm9uRG9jdW1lbnRDaGFuZ2UuYmluZCh0aGlzKSxhLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25Eb2N1bWVudENoYW5nZSksdGhpcy5yZW5kZXJlci5zZXRTZXNzaW9uKGEpLHRoaXMuJG9uQ2hhbmdlTW9kZT10aGlzLm9uQ2hhbmdlTW9kZS5iaW5kKHRoaXMpLGEuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlTW9kZSIsdGhpcy4kb25DaGFuZ2VNb2RlKSx0aGlzLiRvblRva2VuaXplclVwZGF0ZT10aGlzLm9uVG9rZW5pemVyVXBkYXRlLmJpbmQodGhpcyksYS5hZGRFdmVudExpc3RlbmVyKCJ0b2tlbml6ZXJVcGRhdGUiLHRoaXMuJG9uVG9rZW5pemVyVXBkYXRlKSx0aGlzLiRvbkNoYW5nZVRhYlNpemU9dGhpcy5yZW5kZXJlci51cGRhdGVUZXh0LmJpbmQodGhpcy5yZW5kZXJlciksYS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VUYWJTaXplIix0aGlzLiRvbkNoYW5nZVRhYlNpemUpLHRoaXMuJG9uQ2hhbmdlV3JhcExpbWl0PXRoaXMub25DaGFuZ2VXcmFwTGltaXQuYmluZCh0aGlzKSxhLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVdyYXBMaW1pdCIsdGhpcy4kb25DaGFuZ2VXcmFwTGltaXQpLHRoaXMuJG9uQ2hhbmdlV3JhcE1vZGU9dGhpcy5vbkNoYW5nZVdyYXBNb2RlLmJpbmQodGhpcyksYS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VXcmFwTW9kZSIsdGhpcy4kb25DaGFuZ2VXcmFwTW9kZSksdGhpcy4kb25DaGFuZ2VGb2xkPXRoaXMub25DaGFuZ2VGb2xkLmJpbmQodGhpcyksYS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VGb2xkIix0aGlzLiRvbkNoYW5nZUZvbGQpLHRoaXMuJG9uQ2hhbmdlRnJvbnRNYXJrZXI9dGhpcy5vbkNoYW5nZUZyb250TWFya2VyLmJpbmQodGhpcyksdGhpcy5zZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZUZyb250TWFya2VyIix0aGlzLiRvbkNoYW5nZUZyb250TWFya2VyKSx0aGlzLiRvbkNoYW5nZUJhY2tNYXJrZXI9dGhpcy5vbkNoYW5nZUJhY2tNYXJrZXIuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlQmFja01hcmtlciIsdGhpcy4kb25DaGFuZ2VCYWNrTWFya2VyKSx0aGlzLiRvbkNoYW5nZUJyZWFrcG9pbnQ9dGhpcy5vbkNoYW5nZUJyZWFrcG9pbnQuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlQnJlYWtwb2ludCIsdGhpcy4kb25DaGFuZ2VCcmVha3BvaW50KSx0aGlzLiRvbkNoYW5nZUFubm90YXRpb249dGhpcy5vbkNoYW5nZUFubm90YXRpb24uYmluZCh0aGlzKSx0aGlzLnNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlQW5ub3RhdGlvbiIsdGhpcy4kb25DaGFuZ2VBbm5vdGF0aW9uKSx0aGlzLiRvbkN1cnNvckNoYW5nZT10aGlzLm9uQ3Vyc29yQ2hhbmdlLmJpbmQodGhpcyksdGhpcy5zZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZU92ZXJ3cml0ZSIsdGhpcy4kb25DdXJzb3JDaGFuZ2UpLHRoaXMuJG9uU2Nyb2xsVG9wQ2hhbmdlPXRoaXMub25TY3JvbGxUb3BDaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlU2Nyb2xsVG9wIix0aGlzLiRvblNjcm9sbFRvcENoYW5nZSksdGhpcy4kb25TY3JvbGxMZWZ0Q2hhbmdlPXRoaXMub25TY3JvbGxMZWZ0Q2hhbmdlLmJpbmQodGhpcyksdGhpcy5zZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVNjcm9sbExlZnQiLHRoaXMuJG9uU2Nyb2xsTGVmdENoYW5nZSksdGhpcy5zZWxlY3Rpb249YS5nZXRTZWxlY3Rpb24oKSx0aGlzLnNlbGVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VDdXJzb3IiLHRoaXMuJG9uQ3Vyc29yQ2hhbmdlKSx0aGlzLiRvblNlbGVjdGlvbkNoYW5nZT10aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyksdGhpcy5zZWxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlU2VsZWN0aW9uIix0aGlzLiRvblNlbGVjdGlvbkNoYW5nZSksdGhpcy5vbkNoYW5nZU1vZGUoKSx0aGlzLiRibG9ja1Njcm9sbGluZys9MSx0aGlzLm9uQ3Vyc29yQ2hhbmdlKCksdGhpcy4kYmxvY2tTY3JvbGxpbmctPTEsdGhpcy5vblNjcm9sbFRvcENoYW5nZSgpLHRoaXMub25TY3JvbGxMZWZ0Q2hhbmdlKCksdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpLHRoaXMub25DaGFuZ2VGcm9udE1hcmtlcigpLHRoaXMub25DaGFuZ2VCYWNrTWFya2VyKCksdGhpcy5vbkNoYW5nZUJyZWFrcG9pbnQoKSx0aGlzLm9uQ2hhbmdlQW5ub3RhdGlvbigpLHRoaXMuc2Vzc2lvbi5nZXRVc2VXcmFwTW9kZSgpJiZ0aGlzLnJlbmRlcmVyLmFkanVzdFdyYXBMaW1pdCgpLHRoaXMucmVuZGVyZXIudXBkYXRlRnVsbCgpLHRoaXMuX2VtaXQoImNoYW5nZVNlc3Npb24iLHtzZXNzaW9uOmEsb2xkU2Vzc2lvbjpifSl9LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb259LHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zZXNzaW9uLmRvYy5zZXRWYWx1ZShhKSxiP2I9PTE/dGhpcy5uYXZpZ2F0ZUZpbGVFbmQoKTpiPT0tMSYmdGhpcy5uYXZpZ2F0ZUZpbGVTdGFydCgpOnRoaXMuc2VsZWN0QWxsKCksYX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0VmFsdWUoKX0sdGhpcy5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb259LHRoaXMucmVzaXplPWZ1bmN0aW9uKGEpe3RoaXMucmVuZGVyZXIub25SZXNpemUoYSl9LHRoaXMuc2V0VGhlbWU9ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlci5zZXRUaGVtZShhKX0sdGhpcy5nZXRUaGVtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLmdldFRoZW1lKCl9LHRoaXMuc2V0U3R5bGU9ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlci5zZXRTdHlsZShhKX0sdGhpcy51bnNldFN0eWxlPWZ1bmN0aW9uKGEpe3RoaXMucmVuZGVyZXIudW5zZXRTdHlsZShhKX0sdGhpcy5zZXRGb250U2l6ZT1mdW5jdGlvbihhKXt0aGlzLmNvbnRhaW5lci5zdHlsZS5mb250U2l6ZT1hLHRoaXMucmVuZGVyZXIudXBkYXRlRm9udFNpemUoKX0sdGhpcy4kaGlnaGxpZ2h0QnJhY2tldHM9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24uJGJyYWNrZXRIaWdobGlnaHQmJih0aGlzLnNlc3Npb24ucmVtb3ZlTWFya2VyKHRoaXMuc2Vzc2lvbi4kYnJhY2tldEhpZ2hsaWdodCksdGhpcy5zZXNzaW9uLiRicmFja2V0SGlnaGxpZ2h0PW51bGwpO2lmKHRoaXMuJGhpZ2hsaWdodFBlbmRpbmcpcmV0dXJuO3ZhciBhPXRoaXM7dGhpcy4kaGlnaGxpZ2h0UGVuZGluZz0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS4kaGlnaGxpZ2h0UGVuZGluZz0hMTt2YXIgYj1hLnNlc3Npb24uZmluZE1hdGNoaW5nQnJhY2tldChhLmdldEN1cnNvclBvc2l0aW9uKCkpO2lmKGIpe3ZhciBjPW5ldyBtKGIucm93LGIuY29sdW1uLGIucm93LGIuY29sdW1uKzEpO2Euc2Vzc2lvbi4kYnJhY2tldEhpZ2hsaWdodD1hLnNlc3Npb24uYWRkTWFya2VyKGMsImFjZV9icmFja2V0IiwidGV4dCIpfX0sMTApfSx0aGlzLmZvY3VzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50ZXh0SW5wdXQuZm9jdXMoKX0pLHRoaXMudGV4dElucHV0LmZvY3VzKCl9LHRoaXMuaXNGb2N1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dElucHV0LmlzRm9jdXNlZCgpfSx0aGlzLmJsdXI9ZnVuY3Rpb24oKXt0aGlzLnRleHRJbnB1dC5ibHVyKCl9LHRoaXMub25Gb2N1cz1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuc2hvd0N1cnNvcigpLHRoaXMucmVuZGVyZXIudmlzdWFsaXplRm9jdXMoKSx0aGlzLl9lbWl0KCJmb2N1cyIpfSx0aGlzLm9uQmx1cj1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuaGlkZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudmlzdWFsaXplQmx1cigpLHRoaXMuX2VtaXQoImJsdXIiKX0sdGhpcy4kY3Vyc29yQ2hhbmdlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci51cGRhdGVDdXJzb3IoKX0sdGhpcy5vbkRvY3VtZW50Q2hhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YSxjPWIucmFuZ2UsZDtjLnN0YXJ0LnJvdz09Yy5lbmQucm93JiZiLmFjdGlvbiE9Imluc2VydExpbmVzIiYmYi5hY3Rpb24hPSJyZW1vdmVMaW5lcyI/ZD1jLmVuZC5yb3c6ZD1JbmZpbml0eSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUxpbmVzKGMuc3RhcnQucm93LGQpLHRoaXMuX2VtaXQoImNoYW5nZSIsYSksdGhpcy4kY3Vyc29yQ2hhbmdlKCl9LHRoaXMub25Ub2tlbml6ZXJVcGRhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO3RoaXMucmVuZGVyZXIudXBkYXRlTGluZXMoYi5maXJzdCxiLmxhc3QpfSx0aGlzLm9uU2Nyb2xsVG9wQ2hhbmdlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5zY3JvbGxUb1kodGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpKX0sdGhpcy5vblNjcm9sbExlZnRDaGFuZ2U9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnNjcm9sbFRvWCh0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsTGVmdCgpKX0sdGhpcy5vbkN1cnNvckNoYW5nZT1mdW5jdGlvbigpe3RoaXMuJGN1cnNvckNoYW5nZSgpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nfHx0aGlzLnJlbmRlcmVyLnNjcm9sbEN1cnNvckludG9WaWV3KCksdGhpcy4kaGlnaGxpZ2h0QnJhY2tldHMoKSx0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lKCl9LHRoaXMuJHVwZGF0ZUhpZ2hsaWdodEFjdGl2ZUxpbmU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldFNlc3Npb24oKTthLiRoaWdobGlnaHRMaW5lTWFya2VyJiZhLnJlbW92ZU1hcmtlcihhLiRoaWdobGlnaHRMaW5lTWFya2VyKSxhLiRoaWdobGlnaHRMaW5lTWFya2VyPW51bGw7aWYodGhpcy4kaGlnaGxpZ2h0QWN0aXZlTGluZSl7dmFyIGI9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpLGM9dGhpcy5zZXNzaW9uLmdldEZvbGRMaW5lKGIucm93KTtpZih0aGlzLmdldFNlbGVjdGlvblN0eWxlKCkhPSJsaW5lInx8IXRoaXMuc2VsZWN0aW9uLmlzTXVsdGlMaW5lKCkpe3ZhciBkO2M/ZD1uZXcgbShjLnN0YXJ0LnJvdywwLGMuZW5kLnJvdysxLDApOmQ9bmV3IG0oYi5yb3csMCxiLnJvdysxLDApLGEuJGhpZ2hsaWdodExpbmVNYXJrZXI9YS5hZGRNYXJrZXIoZCwiYWNlX2FjdGl2ZV9saW5lIiwiYmFja2dyb3VuZCIpfX19LHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRTZXNzaW9uKCk7Yi4kc2VsZWN0aW9uTWFya2VyJiZiLnJlbW92ZU1hcmtlcihiLiRzZWxlY3Rpb25NYXJrZXIpLGIuJHNlbGVjdGlvbk1hcmtlcj1udWxsO2lmKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpe3ZhciBjPXRoaXMuc2VsZWN0aW9uLmdldFJhbmdlKCksZD10aGlzLmdldFNlbGVjdGlvblN0eWxlKCk7Yi4kc2VsZWN0aW9uTWFya2VyPWIuYWRkTWFya2VyKGMsImFjZV9zZWxlY3Rpb24iLGQpfWVsc2UgdGhpcy4kdXBkYXRlSGlnaGxpZ2h0QWN0aXZlTGluZSgpO3ZhciBlPXRoaXM7dGhpcy4kaGlnaGxpZ2h0U2VsZWN0ZWRXb3JkJiYhdGhpcy4kd29yZEhpZ2hsaWdodFRpbWVyJiYodGhpcy4kd29yZEhpZ2hsaWdodFRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLnNlc3Npb24uJG1vZGUuaGlnaGxpZ2h0U2VsZWN0aW9uKGUpLGUuJHdvcmRIaWdobGlnaHRUaW1lcj1udWxsfSwzMCx0aGlzKSl9LHRoaXMub25DaGFuZ2VGcm9udE1hcmtlcj1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIudXBkYXRlRnJvbnRNYXJrZXJzKCl9LHRoaXMub25DaGFuZ2VCYWNrTWFya2VyPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci51cGRhdGVCYWNrTWFya2VycygpfSx0aGlzLm9uQ2hhbmdlQnJlYWtwb2ludD1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIudXBkYXRlQnJlYWtwb2ludHMoKX0sdGhpcy5vbkNoYW5nZUFubm90YXRpb249ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnNldEFubm90YXRpb25zKHRoaXMuc2Vzc2lvbi5nZXRBbm5vdGF0aW9ucygpKX0sdGhpcy5vbkNoYW5nZU1vZGU9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZVRleHQoKX0sdGhpcy5vbkNoYW5nZVdyYXBMaW1pdD1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIudXBkYXRlRnVsbCgpfSx0aGlzLm9uQ2hhbmdlV3JhcE1vZGU9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLm9uUmVzaXplKCEwKX0sdGhpcy5vbkNoYW5nZUZvbGQ9ZnVuY3Rpb24oKXt0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lKCksdGhpcy5yZW5kZXJlci51cGRhdGVGdWxsKCl9LHRoaXMuZ2V0Q29weVRleHQ9ZnVuY3Rpb24oKXt2YXIgYT0iIjtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpfHwoYT10aGlzLnNlc3Npb24uZ2V0VGV4dFJhbmdlKHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSkpLHRoaXMuX2VtaXQoImNvcHkiLGEpLGF9LHRoaXMub25Db3B5PWZ1bmN0aW9uKCl7dGhpcy5jb21tYW5kcy5leGVjKCJjb3B5Iix0aGlzKX0sdGhpcy5vbkN1dD1mdW5jdGlvbigpe3RoaXMuY29tbWFuZHMuZXhlYygiY3V0Iix0aGlzKX0sdGhpcy5vblBhc3RlPWZ1bmN0aW9uKGEpe3RoaXMuX2VtaXQoInBhc3RlIixhKSx0aGlzLmluc2VydChhKX0sdGhpcy5pbnNlcnQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5zZXNzaW9uLGM9Yi5nZXRNb2RlKCksZD10aGlzLmdldEN1cnNvclBvc2l0aW9uKCk7aWYodGhpcy5nZXRCZWhhdmlvdXJzRW5hYmxlZCgpKXt2YXIgZT1jLnRyYW5zZm9ybUFjdGlvbihiLmdldFN0YXRlKGQucm93KSwiaW5zZXJ0aW9uIix0aGlzLGIsYSk7ZSYmKGE9ZS50ZXh0KX1hPWEucmVwbGFjZSgiCSIsdGhpcy5zZXNzaW9uLmdldFRhYlN0cmluZygpKTtpZighdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKWQ9dGhpcy5zZXNzaW9uLnJlbW92ZSh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtlbHNlIGlmKHRoaXMuc2Vzc2lvbi5nZXRPdmVyd3JpdGUoKSl7dmFyIGY9bmV3IG0uZnJvbVBvaW50cyhkLGQpO2YuZW5kLmNvbHVtbis9YS5sZW5ndGgsdGhpcy5zZXNzaW9uLnJlbW92ZShmKX10aGlzLmNsZWFyU2VsZWN0aW9uKCk7dmFyIGc9ZC5jb2x1bW4saD1iLmdldFN0YXRlKGQucm93KSxpPWMuY2hlY2tPdXRkZW50KGgsYi5nZXRMaW5lKGQucm93KSxhKSxqPWIuZ2V0TGluZShkLnJvdyksaz1jLmdldE5leHRMaW5lSW5kZW50KGgsai5zbGljZSgwLGQuY29sdW1uKSxiLmdldFRhYlN0cmluZygpKSxsPWIuaW5zZXJ0KGQsYSk7ZSYmZS5zZWxlY3Rpb24mJihlLnNlbGVjdGlvbi5sZW5ndGg9PTI/dGhpcy5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UobmV3IG0oZC5yb3csZytlLnNlbGVjdGlvblswXSxkLnJvdyxnK2Uuc2VsZWN0aW9uWzFdKSk6dGhpcy5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UobmV3IG0oZC5yb3crZS5zZWxlY3Rpb25bMF0sZS5zZWxlY3Rpb25bMV0sZC5yb3crZS5zZWxlY3Rpb25bMl0sZS5zZWxlY3Rpb25bM10pKSk7dmFyIGg9Yi5nZXRTdGF0ZShkLnJvdyk7aWYoYi5nZXREb2N1bWVudCgpLmlzTmV3TGluZShhKSl7dGhpcy5tb3ZlQ3Vyc29yVG8oZC5yb3crMSwwKTt2YXIgbj1iLmdldFRhYlNpemUoKSxvPU51bWJlci5NQVhfVkFMVUU7Zm9yKHZhciBwPWQucm93KzE7cDw9bC5yb3c7KytwKXt2YXIgcT0wO2o9Yi5nZXRMaW5lKHApO2Zvcih2YXIgcj0wO3I8ai5sZW5ndGg7KytyKWlmKGouY2hhckF0KHIpPT0iCSIpcSs9bjtlbHNle2lmKGouY2hhckF0KHIpIT0iICIpYnJlYWs7cSs9MX0vW15cc10vLnRlc3QoaikmJihvPU1hdGgubWluKHEsbykpfWZvcih2YXIgcD1kLnJvdysxO3A8PWwucm93OysrcCl7dmFyIHM9bztqPWIuZ2V0TGluZShwKTtmb3IodmFyIHI9MDtyPGoubGVuZ3RoJiZzPjA7KytyKWouY2hhckF0KHIpPT0iCSI/cy09bjpqLmNoYXJBdChyKT09IiAiJiYocy09MSk7Yi5yZW1vdmUobmV3IG0ocCwwLHAscikpfWIuaW5kZW50Um93cyhkLnJvdysxLGwucm93LGspfWkmJmMuYXV0b091dGRlbnQoaCxiLGQucm93KX0sdGhpcy5vblRleHRJbnB1dD1mdW5jdGlvbihhKXt0aGlzLmtleUJpbmRpbmcub25UZXh0SW5wdXQoYSl9LHRoaXMub25Db21tYW5kS2V5PWZ1bmN0aW9uKGEsYixjKXt0aGlzLmtleUJpbmRpbmcub25Db21tYW5kS2V5KGEsYixjKX0sdGhpcy5zZXRPdmVyd3JpdGU9ZnVuY3Rpb24oYSl7dGhpcy5zZXNzaW9uLnNldE92ZXJ3cml0ZShhKX0sdGhpcy5nZXRPdmVyd3JpdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXNzaW9uLmdldE92ZXJ3cml0ZSgpfSx0aGlzLnRvZ2dsZU92ZXJ3cml0ZT1mdW5jdGlvbigpe3RoaXMuc2Vzc2lvbi50b2dnbGVPdmVyd3JpdGUoKX0sdGhpcy5zZXRTY3JvbGxTcGVlZD1mdW5jdGlvbihhKXt0aGlzLiRtb3VzZUhhbmRsZXIuc2V0U2Nyb2xsU3BlZWQoYSl9LHRoaXMuZ2V0U2Nyb2xsU3BlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbW91c2VIYW5kbGVyLmdldFNjcm9sbFNwZWVkKCl9LHRoaXMuc2V0RHJhZ0RlbGF5PWZ1bmN0aW9uKGEpe3RoaXMuJG1vdXNlSGFuZGxlci5zZXREcmFnRGVsYXkoYSl9LHRoaXMuZ2V0RHJhZ0RlbGF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG1vdXNlSGFuZGxlci5nZXREcmFnRGVsYXkoKX0sdGhpcy4kc2VsZWN0aW9uU3R5bGU9ImxpbmUiLHRoaXMuc2V0U2VsZWN0aW9uU3R5bGU9ZnVuY3Rpb24oYSl7aWYodGhpcy4kc2VsZWN0aW9uU3R5bGU9PWEpcmV0dXJuO3RoaXMuJHNlbGVjdGlvblN0eWxlPWEsdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpLHRoaXMuX2VtaXQoImNoYW5nZVNlbGVjdGlvblN0eWxlIix7ZGF0YTphfSl9LHRoaXMuZ2V0U2VsZWN0aW9uU3R5bGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2VsZWN0aW9uU3R5bGV9LHRoaXMuJGhpZ2hsaWdodEFjdGl2ZUxpbmU9ITAsdGhpcy5zZXRIaWdobGlnaHRBY3RpdmVMaW5lPWZ1bmN0aW9uKGEpe2lmKHRoaXMuJGhpZ2hsaWdodEFjdGl2ZUxpbmU9PWEpcmV0dXJuO3RoaXMuJGhpZ2hsaWdodEFjdGl2ZUxpbmU9YSx0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lKCl9LHRoaXMuZ2V0SGlnaGxpZ2h0QWN0aXZlTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRoaWdobGlnaHRBY3RpdmVMaW5lfSx0aGlzLiRoaWdobGlnaHRHdXR0ZXJMaW5lPSEwLHRoaXMuc2V0SGlnaGxpZ2h0R3V0dGVyTGluZT1mdW5jdGlvbihhKXtpZih0aGlzLiRoaWdobGlnaHRHdXR0ZXJMaW5lPT1hKXJldHVybjt0aGlzLnJlbmRlcmVyLnNldEhpZ2hsaWdodEd1dHRlckxpbmUoYSksdGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZT1hfSx0aGlzLmdldEhpZ2hsaWdodEd1dHRlckxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZX0sdGhpcy4kaGlnaGxpZ2h0U2VsZWN0ZWRXb3JkPSEwLHRoaXMuc2V0SGlnaGxpZ2h0U2VsZWN0ZWRXb3JkPWZ1bmN0aW9uKGEpe2lmKHRoaXMuJGhpZ2hsaWdodFNlbGVjdGVkV29yZD09YSlyZXR1cm47dGhpcy4kaGlnaGxpZ2h0U2VsZWN0ZWRXb3JkPWEsYT90aGlzLnNlc3Npb24uZ2V0TW9kZSgpLmhpZ2hsaWdodFNlbGVjdGlvbih0aGlzKToodGhpcy5zZXNzaW9uLmdldE1vZGUoKS5jbGVhclNlbGVjdGlvbkhpZ2hsaWdodCh0aGlzKSx0aGlzLiR3b3JkSGlnaGxpZ2h0VGltZXImJihjbGVhclRpbWVvdXQodGhpcy4kd29yZEhpZ2hsaWdodFRpbWVyKSx0aGlzLiR3b3JkSGlnaGxpZ2h0VGltZXI9bnVsbCkpfSx0aGlzLmdldEhpZ2hsaWdodFNlbGVjdGVkV29yZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRoaWdobGlnaHRTZWxlY3RlZFdvcmR9LHRoaXMuc2V0QW5pbWF0ZWRTY3JvbGw9ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlci5zZXRBbmltYXRlZFNjcm9sbChhKX0sdGhpcy5nZXRBbmltYXRlZFNjcm9sbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLmdldEFuaW1hdGVkU2Nyb2xsKCl9LHRoaXMuc2V0U2hvd0ludmlzaWJsZXM9ZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRTaG93SW52aXNpYmxlcygpPT1hKXJldHVybjt0aGlzLnJlbmRlcmVyLnNldFNob3dJbnZpc2libGVzKGEpfSx0aGlzLmdldFNob3dJbnZpc2libGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0U2hvd0ludmlzaWJsZXMoKX0sdGhpcy5zZXRTaG93UHJpbnRNYXJnaW49ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlci5zZXRTaG93UHJpbnRNYXJnaW4oYSl9LHRoaXMuZ2V0U2hvd1ByaW50TWFyZ2luPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0U2hvd1ByaW50TWFyZ2luKCl9LHRoaXMuc2V0UHJpbnRNYXJnaW5Db2x1bW49ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlci5zZXRQcmludE1hcmdpbkNvbHVtbihhKX0sdGhpcy5nZXRQcmludE1hcmdpbkNvbHVtbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLmdldFByaW50TWFyZ2luQ29sdW1uKCl9LHRoaXMuJHJlYWRPbmx5PSExLHRoaXMuc2V0UmVhZE9ubHk9ZnVuY3Rpb24oYSl7dGhpcy4kcmVhZE9ubHk9YX0sdGhpcy5nZXRSZWFkT25seT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRyZWFkT25seX0sdGhpcy4kbW9kZUJlaGF2aW91cnM9ITAsdGhpcy5zZXRCZWhhdmlvdXJzRW5hYmxlZD1mdW5jdGlvbihhKXt0aGlzLiRtb2RlQmVoYXZpb3Vycz1hfSx0aGlzLmdldEJlaGF2aW91cnNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG1vZGVCZWhhdmlvdXJzfSx0aGlzLnNldFNob3dGb2xkV2lkZ2V0cz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLnJlbmRlcmVyLiRndXR0ZXJMYXllcjtpZihiLmdldFNob3dGb2xkV2lkZ2V0cygpPT1hKXJldHVybjt0aGlzLnJlbmRlcmVyLiRndXR0ZXJMYXllci5zZXRTaG93Rm9sZFdpZGdldHMoYSksdGhpcy4kc2hvd0ZvbGRXaWRnZXRzPWEsdGhpcy5yZW5kZXJlci51cGRhdGVGdWxsKCl9LHRoaXMuZ2V0U2hvd0ZvbGRXaWRnZXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuJGd1dHRlckxheWVyLmdldFNob3dGb2xkV2lkZ2V0cygpfSx0aGlzLnNldEZhZGVGb2xkV2lkZ2V0cz1mdW5jdGlvbihhKXt0aGlzLnJlbmRlcmVyLnNldEZhZGVGb2xkV2lkZ2V0cyhhKX0sdGhpcy5nZXRGYWRlRm9sZFdpZGdldHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRGYWRlRm9sZFdpZGdldHMoKX0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oYSl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiYoYT09ImxlZnQiP3RoaXMuc2VsZWN0aW9uLnNlbGVjdExlZnQoKTp0aGlzLnNlbGVjdGlvbi5zZWxlY3RSaWdodCgpKTt2YXIgYj10aGlzLmdldFNlbGVjdGlvblJhbmdlKCk7aWYodGhpcy5nZXRCZWhhdmlvdXJzRW5hYmxlZCgpKXt2YXIgYz10aGlzLnNlc3Npb24sZD1jLmdldFN0YXRlKGIuc3RhcnQucm93KSxlPWMuZ2V0TW9kZSgpLnRyYW5zZm9ybUFjdGlvbihkLCJkZWxldGlvbiIsdGhpcyxjLGIpO2UmJihiPWUpfXRoaXMuc2Vzc2lvbi5yZW1vdmUoYiksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlbW92ZVdvcmRSaWdodD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZFJpZ2h0KCksdGhpcy5zZXNzaW9uLnJlbW92ZSh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5yZW1vdmVXb3JkTGVmdD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZExlZnQoKSx0aGlzLnNlc3Npb24ucmVtb3ZlKHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlbW92ZVRvTGluZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3RMaW5lU3RhcnQoKSx0aGlzLnNlc3Npb24ucmVtb3ZlKHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlbW92ZVRvTGluZUVuZD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0TGluZUVuZCgpO3ZhciBhPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTthLnN0YXJ0LmNvbHVtbj09YS5lbmQuY29sdW1uJiZhLnN0YXJ0LnJvdz09YS5lbmQucm93JiYoYS5lbmQuY29sdW1uPTAsYS5lbmQucm93KyspLHRoaXMuc2Vzc2lvbi5yZW1vdmUoYSksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnNwbGl0TGluZT1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKXx8KHRoaXMuc2Vzc2lvbi5yZW1vdmUodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCkpO3ZhciBhPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oKTt0aGlzLmluc2VydCgiXG4iKSx0aGlzLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGEpfSx0aGlzLnRyYW5zcG9zZUxldHRlcnM9ZnVuY3Rpb24oKXtpZighdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKXJldHVybjt2YXIgYT10aGlzLmdldEN1cnNvclBvc2l0aW9uKCksYj1hLmNvbHVtbjtpZihiPT09MClyZXR1cm47dmFyIGM9dGhpcy5zZXNzaW9uLmdldExpbmUoYS5yb3cpLGQsZTtiPGMubGVuZ3RoPyhkPWMuY2hhckF0KGIpK2MuY2hhckF0KGItMSksZT1uZXcgbShhLnJvdyxiLTEsYS5yb3csYisxKSk6KGQ9Yy5jaGFyQXQoYi0xKStjLmNoYXJBdChiLTIpLGU9bmV3IG0oYS5yb3csYi0yLGEucm93LGIpKSx0aGlzLnNlc3Npb24ucmVwbGFjZShlLGQpfSx0aGlzLnRvTG93ZXJDYXNlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZCgpO3ZhciBiPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxjPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UoYik7dGhpcy5zZXNzaW9uLnJlcGxhY2UoYixjLnRvTG93ZXJDYXNlKCkpLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGEpfSx0aGlzLnRvVXBwZXJDYXNlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO3RoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0V29yZCgpO3ZhciBiPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxjPXRoaXMuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UoYik7dGhpcy5zZXNzaW9uLnJlcGxhY2UoYixjLnRvVXBwZXJDYXNlKCkpLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGEpfSx0aGlzLmluZGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuc2Vzc2lvbixiPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtpZighKGIuc3RhcnQucm93PGIuZW5kLnJvd3x8Yi5zdGFydC5jb2x1bW48Yi5lbmQuY29sdW1uKSl7dmFyIGQ7aWYodGhpcy5zZXNzaW9uLmdldFVzZVNvZnRUYWJzKCkpe3ZhciBmPWEuZ2V0VGFiU2l6ZSgpLGc9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpLGg9YS5kb2N1bWVudFRvU2NyZWVuQ29sdW1uKGcucm93LGcuY29sdW1uKSxpPWYtaCVmO2Q9ZS5zdHJpbmdSZXBlYXQoIiAiLGkpfWVsc2UgZD0iCSI7cmV0dXJuIHRoaXMuaW5zZXJ0KGQpfXZhciBjPXRoaXMuJGdldFNlbGVjdGVkUm93cygpO2EuaW5kZW50Um93cyhjLmZpcnN0LGMubGFzdCwiCSIpfSx0aGlzLmJsb2NrT3V0ZGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuc2Vzc2lvbi5nZXRTZWxlY3Rpb24oKTt0aGlzLnNlc3Npb24ub3V0ZGVudFJvd3MoYS5nZXRSYW5nZSgpKX0sdGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlc3Npb24uZ2V0U3RhdGUodGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpLnJvdyksYj10aGlzLiRnZXRTZWxlY3RlZFJvd3MoKTt0aGlzLnNlc3Npb24uZ2V0TW9kZSgpLnRvZ2dsZUNvbW1lbnRMaW5lcyhhLHRoaXMuc2Vzc2lvbixiLmZpcnN0LGIubGFzdCl9LHRoaXMucmVtb3ZlTGluZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRnZXRTZWxlY3RlZFJvd3MoKSxiO2EuZmlyc3Q9PT0wfHxhLmxhc3QrMTx0aGlzLnNlc3Npb24uZ2V0TGVuZ3RoKCk/Yj1uZXcgbShhLmZpcnN0LDAsYS5sYXN0KzEsMCk6Yj1uZXcgbShhLmZpcnN0LTEsdGhpcy5zZXNzaW9uLmdldExpbmUoYS5maXJzdC0xKS5sZW5ndGgsYS5sYXN0LHRoaXMuc2Vzc2lvbi5nZXRMaW5lKGEubGFzdCkubGVuZ3RoKSx0aGlzLnNlc3Npb24ucmVtb3ZlKGIpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5tb3ZlTGluZXNEb3duPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUxpbmVzKGZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc2Vzc2lvbi5tb3ZlTGluZXNEb3duKGEsYil9KX0sdGhpcy5tb3ZlTGluZXNVcD1mdW5jdGlvbigpe3RoaXMuJG1vdmVMaW5lcyhmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnNlc3Npb24ubW92ZUxpbmVzVXAoYSxiKX0pfSx0aGlzLm1vdmVUZXh0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuJHJlYWRPbmx5P251bGw6dGhpcy5zZXNzaW9uLm1vdmVUZXh0KGEsYil9LHRoaXMuY29weUxpbmVzVXA9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlTGluZXMoZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zZXNzaW9uLmR1cGxpY2F0ZUxpbmVzKGEsYiksMH0pfSx0aGlzLmNvcHlMaW5lc0Rvd249ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlTGluZXMoZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zZXNzaW9uLmR1cGxpY2F0ZUxpbmVzKGEsYil9KX0sdGhpcy4kbW92ZUxpbmVzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuJGdldFNlbGVjdGVkUm93cygpLGM9dGhpcy5zZWxlY3Rpb247aWYoIWMuaXNNdWx0aUxpbmUoKSl2YXIgZD1jLmdldFJhbmdlKCksZT1jLmlzQmFja3dhcmRzKCk7dmFyIGY9YS5jYWxsKHRoaXMsYi5maXJzdCxiLmxhc3QpO2Q/KGQuc3RhcnQucm93Kz1mLGQuZW5kLnJvdys9ZixjLnNldFNlbGVjdGlvblJhbmdlKGQsZSkpOihjLnNldFNlbGVjdGlvbkFuY2hvcihiLmxhc3QrZisxLDApLGMuJG1vdmVTZWxlY3Rpb24oZnVuY3Rpb24oKXtjLm1vdmVDdXJzb3JUbyhiLmZpcnN0K2YsMCl9KSl9LHRoaXMuJGdldFNlbGVjdGVkUm93cz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKS5jb2xsYXBzZVJvd3MoKTtyZXR1cm57Zmlyc3Q6YS5zdGFydC5yb3csbGFzdDphLmVuZC5yb3d9fSx0aGlzLm9uQ29tcG9zaXRpb25TdGFydD1mdW5jdGlvbihhKXt0aGlzLnJlbmRlcmVyLnNob3dDb21wb3NpdGlvbih0aGlzLmdldEN1cnNvclBvc2l0aW9uKCkpfSx0aGlzLm9uQ29tcG9zaXRpb25VcGRhdGU9ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlci5zZXRDb21wb3NpdGlvblRleHQoYSl9LHRoaXMub25Db21wb3NpdGlvbkVuZD1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuaGlkZUNvbXBvc2l0aW9uKCl9LHRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0Rmlyc3RWaXNpYmxlUm93KCl9LHRoaXMuZ2V0TGFzdFZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRMYXN0VmlzaWJsZVJvdygpfSx0aGlzLmlzUm93VmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gYT49dGhpcy5nZXRGaXJzdFZpc2libGVSb3coKSYmYTw9dGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpfSx0aGlzLmlzUm93RnVsbHlWaXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBhPj10aGlzLnJlbmRlcmVyLmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCkmJmE8PXRoaXMucmVuZGVyZXIuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdygpfSx0aGlzLiRnZXRWaXNpYmxlUm93Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRTY3JvbGxCb3R0b21Sb3coKS10aGlzLnJlbmRlcmVyLmdldFNjcm9sbFRvcFJvdygpKzF9LHRoaXMuJG1vdmVCeVBhZ2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnJlbmRlcmVyLGQ9dGhpcy5yZW5kZXJlci5sYXllckNvbmZpZyxlPWEqTWF0aC5mbG9vcihkLmhlaWdodC9kLmxpbmVIZWlnaHQpO3RoaXMuJGJsb2NrU2Nyb2xsaW5nKyssYj09MT90aGlzLnNlbGVjdGlvbi4kbW92ZVNlbGVjdGlvbihmdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvckJ5KGUsMCl9KTpiPT0wJiYodGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckJ5KGUsMCksdGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSksdGhpcy4kYmxvY2tTY3JvbGxpbmctLTt2YXIgZj1jLnNjcm9sbFRvcDtjLnNjcm9sbEJ5KDAsZSpkLmxpbmVIZWlnaHQpLGIhPW51bGwmJmMuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcobnVsbCwuNSksYy5hbmltYXRlU2Nyb2xsaW5nKGYpfSx0aGlzLnNlbGVjdFBhZ2VEb3duPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUJ5UGFnZSgxLCEwKX0sdGhpcy5zZWxlY3RQYWdlVXA9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlQnlQYWdlKC0xLCEwKX0sdGhpcy5nb3RvUGFnZURvd249ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlQnlQYWdlKDEsITEpfSx0aGlzLmdvdG9QYWdlVXA9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlQnlQYWdlKC0xLCExKX0sdGhpcy5zY3JvbGxQYWdlRG93bj1mdW5jdGlvbigpe3RoaXMuJG1vdmVCeVBhZ2UoMSl9LHRoaXMuc2Nyb2xsUGFnZVVwPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUJ5UGFnZSgtMSl9LHRoaXMuc2Nyb2xsVG9Sb3c9ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlci5zY3JvbGxUb1JvdyhhKX0sdGhpcy5zY3JvbGxUb0xpbmU9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5yZW5kZXJlci5zY3JvbGxUb0xpbmUoYSxiLGMsZCl9LHRoaXMuY2VudGVyU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpLGI9TWF0aC5mbG9vcihhLnN0YXJ0LnJvdysoYS5lbmQucm93LWEuc3RhcnQucm93KS8yKTt0aGlzLnJlbmRlcmVyLnNjcm9sbFRvTGluZShiLCEwKX0sdGhpcy5nZXRDdXJzb3JQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5nZXRDdXJzb3IoKX0sdGhpcy5nZXRDdXJzb3JQb3NpdGlvblNjcmVlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSl9LHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKX0sdGhpcy5zZWxlY3RBbGw9ZnVuY3Rpb24oKXt0aGlzLiRibG9ja1Njcm9sbGluZys9MSx0aGlzLnNlbGVjdGlvbi5zZWxlY3RBbGwoKSx0aGlzLiRibG9ja1Njcm9sbGluZy09MX0sdGhpcy5jbGVhclNlbGVjdGlvbj1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubW92ZUN1cnNvclRvPWZ1bmN0aW9uKGEsYil7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclRvKGEsYil9LHRoaXMubW92ZUN1cnNvclRvUG9zaXRpb249ZnVuY3Rpb24oYSl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclRvUG9zaXRpb24oYSl9LHRoaXMuanVtcFRvTWF0Y2hpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEN1cnNvclBvc2l0aW9uKCksYj10aGlzLnNlc3Npb24uZmluZE1hdGNoaW5nQnJhY2tldChhKTtifHwoYS5jb2x1bW4rPTEsYj10aGlzLnNlc3Npb24uZmluZE1hdGNoaW5nQnJhY2tldChhKSksYnx8KGEuY29sdW1uLT0yLGI9dGhpcy5zZXNzaW9uLmZpbmRNYXRjaGluZ0JyYWNrZXQoYSkpLGImJih0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5tb3ZlQ3Vyc29yVG8oYi5yb3csYi5jb2x1bW4pKX0sdGhpcy5nb3RvTGluZT1mdW5jdGlvbihhLGIsYyl7dGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSx0aGlzLnNlc3Npb24udW5mb2xkKHtyb3c6YS0xLGNvbHVtbjpifHwwfSksdGhpcy4kYmxvY2tTY3JvbGxpbmcrPTEsdGhpcy5tb3ZlQ3Vyc29yVG8oYS0xLGJ8fDApLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLT0xLHRoaXMuaXNSb3dGdWxseVZpc2libGUoYS0xKXx8dGhpcy5zY3JvbGxUb0xpbmUoYS0xLCEwLGMpfSx0aGlzLm5hdmlnYXRlVG89ZnVuY3Rpb24oYSxiKXt0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5tb3ZlQ3Vyc29yVG8oYSxiKX0sdGhpcy5uYXZpZ2F0ZVVwPWZ1bmN0aW9uKGEpe3RoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksYT1hfHwxLHRoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JCeSgtYSwwKX0sdGhpcy5uYXZpZ2F0ZURvd249ZnVuY3Rpb24oYSl7dGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxhPWF8fDEsdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckJ5KGEsMCl9LHRoaXMubmF2aWdhdGVMZWZ0PWZ1bmN0aW9uKGEpe2lmKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpe3ZhciBiPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKS5zdGFydDt0aGlzLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGIpfWVsc2V7YT1hfHwxO3doaWxlKGEtLSl0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yTGVmdCgpfXRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZVJpZ2h0PWZ1bmN0aW9uKGEpe2lmKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpe3ZhciBiPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKS5lbmQ7dGhpcy5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbihiKX1lbHNle2E9YXx8MTt3aGlsZShhLS0pdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclJpZ2h0KCl9dGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLm5hdmlnYXRlTGluZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckxpbmVTdGFydCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZUxpbmVFbmQ9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yTGluZUVuZCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZUZpbGVFbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJlbmRlcmVyLnNjcm9sbFRvcDt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRmlsZUVuZCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLnJlbmRlcmVyLmFuaW1hdGVTY3JvbGxpbmcoYSl9LHRoaXMubmF2aWdhdGVGaWxlU3RhcnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJlbmRlcmVyLnNjcm9sbFRvcDt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRmlsZVN0YXJ0KCksdGhpcy5jbGVhclNlbGVjdGlvbigpLHRoaXMucmVuZGVyZXIuYW5pbWF0ZVNjcm9sbGluZyhhKX0sdGhpcy5uYXZpZ2F0ZVdvcmRSaWdodD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JXb3JkUmlnaHQoKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubmF2aWdhdGVXb3JkTGVmdD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JXb3JkTGVmdCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGEsYil7YiYmdGhpcy4kc2VhcmNoLnNldChiKTt2YXIgYz10aGlzLiRzZWFyY2guZmluZCh0aGlzLnNlc3Npb24pLGQ9MDtyZXR1cm4gYz8odGhpcy4kdHJ5UmVwbGFjZShjLGEpJiYoZD0xKSxjIT09bnVsbCYmKHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGMpLHRoaXMucmVuZGVyZXIuc2Nyb2xsU2VsZWN0aW9uSW50b1ZpZXcoYy5zdGFydCxjLmVuZCkpLGQpOmR9LHRoaXMucmVwbGFjZUFsbD1mdW5jdGlvbihhLGIpe2ImJnRoaXMuJHNlYXJjaC5zZXQoYik7dmFyIGM9dGhpcy4kc2VhcmNoLmZpbmRBbGwodGhpcy5zZXNzaW9uKSxkPTA7aWYoIWMubGVuZ3RoKXJldHVybiBkO3RoaXMuJGJsb2NrU2Nyb2xsaW5nKz0xO3ZhciBlPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTt0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclRvKDAsMCk7Zm9yKHZhciBmPWMubGVuZ3RoLTE7Zj49MDstLWYpdGhpcy4kdHJ5UmVwbGFjZShjW2ZdLGEpJiZkKys7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGUpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLT0xLGR9LHRoaXMuJHRyeVJlcGxhY2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnNlc3Npb24uZ2V0VGV4dFJhbmdlKGEpO3JldHVybiBiPXRoaXMuJHNlYXJjaC5yZXBsYWNlKGMsYiksYiE9PW51bGw/KGEuZW5kPXRoaXMuc2Vzc2lvbi5yZXBsYWNlKGEsYiksYSk6bnVsbH0sdGhpcy5nZXRMYXN0U2VhcmNoT3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzZWFyY2guZ2V0T3B0aW9ucygpfSx0aGlzLmZpbmQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSxiPWJ8fHt9LGIubmVlZGxlPWEsdGhpcy4kc2VhcmNoLnNldChiKSx0aGlzLiRmaW5kKGIuYmFja3dhcmRzLGMpfSx0aGlzLmZpbmROZXh0PWZ1bmN0aW9uKGEsYil7YT1hfHx7fSx0aGlzLiRzZWFyY2guc2V0KGEpLHRoaXMuJGZpbmQoITEsYil9LHRoaXMuZmluZFByZXZpb3VzPWZ1bmN0aW9uKGEsYil7YT1hfHx7fSx0aGlzLiRzZWFyY2guc2V0KGEpLHRoaXMuJGZpbmQoITAsYil9LHRoaXMuJGZpbmQ9ZnVuY3Rpb24oYSxiKXt0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCl8fHRoaXMuJHNlYXJjaC5zZXQoe25lZWRsZTp0aGlzLnNlc3Npb24uZ2V0VGV4dFJhbmdlKHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSl9KSx0eXBlb2YgYSE9InVuZGVmaW5lZCImJnRoaXMuJHNlYXJjaC5zZXQoe2JhY2t3YXJkczphfSk7dmFyIGM9dGhpcy4kc2VhcmNoLmZpbmQodGhpcy5zZXNzaW9uKTtpZihjKXt0aGlzLiRibG9ja1Njcm9sbGluZys9MSx0aGlzLnNlc3Npb24udW5mb2xkKGMpLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGMpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLT0xO3ZhciBkPXRoaXMucmVuZGVyZXIuc2Nyb2xsVG9wO3RoaXMucmVuZGVyZXIuc2Nyb2xsU2VsZWN0aW9uSW50b1ZpZXcoYy5zdGFydCxjLmVuZCwuNSksdGhpcy5yZW5kZXJlci5hbmltYXRlU2Nyb2xsaW5nKGQpfX0sdGhpcy51bmRvPWZ1bmN0aW9uKCl7dGhpcy4kYmxvY2tTY3JvbGxpbmcrKyx0aGlzLnNlc3Npb24uZ2V0VW5kb01hbmFnZXIoKS51bmRvKCksdGhpcy4kYmxvY2tTY3JvbGxpbmctLSx0aGlzLnJlbmRlcmVyLnNjcm9sbEN1cnNvckludG9WaWV3KG51bGwsLjUpfSx0aGlzLnJlZG89ZnVuY3Rpb24oKXt0aGlzLiRibG9ja1Njcm9sbGluZysrLHRoaXMuc2Vzc2lvbi5nZXRVbmRvTWFuYWdlcigpLnJlZG8oKSx0aGlzLiRibG9ja1Njcm9sbGluZy0tLHRoaXMucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcobnVsbCwuNSl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuZGVzdHJveSgpfX0pLmNhbGwocS5wcm90b3R5cGUpLGIuRWRpdG9yPXF9KSxkZWZpbmUoImFjZS9saWIvbGFuZyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtiLnN0cmluZ1JldmVyc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKX0sYi5zdHJpbmdSZXBlYXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4obmV3IEFycmF5KGIrMSkpLmpvaW4oYSl9O3ZhciBkPS9eXHNccyovLGU9L1xzXHMqJC87Yi5zdHJpbmdUcmltTGVmdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGQsIiIpfSxiLnN0cmluZ1RyaW1SaWdodD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGUsIiIpfSxiLmNvcHlPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifSxiLmNvcHlBcnJheT1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYVtjXSYmdHlwZW9mIGFbY109PSJvYmplY3QiP2JbY109dGhpcy5jb3B5T2JqZWN0KGFbY10pOmJbY109YVtjXTtyZXR1cm4gYn0sYi5kZWVwQ29weT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGE7dmFyIGI9YS5jb25zdHJ1Y3RvcigpO2Zvcih2YXIgYyBpbiBhKXR5cGVvZiBhW2NdPT0ib2JqZWN0Ij9iW2NdPXRoaXMuZGVlcENvcHkoYVtjXSk6YltjXT1hW2NdO3JldHVybiBifSxiLmFycmF5VG9NYXA9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYlthW2NdXT0xO3JldHVybiBifSxiLmFycmF5UmVtb3ZlPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yzw9YS5sZW5ndGg7YysrKWI9PT1hW2NdJiZhLnNwbGljZShjLDEpfSxiLmVzY2FwZVJlZ0V4cD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oWy4qKz9eJHt9KCl8W1xdXC9cXF0pL2csIlxcJDEiKX0sYi5kZWZlcnJlZENhbGw9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCxjPWZ1bmN0aW9uKCl7Yj1udWxsLGEoKX0sZD1mdW5jdGlvbihhKXtyZXR1cm4gZC5jYW5jZWwoKSxiPXNldFRpbWVvdXQoYyxhfHwwKSxkfTtyZXR1cm4gZC5zY2hlZHVsZT1kLGQuY2FsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbCgpLGEoKSxkfSxkLmNhbmNlbD1mdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQoYiksYj1udWxsLGR9LGR9fSksZGVmaW5lKCJhY2Uva2V5Ym9hcmQvdGV4dGlucHV0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9ldmVudCIsImFjZS9saWIvdXNlcmFnZW50IiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL2V2ZW50IiksZT1hKCIuLi9saWIvdXNlcmFnZW50IiksZj1hKCIuLi9saWIvZG9tIiksZz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGwoYSl7dHJ5e2E/KGMudmFsdWU9ZyxjLnNlbGVjdGlvblN0YXJ0PTAsYy5zZWxlY3Rpb25FbmQ9MSk6Yy5zZWxlY3QoKX1jYXRjaChiKXt9fWZ1bmN0aW9uIG0oYSl7aWYoIWkpe3ZhciBkPWF8fGMudmFsdWU7ZCYmKGQubGVuZ3RoPjEmJihkLmNoYXJBdCgwKT09Zz9kPWQuc3Vic3RyKDEpOmQuY2hhckF0KGQubGVuZ3RoLTEpPT1nJiYoZD1kLnNsaWNlKDAsLTEpKSksZCYmZCE9ZyYmKGo/Yi5vblBhc3RlKGQpOmIub25UZXh0SW5wdXQoZCkpKX1pPSExLGo9ITEsbCghMCl9ZnVuY3Rpb24gdSgpe3JldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09Y31mdW5jdGlvbiB2KCl7c2V0VGltZW91dChmdW5jdGlvbigpe2smJihjLnN0eWxlLmNzc1RleHQ9ayxrPSIiKSxtKCksYi5yZW5kZXJlci4ka2VlcFRleHRBcmVhQXRDdXJzb3I9PW51bGwmJihiLnJlbmRlcmVyLiRrZWVwVGV4dEFyZWFBdEN1cnNvcj0hMCxiLnJlbmRlcmVyLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpKX0sMCl9dmFyIGM9Zi5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2UuaXNUb3VjaFBhZCYmYy5zZXRBdHRyaWJ1dGUoIngtcGFsbS1kaXNhYmxlLWF1dG8tY2FwIiwhMCksYy5zZXRBdHRyaWJ1dGUoIndyYXAiLCJvZmYiKSxjLnN0eWxlLnRvcD0iLTJlbSIsYS5pbnNlcnRCZWZvcmUoYyxhLmZpcnN0Q2hpbGQpO3ZhciBnPWUuaXNJRT8iASI6IgEiO20oKTt2YXIgaD0hMSxpPSExLGo9ITEsaz0iIixuPWZ1bmN0aW9uKGEpe2h8fG0oYS5kYXRhKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aHx8bCghMCl9LDApfSxvPWZ1bmN0aW9uKGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtofHxtKCl9LDApfSxwPWZ1bmN0aW9uKGEpe2g9ITAsYi5vbkNvbXBvc2l0aW9uU3RhcnQoKSxzZXRUaW1lb3V0KHEsMCl9LHE9ZnVuY3Rpb24oKXtpZighaClyZXR1cm47Yi5vbkNvbXBvc2l0aW9uVXBkYXRlKGMudmFsdWUpfSxyPWZ1bmN0aW9uKGEpe2g9ITEsYi5vbkNvbXBvc2l0aW9uRW5kKCl9LHM9ZnVuY3Rpb24oYSl7aT0hMDt2YXIgZD1iLmdldENvcHlUZXh0KCk7ZD9jLnZhbHVlPWQ6YS5wcmV2ZW50RGVmYXVsdCgpLGwoKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bSgpfSwwKX0sdD1mdW5jdGlvbihhKXtpPSEwO3ZhciBkPWIuZ2V0Q29weVRleHQoKTtkPyhjLnZhbHVlPWQsYi5vbkN1dCgpKTphLnByZXZlbnREZWZhdWx0KCksbCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXttKCl9LDApfTtkLmFkZENvbW1hbmRLZXlMaXN0ZW5lcihjLGIub25Db21tYW5kS2V5LmJpbmQoYikpLGQuYWRkTGlzdGVuZXIoYywiaW5wdXQiLGUuaXNJRT9vOm4pLGQuYWRkTGlzdGVuZXIoYywicGFzdGUiLGZ1bmN0aW9uKGEpe2o9ITAsYS5jbGlwYm9hcmREYXRhJiZhLmNsaXBib2FyZERhdGEuZ2V0RGF0YT8obShhLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpKSxhLnByZXZlbnREZWZhdWx0KCkpOm8oKX0pLCJvbmJlZm9yZWNvcHkiaW4gYyYmdHlwZW9mIGNsaXBib2FyZERhdGEhPSJ1bmRlZmluZWQiPyhkLmFkZExpc3RlbmVyKGMsImJlZm9yZWNvcHkiLGZ1bmN0aW9uKGEpe2lmKGspcmV0dXJuO3ZhciBjPWIuZ2V0Q29weVRleHQoKTtjP2NsaXBib2FyZERhdGEuc2V0RGF0YSgiVGV4dCIsYyk6YS5wcmV2ZW50RGVmYXVsdCgpfSksZC5hZGRMaXN0ZW5lcihhLCJrZXlkb3duIixmdW5jdGlvbihhKXtpZihhLmN0cmxLZXkmJmEua2V5Q29kZT09ODgpe3ZhciBjPWIuZ2V0Q29weVRleHQoKTtjJiYoY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJUZXh0IixjKSxiLm9uQ3V0KCkpLGQucHJldmVudERlZmF1bHQoYSl9fSksZC5hZGRMaXN0ZW5lcihjLCJjdXQiLHQpKTplLmlzT3BlcmE/ZC5hZGRMaXN0ZW5lcihhLCJrZXlkb3duIixmdW5jdGlvbihhKXtpZihlLmlzTWFjJiYhYS5tZXRhS2V5fHwhYS5jdHJsS2V5KXJldHVybjtpZihhLmtleUNvZGU9PTg4fHxhLmtleUNvZGU9PTY3KXt2YXIgZD1iLmdldENvcHlUZXh0KCk7ZCYmKGMudmFsdWU9ZCxjLnNlbGVjdCgpLGEua2V5Q29kZT09ODgmJmIub25DdXQoKSl9fSk6KGQuYWRkTGlzdGVuZXIoYywiY29weSIscyksZC5hZGRMaXN0ZW5lcihjLCJjdXQiLHQpKSxkLmFkZExpc3RlbmVyKGMsImNvbXBvc2l0aW9uc3RhcnQiLHApLGUuaXNHZWNrbyYmZC5hZGRMaXN0ZW5lcihjLCJ0ZXh0IixxKSxlLmlzV2ViS2l0JiZkLmFkZExpc3RlbmVyKGMsImtleXVwIixxKSxkLmFkZExpc3RlbmVyKGMsImNvbXBvc2l0aW9uZW5kIixyKSxkLmFkZExpc3RlbmVyKGMsImJsdXIiLGZ1bmN0aW9uKCl7Yi5vbkJsdXIoKX0pLGQuYWRkTGlzdGVuZXIoYywiZm9jdXMiLGZ1bmN0aW9uKCl7Yi5vbkZvY3VzKCksbCgpfSksdGhpcy5mb2N1cz1mdW5jdGlvbigpe2Iub25Gb2N1cygpLGwoKSxjLmZvY3VzKCl9LHRoaXMuYmx1cj1mdW5jdGlvbigpe2MuYmx1cigpfSx0aGlzLmlzRm9jdXNlZD11LHRoaXMuZ2V0RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiBjfSx0aGlzLm9uQ29udGV4dE1lbnU9ZnVuY3Rpb24oYSl7a3x8KGs9Yy5zdHlsZS5jc3NUZXh0KSxjLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmZpeGVkOyB6LWluZGV4OjEwMDAwMDtsZWZ0OiIrKGEuY2xpZW50WC0yKSsicHg7IHRvcDoiKyhhLmNsaWVudFktMikrInB4OyIsYi5zZWxlY3Rpb24uaXNFbXB0eSgpJiYoYy52YWx1ZT0iIik7aWYoYS50eXBlIT0ibW91c2Vkb3duIilyZXR1cm47Yi5yZW5kZXJlci4ka2VlcFRleHRBcmVhQXRDdXJzb3ImJihiLnJlbmRlcmVyLiRrZWVwVGV4dEFyZWFBdEN1cnNvcj1udWxsKSxkLmNhcHR1cmUoYi5jb250YWluZXIsZnVuY3Rpb24oYSl7Yy5zdHlsZS5sZWZ0PWEuY2xpZW50WC0yKyJweCIsYy5zdHlsZS50b3A9YS5jbGllbnRZLTIrInB4In0sdil9LHRoaXMub25Db250ZXh0TWVudUNsb3NlPXYsZS5pc0dlY2tvfHxkLmFkZExpc3RlbmVyKGMsImNvbnRleHRtZW51IixmdW5jdGlvbihhKXtiLnRleHRJbnB1dC5vbkNvbnRleHRNZW51KGEpLHYoKX0pfTtiLlRleHRJbnB1dD1nfSksZGVmaW5lKCJhY2UvbW91c2UvbW91c2VfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZXZlbnQiLCJhY2UvbW91c2UvZGVmYXVsdF9oYW5kbGVycyIsImFjZS9tb3VzZS9kZWZhdWx0X2d1dHRlcl9oYW5kbGVyIiwiYWNlL21vdXNlL21vdXNlX2V2ZW50Il0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9ldmVudCIpLGU9YSgiLi9kZWZhdWx0X2hhbmRsZXJzIikuRGVmYXVsdEhhbmRsZXJzLGY9YSgiLi9kZWZhdWx0X2d1dHRlcl9oYW5kbGVyIikuR3V0dGVySGFuZGxlcixnPWEoIi4vbW91c2VfZXZlbnQiKS5Nb3VzZUV2ZW50LGg9ZnVuY3Rpb24oYSl7dGhpcy5lZGl0b3I9YSxuZXcgZSh0aGlzKSxuZXcgZih0aGlzKSxkLmFkZExpc3RlbmVyKGEuY29udGFpbmVyLCJtb3VzZWRvd24iLGZ1bmN0aW9uKGIpe3JldHVybiBhLmZvY3VzKCksZC5wcmV2ZW50RGVmYXVsdChiKX0pO3ZhciBiPWEucmVuZGVyZXIuZ2V0TW91c2VFdmVudFRhcmdldCgpO2QuYWRkTGlzdGVuZXIoYiwibW91c2Vkb3duIix0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsIm1vdXNlZG93biIpKSxkLmFkZExpc3RlbmVyKGIsImNsaWNrIix0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsImNsaWNrIikpLGQuYWRkTGlzdGVuZXIoYiwibW91c2Vtb3ZlIix0aGlzLm9uTW91c2VNb3ZlLmJpbmQodGhpcywibW91c2Vtb3ZlIikpLGQuYWRkTXVsdGlNb3VzZURvd25MaXN0ZW5lcihiLDAsMiw1MDAsdGhpcy5vbk1vdXNlRXZlbnQuYmluZCh0aGlzLCJkYmxjbGljayIpKSxkLmFkZE11bHRpTW91c2VEb3duTGlzdGVuZXIoYiwwLDMsNjAwLHRoaXMub25Nb3VzZUV2ZW50LmJpbmQodGhpcywidHJpcGxlY2xpY2siKSksZC5hZGRNdWx0aU1vdXNlRG93bkxpc3RlbmVyKGIsMCw0LDYwMCx0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsInF1YWRjbGljayIpKSxkLmFkZE1vdXNlV2hlZWxMaXN0ZW5lcihhLmNvbnRhaW5lcix0aGlzLm9uTW91c2VXaGVlbC5iaW5kKHRoaXMsIm1vdXNld2hlZWwiKSk7dmFyIGM9YS5yZW5kZXJlci4kZ3V0dGVyO2QuYWRkTGlzdGVuZXIoYywibW91c2Vkb3duIix0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsImd1dHRlcm1vdXNlZG93biIpKSxkLmFkZExpc3RlbmVyKGMsImNsaWNrIix0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsImd1dHRlcmNsaWNrIikpLGQuYWRkTGlzdGVuZXIoYywiZGJsY2xpY2siLHRoaXMub25Nb3VzZUV2ZW50LmJpbmQodGhpcywiZ3V0dGVyZGJsY2xpY2siKSksZC5hZGRMaXN0ZW5lcihjLCJtb3VzZW1vdmUiLHRoaXMub25Nb3VzZU1vdmUuYmluZCh0aGlzLCJndXR0ZXIiKSl9OyhmdW5jdGlvbigpe3RoaXMuJHNjcm9sbFNwZWVkPTEsdGhpcy5zZXRTY3JvbGxTcGVlZD1mdW5jdGlvbihhKXt0aGlzLiRzY3JvbGxTcGVlZD1hfSx0aGlzLmdldFNjcm9sbFNwZWVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNjcm9sbFNwZWVkfSx0aGlzLm9uTW91c2VFdmVudD1mdW5jdGlvbihhLGIpe3RoaXMuZWRpdG9yLl9lbWl0KGEsbmV3IGcoYix0aGlzLmVkaXRvcikpfSx0aGlzLiRkcmFnRGVsYXk9MjUwLHRoaXMuc2V0RHJhZ0RlbGF5PWZ1bmN0aW9uKGEpe3RoaXMuJGRyYWdEZWxheT1hfSx0aGlzLmdldERyYWdEZWxheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkcmFnRGVsYXl9LHRoaXMub25Nb3VzZU1vdmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmVkaXRvci5fZXZlbnRSZWdpc3RyeSYmdGhpcy5lZGl0b3IuX2V2ZW50UmVnaXN0cnkubW91c2Vtb3ZlO2lmKCFjfHwhYy5sZW5ndGgpcmV0dXJuO3RoaXMuZWRpdG9yLl9lbWl0KGEsbmV3IGcoYix0aGlzLmVkaXRvcikpfSx0aGlzLm9uTW91c2VXaGVlbD1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBnKGIsdGhpcy5lZGl0b3IpO2Muc3BlZWQ9dGhpcy4kc2Nyb2xsU3BlZWQqMixjLndoZWVsWD1iLndoZWVsWCxjLndoZWVsWT1iLndoZWVsWSx0aGlzLmVkaXRvci5fZW1pdChhLGMpfSx0aGlzLnNldFN0YXRlPWZ1bmN0aW9uKGEpe3RoaXMuc3RhdGU9YX0sdGhpcy5jYXB0dXJlTW91c2U9ZnVuY3Rpb24oYSxiKXtiJiZ0aGlzLnNldFN0YXRlKGIpLHRoaXMueD1hLngsdGhpcy55PWEueTt2YXIgYz10aGlzLmVkaXRvci5yZW5kZXJlci4ka2VlcFRleHRBcmVhQXRDdXJzb3I7dGhpcy5lZGl0b3IucmVuZGVyZXIuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yPSExO3ZhciBlPXRoaXMsZj1mdW5jdGlvbihhKXtlLng9YS5jbGllbnRYLGUueT1hLmNsaWVudFl9LGc9ZnVuY3Rpb24oYSl7Y2xlYXJJbnRlcnZhbChpKSxlW2Uuc3RhdGUrIkVuZCJdJiZlW2Uuc3RhdGUrIkVuZCJdKGEpLGUuJGNsaWNrU2VsZWN0aW9uPW51bGwsZS5lZGl0b3IucmVuZGVyZXIuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yPWMsZS5lZGl0b3IucmVuZGVyZXIuJG1vdmVUZXh0QXJlYVRvQ3Vyc29yKCl9LGg9ZnVuY3Rpb24oKXtlW2Uuc3RhdGVdJiZlW2Uuc3RhdGVdKCl9O2QuY2FwdHVyZSh0aGlzLmVkaXRvci5jb250YWluZXIsZixnKTt2YXIgaT1zZXRJbnRlcnZhbChoLDIwKTthLnByZXZlbnREZWZhdWx0KCl9fSkuY2FsbChoLnByb3RvdHlwZSksYi5Nb3VzZUhhbmRsZXI9aH0pLGRlZmluZSgiYWNlL21vdXNlL2RlZmF1bHRfaGFuZGxlcnMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvdXNlcmFnZW50Il0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7YS4kY2xpY2tTZWxlY3Rpb249bnVsbDt2YXIgYj1hLmVkaXRvcjtiLnNldERlZmF1bHRIYW5kbGVyKCJtb3VzZWRvd24iLHRoaXMub25Nb3VzZURvd24uYmluZChhKSksYi5zZXREZWZhdWx0SGFuZGxlcigiZGJsY2xpY2siLHRoaXMub25Eb3VibGVDbGljay5iaW5kKGEpKSxiLnNldERlZmF1bHRIYW5kbGVyKCJ0cmlwbGVjbGljayIsdGhpcy5vblRyaXBsZUNsaWNrLmJpbmQoYSkpLGIuc2V0RGVmYXVsdEhhbmRsZXIoInF1YWRjbGljayIsdGhpcy5vblF1YWRDbGljay5iaW5kKGEpKSxiLnNldERlZmF1bHRIYW5kbGVyKCJtb3VzZXdoZWVsIix0aGlzLm9uU2Nyb2xsLmJpbmQoYSkpO3ZhciBjPVsic2VsZWN0Iiwic3RhcnRTZWxlY3QiLCJkcmFnIiwiZHJhZ0VuZCIsImRyYWdXYWl0IiwiZHJhZ1dhaXRFbmQiLCJzdGFydERyYWciXTtjLmZvckVhY2goZnVuY3Rpb24oYil7YVtiXT10aGlzW2JdfSx0aGlzKSxhLnNlbGVjdEJ5TGluZXM9dGhpcy5leHRlbmRTZWxlY3Rpb25CeS5iaW5kKGEsImdldExpbmVSYW5nZSIpLGEuc2VsZWN0QnlXb3Jkcz10aGlzLmV4dGVuZFNlbGVjdGlvbkJ5LmJpbmQoYSwiZ2V0V29yZFJhbmdlIiksYS4kZm9jdXNXYWl0VGltb3V0PTI1MH1mdW5jdGlvbiBoKGEsYixjLGQpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coYy1hLDIpK01hdGgucG93KGQtYiwyKSl9dmFyIGQ9YSgiLi4vbGliL2RvbSIpLGU9YSgiLi4vbGliL3VzZXJhZ2VudCIpLGY9NTsoZnVuY3Rpb24oKXt0aGlzLm9uTW91c2VEb3duPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5TZWxlY3Rpb24oKSxjPWEuZ2V0RG9jdW1lbnRQb3NpdGlvbigpO3RoaXMubW91c2Vkb3duRXZlbnQ9YTt2YXIgZD10aGlzLmVkaXRvcixlPXRoaXMsZj1hLmdldEJ1dHRvbigpO2lmKGYhPT0wKXt2YXIgZz1kLmdldFNlbGVjdGlvblJhbmdlKCksaD1nLmlzRW1wdHkoKTtyZXR1cm4gaCYmKGQubW92ZUN1cnNvclRvUG9zaXRpb24oYyksZC5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSksZC50ZXh0SW5wdXQub25Db250ZXh0TWVudShhLmRvbUV2ZW50KSxhLnN0b3AoKX1pZihiJiYhZC5pc0ZvY3VzZWQoKSl7ZC5mb2N1cygpO2lmKHRoaXMuJGZvY3VzV2FpdFRpbW91dCYmIXRoaXMuJGNsaWNrU2VsZWN0aW9uKXJldHVybn1pZighYnx8dGhpcy4kY2xpY2tTZWxlY3Rpb258fGEuZ2V0U2hpZnRLZXkoKSl0aGlzLnN0YXJ0U2VsZWN0KGMpO2Vsc2UgaWYoYil7dmFyIGk9YS5kb21FdmVudDtpLmN0cmxLZXl8fGkuYWx0S2V5P3RoaXMuc3RhcnREcmFnKCk6KHRoaXMubW91c2Vkb3duRXZlbnQudGltZT0obmV3IERhdGUpLmdldFRpbWUoKSx0aGlzLnNldFN0YXRlKCJkcmFnV2FpdCIpKX1yZXR1cm4gdGhpcy5jYXB0dXJlTW91c2UoYSksYS5wcmV2ZW50RGVmYXVsdCgpfSx0aGlzLnN0YXJ0U2VsZWN0PWZ1bmN0aW9uKGEpe2E9YXx8dGhpcy5lZGl0b3IucmVuZGVyZXIuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXModGhpcy54LHRoaXMueSksdGhpcy5tb3VzZWRvd25FdmVudC5nZXRTaGlmdEtleSgpP3RoaXMuZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3RUb1Bvc2l0aW9uKGEpOnRoaXMuJGNsaWNrU2VsZWN0aW9ufHwodGhpcy5lZGl0b3IubW92ZUN1cnNvclRvUG9zaXRpb24oYSksdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCkpLHRoaXMuc2V0U3RhdGUoInNlbGVjdCIpfSx0aGlzLnNlbGVjdD1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy5lZGl0b3IsYz1iLnJlbmRlcmVyLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzKHRoaXMueCx0aGlzLnkpO2lmKHRoaXMuJGNsaWNrU2VsZWN0aW9uKXt2YXIgZD10aGlzLiRjbGlja1NlbGVjdGlvbi5jb21wYXJlUG9pbnQoYyk7ZD09LTE/YT10aGlzLiRjbGlja1NlbGVjdGlvbi5lbmQ6ZD09MT9hPXRoaXMuJGNsaWNrU2VsZWN0aW9uLnN0YXJ0OihjPXRoaXMuJGNsaWNrU2VsZWN0aW9uLmVuZCxhPXRoaXMuJGNsaWNrU2VsZWN0aW9uLnN0YXJ0KSxiLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25BbmNob3IoYS5yb3csYS5jb2x1bW4pfWIuc2VsZWN0aW9uLnNlbGVjdFRvUG9zaXRpb24oYyksYi5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldygpfSx0aGlzLmV4dGVuZFNlbGVjdGlvbkJ5PWZ1bmN0aW9uKGEpe3ZhciBiLGM9dGhpcy5lZGl0b3IsZD1jLnJlbmRlcmVyLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzKHRoaXMueCx0aGlzLnkpLGU9Yy5zZWxlY3Rpb25bYV0oZC5yb3csZC5jb2x1bW4pO2lmKHRoaXMuJGNsaWNrU2VsZWN0aW9uKXt2YXIgZj10aGlzLiRjbGlja1NlbGVjdGlvbi5jb21wYXJlUG9pbnQoZS5zdGFydCksZz10aGlzLiRjbGlja1NlbGVjdGlvbi5jb21wYXJlUG9pbnQoZS5lbmQpO2Y9PS0xJiZnPD0wPyhiPXRoaXMuJGNsaWNrU2VsZWN0aW9uLmVuZCxkPWUuc3RhcnQpOmc9PTEmJmY+PTA/KGI9dGhpcy4kY2xpY2tTZWxlY3Rpb24uc3RhcnQsZD1lLmVuZCk6Zj09LTEmJmc9PTE/KGQ9ZS5lbmQsYj1lLnN0YXJ0KTooZD10aGlzLiRjbGlja1NlbGVjdGlvbi5lbmQsYj10aGlzLiRjbGlja1NlbGVjdGlvbi5zdGFydCksYy5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uQW5jaG9yKGIucm93LGIuY29sdW1uKX1jLnNlbGVjdGlvbi5zZWxlY3RUb1Bvc2l0aW9uKGQpLGMucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKX0sdGhpcy5zdGFydERyYWc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVkaXRvcjt0aGlzLnNldFN0YXRlKCJkcmFnIiksdGhpcy5kcmFnUmFuZ2U9YS5nZXRTZWxlY3Rpb25SYW5nZSgpO3ZhciBiPWEuZ2V0U2VsZWN0aW9uU3R5bGUoKTt0aGlzLmRyYWdTZWxlY3Rpb25NYXJrZXI9YS5zZXNzaW9uLmFkZE1hcmtlcih0aGlzLmRyYWdSYW5nZSwiYWNlX3NlbGVjdGlvbiIsYiksYS5jbGVhclNlbGVjdGlvbigpLGQuYWRkQ3NzQ2xhc3MoYS5jb250YWluZXIsImFjZV9kcmFnZ2luZyIpLHRoaXMuJGRyYWdLZXliaW5kaW5nfHwodGhpcy4kZHJhZ0tleWJpbmRpbmc9e2hhbmRsZUtleWJvYXJkOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGM9PSJlc2MiKXJldHVybntjb21tYW5kOnRoaXMuY29tbWFuZH19LGNvbW1hbmQ6e2V4ZWM6ZnVuY3Rpb24oYSl7dmFyIGI9YS4kbW91c2VIYW5kbGVyO2IuZHJhZ0N1cnNvcj1udWxsLGIuZHJhZ0VuZCgpLGIuc3RhcnRTZWxlY3QoKX19fSksYS5rZXlCaW5kaW5nLmFkZEtleWJvYXJkSGFuZGxlcih0aGlzLiRkcmFnS2V5YmluZGluZyl9LHRoaXMuZHJhZ1dhaXQ9ZnVuY3Rpb24oKXt2YXIgYT1oKHRoaXMubW91c2Vkb3duRXZlbnQueCx0aGlzLm1vdXNlZG93bkV2ZW50LnksdGhpcy54LHRoaXMueSksYj0obmV3IERhdGUpLmdldFRpbWUoKSxjPXRoaXMuZWRpdG9yO2E+Zj90aGlzLnN0YXJ0U2VsZWN0KCk6Yi10aGlzLm1vdXNlZG93bkV2ZW50LnRpbWU+Yy5nZXREcmFnRGVsYXkoKSYmdGhpcy5zdGFydERyYWcoKX0sdGhpcy5kcmFnV2FpdEVuZD1mdW5jdGlvbihhKXt0aGlzLm1vdXNlZG93bkV2ZW50LmRvbUV2ZW50PWEsdGhpcy5zdGFydFNlbGVjdCgpfSx0aGlzLmRyYWc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVkaXRvcjt0aGlzLmRyYWdDdXJzb3I9YS5yZW5kZXJlci5zY3JlZW5Ub1RleHRDb29yZGluYXRlcyh0aGlzLngsdGhpcy55KSxhLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKHRoaXMuZHJhZ0N1cnNvciksYS5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldygpfSx0aGlzLmRyYWdFbmQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lZGl0b3IsYz10aGlzLmRyYWdDdXJzb3IsZT10aGlzLmRyYWdSYW5nZTtkLnJlbW92ZUNzc0NsYXNzKGIuY29udGFpbmVyLCJhY2VfZHJhZ2dpbmciKSxiLnNlc3Npb24ucmVtb3ZlTWFya2VyKHRoaXMuZHJhZ1NlbGVjdGlvbk1hcmtlciksYi5rZXlCaW5kaW5nLnJlbW92ZUtleWJvYXJkSGFuZGxlcih0aGlzLiRkcmFnS2V5YmluZGluZyk7aWYoIWMpcmV0dXJuO2IuY2xlYXJTZWxlY3Rpb24oKTtpZihhJiYoYS5jdHJsS2V5fHxhLmFsdEtleSkpe3ZhciBmPWIuc2Vzc2lvbixnPWU7Zy5lbmQ9Zi5pbnNlcnQoYyxmLmdldFRleHRSYW5nZShlKSksZy5zdGFydD1jfWVsc2V7aWYoZS5jb250YWlucyhjLnJvdyxjLmNvbHVtbikpcmV0dXJuO3ZhciBnPWIubW92ZVRleHQoZSxjKX1pZighZylyZXR1cm47Yi5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UoZyl9LHRoaXMub25Eb3VibGVDbGljaz1mdW5jdGlvbihhKXt2YXIgYj1hLmdldERvY3VtZW50UG9zaXRpb24oKSxjPXRoaXMuZWRpdG9yO3RoaXMuc2V0U3RhdGUoInNlbGVjdEJ5V29yZHMiKSxjLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGIpLGMuc2VsZWN0aW9uLnNlbGVjdFdvcmQoKSx0aGlzLiRjbGlja1NlbGVjdGlvbj1jLmdldFNlbGVjdGlvblJhbmdlKCl9LHRoaXMub25UcmlwbGVDbGljaz1mdW5jdGlvbihhKXt2YXIgYj1hLmdldERvY3VtZW50UG9zaXRpb24oKSxjPXRoaXMuZWRpdG9yO3RoaXMuc2V0U3RhdGUoInNlbGVjdEJ5TGluZXMiKSxjLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGIpLGMuc2VsZWN0aW9uLnNlbGVjdExpbmUoKSx0aGlzLiRjbGlja1NlbGVjdGlvbj1jLmdldFNlbGVjdGlvblJhbmdlKCl9LHRoaXMub25RdWFkQ2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lZGl0b3I7Yi5zZWxlY3RBbGwoKSx0aGlzLiRjbGlja1NlbGVjdGlvbj1iLmdldFNlbGVjdGlvblJhbmdlKCksdGhpcy5zZXRTdGF0ZSgibnVsbCIpfSx0aGlzLm9uU2Nyb2xsPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZWRpdG9yLGM9Yi5yZW5kZXJlci5pc1Njcm9sbGFibGVCeShhLndoZWVsWCphLnNwZWVkLGEud2hlZWxZKmEuc3BlZWQpO2lmKGMpdGhpcy4kcGFzc1Njcm9sbEV2ZW50PSExO2Vsc2V7aWYodGhpcy4kcGFzc1Njcm9sbEV2ZW50KXJldHVybjtpZighdGhpcy4kc2Nyb2xsU3RvcFRpbWVvdXQpe3ZhciBkPXRoaXM7dGhpcy4kc2Nyb2xsU3RvcFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2QuJHBhc3NTY3JvbGxFdmVudD0hMCxkLiRzY3JvbGxTdG9wVGltZW91dD1udWxsfSwyMDApfX1yZXR1cm4gYi5yZW5kZXJlci5zY3JvbGxCeShhLndoZWVsWCphLnNwZWVkLGEud2hlZWxZKmEuc3BlZWQpLGEucHJldmVudERlZmF1bHQoKX19KS5jYWxsKGcucHJvdG90eXBlKSxiLkRlZmF1bHRIYW5kbGVycz1nfSksZGVmaW5lKCJhY2UvbW91c2UvZGVmYXVsdF9ndXR0ZXJfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGUoYSl7dmFyIGI9YS5lZGl0b3I7YS5lZGl0b3Iuc2V0RGVmYXVsdEhhbmRsZXIoImd1dHRlcm1vdXNlZG93biIsZnVuY3Rpb24oYyl7dmFyIGU9Yy5kb21FdmVudC50YXJnZXQ7aWYoZS5jbGFzc05hbWUuaW5kZXhPZigiYWNlX2d1dHRlci1jZWxsIik9PS0xKXJldHVybjtpZighYi5pc0ZvY3VzZWQoKSlyZXR1cm47dmFyIGY9cGFyc2VJbnQoZC5jb21wdXRlZFN0eWxlKGUpLnBhZGRpbmdMZWZ0KTtpZihjLng8ZitlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQrMSlyZXR1cm47dmFyIGc9Yy5nZXREb2N1bWVudFBvc2l0aW9uKCkucm93LGg9Yi5zZXNzaW9uLnNlbGVjdGlvbjtyZXR1cm4gYy5nZXRTaGlmdEtleSgpP2guc2VsZWN0VG8oZywwKTooaC5tb3ZlQ3Vyc29yVG8oZywwKSxoLnNlbGVjdExpbmUoKSxhLiRjbGlja1NlbGVjdGlvbj1oLmdldFJhbmdlKCkpLGEuY2FwdHVyZU1vdXNlKGMsInNlbGVjdEJ5TGluZXMiKSxjLnByZXZlbnREZWZhdWx0KCl9KX12YXIgZD1hKCIuLi9saWIvZG9tIik7Yi5HdXR0ZXJIYW5kbGVyPWV9KSxkZWZpbmUoImFjZS9tb3VzZS9tb3VzZV9ldmVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZXZlbnQiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL2V2ZW50IiksZT1iLk1vdXNlRXZlbnQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmRvbUV2ZW50PWEsdGhpcy5lZGl0b3I9Yix0aGlzLng9dGhpcy5jbGllbnRYPWEuY2xpZW50WCx0aGlzLnk9dGhpcy5jbGllbnRZPWEuY2xpZW50WSx0aGlzLiRwb3M9bnVsbCx0aGlzLiRpblNlbGVjdGlvbj1udWxsLHRoaXMucHJvcGFnYXRpb25TdG9wcGVkPSExLHRoaXMuZGVmYXVsdFByZXZlbnRlZD0hMX07KGZ1bmN0aW9uKCl7dGhpcy5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtkLnN0b3BQcm9wYWdhdGlvbih0aGlzLmRvbUV2ZW50KSx0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0sdGhpcy5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe2QucHJldmVudERlZmF1bHQodGhpcy5kb21FdmVudCksdGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfSx0aGlzLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMucHJldmVudERlZmF1bHQoKX0sdGhpcy5nZXREb2N1bWVudFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHBvcz90aGlzLiRwb3M6KHRoaXMuJHBvcz10aGlzLmVkaXRvci5yZW5kZXJlci5zY3JlZW5Ub1RleHRDb29yZGluYXRlcyh0aGlzLmNsaWVudFgsdGhpcy5jbGllbnRZKSx0aGlzLiRwb3MpfSx0aGlzLmluU2VsZWN0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kaW5TZWxlY3Rpb24hPT1udWxsKXJldHVybiB0aGlzLiRpblNlbGVjdGlvbjt2YXIgYT10aGlzLmVkaXRvcjtpZihhLmdldFJlYWRPbmx5KCkpdGhpcy4kaW5TZWxlY3Rpb249ITE7ZWxzZXt2YXIgYj1hLmdldFNlbGVjdGlvblJhbmdlKCk7aWYoYi5pc0VtcHR5KCkpdGhpcy4kaW5TZWxlY3Rpb249ITE7ZWxzZXt2YXIgYz10aGlzLmdldERvY3VtZW50UG9zaXRpb24oKTt0aGlzLiRpblNlbGVjdGlvbj1iLmNvbnRhaW5zKGMucm93LGMuY29sdW1uKX19cmV0dXJuIHRoaXMuJGluU2VsZWN0aW9ufSx0aGlzLmdldEJ1dHRvbj1mdW5jdGlvbigpe3JldHVybiBkLmdldEJ1dHRvbih0aGlzLmRvbUV2ZW50KX0sdGhpcy5nZXRTaGlmdEtleT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbUV2ZW50LnNoaWZ0S2V5fSx0aGlzLmdldEFjY2VsS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tRXZlbnQuY3RybEtleXx8dGhpcy5kb21FdmVudC5tZXRhS2V5fX0pLmNhbGwoZS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW91c2UvZm9sZF9oYW5kbGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7YS5vbigiY2xpY2siLGZ1bmN0aW9uKGIpe3ZhciBjPWIuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLGQ9YS5zZXNzaW9uLGU9ZC5nZXRGb2xkQXQoYy5yb3csYy5jb2x1bW4sMSk7ZSYmKGIuZ2V0QWNjZWxLZXkoKT9kLnJlbW92ZUZvbGQoZSk6ZC5leHBhbmRGb2xkKGUpLGIuc3RvcCgpKX0pLGEub24oImd1dHRlcmNsaWNrIixmdW5jdGlvbihiKXtpZihiLmRvbUV2ZW50LnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigiYWNlX2ZvbGQtd2lkZ2V0IikhPS0xKXt2YXIgYz1iLmdldERvY3VtZW50UG9zaXRpb24oKS5yb3c7YS5zZXNzaW9uLm9uRm9sZFdpZGdldENsaWNrKGMsYi5kb21FdmVudCksYi5zdG9wKCl9fSl9Yi5Gb2xkSGFuZGxlcj1kfSksZGVmaW5lKCJhY2Uva2V5Ym9hcmQva2V5YmluZGluZyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIva2V5cyIsImFjZS9saWIvZXZlbnQiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL2tleXMiKSxlPWEoIi4uL2xpYi9ldmVudCIpLGY9ZnVuY3Rpb24oYSl7dGhpcy4kZWRpdG9yPWEsdGhpcy4kZGF0YT17fSx0aGlzLiRoYW5kbGVycz1bXSx0aGlzLnNldERlZmF1bHRIYW5kbGVyKGEuY29tbWFuZHMpfTsoZnVuY3Rpb24oKXt0aGlzLnNldERlZmF1bHRIYW5kbGVyPWZ1bmN0aW9uKGEpe3RoaXMucmVtb3ZlS2V5Ym9hcmRIYW5kbGVyKHRoaXMuJGRlZmF1bHRIYW5kbGVyKSx0aGlzLiRkZWZhdWx0SGFuZGxlcj1hLHRoaXMuYWRkS2V5Ym9hcmRIYW5kbGVyKGEsMCksdGhpcy4kZGF0YT17ZWRpdG9yOnRoaXMuJGVkaXRvcn19LHRoaXMuc2V0S2V5Ym9hcmRIYW5kbGVyPWZ1bmN0aW9uKGEpe2lmKHRoaXMuJGhhbmRsZXJzW3RoaXMuJGhhbmRsZXJzLmxlbmd0aC0xXT09YSlyZXR1cm47d2hpbGUodGhpcy4kaGFuZGxlcnNbMV0pdGhpcy5yZW1vdmVLZXlib2FyZEhhbmRsZXIodGhpcy4kaGFuZGxlcnNbMV0pO3RoaXMuYWRkS2V5Ym9hcmRIYW5kbGVyKGEsMSl9LHRoaXMuYWRkS2V5Ym9hcmRIYW5kbGVyPWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuO3ZhciBjPXRoaXMuJGhhbmRsZXJzLmluZGV4T2YoYSk7YyE9LTEmJnRoaXMuJGhhbmRsZXJzLnNwbGljZShjLDEpLGI9PXVuZGVmaW5lZD90aGlzLiRoYW5kbGVycy5wdXNoKGEpOnRoaXMuJGhhbmRsZXJzLnNwbGljZShiLDAsYSksYz09LTEmJmEuYXR0YWNoJiZhLmF0dGFjaCh0aGlzLiRlZGl0b3IpfSx0aGlzLnJlbW92ZUtleWJvYXJkSGFuZGxlcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLiRoYW5kbGVycy5pbmRleE9mKGEpO3JldHVybiBiPT0tMT8hMToodGhpcy4kaGFuZGxlcnMuc3BsaWNlKGIsMSksYS5kZXRhY2gmJmEuZGV0YWNoKHRoaXMuJGVkaXRvciksITApfSx0aGlzLmdldEtleWJvYXJkSGFuZGxlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRoYW5kbGVyc1t0aGlzLiRoYW5kbGVycy5sZW5ndGgtMV19LHRoaXMuJGNhbGxLZXlib2FyZEhhbmRsZXJzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBmO2Zvcih2YXIgZz10aGlzLiRoYW5kbGVycy5sZW5ndGg7Zy0tOyl7Zj10aGlzLiRoYW5kbGVyc1tnXS5oYW5kbGVLZXlib2FyZCh0aGlzLiRkYXRhLGEsYixjLGQpO2lmKGYmJmYuY29tbWFuZClicmVha31pZighZnx8IWYuY29tbWFuZClyZXR1cm4hMTt2YXIgaD0hMSxpPXRoaXMuJGVkaXRvci5jb21tYW5kcztyZXR1cm4gZi5jb21tYW5kIT0ibnVsbCI/aD1pLmV4ZWMoZi5jb21tYW5kLHRoaXMuJGVkaXRvcixmLmFyZ3MsZCk6aD1mLnBhc3NFdmVudCE9MSxoJiZkJiZhIT0tMSYmZS5zdG9wRXZlbnQoZCksaH0sdGhpcy5vbkNvbW1hbmRLZXk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWQua2V5Q29kZVRvU3RyaW5nKGMpO3RoaXMuJGNhbGxLZXlib2FyZEhhbmRsZXJzKGIsZSxjLGEpfSx0aGlzLm9uVGV4dElucHV0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuJGNhbGxLZXlib2FyZEhhbmRsZXJzKC0xLGEpO2J8fHRoaXMuJGVkaXRvci5jb21tYW5kcy5leGVjKCJpbnNlcnRzdHJpbmciLHRoaXMuJGVkaXRvcixhKX19KS5jYWxsKGYucHJvdG90eXBlKSxiLktleUJpbmRpbmc9Zn0pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbiIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9jb25maWciLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9saWIvbmV0IiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3NlbGVjdGlvbiIsImFjZS9tb2RlL3RleHQiLCJhY2UvcmFuZ2UiLCJhY2UvZG9jdW1lbnQiLCJhY2UvYmFja2dyb3VuZF90b2tlbml6ZXIiLCJhY2UvZWRpdF9zZXNzaW9uL2ZvbGRpbmciLCJhY2UvZWRpdF9zZXNzaW9uL2JyYWNrZXRfbWF0Y2giXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9jb25maWciKSxlPWEoIi4vbGliL29vcCIpLGY9YSgiLi9saWIvbGFuZyIpLGc9YSgiLi9saWIvbmV0IiksaD1hKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGk9YSgiLi9zZWxlY3Rpb24iKS5TZWxlY3Rpb24saj1hKCIuL21vZGUvdGV4dCIpLk1vZGUsaz1hKCIuL3JhbmdlIikuUmFuZ2UsbD1hKCIuL2RvY3VtZW50IikuRG9jdW1lbnQsbT1hKCIuL2JhY2tncm91bmRfdG9rZW5pemVyIikuQmFja2dyb3VuZFRva2VuaXplcixuPWZ1bmN0aW9uKGEsYil7dGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy4kYnJlYWtwb2ludHM9W10sdGhpcy4kZnJvbnRNYXJrZXJzPXt9LHRoaXMuJGJhY2tNYXJrZXJzPXt9LHRoaXMuJG1hcmtlcklkPTEsdGhpcy4kcmVzZXRSb3dDYWNoZSgwKSx0aGlzLiR3cmFwRGF0YT1bXSx0aGlzLiRmb2xkRGF0YT1bXSx0aGlzLiRyb3dMZW5ndGhDYWNoZT1bXSx0aGlzLiR1bmRvU2VsZWN0PSEwLHRoaXMuJGZvbGREYXRhLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9IiI7cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihiKXthKz0iXG4iK2IudG9TdHJpbmcoKX0pLGF9LHR5cGVvZiBhPT0ib2JqZWN0IiYmYS5nZXRMaW5lP3RoaXMuc2V0RG9jdW1lbnQoYSk6dGhpcy5zZXREb2N1bWVudChuZXcgbChhKSksdGhpcy5zZWxlY3Rpb249bmV3IGkodGhpcyksdGhpcy5zZXRNb2RlKGIpfTsoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGEpe3JldHVybiBhPDQzNTI/ITE6YT49NDM1MiYmYTw9NDQ0N3x8YT49NDUxNSYmYTw9NDUxOXx8YT49NDYwMiYmYTw9NDYwN3x8YT49OTAwMSYmYTw9OTAwMnx8YT49MTE5MDQmJmE8PTExOTI5fHxhPj0xMTkzMSYmYTw9MTIwMTl8fGE+PTEyMDMyJiZhPD0xMjI0NXx8YT49MTIyNzImJmE8PTEyMjgzfHxhPj0xMjI4OCYmYTw9MTIzNTB8fGE+PTEyMzUzJiZhPD0xMjQzOHx8YT49MTI0NDEmJmE8PTEyNTQzfHxhPj0xMjU0OSYmYTw9MTI1ODl8fGE+PTEyNTkzJiZhPD0xMjY4Nnx8YT49MTI2ODgmJmE8PTEyNzMwfHxhPj0xMjczNiYmYTw9MTI3NzF8fGE+PTEyNzg0JiZhPD0xMjgzMHx8YT49MTI4MzImJmE8PTEyODcxfHxhPj0xMjg4MCYmYTw9MTMwNTR8fGE+PTEzMDU2JiZhPD0xOTkwM3x8YT49MTk5NjgmJmE8PTQyMTI0fHxhPj00MjEyOCYmYTw9NDIxODJ8fGE+PTQzMzYwJiZhPD00MzM4OHx8YT49NDQwMzImJmE8PTU1MjAzfHxhPj01NTIxNiYmYTw9NTUyMzh8fGE+PTU1MjQzJiZhPD01NTI5MXx8YT49NjM3NDQmJmE8PTY0MjU1fHxhPj02NTA0MCYmYTw9NjUwNDl8fGE+PTY1MDcyJiZhPD02NTEwNnx8YT49NjUxMDgmJmE8PTY1MTI2fHxhPj02NTEyOCYmYTw9NjUxMzF8fGE+PTY1MjgxJiZhPD02NTM3Nnx8YT49NjU1MDQmJmE8PTY1NTEwfWUuaW1wbGVtZW50KHRoaXMsaCksdGhpcy5zZXREb2N1bWVudD1mdW5jdGlvbihhKXtpZih0aGlzLmRvYyl0aHJvdyBuZXcgRXJyb3IoIkRvY3VtZW50IGlzIGFscmVhZHkgc2V0Iik7dGhpcy5kb2M9YSxhLm9uKCJjaGFuZ2UiLHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKSksdGhpcy5vbigiY2hhbmdlRm9sZCIsdGhpcy5vbkNoYW5nZUZvbGQuYmluZCh0aGlzKSksdGhpcy5iZ1Rva2VuaXplciYmKHRoaXMuYmdUb2tlbml6ZXIuc2V0RG9jdW1lbnQodGhpcy5nZXREb2N1bWVudCgpKSx0aGlzLmJnVG9rZW5pemVyLnN0YXJ0KDApKX0sdGhpcy5nZXREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvY30sdGhpcy4kcmVzZXRSb3dDYWNoZT1mdW5jdGlvbihhKXtpZighYSl7dGhpcy4kZG9jUm93Q2FjaGU9W10sdGhpcy4kc2NyZWVuUm93Q2FjaGU9W107cmV0dXJufXZhciBiPXRoaXMuJGdldFJvd0NhY2hlSW5kZXgodGhpcy4kZG9jUm93Q2FjaGUsYSkrMSxjPXRoaXMuJGRvY1Jvd0NhY2hlLmxlbmd0aDt0aGlzLiRkb2NSb3dDYWNoZS5zcGxpY2UoYixjKSx0aGlzLiRzY3JlZW5Sb3dDYWNoZS5zcGxpY2UoYixjKX0sdGhpcy4kZ2V0Um93Q2FjaGVJbmRleD1mdW5jdGlvbihhLGIpe3ZhciBjPTAsZD1hLmxlbmd0aC0xO3doaWxlKGM8PWQpe3ZhciBlPWMrZD4+MSxmPWFbZV07aWYoYj5mKWM9ZSsxO2Vsc2V7aWYoIShiPGYpKXJldHVybiBlO2Q9ZS0xfX1yZXR1cm4gYyYmYy0xfSx0aGlzLm9uQ2hhbmdlRm9sZD1mdW5jdGlvbihhKXt2YXIgYj1hLmRhdGE7dGhpcy4kcmVzZXRSb3dDYWNoZShiLnN0YXJ0LnJvdyl9LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO3RoaXMuJG1vZGlmaWVkPSEwLHRoaXMuJHJlc2V0Um93Q2FjaGUoYi5yYW5nZS5zdGFydC5yb3cpO3ZhciBjPXRoaXMuJHVwZGF0ZUludGVybmFsRGF0YU9uQ2hhbmdlKGEpOyF0aGlzLiRmcm9tVW5kbyYmdGhpcy4kdW5kb01hbmFnZXImJiFiLmlnbm9yZSYmKHRoaXMuJGRlbHRhc0RvYy5wdXNoKGIpLGMmJmMubGVuZ3RoIT0wJiZ0aGlzLiRkZWx0YXNGb2xkLnB1c2goe2FjdGlvbjoicmVtb3ZlRm9sZHMiLGZvbGRzOmN9KSx0aGlzLiRpbmZvcm1VbmRvTWFuYWdlci5zY2hlZHVsZSgpKSx0aGlzLmJnVG9rZW5pemVyLiR1cGRhdGVPbkNoYW5nZShiKSx0aGlzLl9lbWl0KCJjaGFuZ2UiLGEpfSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGEpe3RoaXMuZG9jLnNldFZhbHVlKGEpLHRoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JUbygwLDApLHRoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksdGhpcy4kcmVzZXRSb3dDYWNoZSgwKSx0aGlzLiRkZWx0YXM9W10sdGhpcy4kZGVsdGFzRG9jPVtdLHRoaXMuJGRlbHRhc0ZvbGQ9W10sdGhpcy5nZXRVbmRvTWFuYWdlcigpLnJlc2V0KCl9LHRoaXMuZ2V0VmFsdWU9dGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYy5nZXRWYWx1ZSgpfSx0aGlzLmdldFNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbn0sdGhpcy5nZXRTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iZ1Rva2VuaXplci5nZXRTdGF0ZShhKX0sdGhpcy5nZXRUb2tlbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYmdUb2tlbml6ZXIuZ2V0VG9rZW5zKGEpfSx0aGlzLmdldFRva2VuQXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmJnVG9rZW5pemVyLmdldFRva2VucyhhKSxkLGU9MDtpZihiPT1udWxsKWY9Yy5sZW5ndGgtMSxlPXRoaXMuZ2V0TGluZShhKS5sZW5ndGg7ZWxzZSBmb3IodmFyIGY9MDtmPGMubGVuZ3RoO2YrKyl7ZSs9Y1tmXS52YWx1ZS5sZW5ndGg7aWYoZT49YilicmVha31yZXR1cm4gZD1jW2ZdLGQ/KGQuaW5kZXg9ZixkLnN0YXJ0PWUtZC52YWx1ZS5sZW5ndGgsZCk6bnVsbH0sdGhpcy5zZXRVbmRvTWFuYWdlcj1mdW5jdGlvbihhKXt0aGlzLiR1bmRvTWFuYWdlcj1hLHRoaXMuJGRlbHRhcz1bXSx0aGlzLiRkZWx0YXNEb2M9W10sdGhpcy4kZGVsdGFzRm9sZD1bXSx0aGlzLiRpbmZvcm1VbmRvTWFuYWdlciYmdGhpcy4kaW5mb3JtVW5kb01hbmFnZXIuY2FuY2VsKCk7aWYoYSl7dmFyIGI9dGhpczt0aGlzLiRzeW5jSW5mb3JtVW5kb01hbmFnZXI9ZnVuY3Rpb24oKXtiLiRpbmZvcm1VbmRvTWFuYWdlci5jYW5jZWwoKSxiLiRkZWx0YXNGb2xkLmxlbmd0aCYmKGIuJGRlbHRhcy5wdXNoKHtncm91cDoiZm9sZCIsZGVsdGFzOmIuJGRlbHRhc0ZvbGR9KSxiLiRkZWx0YXNGb2xkPVtdKSxiLiRkZWx0YXNEb2MubGVuZ3RoJiYoYi4kZGVsdGFzLnB1c2goe2dyb3VwOiJkb2MiLGRlbHRhczpiLiRkZWx0YXNEb2N9KSxiLiRkZWx0YXNEb2M9W10pLGIuJGRlbHRhcy5sZW5ndGg+MCYmYS5leGVjdXRlKHthY3Rpb246ImFjZXVwZGF0ZSIsYXJnczpbYi4kZGVsdGFzLGJdfSksYi4kZGVsdGFzPVtdfSx0aGlzLiRpbmZvcm1VbmRvTWFuYWdlcj1mLmRlZmVycmVkQ2FsbCh0aGlzLiRzeW5jSW5mb3JtVW5kb01hbmFnZXIpfX0sdGhpcy4kZGVmYXVsdFVuZG9NYW5hZ2VyPXt1bmRvOmZ1bmN0aW9uKCl7fSxyZWRvOmZ1bmN0aW9uKCl7fSxyZXNldDpmdW5jdGlvbigpe319LHRoaXMuZ2V0VW5kb01hbmFnZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdW5kb01hbmFnZXJ8fHRoaXMuJGRlZmF1bHRVbmRvTWFuYWdlcn0sdGhpcy5nZXRUYWJTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRVc2VTb2Z0VGFicygpP2Yuc3RyaW5nUmVwZWF0KCIgIix0aGlzLmdldFRhYlNpemUoKSk6IgkifSx0aGlzLiR1c2VTb2Z0VGFicz0hMCx0aGlzLnNldFVzZVNvZnRUYWJzPWZ1bmN0aW9uKGEpe2lmKHRoaXMuJHVzZVNvZnRUYWJzPT09YSlyZXR1cm47dGhpcy4kdXNlU29mdFRhYnM9YX0sdGhpcy5nZXRVc2VTb2Z0VGFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR1c2VTb2Z0VGFic30sdGhpcy4kdGFiU2l6ZT00LHRoaXMuc2V0VGFiU2l6ZT1mdW5jdGlvbihhKXtpZihpc05hTihhKXx8dGhpcy4kdGFiU2l6ZT09PWEpcmV0dXJuO3RoaXMuJG1vZGlmaWVkPSEwLHRoaXMuJHJvd0xlbmd0aENhY2hlPVtdLHRoaXMuJHRhYlNpemU9YSx0aGlzLl9lbWl0KCJjaGFuZ2VUYWJTaXplIil9LHRoaXMuZ2V0VGFiU2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR0YWJTaXplfSx0aGlzLmlzVGFiU3RvcD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kdXNlU29mdFRhYnMmJmEuY29sdW1uJXRoaXMuJHRhYlNpemU9PTB9LHRoaXMuJG92ZXJ3cml0ZT0hMSx0aGlzLnNldE92ZXJ3cml0ZT1mdW5jdGlvbihhKXtpZih0aGlzLiRvdmVyd3JpdGU9PWEpcmV0dXJuO3RoaXMuJG92ZXJ3cml0ZT1hLHRoaXMuX2VtaXQoImNoYW5nZU92ZXJ3cml0ZSIpfSx0aGlzLmdldE92ZXJ3cml0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRvdmVyd3JpdGV9LHRoaXMudG9nZ2xlT3ZlcndyaXRlPWZ1bmN0aW9uKCl7dGhpcy5zZXRPdmVyd3JpdGUoIXRoaXMuJG92ZXJ3cml0ZSl9LHRoaXMuZ2V0QnJlYWtwb2ludHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYnJlYWtwb2ludHN9LHRoaXMuc2V0QnJlYWtwb2ludHM9ZnVuY3Rpb24oYSl7dGhpcy4kYnJlYWtwb2ludHM9W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspdGhpcy4kYnJlYWtwb2ludHNbYVtiXV09ITA7dGhpcy5fZW1pdCgiY2hhbmdlQnJlYWtwb2ludCIse30pfSx0aGlzLmNsZWFyQnJlYWtwb2ludHM9ZnVuY3Rpb24oKXt0aGlzLiRicmVha3BvaW50cz1bXSx0aGlzLl9lbWl0KCJjaGFuZ2VCcmVha3BvaW50Iix7fSl9LHRoaXMuc2V0QnJlYWtwb2ludD1mdW5jdGlvbihhKXt0aGlzLiRicmVha3BvaW50c1thXT0hMCx0aGlzLl9lbWl0KCJjaGFuZ2VCcmVha3BvaW50Iix7fSl9LHRoaXMuY2xlYXJCcmVha3BvaW50PWZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLiRicmVha3BvaW50c1thXSx0aGlzLl9lbWl0KCJjaGFuZ2VCcmVha3BvaW50Iix7fSl9LHRoaXMuYWRkTWFya2VyPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJG1hcmtlcklkKyssZj17cmFuZ2U6YSx0eXBlOmN8fCJsaW5lIixyZW5kZXJlcjp0eXBlb2YgYz09ImZ1bmN0aW9uIj9jOm51bGwsY2xheno6YixpbkZyb250OiEhZH07cmV0dXJuIGQ/KHRoaXMuJGZyb250TWFya2Vyc1tlXT1mLHRoaXMuX2VtaXQoImNoYW5nZUZyb250TWFya2VyIikpOih0aGlzLiRiYWNrTWFya2Vyc1tlXT1mLHRoaXMuX2VtaXQoImNoYW5nZUJhY2tNYXJrZXIiKSksZX0sdGhpcy5yZW1vdmVNYXJrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy4kZnJvbnRNYXJrZXJzW2FdfHx0aGlzLiRiYWNrTWFya2Vyc1thXTtpZighYilyZXR1cm47dmFyIGM9Yi5pbkZyb250P3RoaXMuJGZyb250TWFya2Vyczp0aGlzLiRiYWNrTWFya2VycztiJiYoZGVsZXRlIGNbYV0sdGhpcy5fZW1pdChiLmluRnJvbnQ/ImNoYW5nZUZyb250TWFya2VyIjoiY2hhbmdlQmFja01hcmtlciIpKX0sdGhpcy5nZXRNYXJrZXJzPWZ1bmN0aW9uKGEpe3JldHVybiBhP3RoaXMuJGZyb250TWFya2Vyczp0aGlzLiRiYWNrTWFya2Vyc30sdGhpcy5zZXRBbm5vdGF0aW9ucz1mdW5jdGlvbihhKXt0aGlzLiRhbm5vdGF0aW9ucz17fTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9YVtiXSxkPWMucm93O3RoaXMuJGFubm90YXRpb25zW2RdP3RoaXMuJGFubm90YXRpb25zW2RdLnB1c2goYyk6dGhpcy4kYW5ub3RhdGlvbnNbZF09W2NdfXRoaXMuX2VtaXQoImNoYW5nZUFubm90YXRpb24iLHt9KX0sdGhpcy5nZXRBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhbm5vdGF0aW9uc3x8e319LHRoaXMuY2xlYXJBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3RoaXMuJGFubm90YXRpb25zPXt9LHRoaXMuX2VtaXQoImNoYW5nZUFubm90YXRpb24iLHt9KX0sdGhpcy4kZGV0ZWN0TmV3TGluZT1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eLio/KFxyP1xuKS9tKTtiP3RoaXMuJGF1dG9OZXdMaW5lPWJbMV06dGhpcy4kYXV0b05ld0xpbmU9IlxuIn0sdGhpcy5nZXRXb3JkUmFuZ2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmdldExpbmUoYSksZD0hMTtiPjAmJihkPSEhYy5jaGFyQXQoYi0xKS5tYXRjaCh0aGlzLnRva2VuUmUpKSxkfHwoZD0hIWMuY2hhckF0KGIpLm1hdGNoKHRoaXMudG9rZW5SZSkpO3ZhciBlPWQ/dGhpcy50b2tlblJlOnRoaXMubm9uVG9rZW5SZSxmPWI7aWYoZj4wKXtkbyBmLS07d2hpbGUoZj49MCYmYy5jaGFyQXQoZikubWF0Y2goZSkpO2YrK312YXIgZz1iO3doaWxlKGc8Yy5sZW5ndGgmJmMuY2hhckF0KGcpLm1hdGNoKGUpKWcrKztyZXR1cm4gbmV3IGsoYSxmLGEsZyl9LHRoaXMuZ2V0QVdvcmRSYW5nZT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0V29yZFJhbmdlKGEsYiksZD10aGlzLmdldExpbmUoYy5lbmQucm93KTt3aGlsZShkLmNoYXJBdChjLmVuZC5jb2x1bW4pLm1hdGNoKC9bIFx0XS8pKWMuZW5kLmNvbHVtbis9MTtyZXR1cm4gY30sdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihhKXt0aGlzLmRvYy5zZXROZXdMaW5lTW9kZShhKX0sdGhpcy5nZXROZXdMaW5lTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYy5nZXROZXdMaW5lTW9kZSgpfSx0aGlzLiR1c2VXb3JrZXI9ITAsdGhpcy5zZXRVc2VXb3JrZXI9ZnVuY3Rpb24oYSl7aWYodGhpcy4kdXNlV29ya2VyPT1hKXJldHVybjt0aGlzLiR1c2VXb3JrZXI9YSx0aGlzLiRzdG9wV29ya2VyKCksYSYmdGhpcy4kc3RhcnRXb3JrZXIoKX0sdGhpcy5nZXRVc2VXb3JrZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdXNlV29ya2VyfSx0aGlzLm9uUmVsb2FkVG9rZW5pemVyPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YTt0aGlzLmJnVG9rZW5pemVyLnN0YXJ0KGIuZmlyc3QpLHRoaXMuX2VtaXQoInRva2VuaXplclVwZGF0ZSIsYSl9LHRoaXMuJG1vZGVzPXt9LHRoaXMuX2xvYWRNb2RlPWZ1bmN0aW9uKGIsYyl7ZnVuY3Rpb24gaShhKXtpZihlLiRtb2Rlc1tiXSlyZXR1cm4gYyhlLiRtb2Rlc1tiXSk7ZS4kbW9kZXNbYl09bmV3IGEuTW9kZSxlLiRtb2Rlc1tiXS4kaWQ9YixlLl9lbWl0KCJsb2FkbW9kZSIse25hbWU6Yixtb2RlOmUuJG1vZGVzW2JdfSksYyhlLiRtb2Rlc1tiXSl9ZnVuY3Rpb24gayhhKXtpZighZC5nZXQoInBhY2thZ2VkIikpcmV0dXJuIGEoKTt2YXIgYz1iLnNwbGl0KCIvIikucG9wKCksZT1kLmdldCgibW9kZVBhdGgiKSsiL21vZGUtIitjKyIuanMiO2cubG9hZFNjcmlwdChlLGEpfXRoaXMuJG1vZGVzWyJudWxsIl18fCh0aGlzLiRtb2Rlc1sibnVsbCJdPXRoaXMuJG1vZGVzWyJhY2UvbW9kZS90ZXh0Il09bmV3IGopO2lmKHRoaXMuJG1vZGVzW2JdKXJldHVybiBjKHRoaXMuJG1vZGVzW2JdKTt2YXIgZT10aGlzLGY7dHJ5e2Y9YShiKX1jYXRjaChoKXt9aWYoZilyZXR1cm4gaShmKTt0aGlzLiRtb2RlfHx0aGlzLiRzZXRNb2RlUGxhY2Vob2xkZXIoKSxrKGZ1bmN0aW9uKCl7YShbYl0saSl9KX0sdGhpcy4kc2V0TW9kZVBsYWNlaG9sZGVyPWZ1bmN0aW9uKCl7dGhpcy4kbW9kZT10aGlzLiRtb2Rlc1sibnVsbCJdO3ZhciBhPXRoaXMuJG1vZGUuZ2V0VG9rZW5pemVyKCk7aWYoIXRoaXMuYmdUb2tlbml6ZXIpe3RoaXMuYmdUb2tlbml6ZXI9bmV3IG0oYSk7dmFyIGI9dGhpczt0aGlzLmJnVG9rZW5pemVyLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZSIsZnVuY3Rpb24oYSl7Yi5fZW1pdCgidG9rZW5pemVyVXBkYXRlIixhKX0pfWVsc2UgdGhpcy5iZ1Rva2VuaXplci5zZXRUb2tlbml6ZXIoYSk7dGhpcy5iZ1Rva2VuaXplci5zZXREb2N1bWVudCh0aGlzLmdldERvY3VtZW50KCkpLHRoaXMudG9rZW5SZT10aGlzLiRtb2RlLnRva2VuUmUsdGhpcy5ub25Ub2tlblJlPXRoaXMuJG1vZGUubm9uVG9rZW5SZX0sdGhpcy4kbW9kZT1udWxsLHRoaXMuJG1vZGVJZD1udWxsLHRoaXMuc2V0TW9kZT1mdW5jdGlvbihhKXthPWF8fCJudWxsIjtpZih0eXBlb2YgYT09InN0cmluZyIpe2lmKHRoaXMuJG1vZGVJZD09YSlyZXR1cm47dGhpcy4kbW9kZUlkPWE7dmFyIGI9dGhpczt0aGlzLl9sb2FkTW9kZShhLGZ1bmN0aW9uKGMpe2lmKGIuJG1vZGVJZCE9PWEpcmV0dXJuO2Iuc2V0TW9kZShjKX0pO3JldHVybn1pZih0aGlzLiRtb2RlPT09YSlyZXR1cm47dGhpcy4kbW9kZT1hLHRoaXMuJG1vZGVJZD1hLiRpZCx0aGlzLiRzdG9wV29ya2VyKCksdGhpcy4kdXNlV29ya2VyJiZ0aGlzLiRzdGFydFdvcmtlcigpO3ZhciBjPWEuZ2V0VG9rZW5pemVyKCk7aWYoYy5hZGRFdmVudExpc3RlbmVyIT09dW5kZWZpbmVkKXt2YXIgZD10aGlzLm9uUmVsb2FkVG9rZW5pemVyLmJpbmQodGhpcyk7Yy5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGUiLGQpfWlmKCF0aGlzLmJnVG9rZW5pemVyKXt0aGlzLmJnVG9rZW5pemVyPW5ldyBtKGMpO3ZhciBiPXRoaXM7dGhpcy5iZ1Rva2VuaXplci5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGUiLGZ1bmN0aW9uKGEpe2IuX2VtaXQoInRva2VuaXplclVwZGF0ZSIsYSl9KX1lbHNlIHRoaXMuYmdUb2tlbml6ZXIuc2V0VG9rZW5pemVyKGMpO3RoaXMuYmdUb2tlbml6ZXIuc2V0RG9jdW1lbnQodGhpcy5nZXREb2N1bWVudCgpKSx0aGlzLmJnVG9rZW5pemVyLnN0YXJ0KDApLHRoaXMudG9rZW5SZT1hLnRva2VuUmUsdGhpcy5ub25Ub2tlblJlPWEubm9uVG9rZW5SZSx0aGlzLiRzZXRGb2xkaW5nKGEuZm9sZGluZ1J1bGVzKSx0aGlzLl9lbWl0KCJjaGFuZ2VNb2RlIil9LHRoaXMuJHN0b3BXb3JrZXI9ZnVuY3Rpb24oKXt0aGlzLiR3b3JrZXImJnRoaXMuJHdvcmtlci50ZXJtaW5hdGUoKSx0aGlzLiR3b3JrZXI9bnVsbH0sdGhpcy4kc3RhcnRXb3JrZXI9ZnVuY3Rpb24oKXtpZih0eXBlb2YgV29ya2VyIT0idW5kZWZpbmVkIiYmIWEubm9Xb3JrZXIpdHJ5e3RoaXMuJHdvcmtlcj10aGlzLiRtb2RlLmNyZWF0ZVdvcmtlcih0aGlzKX1jYXRjaChiKXtjb25zb2xlLmxvZygiQ291bGQgbm90IGxvYWQgd29ya2VyIiksY29uc29sZS5sb2coYiksdGhpcy4kd29ya2VyPW51bGx9ZWxzZSB0aGlzLiR3b3JrZXI9bnVsbH0sdGhpcy5nZXRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG1vZGV9LHRoaXMuJHNjcm9sbFRvcD0wLHRoaXMuc2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKGEpe2E9TWF0aC5yb3VuZChNYXRoLm1heCgwLGEpKTtpZih0aGlzLiRzY3JvbGxUb3A9PT1hKXJldHVybjt0aGlzLiRzY3JvbGxUb3A9YSx0aGlzLl9lbWl0KCJjaGFuZ2VTY3JvbGxUb3AiLGEpfSx0aGlzLmdldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzY3JvbGxUb3B9LHRoaXMuJHNjcm9sbExlZnQ9MCx0aGlzLnNldFNjcm9sbExlZnQ9ZnVuY3Rpb24oYSl7YT1NYXRoLnJvdW5kKE1hdGgubWF4KDAsYSkpO2lmKHRoaXMuJHNjcm9sbExlZnQ9PT1hKXJldHVybjt0aGlzLiRzY3JvbGxMZWZ0PWEsdGhpcy5fZW1pdCgiY2hhbmdlU2Nyb2xsTGVmdCIsYSl9LHRoaXMuZ2V0U2Nyb2xsTGVmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzY3JvbGxMZWZ0fSx0aGlzLmdldFNjcmVlbldpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNvbXB1dGVXaWR0aCgpLHRoaXMuc2NyZWVuV2lkdGh9LHRoaXMuJGNvbXB1dGVXaWR0aD1mdW5jdGlvbihhKXtpZih0aGlzLiRtb2RpZmllZHx8YSl7dGhpcy4kbW9kaWZpZWQ9ITE7aWYodGhpcy4kdXNlV3JhcE1vZGUpcmV0dXJuIHRoaXMuc2NyZWVuV2lkdGg9dGhpcy4kd3JhcExpbWl0O3ZhciBiPXRoaXMuZG9jLmdldEFsbExpbmVzKCksYz10aGlzLiRyb3dMZW5ndGhDYWNoZSxkPTAsZT0wLGY9dGhpcy4kZm9sZERhdGFbZV0sZz1mP2Yuc3RhcnQucm93OkluZmluaXR5LGg9Yi5sZW5ndGg7Zm9yKHZhciBpPTA7aTxoO2krKyl7aWYoaT5nKXtpPWYuZW5kLnJvdysxO2lmKGk+PWgpYnJlYWs7Zj10aGlzLiRmb2xkRGF0YVtlKytdLGc9Zj9mLnN0YXJ0LnJvdzpJbmZpbml0eX1jW2ldPT1udWxsJiYoY1tpXT10aGlzLiRnZXRTdHJpbmdTY3JlZW5XaWR0aChiW2ldKVswXSksY1tpXT5kJiYoZD1jW2ldKX10aGlzLnNjcmVlbldpZHRoPWR9fSx0aGlzLmdldExpbmU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZG9jLmdldExpbmUoYSl9LHRoaXMuZ2V0TGluZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5kb2MuZ2V0TGluZXMoYSxiKX0sdGhpcy5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2MuZ2V0TGVuZ3RoKCl9LHRoaXMuZ2V0VGV4dFJhbmdlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRvYy5nZXRUZXh0UmFuZ2UoYSl9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZG9jLmluc2VydChhLGIpfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kb2MucmVtb3ZlKGEpfSx0aGlzLnVuZG9DaGFuZ2VzPWZ1bmN0aW9uKGEsYil7aWYoIWEubGVuZ3RoKXJldHVybjt0aGlzLiRmcm9tVW5kbz0hMDt2YXIgYz1udWxsO2Zvcih2YXIgZD1hLmxlbmd0aC0xO2QhPS0xO2QtLSl7dmFyIGU9YVtkXTtlLmdyb3VwPT0iZG9jIj8odGhpcy5kb2MucmV2ZXJ0RGVsdGFzKGUuZGVsdGFzKSxjPXRoaXMuJGdldFVuZG9TZWxlY3Rpb24oZS5kZWx0YXMsITAsYykpOmUuZGVsdGFzLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy5hZGRGb2xkcyhhLmZvbGRzKX0sdGhpcyl9cmV0dXJuIHRoaXMuJGZyb21VbmRvPSExLGMmJnRoaXMuJHVuZG9TZWxlY3QmJiFiJiZ0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShjKSxjfSx0aGlzLnJlZG9DaGFuZ2VzPWZ1bmN0aW9uKGEsYil7aWYoIWEubGVuZ3RoKXJldHVybjt0aGlzLiRmcm9tVW5kbz0hMDt2YXIgYz1udWxsO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdO2UuZ3JvdXA9PSJkb2MiJiYodGhpcy5kb2MuYXBwbHlEZWx0YXMoZS5kZWx0YXMpLGM9dGhpcy4kZ2V0VW5kb1NlbGVjdGlvbihlLmRlbHRhcywhMSxjKSl9cmV0dXJuIHRoaXMuJGZyb21VbmRvPSExLGMmJnRoaXMuJHVuZG9TZWxlY3QmJiFiJiZ0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShjKSxjfSx0aGlzLnNldFVuZG9TZWxlY3Q9ZnVuY3Rpb24oYSl7dGhpcy4kdW5kb1NlbGVjdD1hfSx0aGlzLiRnZXRVbmRvU2VsZWN0aW9uPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3ZhciBjPWEuYWN0aW9uPT0iaW5zZXJ0VGV4dCJ8fGEuYWN0aW9uPT0iaW5zZXJ0TGluZXMiO3JldHVybiBiPyFjOmN9dmFyIGU9YVswXSxmLGcsaD0hMTtkKGUpPyhmPWUucmFuZ2UuY2xvbmUoKSxoPSEwKTooZj1rLmZyb21Qb2ludHMoZS5yYW5nZS5zdGFydCxlLnJhbmdlLnN0YXJ0KSxoPSExKTtmb3IodmFyIGk9MTtpPGEubGVuZ3RoO2krKyllPWFbaV0sZChlKT8oZz1lLnJhbmdlLnN0YXJ0LGYuY29tcGFyZShnLnJvdyxnLmNvbHVtbik9PS0xJiZmLnNldFN0YXJ0KGUucmFuZ2Uuc3RhcnQpLGc9ZS5yYW5nZS5lbmQsZi5jb21wYXJlKGcucm93LGcuY29sdW1uKT09MSYmZi5zZXRFbmQoZS5yYW5nZS5lbmQpLGg9ITApOihnPWUucmFuZ2Uuc3RhcnQsZi5jb21wYXJlKGcucm93LGcuY29sdW1uKT09LTEmJihmPWsuZnJvbVBvaW50cyhlLnJhbmdlLnN0YXJ0LGUucmFuZ2Uuc3RhcnQpKSxoPSExKTtpZihjIT1udWxsKXt2YXIgaj1jLmNvbXBhcmVSYW5nZShmKTtqPT0xP2Yuc2V0U3RhcnQoYy5zdGFydCk6aj09LTEmJmYuc2V0RW5kKGMuZW5kKX1yZXR1cm4gZn0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZG9jLnJlcGxhY2UoYSxiKX0sdGhpcy5tb3ZlVGV4dD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0VGV4dFJhbmdlKGEpO3RoaXMucmVtb3ZlKGEpO3ZhciBkPWIucm93LGU9Yi5jb2x1bW47IWEuaXNNdWx0aUxpbmUoKSYmYS5zdGFydC5yb3c9PWQmJmEuZW5kLmNvbHVtbjxlJiYoZS09Yy5sZW5ndGgpO2lmKGEuaXNNdWx0aUxpbmUoKSYmYS5lbmQucm93PGQpe3ZhciBmPXRoaXMuZG9jLiRzcGxpdChjKTtkLT1mLmxlbmd0aC0xfXZhciBnPWQrYS5lbmQucm93LWEuc3RhcnQucm93LGg9YS5pc011bHRpTGluZSgpP2EuZW5kLmNvbHVtbjplK2EuZW5kLmNvbHVtbi1hLnN0YXJ0LmNvbHVtbixpPW5ldyBrKGQsZSxnLGgpO3JldHVybiB0aGlzLmluc2VydChpLnN0YXJ0LGMpLGl9LHRoaXMuaW5kZW50Um93cz1mdW5jdGlvbihhLGIsYyl7Yz1jLnJlcGxhY2UoL1x0L2csdGhpcy5nZXRUYWJTdHJpbmcoKSk7Zm9yKHZhciBkPWE7ZDw9YjtkKyspdGhpcy5pbnNlcnQoe3JvdzpkLGNvbHVtbjowfSxjKX0sdGhpcy5vdXRkZW50Um93cz1mdW5jdGlvbihhKXt2YXIgYj1hLmNvbGxhcHNlUm93cygpLGM9bmV3IGsoMCwwLDAsMCksZD10aGlzLmdldFRhYlNpemUoKTtmb3IodmFyIGU9Yi5zdGFydC5yb3c7ZTw9Yi5lbmQucm93OysrZSl7dmFyIGY9dGhpcy5nZXRMaW5lKGUpO2Muc3RhcnQucm93PWUsYy5lbmQucm93PWU7Zm9yKHZhciBnPTA7ZzxkOysrZylpZihmLmNoYXJBdChnKSE9IiAiKWJyZWFrO2c8ZCYmZi5jaGFyQXQoZyk9PSIJIj8oYy5zdGFydC5jb2x1bW49ZyxjLmVuZC5jb2x1bW49ZysxKTooYy5zdGFydC5jb2x1bW49MCxjLmVuZC5jb2x1bW49ZyksdGhpcy5yZW1vdmUoYyl9fSx0aGlzLm1vdmVMaW5lc1VwPWZ1bmN0aW9uKGEsYil7aWYoYTw9MClyZXR1cm4gMDt2YXIgYz10aGlzLmRvYy5yZW1vdmVMaW5lcyhhLGIpO3JldHVybiB0aGlzLmRvYy5pbnNlcnRMaW5lcyhhLTEsYyksLTF9LHRoaXMubW92ZUxpbmVzRG93bj1mdW5jdGlvbihhLGIpe2lmKGI+PXRoaXMuZG9jLmdldExlbmd0aCgpLTEpcmV0dXJuIDA7dmFyIGM9dGhpcy5kb2MucmVtb3ZlTGluZXMoYSxiKTtyZXR1cm4gdGhpcy5kb2MuaW5zZXJ0TGluZXMoYSsxLGMpLDF9LHRoaXMuZHVwbGljYXRlTGluZXM9ZnVuY3Rpb24oYSxiKXt2YXIgYT10aGlzLiRjbGlwUm93VG9Eb2N1bWVudChhKSxiPXRoaXMuJGNsaXBSb3dUb0RvY3VtZW50KGIpLGM9dGhpcy5nZXRMaW5lcyhhLGIpO3RoaXMuZG9jLmluc2VydExpbmVzKGEsYyk7dmFyIGQ9Yi1hKzE7cmV0dXJuIGR9LHRoaXMuJGNsaXBSb3dUb0RvY3VtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKGEsdGhpcy5kb2MuZ2V0TGVuZ3RoKCktMSkpfSx0aGlzLiRjbGlwQ29sdW1uVG9Sb3c9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYjwwPzA6TWF0aC5taW4odGhpcy5kb2MuZ2V0TGluZShhKS5sZW5ndGgsYil9LHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXtiPU1hdGgubWF4KDAsYik7aWYoYTwwKWE9MCxiPTA7ZWxzZXt2YXIgYz10aGlzLmRvYy5nZXRMZW5ndGgoKTthPj1jPyhhPWMtMSxiPXRoaXMuZG9jLmdldExpbmUoYy0xKS5sZW5ndGgpOmI9TWF0aC5taW4odGhpcy5kb2MuZ2V0TGluZShhKS5sZW5ndGgsYil9cmV0dXJue3JvdzphLGNvbHVtbjpifX0sdGhpcy4kY2xpcFJhbmdlVG9Eb2N1bWVudD1mdW5jdGlvbihhKXthLnN0YXJ0LnJvdzwwPyhhLnN0YXJ0LnJvdz0wLGEuc3RhcnQuY29sdW1uPTApOmEuc3RhcnQuY29sdW1uPXRoaXMuJGNsaXBDb2x1bW5Ub1JvdyhhLnN0YXJ0LnJvdyxhLnN0YXJ0LmNvbHVtbik7dmFyIGI9dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMTtyZXR1cm4gYS5lbmQucm93PmI/KGEuZW5kLnJvdz1iLGEuZW5kLmNvbHVtbj10aGlzLmRvYy5nZXRMaW5lKGIpLmxlbmd0aCk6YS5lbmQuY29sdW1uPXRoaXMuJGNsaXBDb2x1bW5Ub1JvdyhhLmVuZC5yb3csYS5lbmQuY29sdW1uKSxhfSx0aGlzLiR3cmFwTGltaXQ9ODAsdGhpcy4kdXNlV3JhcE1vZGU9ITEsdGhpcy4kd3JhcExpbWl0UmFuZ2U9e21pbjpudWxsLG1heDpudWxsfSx0aGlzLnNldFVzZVdyYXBNb2RlPWZ1bmN0aW9uKGEpe2lmKGEhPXRoaXMuJHVzZVdyYXBNb2RlKXt0aGlzLiR1c2VXcmFwTW9kZT1hLHRoaXMuJG1vZGlmaWVkPSEwLHRoaXMuJHJlc2V0Um93Q2FjaGUoMCk7aWYoYSl7dmFyIGI9dGhpcy5nZXRMZW5ndGgoKTt0aGlzLiR3cmFwRGF0YT1bXTtmb3IodmFyIGM9MDtjPGI7YysrKXRoaXMuJHdyYXBEYXRhLnB1c2goW10pO3RoaXMuJHVwZGF0ZVdyYXBEYXRhKDAsYi0xKX10aGlzLl9lbWl0KCJjaGFuZ2VXcmFwTW9kZSIpfX0sdGhpcy5nZXRVc2VXcmFwTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR1c2VXcmFwTW9kZX0sdGhpcy5zZXRXcmFwTGltaXRSYW5nZT1mdW5jdGlvbihhLGIpe2lmKHRoaXMuJHdyYXBMaW1pdFJhbmdlLm1pbiE9PWF8fHRoaXMuJHdyYXBMaW1pdFJhbmdlLm1heCE9PWIpdGhpcy4kd3JhcExpbWl0UmFuZ2UubWluPWEsdGhpcy4kd3JhcExpbWl0UmFuZ2UubWF4PWIsdGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy5fZW1pdCgiY2hhbmdlV3JhcE1vZGUiKX0sdGhpcy5hZGp1c3RXcmFwTGltaXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy4kY29uc3RyYWluV3JhcExpbWl0KGEpO3JldHVybiBiIT10aGlzLiR3cmFwTGltaXQmJmI+MD8odGhpcy4kd3JhcExpbWl0PWIsdGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy4kdXNlV3JhcE1vZGUmJih0aGlzLiR1cGRhdGVXcmFwRGF0YSgwLHRoaXMuZ2V0TGVuZ3RoKCktMSksdGhpcy4kcmVzZXRSb3dDYWNoZSgwKSx0aGlzLl9lbWl0KCJjaGFuZ2VXcmFwTGltaXQiKSksITApOiExfSx0aGlzLiRjb25zdHJhaW5XcmFwTGltaXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy4kd3JhcExpbWl0UmFuZ2UubWluO2ImJihhPU1hdGgubWF4KGIsYSkpO3ZhciBjPXRoaXMuJHdyYXBMaW1pdFJhbmdlLm1heDtyZXR1cm4gYyYmKGE9TWF0aC5taW4oYyxhKSksTWF0aC5tYXgoMSxhKX0sdGhpcy5nZXRXcmFwTGltaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kd3JhcExpbWl0fSx0aGlzLmdldFdyYXBMaW1pdFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJue21pbjp0aGlzLiR3cmFwTGltaXRSYW5nZS5taW4sbWF4OnRoaXMuJHdyYXBMaW1pdFJhbmdlLm1heH19LHRoaXMuJHVwZGF0ZUludGVybmFsRGF0YU9uQ2hhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuJHVzZVdyYXBNb2RlLGMsZD1hLmRhdGEuYWN0aW9uLGU9YS5kYXRhLnJhbmdlLnN0YXJ0LnJvdyxmPWEuZGF0YS5yYW5nZS5lbmQucm93LGc9YS5kYXRhLnJhbmdlLnN0YXJ0LGg9YS5kYXRhLnJhbmdlLmVuZCxpPW51bGw7ZC5pbmRleE9mKCJMaW5lcyIpIT0tMT8oZD09Imluc2VydExpbmVzIj9mPWUrYS5kYXRhLmxpbmVzLmxlbmd0aDpmPWUsYz1hLmRhdGEubGluZXM/YS5kYXRhLmxpbmVzLmxlbmd0aDpmLWUpOmM9Zi1lO2lmKGMhPTApaWYoZC5pbmRleE9mKCJyZW1vdmUiKSE9LTEpe3RoaXNbYj8iJHdyYXBEYXRhIjoiJHJvd0xlbmd0aENhY2hlIl0uc3BsaWNlKGUsYyk7dmFyIGo9dGhpcy4kZm9sZERhdGE7aT10aGlzLmdldEZvbGRzSW5SYW5nZShhLmRhdGEucmFuZ2UpLHRoaXMucmVtb3ZlRm9sZHMoaSk7dmFyIGs9dGhpcy5nZXRGb2xkTGluZShoLnJvdyksbD0wO2lmKGspe2suYWRkUmVtb3ZlQ2hhcnMoaC5yb3csaC5jb2x1bW4sZy5jb2x1bW4taC5jb2x1bW4pLGsuc2hpZnRSb3coLWMpO3ZhciBtPXRoaXMuZ2V0Rm9sZExpbmUoZSk7bSYmbSE9PWsmJihtLm1lcmdlKGspLGs9bSksbD1qLmluZGV4T2YoaykrMX1mb3IobDtsPGoubGVuZ3RoO2wrKyl7dmFyIGs9altsXTtrLnN0YXJ0LnJvdz49aC5yb3cmJmsuc2hpZnRSb3coLWMpfWY9ZX1lbHNle3ZhciBuO2lmKGIpe249W2UsMF07Zm9yKHZhciBvPTA7bzxjO28rKyluLnB1c2goW10pO3RoaXMuJHdyYXBEYXRhLnNwbGljZS5hcHBseSh0aGlzLiR3cmFwRGF0YSxuKX1lbHNlIG49QXJyYXkoYyksbi51bnNoaWZ0KGUsMCksdGhpcy4kcm93TGVuZ3RoQ2FjaGUuc3BsaWNlLmFwcGx5KHRoaXMuJHJvd0xlbmd0aENhY2hlLG4pO3ZhciBqPXRoaXMuJGZvbGREYXRhLGs9dGhpcy5nZXRGb2xkTGluZShlKSxsPTA7aWYoayl7dmFyIHA9ay5yYW5nZS5jb21wYXJlSW5zaWRlKGcucm93LGcuY29sdW1uKTtwPT0wPyhrPWsuc3BsaXQoZy5yb3csZy5jb2x1bW4pLGsuc2hpZnRSb3coYyksay5hZGRSZW1vdmVDaGFycyhmLDAsaC5jb2x1bW4tZy5jb2x1bW4pKTpwPT0tMSYmKGsuYWRkUmVtb3ZlQ2hhcnMoZSwwLGguY29sdW1uLWcuY29sdW1uKSxrLnNoaWZ0Um93KGMpKSxsPWouaW5kZXhPZihrKSsxfWZvcihsO2w8ai5sZW5ndGg7bCsrKXt2YXIgaz1qW2xdO2suc3RhcnQucm93Pj1lJiZrLnNoaWZ0Um93KGMpfX1lbHNle2M9TWF0aC5hYnMoYS5kYXRhLnJhbmdlLnN0YXJ0LmNvbHVtbi1hLmRhdGEucmFuZ2UuZW5kLmNvbHVtbiksZC5pbmRleE9mKCJyZW1vdmUiKSE9LTEmJihpPXRoaXMuZ2V0Rm9sZHNJblJhbmdlKGEuZGF0YS5yYW5nZSksdGhpcy5yZW1vdmVGb2xkcyhpKSxjPS1jKTt2YXIgaz10aGlzLmdldEZvbGRMaW5lKGUpO2smJmsuYWRkUmVtb3ZlQ2hhcnMoZSxnLmNvbHVtbixjKX1yZXR1cm4gYiYmdGhpcy4kd3JhcERhdGEubGVuZ3RoIT10aGlzLmRvYy5nZXRMZW5ndGgoKSYmY29uc29sZS5lcnJvcigiZG9jLmdldExlbmd0aCgpIGFuZCAkd3JhcERhdGEubGVuZ3RoIGhhdmUgdG8gYmUgdGhlIHNhbWUhIiksYj90aGlzLiR1cGRhdGVXcmFwRGF0YShlLGYpOnRoaXMuJHVwZGF0ZVJvd0xlbmd0aENhY2hlKGUsZiksaX0sdGhpcy4kdXBkYXRlUm93TGVuZ3RoQ2FjaGU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJHJvd0xlbmd0aENhY2hlW2FdPW51bGwsdGhpcy4kcm93TGVuZ3RoQ2FjaGVbYl09bnVsbH0sdGhpcy4kdXBkYXRlV3JhcERhdGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmRvYy5nZXRBbGxMaW5lcygpLGQ9dGhpcy5nZXRUYWJTaXplKCksZT10aGlzLiR3cmFwRGF0YSxnPXRoaXMuJHdyYXBMaW1pdCxoLGosaz1hO2I9TWF0aC5taW4oYixjLmxlbmd0aC0xKTt3aGlsZShrPD1iKXtqPXRoaXMuZ2V0Rm9sZExpbmUoayxqKTtpZighailoPXRoaXMuJGdldERpc3BsYXlUb2tlbnMoZi5zdHJpbmdUcmltUmlnaHQoY1trXSkpLGVba109dGhpcy4kY29tcHV0ZVdyYXBTcGxpdHMoaCxnLGQpLGsrKztlbHNle2g9W10sai53YWxrKGZ1bmN0aW9uKGEsYixkLGUpe3ZhciBmO2lmKGEpe2Y9dGhpcy4kZ2V0RGlzcGxheVRva2VucyhhLGgubGVuZ3RoKSxmWzBdPWk7Zm9yKHZhciBnPTE7ZzxmLmxlbmd0aDtnKyspZltnXT1sfWVsc2UgZj10aGlzLiRnZXREaXNwbGF5VG9rZW5zKGNbYl0uc3Vic3RyaW5nKGUsZCksaC5sZW5ndGgpO2g9aC5jb25jYXQoZil9LmJpbmQodGhpcyksai5lbmQucm93LGNbai5lbmQucm93XS5sZW5ndGgrMSk7d2hpbGUoaC5sZW5ndGghPTAmJmhbaC5sZW5ndGgtMV0+PW8paC5wb3AoKTtlW2ouc3RhcnQucm93XT10aGlzLiRjb21wdXRlV3JhcFNwbGl0cyhoLGcsZCksaz1qLmVuZC5yb3crMX19fTt2YXIgYj0xLGM9MixpPTMsbD00LG49OSxvPTEwLHA9MTEscT0xMjt0aGlzLiRjb21wdXRlV3JhcFNwbGl0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGcoYil7dmFyIGQ9YS5zbGljZShlLGIpLGc9ZC5sZW5ndGg7ZC5qb2luKCIiKS5yZXBsYWNlKC8xMi9nLGZ1bmN0aW9uKCl7Zy09MX0pLnJlcGxhY2UoLzIvZyxmdW5jdGlvbigpe2ctPTF9KSxmKz1nLGMucHVzaChmKSxlPWJ9aWYoYS5sZW5ndGg9PTApcmV0dXJuW107dmFyIGM9W10sZD1hLmxlbmd0aCxlPTAsZj0wO3doaWxlKGQtZT5iKXt2YXIgaD1lK2I7aWYoYVtoXT49byl7d2hpbGUoYVtoXT49byloKys7ZyhoKTtjb250aW51ZX1pZihhW2hdPT1pfHxhW2hdPT1sKXtmb3IoaDtoIT1lLTE7aC0tKWlmKGFbaF09PWkpYnJlYWs7aWYoaD5lKXtnKGgpO2NvbnRpbnVlfWg9ZStiO2ZvcihoO2g8YS5sZW5ndGg7aCsrKWlmKGFbaF0hPWwpYnJlYWs7aWYoaD09YS5sZW5ndGgpYnJlYWs7ZyhoKTtjb250aW51ZX12YXIgaj1NYXRoLm1heChoLTEwLGUtMSk7d2hpbGUoaD5qJiZhW2hdPGkpaC0tO3doaWxlKGg+aiYmYVtoXT09biloLS07aWYoaD5qKXtnKCsraCk7Y29udGludWV9aD1lK2IsZyhoKX1yZXR1cm4gY30sdGhpcy4kZ2V0RGlzcGxheVRva2Vucz1mdW5jdGlvbihhLGQpe3ZhciBlPVtdLGY7ZD1kfHwwO2Zvcih2YXIgZz0wO2c8YS5sZW5ndGg7ZysrKXt2YXIgaD1hLmNoYXJDb2RlQXQoZyk7aWYoaD09OSl7Zj10aGlzLmdldFNjcmVlblRhYlNpemUoZS5sZW5ndGgrZCksZS5wdXNoKHApO2Zvcih2YXIgaT0xO2k8ZjtpKyspZS5wdXNoKHEpfWVsc2UgaD09MzI/ZS5wdXNoKG8pOmg+MzkmJmg8NDh8fGg+NTcmJmg8NjQ/ZS5wdXNoKG4pOmg+PTQzNTImJnIoaCk/ZS5wdXNoKGIsYyk6ZS5wdXNoKGIpfXJldHVybiBlfSx0aGlzLiRnZXRTdHJpbmdTY3JlZW5XaWR0aD1mdW5jdGlvbihhLGIsYyl7aWYoYj09MClyZXR1cm5bMCwwXTtiPT1udWxsJiYoYj1JbmZpbml0eSksYz1jfHwwO3ZhciBkLGU7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7ZD1hLmNoYXJDb2RlQXQoZSksZD09OT9jKz10aGlzLmdldFNjcmVlblRhYlNpemUoYyk6ZD49NDM1MiYmcihkKT9jKz0yOmMrPTE7aWYoYz5iKWJyZWFrfXJldHVybltjLGVdfSx0aGlzLmdldFJvd0xlbmd0aD1mdW5jdGlvbihhKXtyZXR1cm4hdGhpcy4kdXNlV3JhcE1vZGV8fCF0aGlzLiR3cmFwRGF0YVthXT8xOnRoaXMuJHdyYXBEYXRhW2FdLmxlbmd0aCsxfSx0aGlzLmdldFJvd0hlaWdodD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmdldFJvd0xlbmd0aChiKSphLmxpbmVIZWlnaHR9LHRoaXMuZ2V0U2NyZWVuTGFzdFJvd0NvbHVtbj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihhLE51bWJlci5NQVhfVkFMVUUpO3JldHVybiB0aGlzLmRvY3VtZW50VG9TY3JlZW5Db2x1bW4oYi5yb3csYi5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50TGFzdFJvd0NvbHVtbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZG9jdW1lbnRUb1NjcmVlblJvdyhhLGIpO3JldHVybiB0aGlzLmdldFNjcmVlbkxhc3RSb3dDb2x1bW4oYyl9LHRoaXMuZ2V0RG9jdW1lbnRMYXN0Um93Q29sdW1uUG9zaXRpb249ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmRvY3VtZW50VG9TY3JlZW5Sb3coYSxiKTtyZXR1cm4gdGhpcy5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oYyxOdW1iZXIuTUFYX1ZBTFVFLzEwKX0sdGhpcy5nZXRSb3dTcGxpdERhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJHVzZVdyYXBNb2RlP3RoaXMuJHdyYXBEYXRhW2FdOnVuZGVmaW5lZH0sdGhpcy5nZXRTY3JlZW5UYWJTaXplPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLiR0YWJTaXplLWEldGhpcy4kdGFiU2l6ZX0sdGhpcy5zY3JlZW5Ub0RvY3VtZW50Um93PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGEsYikucm93fSx0aGlzLnNjcmVlblRvRG9jdW1lbnRDb2x1bW49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oYSxiKS5jb2x1bW59LHRoaXMuc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uPWZ1bmN0aW9uKGEsYil7aWYoYTwwKXJldHVybntyb3c6MCxjb2x1bW46MH07dmFyIGMsZD0wLGU9MCxmLGc9MCxoPTAsaT10aGlzLiRzY3JlZW5Sb3dDYWNoZSxqPXRoaXMuJGdldFJvd0NhY2hlSW5kZXgoaSxhKSxrPWlbal0sbD10aGlzLiRkb2NSb3dDYWNoZVtqXTtpZigwPGomJmo8aS5sZW5ndGgpdmFyIGc9aVtqXSxkPXRoaXMuJGRvY1Jvd0NhY2hlW2pdLG09YT5nfHxhPT1nJiZqPT1pLmxlbmd0aC0xO2Vsc2UgdmFyIG09ITA7dmFyIG49dGhpcy5nZXRMZW5ndGgoKS0xLG89dGhpcy5nZXROZXh0Rm9sZExpbmUoZCkscD1vP28uc3RhcnQucm93OkluZmluaXR5O3doaWxlKGc8PWEpe2g9dGhpcy5nZXRSb3dMZW5ndGgoZCk7aWYoZytoLTE+PWF8fGQ+PW4pYnJlYWs7Zys9aCxkKyssZD5wJiYoZD1vLmVuZC5yb3crMSxvPXRoaXMuZ2V0TmV4dEZvbGRMaW5lKGQsbykscD1vP28uc3RhcnQucm93OkluZmluaXR5KSxtJiYodGhpcy4kZG9jUm93Q2FjaGUucHVzaChkKSx0aGlzLiRzY3JlZW5Sb3dDYWNoZS5wdXNoKGcpKX1pZihvJiZvLnN0YXJ0LnJvdzw9ZCljPXRoaXMuZ2V0Rm9sZERpc3BsYXlMaW5lKG8pLGQ9by5zdGFydC5yb3c7ZWxzZXtpZihnK2g8PWF8fGQ+bilyZXR1cm57cm93Om4sY29sdW1uOnRoaXMuZ2V0TGluZShuKS5sZW5ndGh9O2M9dGhpcy5nZXRMaW5lKGQpLG89bnVsbH1pZih0aGlzLiR1c2VXcmFwTW9kZSl7dmFyIHE9dGhpcy4kd3JhcERhdGFbZF07cSYmKGY9cVthLWddLGE+ZyYmcS5sZW5ndGgmJihlPXFbYS1nLTFdfHxxW3EubGVuZ3RoLTFdLGM9Yy5zdWJzdHJpbmcoZSkpKX1yZXR1cm4gZSs9dGhpcy4kZ2V0U3RyaW5nU2NyZWVuV2lkdGgoYyxiKVsxXSx0aGlzLiR1c2VXcmFwTW9kZSYmZT49ZiYmKGU9Zi0xKSxvP28uaWR4VG9Qb3NpdGlvbihlKTp7cm93OmQsY29sdW1uOmV9fSx0aGlzLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbj1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkIil2YXIgYz10aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KGEucm93LGEuY29sdW1uKTtlbHNlIGM9dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChhLGIpO2E9Yy5yb3csYj1jLmNvbHVtbjt2YXIgZD0wLGU9bnVsbCxmPW51bGw7Zj10aGlzLmdldEZvbGRBdChhLGIsMSksZiYmKGE9Zi5zdGFydC5yb3csYj1mLnN0YXJ0LmNvbHVtbik7dmFyIGcsaD0wLGk9dGhpcy4kZG9jUm93Q2FjaGUsaj10aGlzLiRnZXRSb3dDYWNoZUluZGV4KGksYSk7aWYoMDxqJiZqPGkubGVuZ3RoKXZhciBoPWlbal0sZD10aGlzLiRzY3JlZW5Sb3dDYWNoZVtqXSxrPWE+aHx8YT09aCYmaj09aS5sZW5ndGgtMTtlbHNlIHZhciBrPSEwO3ZhciBsPXRoaXMuZ2V0TmV4dEZvbGRMaW5lKGgpLG09bD9sLnN0YXJ0LnJvdzpJbmZpbml0eTt3aGlsZShoPGEpe2lmKGg+PW0pe2c9bC5lbmQucm93KzE7aWYoZz5hKWJyZWFrO2w9dGhpcy5nZXROZXh0Rm9sZExpbmUoZyxsKSxtPWw/bC5zdGFydC5yb3c6SW5maW5pdHl9ZWxzZSBnPWgrMTtkKz10aGlzLmdldFJvd0xlbmd0aChoKSxoPWcsayYmKHRoaXMuJGRvY1Jvd0NhY2hlLnB1c2goaCksdGhpcy4kc2NyZWVuUm93Q2FjaGUucHVzaChkKSl9dmFyIG49IiI7bCYmaD49bT8obj10aGlzLmdldEZvbGREaXNwbGF5TGluZShsLGEsYiksZT1sLnN0YXJ0LnJvdyk6KG49dGhpcy5nZXRMaW5lKGEpLnN1YnN0cmluZygwLGIpLGU9YSk7aWYodGhpcy4kdXNlV3JhcE1vZGUpe3ZhciBvPXRoaXMuJHdyYXBEYXRhW2VdLHA9MDt3aGlsZShuLmxlbmd0aD49b1twXSlkKysscCsrO249bi5zdWJzdHJpbmcob1twLTFdfHwwLG4ubGVuZ3RoKX1yZXR1cm57cm93OmQsY29sdW1uOnRoaXMuJGdldFN0cmluZ1NjcmVlbldpZHRoKG4pWzBdfX0sdGhpcy5kb2N1bWVudFRvU2NyZWVuQ29sdW1uPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKGEsYikuY29sdW1ufSx0aGlzLmRvY3VtZW50VG9TY3JlZW5Sb3c9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oYSxiKS5yb3d9LHRoaXMuZ2V0U2NyZWVuTGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIGE9MCxiPW51bGw7aWYoIXRoaXMuJHVzZVdyYXBNb2RlKXthPXRoaXMuZ2V0TGVuZ3RoKCk7dmFyIGM9dGhpcy4kZm9sZERhdGE7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspYj1jW2RdLGEtPWIuZW5kLnJvdy1iLnN0YXJ0LnJvd31lbHNle3ZhciBlPXRoaXMuJHdyYXBEYXRhLmxlbmd0aCxmPTAsZD0wLGI9dGhpcy4kZm9sZERhdGFbZCsrXSxnPWI/Yi5zdGFydC5yb3c6SW5maW5pdHk7d2hpbGUoZjxlKWErPXRoaXMuJHdyYXBEYXRhW2ZdLmxlbmd0aCsxLGYrKyxmPmcmJihmPWIuZW5kLnJvdysxLGI9dGhpcy4kZm9sZERhdGFbZCsrXSxnPWI/Yi5zdGFydC5yb3c6SW5maW5pdHkpfXJldHVybiBhfX0pLmNhbGwobi5wcm90b3R5cGUpLGEoIi4vZWRpdF9zZXNzaW9uL2ZvbGRpbmciKS5Gb2xkaW5nLmNhbGwobi5wcm90b3R5cGUpLGEoIi4vZWRpdF9zZXNzaW9uL2JyYWNrZXRfbWF0Y2giKS5CcmFja2V0TWF0Y2guY2FsbChuLnByb3RvdHlwZSksYi5FZGl0U2Vzc2lvbj1ufSksZGVmaW5lKCJhY2UvY29uZmlnIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuIGEucmVwbGFjZSgvLSguKS9nLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX0pfSJubyB1c2Ugc3RyaWN0Ijt2YXIgZD1hKCIuL2xpYi9sYW5nIiksZT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpLGY9e3BhY2thZ2VkOiExLHdvcmtlclBhdGg6IiIsbW9kZVBhdGg6IiIsdGhlbWVQYXRoOiIiLHN1ZmZpeDoiLmpzIn07Yi5nZXQ9ZnVuY3Rpb24oYSl7aWYoIWYuaGFzT3duUHJvcGVydHkoYSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvbmZpZyBrZXk6ICIrYSk7cmV0dXJuIGZbYV19LGIuc2V0PWZ1bmN0aW9uKGEsYil7aWYoIWYuaGFzT3duUHJvcGVydHkoYSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvbmZpZyBrZXk6ICIrYSk7ZlthXT1ifSxiLmFsbD1mdW5jdGlvbigpe3JldHVybiBkLmNvcHlPYmplY3QoZil9LGIuaW5pdD1mdW5jdGlvbigpe2YucGFja2FnZWQ9YS5wYWNrYWdlZHx8Yy5wYWNrYWdlZHx8ZS5kZWZpbmUmJmRlZmluZS5wYWNrYWdlZDtpZighZS5kb2N1bWVudClyZXR1cm4iIjt2YXIgZD17fSxoPSIiLGk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO2Zvcih2YXIgaj0wO2o8aS5sZW5ndGg7aisrKXt2YXIgaz1pW2pdLGw9ay5zcmN8fGsuZ2V0QXR0cmlidXRlKCJzcmMiKTtpZighbCljb250aW51ZTt2YXIgbT1rLmF0dHJpYnV0ZXM7Zm9yKHZhciBuPTAsbz1tLmxlbmd0aDtuPG87bisrKXt2YXIgcD1tW25dO3AubmFtZS5pbmRleE9mKCJkYXRhLWFjZS0iKT09PTAmJihkW2cocC5uYW1lLnJlcGxhY2UoL15kYXRhLWFjZS0vLCIiKSldPXAudmFsdWUpfXZhciBxPWwubWF0Y2goL14oPzooLipcLylhY2VcLmpzKSg/Olw/fCQpLyk7cSYmKGg9cVsxXXx8cVsyXSl9aCYmKGQuYmFzZT1kLmJhc2V8fGgsZC5wYWNrYWdlZD0hMCksZC53b3JrZXJQYXRoPWQud29ya2VyUGF0aHx8ZC5iYXNlLGQubW9kZVBhdGg9ZC5tb2RlUGF0aHx8ZC5iYXNlLGQudGhlbWVQYXRoPWQudGhlbWVQYXRofHxkLmJhc2UsZGVsZXRlIGQuYmFzZTtmb3IodmFyIHIgaW4gZCl0eXBlb2YgZFtyXSE9InVuZGVmaW5lZCImJmIuc2V0KHIsZFtyXSl9fSksZGVmaW5lKCJhY2UvbGliL25ldCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtiLmdldD1mdW5jdGlvbihhLGMpe3ZhciBkPWIuY3JlYXRlWGhyKCk7ZC5vcGVuKCJHRVQiLGEsITApLGQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEpe2QucmVhZHlTdGF0ZT09PTQmJmMoZC5yZXNwb25zZVRleHQpfSxkLnNlbmQobnVsbCl9O3ZhciBkPVsiTXN4bWwyLlhNTEhUVFAiLCJNaWNyb3NvZnQuWE1MSFRUUCIsIk1zeG1sMi5YTUxIVFRQLjQuMCJdO2IuY3JlYXRlWGhyPWZ1bmN0aW9uKCl7dmFyIGEsYixjO2lmKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdDtmb3IoYj0wO2I8MztiKyspe2M9ZFtiXTt0cnl7YT1uZXcgQWN0aXZlWE9iamVjdChjKX1jYXRjaChlKXt9aWYoYSl7ZD1bY107YnJlYWt9fWlmKCFhKXRocm93IG5ldyBFcnJvcigiY3JlYXRlWGhyKCk6IFhNTEh0dHBSZXF1ZXN0IG5vdCBhdmFpbGFibGUiKTtyZXR1cm4gYX0sYi5sb2FkU2NyaXB0PWZ1bmN0aW9uKGEsYil7dmFyIGM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2Quc3JjPWEsYy5hcHBlbmRDaGlsZChkKSxkLm9ubG9hZD1ifX0pLGRlZmluZSgiYWNlL2xpYi9ldmVudF9lbWl0dGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2QuX2VtaXQ9ZC5fZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihhLGIpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e30sdGhpcy5fZGVmYXVsdEhhbmRsZXJzPXRoaXMuX2RlZmF1bHRIYW5kbGVyc3x8e307dmFyIGM9dGhpcy5fZXZlbnRSZWdpc3RyeVthXXx8W10sZD10aGlzLl9kZWZhdWx0SGFuZGxlcnNbYV07aWYoIWMubGVuZ3RoJiYhZClyZXR1cm47Yj1ifHx7fSxiLnR5cGU9YSxiLnN0b3BQcm9wYWdhdGlvbnx8KGIuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9KSxiLnByZXZlbnREZWZhdWx0fHwoYi5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0pO2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKXtjW2VdKGIpO2lmKGIucHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrfWlmKGQmJiFiLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIGQoYil9LGQuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTtpZih0aGlzLl9kZWZhdWx0SGFuZGxlcnNbYV0pdGhyb3cgbmV3IEVycm9yKCJUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciAnIithKyInIGlzIGFscmVhZHkgc2V0Iik7dGhpcy5fZGVmYXVsdEhhbmRsZXJzW2FdPWJ9LGQub249ZC5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdO2lmKCFjKXZhciBjPXRoaXMuX2V2ZW50UmVnaXN0cnlbYV09W107Yy5pbmRleE9mKGIpPT0tMSYmYy5wdXNoKGIpfSxkLnJlbW92ZUxpc3RlbmVyPWQucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e307dmFyIGM9dGhpcy5fZXZlbnRSZWdpc3RyeVthXTtpZighYylyZXR1cm47dmFyIGQ9Yy5pbmRleE9mKGIpO2QhPT0tMSYmYy5zcGxpY2UoZCwxKX0sZC5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oYSl7dGhpcy5fZXZlbnRSZWdpc3RyeSYmKHRoaXMuX2V2ZW50UmVnaXN0cnlbYV09W10pfSxiLkV2ZW50RW1pdHRlcj1kfSksZGVmaW5lKCJhY2Uvc2VsZWN0aW9uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9saWIvb29wIiksZT1hKCIuL2xpYi9sYW5nIiksZj1hKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGc9YSgiLi9yYW5nZSIpLlJhbmdlLGg9ZnVuY3Rpb24oYSl7dGhpcy5zZXNzaW9uPWEsdGhpcy5kb2M9YS5nZXREb2N1bWVudCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLmxlYWQ9dGhpcy5zZWxlY3Rpb25MZWFkPXRoaXMuZG9jLmNyZWF0ZUFuY2hvcigwLDApLHRoaXMuYW5jaG9yPXRoaXMuc2VsZWN0aW9uQW5jaG9yPXRoaXMuZG9jLmNyZWF0ZUFuY2hvcigwLDApO3ZhciBiPXRoaXM7dGhpcy5sZWFkLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGEpe2IuX2VtaXQoImNoYW5nZUN1cnNvciIpLGIuJGlzRW1wdHl8fGIuX2VtaXQoImNoYW5nZVNlbGVjdGlvbiIpLCFiLiRrZWVwRGVzaXJlZENvbHVtbk9uQ2hhbmdlJiZhLm9sZC5jb2x1bW4hPWEudmFsdWUuY29sdW1uJiYoYi4kZGVzaXJlZENvbHVtbj1udWxsKX0pLHRoaXMuc2VsZWN0aW9uQW5jaG9yLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7Yi4kaXNFbXB0eXx8Yi5fZW1pdCgiY2hhbmdlU2VsZWN0aW9uIil9KX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxmKSx0aGlzLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaXNFbXB0eXx8dGhpcy5hbmNob3Iucm93PT10aGlzLmxlYWQucm93JiZ0aGlzLmFuY2hvci5jb2x1bW49PXRoaXMubGVhZC5jb2x1bW59LHRoaXMuaXNNdWx0aUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/ITE6dGhpcy5nZXRSYW5nZSgpLmlzTXVsdGlMaW5lKCl9LHRoaXMuZ2V0Q3Vyc29yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVhZC5nZXRQb3NpdGlvbigpfSx0aGlzLnNldFNlbGVjdGlvbkFuY2hvcj1mdW5jdGlvbihhLGIpe3RoaXMuYW5jaG9yLnNldFBvc2l0aW9uKGEsYiksdGhpcy4kaXNFbXB0eSYmKHRoaXMuJGlzRW1wdHk9ITEsdGhpcy5fZW1pdCgiY2hhbmdlU2VsZWN0aW9uIikpfSx0aGlzLmdldFNlbGVjdGlvbkFuY2hvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRpc0VtcHR5P3RoaXMuZ2V0U2VsZWN0aW9uTGVhZCgpOnRoaXMuYW5jaG9yLmdldFBvc2l0aW9uKCl9LHRoaXMuZ2V0U2VsZWN0aW9uTGVhZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlYWQuZ2V0UG9zaXRpb24oKX0sdGhpcy5zaGlmdFNlbGVjdGlvbj1mdW5jdGlvbihhKXtpZih0aGlzLiRpc0VtcHR5KXt0aGlzLm1vdmVDdXJzb3JUbyh0aGlzLmxlYWQucm93LHRoaXMubGVhZC5jb2x1bW4rYSk7cmV0dXJufXZhciBiPXRoaXMuZ2V0U2VsZWN0aW9uQW5jaG9yKCksYz10aGlzLmdldFNlbGVjdGlvbkxlYWQoKSxkPXRoaXMuaXNCYWNrd2FyZHMoKTsoIWR8fGIuY29sdW1uIT09MCkmJnRoaXMuc2V0U2VsZWN0aW9uQW5jaG9yKGIucm93LGIuY29sdW1uK2EpLChkfHxjLmNvbHVtbiE9PTApJiZ0aGlzLiRtb3ZlU2VsZWN0aW9uKGZ1bmN0aW9uKCl7dGhpcy5tb3ZlQ3Vyc29yVG8oYy5yb3csYy5jb2x1bW4rYSl9KX0sdGhpcy5pc0JhY2t3YXJkcz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYW5jaG9yLGI9dGhpcy5sZWFkO3JldHVybiBhLnJvdz5iLnJvd3x8YS5yb3c9PWIucm93JiZhLmNvbHVtbj5iLmNvbHVtbn0sdGhpcy5nZXRSYW5nZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYW5jaG9yLGI9dGhpcy5sZWFkO3JldHVybiB0aGlzLmlzRW1wdHkoKT9nLmZyb21Qb2ludHMoYixiKTp0aGlzLmlzQmFja3dhcmRzKCk/Zy5mcm9tUG9pbnRzKGIsYSk6Zy5mcm9tUG9pbnRzKGEsYil9LHRoaXMuY2xlYXJTZWxlY3Rpb249ZnVuY3Rpb24oKXt0aGlzLiRpc0VtcHR5fHwodGhpcy4kaXNFbXB0eT0hMCx0aGlzLl9lbWl0KCJjaGFuZ2VTZWxlY3Rpb24iKSl9LHRoaXMuc2VsZWN0QWxsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMTt0aGlzLnNldFNlbGVjdGlvbkFuY2hvcigwLDApLHRoaXMubW92ZUN1cnNvclRvKGEsdGhpcy5kb2MuZ2V0TGluZShhKS5sZW5ndGgpfSx0aGlzLnNldFJhbmdlPXRoaXMuc2V0U2VsZWN0aW9uUmFuZ2U9ZnVuY3Rpb24oYSxiKXtiPyh0aGlzLnNldFNlbGVjdGlvbkFuY2hvcihhLmVuZC5yb3csYS5lbmQuY29sdW1uKSx0aGlzLnNlbGVjdFRvKGEuc3RhcnQucm93LGEuc3RhcnQuY29sdW1uKSk6KHRoaXMuc2V0U2VsZWN0aW9uQW5jaG9yKGEuc3RhcnQucm93LGEuc3RhcnQuY29sdW1uKSx0aGlzLnNlbGVjdFRvKGEuZW5kLnJvdyxhLmVuZC5jb2x1bW4pKSx0aGlzLiRkZXNpcmVkQ29sdW1uPW51bGx9LHRoaXMuJG1vdmVTZWxlY3Rpb249ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZWFkO3RoaXMuJGlzRW1wdHkmJnRoaXMuc2V0U2VsZWN0aW9uQW5jaG9yKGIucm93LGIuY29sdW1uKSxhLmNhbGwodGhpcyl9LHRoaXMuc2VsZWN0VG89ZnVuY3Rpb24oYSxiKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKGZ1bmN0aW9uKCl7dGhpcy5tb3ZlQ3Vyc29yVG8oYSxiKX0pfSx0aGlzLnNlbGVjdFRvUG9zaXRpb249ZnVuY3Rpb24oYSl7dGhpcy4kbW92ZVNlbGVjdGlvbihmdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvclRvUG9zaXRpb24oYSl9KX0sdGhpcy5zZWxlY3RVcD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yVXApfSx0aGlzLnNlbGVjdERvd249ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvckRvd24pfSx0aGlzLnNlbGVjdFJpZ2h0PWZ1bmN0aW9uKCl7dGhpcy4kbW92ZVNlbGVjdGlvbih0aGlzLm1vdmVDdXJzb3JSaWdodCl9LHRoaXMuc2VsZWN0TGVmdD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yTGVmdCl9LHRoaXMuc2VsZWN0TGluZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy4kbW92ZVNlbGVjdGlvbih0aGlzLm1vdmVDdXJzb3JMaW5lU3RhcnQpfSx0aGlzLnNlbGVjdExpbmVFbmQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvckxpbmVFbmQpfSx0aGlzLnNlbGVjdEZpbGVFbmQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvckZpbGVFbmQpfSx0aGlzLnNlbGVjdEZpbGVTdGFydD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yRmlsZVN0YXJ0KX0sdGhpcy5zZWxlY3RXb3JkUmlnaHQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvcldvcmRSaWdodCl9LHRoaXMuc2VsZWN0V29yZExlZnQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvcldvcmRMZWZ0KX0sdGhpcy5nZXRXb3JkUmFuZ2U9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYj09InVuZGVmaW5lZCIpe3ZhciBjPWF8fHRoaXMubGVhZDthPWMucm93LGI9Yy5jb2x1bW59cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRXb3JkUmFuZ2UoYSxiKX0sdGhpcy5zZWxlY3RXb3JkPWZ1bmN0aW9uKCl7dGhpcy5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmdldFdvcmRSYW5nZSgpKX0sdGhpcy5zZWxlY3RBV29yZD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0Q3Vyc29yKCksYj10aGlzLnNlc3Npb24uZ2V0QVdvcmRSYW5nZShhLnJvdyxhLmNvbHVtbik7dGhpcy5zZXRTZWxlY3Rpb25SYW5nZShiKX0sdGhpcy5nZXRMaW5lUmFuZ2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYT09Im51bWJlciI/YTp0aGlzLmxlYWQucm93LGQsZT10aGlzLnNlc3Npb24uZ2V0Rm9sZExpbmUoYyk7cmV0dXJuIGU/KGM9ZS5zdGFydC5yb3csZD1lLmVuZC5yb3cpOmQ9YyxiP25ldyBnKGMsMCxkLHRoaXMuc2Vzc2lvbi5nZXRMaW5lKGQpLmxlbmd0aCk6bmV3IGcoYywwLGQrMSwwKX0sdGhpcy5zZWxlY3RMaW5lPWZ1bmN0aW9uKCl7dGhpcy5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmdldExpbmVSYW5nZSgpKX0sdGhpcy5tb3ZlQ3Vyc29yVXA9ZnVuY3Rpb24oKXt0aGlzLm1vdmVDdXJzb3JCeSgtMSwwKX0sdGhpcy5tb3ZlQ3Vyc29yRG93bj1mdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvckJ5KDEsMCl9LHRoaXMubW92ZUN1cnNvckxlZnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlYWQuZ2V0UG9zaXRpb24oKSxiO2lmKGI9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChhLnJvdyxhLmNvbHVtbiwtMSkpdGhpcy5tb3ZlQ3Vyc29yVG8oYi5zdGFydC5yb3csYi5zdGFydC5jb2x1bW4pO2Vsc2UgaWYoYS5jb2x1bW49PTApYS5yb3c+MCYmdGhpcy5tb3ZlQ3Vyc29yVG8oYS5yb3ctMSx0aGlzLmRvYy5nZXRMaW5lKGEucm93LTEpLmxlbmd0aCk7ZWxzZXt2YXIgYz10aGlzLnNlc3Npb24uZ2V0VGFiU2l6ZSgpO3RoaXMuc2Vzc2lvbi5pc1RhYlN0b3AoYSkmJnRoaXMuZG9jLmdldExpbmUoYS5yb3cpLnNsaWNlKGEuY29sdW1uLWMsYS5jb2x1bW4pLnNwbGl0KCIgIikubGVuZ3RoLTE9PWM/dGhpcy5tb3ZlQ3Vyc29yQnkoMCwtYyk6dGhpcy5tb3ZlQ3Vyc29yQnkoMCwtMSl9fSx0aGlzLm1vdmVDdXJzb3JSaWdodD1mdW5jdGlvbigpe3ZhciBhPXRoaXMubGVhZC5nZXRQb3NpdGlvbigpLGI7aWYoYj10aGlzLnNlc3Npb24uZ2V0Rm9sZEF0KGEucm93LGEuY29sdW1uLDEpKXRoaXMubW92ZUN1cnNvclRvKGIuZW5kLnJvdyxiLmVuZC5jb2x1bW4pO2Vsc2UgaWYodGhpcy5sZWFkLmNvbHVtbj09dGhpcy5kb2MuZ2V0TGluZSh0aGlzLmxlYWQucm93KS5sZW5ndGgpdGhpcy5sZWFkLnJvdzx0aGlzLmRvYy5nZXRMZW5ndGgoKS0xJiZ0aGlzLm1vdmVDdXJzb3JUbyh0aGlzLmxlYWQucm93KzEsMCk7ZWxzZXt2YXIgYz10aGlzLnNlc3Npb24uZ2V0VGFiU2l6ZSgpLGE9dGhpcy5sZWFkO3RoaXMuc2Vzc2lvbi5pc1RhYlN0b3AoYSkmJnRoaXMuZG9jLmdldExpbmUoYS5yb3cpLnNsaWNlKGEuY29sdW1uLGEuY29sdW1uK2MpLnNwbGl0KCIgIikubGVuZ3RoLTE9PWM/dGhpcy5tb3ZlQ3Vyc29yQnkoMCxjKTp0aGlzLm1vdmVDdXJzb3JCeSgwLDEpfX0sdGhpcy5tb3ZlQ3Vyc29yTGluZVN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sZWFkLnJvdyxiPXRoaXMubGVhZC5jb2x1bW4sYz10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblJvdyhhLGIpLGQ9dGhpcy5zZXNzaW9uLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihjLDApLGU9dGhpcy5zZXNzaW9uLmdldERpc3BsYXlMaW5lKGEsbnVsbCxkLnJvdyxkLmNvbHVtbiksZj1lLm1hdGNoKC9eXHMqLyk7ZlswXS5sZW5ndGg9PWI/dGhpcy5tb3ZlQ3Vyc29yVG8oZC5yb3csZC5jb2x1bW4pOnRoaXMubW92ZUN1cnNvclRvKGQucm93LGQuY29sdW1uK2ZbMF0ubGVuZ3RoKX0sdGhpcy5tb3ZlQ3Vyc29yTGluZUVuZD1mdW5jdGlvbigpe3ZhciBhPXRoaXMubGVhZCxiPXRoaXMuc2Vzc2lvbi5nZXREb2N1bWVudExhc3RSb3dDb2x1bW5Qb3NpdGlvbihhLnJvdyxhLmNvbHVtbik7dGhpcy5tb3ZlQ3Vyc29yVG8oYi5yb3csYi5jb2x1bW4pfSx0aGlzLm1vdmVDdXJzb3JGaWxlRW5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMSxiPXRoaXMuZG9jLmdldExpbmUoYSkubGVuZ3RoO3RoaXMubW92ZUN1cnNvclRvKGEsYil9LHRoaXMubW92ZUN1cnNvckZpbGVTdGFydD1mdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvclRvKDAsMCl9LHRoaXMubW92ZUN1cnNvckxvbmdXb3JkUmlnaHQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlYWQucm93LGI9dGhpcy5sZWFkLmNvbHVtbixjPXRoaXMuZG9jLmdldExpbmUoYSksZD1jLnN1YnN0cmluZyhiKSxlO3RoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wLHRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleD0wO3ZhciBmPXRoaXMuc2Vzc2lvbi5nZXRGb2xkQXQoYSxiLDEpO2lmKGYpe3RoaXMubW92ZUN1cnNvclRvKGYuZW5kLnJvdyxmLmVuZC5jb2x1bW4pO3JldHVybn1pZihlPXRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmV4ZWMoZCkpYis9dGhpcy5zZXNzaW9uLm5vblRva2VuUmUubGFzdEluZGV4LHRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wLGQ9Yy5zdWJzdHJpbmcoYik7aWYoYj49Yy5sZW5ndGgpe3RoaXMubW92ZUN1cnNvclRvKGEsYy5sZW5ndGgpLHRoaXMubW92ZUN1cnNvclJpZ2h0KCksYTx0aGlzLmRvYy5nZXRMZW5ndGgoKS0xJiZ0aGlzLm1vdmVDdXJzb3JXb3JkUmlnaHQoKTtyZXR1cm59aWYoZT10aGlzLnNlc3Npb24udG9rZW5SZS5leGVjKGQpKWIrPXRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleCx0aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg9MDt0aGlzLm1vdmVDdXJzb3JUbyhhLGIpfSx0aGlzLm1vdmVDdXJzb3JMb25nV29yZExlZnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlYWQucm93LGI9dGhpcy5sZWFkLmNvbHVtbixjO2lmKGM9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChhLGIsLTEpKXt0aGlzLm1vdmVDdXJzb3JUbyhjLnN0YXJ0LnJvdyxjLnN0YXJ0LmNvbHVtbik7cmV0dXJufXZhciBkPXRoaXMuc2Vzc2lvbi5nZXRGb2xkU3RyaW5nQXQoYSxiLC0xKTtkPT1udWxsJiYoZD10aGlzLmRvYy5nZXRMaW5lKGEpLnN1YnN0cmluZygwLGIpKTt2YXIgZj1lLnN0cmluZ1JldmVyc2UoZCksZzt0aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5sYXN0SW5kZXg9MCx0aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg9MDtpZihnPXRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmV4ZWMoZikpYi09dGhpcy5zZXNzaW9uLm5vblRva2VuUmUubGFzdEluZGV4LGY9Zi5zbGljZSh0aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5sYXN0SW5kZXgpLHRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wO2lmKGI8PTApe3RoaXMubW92ZUN1cnNvclRvKGEsMCksdGhpcy5tb3ZlQ3Vyc29yTGVmdCgpLGE+MCYmdGhpcy5tb3ZlQ3Vyc29yV29yZExlZnQoKTtyZXR1cm59aWYoZz10aGlzLnNlc3Npb24udG9rZW5SZS5leGVjKGYpKWItPXRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleCx0aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg9MDt0aGlzLm1vdmVDdXJzb3JUbyhhLGIpfSx0aGlzLiRzaG9ydFdvcmRFbmRJbmRleD1mdW5jdGlvbihhKXt2YXIgYixjPTAsZCxlPS9ccy8sZj10aGlzLnNlc3Npb24udG9rZW5SZTtmLmxhc3RJbmRleD0wO2lmKGI9dGhpcy5zZXNzaW9uLnRva2VuUmUuZXhlYyhhKSljPXRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleDtlbHNle3doaWxlKChkPWFbY10pJiZlLnRlc3QoZCkpYysrO2lmKGM8PTEpe2YubGFzdEluZGV4PTA7d2hpbGUoKGQ9YVtjXSkmJiFmLnRlc3QoZCkpe2YubGFzdEluZGV4PTAsYysrO2lmKGUudGVzdChkKSl7aWYoYz4yKXtjLS07YnJlYWt9d2hpbGUoKGQ9YVtjXSkmJmUudGVzdChkKSljKys7aWYoYz4yKWJyZWFrfX19fXJldHVybiBmLmxhc3RJbmRleD0wLGN9LHRoaXMubW92ZUN1cnNvclNob3J0V29yZFJpZ2h0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sZWFkLnJvdyxiPXRoaXMubGVhZC5jb2x1bW4sYz10aGlzLmRvYy5nZXRMaW5lKGEpLGQ9Yy5zdWJzdHJpbmcoYiksZT10aGlzLnNlc3Npb24uZ2V0Rm9sZEF0KGEsYiwxKTtpZihlKXJldHVybiB0aGlzLm1vdmVDdXJzb3JUbyhlLmVuZC5yb3csZS5lbmQuY29sdW1uKTtpZihiPT1jLmxlbmd0aClyZXR1cm4gdGhpcy5tb3ZlQ3Vyc29yUmlnaHQoKTt2YXIgZj10aGlzLiRzaG9ydFdvcmRFbmRJbmRleChkKTt0aGlzLm1vdmVDdXJzb3JUbyhhLGIrZil9LHRoaXMubW92ZUN1cnNvclNob3J0V29yZExlZnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlYWQucm93LGI9dGhpcy5sZWFkLmNvbHVtbixjO2lmKGM9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChhLGIsLTEpKXJldHVybiB0aGlzLm1vdmVDdXJzb3JUbyhjLnN0YXJ0LnJvdyxjLnN0YXJ0LmNvbHVtbik7aWYoYj09MClyZXR1cm4gdGhpcy5tb3ZlQ3Vyc29yTGVmdCgpO3ZhciBkPXRoaXMuc2Vzc2lvbi5nZXRMaW5lKGEpLnN1YnN0cmluZygwLGIpLGY9ZS5zdHJpbmdSZXZlcnNlKGQpLGc9dGhpcy4kc2hvcnRXb3JkRW5kSW5kZXgoZik7cmV0dXJuIHRoaXMubW92ZUN1cnNvclRvKGEsYi1nKX0sdGhpcy5tb3ZlQ3Vyc29yV29yZFJpZ2h0PWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLiRzZWxlY3RMb25nV29yZHM/dGhpcy5tb3ZlQ3Vyc29yTG9uZ1dvcmRSaWdodCgpOnRoaXMubW92ZUN1cnNvclNob3J0V29yZFJpZ2h0KCl9LHRoaXMubW92ZUN1cnNvcldvcmRMZWZ0PWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLiRzZWxlY3RMb25nV29yZHM/dGhpcy5tb3ZlQ3Vyc29yTG9uZ1dvcmRMZWZ0KCk6dGhpcy5tb3ZlQ3Vyc29yU2hvcnRXb3JkTGVmdCgpfSx0aGlzLm1vdmVDdXJzb3JCeT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5sZWFkLnJvdyx0aGlzLmxlYWQuY29sdW1uKTtiPT09MCYmKHRoaXMuJGRlc2lyZWRDb2x1bW4/Yy5jb2x1bW49dGhpcy4kZGVzaXJlZENvbHVtbjp0aGlzLiRkZXNpcmVkQ29sdW1uPWMuY29sdW1uKTt2YXIgZD10aGlzLnNlc3Npb24uc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGMucm93K2EsYy5jb2x1bW4pO3RoaXMubW92ZUN1cnNvclRvKGQucm93LGQuY29sdW1uK2IsYj09PTApfSx0aGlzLm1vdmVDdXJzb3JUb1Bvc2l0aW9uPWZ1bmN0aW9uKGEpe3RoaXMubW92ZUN1cnNvclRvKGEucm93LGEuY29sdW1uKX0sdGhpcy5tb3ZlQ3Vyc29yVG89ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc2Vzc2lvbi5nZXRGb2xkQXQoYSxiLDEpO2QmJihhPWQuc3RhcnQucm93LGI9ZC5zdGFydC5jb2x1bW4pLHRoaXMuJGtlZXBEZXNpcmVkQ29sdW1uT25DaGFuZ2U9ITAsdGhpcy5sZWFkLnNldFBvc2l0aW9uKGEsYiksdGhpcy4ka2VlcERlc2lyZWRDb2x1bW5PbkNoYW5nZT0hMSxjfHwodGhpcy4kZGVzaXJlZENvbHVtbj1udWxsKX0sdGhpcy5tb3ZlQ3Vyc29yVG9TY3JlZW49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oYSxiKTt0aGlzLm1vdmVDdXJzb3JUbyhkLnJvdyxkLmNvbHVtbixjKX0sdGhpcy5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLmxlYWQuZGV0YWNoKCksdGhpcy5hbmNob3IuZGV0YWNoKCksdGhpcy5zZXNzaW9uPXRoaXMuZG9jPW51bGx9LHRoaXMuZnJvbU9yaWVudGVkUmFuZ2U9ZnVuY3Rpb24oYSl7dGhpcy5zZXRTZWxlY3Rpb25SYW5nZShhLGEuY3Vyc29yPT1hLnN0YXJ0KSx0aGlzLiRkZXNpcmVkQ29sdW1uPWEuZGVzaXJlZENvbHVtbnx8dGhpcy4kZGVzaXJlZENvbHVtbn0sdGhpcy50b09yaWVudGVkUmFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRSYW5nZSgpO3JldHVybiBhPyhhLnN0YXJ0LmNvbHVtbj1iLnN0YXJ0LmNvbHVtbixhLnN0YXJ0LnJvdz1iLnN0YXJ0LnJvdyxhLmVuZC5jb2x1bW49Yi5lbmQuY29sdW1uLGEuZW5kLnJvdz1iLmVuZC5yb3cpOmE9YixhLmN1cnNvcj10aGlzLmlzQmFja3dhcmRzKCk/YS5zdGFydDphLmVuZCxhLmRlc2lyZWRDb2x1bW49dGhpcy4kZGVzaXJlZENvbHVtbixhfX0pLmNhbGwoaC5wcm90b3R5cGUpLGIuU2VsZWN0aW9uPWh9KSxkZWZpbmUoImFjZS9yYW5nZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnN0YXJ0PXtyb3c6YSxjb2x1bW46Yn0sdGhpcy5lbmQ9e3JvdzpjLGNvbHVtbjpkfX07KGZ1bmN0aW9uKCl7dGhpcy5pc0VxdWFsPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09YS5zdGFydC5yb3cmJnRoaXMuZW5kLnJvdz09YS5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09YS5zdGFydC5jb2x1bW4mJnRoaXMuZW5kLmNvbHVtbj09YS5lbmQuY29sdW1ufSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlOiBbIit0aGlzLnN0YXJ0LnJvdysiLyIrdGhpcy5zdGFydC5jb2x1bW4rIl0gLT4gWyIrdGhpcy5lbmQucm93KyIvIit0aGlzLmVuZC5jb2x1bW4rIl0ifSx0aGlzLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wfSx0aGlzLmNvbXBhcmVSYW5nZT1mdW5jdGlvbihhKXt2YXIgYixjPWEuZW5kLGQ9YS5zdGFydDtyZXR1cm4gYj10aGlzLmNvbXBhcmUoYy5yb3csYy5jb2x1bW4pLGI9PTE/KGI9dGhpcy5jb21wYXJlKGQucm93LGQuY29sdW1uKSxiPT0xPzI6Yj09MD8xOjApOmI9PS0xPy0yOihiPXRoaXMuY29tcGFyZShkLnJvdyxkLmNvbHVtbiksYj09LTE/LTE6Yj09MT80MjowKX0sdGhpcy5jb21wYXJlUG9pbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29tcGFyZShhLnJvdyxhLmNvbHVtbil9LHRoaXMuY29udGFpbnNSYW5nZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jb21wYXJlUG9pbnQoYS5zdGFydCk9PTAmJnRoaXMuY29tcGFyZVBvaW50KGEuZW5kKT09MH0sdGhpcy5pbnRlcnNlY3RzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29tcGFyZVJhbmdlKGEpO3JldHVybiBiPT0tMXx8Yj09MHx8Yj09MX0sdGhpcy5pc0VuZD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVuZC5yb3c9PWEmJnRoaXMuZW5kLmNvbHVtbj09Yn0sdGhpcy5pc1N0YXJ0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1hJiZ0aGlzLnN0YXJ0LmNvbHVtbj09Yn0sdGhpcy5zZXRTdGFydD1mdW5jdGlvbihhLGIpe3R5cGVvZiBhPT0ib2JqZWN0Ij8odGhpcy5zdGFydC5jb2x1bW49YS5jb2x1bW4sdGhpcy5zdGFydC5yb3c9YS5yb3cpOih0aGlzLnN0YXJ0LnJvdz1hLHRoaXMuc3RhcnQuY29sdW1uPWIpfSx0aGlzLnNldEVuZD1mdW5jdGlvbihhLGIpe3R5cGVvZiBhPT0ib2JqZWN0Ij8odGhpcy5lbmQuY29sdW1uPWEuY29sdW1uLHRoaXMuZW5kLnJvdz1hLnJvdyk6KHRoaXMuZW5kLnJvdz1hLHRoaXMuZW5kLmNvbHVtbj1iKX0sdGhpcy5pbnNpZGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTA/dGhpcy5pc0VuZChhLGIpfHx0aGlzLmlzU3RhcnQoYSxiKT8hMTohMDohMX0sdGhpcy5pbnNpZGVTdGFydD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MD90aGlzLmlzRW5kKGEsYik/ITE6ITA6ITF9LHRoaXMuaW5zaWRlRW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wP3RoaXMuaXNTdGFydChhLGIpPyExOiEwOiExfSx0aGlzLmNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hdGhpcy5pc011bHRpTGluZSgpJiZhPT09dGhpcy5zdGFydC5yb3c/Yjx0aGlzLnN0YXJ0LmNvbHVtbj8tMTpiPnRoaXMuZW5kLmNvbHVtbj8xOjA6YTx0aGlzLnN0YXJ0LnJvdz8tMTphPnRoaXMuZW5kLnJvdz8xOnRoaXMuc3RhcnQucm93PT09YT9iPj10aGlzLnN0YXJ0LmNvbHVtbj8wOi0xOnRoaXMuZW5kLnJvdz09PWE/Yjw9dGhpcy5lbmQuY29sdW1uPzA6MTowfSx0aGlzLmNvbXBhcmVTdGFydD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09YSYmdGhpcy5zdGFydC5jb2x1bW49PWI/LTE6dGhpcy5jb21wYXJlKGEsYil9LHRoaXMuY29tcGFyZUVuZD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVuZC5yb3c9PWEmJnRoaXMuZW5kLmNvbHVtbj09Yj8xOnRoaXMuY29tcGFyZShhLGIpfSx0aGlzLmNvbXBhcmVJbnNpZGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lbmQucm93PT1hJiZ0aGlzLmVuZC5jb2x1bW49PWI/MTp0aGlzLnN0YXJ0LnJvdz09YSYmdGhpcy5zdGFydC5jb2x1bW49PWI/LTE6dGhpcy5jb21wYXJlKGEsYil9LHRoaXMuY2xpcFJvd3M9ZnVuY3Rpb24oYSxiKXtpZih0aGlzLmVuZC5yb3c+Yil2YXIgYz17cm93OmIrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c+Yil2YXIgZT17cm93OmIrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c8YSl2YXIgZT17cm93OmEsY29sdW1uOjB9O2lmKHRoaXMuZW5kLnJvdzxhKXZhciBjPXtyb3c6YSxjb2x1bW46MH07cmV0dXJuIGQuZnJvbVBvaW50cyhlfHx0aGlzLnN0YXJ0LGN8fHRoaXMuZW5kKX0sdGhpcy5leHRlbmQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNvbXBhcmUoYSxiKTtpZihjPT0wKXJldHVybiB0aGlzO2lmKGM9PS0xKXZhciBlPXtyb3c6YSxjb2x1bW46Yn07ZWxzZSB2YXIgZj17cm93OmEsY29sdW1uOmJ9O3JldHVybiBkLmZyb21Qb2ludHMoZXx8dGhpcy5zdGFydCxmfHx0aGlzLmVuZCl9LHRoaXMuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09dGhpcy5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09dGhpcy5lbmQuY29sdW1ufSx0aGlzLmlzTXVsdGlMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93IT09dGhpcy5lbmQucm93fSx0aGlzLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIGQuZnJvbVBvaW50cyh0aGlzLnN0YXJ0LHRoaXMuZW5kKX0sdGhpcy5jb2xsYXBzZVJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQuY29sdW1uPT0wP25ldyBkKHRoaXMuc3RhcnQucm93LDAsTWF0aC5tYXgodGhpcy5zdGFydC5yb3csdGhpcy5lbmQucm93LTEpLDApOm5ldyBkKHRoaXMuc3RhcnQucm93LDAsdGhpcy5lbmQucm93LDApfSx0aGlzLnRvU2NyZWVuUmFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5zdGFydCksYz1hLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLmVuZCk7cmV0dXJuIG5ldyBkKGIucm93LGIuY29sdW1uLGMucm93LGMuY29sdW1uKX19KS5jYWxsKGQucHJvdG90eXBlKSxkLmZyb21Qb2ludHM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGQoYS5yb3csYS5jb2x1bW4sYi5yb3csYi5jb2x1bW4pfSxiLlJhbmdlPWR9KSxkZWZpbmUoImFjZS9tb2RlL3RleHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIiLCJhY2UvdW5pY29kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZT1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGY9YSgiLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZz1hKCIuLi91bmljb2RlIiksaD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZCgobmV3IGUpLmdldFJ1bGVzKCkpLHRoaXMuJGJlaGF2aW91cj1uZXcgZn07KGZ1bmN0aW9uKCl7dGhpcy50b2tlblJlPW5ldyBSZWdFeHAoIl5bIitnLnBhY2thZ2VzLkwrZy5wYWNrYWdlcy5NbitnLnBhY2thZ2VzLk1jK2cucGFja2FnZXMuTmQrZy5wYWNrYWdlcy5QYysiXFwkX10rIiwiZyIpLHRoaXMubm9uVG9rZW5SZT1uZXcgUmVnRXhwKCJeKD86W14iK2cucGFja2FnZXMuTCtnLnBhY2thZ2VzLk1uK2cucGFja2FnZXMuTWMrZy5wYWNrYWdlcy5OZCtnLnBhY2thZ2VzLlBjKyJcXCRfXXxzXSkrIiwiZyIpLHRoaXMuZ2V0VG9rZW5pemVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRva2VuaXplcn0sdGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7fSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4iIn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbH0sdGhpcy5oaWdobGlnaHRTZWxlY3Rpb249ZnVuY3Rpb24oYSl7dmFyIGI9YS5zZXNzaW9uO2IuJHNlbGVjdGlvbk9jY3VycmVuY2VzfHwoYi4kc2VsZWN0aW9uT2NjdXJyZW5jZXM9W10pLGIuJHNlbGVjdGlvbk9jY3VycmVuY2VzLmxlbmd0aCYmdGhpcy5jbGVhclNlbGVjdGlvbkhpZ2hsaWdodChhKTt2YXIgYz1hLmdldFNlbGVjdGlvblJhbmdlKCk7aWYoYy5pc0VtcHR5KCl8fGMuaXNNdWx0aUxpbmUoKSlyZXR1cm47dmFyIGQ9Yy5zdGFydC5jb2x1bW4tMSxlPWMuZW5kLmNvbHVtbisxLGY9Yi5nZXRMaW5lKGMuc3RhcnQucm93KSxnPWYubGVuZ3RoLGg9Zi5zdWJzdHJpbmcoTWF0aC5tYXgoZCwwKSxNYXRoLm1pbihlLGcpKTtpZihkPj0wJiYvXltcd1xkXS8udGVzdChoKXx8ZTw9ZyYmL1tcd1xkXSQvLnRlc3QoaCkpcmV0dXJuO2g9Zi5zdWJzdHJpbmcoYy5zdGFydC5jb2x1bW4sYy5lbmQuY29sdW1uKTtpZighL15bXHdcZF0rJC8udGVzdChoKSlyZXR1cm47dmFyIGk9YS5nZXRDdXJzb3JQb3NpdGlvbigpLGo9e3dyYXA6ITAsd2hvbGVXb3JkOiEwLGNhc2VTZW5zaXRpdmU6ITAsbmVlZGxlOmh9LGs9YS4kc2VhcmNoLmdldE9wdGlvbnMoKTthLiRzZWFyY2guc2V0KGopO3ZhciBsPWEuJHNlYXJjaC5maW5kQWxsKGIpO2wuZm9yRWFjaChmdW5jdGlvbihhKXtpZighYS5jb250YWlucyhpLnJvdyxpLmNvbHVtbikpe3ZhciBjPWIuYWRkTWFya2VyKGEsImFjZV9zZWxlY3RlZF93b3JkIiwidGV4dCIpO2IuJHNlbGVjdGlvbk9jY3VycmVuY2VzLnB1c2goYyl9fSksYS4kc2VhcmNoLnNldChrKX0sdGhpcy5jbGVhclNlbGVjdGlvbkhpZ2hsaWdodD1mdW5jdGlvbihhKXtpZighYS5zZXNzaW9uLiRzZWxlY3Rpb25PY2N1cnJlbmNlcylyZXR1cm47YS5zZXNzaW9uLiRzZWxlY3Rpb25PY2N1cnJlbmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Euc2Vzc2lvbi5yZW1vdmVNYXJrZXIoYil9KSxhLnNlc3Npb24uJHNlbGVjdGlvbk9jY3VycmVuY2VzPVtdfSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXM9ZnVuY3Rpb24oYSl7aWYoIXRoaXMuJGVtYmVkcylyZXR1cm47dGhpcy4kbW9kZXM9e307Zm9yKHZhciBiPTA7Yjx0aGlzLiRlbWJlZHMubGVuZ3RoO2IrKylhW3RoaXMuJGVtYmVkc1tiXV0mJih0aGlzLiRtb2Rlc1t0aGlzLiRlbWJlZHNbYl1dPW5ldyBhW3RoaXMuJGVtYmVkc1tiXV0pO3ZhciBjPVsidG9nZ2xlQ29tbWVudExpbmVzIiwiZ2V0TmV4dExpbmVJbmRlbnQiLCJjaGVja091dGRlbnQiLCJhdXRvT3V0ZGVudCIsInRyYW5zZm9ybUFjdGlvbiJdO2Zvcih2YXIgYj0wO2I8Yy5sZW5ndGg7YisrKShmdW5jdGlvbihhKXt2YXIgZD1jW2JdLGU9YVtkXTthW2NbYl1dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGRlbGVnYXRvcihkLGFyZ3VtZW50cyxlKX19KSh0aGlzKX0sdGhpcy4kZGVsZWdhdG9yPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iWzBdO2Zvcih2YXIgZT0wO2U8dGhpcy4kZW1iZWRzLmxlbmd0aDtlKyspe2lmKCF0aGlzLiRtb2Rlc1t0aGlzLiRlbWJlZHNbZV1dKWNvbnRpbnVlO3ZhciBmPWQuc3BsaXQodGhpcy4kZW1iZWRzW2VdKTtpZighZlswXSYmZlsxXSl7YlswXT1mWzFdO3ZhciBnPXRoaXMuJG1vZGVzW3RoaXMuJGVtYmVkc1tlXV07cmV0dXJuIGdbYV0uYXBwbHkoZyxiKX19dmFyIGg9Yy5hcHBseSh0aGlzLGIpO3JldHVybiBjP2g6dW5kZWZpbmVkfSx0aGlzLnRyYW5zZm9ybUFjdGlvbj1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKHRoaXMuJGJlaGF2aW91cil7dmFyIGY9dGhpcy4kYmVoYXZpb3VyLmdldEJlaGF2aW91cnMoKTtmb3IodmFyIGcgaW4gZilpZihmW2ddW2JdKXt2YXIgaD1mW2ddW2JdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihoKXJldHVybiBofX19fSkuY2FsbChoLnByb3RvdHlwZSksYi5Nb2RlPWh9KSxkZWZpbmUoImFjZS90b2tlbml6ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSxiKXtiPWI/ImciK2I6ImciLHRoaXMucnVsZXM9YSx0aGlzLnJlZ0V4cHM9e30sdGhpcy5tYXRjaE1hcHBpbmdzPXt9O2Zvcih2YXIgYyBpbiB0aGlzLnJ1bGVzKXt2YXIgZD10aGlzLnJ1bGVzW2NdLGU9ZCxmPVtdLGc9MCxoPXRoaXMubWF0Y2hNYXBwaW5nc1tjXT17fTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7ZVtpXS5yZWdleCBpbnN0YW5jZW9mIFJlZ0V4cCYmKGVbaV0ucmVnZXg9ZVtpXS5yZWdleC50b1N0cmluZygpLnNsaWNlKDEsLTEpKTt2YXIgaj0obmV3IFJlZ0V4cCgiKD86KCIrZVtpXS5yZWdleCsiKXwoLikpIikpLmV4ZWMoImEiKS5sZW5ndGgtMixrPWVbaV0ucmVnZXgucmVwbGFjZSgvXFwoWzAtOV0rKS9nLGZ1bmN0aW9uKGEsYil7cmV0dXJuIlxcIisocGFyc2VJbnQoYiwxMCkrZysxKX0pO2lmKGo+MSYmZVtpXS50b2tlbi5sZW5ndGghPT1qLTEpdGhyb3cgbmV3IEVycm9yKCJNYXRjaGluZyBncm91cHMgYW5kIGxlbmd0aCBvZiB0aGUgdG9rZW4gYXJyYXkgZG9uJ3QgbWF0Y2ggaW4gcnVsZSAjIitpKyIgb2Ygc3RhdGUgIitjKTtoW2ddPXtydWxlOmksbGVuOmp9LGcrPWosZi5wdXNoKGspfXRoaXMucmVnRXhwc1tjXT1uZXcgUmVnRXhwKCIoPzooIitmLmpvaW4oIil8KCIpKyIpfCguKSkiLGIpfX07KGZ1bmN0aW9uKCl7dGhpcy5nZXRMaW5lVG9rZW5zPWZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8InN0YXJ0IixkPXRoaXMucnVsZXNbY10sZT10aGlzLm1hdGNoTWFwcGluZ3NbY10sZj10aGlzLnJlZ0V4cHNbY107Zi5sYXN0SW5kZXg9MDt2YXIgZyxoPVtdLGk9MCxqPXt0eXBlOm51bGwsdmFsdWU6IiJ9O3doaWxlKGc9Zi5leGVjKGEpKXt2YXIgaz0idGV4dCIsbD1udWxsLG09W2dbMF1dO2Zvcih2YXIgbj0wO248Zy5sZW5ndGgtMjtuKyspe2lmKGdbbisxXT09PXVuZGVmaW5lZCljb250aW51ZTtsPWRbZVtuXS5ydWxlXSxlW25dLmxlbj4xJiYobT1nLnNsaWNlKG4rMixuKzErZVtuXS5sZW4pKSx0eXBlb2YgbC50b2tlbj09ImZ1bmN0aW9uIj9rPWwudG9rZW4uYXBwbHkodGhpcyxtKTprPWwudG9rZW4sbC5uZXh0JiYoYz1sLm5leHQsZD10aGlzLnJ1bGVzW2NdLGU9dGhpcy5tYXRjaE1hcHBpbmdzW2NdLGk9Zi5sYXN0SW5kZXgsZj10aGlzLnJlZ0V4cHNbY10sZi5sYXN0SW5kZXg9aSk7YnJlYWt9aWYobVswXSl7dHlwZW9mIGs9PSJzdHJpbmciJiYobT1bbS5qb2luKCIiKV0saz1ba10pO2Zvcih2YXIgbj0wO248bS5sZW5ndGg7bisrKXtpZighbVtuXSljb250aW51ZTsoIWx8fGwubWVyZ2V8fGtbbl09PT0idGV4dCIpJiZqLnR5cGU9PT1rW25dP2oudmFsdWUrPW1bbl06KGoudHlwZSYmaC5wdXNoKGopLGo9e3R5cGU6a1tuXSx2YWx1ZTptW25dfSl9fWlmKGk9PWEubGVuZ3RoKWJyZWFrO2k9Zi5sYXN0SW5kZXh9cmV0dXJuIGoudHlwZSYmaC5wdXNoKGopLHt0b2tlbnM6aCxzdGF0ZTpjfX19KS5jYWxsKGQucHJvdG90eXBlKSxiLlRva2VuaXplcj1kfSksZGVmaW5lKCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvbGFuZyIpLGU9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiZW1wdHlfbGluZSIscmVnZXg6Il4kIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiLisifV19fTsoZnVuY3Rpb24oKXt0aGlzLmFkZFJ1bGVzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGEpe3ZhciBkPWFbY107Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe3ZhciBmPWRbZV07Zi5uZXh0JiYoZi5uZXh0PWIrZi5uZXh0KX10aGlzLiRydWxlc1tiK2NdPWR9fSx0aGlzLmdldFJ1bGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJ1bGVzfSx0aGlzLmVtYmVkUnVsZXM9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9KG5ldyBhKS5nZXRSdWxlcygpO2lmKGUpZm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKyspZVtnXT1iK2VbZ107ZWxzZXtlPVtdO2Zvcih2YXIgaCBpbiBmKWUucHVzaChiK2gpfXRoaXMuYWRkUnVsZXMoZixiKTtmb3IodmFyIGc9MDtnPGUubGVuZ3RoO2crKylBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseSh0aGlzLiRydWxlc1tlW2ddXSxkLmRlZXBDb3B5KGMpKTt0aGlzLiRlbWJlZHN8fCh0aGlzLiRlbWJlZHM9W10pLHRoaXMuJGVtYmVkcy5wdXNoKGIpfSx0aGlzLmdldEVtYmVkcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbWJlZHN9fSkuY2FsbChlLnByb3RvdHlwZSksYi5UZXh0SGlnaGxpZ2h0UnVsZXM9ZX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKCl7dGhpcy4kYmVoYXZpb3Vycz17fX07KGZ1bmN0aW9uKCl7dGhpcy5hZGQ9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaCh1bmRlZmluZWQpe2Nhc2UgdGhpcy4kYmVoYXZpb3Vyczp0aGlzLiRiZWhhdmlvdXJzPXt9O2Nhc2UgdGhpcy4kYmVoYXZpb3Vyc1thXTp0aGlzLiRiZWhhdmlvdXJzW2FdPXt9fXRoaXMuJGJlaGF2aW91cnNbYV1bYl09Y30sdGhpcy5hZGRCZWhhdmlvdXJzPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKWZvcih2YXIgYyBpbiBhW2JdKXRoaXMuYWRkKGIsYyxhW2JdW2NdKX0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oYSl7dGhpcy4kYmVoYXZpb3VycyYmdGhpcy4kYmVoYXZpb3Vyc1thXSYmZGVsZXRlIHRoaXMuJGJlaGF2aW91cnNbYV19LHRoaXMuaW5oZXJpdD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXZhciBjPShuZXcgYSkuZ2V0QmVoYXZpb3VycyhiKTtlbHNlIHZhciBjPWEuZ2V0QmVoYXZpb3VycyhiKTt0aGlzLmFkZEJlaGF2aW91cnMoYyl9LHRoaXMuZ2V0QmVoYXZpb3Vycz1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gdGhpcy4kYmVoYXZpb3Vyczt2YXIgYj17fTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl0aGlzLiRiZWhhdmlvdXJzW2FbY11dJiYoYlthW2NdXT10aGlzLiRiZWhhdmlvdXJzW2FbY11dKTtyZXR1cm4gYn19KS5jYWxsKGQucHJvdG90eXBlKSxiLkJlaGF2aW91cj1kfSksZGVmaW5lKCJhY2UvdW5pY29kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3ZhciBjPS9cd3s0fS9nO2Zvcih2YXIgZCBpbiBhKWIucGFja2FnZXNbZF09YVtkXS5yZXBsYWNlKGMsIlxcdSQmIil9Yi5wYWNrYWdlcz17fSxkKHtMOiIwMDQxLTAwNUEwMDYxLTAwN0EwMEFBMDBCNTAwQkEwMEMwLTAwRDYwMEQ4LTAwRjYwMEY4LTAyQzEwMkM2LTAyRDEwMkUwLTAyRTQwMkVDMDJFRTAzNzAtMDM3NDAzNzYwMzc3MDM3QS0wMzdEMDM4NjAzODgtMDM4QTAzOEMwMzhFLTAzQTEwM0EzLTAzRjUwM0Y3LTA0ODEwNDhBLTA1MjUwNTMxLTA1NTYwNTU5MDU2MS0wNTg3MDVEMC0wNUVBMDVGMC0wNUYyMDYyMS0wNjRBMDY2RTA2NkYwNjcxLTA2RDMwNkQ1MDZFNTA2RTYwNkVFMDZFRjA2RkEtMDZGQzA2RkYwNzEwMDcxMi0wNzJGMDc0RC0wN0E1MDdCMTA3Q0EtMDdFQTA3RjQwN0Y1MDdGQTA4MDAtMDgxNTA4MUEwODI0MDgyODA5MDQtMDkzOTA5M0QwOTUwMDk1OC0wOTYxMDk3MTA5NzIwOTc5LTA5N0YwOTg1LTA5OEMwOThGMDk5MDA5OTMtMDlBODA5QUEtMDlCMDA5QjIwOUI2LTA5QjkwOUJEMDlDRTA5REMwOUREMDlERi0wOUUxMDlGMDA5RjEwQTA1LTBBMEEwQTBGMEExMDBBMTMtMEEyODBBMkEtMEEzMDBBMzIwQTMzMEEzNTBBMzYwQTM4MEEzOTBBNTktMEE1QzBBNUUwQTcyLTBBNzQwQTg1LTBBOEQwQThGLTBBOTEwQTkzLTBBQTgwQUFBLTBBQjAwQUIyMEFCMzBBQjUtMEFCOTBBQkQwQUQwMEFFMDBBRTEwQjA1LTBCMEMwQjBGMEIxMDBCMTMtMEIyODBCMkEtMEIzMDBCMzIwQjMzMEIzNS0wQjM5MEIzRDBCNUMwQjVEMEI1Ri0wQjYxMEI3MTBCODMwQjg1LTBCOEEwQjhFLTBCOTAwQjkyLTBCOTUwQjk5MEI5QTBCOUMwQjlFMEI5RjBCQTMwQkE0MEJBOC0wQkFBMEJBRS0wQkI5MEJEMDBDMDUtMEMwQzBDMEUtMEMxMDBDMTItMEMyODBDMkEtMEMzMzBDMzUtMEMzOTBDM0QwQzU4MEM1OTBDNjAwQzYxMEM4NS0wQzhDMEM4RS0wQzkwMEM5Mi0wQ0E4MENBQS0wQ0IzMENCNS0wQ0I5MENCRDBDREUwQ0UwMENFMTBEMDUtMEQwQzBEMEUtMEQxMDBEMTItMEQyODBEMkEtMEQzOTBEM0QwRDYwMEQ2MTBEN0EtMEQ3RjBEODUtMEQ5NjBEOUEtMERCMTBEQjMtMERCQjBEQkQwREMwLTBEQzYwRTAxLTBFMzAwRTMyMEUzMzBFNDAtMEU0NjBFODEwRTgyMEU4NDBFODcwRTg4MEU4QTBFOEQwRTk0LTBFOTcwRTk5LTBFOUYwRUExLTBFQTMwRUE1MEVBNzBFQUEwRUFCMEVBRC0wRUIwMEVCMjBFQjMwRUJEMEVDMC0wRUM0MEVDNjBFREMwRUREMEYwMDBGNDAtMEY0NzBGNDktMEY2QzBGODgtMEY4QjEwMDAtMTAyQTEwM0YxMDUwLTEwNTUxMDVBLTEwNUQxMDYxMTA2NTEwNjYxMDZFLTEwNzAxMDc1LTEwODExMDhFMTBBMC0xMEM1MTBEMC0xMEZBMTBGQzExMDAtMTI0ODEyNEEtMTI0RDEyNTAtMTI1NjEyNTgxMjVBLTEyNUQxMjYwLTEyODgxMjhBLTEyOEQxMjkwLTEyQjAxMkIyLTEyQjUxMkI4LTEyQkUxMkMwMTJDMi0xMkM1MTJDOC0xMkQ2MTJEOC0xMzEwMTMxMi0xMzE1MTMxOC0xMzVBMTM4MC0xMzhGMTNBMC0xM0Y0MTQwMS0xNjZDMTY2Ri0xNjdGMTY4MS0xNjlBMTZBMC0xNkVBMTcwMC0xNzBDMTcwRS0xNzExMTcyMC0xNzMxMTc0MC0xNzUxMTc2MC0xNzZDMTc2RS0xNzcwMTc4MC0xN0IzMTdENzE3REMxODIwLTE4NzcxODgwLTE4QTgxOEFBMThCMC0xOEY1MTkwMC0xOTFDMTk1MC0xOTZEMTk3MC0xOTc0MTk4MC0xOUFCMTlDMS0xOUM3MUEwMC0xQTE2MUEyMC0xQTU0MUFBNzFCMDUtMUIzMzFCNDUtMUI0QjFCODMtMUJBMDFCQUUxQkFGMUMwMC0xQzIzMUM0RC0xQzRGMUM1QS0xQzdEMUNFOS0xQ0VDMUNFRS0xQ0YxMUQwMC0xREJGMUUwMC0xRjE1MUYxOC0xRjFEMUYyMC0xRjQ1MUY0OC0xRjREMUY1MC0xRjU3MUY1OTFGNUIxRjVEMUY1Ri0xRjdEMUY4MC0xRkI0MUZCNi0xRkJDMUZCRTFGQzItMUZDNDFGQzYtMUZDQzFGRDAtMUZEMzFGRDYtMUZEQjFGRTAtMUZFQzFGRjItMUZGNDFGRjYtMUZGQzIwNzEyMDdGMjA5MC0yMDk0MjEwMjIxMDcyMTBBLTIxMTMyMTE1MjExOS0yMTFEMjEyNDIxMjYyMTI4MjEyQS0yMTJEMjEyRi0yMTM5MjEzQy0yMTNGMjE0NS0yMTQ5MjE0RTIxODMyMTg0MkMwMC0yQzJFMkMzMC0yQzVFMkM2MC0yQ0U0MkNFQi0yQ0VFMkQwMC0yRDI1MkQzMC0yRDY1MkQ2RjJEODAtMkQ5NjJEQTAtMkRBNjJEQTgtMkRBRTJEQjAtMkRCNjJEQjgtMkRCRTJEQzAtMkRDNjJEQzgtMkRDRTJERDAtMkRENjJERDgtMkRERTJFMkYzMDA1MzAwNjMwMzEtMzAzNTMwM0IzMDNDMzA0MS0zMDk2MzA5RC0zMDlGMzBBMS0zMEZBMzBGQy0zMEZGMzEwNS0zMTJEMzEzMS0zMThFMzFBMC0zMUI3MzFGMC0zMUZGMzQwMC00REI1NEUwMC05RkNCQTAwMC1BNDhDQTREMC1BNEZEQTUwMC1BNjBDQTYxMC1BNjFGQTYyQUE2MkJBNjQwLUE2NUZBNjYyLUE2NkVBNjdGLUE2OTdBNkEwLUE2RTVBNzE3LUE3MUZBNzIyLUE3ODhBNzhCQTc4Q0E3RkItQTgwMUE4MDMtQTgwNUE4MDctQTgwQUE4MEMtQTgyMkE4NDAtQTg3M0E4ODItQThCM0E4RjItQThGN0E4RkJBOTBBLUE5MjVBOTMwLUE5NDZBOTYwLUE5N0NBOTg0LUE5QjJBOUNGQUEwMC1BQTI4QUE0MC1BQTQyQUE0NC1BQTRCQUE2MC1BQTc2QUE3QUFBODAtQUFBRkFBQjFBQUI1QUFCNkFBQjktQUFCREFBQzBBQUMyQUFEQi1BQUREQUJDMC1BQkUyQUMwMC1EN0EzRDdCMC1EN0M2RDdDQi1EN0ZCRjkwMC1GQTJERkEzMC1GQTZERkE3MC1GQUQ5RkIwMC1GQjA2RkIxMy1GQjE3RkIxREZCMUYtRkIyOEZCMkEtRkIzNkZCMzgtRkIzQ0ZCM0VGQjQwRkI0MUZCNDNGQjQ0RkI0Ni1GQkIxRkJEMy1GRDNERkQ1MC1GRDhGRkQ5Mi1GREM3RkRGMC1GREZCRkU3MC1GRTc0RkU3Ni1GRUZDRkYyMS1GRjNBRkY0MS1GRjVBRkY2Ni1GRkJFRkZDMi1GRkM3RkZDQS1GRkNGRkZEMi1GRkQ3RkZEQS1GRkRDIixMbDoiMDA2MS0wMDdBMDBBQTAwQjUwMEJBMDBERi0wMEY2MDBGOC0wMEZGMDEwMTAxMDMwMTA1MDEwNzAxMDkwMTBCMDEwRDAxMEYwMTExMDExMzAxMTUwMTE3MDExOTAxMUIwMTFEMDExRjAxMjEwMTIzMDEyNTAxMjcwMTI5MDEyQjAxMkQwMTJGMDEzMTAxMzMwMTM1MDEzNzAxMzgwMTNBMDEzQzAxM0UwMTQwMDE0MjAxNDQwMTQ2MDE0ODAxNDkwMTRCMDE0RDAxNEYwMTUxMDE1MzAxNTUwMTU3MDE1OTAxNUIwMTVEMDE1RjAxNjEwMTYzMDE2NTAxNjcwMTY5MDE2QjAxNkQwMTZGMDE3MTAxNzMwMTc1MDE3NzAxN0EwMTdDMDE3RS0wMTgwMDE4MzAxODUwMTg4MDE4QzAxOEQwMTkyMDE5NTAxOTktMDE5QjAxOUUwMUExMDFBMzAxQTUwMUE4MDFBQTAxQUIwMUFEMDFCMDAxQjQwMUI2MDFCOTAxQkEwMUJELTAxQkYwMUM2MDFDOTAxQ0MwMUNFMDFEMDAxRDIwMUQ0MDFENjAxRDgwMURBMDFEQzAxREQwMURGMDFFMTAxRTMwMUU1MDFFNzAxRTkwMUVCMDFFRDAxRUYwMUYwMDFGMzAxRjUwMUY5MDFGQjAxRkQwMUZGMDIwMTAyMDMwMjA1MDIwNzAyMDkwMjBCMDIwRDAyMEYwMjExMDIxMzAyMTUwMjE3MDIxOTAyMUIwMjFEMDIxRjAyMjEwMjIzMDIyNTAyMjcwMjI5MDIyQjAyMkQwMjJGMDIzMTAyMzMtMDIzOTAyM0MwMjNGMDI0MDAyNDIwMjQ3MDI0OTAyNEIwMjREMDI0Ri0wMjkzMDI5NS0wMkFGMDM3MTAzNzMwMzc3MDM3Qi0wMzdEMDM5MDAzQUMtMDNDRTAzRDAwM0QxMDNENS0wM0Q3MDNEOTAzREIwM0REMDNERjAzRTEwM0UzMDNFNTAzRTcwM0U5MDNFQjAzRUQwM0VGLTAzRjMwM0Y1MDNGODAzRkIwM0ZDMDQzMC0wNDVGMDQ2MTA0NjMwNDY1MDQ2NzA0NjkwNDZCMDQ2RDA0NkYwNDcxMDQ3MzA0NzUwNDc3MDQ3OTA0N0IwNDdEMDQ3RjA0ODEwNDhCMDQ4RDA0OEYwNDkxMDQ5MzA0OTUwNDk3MDQ5OTA0OUIwNDlEMDQ5RjA0QTEwNEEzMDRBNTA0QTcwNEE5MDRBQjA0QUQwNEFGMDRCMTA0QjMwNEI1MDRCNzA0QjkwNEJCMDRCRDA0QkYwNEMyMDRDNDA0QzYwNEM4MDRDQTA0Q0MwNENFMDRDRjA0RDEwNEQzMDRENTA0RDcwNEQ5MDREQjA0REQwNERGMDRFMTA0RTMwNEU1MDRFNzA0RTkwNEVCMDRFRDA0RUYwNEYxMDRGMzA0RjUwNEY3MDRGOTA0RkIwNEZEMDRGRjA1MDEwNTAzMDUwNTA1MDcwNTA5MDUwQjA1MEQwNTBGMDUxMTA1MTMwNTE1MDUxNzA1MTkwNTFCMDUxRDA1MUYwNTIxMDUyMzA1MjUwNTYxLTA1ODcxRDAwLTFEMkIxRDYyLTFENzcxRDc5LTFEOUExRTAxMUUwMzFFMDUxRTA3MUUwOTFFMEIxRTBEMUUwRjFFMTExRTEzMUUxNTFFMTcxRTE5MUUxQjFFMUQxRTFGMUUyMTFFMjMxRTI1MUUyNzFFMjkxRTJCMUUyRDFFMkYxRTMxMUUzMzFFMzUxRTM3MUUzOTFFM0IxRTNEMUUzRjFFNDExRTQzMUU0NTFFNDcxRTQ5MUU0QjFFNEQxRTRGMUU1MTFFNTMxRTU1MUU1NzFFNTkxRTVCMUU1RDFFNUYxRTYxMUU2MzFFNjUxRTY3MUU2OTFFNkIxRTZEMUU2RjFFNzExRTczMUU3NTFFNzcxRTc5MUU3QjFFN0QxRTdGMUU4MTFFODMxRTg1MUU4NzFFODkxRThCMUU4RDFFOEYxRTkxMUU5MzFFOTUtMUU5RDFFOUYxRUExMUVBMzFFQTUxRUE3MUVBOTFFQUIxRUFEMUVBRjFFQjExRUIzMUVCNTFFQjcxRUI5MUVCQjFFQkQxRUJGMUVDMTFFQzMxRUM1MUVDNzFFQzkxRUNCMUVDRDFFQ0YxRUQxMUVEMzFFRDUxRUQ3MUVEOTFFREIxRUREMUVERjFFRTExRUUzMUVFNTFFRTcxRUU5MUVFQjFFRUQxRUVGMUVGMTFFRjMxRUY1MUVGNzFFRjkxRUZCMUVGRDFFRkYtMUYwNzFGMTAtMUYxNTFGMjAtMUYyNzFGMzAtMUYzNzFGNDAtMUY0NTFGNTAtMUY1NzFGNjAtMUY2NzFGNzAtMUY3RDFGODAtMUY4NzFGOTAtMUY5NzFGQTAtMUZBNzFGQjAtMUZCNDFGQjYxRkI3MUZCRTFGQzItMUZDNDFGQzYxRkM3MUZEMC0xRkQzMUZENjFGRDcxRkUwLTFGRTcxRkYyLTFGRjQxRkY2MUZGNzIxMEEyMTBFMjEwRjIxMTMyMTJGMjEzNDIxMzkyMTNDMjEzRDIxNDYtMjE0OTIxNEUyMTg0MkMzMC0yQzVFMkM2MTJDNjUyQzY2MkM2ODJDNkEyQzZDMkM3MTJDNzMyQzc0MkM3Ni0yQzdDMkM4MTJDODMyQzg1MkM4NzJDODkyQzhCMkM4RDJDOEYyQzkxMkM5MzJDOTUyQzk3MkM5OTJDOUIyQzlEMkM5RjJDQTEyQ0EzMkNBNTJDQTcyQ0E5MkNBQjJDQUQyQ0FGMkNCMTJDQjMyQ0I1MkNCNzJDQjkyQ0JCMkNCRDJDQkYyQ0MxMkNDMzJDQzUyQ0M3MkNDOTJDQ0IyQ0NEMkNDRjJDRDEyQ0QzMkNENTJDRDcyQ0Q5MkNEQjJDREQyQ0RGMkNFMTJDRTMyQ0U0MkNFQzJDRUUyRDAwLTJEMjVBNjQxQTY0M0E2NDVBNjQ3QTY0OUE2NEJBNjREQTY0RkE2NTFBNjUzQTY1NUE2NTdBNjU5QTY1QkE2NURBNjVGQTY2M0E2NjVBNjY3QTY2OUE2NkJBNjZEQTY4MUE2ODNBNjg1QTY4N0E2ODlBNjhCQTY4REE2OEZBNjkxQTY5M0E2OTVBNjk3QTcyM0E3MjVBNzI3QTcyOUE3MkJBNzJEQTcyRi1BNzMxQTczM0E3MzVBNzM3QTczOUE3M0JBNzNEQTczRkE3NDFBNzQzQTc0NUE3NDdBNzQ5QTc0QkE3NERBNzRGQTc1MUE3NTNBNzU1QTc1N0E3NTlBNzVCQTc1REE3NUZBNzYxQTc2M0E3NjVBNzY3QTc2OUE3NkJBNzZEQTc2RkE3NzEtQTc3OEE3N0FBNzdDQTc3RkE3ODFBNzgzQTc4NUE3ODdBNzhDRkIwMC1GQjA2RkIxMy1GQjE3RkY0MS1GRjVBIixMdToiMDA0MS0wMDVBMDBDMC0wMEQ2MDBEOC0wMERFMDEwMDAxMDIwMTA0MDEwNjAxMDgwMTBBMDEwQzAxMEUwMTEwMDExMjAxMTQwMTE2MDExODAxMUEwMTFDMDExRTAxMjAwMTIyMDEyNDAxMjYwMTI4MDEyQTAxMkMwMTJFMDEzMDAxMzIwMTM0MDEzNjAxMzkwMTNCMDEzRDAxM0YwMTQxMDE0MzAxNDUwMTQ3MDE0QTAxNEMwMTRFMDE1MDAxNTIwMTU0MDE1NjAxNTgwMTVBMDE1QzAxNUUwMTYwMDE2MjAxNjQwMTY2MDE2ODAxNkEwMTZDMDE2RTAxNzAwMTcyMDE3NDAxNzYwMTc4MDE3OTAxN0IwMTdEMDE4MTAxODIwMTg0MDE4NjAxODcwMTg5LTAxOEIwMThFLTAxOTEwMTkzMDE5NDAxOTYtMDE5ODAxOUMwMTlEMDE5RjAxQTAwMUEyMDFBNDAxQTYwMUE3MDFBOTAxQUMwMUFFMDFBRjAxQjEtMDFCMzAxQjUwMUI3MDFCODAxQkMwMUM0MDFDNzAxQ0EwMUNEMDFDRjAxRDEwMUQzMDFENTAxRDcwMUQ5MDFEQjAxREUwMUUwMDFFMjAxRTQwMUU2MDFFODAxRUEwMUVDMDFFRTAxRjEwMUY0MDFGNi0wMUY4MDFGQTAxRkMwMUZFMDIwMDAyMDIwMjA0MDIwNjAyMDgwMjBBMDIwQzAyMEUwMjEwMDIxMjAyMTQwMjE2MDIxODAyMUEwMjFDMDIxRTAyMjAwMjIyMDIyNDAyMjYwMjI4MDIyQTAyMkMwMjJFMDIzMDAyMzIwMjNBMDIzQjAyM0QwMjNFMDI0MTAyNDMtMDI0NjAyNDgwMjRBMDI0QzAyNEUwMzcwMDM3MjAzNzYwMzg2MDM4OC0wMzhBMDM4QzAzOEUwMzhGMDM5MS0wM0ExMDNBMy0wM0FCMDNDRjAzRDItMDNENDAzRDgwM0RBMDNEQzAzREUwM0UwMDNFMjAzRTQwM0U2MDNFODAzRUEwM0VDMDNFRTAzRjQwM0Y3MDNGOTAzRkEwM0ZELTA0MkYwNDYwMDQ2MjA0NjQwNDY2MDQ2ODA0NkEwNDZDMDQ2RTA0NzAwNDcyMDQ3NDA0NzYwNDc4MDQ3QTA0N0MwNDdFMDQ4MDA0OEEwNDhDMDQ4RTA0OTAwNDkyMDQ5NDA0OTYwNDk4MDQ5QTA0OUMwNDlFMDRBMDA0QTIwNEE0MDRBNjA0QTgwNEFBMDRBQzA0QUUwNEIwMDRCMjA0QjQwNEI2MDRCODA0QkEwNEJDMDRCRTA0QzAwNEMxMDRDMzA0QzUwNEM3MDRDOTA0Q0IwNENEMDREMDA0RDIwNEQ0MDRENjA0RDgwNERBMDREQzA0REUwNEUwMDRFMjA0RTQwNEU2MDRFODA0RUEwNEVDMDRFRTA0RjAwNEYyMDRGNDA0RjYwNEY4MDRGQTA0RkMwNEZFMDUwMDA1MDIwNTA0MDUwNjA1MDgwNTBBMDUwQzA1MEUwNTEwMDUxMjA1MTQwNTE2MDUxODA1MUEwNTFDMDUxRTA1MjAwNTIyMDUyNDA1MzEtMDU1NjEwQTAtMTBDNTFFMDAxRTAyMUUwNDFFMDYxRTA4MUUwQTFFMEMxRTBFMUUxMDFFMTIxRTE0MUUxNjFFMTgxRTFBMUUxQzFFMUUxRTIwMUUyMjFFMjQxRTI2MUUyODFFMkExRTJDMUUyRTFFMzAxRTMyMUUzNDFFMzYxRTM4MUUzQTFFM0MxRTNFMUU0MDFFNDIxRTQ0MUU0NjFFNDgxRTRBMUU0QzFFNEUxRTUwMUU1MjFFNTQxRTU2MUU1ODFFNUExRTVDMUU1RTFFNjAxRTYyMUU2NDFFNjYxRTY4MUU2QTFFNkMxRTZFMUU3MDFFNzIxRTc0MUU3NjFFNzgxRTdBMUU3QzFFN0UxRTgwMUU4MjFFODQxRTg2MUU4ODFFOEExRThDMUU4RTFFOTAxRTkyMUU5NDFFOUUxRUEwMUVBMjFFQTQxRUE2MUVBODFFQUExRUFDMUVBRTFFQjAxRUIyMUVCNDFFQjYxRUI4MUVCQTFFQkMxRUJFMUVDMDFFQzIxRUM0MUVDNjFFQzgxRUNBMUVDQzFFQ0UxRUQwMUVEMjFFRDQxRUQ2MUVEODFFREExRURDMUVERTFFRTAxRUUyMUVFNDFFRTYxRUU4MUVFQTFFRUMxRUVFMUVGMDFFRjIxRUY0MUVGNjFFRjgxRUZBMUVGQzFFRkUxRjA4LTFGMEYxRjE4LTFGMUQxRjI4LTFGMkYxRjM4LTFGM0YxRjQ4LTFGNEQxRjU5MUY1QjFGNUQxRjVGMUY2OC0xRjZGMUZCOC0xRkJCMUZDOC0xRkNCMUZEOC0xRkRCMUZFOC0xRkVDMUZGOC0xRkZCMjEwMjIxMDcyMTBCLTIxMEQyMTEwLTIxMTIyMTE1MjExOS0yMTFEMjEyNDIxMjYyMTI4MjEyQS0yMTJEMjEzMC0yMTMzMjEzRTIxM0YyMTQ1MjE4MzJDMDAtMkMyRTJDNjAyQzYyLTJDNjQyQzY3MkM2OTJDNkIyQzZELTJDNzAyQzcyMkM3NTJDN0UtMkM4MDJDODIyQzg0MkM4NjJDODgyQzhBMkM4QzJDOEUyQzkwMkM5MjJDOTQyQzk2MkM5ODJDOUEyQzlDMkM5RTJDQTAyQ0EyMkNBNDJDQTYyQ0E4MkNBQTJDQUMyQ0FFMkNCMDJDQjIyQ0I0MkNCNjJDQjgyQ0JBMkNCQzJDQkUyQ0MwMkNDMjJDQzQyQ0M2MkNDODJDQ0EyQ0NDMkNDRTJDRDAyQ0QyMkNENDJDRDYyQ0Q4MkNEQTJDREMyQ0RFMkNFMDJDRTIyQ0VCMkNFREE2NDBBNjQyQTY0NEE2NDZBNjQ4QTY0QUE2NENBNjRFQTY1MEE2NTJBNjU0QTY1NkE2NThBNjVBQTY1Q0E2NUVBNjYyQTY2NEE2NjZBNjY4QTY2QUE2NkNBNjgwQTY4MkE2ODRBNjg2QTY4OEE2OEFBNjhDQTY4RUE2OTBBNjkyQTY5NEE2OTZBNzIyQTcyNEE3MjZBNzI4QTcyQUE3MkNBNzJFQTczMkE3MzRBNzM2QTczOEE3M0FBNzNDQTczRUE3NDBBNzQyQTc0NEE3NDZBNzQ4QTc0QUE3NENBNzRFQTc1MEE3NTJBNzU0QTc1NkE3NThBNzVBQTc1Q0E3NUVBNzYwQTc2MkE3NjRBNzY2QTc2OEE3NkFBNzZDQTc2RUE3NzlBNzdCQTc3REE3N0VBNzgwQTc4MkE3ODRBNzg2QTc4QkZGMjEtRkYzQSIsTHQ6IjAxQzUwMUM4MDFDQjAxRjIxRjg4LTFGOEYxRjk4LTFGOUYxRkE4LTFGQUYxRkJDMUZDQzFGRkMiLExtOiIwMkIwLTAyQzEwMkM2LTAyRDEwMkUwLTAyRTQwMkVDMDJFRTAzNzQwMzdBMDU1OTA2NDAwNkU1MDZFNjA3RjQwN0Y1MDdGQTA4MUEwODI0MDgyODA5NzEwRTQ2MEVDNjEwRkMxN0Q3MTg0MzFBQTcxQzc4LTFDN0QxRDJDLTFENjExRDc4MUQ5Qi0xREJGMjA3MTIwN0YyMDkwLTIwOTQyQzdEMkQ2RjJFMkYzMDA1MzAzMS0zMDM1MzAzQjMwOUQzMDlFMzBGQy0zMEZFQTAxNUE0RjgtQTRGREE2MENBNjdGQTcxNy1BNzFGQTc3MEE3ODhBOUNGQUE3MEFBRERGRjcwRkY5RUZGOUYiLExvOiIwMUJCMDFDMC0wMUMzMDI5NDA1RDAtMDVFQTA1RjAtMDVGMjA2MjEtMDYzRjA2NDEtMDY0QTA2NkUwNjZGMDY3MS0wNkQzMDZENTA2RUUwNkVGMDZGQS0wNkZDMDZGRjA3MTAwNzEyLTA3MkYwNzRELTA3QTUwN0IxMDdDQS0wN0VBMDgwMC0wODE1MDkwNC0wOTM5MDkzRDA5NTAwOTU4LTA5NjEwOTcyMDk3OS0wOTdGMDk4NS0wOThDMDk4RjA5OTAwOTkzLTA5QTgwOUFBLTA5QjAwOUIyMDlCNi0wOUI5MDlCRDA5Q0UwOURDMDlERDA5REYtMDlFMTA5RjAwOUYxMEEwNS0wQTBBMEEwRjBBMTAwQTEzLTBBMjgwQTJBLTBBMzAwQTMyMEEzMzBBMzUwQTM2MEEzODBBMzkwQTU5LTBBNUMwQTVFMEE3Mi0wQTc0MEE4NS0wQThEMEE4Ri0wQTkxMEE5My0wQUE4MEFBQS0wQUIwMEFCMjBBQjMwQUI1LTBBQjkwQUJEMEFEMDBBRTAwQUUxMEIwNS0wQjBDMEIwRjBCMTAwQjEzLTBCMjgwQjJBLTBCMzAwQjMyMEIzMzBCMzUtMEIzOTBCM0QwQjVDMEI1RDBCNUYtMEI2MTBCNzEwQjgzMEI4NS0wQjhBMEI4RS0wQjkwMEI5Mi0wQjk1MEI5OTBCOUEwQjlDMEI5RTBCOUYwQkEzMEJBNDBCQTgtMEJBQTBCQUUtMEJCOTBCRDAwQzA1LTBDMEMwQzBFLTBDMTAwQzEyLTBDMjgwQzJBLTBDMzMwQzM1LTBDMzkwQzNEMEM1ODBDNTkwQzYwMEM2MTBDODUtMEM4QzBDOEUtMEM5MDBDOTItMENBODBDQUEtMENCMzBDQjUtMENCOTBDQkQwQ0RFMENFMDBDRTEwRDA1LTBEMEMwRDBFLTBEMTAwRDEyLTBEMjgwRDJBLTBEMzkwRDNEMEQ2MDBENjEwRDdBLTBEN0YwRDg1LTBEOTYwRDlBLTBEQjEwREIzLTBEQkIwREJEMERDMC0wREM2MEUwMS0wRTMwMEUzMjBFMzMwRTQwLTBFNDUwRTgxMEU4MjBFODQwRTg3MEU4ODBFOEEwRThEMEU5NC0wRTk3MEU5OS0wRTlGMEVBMS0wRUEzMEVBNTBFQTcwRUFBMEVBQjBFQUQtMEVCMDBFQjIwRUIzMEVCRDBFQzAtMEVDNDBFREMwRUREMEYwMDBGNDAtMEY0NzBGNDktMEY2QzBGODgtMEY4QjEwMDAtMTAyQTEwM0YxMDUwLTEwNTUxMDVBLTEwNUQxMDYxMTA2NTEwNjYxMDZFLTEwNzAxMDc1LTEwODExMDhFMTBEMC0xMEZBMTEwMC0xMjQ4MTI0QS0xMjREMTI1MC0xMjU2MTI1ODEyNUEtMTI1RDEyNjAtMTI4ODEyOEEtMTI4RDEyOTAtMTJCMDEyQjItMTJCNTEyQjgtMTJCRTEyQzAxMkMyLTEyQzUxMkM4LTEyRDYxMkQ4LTEzMTAxMzEyLTEzMTUxMzE4LTEzNUExMzgwLTEzOEYxM0EwLTEzRjQxNDAxLTE2NkMxNjZGLTE2N0YxNjgxLTE2OUExNkEwLTE2RUExNzAwLTE3MEMxNzBFLTE3MTExNzIwLTE3MzExNzQwLTE3NTExNzYwLTE3NkMxNzZFLTE3NzAxNzgwLTE3QjMxN0RDMTgyMC0xODQyMTg0NC0xODc3MTg4MC0xOEE4MThBQTE4QjAtMThGNTE5MDAtMTkxQzE5NTAtMTk2RDE5NzAtMTk3NDE5ODAtMTlBQjE5QzEtMTlDNzFBMDAtMUExNjFBMjAtMUE1NDFCMDUtMUIzMzFCNDUtMUI0QjFCODMtMUJBMDFCQUUxQkFGMUMwMC0xQzIzMUM0RC0xQzRGMUM1QS0xQzc3MUNFOS0xQ0VDMUNFRS0xQ0YxMjEzNS0yMTM4MkQzMC0yRDY1MkQ4MC0yRDk2MkRBMC0yREE2MkRBOC0yREFFMkRCMC0yREI2MkRCOC0yREJFMkRDMC0yREM2MkRDOC0yRENFMkREMC0yREQ2MkREOC0yRERFMzAwNjMwM0MzMDQxLTMwOTYzMDlGMzBBMS0zMEZBMzBGRjMxMDUtMzEyRDMxMzEtMzE4RTMxQTAtMzFCNzMxRjAtMzFGRjM0MDAtNERCNTRFMDAtOUZDQkEwMDAtQTAxNEEwMTYtQTQ4Q0E0RDAtQTRGN0E1MDAtQTYwQkE2MTAtQTYxRkE2MkFBNjJCQTY2RUE2QTAtQTZFNUE3RkItQTgwMUE4MDMtQTgwNUE4MDctQTgwQUE4MEMtQTgyMkE4NDAtQTg3M0E4ODItQThCM0E4RjItQThGN0E4RkJBOTBBLUE5MjVBOTMwLUE5NDZBOTYwLUE5N0NBOTg0LUE5QjJBQTAwLUFBMjhBQTQwLUFBNDJBQTQ0LUFBNEJBQTYwLUFBNkZBQTcxLUFBNzZBQTdBQUE4MC1BQUFGQUFCMUFBQjVBQUI2QUFCOS1BQUJEQUFDMEFBQzJBQURCQUFEQ0FCQzAtQUJFMkFDMDAtRDdBM0Q3QjAtRDdDNkQ3Q0ItRDdGQkY5MDAtRkEyREZBMzAtRkE2REZBNzAtRkFEOUZCMURGQjFGLUZCMjhGQjJBLUZCMzZGQjM4LUZCM0NGQjNFRkI0MEZCNDFGQjQzRkI0NEZCNDYtRkJCMUZCRDMtRkQzREZENTAtRkQ4RkZEOTItRkRDN0ZERjAtRkRGQkZFNzAtRkU3NEZFNzYtRkVGQ0ZGNjYtRkY2RkZGNzEtRkY5REZGQTAtRkZCRUZGQzItRkZDN0ZGQ0EtRkZDRkZGRDItRkZEN0ZGREEtRkZEQyIsTToiMDMwMC0wMzZGMDQ4My0wNDg5MDU5MS0wNUJEMDVCRjA1QzEwNUMyMDVDNDA1QzUwNUM3MDYxMC0wNjFBMDY0Qi0wNjVFMDY3MDA2RDYtMDZEQzA2REUtMDZFNDA2RTcwNkU4MDZFQS0wNkVEMDcxMTA3MzAtMDc0QTA3QTYtMDdCMDA3RUItMDdGMzA4MTYtMDgxOTA4MUItMDgyMzA4MjUtMDgyNzA4MjktMDgyRDA5MDAtMDkwMzA5M0MwOTNFLTA5NEUwOTUxLTA5NTUwOTYyMDk2MzA5ODEtMDk4MzA5QkMwOUJFLTA5QzQwOUM3MDlDODA5Q0ItMDlDRDA5RDcwOUUyMDlFMzBBMDEtMEEwMzBBM0MwQTNFLTBBNDIwQTQ3MEE0ODBBNEItMEE0RDBBNTEwQTcwMEE3MTBBNzUwQTgxLTBBODMwQUJDMEFCRS0wQUM1MEFDNy0wQUM5MEFDQi0wQUNEMEFFMjBBRTMwQjAxLTBCMDMwQjNDMEIzRS0wQjQ0MEI0NzBCNDgwQjRCLTBCNEQwQjU2MEI1NzBCNjIwQjYzMEI4MjBCQkUtMEJDMjBCQzYtMEJDODBCQ0EtMEJDRDBCRDcwQzAxLTBDMDMwQzNFLTBDNDQwQzQ2LTBDNDgwQzRBLTBDNEQwQzU1MEM1NjBDNjIwQzYzMEM4MjBDODMwQ0JDMENCRS0wQ0M0MENDNi0wQ0M4MENDQS0wQ0NEMENENTBDRDYwQ0UyMENFMzBEMDIwRDAzMEQzRS0wRDQ0MEQ0Ni0wRDQ4MEQ0QS0wRDREMEQ1NzBENjIwRDYzMEQ4MjBEODMwRENBMERDRi0wREQ0MERENjBERDgtMERERjBERjIwREYzMEUzMTBFMzQtMEUzQTBFNDctMEU0RTBFQjEwRUI0LTBFQjkwRUJCMEVCQzBFQzgtMEVDRDBGMTgwRjE5MEYzNTBGMzcwRjM5MEYzRTBGM0YwRjcxLTBGODQwRjg2MEY4NzBGOTAtMEY5NzBGOTktMEZCQzBGQzYxMDJCLTEwM0UxMDU2LTEwNTkxMDVFLTEwNjAxMDYyLTEwNjQxMDY3LTEwNkQxMDcxLTEwNzQxMDgyLTEwOEQxMDhGMTA5QS0xMDlEMTM1RjE3MTItMTcxNDE3MzItMTczNDE3NTIxNzUzMTc3MjE3NzMxN0I2LTE3RDMxN0REMTgwQi0xODBEMThBOTE5MjAtMTkyQjE5MzAtMTkzQjE5QjAtMTlDMDE5QzgxOUM5MUExNy0xQTFCMUE1NS0xQTVFMUE2MC0xQTdDMUE3RjFCMDAtMUIwNDFCMzQtMUI0NDFCNkItMUI3MzFCODAtMUI4MjFCQTEtMUJBQTFDMjQtMUMzNzFDRDAtMUNEMjFDRDQtMUNFODFDRUQxQ0YyMURDMC0xREU2MURGRC0xREZGMjBEMC0yMEYwMkNFRi0yQ0YxMkRFMC0yREZGMzAyQS0zMDJGMzA5OTMwOUFBNjZGLUE2NzJBNjdDQTY3REE2RjBBNkYxQTgwMkE4MDZBODBCQTgyMy1BODI3QTg4MEE4ODFBOEI0LUE4QzRBOEUwLUE4RjFBOTI2LUE5MkRBOTQ3LUE5NTNBOTgwLUE5ODNBOUIzLUE5QzBBQTI5LUFBMzZBQTQzQUE0Q0FBNERBQTdCQUFCMEFBQjItQUFCNEFBQjdBQUI4QUFCRUFBQkZBQUMxQUJFMy1BQkVBQUJFQ0FCRURGQjFFRkUwMC1GRTBGRkUyMC1GRTI2IixNbjoiMDMwMC0wMzZGMDQ4My0wNDg3MDU5MS0wNUJEMDVCRjA1QzEwNUMyMDVDNDA1QzUwNUM3MDYxMC0wNjFBMDY0Qi0wNjVFMDY3MDA2RDYtMDZEQzA2REYtMDZFNDA2RTcwNkU4MDZFQS0wNkVEMDcxMTA3MzAtMDc0QTA3QTYtMDdCMDA3RUItMDdGMzA4MTYtMDgxOTA4MUItMDgyMzA4MjUtMDgyNzA4MjktMDgyRDA5MDAtMDkwMjA5M0MwOTQxLTA5NDgwOTREMDk1MS0wOTU1MDk2MjA5NjMwOTgxMDlCQzA5QzEtMDlDNDA5Q0QwOUUyMDlFMzBBMDEwQTAyMEEzQzBBNDEwQTQyMEE0NzBBNDgwQTRCLTBBNEQwQTUxMEE3MDBBNzEwQTc1MEE4MTBBODIwQUJDMEFDMS0wQUM1MEFDNzBBQzgwQUNEMEFFMjBBRTMwQjAxMEIzQzBCM0YwQjQxLTBCNDQwQjREMEI1NjBCNjIwQjYzMEI4MjBCQzAwQkNEMEMzRS0wQzQwMEM0Ni0wQzQ4MEM0QS0wQzREMEM1NTBDNTYwQzYyMEM2MzBDQkMwQ0JGMENDNjBDQ0MwQ0NEMENFMjBDRTMwRDQxLTBENDQwRDREMEQ2MjBENjMwRENBMEREMi0wREQ0MERENjBFMzEwRTM0LTBFM0EwRTQ3LTBFNEUwRUIxMEVCNC0wRUI5MEVCQjBFQkMwRUM4LTBFQ0QwRjE4MEYxOTBGMzUwRjM3MEYzOTBGNzEtMEY3RTBGODAtMEY4NDBGODYwRjg3MEY5MC0wRjk3MEY5OS0wRkJDMEZDNjEwMkQtMTAzMDEwMzItMTAzNzEwMzkxMDNBMTAzRDEwM0UxMDU4MTA1OTEwNUUtMTA2MDEwNzEtMTA3NDEwODIxMDg1MTA4NjEwOEQxMDlEMTM1RjE3MTItMTcxNDE3MzItMTczNDE3NTIxNzUzMTc3MjE3NzMxN0I3LTE3QkQxN0M2MTdDOS0xN0QzMTdERDE4MEItMTgwRDE4QTkxOTIwLTE5MjIxOTI3MTkyODE5MzIxOTM5LTE5M0IxQTE3MUExODFBNTYxQTU4LTFBNUUxQTYwMUE2MjFBNjUtMUE2QzFBNzMtMUE3QzFBN0YxQjAwLTFCMDMxQjM0MUIzNi0xQjNBMUIzQzFCNDIxQjZCLTFCNzMxQjgwMUI4MTFCQTItMUJBNTFCQTgxQkE5MUMyQy0xQzMzMUMzNjFDMzcxQ0QwLTFDRDIxQ0Q0LTFDRTAxQ0UyLTFDRTgxQ0VEMURDMC0xREU2MURGRC0xREZGMjBEMC0yMERDMjBFMTIwRTUtMjBGMDJDRUYtMkNGMTJERTAtMkRGRjMwMkEtMzAyRjMwOTkzMDlBQTY2RkE2N0NBNjdEQTZGMEE2RjFBODAyQTgwNkE4MEJBODI1QTgyNkE4QzRBOEUwLUE4RjFBOTI2LUE5MkRBOTQ3LUE5NTFBOTgwLUE5ODJBOUIzQTlCNi1BOUI5QTlCQ0FBMjktQUEyRUFBMzFBQTMyQUEzNUFBMzZBQTQzQUE0Q0FBQjBBQUIyLUFBQjRBQUI3QUFCOEFBQkVBQUJGQUFDMUFCRTVBQkU4QUJFREZCMUVGRTAwLUZFMEZGRTIwLUZFMjYiLE1jOiIwOTAzMDkzRS0wOTQwMDk0OS0wOTRDMDk0RTA5ODIwOTgzMDlCRS0wOUMwMDlDNzA5QzgwOUNCMDlDQzA5RDcwQTAzMEEzRS0wQTQwMEE4MzBBQkUtMEFDMDBBQzkwQUNCMEFDQzBCMDIwQjAzMEIzRTBCNDAwQjQ3MEI0ODBCNEIwQjRDMEI1NzBCQkUwQkJGMEJDMTBCQzIwQkM2LTBCQzgwQkNBLTBCQ0MwQkQ3MEMwMS0wQzAzMEM0MS0wQzQ0MEM4MjBDODMwQ0JFMENDMC0wQ0M0MENDNzBDQzgwQ0NBMENDQjBDRDUwQ0Q2MEQwMjBEMDMwRDNFLTBENDAwRDQ2LTBENDgwRDRBLTBENEMwRDU3MEQ4MjBEODMwRENGLTBERDEwREQ4LTBEREYwREYyMERGMzBGM0UwRjNGMEY3RjEwMkIxMDJDMTAzMTEwMzgxMDNCMTAzQzEwNTYxMDU3MTA2Mi0xMDY0MTA2Ny0xMDZEMTA4MzEwODQxMDg3LTEwOEMxMDhGMTA5QS0xMDlDMTdCNjE3QkUtMTdDNTE3QzcxN0M4MTkyMy0xOTI2MTkyOS0xOTJCMTkzMDE5MzExOTMzLTE5MzgxOUIwLTE5QzAxOUM4MTlDOTFBMTktMUExQjFBNTUxQTU3MUE2MTFBNjMxQTY0MUE2RC0xQTcyMUIwNDFCMzUxQjNCMUIzRC0xQjQxMUI0MzFCNDQxQjgyMUJBMTFCQTYxQkE3MUJBQTFDMjQtMUMyQjFDMzQxQzM1MUNFMTFDRjJBODIzQTgyNEE4MjdBODgwQTg4MUE4QjQtQThDM0E5NTJBOTUzQTk4M0E5QjRBOUI1QTlCQUE5QkJBOUJELUE5QzBBQTJGQUEzMEFBMzNBQTM0QUE0REFBN0JBQkUzQUJFNEFCRTZBQkU3QUJFOUFCRUFBQkVDIixNZToiMDQ4ODA0ODkwNkRFMjBERC0yMEUwMjBFMi0yMEU0QTY3MC1BNjcyIixOOiIwMDMwLTAwMzkwMEIyMDBCMzAwQjkwMEJDLTAwQkUwNjYwLTA2NjkwNkYwLTA2RjkwN0MwLTA3QzkwOTY2LTA5NkYwOUU2LTA5RUYwOUY0LTA5RjkwQTY2LTBBNkYwQUU2LTBBRUYwQjY2LTBCNkYwQkU2LTBCRjIwQzY2LTBDNkYwQzc4LTBDN0UwQ0U2LTBDRUYwRDY2LTBENzUwRTUwLTBFNTkwRUQwLTBFRDkwRjIwLTBGMzMxMDQwLTEwNDkxMDkwLTEwOTkxMzY5LTEzN0MxNkVFLTE2RjAxN0UwLTE3RTkxN0YwLTE3RjkxODEwLTE4MTkxOTQ2LTE5NEYxOUQwLTE5REExQTgwLTFBODkxQTkwLTFBOTkxQjUwLTFCNTkxQkIwLTFCQjkxQzQwLTFDNDkxQzUwLTFDNTkyMDcwMjA3NC0yMDc5MjA4MC0yMDg5MjE1MC0yMTgyMjE4NS0yMTg5MjQ2MC0yNDlCMjRFQS0yNEZGMjc3Ni0yNzkzMkNGRDMwMDczMDIxLTMwMjkzMDM4LTMwM0EzMTkyLTMxOTUzMjIwLTMyMjkzMjUxLTMyNUYzMjgwLTMyODkzMkIxLTMyQkZBNjIwLUE2MjlBNkU2LUE2RUZBODMwLUE4MzVBOEQwLUE4RDlBOTAwLUE5MDlBOUQwLUE5RDlBQTUwLUFBNTlBQkYwLUFCRjlGRjEwLUZGMTkiLE5kOiIwMDMwLTAwMzkwNjYwLTA2NjkwNkYwLTA2RjkwN0MwLTA3QzkwOTY2LTA5NkYwOUU2LTA5RUYwQTY2LTBBNkYwQUU2LTBBRUYwQjY2LTBCNkYwQkU2LTBCRUYwQzY2LTBDNkYwQ0U2LTBDRUYwRDY2LTBENkYwRTUwLTBFNTkwRUQwLTBFRDkwRjIwLTBGMjkxMDQwLTEwNDkxMDkwLTEwOTkxN0UwLTE3RTkxODEwLTE4MTkxOTQ2LTE5NEYxOUQwLTE5REExQTgwLTFBODkxQTkwLTFBOTkxQjUwLTFCNTkxQkIwLTFCQjkxQzQwLTFDNDkxQzUwLTFDNTlBNjIwLUE2MjlBOEQwLUE4RDlBOTAwLUE5MDlBOUQwLUE5RDlBQTUwLUFBNTlBQkYwLUFCRjlGRjEwLUZGMTkiLE5sOiIxNkVFLTE2RjAyMTYwLTIxODIyMTg1LTIxODgzMDA3MzAyMS0zMDI5MzAzOC0zMDNBQTZFNi1BNkVGIixObzoiMDBCMjAwQjMwMEI5MDBCQy0wMEJFMDlGNC0wOUY5MEJGMC0wQkYyMEM3OC0wQzdFMEQ3MC0wRDc1MEYyQS0wRjMzMTM2OS0xMzdDMTdGMC0xN0Y5MjA3MDIwNzQtMjA3OTIwODAtMjA4OTIxNTAtMjE1RjIxODkyNDYwLTI0OUIyNEVBLTI0RkYyNzc2LTI3OTMyQ0ZEMzE5Mi0zMTk1MzIyMC0zMjI5MzI1MS0zMjVGMzI4MC0zMjg5MzJCMS0zMkJGQTgzMC1BODM1IixQOiIwMDIxLTAwMjMwMDI1LTAwMkEwMDJDLTAwMkYwMDNBMDAzQjAwM0YwMDQwMDA1Qi0wMDVEMDA1RjAwN0IwMDdEMDBBMTAwQUIwMEI3MDBCQjAwQkYwMzdFMDM4NzA1NUEtMDU1RjA1ODkwNThBMDVCRTA1QzAwNUMzMDVDNjA1RjMwNUY0MDYwOTA2MEEwNjBDMDYwRDA2MUIwNjFFMDYxRjA2NkEtMDY2RDA2RDQwNzAwLTA3MEQwN0Y3LTA3RjkwODMwLTA4M0UwOTY0MDk2NTA5NzAwREY0MEU0RjBFNUEwRTVCMEYwNC0wRjEyMEYzQS0wRjNEMEY4NTBGRDAtMEZENDEwNEEtMTA0RjEwRkIxMzYxLTEzNjgxNDAwMTY2RDE2NkUxNjlCMTY5QzE2RUItMTZFRDE3MzUxNzM2MTdENC0xN0Q2MTdEOC0xN0RBMTgwMC0xODBBMTk0NDE5NDUxOURFMTlERjFBMUUxQTFGMUFBMC0xQUE2MUFBOC0xQUFEMUI1QS0xQjYwMUMzQi0xQzNGMUM3RTFDN0YxQ0QzMjAxMC0yMDI3MjAzMC0yMDQzMjA0NS0yMDUxMjA1My0yMDVFMjA3RDIwN0UyMDhEMjA4RTIzMjkyMzJBMjc2OC0yNzc1MjdDNTI3QzYyN0U2LTI3RUYyOTgzLTI5OTgyOUQ4LTI5REIyOUZDMjlGRDJDRjktMkNGQzJDRkUyQ0ZGMkUwMC0yRTJFMkUzMDJFMzEzMDAxLTMwMDMzMDA4LTMwMTEzMDE0LTMwMUYzMDMwMzAzRDMwQTAzMEZCQTRGRUE0RkZBNjBELUE2MEZBNjczQTY3RUE2RjItQTZGN0E4NzQtQTg3N0E4Q0VBOENGQThGOC1BOEZBQTkyRUE5MkZBOTVGQTlDMS1BOUNEQTlERUE5REZBQTVDLUFBNUZBQURFQUFERkFCRUJGRDNFRkQzRkZFMTAtRkUxOUZFMzAtRkU1MkZFNTQtRkU2MUZFNjNGRTY4RkU2QUZFNkJGRjAxLUZGMDNGRjA1LUZGMEFGRjBDLUZGMEZGRjFBRkYxQkZGMUZGRjIwRkYzQi1GRjNERkYzRkZGNUJGRjVERkY1Ri1GRjY1IixQZDoiMDAyRDA1OEEwNUJFMTQwMDE4MDYyMDEwLTIwMTUyRTE3MkUxQTMwMUMzMDMwMzBBMEZFMzFGRTMyRkU1OEZFNjNGRjBEIixQczoiMDAyODAwNUIwMDdCMEYzQTBGM0MxNjlCMjAxQTIwMUUyMDQ1MjA3RDIwOEQyMzI5Mjc2ODI3NkEyNzZDMjc2RTI3NzAyNzcyMjc3NDI3QzUyN0U2MjdFODI3RUEyN0VDMjdFRTI5ODMyOTg1Mjk4NzI5ODkyOThCMjk4RDI5OEYyOTkxMjk5MzI5OTUyOTk3MjlEODI5REEyOUZDMkUyMjJFMjQyRTI2MkUyODMwMDgzMDBBMzAwQzMwMEUzMDEwMzAxNDMwMTYzMDE4MzAxQTMwMURGRDNFRkUxN0ZFMzVGRTM3RkUzOUZFM0JGRTNERkUzRkZFNDFGRTQzRkU0N0ZFNTlGRTVCRkU1REZGMDhGRjNCRkY1QkZGNUZGRjYyIixQZToiMDAyOTAwNUQwMDdEMEYzQjBGM0QxNjlDMjA0NjIwN0UyMDhFMjMyQTI3NjkyNzZCMjc2RDI3NkYyNzcxMjc3MzI3NzUyN0M2MjdFNzI3RTkyN0VCMjdFRDI3RUYyOTg0Mjk4NjI5ODgyOThBMjk4QzI5OEUyOTkwMjk5MjI5OTQyOTk2Mjk5ODI5RDkyOURCMjlGRDJFMjMyRTI1MkUyNzJFMjkzMDA5MzAwQjMwMEQzMDBGMzAxMTMwMTUzMDE3MzAxOTMwMUIzMDFFMzAxRkZEM0ZGRTE4RkUzNkZFMzhGRTNBRkUzQ0ZFM0VGRTQwRkU0MkZFNDRGRTQ4RkU1QUZFNUNGRTVFRkYwOUZGM0RGRjVERkY2MEZGNjMiLFBpOiIwMEFCMjAxODIwMUIyMDFDMjAxRjIwMzkyRTAyMkUwNDJFMDkyRTBDMkUxQzJFMjAiLFBmOiIwMEJCMjAxOTIwMUQyMDNBMkUwMzJFMDUyRTBBMkUwRDJFMUQyRTIxIixQYzoiMDA1RjIwM0YyMDQwMjA1NEZFMzNGRTM0RkU0RC1GRTRGRkYzRiIsUG86IjAwMjEtMDAyMzAwMjUtMDAyNzAwMkEwMDJDMDAyRTAwMkYwMDNBMDAzQjAwM0YwMDQwMDA1QzAwQTEwMEI3MDBCRjAzN0UwMzg3MDU1QS0wNTVGMDU4OTA1QzAwNUMzMDVDNjA1RjMwNUY0MDYwOTA2MEEwNjBDMDYwRDA2MUIwNjFFMDYxRjA2NkEtMDY2RDA2RDQwNzAwLTA3MEQwN0Y3LTA3RjkwODMwLTA4M0UwOTY0MDk2NTA5NzAwREY0MEU0RjBFNUEwRTVCMEYwNC0wRjEyMEY4NTBGRDAtMEZENDEwNEEtMTA0RjEwRkIxMzYxLTEzNjgxNjZEMTY2RTE2RUItMTZFRDE3MzUxNzM2MTdENC0xN0Q2MTdEOC0xN0RBMTgwMC0xODA1MTgwNy0xODBBMTk0NDE5NDUxOURFMTlERjFBMUUxQTFGMUFBMC0xQUE2MUFBOC0xQUFEMUI1QS0xQjYwMUMzQi0xQzNGMUM3RTFDN0YxQ0QzMjAxNjIwMTcyMDIwLTIwMjcyMDMwLTIwMzgyMDNCLTIwM0UyMDQxLTIwNDMyMDQ3LTIwNTEyMDUzMjA1NS0yMDVFMkNGOS0yQ0ZDMkNGRTJDRkYyRTAwMkUwMTJFMDYtMkUwODJFMEIyRTBFLTJFMTYyRTE4MkUxOTJFMUIyRTFFMkUxRjJFMkEtMkUyRTJFMzAyRTMxMzAwMS0zMDAzMzAzRDMwRkJBNEZFQTRGRkE2MEQtQTYwRkE2NzNBNjdFQTZGMi1BNkY3QTg3NC1BODc3QThDRUE4Q0ZBOEY4LUE4RkFBOTJFQTkyRkE5NUZBOUMxLUE5Q0RBOURFQTlERkFBNUMtQUE1RkFBREVBQURGQUJFQkZFMTAtRkUxNkZFMTlGRTMwRkU0NUZFNDZGRTQ5LUZFNENGRTUwLUZFNTJGRTU0LUZFNTdGRTVGLUZFNjFGRTY4RkU2QUZFNkJGRjAxLUZGMDNGRjA1LUZGMDdGRjBBRkYwQ0ZGMEVGRjBGRkYxQUZGMUJGRjFGRkYyMEZGM0NGRjYxRkY2NEZGNjUiLFM6IjAwMjQwMDJCMDAzQy0wMDNFMDA1RTAwNjAwMDdDMDA3RTAwQTItMDBBOTAwQUMwMEFFLTAwQjEwMEI0MDBCNjAwQjgwMEQ3MDBGNzAyQzItMDJDNTAyRDItMDJERjAyRTUtMDJFQjAyRUQwMkVGLTAyRkYwMzc1MDM4NDAzODUwM0Y2MDQ4MjA2MDYtMDYwODA2MEIwNjBFMDYwRjA2RTkwNkZEMDZGRTA3RjYwOUYyMDlGMzA5RkEwOUZCMEFGMTBCNzAwQkYzLTBCRkEwQzdGMENGMTBDRjIwRDc5MEUzRjBGMDEtMEYwMzBGMTMtMEYxNzBGMUEtMEYxRjBGMzQwRjM2MEYzODBGQkUtMEZDNTBGQzctMEZDQzBGQ0UwRkNGMEZENS0wRkQ4MTA5RTEwOUYxMzYwMTM5MC0xMzk5MTdEQjE5NDAxOUUwLTE5RkYxQjYxLTFCNkExQjc0LTFCN0MxRkJEMUZCRi0xRkMxMUZDRC0xRkNGMUZERC0xRkRGMUZFRC0xRkVGMUZGRDFGRkUyMDQ0MjA1MjIwN0EtMjA3QzIwOEEtMjA4QzIwQTAtMjBCODIxMDAyMTAxMjEwMy0yMTA2MjEwODIxMDkyMTE0MjExNi0yMTE4MjExRS0yMTIzMjEyNTIxMjcyMTI5MjEyRTIxM0EyMTNCMjE0MC0yMTQ0MjE0QS0yMTREMjE0RjIxOTAtMjMyODIzMkItMjNFODI0MDAtMjQyNjI0NDAtMjQ0QTI0OUMtMjRFOTI1MDAtMjZDRDI2Q0YtMjZFMTI2RTMyNkU4LTI2RkYyNzAxLTI3MDQyNzA2LTI3MDkyNzBDLTI3MjcyNzI5LTI3NEIyNzREMjc0Ri0yNzUyMjc1Ni0yNzVFMjc2MS0yNzY3Mjc5NDI3OTgtMjdBRjI3QjEtMjdCRTI3QzAtMjdDNDI3QzctMjdDQTI3Q0MyN0QwLTI3RTUyN0YwLTI5ODIyOTk5LTI5RDcyOURDLTI5RkIyOUZFLTJCNEMyQjUwLTJCNTkyQ0U1LTJDRUEyRTgwLTJFOTkyRTlCLTJFRjMyRjAwLTJGRDUyRkYwLTJGRkIzMDA0MzAxMjMwMTMzMDIwMzAzNjMwMzczMDNFMzAzRjMwOUIzMDlDMzE5MDMxOTEzMTk2LTMxOUYzMUMwLTMxRTMzMjAwLTMyMUUzMjJBLTMyNTAzMjYwLTMyN0YzMjhBLTMyQjAzMkMwLTMyRkUzMzAwLTMzRkY0REMwLTRERkZBNDkwLUE0QzZBNzAwLUE3MTZBNzIwQTcyMUE3ODlBNzhBQTgyOC1BODJCQTgzNi1BODM5QUE3Ny1BQTc5RkIyOUZERkNGREZERkU2MkZFNjQtRkU2NkZFNjlGRjA0RkYwQkZGMUMtRkYxRUZGM0VGRjQwRkY1Q0ZGNUVGRkUwLUZGRTZGRkU4LUZGRUVGRkZDRkZGRCIsU206IjAwMkIwMDNDLTAwM0UwMDdDMDA3RTAwQUMwMEIxMDBENzAwRjcwM0Y2MDYwNi0wNjA4MjA0NDIwNTIyMDdBLTIwN0MyMDhBLTIwOEMyMTQwLTIxNDQyMTRCMjE5MC0yMTk0MjE5QTIxOUIyMUEwMjFBMzIxQTYyMUFFMjFDRTIxQ0YyMUQyMjFENDIxRjQtMjJGRjIzMDgtMjMwQjIzMjAyMzIxMjM3QzIzOUItMjNCMzIzREMtMjNFMTI1QjcyNUMxMjVGOC0yNUZGMjY2RjI3QzAtMjdDNDI3QzctMjdDQTI3Q0MyN0QwLTI3RTUyN0YwLTI3RkYyOTAwLTI5ODIyOTk5LTI5RDcyOURDLTI5RkIyOUZFLTJBRkYyQjMwLTJCNDQyQjQ3LTJCNENGQjI5RkU2MkZFNjQtRkU2NkZGMEJGRjFDLUZGMUVGRjVDRkY1RUZGRTJGRkU5LUZGRUMiLFNjOiIwMDI0MDBBMi0wMEE1MDYwQjA5RjIwOUYzMDlGQjBBRjEwQkY5MEUzRjE3REIyMEEwLTIwQjhBODM4RkRGQ0ZFNjlGRjA0RkZFMEZGRTFGRkU1RkZFNiIsU2s6IjAwNUUwMDYwMDBBODAwQUYwMEI0MDBCODAyQzItMDJDNTAyRDItMDJERjAyRTUtMDJFQjAyRUQwMkVGLTAyRkYwMzc1MDM4NDAzODUxRkJEMUZCRi0xRkMxMUZDRC0xRkNGMUZERC0xRkRGMUZFRC0xRkVGMUZGRDFGRkUzMDlCMzA5Q0E3MDAtQTcxNkE3MjBBNzIxQTc4OUE3OEFGRjNFRkY0MEZGRTMiLFNvOiIwMEE2MDBBNzAwQTkwMEFFMDBCMDAwQjYwNDgyMDYwRTA2MEYwNkU5MDZGRDA2RkUwN0Y2MDlGQTBCNzAwQkYzLTBCRjgwQkZBMEM3RjBDRjEwQ0YyMEQ3OTBGMDEtMEYwMzBGMTMtMEYxNzBGMUEtMEYxRjBGMzQwRjM2MEYzODBGQkUtMEZDNTBGQzctMEZDQzBGQ0UwRkNGMEZENS0wRkQ4MTA5RTEwOUYxMzYwMTM5MC0xMzk5MTk0MDE5RTAtMTlGRjFCNjEtMUI2QTFCNzQtMUI3QzIxMDAyMTAxMjEwMy0yMTA2MjEwODIxMDkyMTE0MjExNi0yMTE4MjExRS0yMTIzMjEyNTIxMjcyMTI5MjEyRTIxM0EyMTNCMjE0QTIxNEMyMTREMjE0RjIxOTUtMjE5OTIxOUMtMjE5RjIxQTEyMUEyMjFBNDIxQTUyMUE3LTIxQUQyMUFGLTIxQ0QyMUQwMjFEMTIxRDMyMUQ1LTIxRjMyMzAwLTIzMDcyMzBDLTIzMUYyMzIyLTIzMjgyMzJCLTIzN0IyMzdELTIzOUEyM0I0LTIzREIyM0UyLTIzRTgyNDAwLTI0MjYyNDQwLTI0NEEyNDlDLTI0RTkyNTAwLTI1QjYyNUI4LTI1QzAyNUMyLTI1RjcyNjAwLTI2NkUyNjcwLTI2Q0QyNkNGLTI2RTEyNkUzMjZFOC0yNkZGMjcwMS0yNzA0MjcwNi0yNzA5MjcwQy0yNzI3MjcyOS0yNzRCMjc0RDI3NEYtMjc1MjI3NTYtMjc1RTI3NjEtMjc2NzI3OTQyNzk4LTI3QUYyN0IxLTI3QkUyODAwLTI4RkYyQjAwLTJCMkYyQjQ1MkI0NjJCNTAtMkI1OTJDRTUtMkNFQTJFODAtMkU5OTJFOUItMkVGMzJGMDAtMkZENTJGRjAtMkZGQjMwMDQzMDEyMzAxMzMwMjAzMDM2MzAzNzMwM0UzMDNGMzE5MDMxOTEzMTk2LTMxOUYzMUMwLTMxRTMzMjAwLTMyMUUzMjJBLTMyNTAzMjYwLTMyN0YzMjhBLTMyQjAzMkMwLTMyRkUzMzAwLTMzRkY0REMwLTRERkZBNDkwLUE0QzZBODI4LUE4MkJBODM2QTgzN0E4MzlBQTc3LUFBNzlGREZERkZFNEZGRThGRkVERkZFRUZGRkNGRkZEIixaOiIwMDIwMDBBMDE2ODAxODBFMjAwMC0yMDBBMjAyODIwMjkyMDJGMjA1RjMwMDAiLFpzOiIwMDIwMDBBMDE2ODAxODBFMjAwMC0yMDBBMjAyRjIwNUYzMDAwIixabDoiMjAyOCIsWnA6IjIwMjkiLEM6IjAwMDAtMDAxRjAwN0YtMDA5RjAwQUQwMzc4MDM3OTAzN0YtMDM4MzAzOEIwMzhEMDNBMjA1MjYtMDUzMDA1NTcwNTU4MDU2MDA1ODgwNThCLTA1OTAwNUM4LTA1Q0YwNUVCLTA1RUYwNUY1LTA2MDUwNjFDMDYxRDA2MjAwNjVGMDZERDA3MEUwNzBGMDc0QjA3NEMwN0IyLTA3QkYwN0ZCLTA3RkYwODJFMDgyRjA4M0YtMDhGRjA5M0EwOTNCMDk0RjA5NTYwOTU3MDk3My0wOTc4MDk4MDA5ODQwOThEMDk4RTA5OTEwOTkyMDlBOTA5QjEwOUIzLTA5QjUwOUJBMDlCQjA5QzUwOUM2MDlDOTA5Q0EwOUNGLTA5RDYwOUQ4LTA5REIwOURFMDlFNDA5RTUwOUZDLTBBMDAwQTA0MEEwQi0wQTBFMEExMTBBMTIwQTI5MEEzMTBBMzQwQTM3MEEzQTBBM0IwQTNEMEE0My0wQTQ2MEE0OTBBNEEwQTRFLTBBNTAwQTUyLTBBNTgwQTVEMEE1Ri0wQTY1MEE3Ni0wQTgwMEE4NDBBOEUwQTkyMEFBOTBBQjEwQUI0MEFCQTBBQkIwQUM2MEFDQTBBQ0UwQUNGMEFEMS0wQURGMEFFNDBBRTUwQUYwMEFGMi0wQjAwMEIwNDBCMEQwQjBFMEIxMTBCMTIwQjI5MEIzMTBCMzQwQjNBMEIzQjBCNDUwQjQ2MEI0OTBCNEEwQjRFLTBCNTUwQjU4LTBCNUIwQjVFMEI2NDBCNjUwQjcyLTBCODEwQjg0MEI4Qi0wQjhEMEI5MTBCOTYtMEI5ODBCOUIwQjlEMEJBMC0wQkEyMEJBNS0wQkE3MEJBQi0wQkFEMEJCQS0wQkJEMEJDMy0wQkM1MEJDOTBCQ0UwQkNGMEJEMS0wQkQ2MEJEOC0wQkU1MEJGQi0wQzAwMEMwNDBDMEQwQzExMEMyOTBDMzQwQzNBLTBDM0MwQzQ1MEM0OTBDNEUtMEM1NDBDNTcwQzVBLTBDNUYwQzY0MEM2NTBDNzAtMEM3NzBDODAwQzgxMEM4NDBDOEQwQzkxMENBOTBDQjQwQ0JBMENCQjBDQzUwQ0M5MENDRS0wQ0Q0MENENy0wQ0REMENERjBDRTQwQ0U1MENGMDBDRjMtMEQwMTBEMDQwRDBEMEQxMTBEMjkwRDNBLTBEM0MwRDQ1MEQ0OTBENEUtMEQ1NjBENTgtMEQ1RjBENjQwRDY1MEQ3Ni0wRDc4MEQ4MDBEODEwRDg0MEQ5Ny0wRDk5MERCMjBEQkMwREJFMERCRjBEQzctMERDOTBEQ0ItMERDRTBERDUwREQ3MERFMC0wREYxMERGNS0wRTAwMEUzQi0wRTNFMEU1Qy0wRTgwMEU4MzBFODUwRTg2MEU4OTBFOEIwRThDMEU4RS0wRTkzMEU5ODBFQTAwRUE0MEVBNjBFQTgwRUE5MEVBQzBFQkEwRUJFMEVCRjBFQzUwRUM3MEVDRTBFQ0YwRURBMEVEQjBFREUtMEVGRjBGNDgwRjZELTBGNzAwRjhDLTBGOEYwRjk4MEZCRDBGQ0QwRkQ5LTBGRkYxMEM2LTEwQ0YxMEZELTEwRkYxMjQ5MTI0RTEyNEYxMjU3MTI1OTEyNUUxMjVGMTI4OTEyOEUxMjhGMTJCMTEyQjYxMkI3MTJCRjEyQzExMkM2MTJDNzEyRDcxMzExMTMxNjEzMTcxMzVCLTEzNUUxMzdELTEzN0YxMzlBLTEzOUYxM0Y1LTEzRkYxNjlELTE2OUYxNkYxLTE2RkYxNzBEMTcxNS0xNzFGMTczNy0xNzNGMTc1NC0xNzVGMTc2RDE3NzExNzc0LTE3N0YxN0I0MTdCNTE3REUxN0RGMTdFQS0xN0VGMTdGQS0xN0ZGMTgwRjE4MUEtMTgxRjE4NzgtMTg3RjE4QUItMThBRjE4RjYtMThGRjE5MUQtMTkxRjE5MkMtMTkyRjE5M0MtMTkzRjE5NDEtMTk0MzE5NkUxOTZGMTk3NS0xOTdGMTlBQy0xOUFGMTlDQS0xOUNGMTlEQi0xOUREMUExQzFBMUQxQTVGMUE3RDFBN0UxQThBLTFBOEYxQTlBLTFBOUYxQUFFLTFBRkYxQjRDLTFCNEYxQjdELTFCN0YxQkFCLTFCQUQxQkJBLTFCRkYxQzM4LTFDM0ExQzRBLTFDNEMxQzgwLTFDQ0YxQ0YzLTFDRkYxREU3LTFERkMxRjE2MUYxNzFGMUUxRjFGMUY0NjFGNDcxRjRFMUY0RjFGNTgxRjVBMUY1QzFGNUUxRjdFMUY3RjFGQjUxRkM1MUZENDFGRDUxRkRDMUZGMDFGRjExRkY1MUZGRjIwMEItMjAwRjIwMkEtMjAyRTIwNjAtMjA2RjIwNzIyMDczMjA4RjIwOTUtMjA5RjIwQjktMjBDRjIwRjEtMjBGRjIxOEEtMjE4RjIzRTktMjNGRjI0MjctMjQzRjI0NEItMjQ1RjI2Q0UyNkUyMjZFNC0yNkU3MjcwMDI3MDUyNzBBMjcwQjI3MjgyNzRDMjc0RTI3NTMtMjc1NTI3NUYyNzYwMjc5NS0yNzk3MjdCMDI3QkYyN0NCMjdDRC0yN0NGMkI0RC0yQjRGMkI1QS0yQkZGMkMyRjJDNUYyQ0YyLTJDRjgyRDI2LTJEMkYyRDY2LTJENkUyRDcwLTJEN0YyRDk3LTJEOUYyREE3MkRBRjJEQjcyREJGMkRDNzJEQ0YyREQ3MkRERjJFMzItMkU3RjJFOUEyRUY0LTJFRkYyRkQ2LTJGRUYyRkZDLTJGRkYzMDQwMzA5NzMwOTgzMTAwLTMxMDQzMTJFLTMxMzAzMThGMzFCOC0zMUJGMzFFNC0zMUVGMzIxRjMyRkY0REI2LTREQkY5RkNDLTlGRkZBNDhELUE0OEZBNEM3LUE0Q0ZBNjJDLUE2M0ZBNjYwQTY2MUE2NzQtQTY3QkE2OTgtQTY5RkE2RjgtQTZGRkE3OEQtQTdGQUE4MkMtQTgyRkE4M0EtQTgzRkE4NzgtQTg3RkE4QzUtQThDREE4REEtQThERkE4RkMtQThGRkE5NTQtQTk1RUE5N0QtQTk3RkE5Q0VBOURBLUE5RERBOUUwLUE5RkZBQTM3LUFBM0ZBQTRFQUE0RkFBNUFBQTVCQUE3Qy1BQTdGQUFDMy1BQURBQUFFMC1BQkJGQUJFRUFCRUZBQkZBLUFCRkZEN0E0LUQ3QUZEN0M3LUQ3Q0FEN0ZDLUY4RkZGQTJFRkEyRkZBNkVGQTZGRkFEQS1GQUZGRkIwNy1GQjEyRkIxOC1GQjFDRkIzN0ZCM0RGQjNGRkI0MkZCNDVGQkIyLUZCRDJGRDQwLUZENEZGRDkwRkQ5MUZEQzgtRkRFRkZERkVGREZGRkUxQS1GRTFGRkUyNy1GRTJGRkU1M0ZFNjdGRTZDLUZFNkZGRTc1RkVGRC1GRjAwRkZCRi1GRkMxRkZDOEZGQzlGRkQwRkZEMUZGRDhGRkQ5RkZERC1GRkRGRkZFN0ZGRUYtRkZGQkZGRkVGRkZGIixDYzoiMDAwMC0wMDFGMDA3Ri0wMDlGIixDZjoiMDBBRDA2MDAtMDYwMzA2REQwNzBGMTdCNDE3QjUyMDBCLTIwMEYyMDJBLTIwMkUyMDYwLTIwNjQyMDZBLTIwNkZGRUZGRkZGOS1GRkZCIixDbzoiRTAwMC1GOEZGIixDczoiRDgwMC1ERkZGIixDbjoiMDM3ODAzNzkwMzdGLTAzODMwMzhCMDM4RDAzQTIwNTI2LTA1MzAwNTU3MDU1ODA1NjAwNTg4MDU4Qi0wNTkwMDVDOC0wNUNGMDVFQi0wNUVGMDVGNS0wNUZGMDYwNDA2MDUwNjFDMDYxRDA2MjAwNjVGMDcwRTA3NEIwNzRDMDdCMi0wN0JGMDdGQi0wN0ZGMDgyRTA4MkYwODNGLTA4RkYwOTNBMDkzQjA5NEYwOTU2MDk1NzA5NzMtMDk3ODA5ODAwOTg0MDk4RDA5OEUwOTkxMDk5MjA5QTkwOUIxMDlCMy0wOUI1MDlCQTA5QkIwOUM1MDlDNjA5QzkwOUNBMDlDRi0wOUQ2MDlEOC0wOURCMDlERTA5RTQwOUU1MDlGQy0wQTAwMEEwNDBBMEItMEEwRTBBMTEwQTEyMEEyOTBBMzEwQTM0MEEzNzBBM0EwQTNCMEEzRDBBNDMtMEE0NjBBNDkwQTRBMEE0RS0wQTUwMEE1Mi0wQTU4MEE1RDBBNUYtMEE2NTBBNzYtMEE4MDBBODQwQThFMEE5MjBBQTkwQUIxMEFCNDBBQkEwQUJCMEFDNjBBQ0EwQUNFMEFDRjBBRDEtMEFERjBBRTQwQUU1MEFGMDBBRjItMEIwMDBCMDQwQjBEMEIwRTBCMTEwQjEyMEIyOTBCMzEwQjM0MEIzQTBCM0IwQjQ1MEI0NjBCNDkwQjRBMEI0RS0wQjU1MEI1OC0wQjVCMEI1RTBCNjQwQjY1MEI3Mi0wQjgxMEI4NDBCOEItMEI4RDBCOTEwQjk2LTBCOTgwQjlCMEI5RDBCQTAtMEJBMjBCQTUtMEJBNzBCQUItMEJBRDBCQkEtMEJCRDBCQzMtMEJDNTBCQzkwQkNFMEJDRjBCRDEtMEJENjBCRDgtMEJFNTBCRkItMEMwMDBDMDQwQzBEMEMxMTBDMjkwQzM0MEMzQS0wQzNDMEM0NTBDNDkwQzRFLTBDNTQwQzU3MEM1QS0wQzVGMEM2NDBDNjUwQzcwLTBDNzcwQzgwMEM4MTBDODQwQzhEMEM5MTBDQTkwQ0I0MENCQTBDQkIwQ0M1MENDOTBDQ0UtMENENDBDRDctMENERDBDREYwQ0U0MENFNTBDRjAwQ0YzLTBEMDEwRDA0MEQwRDBEMTEwRDI5MEQzQS0wRDNDMEQ0NTBENDkwRDRFLTBENTYwRDU4LTBENUYwRDY0MEQ2NTBENzYtMEQ3ODBEODAwRDgxMEQ4NDBEOTctMEQ5OTBEQjIwREJDMERCRTBEQkYwREM3LTBEQzkwRENCLTBEQ0UwREQ1MERENzBERTAtMERGMTBERjUtMEUwMDBFM0ItMEUzRTBFNUMtMEU4MDBFODMwRTg1MEU4NjBFODkwRThCMEU4QzBFOEUtMEU5MzBFOTgwRUEwMEVBNDBFQTYwRUE4MEVBOTBFQUMwRUJBMEVCRTBFQkYwRUM1MEVDNzBFQ0UwRUNGMEVEQTBFREIwRURFLTBFRkYwRjQ4MEY2RC0wRjcwMEY4Qy0wRjhGMEY5ODBGQkQwRkNEMEZEOS0wRkZGMTBDNi0xMENGMTBGRC0xMEZGMTI0OTEyNEUxMjRGMTI1NzEyNTkxMjVFMTI1RjEyODkxMjhFMTI4RjEyQjExMkI2MTJCNzEyQkYxMkMxMTJDNjEyQzcxMkQ3MTMxMTEzMTYxMzE3MTM1Qi0xMzVFMTM3RC0xMzdGMTM5QS0xMzlGMTNGNS0xM0ZGMTY5RC0xNjlGMTZGMS0xNkZGMTcwRDE3MTUtMTcxRjE3MzctMTczRjE3NTQtMTc1RjE3NkQxNzcxMTc3NC0xNzdGMTdERTE3REYxN0VBLTE3RUYxN0ZBLTE3RkYxODBGMTgxQS0xODFGMTg3OC0xODdGMThBQi0xOEFGMThGNi0xOEZGMTkxRC0xOTFGMTkyQy0xOTJGMTkzQy0xOTNGMTk0MS0xOTQzMTk2RTE5NkYxOTc1LTE5N0YxOUFDLTE5QUYxOUNBLTE5Q0YxOURCLTE5REQxQTFDMUExRDFBNUYxQTdEMUE3RTFBOEEtMUE4RjFBOUEtMUE5RjFBQUUtMUFGRjFCNEMtMUI0RjFCN0QtMUI3RjFCQUItMUJBRDFCQkEtMUJGRjFDMzgtMUMzQTFDNEEtMUM0QzFDODAtMUNDRjFDRjMtMUNGRjFERTctMURGQzFGMTYxRjE3MUYxRTFGMUYxRjQ2MUY0NzFGNEUxRjRGMUY1ODFGNUExRjVDMUY1RTFGN0UxRjdGMUZCNTFGQzUxRkQ0MUZENTFGREMxRkYwMUZGMTFGRjUxRkZGMjA2NS0yMDY5MjA3MjIwNzMyMDhGMjA5NS0yMDlGMjBCOS0yMENGMjBGMS0yMEZGMjE4QS0yMThGMjNFOS0yM0ZGMjQyNy0yNDNGMjQ0Qi0yNDVGMjZDRTI2RTIyNkU0LTI2RTcyNzAwMjcwNTI3MEEyNzBCMjcyODI3NEMyNzRFMjc1My0yNzU1Mjc1RjI3NjAyNzk1LTI3OTcyN0IwMjdCRjI3Q0IyN0NELTI3Q0YyQjRELTJCNEYyQjVBLTJCRkYyQzJGMkM1RjJDRjItMkNGODJEMjYtMkQyRjJENjYtMkQ2RTJENzAtMkQ3RjJEOTctMkQ5RjJEQTcyREFGMkRCNzJEQkYyREM3MkRDRjJERDcyRERGMkUzMi0yRTdGMkU5QTJFRjQtMkVGRjJGRDYtMkZFRjJGRkMtMkZGRjMwNDAzMDk3MzA5ODMxMDAtMzEwNDMxMkUtMzEzMDMxOEYzMUI4LTMxQkYzMUU0LTMxRUYzMjFGMzJGRjREQjYtNERCRjlGQ0MtOUZGRkE0OEQtQTQ4RkE0QzctQTRDRkE2MkMtQTYzRkE2NjBBNjYxQTY3NC1BNjdCQTY5OC1BNjlGQTZGOC1BNkZGQTc4RC1BN0ZBQTgyQy1BODJGQTgzQS1BODNGQTg3OC1BODdGQThDNS1BOENEQThEQS1BOERGQThGQy1BOEZGQTk1NC1BOTVFQTk3RC1BOTdGQTlDRUE5REEtQTlEREE5RTAtQTlGRkFBMzctQUEzRkFBNEVBQTRGQUE1QUFBNUJBQTdDLUFBN0ZBQUMzLUFBREFBQUUwLUFCQkZBQkVFQUJFRkFCRkEtQUJGRkQ3QTQtRDdBRkQ3QzctRDdDQUQ3RkMtRDdGRkZBMkVGQTJGRkE2RUZBNkZGQURBLUZBRkZGQjA3LUZCMTJGQjE4LUZCMUNGQjM3RkIzREZCM0ZGQjQyRkI0NUZCQjItRkJEMkZENDAtRkQ0RkZEOTBGRDkxRkRDOC1GREVGRkRGRUZERkZGRTFBLUZFMUZGRTI3LUZFMkZGRTUzRkU2N0ZFNkMtRkU2RkZFNzVGRUZERkVGRUZGMDBGRkJGLUZGQzFGRkM4RkZDOUZGRDBGRkQxRkZEOEZGRDlGRkRELUZGREZGRkU3RkZFRi1GRkY4RkZGRUZGRkYifSl9KSxkZWZpbmUoImFjZS9kb2N1bWVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3JhbmdlIiwiYWNlL2FuY2hvciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2xpYi9vb3AiKSxlPWEoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsZj1hKCIuL3JhbmdlIikuUmFuZ2UsZz1hKCIuL2FuY2hvciIpLkFuY2hvcixoPWZ1bmN0aW9uKGEpe3RoaXMuJGxpbmVzPVtdLGEubGVuZ3RoPT0wP3RoaXMuJGxpbmVzPVsiIl06QXJyYXkuaXNBcnJheShhKT90aGlzLmluc2VydExpbmVzKDAsYSk6dGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxhKX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGVuZ3RoKCk7dGhpcy5yZW1vdmUobmV3IGYoMCwwLGIsdGhpcy5nZXRMaW5lKGItMSkubGVuZ3RoKSksdGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxhKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEFsbExpbmVzKCkuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuY3JlYXRlQW5jaG9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBnKHRoaXMsYSxiKX0sImFhYSIuc3BsaXQoL2EvKS5sZW5ndGg9PTA/dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnNwbGl0KCJcbiIpfTp0aGlzLiRzcGxpdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5zcGxpdCgvXHJcbnxccnxcbi8pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14uKj8oXHJcbnxccnxcbikvbSk7Yj90aGlzLiRhdXRvTmV3TGluZT1iWzFdOnRoaXMuJGF1dG9OZXdMaW5lPSJcbiJ9LHRoaXMuZ2V0TmV3TGluZUNoYXJhY3Rlcj1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLiRuZXdMaW5lTW9kZSl7Y2FzZSJ3aW5kb3dzIjpyZXR1cm4iXHJcbiI7Y2FzZSJ1bml4IjpyZXR1cm4iXG4iO2Nhc2UiYXV0byI6cmV0dXJuIHRoaXMuJGF1dG9OZXdMaW5lfX0sdGhpcy4kYXV0b05ld0xpbmU9IlxuIix0aGlzLiRuZXdMaW5lTW9kZT0iYXV0byIsdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihhKXtpZih0aGlzLiRuZXdMaW5lTW9kZT09PWEpcmV0dXJuO3RoaXMuJG5ld0xpbmVNb2RlPWF9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbmV3TGluZU1vZGV9LHRoaXMuaXNOZXdMaW5lPWZ1bmN0aW9uKGEpe3JldHVybiBhPT0iXHJcbiJ8fGE9PSJcciJ8fGE9PSJcbiJ9LHRoaXMuZ2V0TGluZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kbGluZXNbYV18fCIifSx0aGlzLmdldExpbmVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuJGxpbmVzLnNsaWNlKGEsYisxKX0sdGhpcy5nZXRBbGxMaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVzKDAsdGhpcy5nZXRMZW5ndGgoKSl9LHRoaXMuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGxpbmVzLmxlbmd0aH0sdGhpcy5nZXRUZXh0UmFuZ2U9ZnVuY3Rpb24oYSl7aWYoYS5zdGFydC5yb3c9PWEuZW5kLnJvdylyZXR1cm4gdGhpcy4kbGluZXNbYS5zdGFydC5yb3ddLnN1YnN0cmluZyhhLnN0YXJ0LmNvbHVtbixhLmVuZC5jb2x1bW4pO3ZhciBiPXRoaXMuZ2V0TGluZXMoYS5zdGFydC5yb3crMSxhLmVuZC5yb3ctMSk7cmV0dXJuIGIudW5zaGlmdCgodGhpcy4kbGluZXNbYS5zdGFydC5yb3ddfHwiIikuc3Vic3RyaW5nKGEuc3RhcnQuY29sdW1uKSksYi5wdXNoKCh0aGlzLiRsaW5lc1thLmVuZC5yb3ddfHwiIikuc3Vic3RyaW5nKDAsYS5lbmQuY29sdW1uKSksYi5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy4kY2xpcFBvc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGVuZ3RoKCk7cmV0dXJuIGEucm93Pj1iJiYoYS5yb3c9TWF0aC5tYXgoMCxiLTEpLGEuY29sdW1uPXRoaXMuZ2V0TGluZShiLTEpLmxlbmd0aCksYX0sdGhpcy5pbnNlcnQ9ZnVuY3Rpb24oYSxiKXtpZighYnx8Yi5sZW5ndGg9PT0wKXJldHVybiBhO2E9dGhpcy4kY2xpcFBvc2l0aW9uKGEpLHRoaXMuZ2V0TGVuZ3RoKCk8PTEmJnRoaXMuJGRldGVjdE5ld0xpbmUoYik7dmFyIGM9dGhpcy4kc3BsaXQoYiksZD1jLnNwbGljZSgwLDEpWzBdLGU9Yy5sZW5ndGg9PTA/bnVsbDpjLnNwbGljZShjLmxlbmd0aC0xLDEpWzBdO3JldHVybiBhPXRoaXMuaW5zZXJ0SW5MaW5lKGEsZCksZSE9PW51bGwmJihhPXRoaXMuaW5zZXJ0TmV3TGluZShhKSxhPXRoaXMuaW5zZXJ0TGluZXMoYS5yb3csYyksYT10aGlzLmluc2VydEluTGluZShhLGV8fCIiKSksYX0sdGhpcy5pbnNlcnRMaW5lcz1mdW5jdGlvbihhLGIpe2lmKGIubGVuZ3RoPT0wKXJldHVybntyb3c6YSxjb2x1bW46MH07dmFyIGM9W2EsMF07Yy5wdXNoLmFwcGx5KGMsYiksdGhpcy4kbGluZXMuc3BsaWNlLmFwcGx5KHRoaXMuJGxpbmVzLGMpO3ZhciBkPW5ldyBmKGEsMCxhK2IubGVuZ3RoLDApLGU9e2FjdGlvbjoiaW5zZXJ0TGluZXMiLHJhbmdlOmQsbGluZXM6Yn07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGQuZW5kfSx0aGlzLmluc2VydE5ld0xpbmU9ZnVuY3Rpb24oYSl7YT10aGlzLiRjbGlwUG9zaXRpb24oYSk7dmFyIGI9dGhpcy4kbGluZXNbYS5yb3ddfHwiIjt0aGlzLiRsaW5lc1thLnJvd109Yi5zdWJzdHJpbmcoMCxhLmNvbHVtbiksdGhpcy4kbGluZXMuc3BsaWNlKGEucm93KzEsMCxiLnN1YnN0cmluZyhhLmNvbHVtbixiLmxlbmd0aCkpO3ZhciBjPXtyb3c6YS5yb3crMSxjb2x1bW46MH0sZD17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpmLmZyb21Qb2ludHMoYSxjKSx0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpkfSksY30sdGhpcy5pbnNlcnRJbkxpbmU9ZnVuY3Rpb24oYSxiKXtpZihiLmxlbmd0aD09MClyZXR1cm4gYTt2YXIgYz10aGlzLiRsaW5lc1thLnJvd118fCIiO3RoaXMuJGxpbmVzW2Eucm93XT1jLnN1YnN0cmluZygwLGEuY29sdW1uKStiK2Muc3Vic3RyaW5nKGEuY29sdW1uKTt2YXIgZD17cm93OmEucm93LGNvbHVtbjphLmNvbHVtbitiLmxlbmd0aH0sZT17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpmLmZyb21Qb2ludHMoYSxkKSx0ZXh0OmJ9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmV9KSxkfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihhKXthLnN0YXJ0PXRoaXMuJGNsaXBQb3NpdGlvbihhLnN0YXJ0KSxhLmVuZD10aGlzLiRjbGlwUG9zaXRpb24oYS5lbmQpO2lmKGEuaXNFbXB0eSgpKXJldHVybiBhLnN0YXJ0O3ZhciBiPWEuc3RhcnQucm93LGM9YS5lbmQucm93O2lmKGEuaXNNdWx0aUxpbmUoKSl7dmFyIGQ9YS5zdGFydC5jb2x1bW49PTA/YjpiKzEsZT1jLTE7YS5lbmQuY29sdW1uPjAmJnRoaXMucmVtb3ZlSW5MaW5lKGMsMCxhLmVuZC5jb2x1bW4pLGU+PWQmJnRoaXMucmVtb3ZlTGluZXMoZCxlKSxkIT1iJiYodGhpcy5yZW1vdmVJbkxpbmUoYixhLnN0YXJ0LmNvbHVtbix0aGlzLmdldExpbmUoYikubGVuZ3RoKSx0aGlzLnJlbW92ZU5ld0xpbmUoYS5zdGFydC5yb3cpKX1lbHNlIHRoaXMucmVtb3ZlSW5MaW5lKGIsYS5zdGFydC5jb2x1bW4sYS5lbmQuY29sdW1uKTtyZXR1cm4gYS5zdGFydH0sdGhpcy5yZW1vdmVJbkxpbmU9ZnVuY3Rpb24oYSxiLGMpe2lmKGI9PWMpcmV0dXJuO3ZhciBkPW5ldyBmKGEsYixhLGMpLGU9dGhpcy5nZXRMaW5lKGEpLGc9ZS5zdWJzdHJpbmcoYixjKSxoPWUuc3Vic3RyaW5nKDAsYikrZS5zdWJzdHJpbmcoYyxlLmxlbmd0aCk7dGhpcy4kbGluZXMuc3BsaWNlKGEsMSxoKTt2YXIgaT17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpkLHRleHQ6Z307cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6aX0pLGQuc3RhcnR9LHRoaXMucmVtb3ZlTGluZXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgZihhLDAsYisxLDApLGQ9dGhpcy4kbGluZXMuc3BsaWNlKGEsYi1hKzEpLGU9e2FjdGlvbjoicmVtb3ZlTGluZXMiLHJhbmdlOmMsbmw6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCksbGluZXM6ZH07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGR9LHRoaXMucmVtb3ZlTmV3TGluZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldExpbmUoYSksYz10aGlzLmdldExpbmUoYSsxKSxkPW5ldyBmKGEsYi5sZW5ndGgsYSsxLDApLGU9YitjO3RoaXMuJGxpbmVzLnNwbGljZShhLDIsZSk7dmFyIGc9e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6ZCx0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTt0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmd9KX0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGEsYil7aWYoYi5sZW5ndGg9PTAmJmEuaXNFbXB0eSgpKXJldHVybiBhLnN0YXJ0O2lmKGI9PXRoaXMuZ2V0VGV4dFJhbmdlKGEpKXJldHVybiBhLmVuZDt0aGlzLnJlbW92ZShhKTtpZihiKXZhciBjPXRoaXMuaW5zZXJ0KGEuc3RhcnQsYik7ZWxzZSBjPWEuc3RhcnQ7cmV0dXJuIGN9LHRoaXMuYXBwbHlEZWx0YXM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl0sZD1mLmZyb21Qb2ludHMoYy5yYW5nZS5zdGFydCxjLnJhbmdlLmVuZCk7Yy5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhkLnN0YXJ0LnJvdyxjLmxpbmVzKTpjLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMuaW5zZXJ0KGQuc3RhcnQsYy50ZXh0KTpjLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLnJlbW92ZUxpbmVzKGQuc3RhcnQucm93LGQuZW5kLnJvdy0xKTpjLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLnJlbW92ZShkKX19LHRoaXMucmV2ZXJ0RGVsdGFzPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmxlbmd0aC0xO2I+PTA7Yi0tKXt2YXIgYz1hW2JdLGQ9Zi5mcm9tUG9pbnRzKGMucmFuZ2Uuc3RhcnQsYy5yYW5nZS5lbmQpO2MuYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMucmVtb3ZlTGluZXMoZC5zdGFydC5yb3csZC5lbmQucm93LTEpOmMuYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5yZW1vdmUoZCk6Yy5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhkLnN0YXJ0LnJvdyxjLmxpbmVzKTpjLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLmluc2VydChkLnN0YXJ0LGMudGV4dCl9fX0pLmNhbGwoaC5wcm90b3R5cGUpLGIuRG9jdW1lbnQ9aH0pLGRlZmluZSgiYWNlL2FuY2hvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vbGliL29vcCIpLGU9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixmPWIuQW5jaG9yPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmRvY3VtZW50PWEsdHlwZW9mIGM9PSJ1bmRlZmluZWQiP3RoaXMuc2V0UG9zaXRpb24oYi5yb3csYi5jb2x1bW4pOnRoaXMuc2V0UG9zaXRpb24oYixjKSx0aGlzLiRvbkNoYW5nZT10aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyksYS5vbigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9OyhmdW5jdGlvbigpe2QuaW1wbGVtZW50KHRoaXMsZSksdGhpcy5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KHRoaXMucm93LHRoaXMuY29sdW1uKX0sdGhpcy5nZXREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvY3VtZW50fSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YSxjPWIucmFuZ2U7aWYoYy5zdGFydC5yb3c9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3chPXRoaXMucm93KXJldHVybjtpZihjLnN0YXJ0LnJvdz50aGlzLnJvdylyZXR1cm47aWYoYy5zdGFydC5yb3c9PXRoaXMucm93JiZjLnN0YXJ0LmNvbHVtbj50aGlzLmNvbHVtbilyZXR1cm47dmFyIGQ9dGhpcy5yb3csZT10aGlzLmNvbHVtbjtiLmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9jLnN0YXJ0LnJvdz09PWQmJmMuc3RhcnQuY29sdW1uPD1lP2Muc3RhcnQucm93PT09Yy5lbmQucm93P2UrPWMuZW5kLmNvbHVtbi1jLnN0YXJ0LmNvbHVtbjooZS09Yy5zdGFydC5jb2x1bW4sZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpjLnN0YXJ0LnJvdyE9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3c8ZCYmKGQrPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyk6Yi5hY3Rpb249PT0iaW5zZXJ0TGluZXMiP2Muc3RhcnQucm93PD1kJiYoZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpiLmFjdGlvbj09InJlbW92ZVRleHQiP2Muc3RhcnQucm93PT1kJiZjLnN0YXJ0LmNvbHVtbjxlP2MuZW5kLmNvbHVtbj49ZT9lPWMuc3RhcnQuY29sdW1uOmU9TWF0aC5tYXgoMCxlLShjLmVuZC5jb2x1bW4tYy5zdGFydC5jb2x1bW4pKTpjLnN0YXJ0LnJvdyE9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3c8ZD8oYy5lbmQucm93PT1kJiYoZT1NYXRoLm1heCgwLGUtYy5lbmQuY29sdW1uKStjLnN0YXJ0LmNvbHVtbiksZC09Yy5lbmQucm93LWMuc3RhcnQucm93KTpjLmVuZC5yb3c9PWQmJihkLT1jLmVuZC5yb3ctYy5zdGFydC5yb3csZT1NYXRoLm1heCgwLGUtYy5lbmQuY29sdW1uKStjLnN0YXJ0LmNvbHVtbik6Yi5hY3Rpb249PSJyZW1vdmVMaW5lcyImJmMuc3RhcnQucm93PD1kJiYoYy5lbmQucm93PD1kP2QtPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdzooZD1jLnN0YXJ0LnJvdyxlPTApKSx0aGlzLnNldFBvc2l0aW9uKGQsZSwhMCl9LHRoaXMuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2M/ZD17cm93OmEsY29sdW1uOmJ9OmQ9dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChhLGIpO2lmKHRoaXMucm93PT1kLnJvdyYmdGhpcy5jb2x1bW49PWQuY29sdW1uKXJldHVybjt2YXIgZT17cm93OnRoaXMucm93LGNvbHVtbjp0aGlzLmNvbHVtbn07dGhpcy5yb3c9ZC5yb3csdGhpcy5jb2x1bW49ZC5jb2x1bW4sdGhpcy5fZW1pdCgiY2hhbmdlIix7b2xkOmUsdmFsdWU6ZH0pfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe3RoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9LHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtyZXR1cm4gYT49dGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKT8oYy5yb3c9TWF0aC5tYXgoMCx0aGlzLmRvY3VtZW50LmdldExlbmd0aCgpLTEpLGMuY29sdW1uPXRoaXMuZG9jdW1lbnQuZ2V0TGluZShjLnJvdykubGVuZ3RoKTphPDA/KGMucm93PTAsYy5jb2x1bW49MCk6KGMucm93PWEsYy5jb2x1bW49TWF0aC5taW4odGhpcy5kb2N1bWVudC5nZXRMaW5lKGMucm93KS5sZW5ndGgsTWF0aC5tYXgoMCxiKSkpLGI8MCYmKGMuY29sdW1uPTApLGN9fSkuY2FsbChmLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9iYWNrZ3JvdW5kX3Rva2VuaXplciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vbGliL29vcCIpLGU9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixmPTVlMyxnPWZ1bmN0aW9uKGEsYil7dGhpcy5ydW5uaW5nPSExLHRoaXMubGluZXM9W10sdGhpcy5zdGF0ZXM9W10sdGhpcy5jdXJyZW50TGluZT0wLHRoaXMudG9rZW5pemVyPWE7dmFyIGM9dGhpczt0aGlzLiR3b3JrZXI9ZnVuY3Rpb24oKXtpZighYy5ydW5uaW5nKXJldHVybjt2YXIgYT1uZXcgRGF0ZSxiPWMuY3VycmVudExpbmUsZD1jLmRvYyxlPTAsZj1kLmdldExlbmd0aCgpO3doaWxlKGMuY3VycmVudExpbmU8Zil7Yy4kdG9rZW5pemVSb3coYy5jdXJyZW50TGluZSk7d2hpbGUoYy5saW5lc1tjLmN1cnJlbnRMaW5lXSljLmN1cnJlbnRMaW5lKys7ZSsrO2lmKGUlNT09MCYmbmV3IERhdGUtYT4yMCl7Yy5maXJlVXBkYXRlRXZlbnQoYixjLmN1cnJlbnRMaW5lLTEpLGMucnVubmluZz1zZXRUaW1lb3V0KGMuJHdvcmtlciwyMCk7cmV0dXJufX1jLnJ1bm5pbmc9ITEsYy5maXJlVXBkYXRlRXZlbnQoYixmLTEpfX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLnNldFRva2VuaXplcj1mdW5jdGlvbihhKXt0aGlzLnRva2VuaXplcj1hLHRoaXMubGluZXM9W10sdGhpcy5zdGF0ZXM9W10sdGhpcy5zdGFydCgwKX0sdGhpcy5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt0aGlzLmRvYz1hLHRoaXMubGluZXM9W10sdGhpcy5zdGF0ZXM9W10sdGhpcy5zdG9wKCl9LHRoaXMuZmlyZVVwZGF0ZUV2ZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9e2ZpcnN0OmEsbGFzdDpifTt0aGlzLl9lbWl0KCJ1cGRhdGUiLHtkYXRhOmN9KX0sdGhpcy5zdGFydD1mdW5jdGlvbihhKXt0aGlzLmN1cnJlbnRMaW5lPU1hdGgubWluKGF8fDAsdGhpcy5jdXJyZW50TGluZSx0aGlzLmRvYy5nZXRMZW5ndGgoKSksdGhpcy5saW5lcy5zcGxpY2UodGhpcy5jdXJyZW50TGluZSx0aGlzLmxpbmVzLmxlbmd0aCksdGhpcy5zdGF0ZXMuc3BsaWNlKHRoaXMuY3VycmVudExpbmUsdGhpcy5zdGF0ZXMubGVuZ3RoKSx0aGlzLnN0b3AoKSx0aGlzLnJ1bm5pbmc9c2V0VGltZW91dCh0aGlzLiR3b3JrZXIsNzAwKX0sdGhpcy4kdXBkYXRlT25DaGFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yYW5nZSxjPWIuc3RhcnQucm93LGQ9Yi5lbmQucm93LWM7aWYoZD09PTApdGhpcy5saW5lc1tjXT1udWxsO2Vsc2UgaWYoYS5hY3Rpb249PSJyZW1vdmVUZXh0Inx8YS5hY3Rpb249PSJyZW1vdmVMaW5lcyIpdGhpcy5saW5lcy5zcGxpY2UoYyxkKzEsbnVsbCksdGhpcy5zdGF0ZXMuc3BsaWNlKGMsZCsxLG51bGwpO2Vsc2V7dmFyIGU9QXJyYXkoZCsxKTtlLnVuc2hpZnQoYywxKSx0aGlzLmxpbmVzLnNwbGljZS5hcHBseSh0aGlzLmxpbmVzLGUpLHRoaXMuc3RhdGVzLnNwbGljZS5hcHBseSh0aGlzLnN0YXRlcyxlKX10aGlzLmN1cnJlbnRMaW5lPU1hdGgubWluKGMsdGhpcy5jdXJyZW50TGluZSx0aGlzLmRvYy5nZXRMZW5ndGgoKSksdGhpcy5zdG9wKCksdGhpcy5ydW5uaW5nPXNldFRpbWVvdXQodGhpcy4kd29ya2VyLDcwMCl9LHRoaXMuc3RvcD1mdW5jdGlvbigpe3RoaXMucnVubmluZyYmY2xlYXJUaW1lb3V0KHRoaXMucnVubmluZyksdGhpcy5ydW5uaW5nPSExfSx0aGlzLmdldFRva2Vucz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5saW5lc1thXXx8dGhpcy4kdG9rZW5pemVSb3coYSl9LHRoaXMuZ2V0U3RhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY3VycmVudExpbmU9PWEmJnRoaXMuJHRva2VuaXplUm93KGEpLHRoaXMuc3RhdGVzW2FdfHwic3RhcnQifSx0aGlzLiR0b2tlbml6ZVJvdz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmRvYy5nZXRMaW5lKGEpLGM9dGhpcy5zdGF0ZXNbYS0xXTtpZihiLmxlbmd0aD5mKXt2YXIgZD17dmFsdWU6Yi5zdWJzdHIoZiksdHlwZToidGV4dCJ9O2I9Yi5zbGljZSgwLGYpfXZhciBlPXRoaXMudG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixjKTtyZXR1cm4gZCYmKGUudG9rZW5zLnB1c2goZCksZS5zdGF0ZT0ic3RhcnQiKSx0aGlzLnN0YXRlc1thXSE9PWUuc3RhdGU/KHRoaXMuc3RhdGVzW2FdPWUuc3RhdGUsdGhpcy5saW5lc1thKzFdPW51bGwsdGhpcy5jdXJyZW50TGluZT5hKzEmJih0aGlzLmN1cnJlbnRMaW5lPWErMSkpOnRoaXMuY3VycmVudExpbmU9PWEmJih0aGlzLmN1cnJlbnRMaW5lPWErMSksdGhpcy5saW5lc1thXT1lLnRva2Vuc319KS5jYWxsKGcucHJvdG90eXBlKSxiLkJhY2tncm91bmRUb2tlbml6ZXI9Z30pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkaW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIiwiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkX2xpbmUiLCJhY2UvZWRpdF9zZXNzaW9uL2ZvbGQiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gaCgpe3RoaXMuZ2V0Rm9sZEF0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmdldEZvbGRMaW5lKGEpO2lmKCFkKXJldHVybiBudWxsO3ZhciBlPWQuZm9sZHM7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBnPWVbZl07aWYoZy5yYW5nZS5jb250YWlucyhhLGIpKXtpZihjPT0xJiZnLnJhbmdlLmlzRW5kKGEsYikpY29udGludWU7aWYoYz09LTEmJmcucmFuZ2UuaXNTdGFydChhLGIpKWNvbnRpbnVlO3JldHVybiBnfX19LHRoaXMuZ2V0Rm9sZHNJblJhbmdlPWZ1bmN0aW9uKGEpe2E9YS5jbG9uZSgpO3ZhciBiPWEuc3RhcnQsYz1hLmVuZCxkPXRoaXMuJGZvbGREYXRhLGU9W107Yi5jb2x1bW4rPTEsYy5jb2x1bW4tPTE7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPWRbZl0ucmFuZ2UuY29tcGFyZVJhbmdlKGEpO2lmKGc9PTIpY29udGludWU7aWYoZz09LTIpYnJlYWs7dmFyIGg9ZFtmXS5mb2xkcztmb3IodmFyIGk9MDtpPGgubGVuZ3RoO2krKyl7dmFyIGo9aFtpXTtnPWoucmFuZ2UuY29tcGFyZVJhbmdlKGEpO2lmKGc9PS0yKWJyZWFrO2lmKGc9PTIpY29udGludWU7aWYoZz09NDIpYnJlYWs7ZS5wdXNoKGopfX1yZXR1cm4gZX0sdGhpcy5nZXRBbGxGb2xkcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYil7YS5wdXNoKGIpO2lmKCFiLnN1YkZvbGRzKXJldHVybjtmb3IodmFyIGQ9MDtkPGIuc3ViRm9sZHMubGVuZ3RoO2QrKyljKGIuc3ViRm9sZHNbZF0pfXZhciBhPVtdLGI9dGhpcy4kZm9sZERhdGE7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspZm9yKHZhciBlPTA7ZTxiW2RdLmZvbGRzLmxlbmd0aDtlKyspYyhiW2RdLmZvbGRzW2VdKTtyZXR1cm4gYX0sdGhpcy5nZXRGb2xkU3RyaW5nQXQ9ZnVuY3Rpb24oYSxiLGMsZCl7ZD1kfHx0aGlzLmdldEZvbGRMaW5lKGEpO2lmKCFkKXJldHVybiBudWxsO3ZhciBlPXtlbmQ6e2NvbHVtbjowfX0sZixnO2Zvcih2YXIgaD0wO2g8ZC5mb2xkcy5sZW5ndGg7aCsrKXtnPWQuZm9sZHNbaF07dmFyIGk9Zy5yYW5nZS5jb21wYXJlRW5kKGEsYik7aWYoaT09LTEpe2Y9dGhpcy5nZXRMaW5lKGcuc3RhcnQucm93KS5zdWJzdHJpbmcoZS5lbmQuY29sdW1uLGcuc3RhcnQuY29sdW1uKTticmVha31pZihpPT09MClyZXR1cm4gbnVsbDtlPWd9cmV0dXJuIGZ8fChmPXRoaXMuZ2V0TGluZShnLnN0YXJ0LnJvdykuc3Vic3RyaW5nKGUuZW5kLmNvbHVtbikpLGM9PS0xP2Yuc3Vic3RyaW5nKDAsYi1lLmVuZC5jb2x1bW4pOmM9PTE/Zi5zdWJzdHJpbmcoYi1lLmVuZC5jb2x1bW4pOmZ9LHRoaXMuZ2V0Rm9sZExpbmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLiRmb2xkRGF0YSxkPTA7YiYmKGQ9Yy5pbmRleE9mKGIpKSxkPT0tMSYmKGQ9MCk7Zm9yKGQ7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07aWYoZS5zdGFydC5yb3c8PWEmJmUuZW5kLnJvdz49YSlyZXR1cm4gZTtpZihlLmVuZC5yb3c+YSlyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0sdGhpcy5nZXROZXh0Rm9sZExpbmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLiRmb2xkRGF0YSxkPTA7YiYmKGQ9Yy5pbmRleE9mKGIpKSxkPT0tMSYmKGQ9MCk7Zm9yKGQ7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07aWYoZS5lbmQucm93Pj1hKXJldHVybiBlfXJldHVybiBudWxsfSx0aGlzLmdldEZvbGRlZFJvd0NvdW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy4kZm9sZERhdGEsZD1iLWErMTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Y1tlXSxnPWYuZW5kLnJvdyxoPWYuc3RhcnQucm93O2lmKGc+PWIpe2g8YiYmKGg+PWE/ZC09Yi1oOmQ9MCk7YnJlYWt9Zz49YSYmKGg+PWE/ZC09Zy1oOmQtPWctYSsxKX1yZXR1cm4gZH0sdGhpcy4kYWRkRm9sZExpbmU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGZvbGREYXRhLnB1c2goYSksdGhpcy4kZm9sZERhdGEuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0YXJ0LnJvdy1iLnN0YXJ0LnJvd30pLGF9LHRoaXMuYWRkRm9sZD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuJGZvbGREYXRhLGQ9ITEsZzthIGluc3RhbmNlb2YgZj9nPWE6Zz1uZXcgZihiLGEpLHRoaXMuJGNsaXBSYW5nZVRvRG9jdW1lbnQoZy5yYW5nZSk7dmFyIGg9Zy5zdGFydC5yb3csaT1nLnN0YXJ0LmNvbHVtbixqPWcuZW5kLnJvdyxrPWcuZW5kLmNvbHVtbjtpZihnLnBsYWNlaG9sZGVyLmxlbmd0aDwyKXRocm93IlBsYWNlaG9sZGVyIGhhcyB0byBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMiO2lmKGg9PWomJmstaTwyKXRocm93IlRoZSByYW5nZSBoYXMgdG8gYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIHdpZHRoIjt2YXIgbD10aGlzLmdldEZvbGRBdChoLGksMSksbT10aGlzLmdldEZvbGRBdChqLGssLTEpO2lmKGwmJm09PWwpcmV0dXJuIGwuYWRkU3ViRm9sZChnKTtpZihsJiYhbC5yYW5nZS5pc1N0YXJ0KGgsaSl8fG0mJiFtLnJhbmdlLmlzRW5kKGosaykpdGhyb3ciQSBmb2xkIGNhbid0IGludGVyc2VjdCBhbHJlYWR5IGV4aXN0aW5nIGZvbGQiK2cucmFuZ2UrbC5yYW5nZTt2YXIgbj10aGlzLmdldEZvbGRzSW5SYW5nZShnLnJhbmdlKTtuLmxlbmd0aD4wJiYodGhpcy5yZW1vdmVGb2xkcyhuKSxnLnN1YkZvbGRzPW4pO2Zvcih2YXIgbz0wO288Yy5sZW5ndGg7bysrKXt2YXIgcD1jW29dO2lmKGo9PXAuc3RhcnQucm93KXtwLmFkZEZvbGQoZyksZD0hMDticmVha31pZihoPT1wLmVuZC5yb3cpe3AuYWRkRm9sZChnKSxkPSEwO2lmKCFnLnNhbWVSb3cpe3ZhciBxPWNbbysxXTtpZihxJiZxLnN0YXJ0LnJvdz09ail7cC5tZXJnZShxKTticmVha319YnJlYWt9aWYoajw9cC5zdGFydC5yb3cpYnJlYWt9cmV0dXJuIGR8fChwPXRoaXMuJGFkZEZvbGRMaW5lKG5ldyBlKHRoaXMuJGZvbGREYXRhLGcpKSksdGhpcy4kdXNlV3JhcE1vZGU/dGhpcy4kdXBkYXRlV3JhcERhdGEocC5zdGFydC5yb3cscC5zdGFydC5yb3cpOnRoaXMuJHVwZGF0ZVJvd0xlbmd0aENhY2hlKHAuc3RhcnQucm93LHAuc3RhcnQucm93KSx0aGlzLiRtb2RpZmllZD0hMCx0aGlzLl9lbWl0KCJjaGFuZ2VGb2xkIix7ZGF0YTpnfSksZ30sdGhpcy5hZGRGb2xkcz1mdW5jdGlvbihhKXthLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy5hZGRGb2xkKGEpfSx0aGlzKX0sdGhpcy5yZW1vdmVGb2xkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZm9sZExpbmUsYz1iLnN0YXJ0LnJvdyxkPWIuZW5kLnJvdyxlPXRoaXMuJGZvbGREYXRhLGY9Yi5mb2xkcztpZihmLmxlbmd0aD09MSllLnNwbGljZShlLmluZGV4T2YoYiksMSk7ZWxzZSBpZihiLnJhbmdlLmlzRW5kKGEuZW5kLnJvdyxhLmVuZC5jb2x1bW4pKWYucG9wKCksYi5lbmQucm93PWZbZi5sZW5ndGgtMV0uZW5kLnJvdyxiLmVuZC5jb2x1bW49ZltmLmxlbmd0aC0xXS5lbmQuY29sdW1uO2Vsc2UgaWYoYi5yYW5nZS5pc1N0YXJ0KGEuc3RhcnQucm93LGEuc3RhcnQuY29sdW1uKSlmLnNoaWZ0KCksYi5zdGFydC5yb3c9ZlswXS5zdGFydC5yb3csYi5zdGFydC5jb2x1bW49ZlswXS5zdGFydC5jb2x1bW47ZWxzZSBpZihhLnNhbWVSb3cpZi5zcGxpY2UoZi5pbmRleE9mKGEpLDEpO2Vsc2V7dmFyIGc9Yi5zcGxpdChhLnN0YXJ0LnJvdyxhLnN0YXJ0LmNvbHVtbik7Zj1nLmZvbGRzLGYuc2hpZnQoKSxnLnN0YXJ0LnJvdz1mWzBdLnN0YXJ0LnJvdyxnLnN0YXJ0LmNvbHVtbj1mWzBdLnN0YXJ0LmNvbHVtbn10aGlzLiR1c2VXcmFwTW9kZT90aGlzLiR1cGRhdGVXcmFwRGF0YShjLGQpOnRoaXMuJHVwZGF0ZVJvd0xlbmd0aENhY2hlKGMsZCksdGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy5fZW1pdCgiY2hhbmdlRm9sZCIse2RhdGE6YX0pfSx0aGlzLnJlbW92ZUZvbGRzPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWIucHVzaChhW2NdKTtiLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy5yZW1vdmVGb2xkKGEpfSx0aGlzKSx0aGlzLiRtb2RpZmllZD0hMH0sdGhpcy5leHBhbmRGb2xkPWZ1bmN0aW9uKGEpe3RoaXMucmVtb3ZlRm9sZChhKSxhLnN1YkZvbGRzLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy5hZGRGb2xkKGEpfSx0aGlzKSxhLnN1YkZvbGRzPVtdfSx0aGlzLmV4cGFuZEZvbGRzPWZ1bmN0aW9uKGEpe2EuZm9yRWFjaChmdW5jdGlvbihhKXt0aGlzLmV4cGFuZEZvbGQoYSl9LHRoaXMpfSx0aGlzLnVuZm9sZD1mdW5jdGlvbihhLGIpe3ZhciBjLGU7YT09bnVsbD9jPW5ldyBkKDAsMCx0aGlzLmdldExlbmd0aCgpLDApOnR5cGVvZiBhPT0ibnVtYmVyIj9jPW5ldyBkKGEsMCxhLHRoaXMuZ2V0TGluZShhKS5sZW5ndGgpOiJyb3ciaW4gYT9jPWQuZnJvbVBvaW50cyhhLGEpOmM9YSxlPXRoaXMuZ2V0Rm9sZHNJblJhbmdlKGMpO2lmKGIpdGhpcy5yZW1vdmVGb2xkcyhlKTtlbHNlIHdoaWxlKGUubGVuZ3RoKXRoaXMuZXhwYW5kRm9sZHMoZSksZT10aGlzLmdldEZvbGRzSW5SYW5nZShjKX0sdGhpcy5pc1Jvd0ZvbGRlZD1mdW5jdGlvbihhLGIpe3JldHVybiEhdGhpcy5nZXRGb2xkTGluZShhLGIpfSx0aGlzLmdldFJvd0ZvbGRFbmQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmdldEZvbGRMaW5lKGEsYik7cmV0dXJuIGM/Yy5lbmQucm93OmF9LHRoaXMuZ2V0Rm9sZERpc3BsYXlMaW5lPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZD09bnVsbCYmKGQ9YS5zdGFydC5yb3csZT0wKSxiPT1udWxsJiYoYj1hLmVuZC5yb3csYz10aGlzLmdldExpbmUoYikubGVuZ3RoKTt2YXIgZj10aGlzLmRvYyxnPSIiO3JldHVybiBhLndhbGsoZnVuY3Rpb24oYSxiLGMsaCl7aWYoYjxkKXJldHVybjtpZihiPT1kKXtpZihjPGUpcmV0dXJuO2g9TWF0aC5tYXgoZSxoKX1hP2crPWE6Zys9Zi5nZXRMaW5lKGIpLnN1YnN0cmluZyhoLGMpfS5iaW5kKHRoaXMpLGIsYyksZ30sdGhpcy5nZXREaXNwbGF5TGluZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLmdldEZvbGRMaW5lKGEpO2lmKCFlKXt2YXIgZjtyZXR1cm4gZj10aGlzLmRvYy5nZXRMaW5lKGEpLGYuc3Vic3RyaW5nKGR8fDAsYnx8Zi5sZW5ndGgpfXJldHVybiB0aGlzLmdldEZvbGREaXNwbGF5TGluZShlLGEsYixjLGQpfSx0aGlzLiRjbG9uZUZvbGREYXRhPWZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIGE9dGhpcy4kZm9sZERhdGEubWFwKGZ1bmN0aW9uKGIpe3ZhciBjPWIuZm9sZHMubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmNsb25lKCl9KTtyZXR1cm4gbmV3IGUoYSxjKX0pLGF9LHRoaXMudG9nZ2xlRm9sZD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLnNlbGVjdGlvbixjPWIuZ2V0UmFuZ2UoKSxkLGU7aWYoYy5pc0VtcHR5KCkpe3ZhciBmPWMuc3RhcnQ7ZD10aGlzLmdldEZvbGRBdChmLnJvdyxmLmNvbHVtbik7aWYoZCl7dGhpcy5leHBhbmRGb2xkKGQpO3JldHVybn0oZT10aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQoZikpP2MuY29tcGFyZVBvaW50KGUpPT0xP2MuZW5kPWU6KGMuc3RhcnQ9ZSxjLnN0YXJ0LmNvbHVtbisrLGMuZW5kLmNvbHVtbi0tKTooZT10aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpmLnJvdyxjb2x1bW46Zi5jb2x1bW4rMX0pKT8oYy5jb21wYXJlUG9pbnQoZSk9PTE/Yy5lbmQ9ZTpjLnN0YXJ0PWUsYy5zdGFydC5jb2x1bW4rKyk6Yz10aGlzLmdldENvbW1lbnRGb2xkUmFuZ2UoZi5yb3csZi5jb2x1bW4pfHxjfWVsc2V7dmFyIGc9dGhpcy5nZXRGb2xkc0luUmFuZ2UoYyk7aWYoYSYmZy5sZW5ndGgpe3RoaXMuZXhwYW5kRm9sZHMoZyk7cmV0dXJufWcubGVuZ3RoPT0xJiYoZD1nWzBdKX1kfHwoZD10aGlzLmdldEZvbGRBdChjLnN0YXJ0LnJvdyxjLnN0YXJ0LmNvbHVtbikpO2lmKGQmJmQucmFuZ2UudG9TdHJpbmcoKT09Yy50b1N0cmluZygpKXt0aGlzLmV4cGFuZEZvbGQoZCk7cmV0dXJufXZhciBoPSIuLi4iO2lmKCFjLmlzTXVsdGlMaW5lKCkpe2g9dGhpcy5nZXRUZXh0UmFuZ2UoYyk7aWYoaC5sZW5ndGg8NClyZXR1cm47aD1oLnRyaW0oKS5zdWJzdHJpbmcoMCwyKSsiLi4ifXRoaXMuYWRkRm9sZChoLGMpfSx0aGlzLmdldENvbW1lbnRGb2xkUmFuZ2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgZyh0aGlzLGEsYiksZT1jLmdldEN1cnJlbnRUb2tlbigpO2lmKGUmJi9eY29tbWVudHxzdHJpbmcvLnRlc3QoZS50eXBlKSl7dmFyIGY9bmV3IGQsaD1uZXcgUmVnRXhwKGUudHlwZS5yZXBsYWNlKC9cLi4qLywiXFwuIikpO2RvIGU9Yy5zdGVwQmFja3dhcmQoKTt3aGlsZShlJiZoLnRlc3QoZS50eXBlKSk7Yy5zdGVwRm9yd2FyZCgpLGYuc3RhcnQucm93PWMuZ2V0Q3VycmVudFRva2VuUm93KCksZi5zdGFydC5jb2x1bW49Yy5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKSsyLGM9bmV3IGcodGhpcyxhLGIpO2RvIGU9Yy5zdGVwRm9yd2FyZCgpO3doaWxlKGUmJmgudGVzdChlLnR5cGUpKTtyZXR1cm4gZT1jLnN0ZXBCYWNrd2FyZCgpLGYuZW5kLnJvdz1jLmdldEN1cnJlbnRUb2tlblJvdygpLGYuZW5kLmNvbHVtbj1jLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2UudmFsdWUubGVuZ3RoLGZ9fSx0aGlzLmZvbGRBbGw9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmZvbGRXaWRnZXRzO2I9Ynx8dGhpcy5nZXRMZW5ndGgoKTtmb3IodmFyIGQ9YXx8MDtkPGI7ZCsrKXtjW2RdPT1udWxsJiYoY1tkXT10aGlzLmdldEZvbGRXaWRnZXQoZCkpO2lmKGNbZF0hPSJzdGFydCIpY29udGludWU7dmFyIGU9dGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2UoZCk7aWYoZSYmZS5lbmQucm93PGIpdHJ5e3RoaXMuYWRkRm9sZCgiLi4uIixlKX1jYXRjaChmKXt9fX0sdGhpcy4kZm9sZFN0eWxlcz17bWFudWFsOjEsbWFya2JlZ2luOjEsbWFya2JlZ2luZW5kOjF9LHRoaXMuJGZvbGRTdHlsZT0ibWFya2JlZ2luIix0aGlzLnNldEZvbGRTdHlsZT1mdW5jdGlvbihhKXtpZighdGhpcy4kZm9sZFN0eWxlc1thXSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9sZCBzdHlsZTogIithKyJbIitPYmplY3Qua2V5cyh0aGlzLiRmb2xkU3R5bGVzKS5qb2luKCIsICIpKyJdIik7aWYodGhpcy4kZm9sZFN0eWxlPT1hKXJldHVybjt0aGlzLiRmb2xkU3R5bGU9YSxhPT0ibWFudWFsIiYmdGhpcy51bmZvbGQoKTt2YXIgYj10aGlzLiRmb2xkTW9kZTt0aGlzLiRzZXRGb2xkaW5nKG51bGwpLHRoaXMuJHNldEZvbGRpbmcoYil9LHRoaXMuJHNldEZvbGRpbmc9ZnVuY3Rpb24oYSl7aWYodGhpcy4kZm9sZE1vZGU9PWEpcmV0dXJuO3RoaXMuJGZvbGRNb2RlPWEsdGhpcy5yZW1vdmVMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiR1cGRhdGVGb2xkV2lkZ2V0cyksdGhpcy5fZW1pdCgiY2hhbmdlQW5ub3RhdGlvbiIpO2lmKCFhfHx0aGlzLiRmb2xkU3R5bGU9PSJtYW51YWwiKXt0aGlzLmZvbGRXaWRnZXRzPW51bGw7cmV0dXJufXRoaXMuZm9sZFdpZGdldHM9W10sdGhpcy5nZXRGb2xkV2lkZ2V0PWEuZ2V0Rm9sZFdpZGdldC5iaW5kKGEsdGhpcyx0aGlzLiRmb2xkU3R5bGUpLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWEuZ2V0Rm9sZFdpZGdldFJhbmdlLmJpbmQoYSx0aGlzLHRoaXMuJGZvbGRTdHlsZSksdGhpcy4kdXBkYXRlRm9sZFdpZGdldHM9dGhpcy51cGRhdGVGb2xkV2lkZ2V0cy5iaW5kKHRoaXMpLHRoaXMub24oImNoYW5nZSIsdGhpcy4kdXBkYXRlRm9sZFdpZGdldHMpfSx0aGlzLm9uRm9sZFdpZGdldENsaWNrPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5nZXRGb2xkV2lkZ2V0KGEpLGQ9dGhpcy5nZXRMaW5lKGEpLGU9Yi5zaGlmdEtleSxmPWV8fGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSxnO2M9PSJlbmQiP2c9dGhpcy5nZXRGb2xkQXQoYSwwLC0xKTpnPXRoaXMuZ2V0Rm9sZEF0KGEsZC5sZW5ndGgsMSk7aWYoZyl7Zj90aGlzLnJlbW92ZUZvbGQoZyk6dGhpcy5leHBhbmRGb2xkKGcpO3JldHVybn12YXIgaD10aGlzLmdldEZvbGRXaWRnZXRSYW5nZShhKTtpZihoKXtpZighaC5pc011bHRpTGluZSgpKXtnPXRoaXMuZ2V0Rm9sZEF0KGguc3RhcnQucm93LGguc3RhcnQuY29sdW1uLDEpO2lmKGcmJmguaXNFcXVhbChnLnJhbmdlKSl7dGhpcy5yZW1vdmVGb2xkKGcpO3JldHVybn19ZXx8dGhpcy5hZGRGb2xkKCIuLi4iLGgpLGYmJnRoaXMuZm9sZEFsbChoLnN0YXJ0LnJvdysxLGguZW5kLnJvdyl9ZWxzZSBmJiZ0aGlzLmZvbGRBbGwoYSsxLHRoaXMuZ2V0TGVuZ3RoKCkpLGIudGFyZ2V0LmNsYXNzTmFtZSs9IiBpbnZhbGlkIn0sdGhpcy51cGRhdGVGb2xkV2lkZ2V0cz1mdW5jdGlvbihhKXt2YXIgYj1hLmRhdGEsYz1iLnJhbmdlLGQ9Yy5zdGFydC5yb3csZT1jLmVuZC5yb3ctZDtpZihlPT09MCl0aGlzLmZvbGRXaWRnZXRzW2RdPW51bGw7ZWxzZSBpZihiLmFjdGlvbj09InJlbW92ZVRleHQifHxiLmFjdGlvbj09InJlbW92ZUxpbmVzIil0aGlzLmZvbGRXaWRnZXRzLnNwbGljZShkLGUrMSxudWxsKTtlbHNle3ZhciBmPUFycmF5KGUrMSk7Zi51bnNoaWZ0KGQsMSksdGhpcy5mb2xkV2lkZ2V0cy5zcGxpY2UuYXBwbHkodGhpcy5mb2xkV2lkZ2V0cyxmKX19fXZhciBkPWEoIi4uL3JhbmdlIikuUmFuZ2UsZT1hKCIuL2ZvbGRfbGluZSIpLkZvbGRMaW5lLGY9YSgiLi9mb2xkIikuRm9sZCxnPWEoIi4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcjtiLkZvbGRpbmc9aH0pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkX2xpbmUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZShhLGIpe3RoaXMuZm9sZERhdGE9YSxBcnJheS5pc0FycmF5KGIpP3RoaXMuZm9sZHM9YjpiPXRoaXMuZm9sZHM9W2JdO3ZhciBjPWJbYi5sZW5ndGgtMV07dGhpcy5yYW5nZT1uZXcgZChiWzBdLnN0YXJ0LnJvdyxiWzBdLnN0YXJ0LmNvbHVtbixjLmVuZC5yb3csYy5lbmQuY29sdW1uKSx0aGlzLnN0YXJ0PXRoaXMucmFuZ2Uuc3RhcnQsdGhpcy5lbmQ9dGhpcy5yYW5nZS5lbmQsdGhpcy5mb2xkcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc2V0Rm9sZExpbmUodGhpcyl9LHRoaXMpfXZhciBkPWEoIi4uL3JhbmdlIikuUmFuZ2U7KGZ1bmN0aW9uKCl7dGhpcy5zaGlmdFJvdz1mdW5jdGlvbihhKXt0aGlzLnN0YXJ0LnJvdys9YSx0aGlzLmVuZC5yb3crPWEsdGhpcy5mb2xkcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Iuc3RhcnQucm93Kz1hLGIuZW5kLnJvdys9YX0pfSx0aGlzLmFkZEZvbGQ9ZnVuY3Rpb24oYSl7aWYoYS5zYW1lUm93KXtpZihhLnN0YXJ0LnJvdzx0aGlzLnN0YXJ0Um93fHxhLmVuZFJvdz50aGlzLmVuZFJvdyl0aHJvdyJDYW4ndCBhZGQgYSBmb2xkIHRvIHRoaXMgRm9sZExpbmUgYXMgaXQgaGFzIG5vIGNvbm5lY3Rpb24iO3RoaXMuZm9sZHMucHVzaChhKSx0aGlzLmZvbGRzLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4tYS5yYW5nZS5jb21wYXJlRW5kKGIuc3RhcnQucm93LGIuc3RhcnQuY29sdW1uKX0pLHRoaXMucmFuZ2UuY29tcGFyZUVuZChhLnN0YXJ0LnJvdyxhLnN0YXJ0LmNvbHVtbik+MD8odGhpcy5lbmQucm93PWEuZW5kLnJvdyx0aGlzLmVuZC5jb2x1bW49YS5lbmQuY29sdW1uKTp0aGlzLnJhbmdlLmNvbXBhcmVTdGFydChhLmVuZC5yb3csYS5lbmQuY29sdW1uKTwwJiYodGhpcy5zdGFydC5yb3c9YS5zdGFydC5yb3csdGhpcy5zdGFydC5jb2x1bW49YS5zdGFydC5jb2x1bW4pfWVsc2UgaWYoYS5zdGFydC5yb3c9PXRoaXMuZW5kLnJvdyl0aGlzLmZvbGRzLnB1c2goYSksdGhpcy5lbmQucm93PWEuZW5kLnJvdyx0aGlzLmVuZC5jb2x1bW49YS5lbmQuY29sdW1uO2Vsc2V7aWYoYS5lbmQucm93IT10aGlzLnN0YXJ0LnJvdyl0aHJvdyJUcnlpbmcgdG8gYWRkIGZvbGQgdG8gRm9sZFJvdyB0aGF0IGRvZXNuJ3QgaGF2ZSBhIG1hdGNoaW5nIHJvdyI7dGhpcy5mb2xkcy51bnNoaWZ0KGEpLHRoaXMuc3RhcnQucm93PWEuc3RhcnQucm93LHRoaXMuc3RhcnQuY29sdW1uPWEuc3RhcnQuY29sdW1ufWEuZm9sZExpbmU9dGhpc30sdGhpcy5jb250YWluc1Jvdz1mdW5jdGlvbihhKXtyZXR1cm4gYT49dGhpcy5zdGFydC5yb3cmJmE8PXRoaXMuZW5kLnJvd30sdGhpcy53YWxrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0wLGU9dGhpcy5mb2xkcyxmLGcsaCxpPSEwO2I9PW51bGwmJihiPXRoaXMuZW5kLnJvdyxjPXRoaXMuZW5kLmNvbHVtbik7Zm9yKHZhciBqPTA7ajxlLmxlbmd0aDtqKyspe2Y9ZVtqXSxnPWYucmFuZ2UuY29tcGFyZVN0YXJ0KGIsYyk7aWYoZz09LTEpe2EobnVsbCxiLGMsZCxpKTtyZXR1cm59aD1hKG51bGwsZi5zdGFydC5yb3csZi5zdGFydC5jb2x1bW4sZCxpKSxoPSFoJiZhKGYucGxhY2Vob2xkZXIsZi5zdGFydC5yb3csZi5zdGFydC5jb2x1bW4sZCk7aWYoaHx8Zz09MClyZXR1cm47aT0hZi5zYW1lUm93LGQ9Zi5lbmQuY29sdW1ufWEobnVsbCxiLGMsZCxpKX0sdGhpcy5nZXROZXh0Rm9sZFRvPWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtmb3IodmFyIGU9MDtlPHRoaXMuZm9sZHMubGVuZ3RoO2UrKyl7Yz10aGlzLmZvbGRzW2VdLGQ9Yy5yYW5nZS5jb21wYXJlRW5kKGEsYik7aWYoZD09LTEpcmV0dXJue2ZvbGQ6YyxraW5kOiJhZnRlciJ9O2lmKGQ9PTApcmV0dXJue2ZvbGQ6YyxraW5kOiJpbnNpZGUifX1yZXR1cm4gbnVsbH0sdGhpcy5hZGRSZW1vdmVDaGFycz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5nZXROZXh0Rm9sZFRvKGEsYiksZSxmO2lmKGQpe2U9ZC5mb2xkO2lmKGQua2luZD09Imluc2lkZSImJmUuc3RhcnQuY29sdW1uIT1iJiZlLnN0YXJ0LnJvdyE9YSl3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nKGEsYixlKTtlbHNlIGlmKGUuc3RhcnQucm93PT1hKXtmPXRoaXMuZm9sZHM7dmFyIGc9Zi5pbmRleE9mKGUpO2c9PTAmJih0aGlzLnN0YXJ0LmNvbHVtbis9Yyk7Zm9yKGc7ZzxmLmxlbmd0aDtnKyspe2U9ZltnXSxlLnN0YXJ0LmNvbHVtbis9YztpZighZS5zYW1lUm93KXJldHVybjtlLmVuZC5jb2x1bW4rPWN9dGhpcy5lbmQuY29sdW1uKz1jfX19LHRoaXMuc3BsaXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmdldE5leHRGb2xkVG8oYSxiKS5mb2xkLGQ9dGhpcy5mb2xkcyxmPXRoaXMuZm9sZERhdGE7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGc9ZC5pbmRleE9mKGMpLGg9ZFtnLTFdO3RoaXMuZW5kLnJvdz1oLmVuZC5yb3csdGhpcy5lbmQuY29sdW1uPWguZW5kLmNvbHVtbixkPWQuc3BsaWNlKGcsZC5sZW5ndGgtZyk7dmFyIGk9bmV3IGUoZixkKTtyZXR1cm4gZi5zcGxpY2UoZi5pbmRleE9mKHRoaXMpKzEsMCxpKSxpfSx0aGlzLm1lcmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZm9sZHM7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5hZGRGb2xkKGJbY10pO3ZhciBkPXRoaXMuZm9sZERhdGE7ZC5zcGxpY2UoZC5pbmRleE9mKGEpLDEpfSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9W3RoaXMucmFuZ2UudG9TdHJpbmcoKSsiOiBbIl07cmV0dXJuIHRoaXMuZm9sZHMuZm9yRWFjaChmdW5jdGlvbihiKXthLnB1c2goIiAgIitiLnRvU3RyaW5nKCkpfSksYS5wdXNoKCJdIiksYS5qb2luKCJcbiIpfSx0aGlzLmlkeFRvUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9MCxjO2Zvcih2YXIgZD0wO2Q8dGhpcy5mb2xkcy5sZW5ndGg7ZCsrKXt2YXIgYz10aGlzLmZvbGRzW2RdO2EtPWMuc3RhcnQuY29sdW1uLWI7aWYoYTwwKXJldHVybntyb3c6Yy5zdGFydC5yb3csY29sdW1uOmMuc3RhcnQuY29sdW1uK2F9O2EtPWMucGxhY2Vob2xkZXIubGVuZ3RoO2lmKGE8MClyZXR1cm4gYy5zdGFydDtiPWMuZW5kLmNvbHVtbn1yZXR1cm57cm93OnRoaXMuZW5kLnJvdyxjb2x1bW46dGhpcy5lbmQuY29sdW1uK2F9fX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuRm9sZExpbmU9ZX0pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIuRm9sZD1mdW5jdGlvbihhLGIpe3RoaXMuZm9sZExpbmU9bnVsbCx0aGlzLnBsYWNlaG9sZGVyPWIsdGhpcy5yYW5nZT1hLHRoaXMuc3RhcnQ9YS5zdGFydCx0aGlzLmVuZD1hLmVuZCx0aGlzLnNhbWVSb3c9YS5zdGFydC5yb3c9PWEuZW5kLnJvdyx0aGlzLnN1YkZvbGRzPVtdfTsoZnVuY3Rpb24oKXt0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuJyInK3RoaXMucGxhY2Vob2xkZXIrJyIgJyt0aGlzLnJhbmdlLnRvU3RyaW5nKCl9LHRoaXMuc2V0Rm9sZExpbmU9ZnVuY3Rpb24oYSl7dGhpcy5mb2xkTGluZT1hLHRoaXMuc3ViRm9sZHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnNldEZvbGRMaW5lKGEpfSl9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJhbmdlLmNsb25lKCksYj1uZXcgZChhLHRoaXMucGxhY2Vob2xkZXIpO3JldHVybiB0aGlzLnN1YkZvbGRzLmZvckVhY2goZnVuY3Rpb24oYSl7Yi5zdWJGb2xkcy5wdXNoKGEuY2xvbmUoKSl9KSxifSx0aGlzLmFkZFN1YkZvbGQ9ZnVuY3Rpb24oYSl7aWYodGhpcy5yYW5nZS5pc0VxdWFsKGEpKXJldHVybiB0aGlzO2lmKCF0aGlzLnJhbmdlLmNvbnRhaW5zUmFuZ2UoYSkpdGhyb3ciQSBmb2xkIGNhbid0IGludGVyc2VjdCBhbHJlYWR5IGV4aXN0aW5nIGZvbGQiK2EucmFuZ2UrdGhpcy5yYW5nZTt2YXIgYj1hLnJhbmdlLnN0YXJ0LnJvdyxjPWEucmFuZ2Uuc3RhcnQuY29sdW1uO2Zvcih2YXIgZD0wLGU9LTE7ZDx0aGlzLnN1YkZvbGRzLmxlbmd0aDtkKyspe2U9dGhpcy5zdWJGb2xkc1tkXS5yYW5nZS5jb21wYXJlKGIsYyk7aWYoZSE9MSlicmVha312YXIgZj10aGlzLnN1YkZvbGRzW2RdO2lmKGU9PTApcmV0dXJuIGYuYWRkU3ViRm9sZChhKTt2YXIgYj1hLnJhbmdlLmVuZC5yb3csYz1hLnJhbmdlLmVuZC5jb2x1bW47Zm9yKHZhciBnPWQsZT0tMTtnPHRoaXMuc3ViRm9sZHMubGVuZ3RoO2crKyl7ZT10aGlzLnN1YkZvbGRzW2ddLnJhbmdlLmNvbXBhcmUoYixjKTtpZihlIT0xKWJyZWFrfXZhciBoPXRoaXMuc3ViRm9sZHNbZ107aWYoZT09MCl0aHJvdyJBIGZvbGQgY2FuJ3QgaW50ZXJzZWN0IGFscmVhZHkgZXhpc3RpbmcgZm9sZCIrYS5yYW5nZSt0aGlzLnJhbmdlO3ZhciBpPXRoaXMuc3ViRm9sZHMuc3BsaWNlKGQsZy1kLGEpO3JldHVybiBhLnNldEZvbGRMaW5lKHRoaXMuZm9sZExpbmUpLGF9fSkuY2FsbChkLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS90b2tlbl9pdGVyYXRvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kc2Vzc2lvbj1hLHRoaXMuJHJvdz1iLHRoaXMuJHJvd1Rva2Vucz1hLmdldFRva2VucyhiKTt2YXIgZD1hLmdldFRva2VuQXQoYixjKTt0aGlzLiR0b2tlbkluZGV4PWQ/ZC5pbmRleDotMX07KGZ1bmN0aW9uKCl7dGhpcy5zdGVwQmFja3dhcmQ9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbkluZGV4LT0xO3doaWxlKHRoaXMuJHRva2VuSW5kZXg8MCl7dGhpcy4kcm93LT0xO2lmKHRoaXMuJHJvdzwwKXJldHVybiB0aGlzLiRyb3c9MCxudWxsO3RoaXMuJHJvd1Rva2Vucz10aGlzLiRzZXNzaW9uLmdldFRva2Vucyh0aGlzLiRyb3cpLHRoaXMuJHRva2VuSW5kZXg9dGhpcy4kcm93VG9rZW5zLmxlbmd0aC0xfXJldHVybiB0aGlzLiRyb3dUb2tlbnNbdGhpcy4kdG9rZW5JbmRleF19LHRoaXMuc3RlcEZvcndhcmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRzZXNzaW9uLmdldExlbmd0aCgpO3RoaXMuJHRva2VuSW5kZXgrPTE7d2hpbGUodGhpcy4kdG9rZW5JbmRleD49dGhpcy4kcm93VG9rZW5zLmxlbmd0aCl7dGhpcy4kcm93Kz0xO2lmKHRoaXMuJHJvdz49YSlyZXR1cm4gdGhpcy4kcm93PWEtMSxudWxsO3RoaXMuJHJvd1Rva2Vucz10aGlzLiRzZXNzaW9uLmdldFRva2Vucyh0aGlzLiRyb3cpLHRoaXMuJHRva2VuSW5kZXg9MH1yZXR1cm4gdGhpcy4kcm93VG9rZW5zW3RoaXMuJHRva2VuSW5kZXhdfSx0aGlzLmdldEN1cnJlbnRUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRyb3dUb2tlbnNbdGhpcy4kdG9rZW5JbmRleF19LHRoaXMuZ2V0Q3VycmVudFRva2VuUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJvd30sdGhpcy5nZXRDdXJyZW50VG9rZW5Db2x1bW49ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRyb3dUb2tlbnMsYj10aGlzLiR0b2tlbkluZGV4LGM9YVtiXS5zdGFydDtpZihjIT09dW5kZWZpbmVkKXJldHVybiBjO2M9MDt3aGlsZShiPjApYi09MSxjKz1hW2JdLnZhbHVlLmxlbmd0aDtyZXR1cm4gY319KS5jYWxsKGQucHJvdG90eXBlKSxiLlRva2VuSXRlcmF0b3I9ZH0pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9icmFja2V0X21hdGNoIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3Rva2VuX2l0ZXJhdG9yIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGUoKXt0aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQ9ZnVuY3Rpb24oYSl7aWYoYS5jb2x1bW49PTApcmV0dXJuIG51bGw7dmFyIGI9dGhpcy5nZXRMaW5lKGEucm93KS5jaGFyQXQoYS5jb2x1bW4tMSk7aWYoYj09IiIpcmV0dXJuIG51bGw7dmFyIGM9Yi5tYXRjaCgvKFtcKFxbXHtdKXwoW1wpXF1cfV0pLyk7cmV0dXJuIGM/Y1sxXT90aGlzLiRmaW5kQ2xvc2luZ0JyYWNrZXQoY1sxXSxhKTp0aGlzLiRmaW5kT3BlbmluZ0JyYWNrZXQoY1syXSxhKTpudWxsfSx0aGlzLiRicmFja2V0cz17IikiOiIoIiwiKCI6IikiLCJdIjoiWyIsIlsiOiJdIiwieyI6In0iLCJ9IjoieyJ9LHRoaXMuJGZpbmRPcGVuaW5nQnJhY2tldD1mdW5jdGlvbihhLGIsYyl7dmFyIGU9dGhpcy4kYnJhY2tldHNbYV0sZj0xLGc9bmV3IGQodGhpcyxiLnJvdyxiLmNvbHVtbiksaD1nLmdldEN1cnJlbnRUb2tlbigpO2h8fChoPWcuc3RlcEZvcndhcmQoKSk7aWYoIWgpcmV0dXJuO2N8fChjPW5ldyBSZWdFeHAoIihcXC4/IitoLnR5cGUucmVwbGFjZSgiLiIsIlxcLiIpLnJlcGxhY2UoInJwYXJlbiIsIi5wYXJlbiIpKyIpKyIpKTt2YXIgaT1iLmNvbHVtbi1nLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpLTIsaj1oLnZhbHVlO2Zvcig7Oyl7d2hpbGUoaT49MCl7dmFyIGs9ai5jaGFyQXQoaSk7aWYoaz09ZSl7Zi09MTtpZihmPT0wKXJldHVybntyb3c6Zy5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46aStnLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfX1lbHNlIGs9PWEmJihmKz0xKTtpLT0xfWRvIGg9Zy5zdGVwQmFja3dhcmQoKTt3aGlsZShoJiYhYy50ZXN0KGgudHlwZSkpO2lmKGg9PW51bGwpYnJlYWs7aj1oLnZhbHVlLGk9ai5sZW5ndGgtMX1yZXR1cm4gbnVsbH0sdGhpcy4kZmluZENsb3NpbmdCcmFja2V0PWZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmPXRoaXMuJGJyYWNrZXRzW2FdLGc9MSxoPW5ldyBkKHRoaXMsYi5yb3csYi5jb2x1bW4pLGk9aC5nZXRDdXJyZW50VG9rZW4oKTtpfHwoaT1oLnN0ZXBGb3J3YXJkKCkpO2lmKCFpKXJldHVybjtjfHwoYz1uZXcgUmVnRXhwKCIoXFwuPyIraS50eXBlLnJlcGxhY2UoIi4iLCJcXC4iKS5yZXBsYWNlKCJscGFyZW4iLCIucGFyZW4iKSsiKSsiKSk7dmFyIGo9Yi5jb2x1bW4taC5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKTtmb3IoOzspe3ZhciBrPWkudmFsdWUsbD1rLmxlbmd0aDt3aGlsZShqPGwpe3ZhciBtPWsuY2hhckF0KGopO2lmKG09PWYpe2ctPTE7aWYoZz09MClyZXR1cm57cm93OmguZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmoraC5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX19ZWxzZSBtPT1hJiYoZys9MSk7ais9MX1kb3tpPWguc3RlcEZvcndhcmQoKTtpZihlKWlmKGk9PT1udWxsfHxpLnR5cGU9PSJzdHJpbmciKXJldHVybntyb3c6aC5nZXRDdXJyZW50VG9rZW5Sb3coKSsoaT09PW51bGw/MTotMSksY29sdW1uOjB9fXdoaWxlKGkmJiFjLnRlc3QoaS50eXBlKSk7aWYoaT09bnVsbClicmVhaztqPTB9cmV0dXJuIG51bGx9fXZhciBkPWEoIi4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcjtiLkJyYWNrZXRNYXRjaD1lfSksZGVmaW5lKCJhY2Uvc2VhcmNoIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9saWIvbGFuZyIpLGU9YSgiLi9saWIvb29wIiksZj1hKCIuL3JhbmdlIikuUmFuZ2UsZz1mdW5jdGlvbigpe3RoaXMuJG9wdGlvbnM9e25lZWRsZToiIixiYWNrd2FyZHM6ITEsd3JhcDohMSxjYXNlU2Vuc2l0aXZlOiExLHdob2xlV29yZDohMSxzY29wZTpnLkFMTCxyZWdFeHA6ITF9fTtnLkFMTD0xLGcuU0VMRUNUSU9OPTIsZnVuY3Rpb24oKXt0aGlzLnNldD1mdW5jdGlvbihhKXtyZXR1cm4gZS5taXhpbih0aGlzLiRvcHRpb25zLGEpLHRoaXN9LHRoaXMuZ2V0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBkLmNvcHlPYmplY3QodGhpcy4kb3B0aW9ucyl9LHRoaXMuZmluZD1mdW5jdGlvbihhKXtpZighdGhpcy4kb3B0aW9ucy5uZWVkbGUpcmV0dXJuIG51bGw7dmFyIGI9dGhpcy4kbWF0Y2hJdGVyYXRvcihhKTtpZighYilyZXR1cm4hMTt2YXIgYz1udWxsO3JldHVybiBiLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGM9YSwhMH0pLGN9LHRoaXMuZmluZEFsbD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLiRvcHRpb25zO2lmKCFiLm5lZWRsZSlyZXR1cm5bXTt2YXIgYz10aGlzLiRtYXRjaEl0ZXJhdG9yKGEpO2lmKCFjKXJldHVybiExO3ZhciBkPSFiLnN0YXJ0JiZiLndyYXAmJmIuc2NvcGU9PWcuQUxMO2QmJihiLnN0YXJ0PXtyb3c6MCxjb2x1bW46MH0pO3ZhciBlPVtdO3JldHVybiBjLmZvckVhY2goZnVuY3Rpb24oYSl7ZS5wdXNoKGEpfSksZCYmKGIuc3RhcnQ9bnVsbCksZX0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuJG9wdGlvbnMucmVnRXhwKXJldHVybiBhPT10aGlzLiRvcHRpb25zLm5lZWRsZT9iOm51bGw7dmFyIGM9dGhpcy4kYXNzZW1ibGVSZWdFeHAoKTtpZighYylyZXR1cm47dmFyIGQ9Yy5leGVjKGEpO3JldHVybiBkJiZkWzBdLmxlbmd0aD09YS5sZW5ndGg/YS5yZXBsYWNlKGMsYik6bnVsbH0sdGhpcy4kbWF0Y2hJdGVyYXRvcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLiRhc3NlbWJsZVJlZ0V4cCgpO2lmKCFiKXJldHVybiExO3ZhciBjPXRoaXMsZCxlPXRoaXMuJG9wdGlvbnMuYmFja3dhcmRzO2lmKHRoaXMuJG9wdGlvbnMuJGlzTXVsdGlMaW5lKXZhciBnPWZ1bmN0aW9uKGMsZSxnKXt2YXIgaD1jO2UmJihjPWMuc3Vic3RyaW5nKGUpKTt2YXIgaT1iLmxlbmd0aCxqPWJbMF07aWYoYy5zbGljZSgtai5sZW5ndGgpIT1qKXJldHVybjtmb3IodmFyIGs9MTtrPGktMTtrKyspaWYoYltrXSE9YS5nZXRMaW5lKGcraykpcmV0dXJuO2o9YltpLTFdO2lmKGEuZ2V0TGluZShnK2ktMSkuc2xpY2UoMCxqLmxlbmd0aCkhPWopcmV0dXJuO3ZhciBsPW5ldyBmKGcsaC5sZW5ndGgtYlswXS5sZW5ndGgsZytpLTEsYltpLTFdLmxlbmd0aCk7aWYoZChsKSlyZXR1cm4hMH07ZWxzZSBpZihlKXZhciBnPWZ1bmN0aW9uKGEsZSxmKXtlJiYoYT1hLnN1YnN0cmluZyhlKSk7dmFyIGc9W107YS5yZXBsYWNlKGIsZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMl07cmV0dXJuIGcucHVzaCh7c3RyOmEsb2Zmc2V0OmUrYn0pLGF9KTtmb3IodmFyIGg9Zy5sZW5ndGgtMTtoPj0wO2gtLSl7dmFyIGk9Z1toXSxqPWMuJHJhbmdlRnJvbU1hdGNoKGYsaS5vZmZzZXQsaS5zdHIubGVuZ3RoKTtpZihkKGopKXJldHVybiEwfX07ZWxzZSB2YXIgZz1mdW5jdGlvbihhLGUsZil7ZSYmKGE9YS5zdWJzdHJpbmcoZSkpO3ZhciBnPVtdO2EucmVwbGFjZShiLGZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTJdO3JldHVybiBnLnB1c2goe3N0cjphLG9mZnNldDplK2J9KSxhfSk7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciBpPWdbaF0saj1jLiRyYW5nZUZyb21NYXRjaChmLGkub2Zmc2V0LGkuc3RyLmxlbmd0aCk7aWYoZChqKSlyZXR1cm4hMH19O3JldHVybntmb3JFYWNoOmZ1bmN0aW9uKGIpe2Q9YixjLiRsaW5lSXRlcmF0b3IoYSkuZm9yRWFjaChnKX19fSx0aGlzLiRyYW5nZUZyb21NYXRjaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG5ldyBmKGEsYixhLGIrYyl9LHRoaXMuJGFzc2VtYmxlUmVnRXhwPWZ1bmN0aW9uKCl7aWYodHlwZW9mIHRoaXMuJG9wdGlvbnMubmVlZGxlIT0ic3RyaW5nIilyZXR1cm4gdGhpcy4kb3B0aW9ucy5uZWVkbGU7dmFyIGE9dGhpcy4kb3B0aW9ucy5uZWVkbGU7aWYoIXRoaXMuJG9wdGlvbnMucmVnRXhwKXtpZigvW1xuXHJdLy50ZXN0KGEpKXJldHVybiB0aGlzLiRvcHRpb25zLiRpc011bHRpTGluZT0hMCxhLnNwbGl0KC9cclxufFxyfFxuLyk7YT1kLmVzY2FwZVJlZ0V4cChhKX10aGlzLiRvcHRpb25zLiRpc011bHRpTGluZT0hMSx0aGlzLiRvcHRpb25zLndob2xlV29yZCYmKGE9IlxcYiIrYSsiXFxiIik7dmFyIGI9ImciO3RoaXMuJG9wdGlvbnMuY2FzZVNlbnNpdGl2ZXx8KGIrPSJpIik7dHJ5e3ZhciBjPW5ldyBSZWdFeHAoYSxiKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4gY30sdGhpcy4kbGluZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGwoYyl7dmFyIGY9YS5nZXRMaW5lKGMpO3JldHVybiBiJiZjPT1kLmVuZC5yb3cmJihmPWYuc3Vic3RyaW5nKDAsZC5lbmQuY29sdW1uKSksayYmYz09ZS5yb3cmJihmPWYuc3Vic3RyaW5nKDAsZS5jb2x1bW4pKSxmfXZhciBiPXRoaXMuJG9wdGlvbnMuc2NvcGU9PWcuU0VMRUNUSU9OLGM9dGhpcy4kb3B0aW9ucy5iYWNrd2FyZHMsZD10aGlzLiRvcHRpb25zLnJhbmdlfHxhLmdldFNlbGVjdGlvbigpLmdldFJhbmdlKCksZT10aGlzLiRvcHRpb25zLnN0YXJ0fHxkW2IhPWM/InN0YXJ0IjoiZW5kIl0sZj1iP2Quc3RhcnQucm93OjAsaD1iP2Quc3RhcnQuY29sdW1uOjAsaT1iP2QuZW5kLnJvdzphLmdldExlbmd0aCgpLTEsaj10aGlzLiRvcHRpb25zLndyYXAsaz0hMTtpZighYyl2YXIgbT1mdW5jdGlvbihhKXt2YXIgYj1lLnJvdyxjPWwoYiksZD1lLmNvbHVtbixnPSExO2s9ITE7d2hpbGUoIWEoYyxkLGIpKXtpZihnKXJldHVybjtiKyssZD0wO2lmKGI+aSl7aWYoIWopcmV0dXJuO2I9ZixkPWgsaz0hMH1iPT1lLnJvdyYmKGc9ITApLGM9bChiKX19O2Vsc2UgdmFyIG09ZnVuY3Rpb24oYyl7dmFyIGc9ZS5yb3csaz1hLmdldExpbmUoZykuc3Vic3RyaW5nKDAsZS5jb2x1bW4pLGw9MCxtPSExLG49ITE7d2hpbGUoIWMoayxsLGcpKXtpZihtKXJldHVybjtnLS0sbD0wO2lmKGc8Zil7aWYoIWopcmV0dXJuO2c9aSxuPSEwfWc9PWUucm93JiYobT0hMCksaz1hLmdldExpbmUoZyksYiYmKGc9PWY/bD1oOmc9PWkmJihrPWsuc3Vic3RyaW5nKDAsZC5lbmQuY29sdW1uKSkpLG4mJmc9PWUucm93JiYobD1lLmNvbHVtbil9fTtyZXR1cm57Zm9yRWFjaDptfX19LmNhbGwoZy5wcm90b3R5cGUpLGIuU2VhcmNoPWd9KSxkZWZpbmUoImFjZS9jb21tYW5kcy9jb21tYW5kX21hbmFnZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9rZXlib2FyZC9oYXNoX2hhbmRsZXIiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4va2V5Ym9hcmQvaGFzaF9oYW5kbGVyIikuSGFzaEhhbmRsZXIsZj1hKCIuLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixnPWZ1bmN0aW9uKGEsYil7dGhpcy5wbGF0Zm9ybT1hLHRoaXMuY29tbWFuZHM9e30sdGhpcy5jb21tbWFuZEtleUJpbmRpbmc9e30sdGhpcy5hZGRDb21tYW5kcyhiKSx0aGlzLnNldERlZmF1bHRIYW5kbGVyKCJleGVjIixmdW5jdGlvbihhKXtyZXR1cm4gYS5jb21tYW5kLmV4ZWMoYS5lZGl0b3IsYS5hcmdzfHx7fSl9KX07ZC5pbmhlcml0cyhnLGUpLGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxmKSx0aGlzLmV4ZWM9ZnVuY3Rpb24oYSxiLGMpe3R5cGVvZiBhPT0ic3RyaW5nIiYmKGE9dGhpcy5jb21tYW5kc1thXSk7aWYoIWEpcmV0dXJuITE7aWYoYiYmYi4kcmVhZE9ubHkmJiFhLnJlYWRPbmx5KXJldHVybiExO3ZhciBkPXRoaXMuX2VtaXQoImV4ZWMiLHtlZGl0b3I6Yixjb21tYW5kOmEsYXJnczpjfSk7cmV0dXJuIGQ9PT0hMT8hMTohMH0sdGhpcy50b2dnbGVSZWNvcmRpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLiRpblJlcGxheSlyZXR1cm47cmV0dXJuIHRoaXMucmVjb3JkaW5nPyh0aGlzLm1hY3JvLnBvcCgpLHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXhlYyIsdGhpcy4kYWRkQ29tbWFuZFRvTWFjcm8pLHRoaXMubWFjcm8ubGVuZ3RofHwodGhpcy5tYWNybz10aGlzLm9sZE1hY3JvKSx0aGlzLnJlY29yZGluZz0hMSk6KHRoaXMuJGFkZENvbW1hbmRUb01hY3JvfHwodGhpcy4kYWRkQ29tbWFuZFRvTWFjcm89ZnVuY3Rpb24oYSl7dGhpcy5tYWNyby5wdXNoKFthLmNvbW1hbmQsYS5hcmdzXSl9LmJpbmQodGhpcykpLHRoaXMub2xkTWFjcm89dGhpcy5tYWNybyx0aGlzLm1hY3JvPVtdLHRoaXMub24oImV4ZWMiLHRoaXMuJGFkZENvbW1hbmRUb01hY3JvKSx0aGlzLnJlY29yZGluZz0hMCl9LHRoaXMucmVwbGF5PWZ1bmN0aW9uKGEpe2lmKHRoaXMuJGluUmVwbGF5fHwhdGhpcy5tYWNybylyZXR1cm47aWYodGhpcy5yZWNvcmRpbmcpcmV0dXJuIHRoaXMudG9nZ2xlUmVjb3JkaW5nKCk7dHJ5e3RoaXMuJGluUmVwbGF5PSEwLHRoaXMubWFjcm8uZm9yRWFjaChmdW5jdGlvbihiKXt0eXBlb2YgYj09InN0cmluZyI/dGhpcy5leGVjKGIsYSk6dGhpcy5leGVjKGJbMF0sYSxiWzFdKX0sdGhpcyl9ZmluYWxseXt0aGlzLiRpblJlcGxheT0hMX19LHRoaXMudHJpbU1hY3JvPWZ1bmN0aW9uKGEpe3JldHVybiBhLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGFbMF0hPSJzdHJpbmciJiYoYVswXT1hWzBdLm5hbWUpLGFbMV18fChhPWFbMF0pLGF9KX19LmNhbGwoZy5wcm90b3R5cGUpLGIuQ29tbWFuZE1hbmFnZXI9Z30pLGRlZmluZSgiYWNlL2tleWJvYXJkL2hhc2hfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIva2V5cyJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBlKGEsYil7dGhpcy5wbGF0Zm9ybT1iLHRoaXMuY29tbWFuZHM9e30sdGhpcy5jb21tbWFuZEtleUJpbmRpbmc9e30sdGhpcy5hZGRDb21tYW5kcyhhKX12YXIgZD1hKCIuLi9saWIva2V5cyIpOyhmdW5jdGlvbigpe3RoaXMuYWRkQ29tbWFuZD1mdW5jdGlvbihhKXt0aGlzLmNvbW1hbmRzW2EubmFtZV0mJnRoaXMucmVtb3ZlQ29tbWFuZChhKSx0aGlzLmNvbW1hbmRzW2EubmFtZV09YSxhLmJpbmRLZXkmJnRoaXMuX2J1aWxkS2V5SGFzaChhKX0sdGhpcy5yZW1vdmVDb21tYW5kPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhPT0ic3RyaW5nIj9hOmEubmFtZTthPXRoaXMuY29tbWFuZHNbYl0sZGVsZXRlIHRoaXMuY29tbWFuZHNbYl07dmFyIGM9dGhpcy5jb21tbWFuZEtleUJpbmRpbmc7Zm9yKHZhciBkIGluIGMpZm9yKHZhciBlIGluIGNbZF0pY1tkXVtlXT09YSYmZGVsZXRlIGNbZF1bZV19LHRoaXMuYmluZEtleT1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybjtpZih0eXBlb2YgYj09ImZ1bmN0aW9uIil7dGhpcy5hZGRDb21tYW5kKHtleGVjOmIsYmluZEtleTphLG5hbWU6YX0pO3JldHVybn12YXIgYz10aGlzLmNvbW1tYW5kS2V5QmluZGluZzthLnNwbGl0KCJ8IikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZD10aGlzLnBhcnNlS2V5cyhhLGIpLGU9ZC5oYXNoSWQ7KGNbZV18fChjW2VdPXt9KSlbZC5rZXldPWJ9LHRoaXMpfSx0aGlzLmFkZENvbW1hbmRzPWZ1bmN0aW9uKGEpe2EmJk9iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGM9YVtiXTtpZih0eXBlb2YgYz09InN0cmluZyIpcmV0dXJuIHRoaXMuYmluZEtleShjLGIpO3R5cGVvZiBjPT0iZnVuY3Rpb24iJiYoYz17ZXhlYzpjfSksYy5uYW1lfHwoYy5uYW1lPWIpLHRoaXMuYWRkQ29tbWFuZChjKX0sdGhpcyl9LHRoaXMucmVtb3ZlQ29tbWFuZHM9ZnVuY3Rpb24oYSl7T2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihiKXt0aGlzLnJlbW92ZUNvbW1hbmQoYVtiXSl9LHRoaXMpfSx0aGlzLmJpbmRLZXlzPWZ1bmN0aW9uKGEpe09iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24oYil7dGhpcy5iaW5kS2V5KGIsYVtiXSl9LHRoaXMpfSx0aGlzLl9idWlsZEtleUhhc2g9ZnVuY3Rpb24oYSl7dmFyIGI9YS5iaW5kS2V5O2lmKCFiKXJldHVybjt2YXIgYz10eXBlb2YgYj09InN0cmluZyI/YjpiW3RoaXMucGxhdGZvcm1dO3RoaXMuYmluZEtleShjLGEpfSx0aGlzLnBhcnNlS2V5cz1mdW5jdGlvbihhKXt2YXIgYixjPTAsZT1hLnRvTG93ZXJDYXNlKCkudHJpbSgpLnNwbGl0KC9ccypcLVxzKi8pO2Zvcih2YXIgZj0wLGc9ZS5sZW5ndGg7ZjxnO2YrKylkLktFWV9NT0RTW2VbZl1dP2N8PWQuS0VZX01PRFNbZVtmXV06Yj1lW2ZdfHwiLSI7cmV0dXJuIGVbMF09PSJ0ZXh0IiYmZS5sZW5ndGg9PTImJihjPS0xLGI9ZVsxXSkse2tleTpiLGhhc2hJZDpjfX0sdGhpcy5maW5kS2V5Q29tbWFuZD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMuY29tbW1hbmRLZXlCaW5kaW5nO3JldHVybiBkW2JdJiZkW2JdW2MudG9Mb3dlckNhc2UoKV19LHRoaXMuaGFuZGxlS2V5Ym9hcmQ9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJue2NvbW1hbmQ6dGhpcy5maW5kS2V5Q29tbWFuZChiLGMpfX19KS5jYWxsKGUucHJvdG90eXBlKSxiLkhhc2hIYW5kbGVyPWV9KSxkZWZpbmUoImFjZS9jb21tYW5kcy9kZWZhdWx0X2NvbW1hbmRzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGUoYSxiKXtyZXR1cm57d2luOmEsbWFjOmJ9fXZhciBkPWEoIi4uL2xpYi9sYW5nIik7Yi5jb21tYW5kcz1be25hbWU6InNlbGVjdGFsbCIsYmluZEtleTplKCJDdHJsLUEiLCJDb21tYW5kLUEiKSxleGVjOmZ1bmN0aW9uKGEpe2Euc2VsZWN0QWxsKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiY2VudGVyc2VsZWN0aW9uIixiaW5kS2V5OmUobnVsbCwiQ3RybC1MIiksZXhlYzpmdW5jdGlvbihhKXthLmNlbnRlclNlbGVjdGlvbigpfSxyZWFkT25seTohMH0se25hbWU6ImdvdG9saW5lIixiaW5kS2V5OmUoIkN0cmwtTCIsIkNvbW1hbmQtTCIpLGV4ZWM6ZnVuY3Rpb24oYSl7dmFyIGI9cGFyc2VJbnQocHJvbXB0KCJFbnRlciBsaW5lIG51bWJlcjoiKSwxMCk7aXNOYU4oYil8fGEuZ290b0xpbmUoYil9LHJlYWRPbmx5OiEwfSx7bmFtZToiZm9sZCIsYmluZEtleTplKCJBbHQtTCIsIkFsdC1MIiksZXhlYzpmdW5jdGlvbihhKXthLnNlc3Npb24udG9nZ2xlRm9sZCghMSl9LHJlYWRPbmx5OiEwfSx7bmFtZToidW5mb2xkIixiaW5kS2V5OmUoIkFsdC1TaGlmdC1MIiwiQWx0LVNoaWZ0LUwiKSxleGVjOmZ1bmN0aW9uKGEpe2Euc2Vzc2lvbi50b2dnbGVGb2xkKCEwKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJmb2xkYWxsIixiaW5kS2V5OmUoIkFsdC0wIiwiQWx0LTAiKSxleGVjOmZ1bmN0aW9uKGEpe2Euc2Vzc2lvbi5mb2xkQWxsKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToidW5mb2xkYWxsIixiaW5kS2V5OmUoIkFsdC1TaGlmdC0wIiwiQWx0LVNoaWZ0LTAiKSxleGVjOmZ1bmN0aW9uKGEpe2Euc2Vzc2lvbi51bmZvbGQoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJmaW5kbmV4dCIsYmluZEtleTplKCJDdHJsLUsiLCJDb21tYW5kLUciKSxleGVjOmZ1bmN0aW9uKGEpe2EuZmluZE5leHQoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJmaW5kcHJldmlvdXMiLGJpbmRLZXk6ZSgiQ3RybC1TaGlmdC1LIiwiQ29tbWFuZC1TaGlmdC1HIiksZXhlYzpmdW5jdGlvbihhKXthLmZpbmRQcmV2aW91cygpfSxyZWFkT25seTohMH0se25hbWU6ImZpbmQiLGJpbmRLZXk6ZSgiQ3RybC1GIiwiQ29tbWFuZC1GIiksZXhlYzpmdW5jdGlvbihhKXt2YXIgYj1wcm9tcHQoIkZpbmQ6IixhLmdldENvcHlUZXh0KCkpO2EuZmluZChiKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJvdmVyd3JpdGUiLGJpbmRLZXk6ZSgiSW5zZXJ0IiwiSW5zZXJ0IiksZXhlYzpmdW5jdGlvbihhKXthLnRvZ2dsZU92ZXJ3cml0ZSgpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdHRvc3RhcnQiLGJpbmRLZXk6ZSgiQ3RybC1TaGlmdC1Ib21lfEFsdC1TaGlmdC1VcCIsIkNvbW1hbmQtU2hpZnQtVXAiKSxleGVjOmZ1bmN0aW9uKGEpe2EuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0RmlsZVN0YXJ0KCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b3N0YXJ0IixiaW5kS2V5OmUoIkN0cmwtSG9tZXxDdHJsLVVwIiwiQ29tbWFuZC1Ib21lfENvbW1hbmQtVXAiKSxleGVjOmZ1bmN0aW9uKGEpe2EubmF2aWdhdGVGaWxlU3RhcnQoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R1cCIsYmluZEtleTplKCJTaGlmdC1VcCIsIlNoaWZ0LVVwIiksZXhlYzpmdW5jdGlvbihhKXthLmdldFNlbGVjdGlvbigpLnNlbGVjdFVwKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6ImdvbGluZXVwIixiaW5kS2V5OmUoIlVwIiwiVXB8Q3RybC1QIiksZXhlYzpmdW5jdGlvbihhLGIpe2EubmF2aWdhdGVVcChiLnRpbWVzKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0dG9lbmQiLGJpbmRLZXk6ZSgiQ3RybC1TaGlmdC1FbmR8QWx0LVNoaWZ0LURvd24iLCJDb21tYW5kLVNoaWZ0LURvd24iKSxleGVjOmZ1bmN0aW9uKGEpe2EuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0RmlsZUVuZCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvZW5kIixiaW5kS2V5OmUoIkN0cmwtRW5kfEN0cmwtRG93biIsIkNvbW1hbmQtRW5kfENvbW1hbmQtRG93biIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5uYXZpZ2F0ZUZpbGVFbmQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0ZG93biIsYmluZEtleTplKCJTaGlmdC1Eb3duIiwiU2hpZnQtRG93biIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5nZXRTZWxlY3Rpb24oKS5zZWxlY3REb3duKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6ImdvbGluZWRvd24iLGJpbmRLZXk6ZSgiRG93biIsIkRvd258Q3RybC1OIiksZXhlYzpmdW5jdGlvbihhLGIpe2EubmF2aWdhdGVEb3duKGIudGltZXMpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R3b3JkbGVmdCIsYmluZEtleTplKCJDdHJsLVNoaWZ0LUxlZnQiLCJPcHRpb24tU2hpZnQtTGVmdCIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RXb3JkTGVmdCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb3Rvd29yZGxlZnQiLGJpbmRLZXk6ZSgiQ3RybC1MZWZ0IiwiT3B0aW9uLUxlZnQiKSxleGVjOmZ1bmN0aW9uKGEpe2EubmF2aWdhdGVXb3JkTGVmdCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R0b2xpbmVzdGFydCIsYmluZEtleTplKCJBbHQtU2hpZnQtTGVmdCIsIkNvbW1hbmQtU2hpZnQtTGVmdCIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RMaW5lU3RhcnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b2xpbmVzdGFydCIsYmluZEtleTplKCJBbHQtTGVmdHxIb21lIiwiQ29tbWFuZC1MZWZ0fEhvbWV8Q3RybC1BIiksZXhlYzpmdW5jdGlvbihhKXthLm5hdmlnYXRlTGluZVN0YXJ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdGxlZnQiLGJpbmRLZXk6ZSgiU2hpZnQtTGVmdCIsIlNoaWZ0LUxlZnQiKSxleGVjOmZ1bmN0aW9uKGEpe2EuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0TGVmdCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvbGVmdCIsYmluZEtleTplKCJMZWZ0IiwiTGVmdHxDdHJsLUIiKSxleGVjOmZ1bmN0aW9uKGEsYil7YS5uYXZpZ2F0ZUxlZnQoYi50aW1lcyl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdHdvcmRyaWdodCIsYmluZEtleTplKCJDdHJsLVNoaWZ0LVJpZ2h0IiwiT3B0aW9uLVNoaWZ0LVJpZ2h0IiksZXhlYzpmdW5jdGlvbihhKXthLmdldFNlbGVjdGlvbigpLnNlbGVjdFdvcmRSaWdodCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb3Rvd29yZHJpZ2h0IixiaW5kS2V5OmUoIkN0cmwtUmlnaHQiLCJPcHRpb24tUmlnaHQiKSxleGVjOmZ1bmN0aW9uKGEpe2EubmF2aWdhdGVXb3JkUmlnaHQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0dG9saW5lZW5kIixiaW5kS2V5OmUoIkFsdC1TaGlmdC1SaWdodCIsIkNvbW1hbmQtU2hpZnQtUmlnaHQiKSxleGVjOmZ1bmN0aW9uKGEpe2EuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0TGluZUVuZCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvbGluZWVuZCIsYmluZEtleTplKCJBbHQtUmlnaHR8RW5kIiwiQ29tbWFuZC1SaWdodHxFbmR8Q3RybC1FIiksZXhlYzpmdW5jdGlvbihhKXthLm5hdmlnYXRlTGluZUVuZCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3RyaWdodCIsYmluZEtleTplKCJTaGlmdC1SaWdodCIsIlNoaWZ0LVJpZ2h0IiksZXhlYzpmdW5jdGlvbihhKXthLmdldFNlbGVjdGlvbigpLnNlbGVjdFJpZ2h0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6ImdvdG9yaWdodCIsYmluZEtleTplKCJSaWdodCIsIlJpZ2h0fEN0cmwtRiIpLGV4ZWM6ZnVuY3Rpb24oYSxiKXthLm5hdmlnYXRlUmlnaHQoYi50aW1lcyl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdHBhZ2Vkb3duIixiaW5kS2V5OmUoIlNoaWZ0LVBhZ2VEb3duIiwiU2hpZnQtUGFnZURvd24iKSxleGVjOmZ1bmN0aW9uKGEpe2Euc2VsZWN0UGFnZURvd24oKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJwYWdlZG93biIsYmluZEtleTplKG51bGwsIlBhZ2VEb3duIiksZXhlYzpmdW5jdGlvbihhKXthLnNjcm9sbFBhZ2VEb3duKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b3BhZ2Vkb3duIixiaW5kS2V5OmUoIlBhZ2VEb3duIiwiT3B0aW9uLVBhZ2VEb3dufEN0cmwtViIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5nb3RvUGFnZURvd24oKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3RwYWdldXAiLGJpbmRLZXk6ZSgiU2hpZnQtUGFnZVVwIiwiU2hpZnQtUGFnZVVwIiksZXhlYzpmdW5jdGlvbihhKXthLnNlbGVjdFBhZ2VVcCgpfSxyZWFkT25seTohMH0se25hbWU6InBhZ2V1cCIsYmluZEtleTplKG51bGwsIlBhZ2VVcCIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5zY3JvbGxQYWdlVXAoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvcGFnZXVwIixiaW5kS2V5OmUoIlBhZ2VVcCIsIk9wdGlvbi1QYWdlVXAiKSxleGVjOmZ1bmN0aW9uKGEpe2EuZ290b1BhZ2VVcCgpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdGxpbmVzdGFydCIsYmluZEtleTplKCJTaGlmdC1Ib21lIiwiU2hpZnQtSG9tZSIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RMaW5lU3RhcnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0bGluZWVuZCIsYmluZEtleTplKCJTaGlmdC1FbmQiLCJTaGlmdC1FbmQiKSxleGVjOmZ1bmN0aW9uKGEpe2EuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0TGluZUVuZCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJ0b2dnbGVyZWNvcmRpbmciLGJpbmRLZXk6ZSgiQ3RybC1BbHQtRSIsIkNvbW1hbmQtT3B0aW9uLUUiKSxleGVjOmZ1bmN0aW9uKGEpe2EuY29tbWFuZHMudG9nZ2xlUmVjb3JkaW5nKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToicmVwbGF5bWFjcm8iLGJpbmRLZXk6ZSgiQ3RybC1TaGlmdC1FIiwiQ29tbWFuZC1TaGlmdC1FIiksZXhlYzpmdW5jdGlvbihhKXthLmNvbW1hbmRzLnJlcGxheShhKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJqdW1wdG9tYXRjaGluZyIsYmluZEtleTplKCJDdHJsLVNoaWZ0LVAiLCJDdHJsLVNoaWZ0LVAiKSxleGVjOmZ1bmN0aW9uKGEpe2EuanVtcFRvTWF0Y2hpbmcoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiY3V0IixleGVjOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0U2VsZWN0aW9uUmFuZ2UoKTthLl9lbWl0KCJjdXQiLGIpLGEuc2VsZWN0aW9uLmlzRW1wdHkoKXx8KGEuc2Vzc2lvbi5yZW1vdmUoYiksYS5jbGVhclNlbGVjdGlvbigpKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToicmVtb3ZlbGluZSIsYmluZEtleTplKCJDdHJsLUQiLCJDb21tYW5kLUQiKSxleGVjOmZ1bmN0aW9uKGEpe2EucmVtb3ZlTGluZXMoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToidG9nZ2xlY29tbWVudCIsYmluZEtleTplKCJDdHJsLS8iLCJDb21tYW5kLS8iKSxleGVjOmZ1bmN0aW9uKGEpe2EudG9nZ2xlQ29tbWVudExpbmVzKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6InJlcGxhY2UiLGJpbmRLZXk6ZSgiQ3RybC1SIiwiQ29tbWFuZC1PcHRpb24tRiIpLGV4ZWM6ZnVuY3Rpb24oYSl7dmFyIGI9cHJvbXB0KCJGaW5kOiIsYS5nZXRDb3B5VGV4dCgpKTtpZighYilyZXR1cm47dmFyIGM9cHJvbXB0KCJSZXBsYWNlbWVudDoiKTtpZighYylyZXR1cm47YS5yZXBsYWNlKGMse25lZWRsZTpifSl9fSx7bmFtZToicmVwbGFjZWFsbCIsYmluZEtleTplKCJDdHJsLVNoaWZ0LVIiLCJDb21tYW5kLVNoaWZ0LU9wdGlvbi1GIiksZXhlYzpmdW5jdGlvbihhKXt2YXIgYj1wcm9tcHQoIkZpbmQ6Iik7aWYoIWIpcmV0dXJuO3ZhciBjPXByb21wdCgiUmVwbGFjZW1lbnQ6Iik7aWYoIWMpcmV0dXJuO2EucmVwbGFjZUFsbChjLHtuZWVkbGU6Yn0pfX0se25hbWU6InVuZG8iLGJpbmRLZXk6ZSgiQ3RybC1aIiwiQ29tbWFuZC1aIiksZXhlYzpmdW5jdGlvbihhKXthLnVuZG8oKX19LHtuYW1lOiJyZWRvIixiaW5kS2V5OmUoIkN0cmwtU2hpZnQtWnxDdHJsLVkiLCJDb21tYW5kLVNoaWZ0LVp8Q29tbWFuZC1ZIiksZXhlYzpmdW5jdGlvbihhKXthLnJlZG8oKX19LHtuYW1lOiJjb3B5bGluZXN1cCIsYmluZEtleTplKCJDdHJsLUFsdC1VcCIsIkNvbW1hbmQtT3B0aW9uLVVwIiksZXhlYzpmdW5jdGlvbihhKXthLmNvcHlMaW5lc1VwKCl9fSx7bmFtZToibW92ZWxpbmVzdXAiLGJpbmRLZXk6ZSgiQWx0LVVwIiwiT3B0aW9uLVVwIiksZXhlYzpmdW5jdGlvbihhKXthLm1vdmVMaW5lc1VwKCl9fSx7bmFtZToiY29weWxpbmVzZG93biIsYmluZEtleTplKCJDdHJsLUFsdC1Eb3duIiwiQ29tbWFuZC1PcHRpb24tRG93biIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5jb3B5TGluZXNEb3duKCl9fSx7bmFtZToibW92ZWxpbmVzZG93biIsYmluZEtleTplKCJBbHQtRG93biIsIk9wdGlvbi1Eb3duIiksZXhlYzpmdW5jdGlvbihhKXthLm1vdmVMaW5lc0Rvd24oKX19LHtuYW1lOiJkZWwiLGJpbmRLZXk6ZSgiRGVsZXRlIiwiRGVsZXRlfEN0cmwtRCIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5yZW1vdmUoInJpZ2h0Iil9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6ImJhY2tzcGFjZSIsYmluZEtleTplKCJDb21tYW5kLUJhY2tzcGFjZXxPcHRpb24tQmFja3NwYWNlfFNoaWZ0LUJhY2tzcGFjZXxCYWNrc3BhY2UiLCJDdHJsLUJhY2tzcGFjZXxDb21tYW5kLUJhY2tzcGFjZXxTaGlmdC1CYWNrc3BhY2V8QmFja3NwYWNlfEN0cmwtSCIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS5yZW1vdmUoImxlZnQiKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToicmVtb3ZldG9saW5lc3RhcnQiLGJpbmRLZXk6ZSgiQWx0LUJhY2tzcGFjZSIsIkNvbW1hbmQtQmFja3NwYWNlIiksZXhlYzpmdW5jdGlvbihhKXthLnJlbW92ZVRvTGluZVN0YXJ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6InJlbW92ZXRvbGluZWVuZCIsYmluZEtleTplKCJBbHQtRGVsZXRlIiwiQ3RybC1LIiksZXhlYzpmdW5jdGlvbihhKXthLnJlbW92ZVRvTGluZUVuZCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJyZW1vdmV3b3JkbGVmdCIsYmluZEtleTplKCJDdHJsLUJhY2tzcGFjZSIsIkFsdC1CYWNrc3BhY2V8Q3RybC1BbHQtQmFja3NwYWNlIiksZXhlYzpmdW5jdGlvbihhKXthLnJlbW92ZVdvcmRMZWZ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6InJlbW92ZXdvcmRyaWdodCIsYmluZEtleTplKCJDdHJsLURlbGV0ZSIsIkFsdC1EZWxldGUiKSxleGVjOmZ1bmN0aW9uKGEpe2EucmVtb3ZlV29yZFJpZ2h0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6Im91dGRlbnQiLGJpbmRLZXk6ZSgiU2hpZnQtVGFiIiwiU2hpZnQtVGFiIiksZXhlYzpmdW5jdGlvbihhKXthLmJsb2NrT3V0ZGVudCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJpbmRlbnQiLGJpbmRLZXk6ZSgiVGFiIiwiVGFiIiksZXhlYzpmdW5jdGlvbihhKXthLmluZGVudCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJpbnNlcnRzdHJpbmciLGV4ZWM6ZnVuY3Rpb24oYSxiKXthLmluc2VydChiKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToiaW5zZXJ0dGV4dCIsZXhlYzpmdW5jdGlvbihhLGIpe2EuaW5zZXJ0KGQuc3RyaW5nUmVwZWF0KGIudGV4dHx8IiIsYi50aW1lc3x8MSkpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJzcGxpdGxpbmUiLGJpbmRLZXk6ZShudWxsLCJDdHJsLU8iKSxleGVjOmZ1bmN0aW9uKGEpe2Euc3BsaXRMaW5lKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6InRyYW5zcG9zZWxldHRlcnMiLGJpbmRLZXk6ZSgiQ3RybC1UIiwiQ3RybC1UIiksZXhlYzpmdW5jdGlvbihhKXthLnRyYW5zcG9zZUxldHRlcnMoKX0sbXVsdGlTZWxlY3RBY3Rpb246ZnVuY3Rpb24oYSl7YS50cmFuc3Bvc2VTZWxlY3Rpb25zKDEpfX0se25hbWU6InRvdXBwZXJjYXNlIixiaW5kS2V5OmUoIkN0cmwtVSIsIkN0cmwtVSIpLGV4ZWM6ZnVuY3Rpb24oYSl7YS50b1VwcGVyQ2FzZSgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJ0b2xvd2VyY2FzZSIsYmluZEtleTplKCJDdHJsLVNoaWZ0LVUiLCJDdHJsLVNoaWZ0LVUiKSxleGVjOmZ1bmN0aW9uKGEpe2EudG9Mb3dlckNhc2UoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifV19KSxkZWZpbmUoImFjZS91bmRvbWFuYWdlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbigpe3RoaXMucmVzZXQoKX07KGZ1bmN0aW9uKCl7dGhpcy5leGVjdXRlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuYXJnc1swXTt0aGlzLiRkb2M9YS5hcmdzWzFdLHRoaXMuJHVuZG9TdGFjay5wdXNoKGIpLHRoaXMuJHJlZG9TdGFjaz1bXX0sdGhpcy51bmRvPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuJHVuZG9TdGFjay5wb3AoKSxjPW51bGw7cmV0dXJuIGImJihjPXRoaXMuJGRvYy51bmRvQ2hhbmdlcyhiLGEpLHRoaXMuJHJlZG9TdGFjay5wdXNoKGIpKSxjfSx0aGlzLnJlZG89ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy4kcmVkb1N0YWNrLnBvcCgpLGM9bnVsbDtyZXR1cm4gYiYmKGM9dGhpcy4kZG9jLnJlZG9DaGFuZ2VzKGIsYSksdGhpcy4kdW5kb1N0YWNrLnB1c2goYikpLGN9LHRoaXMucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLiR1bmRvU3RhY2s9W10sdGhpcy4kcmVkb1N0YWNrPVtdfSx0aGlzLmhhc1VuZG89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdW5kb1N0YWNrLmxlbmd0aD4wfSx0aGlzLmhhc1JlZG89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcmVkb1N0YWNrLmxlbmd0aD4wfX0pLmNhbGwoZC5wcm90b3R5cGUpLGIuVW5kb01hbmFnZXI9ZH0pLGRlZmluZSgiYWNlL3ZpcnR1YWxfcmVuZGVyZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9ldmVudCIsImFjZS9saWIvdXNlcmFnZW50IiwiYWNlL2NvbmZpZyIsImFjZS9saWIvbmV0IiwiYWNlL2xheWVyL2d1dHRlciIsImFjZS9sYXllci9tYXJrZXIiLCJhY2UvbGF5ZXIvdGV4dCIsImFjZS9sYXllci9jdXJzb3IiLCJhY2Uvc2Nyb2xsYmFyIiwiYWNlL3JlbmRlcmxvb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJ0ZXh0IWFjZS9jc3MvZWRpdG9yLmNzcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2xpYi9vb3AiKSxlPWEoIi4vbGliL2RvbSIpLGY9YSgiLi9saWIvZXZlbnQiKSxnPWEoIi4vbGliL3VzZXJhZ2VudCIpLGg9YSgiLi9jb25maWciKSxpPWEoIi4vbGliL25ldCIpLGo9YSgiLi9sYXllci9ndXR0ZXIiKS5HdXR0ZXIsaz1hKCIuL2xheWVyL21hcmtlciIpLk1hcmtlcixsPWEoIi4vbGF5ZXIvdGV4dCIpLlRleHQsbT1hKCIuL2xheWVyL2N1cnNvciIpLkN1cnNvcixuPWEoIi4vc2Nyb2xsYmFyIikuU2Nyb2xsQmFyLG89YSgiLi9yZW5kZXJsb29wIikuUmVuZGVyTG9vcCxwPWEoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscT1hKCJ0ZXh0IS4vY3NzL2VkaXRvci5jc3MiKTtlLmltcG9ydENzc1N0cmluZyhxLCJhY2VfZWRpdG9yIik7dmFyIHI9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO3RoaXMuY29udGFpbmVyPWEsdGhpcy4ka2VlcFRleHRBcmVhQXRDdXJzb3I9IWcuaXNJRSxlLmFkZENzc0NsYXNzKGEsImFjZV9lZGl0b3IiKSx0aGlzLnNldFRoZW1lKGIpLHRoaXMuJGd1dHRlcj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuJGd1dHRlci5jbGFzc05hbWU9ImFjZV9ndXR0ZXIiLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuJGd1dHRlciksdGhpcy5zY3JvbGxlcj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuc2Nyb2xsZXIuY2xhc3NOYW1lPSJhY2Vfc2Nyb2xsZXIiLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc2Nyb2xsZXIpLHRoaXMuY29udGVudD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuY29udGVudC5jbGFzc05hbWU9ImFjZV9jb250ZW50Iix0aGlzLnNjcm9sbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGVudCksdGhpcy4kZ3V0dGVyTGF5ZXI9bmV3IGoodGhpcy4kZ3V0dGVyKSx0aGlzLiRndXR0ZXJMYXllci5vbigiY2hhbmdlR3V0dGVyV2lkdGgiLHRoaXMub25SZXNpemUuYmluZCh0aGlzLCEwKSksdGhpcy5zZXRGYWRlRm9sZFdpZGdldHMoITApLHRoaXMuJG1hcmtlckJhY2s9bmV3IGsodGhpcy5jb250ZW50KTt2YXIgZD10aGlzLiR0ZXh0TGF5ZXI9bmV3IGwodGhpcy5jb250ZW50KTt0aGlzLmNhbnZhcz1kLmVsZW1lbnQsdGhpcy4kbWFya2VyRnJvbnQ9bmV3IGsodGhpcy5jb250ZW50KSx0aGlzLmNoYXJhY3RlcldpZHRoPWQuZ2V0Q2hhcmFjdGVyV2lkdGgoKSx0aGlzLmxpbmVIZWlnaHQ9ZC5nZXRMaW5lSGVpZ2h0KCksdGhpcy4kY3Vyc29yTGF5ZXI9bmV3IG0odGhpcy5jb250ZW50KSx0aGlzLiRjdXJzb3JQYWRkaW5nPTgsdGhpcy4kaG9yaXpTY3JvbGw9ITEsdGhpcy4kaG9yaXpTY3JvbGxBbHdheXNWaXNpYmxlPSExLHRoaXMuJGFuaW1hdGVkU2Nyb2xsPSExLHRoaXMuc2Nyb2xsQmFyPW5ldyBuKGEpLHRoaXMuc2Nyb2xsQmFyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZnVuY3Rpb24oYSl7Yy4kaW5TY3JvbGxBbmltYXRpb258fGMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoYS5kYXRhKX0pLHRoaXMuc2Nyb2xsVG9wPTAsdGhpcy5zY3JvbGxMZWZ0PTAsZi5hZGRMaXN0ZW5lcih0aGlzLnNjcm9sbGVyLCJzY3JvbGwiLGZ1bmN0aW9uKCl7dmFyIGE9Yy5zY3JvbGxlci5zY3JvbGxMZWZ0O2Muc2Nyb2xsTGVmdD1hLGMuc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KGEpfSksdGhpcy5jdXJzb3JQb3M9e3JvdzowLGNvbHVtbjowfSx0aGlzLiR0ZXh0TGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlQ2hhcmFjdGVyU2l6ZSIsZnVuY3Rpb24oKXtjLmNoYXJhY3RlcldpZHRoPWQuZ2V0Q2hhcmFjdGVyV2lkdGgoKSxjLmxpbmVIZWlnaHQ9ZC5nZXRMaW5lSGVpZ2h0KCksYy4kdXBkYXRlUHJpbnRNYXJnaW4oKSxjLm9uUmVzaXplKCEwKSxjLiRsb29wLnNjaGVkdWxlKGMuQ0hBTkdFX0ZVTEwpfSksdGhpcy4kc2l6ZT17d2lkdGg6MCxoZWlnaHQ6MCxzY3JvbGxlckhlaWdodDowLHNjcm9sbGVyV2lkdGg6MH0sdGhpcy5sYXllckNvbmZpZz17d2lkdGg6MSxwYWRkaW5nOjAsZmlyc3RSb3c6MCxmaXJzdFJvd1NjcmVlbjowLGxhc3RSb3c6MCxsaW5lSGVpZ2h0OjEsY2hhcmFjdGVyV2lkdGg6MSxtaW5IZWlnaHQ6MSxtYXhIZWlnaHQ6MSxvZmZzZXQ6MCxoZWlnaHQ6MX0sdGhpcy4kbG9vcD1uZXcgbyh0aGlzLiRyZW5kZXJDaGFuZ2VzLmJpbmQodGhpcyksdGhpcy5jb250YWluZXIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyksdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKSx0aGlzLnNldFBhZGRpbmcoNCksdGhpcy4kdXBkYXRlUHJpbnRNYXJnaW4oKX07KGZ1bmN0aW9uKCl7dGhpcy5zaG93R3V0dGVyPSEwLHRoaXMuQ0hBTkdFX0NVUlNPUj0xLHRoaXMuQ0hBTkdFX01BUktFUj0yLHRoaXMuQ0hBTkdFX0dVVFRFUj00LHRoaXMuQ0hBTkdFX1NDUk9MTD04LHRoaXMuQ0hBTkdFX0xJTkVTPTE2LHRoaXMuQ0hBTkdFX1RFWFQ9MzIsdGhpcy5DSEFOR0VfU0laRT02NCx0aGlzLkNIQU5HRV9NQVJLRVJfQkFDSz0xMjgsdGhpcy5DSEFOR0VfTUFSS0VSX0ZST05UPTI1Nix0aGlzLkNIQU5HRV9GVUxMPTUxMix0aGlzLkNIQU5HRV9IX1NDUk9MTD0xMDI0LGQuaW1wbGVtZW50KHRoaXMscCksdGhpcy5zZXRTZXNzaW9uPWZ1bmN0aW9uKGEpe3RoaXMuc2Vzc2lvbj1hLHRoaXMuc2Nyb2xsZXIuY2xhc3NOYW1lPSJhY2Vfc2Nyb2xsZXIiLHRoaXMuJGN1cnNvckxheWVyLnNldFNlc3Npb24oYSksdGhpcy4kbWFya2VyQmFjay5zZXRTZXNzaW9uKGEpLHRoaXMuJG1hcmtlckZyb250LnNldFNlc3Npb24oYSksdGhpcy4kZ3V0dGVyTGF5ZXIuc2V0U2Vzc2lvbihhKSx0aGlzLiR0ZXh0TGF5ZXIuc2V0U2Vzc2lvbihhKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0ZVTEwpfSx0aGlzLnVwZGF0ZUxpbmVzPWZ1bmN0aW9uKGEsYil7Yj09PXVuZGVmaW5lZCYmKGI9SW5maW5pdHkpLHRoaXMuJGNoYW5nZWRMaW5lcz8odGhpcy4kY2hhbmdlZExpbmVzLmZpcnN0Um93PmEmJih0aGlzLiRjaGFuZ2VkTGluZXMuZmlyc3RSb3c9YSksdGhpcy4kY2hhbmdlZExpbmVzLmxhc3RSb3c8YiYmKHRoaXMuJGNoYW5nZWRMaW5lcy5sYXN0Um93PWIpKTp0aGlzLiRjaGFuZ2VkTGluZXM9e2ZpcnN0Um93OmEsbGFzdFJvdzpifSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0xJTkVTKX0sdGhpcy51cGRhdGVUZXh0PWZ1bmN0aW9uKCl7dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9URVhUKX0sdGhpcy51cGRhdGVGdWxsPWZ1bmN0aW9uKCl7dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKX0sdGhpcy51cGRhdGVGb250U2l6ZT1mdW5jdGlvbigpe3RoaXMuJHRleHRMYXllci5jaGVja0ZvclNpemVDaGFuZ2VzKCl9LHRoaXMub25SZXNpemU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5DSEFOR0VfU0laRSxjPXRoaXMuJHNpemUsZD1lLmdldElubmVySGVpZ2h0KHRoaXMuY29udGFpbmVyKTtpZihhfHxjLmhlaWdodCE9ZCljLmhlaWdodD1kLHRoaXMuc2Nyb2xsZXIuc3R5bGUuaGVpZ2h0PWQrInB4IixjLnNjcm9sbGVySGVpZ2h0PXRoaXMuc2Nyb2xsZXIuY2xpZW50SGVpZ2h0LHRoaXMuc2Nyb2xsQmFyLnNldEhlaWdodChjLnNjcm9sbGVySGVpZ2h0KSx0aGlzLnNlc3Npb24mJih0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKHRoaXMuZ2V0U2Nyb2xsVG9wKCkpLGJ8PXRoaXMuQ0hBTkdFX0ZVTEwpO3ZhciBmPWUuZ2V0SW5uZXJXaWR0aCh0aGlzLmNvbnRhaW5lcik7aWYoYXx8Yy53aWR0aCE9Zil7Yy53aWR0aD1mO3ZhciBnPXRoaXMuc2hvd0d1dHRlcj90aGlzLiRndXR0ZXIub2Zmc2V0V2lkdGg6MDt0aGlzLnNjcm9sbGVyLnN0eWxlLmxlZnQ9ZysicHgiLGMuc2Nyb2xsZXJXaWR0aD1NYXRoLm1heCgwLGYtZy10aGlzLnNjcm9sbEJhci5nZXRXaWR0aCgpKSx0aGlzLnNjcm9sbGVyLnN0eWxlLndpZHRoPWMuc2Nyb2xsZXJXaWR0aCsicHgiO2lmKHRoaXMuc2Vzc2lvbi5nZXRVc2VXcmFwTW9kZSgpJiZ0aGlzLmFkanVzdFdyYXBMaW1pdCgpfHxhKWJ8PXRoaXMuQ0hBTkdFX0ZVTEx9dGhpcy4kbG9vcC5zY2hlZHVsZShiKX0sdGhpcy5hZGp1c3RXcmFwTGltaXQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRzaXplLnNjcm9sbGVyV2lkdGgtdGhpcy4kcGFkZGluZyoyLGI9TWF0aC5mbG9vcihhL3RoaXMuY2hhcmFjdGVyV2lkdGgpO3JldHVybiB0aGlzLnNlc3Npb24uYWRqdXN0V3JhcExpbWl0KGIpfSx0aGlzLnNldEFuaW1hdGVkU2Nyb2xsPWZ1bmN0aW9uKGEpe3RoaXMuJGFuaW1hdGVkU2Nyb2xsPWF9LHRoaXMuZ2V0QW5pbWF0ZWRTY3JvbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYW5pbWF0ZWRTY3JvbGx9LHRoaXMuc2V0U2hvd0ludmlzaWJsZXM9ZnVuY3Rpb24oYSl7dGhpcy4kdGV4dExheWVyLnNldFNob3dJbnZpc2libGVzKGEpJiZ0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX1RFWFQpfSx0aGlzLmdldFNob3dJbnZpc2libGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRleHRMYXllci5zaG93SW52aXNpYmxlc30sdGhpcy4kc2hvd1ByaW50TWFyZ2luPSEwLHRoaXMuc2V0U2hvd1ByaW50TWFyZ2luPWZ1bmN0aW9uKGEpe3RoaXMuJHNob3dQcmludE1hcmdpbj1hLHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9LHRoaXMuZ2V0U2hvd1ByaW50TWFyZ2luPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNob3dQcmludE1hcmdpbn0sdGhpcy4kcHJpbnRNYXJnaW5Db2x1bW49ODAsdGhpcy5zZXRQcmludE1hcmdpbkNvbHVtbj1mdW5jdGlvbihhKXt0aGlzLiRwcmludE1hcmdpbkNvbHVtbj1hLHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9LHRoaXMuZ2V0UHJpbnRNYXJnaW5Db2x1bW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcHJpbnRNYXJnaW5Db2x1bW59LHRoaXMuZ2V0U2hvd0d1dHRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNob3dHdXR0ZXJ9LHRoaXMuc2V0U2hvd0d1dHRlcj1mdW5jdGlvbihhKXtpZih0aGlzLnNob3dHdXR0ZXI9PT1hKXJldHVybjt0aGlzLiRndXR0ZXIuc3R5bGUuZGlzcGxheT1hPyJibG9jayI6Im5vbmUiLHRoaXMuc2hvd0d1dHRlcj1hLHRoaXMub25SZXNpemUoITApfSx0aGlzLmdldEZhZGVGb2xkV2lkZ2V0cz1mdW5jdGlvbigpe3JldHVybiBlLmhhc0Nzc0NsYXNzKHRoaXMuJGd1dHRlciwiYWNlX2ZhZGUtZm9sZC13aWRnZXRzIil9LHRoaXMuc2V0RmFkZUZvbGRXaWRnZXRzPWZ1bmN0aW9uKGEpe2E/ZS5hZGRDc3NDbGFzcyh0aGlzLiRndXR0ZXIsImFjZV9mYWRlLWZvbGQtd2lkZ2V0cyIpOmUucmVtb3ZlQ3NzQ2xhc3ModGhpcy4kZ3V0dGVyLCJhY2VfZmFkZS1mb2xkLXdpZGdldHMiKX0sdGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZT0hMCx0aGlzLnNldEhpZ2hsaWdodEd1dHRlckxpbmU9ZnVuY3Rpb24oYSl7aWYodGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZT09YSlyZXR1cm47dGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZT1hLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfR1VUVEVSKX0sdGhpcy5nZXRIaWdobGlnaHRHdXR0ZXJMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmV9LHRoaXMuJHVwZGF0ZUd1dHRlckxpbmVIaWdobGlnaHQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5zZXNzaW9uLnNlbGVjdGlvbi5sZWFkLnJvdztpZihiPT10aGlzLiRndXR0ZXJMaW5lSGlnaGxpZ2h0KXJldHVybjtpZighYSl7dmFyIGM9dGhpcy4kZ3V0dGVyTGF5ZXIuZWxlbWVudC5jaGlsZHJlbixkPWNbdGhpcy4kZ3V0dGVyTGluZUhpZ2hsaWdodC10aGlzLmxheWVyQ29uZmlnLmZpcnN0Um93XTtkJiZlLnJlbW92ZUNzc0NsYXNzKGQsImFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUiKTt2YXIgZj1jW2ItdGhpcy5sYXllckNvbmZpZy5maXJzdFJvd107ZiYmZS5hZGRDc3NDbGFzcyhmLCJhY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIil9dGhpcy4kZ3V0dGVyTGF5ZXIucmVtb3ZlR3V0dGVyRGVjb3JhdGlvbih0aGlzLiRndXR0ZXJMaW5lSGlnaGxpZ2h0LCJhY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIiksdGhpcy4kZ3V0dGVyTGF5ZXIuYWRkR3V0dGVyRGVjb3JhdGlvbihiLCJhY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIiksdGhpcy4kZ3V0dGVyTGluZUhpZ2hsaWdodD1ifSx0aGlzLiR1cGRhdGVQcmludE1hcmdpbj1mdW5jdGlvbigpe3ZhciBhO2lmKCF0aGlzLiRzaG93UHJpbnRNYXJnaW4mJiF0aGlzLiRwcmludE1hcmdpbkVsKXJldHVybjt0aGlzLiRwcmludE1hcmdpbkVsfHwoYT1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGEuY2xhc3NOYW1lPSJhY2VfcHJpbnRfbWFyZ2luX2xheWVyIix0aGlzLiRwcmludE1hcmdpbkVsPWUuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy4kcHJpbnRNYXJnaW5FbC5jbGFzc05hbWU9ImFjZV9wcmludF9tYXJnaW4iLGEuYXBwZW5kQ2hpbGQodGhpcy4kcHJpbnRNYXJnaW5FbCksdGhpcy5jb250ZW50Lmluc2VydEJlZm9yZShhLHRoaXMuJHRleHRMYXllci5lbGVtZW50KSk7dmFyIGI9dGhpcy4kcHJpbnRNYXJnaW5FbC5zdHlsZTtiLmxlZnQ9dGhpcy5jaGFyYWN0ZXJXaWR0aCp0aGlzLiRwcmludE1hcmdpbkNvbHVtbit0aGlzLiRwYWRkaW5nKyJweCIsYi52aXNpYmlsaXR5PXRoaXMuJHNob3dQcmludE1hcmdpbj8idmlzaWJsZSI6ImhpZGRlbiJ9LHRoaXMuZ2V0Q29udGFpbmVyRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lcn0sdGhpcy5nZXRNb3VzZUV2ZW50VGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudH0sdGhpcy5nZXRUZXh0QXJlYUNvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lcn0sdGhpcy4kbW92ZVRleHRBcmVhVG9DdXJzb3I9ZnVuY3Rpb24oKXtpZighdGhpcy4ka2VlcFRleHRBcmVhQXRDdXJzb3IpcmV0dXJuO3ZhciBhPXRoaXMuJGN1cnNvckxheWVyLiRwaXhlbFBvcy50b3AsYj10aGlzLiRjdXJzb3JMYXllci4kcGl4ZWxQb3MubGVmdDthLT10aGlzLmxheWVyQ29uZmlnLm9mZnNldDtpZihhPDB8fGE+dGhpcy5sYXllckNvbmZpZy5oZWlnaHQtdGhpcy5saW5lSGVpZ2h0KXJldHVybjt2YXIgYz10aGlzLmNoYXJhY3RlcldpZHRoO3RoaXMuJGNvbXBvc2l0aW9uJiYoYys9dGhpcy50ZXh0YXJlYS5zY3JvbGxXaWR0aCksYi09dGhpcy5zY3JvbGxMZWZ0LGI+dGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoLWMmJihiPXRoaXMuJHNpemUuc2Nyb2xsZXJXaWR0aC1jKSx0aGlzLnNob3dHdXR0ZXImJihiKz10aGlzLiRndXR0ZXJMYXllci5ndXR0ZXJXaWR0aCksdGhpcy50ZXh0YXJlYS5zdHlsZS5oZWlnaHQ9dGhpcy5saW5lSGVpZ2h0KyJweCIsdGhpcy50ZXh0YXJlYS5zdHlsZS53aWR0aD1jKyJweCIsdGhpcy50ZXh0YXJlYS5zdHlsZS5sZWZ0PWIrInB4Iix0aGlzLnRleHRhcmVhLnN0eWxlLnRvcD1hLTErInB4In0sdGhpcy5nZXRGaXJzdFZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXllckNvbmZpZy5maXJzdFJvd30sdGhpcy5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxheWVyQ29uZmlnLmZpcnN0Um93Kyh0aGlzLmxheWVyQ29uZmlnLm9mZnNldD09PTA/MDoxKX0sdGhpcy5nZXRMYXN0RnVsbHlWaXNpYmxlUm93PWZ1bmN0aW9uKCl7dmFyIGE9TWF0aC5mbG9vcigodGhpcy5sYXllckNvbmZpZy5oZWlnaHQrdGhpcy5sYXllckNvbmZpZy5vZmZzZXQpL3RoaXMubGF5ZXJDb25maWcubGluZUhlaWdodCk7cmV0dXJuIHRoaXMubGF5ZXJDb25maWcuZmlyc3RSb3ctMSthfSx0aGlzLmdldExhc3RWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF5ZXJDb25maWcubGFzdFJvd30sdGhpcy4kcGFkZGluZz1udWxsLHRoaXMuc2V0UGFkZGluZz1mdW5jdGlvbihhKXt0aGlzLiRwYWRkaW5nPWEsdGhpcy4kdGV4dExheWVyLnNldFBhZGRpbmcoYSksdGhpcy4kY3Vyc29yTGF5ZXIuc2V0UGFkZGluZyhhKSx0aGlzLiRtYXJrZXJGcm9udC5zZXRQYWRkaW5nKGEpLHRoaXMuJG1hcmtlckJhY2suc2V0UGFkZGluZyhhKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0ZVTEwpLHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9LHRoaXMuZ2V0SFNjcm9sbEJhckFsd2F5c1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaG9yaXpTY3JvbGxBbHdheXNWaXNpYmxlfSx0aGlzLnNldEhTY3JvbGxCYXJBbHdheXNWaXNpYmxlPWZ1bmN0aW9uKGEpe3RoaXMuJGhvcml6U2Nyb2xsQWx3YXlzVmlzaWJsZSE9YSYmKHRoaXMuJGhvcml6U2Nyb2xsQWx3YXlzVmlzaWJsZT1hLCghdGhpcy4kaG9yaXpTY3JvbGxBbHdheXNWaXNpYmxlfHwhdGhpcy4kaG9yaXpTY3JvbGwpJiZ0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX1NDUk9MTCkpfSx0aGlzLiR1cGRhdGVTY3JvbGxCYXI9ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEJhci5zZXRJbm5lckhlaWdodCh0aGlzLmxheWVyQ29uZmlnLm1heEhlaWdodCksdGhpcy5zY3JvbGxCYXIuc2V0U2Nyb2xsVG9wKHRoaXMuc2Nyb2xsVG9wKX0sdGhpcy4kcmVuZGVyQ2hhbmdlcz1mdW5jdGlvbihhKXtpZighYXx8IXRoaXMuc2Vzc2lvbnx8IXRoaXMuY29udGFpbmVyLm9mZnNldFdpZHRoKXJldHVybjsoYSZ0aGlzLkNIQU5HRV9GVUxMfHxhJnRoaXMuQ0hBTkdFX1NJWkV8fGEmdGhpcy5DSEFOR0VfVEVYVHx8YSZ0aGlzLkNIQU5HRV9MSU5FU3x8YSZ0aGlzLkNIQU5HRV9TQ1JPTEwpJiZ0aGlzLiRjb21wdXRlTGF5ZXJDb25maWcoKTtpZihhJnRoaXMuQ0hBTkdFX0hfU0NST0xMKXt0aGlzLnNjcm9sbGVyLnNjcm9sbExlZnQ9dGhpcy5zY3JvbGxMZWZ0O3ZhciBiPXRoaXMuc2Nyb2xsZXIuc2Nyb2xsTGVmdDt0aGlzLnNjcm9sbExlZnQ9Yix0aGlzLnNlc3Npb24uc2V0U2Nyb2xsTGVmdChiKSx0aGlzLnNjcm9sbGVyLmNsYXNzTmFtZT10aGlzLnNjcm9sbExlZnQ9PTA/ImFjZV9zY3JvbGxlciI6ImFjZV9zY3JvbGxlciBob3JzY3JvbGwifWlmKGEmdGhpcy5DSEFOR0VfRlVMTCl7dGhpcy4kdGV4dExheWVyLmNoZWNrRm9yU2l6ZUNoYW5nZXMoKSx0aGlzLiR1cGRhdGVTY3JvbGxCYXIoKSx0aGlzLiR0ZXh0TGF5ZXIudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuc2hvd0d1dHRlciYmKHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmUmJnRoaXMuJHVwZGF0ZUd1dHRlckxpbmVIaWdobGlnaHQoITApLHRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSksdGhpcy4kbWFya2VyQmFjay51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy4kbWFya2VyRnJvbnQudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuJGN1cnNvckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSx0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpO3JldHVybn1pZihhJnRoaXMuQ0hBTkdFX1NDUk9MTCl7dGhpcy4kdXBkYXRlU2Nyb2xsQmFyKCksYSZ0aGlzLkNIQU5HRV9URVhUfHxhJnRoaXMuQ0hBTkdFX0xJTkVTP3RoaXMuJHRleHRMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyk6dGhpcy4kdGV4dExheWVyLnNjcm9sbExpbmVzKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuc2hvd0d1dHRlciYmKHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmUmJnRoaXMuJHVwZGF0ZUd1dHRlckxpbmVIaWdobGlnaHQoITApLHRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSksdGhpcy4kbWFya2VyQmFjay51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy4kbWFya2VyRnJvbnQudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuJGN1cnNvckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSx0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpO3JldHVybn1hJnRoaXMuQ0hBTkdFX1RFWFQ/KHRoaXMuJHRleHRMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy5zaG93R3V0dGVyJiZ0aGlzLiRndXR0ZXJMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZykpOmEmdGhpcy5DSEFOR0VfTElORVM/dGhpcy4kdXBkYXRlTGluZXMoKSYmKHRoaXMuJHVwZGF0ZVNjcm9sbEJhcigpLHRoaXMuc2hvd0d1dHRlciYmdGhpcy4kZ3V0dGVyTGF5ZXIudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpKTphJnRoaXMuQ0hBTkdFX0dVVFRFUiYmdGhpcy5zaG93R3V0dGVyJiZ0aGlzLiRndXR0ZXJMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyksYSZ0aGlzLkNIQU5HRV9DVVJTT1ImJih0aGlzLiRjdXJzb3JMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy4kbW92ZVRleHRBcmVhVG9DdXJzb3IoKSx0aGlzLiRoaWdobGlnaHRHdXR0ZXJMaW5lJiZ0aGlzLiR1cGRhdGVHdXR0ZXJMaW5lSGlnaGxpZ2h0KCExKSksYSYodGhpcy5DSEFOR0VfTUFSS0VSfHRoaXMuQ0hBTkdFX01BUktFUl9GUk9OVCkmJnRoaXMuJG1hcmtlckZyb250LnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSxhJih0aGlzLkNIQU5HRV9NQVJLRVJ8dGhpcy5DSEFOR0VfTUFSS0VSX0JBQ0spJiZ0aGlzLiRtYXJrZXJCYWNrLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSxhJnRoaXMuQ0hBTkdFX1NJWkUmJnRoaXMuJHVwZGF0ZVNjcm9sbEJhcigpfSx0aGlzLiRjb21wdXRlTGF5ZXJDb25maWc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlc3Npb24sYj10aGlzLnNjcm9sbFRvcCV0aGlzLmxpbmVIZWlnaHQsYz10aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0K3RoaXMubGluZUhlaWdodCxkPXRoaXMuJGdldExvbmdlc3RMaW5lKCksZT10aGlzLiRob3JpelNjcm9sbEFsd2F5c1Zpc2libGV8fHRoaXMuJHNpemUuc2Nyb2xsZXJXaWR0aC1kPDAsZj10aGlzLiRob3JpelNjcm9sbCE9PWU7dGhpcy4kaG9yaXpTY3JvbGw9ZSxmJiYodGhpcy5zY3JvbGxlci5zdHlsZS5vdmVyZmxvd1g9ZT8ic2Nyb2xsIjoiaGlkZGVuIixlfHx0aGlzLnNlc3Npb24uc2V0U2Nyb2xsTGVmdCgwKSk7dmFyIGc9dGhpcy5zZXNzaW9uLmdldFNjcmVlbkxlbmd0aCgpKnRoaXMubGluZUhlaWdodDt0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKE1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5zY3JvbGxUb3AsZy10aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KSkpO3ZhciBoPU1hdGguY2VpbChjL3RoaXMubGluZUhlaWdodCktMSxpPU1hdGgubWF4KDAsTWF0aC5yb3VuZCgodGhpcy5zY3JvbGxUb3AtYikvdGhpcy5saW5lSGVpZ2h0KSksaj1pK2gsayxsLG09e2xpbmVIZWlnaHQ6dGhpcy5saW5lSGVpZ2h0fTtpPWEuc2NyZWVuVG9Eb2N1bWVudFJvdyhpLDApO3ZhciBuPWEuZ2V0Rm9sZExpbmUoaSk7biYmKGk9bi5zdGFydC5yb3cpLGs9YS5kb2N1bWVudFRvU2NyZWVuUm93KGksMCksbD1hLmdldFJvd0hlaWdodChtLGkpLGo9TWF0aC5taW4oYS5zY3JlZW5Ub0RvY3VtZW50Um93KGosMCksYS5nZXRMZW5ndGgoKS0xKSxjPXRoaXMuJHNpemUuc2Nyb2xsZXJIZWlnaHQrYS5nZXRSb3dIZWlnaHQobSxqKStsLGI9dGhpcy5zY3JvbGxUb3Atayp0aGlzLmxpbmVIZWlnaHQsdGhpcy5sYXllckNvbmZpZz17d2lkdGg6ZCxwYWRkaW5nOnRoaXMuJHBhZGRpbmcsZmlyc3RSb3c6aSxmaXJzdFJvd1NjcmVlbjprLGxhc3RSb3c6aixsaW5lSGVpZ2h0OnRoaXMubGluZUhlaWdodCxjaGFyYWN0ZXJXaWR0aDp0aGlzLmNoYXJhY3RlcldpZHRoLG1pbkhlaWdodDpjLG1heEhlaWdodDpnLG9mZnNldDpiLGhlaWdodDp0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0fSx0aGlzLiRndXR0ZXJMYXllci5lbGVtZW50LnN0eWxlLm1hcmdpblRvcD0tYisicHgiLHRoaXMuY29udGVudC5zdHlsZS5tYXJnaW5Ub3A9LWIrInB4Iix0aGlzLmNvbnRlbnQuc3R5bGUud2lkdGg9ZCsyKnRoaXMuJHBhZGRpbmcrInB4Iix0aGlzLmNvbnRlbnQuc3R5bGUuaGVpZ2h0PWMrInB4IixmJiZ0aGlzLm9uUmVzaXplKCEwKX0sdGhpcy4kdXBkYXRlTGluZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRjaGFuZ2VkTGluZXMuZmlyc3RSb3csYj10aGlzLiRjaGFuZ2VkTGluZXMubGFzdFJvdzt0aGlzLiRjaGFuZ2VkTGluZXM9bnVsbDt2YXIgYz10aGlzLmxheWVyQ29uZmlnO2lmKGE+Yy5sYXN0Um93KzEpcmV0dXJuO2lmKGI8Yy5maXJzdFJvdylyZXR1cm47aWYoYj09PUluZmluaXR5KXt0aGlzLnNob3dHdXR0ZXImJnRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZShjKSx0aGlzLiR0ZXh0TGF5ZXIudXBkYXRlKGMpO3JldHVybn1yZXR1cm4gdGhpcy4kdGV4dExheWVyLnVwZGF0ZUxpbmVzKGMsYSxiKSwhMH0sdGhpcy4kZ2V0TG9uZ2VzdExpbmU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlc3Npb24uZ2V0U2NyZWVuV2lkdGgoKTtyZXR1cm4gdGhpcy4kdGV4dExheWVyLnNob3dJbnZpc2libGVzJiYoYSs9MSksTWF0aC5tYXgodGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoLTIqdGhpcy4kcGFkZGluZyxNYXRoLnJvdW5kKGEqdGhpcy5jaGFyYWN0ZXJXaWR0aCkpfSx0aGlzLnVwZGF0ZUZyb250TWFya2Vycz1mdW5jdGlvbigpe3RoaXMuJG1hcmtlckZyb250LnNldE1hcmtlcnModGhpcy5zZXNzaW9uLmdldE1hcmtlcnMoITApKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX01BUktFUl9GUk9OVCl9LHRoaXMudXBkYXRlQmFja01hcmtlcnM9ZnVuY3Rpb24oKXt0aGlzLiRtYXJrZXJCYWNrLnNldE1hcmtlcnModGhpcy5zZXNzaW9uLmdldE1hcmtlcnMoKSksdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9NQVJLRVJfQkFDSyl9LHRoaXMuYWRkR3V0dGVyRGVjb3JhdGlvbj1mdW5jdGlvbihhLGIpe3RoaXMuJGd1dHRlckxheWVyLmFkZEd1dHRlckRlY29yYXRpb24oYSxiKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0dVVFRFUil9LHRoaXMucmVtb3ZlR3V0dGVyRGVjb3JhdGlvbj1mdW5jdGlvbihhLGIpe3RoaXMuJGd1dHRlckxheWVyLnJlbW92ZUd1dHRlckRlY29yYXRpb24oYSxiKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0dVVFRFUil9LHRoaXMudXBkYXRlQnJlYWtwb2ludHM9ZnVuY3Rpb24oYSl7dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9HVVRURVIpfSx0aGlzLnNldEFubm90YXRpb25zPWZ1bmN0aW9uKGEpe3RoaXMuJGd1dHRlckxheWVyLnNldEFubm90YXRpb25zKGEpLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfR1VUVEVSKX0sdGhpcy51cGRhdGVDdXJzb3I9ZnVuY3Rpb24oKXt0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0NVUlNPUil9LHRoaXMuaGlkZUN1cnNvcj1mdW5jdGlvbigpe3RoaXMuJGN1cnNvckxheWVyLmhpZGVDdXJzb3IoKX0sdGhpcy5zaG93Q3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy4kY3Vyc29yTGF5ZXIuc2hvd0N1cnNvcigpfSx0aGlzLnNjcm9sbFNlbGVjdGlvbkludG9WaWV3PWZ1bmN0aW9uKGEsYixjKXt0aGlzLnNjcm9sbEN1cnNvckludG9WaWV3KGEsYyksdGhpcy5zY3JvbGxDdXJzb3JJbnRvVmlldyhiLGMpfSx0aGlzLnNjcm9sbEN1cnNvckludG9WaWV3PWZ1bmN0aW9uKGEsYil7aWYodGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodD09PTApcmV0dXJuO3ZhciBjPXRoaXMuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24oYSksZD1jLmxlZnQsZT1jLnRvcDt0aGlzLnNjcm9sbFRvcD5lPyhiJiYoZS09Yip0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KSx0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKGUpKTp0aGlzLnNjcm9sbFRvcCt0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0PGUrdGhpcy5saW5lSGVpZ2h0JiYoYiYmKGUrPWIqdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodCksdGhpcy5zZXNzaW9uLnNldFNjcm9sbFRvcChlK3RoaXMubGluZUhlaWdodC10aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KSk7dmFyIGY9dGhpcy5zY3JvbGxMZWZ0O2Y+ZD8oZDx0aGlzLiRwYWRkaW5nKzIqdGhpcy5sYXllckNvbmZpZy5jaGFyYWN0ZXJXaWR0aCYmKGQ9MCksdGhpcy5zZXNzaW9uLnNldFNjcm9sbExlZnQoZCkpOmYrdGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoPGQrdGhpcy5jaGFyYWN0ZXJXaWR0aCYmdGhpcy5zZXNzaW9uLnNldFNjcm9sbExlZnQoTWF0aC5yb3VuZChkK3RoaXMuY2hhcmFjdGVyV2lkdGgtdGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoKSl9LHRoaXMuZ2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxUb3AoKX0sdGhpcy5nZXRTY3JvbGxMZWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxMZWZ0KCl9LHRoaXMuZ2V0U2Nyb2xsVG9wUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsVG9wL3RoaXMubGluZUhlaWdodH0sdGhpcy5nZXRTY3JvbGxCb3R0b21Sb3c9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLmZsb29yKCh0aGlzLnNjcm9sbFRvcCt0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KS90aGlzLmxpbmVIZWlnaHQpLTEpfSx0aGlzLnNjcm9sbFRvUm93PWZ1bmN0aW9uKGEpe3RoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoYSp0aGlzLmxpbmVIZWlnaHQpfSx0aGlzLmFsaWduQ3Vyc29yPWZ1bmN0aW9uKGEsYil7dHlwZW9mIGE9PSJudW1iZXIiJiYoYT17cm93OmEsY29sdW1uOjB9KTt2YXIgYz10aGlzLiRjdXJzb3JMYXllci5nZXRQaXhlbFBvc2l0aW9uKGEpLGQ9Yy50b3AtdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodCooYnx8MCk7dGhpcy5zZXNzaW9uLnNldFNjcm9sbFRvcChkKX0sdGhpcy5TVEVQUz04LHRoaXMuJGNhbGNTdGVwcz1mdW5jdGlvbihhLGIpe3ZhciBjPTAsZD10aGlzLlNURVBTLGU9W10sZj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGMqKE1hdGgucG93KGEtMSwzKSsxKStifTtmb3IoYz0wO2M8ZDsrK2MpZS5wdXNoKGYoYy90aGlzLlNURVBTLGEsYi1hKSk7cmV0dXJuIGV9LHRoaXMuc2Nyb2xsVG9MaW5lPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24oe3JvdzphLGNvbHVtbjowfSksZj1lLnRvcDtiJiYoZi09dGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodC8yKTt2YXIgZz10aGlzLnNjcm9sbFRvcDt0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKGYpLGMhPT0hMSYmdGhpcy5hbmltYXRlU2Nyb2xsaW5nKGcsZCl9LHRoaXMuYW5pbWF0ZVNjcm9sbGluZz1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuc2Nyb2xsVG9wO2lmKHRoaXMuJGFuaW1hdGVkU2Nyb2xsJiZNYXRoLmFicyhhLWMpPDFlNSl7dmFyIGQ9dGhpcyxlPWQuJGNhbGNTdGVwcyhhLGMpO3RoaXMuJGluU2Nyb2xsQW5pbWF0aW9uPSEwLGNsZWFySW50ZXJ2YWwodGhpcy4kdGltZXIpLGQuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoZS5zaGlmdCgpKSx0aGlzLiR0aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2UubGVuZ3RoPyhkLnNlc3Npb24uc2V0U2Nyb2xsVG9wKGUuc2hpZnQoKSksZC5zZXNzaW9uLiRzY3JvbGxUb3A9Yyk6YyE9bnVsbD8oZC5zZXNzaW9uLiRzY3JvbGxUb3A9LTEsZC5zZXNzaW9uLnNldFNjcm9sbFRvcChjKSxjPW51bGwpOihkLiR0aW1lcj1jbGVhckludGVydmFsKGQuJHRpbWVyKSxkLiRpblNjcm9sbEFuaW1hdGlvbj0hMSxiJiZiKCkpfSwxMCl9fSx0aGlzLnNjcm9sbFRvWT1mdW5jdGlvbihhKXt0aGlzLnNjcm9sbFRvcCE9PWEmJih0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX1NDUk9MTCksdGhpcy5zY3JvbGxUb3A9YSl9LHRoaXMuc2Nyb2xsVG9YPWZ1bmN0aW9uKGEpe2E8MCYmKGE9MCksdGhpcy5zY3JvbGxMZWZ0IT09YSYmKHRoaXMuc2Nyb2xsTGVmdD1hKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0hfU0NST0xMKX0sdGhpcy5zY3JvbGxCeT1mdW5jdGlvbihhLGIpe2ImJnRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AodGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpK2IpLGEmJnRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KHRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxMZWZ0KCkrYSl9LHRoaXMuaXNTY3JvbGxhYmxlQnk9ZnVuY3Rpb24oYSxiKXtpZihiPDAmJnRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxUb3AoKT4wKXJldHVybiEwO2lmKGI+MCYmdGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpK3RoaXMuJHNpemUuc2Nyb2xsZXJIZWlnaHQ8dGhpcy5sYXllckNvbmZpZy5tYXhIZWlnaHQpcmV0dXJuITB9LHRoaXMucGl4ZWxUb1NjcmVlbkNvb3JkaW5hdGVzPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5zY3JvbGxlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPShhK3RoaXMuc2Nyb2xsTGVmdC1jLmxlZnQtdGhpcy4kcGFkZGluZykvdGhpcy5jaGFyYWN0ZXJXaWR0aCxlPU1hdGguZmxvb3IoKGIrdGhpcy5zY3JvbGxUb3AtYy50b3ApL3RoaXMubGluZUhlaWdodCksZj1NYXRoLnJvdW5kKGQpO3JldHVybntyb3c6ZSxjb2x1bW46ZixzaWRlOmQtZj4wPzE6LTF9fSx0aGlzLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5zY3JvbGxlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPU1hdGgucm91bmQoKGErdGhpcy5zY3JvbGxMZWZ0LWMubGVmdC10aGlzLiRwYWRkaW5nKS90aGlzLmNoYXJhY3RlcldpZHRoKSxlPU1hdGguZmxvb3IoKGIrdGhpcy5zY3JvbGxUb3AtYy50b3ApL3RoaXMubGluZUhlaWdodCk7cmV0dXJuIHRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oZSxNYXRoLm1heChkLDApKX0sdGhpcy50ZXh0VG9TY3JlZW5Db29yZGluYXRlcz1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuc2Nyb2xsZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKGEsYiksZT10aGlzLiRwYWRkaW5nK01hdGgucm91bmQoZC5jb2x1bW4qdGhpcy5jaGFyYWN0ZXJXaWR0aCksZj1kLnJvdyp0aGlzLmxpbmVIZWlnaHQ7cmV0dXJue3BhZ2VYOmMubGVmdCtlLXRoaXMuc2Nyb2xsTGVmdCxwYWdlWTpjLnRvcCtmLXRoaXMuc2Nyb2xsVG9wfX0sdGhpcy52aXN1YWxpemVGb2N1cz1mdW5jdGlvbigpe2UuYWRkQ3NzQ2xhc3ModGhpcy5jb250YWluZXIsImFjZV9mb2N1cyIpfSx0aGlzLnZpc3VhbGl6ZUJsdXI9ZnVuY3Rpb24oKXtlLnJlbW92ZUNzc0NsYXNzKHRoaXMuY29udGFpbmVyLCJhY2VfZm9jdXMiKX0sdGhpcy5zaG93Q29tcG9zaXRpb249ZnVuY3Rpb24oYSl7dGhpcy4kY29tcG9zaXRpb258fCh0aGlzLiRjb21wb3NpdGlvbj17a2VlcFRleHRBcmVhQXRDdXJzb3I6dGhpcy4ka2VlcFRleHRBcmVhQXRDdXJzb3IsY3NzVGV4dDp0aGlzLnRleHRhcmVhLnN0eWxlLmNzc1RleHR9KSx0aGlzLiRrZWVwVGV4dEFyZWFBdEN1cnNvcj0hMCxlLmFkZENzc0NsYXNzKHRoaXMudGV4dGFyZWEsImFjZV9jb21wb3NpdGlvbiIpLHRoaXMudGV4dGFyZWEuc3R5bGUuY3NzVGV4dD0iIix0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpfSx0aGlzLnNldENvbXBvc2l0aW9uVGV4dD1mdW5jdGlvbihhKXt0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpfSx0aGlzLmhpZGVDb21wb3NpdGlvbj1mdW5jdGlvbigpe2lmKCF0aGlzLiRjb21wb3NpdGlvbilyZXR1cm47ZS5yZW1vdmVDc3NDbGFzcyh0aGlzLnRleHRhcmVhLCJhY2VfY29tcG9zaXRpb24iKSx0aGlzLiRrZWVwVGV4dEFyZWFBdEN1cnNvcj10aGlzLiRjb21wb3NpdGlvbi5rZWVwVGV4dEFyZWFBdEN1cnNvcix0aGlzLnRleHRhcmVhLnN0eWxlLmNzc1RleHQ9dGhpcy4kY29tcG9zaXRpb24uY3NzVGV4dCx0aGlzLiRjb21wb3NpdGlvbj1udWxsfSx0aGlzLl9sb2FkVGhlbWU9ZnVuY3Rpb24oYSxiKXtpZighaC5nZXQoInBhY2thZ2VkIikpcmV0dXJuIGIoKTt2YXIgYz1hLnNwbGl0KCIvIikucG9wKCksZD1oLmdldCgidGhlbWVQYXRoIikrIi90aGVtZS0iK2MraC5nZXQoInN1ZmZpeCIpO2kubG9hZFNjcmlwdChkLGIpfSx0aGlzLnNldFRoZW1lPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGgoYSl7ZS5pbXBvcnRDc3NTdHJpbmcoYS5jc3NUZXh0LGEuY3NzQ2xhc3MsYy5jb250YWluZXIub3duZXJEb2N1bWVudCksYy4kdGhlbWUmJmUucmVtb3ZlQ3NzQ2xhc3MoYy5jb250YWluZXIsYy4kdGhlbWUpLGMuJHRoZW1lPWE/YS5jc3NDbGFzczpudWxsLGMuJHRoZW1lJiZlLmFkZENzc0NsYXNzKGMuY29udGFpbmVyLGMuJHRoZW1lKSxhJiZhLmlzRGFyaz9lLmFkZENzc0NsYXNzKGMuY29udGFpbmVyLCJhY2VfZGFyayIpOmUucmVtb3ZlQ3NzQ2xhc3MoYy5jb250YWluZXIsImFjZV9kYXJrIiksYy4kc2l6ZSYmKGMuJHNpemUud2lkdGg9MCxjLm9uUmVzaXplKCkpfXZhciBjPXRoaXM7dGhpcy4kdGhlbWVWYWx1ZT1iO2lmKCFifHx0eXBlb2YgYj09InN0cmluZyIpe3ZhciBkPWJ8fCJhY2UvdGhlbWUvdGV4dG1hdGUiLGY7dHJ5e2Y9YShkKX1jYXRjaChnKXt9aWYoZilyZXR1cm4gaChmKTtjLl9sb2FkVGhlbWUoZCxmdW5jdGlvbigpe2EoW2RdLGZ1bmN0aW9uKGEpe2lmKGMuJHRoZW1lVmFsdWUhPT1iKXJldHVybjtoKGEpfSl9KX1lbHNlIGgoYil9LHRoaXMuZ2V0VGhlbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGhlbWVWYWx1ZX0sdGhpcy5zZXRTdHlsZT1mdW5jdGlvbihiKXtlLmFkZENzc0NsYXNzKHRoaXMuY29udGFpbmVyLGIpfSx0aGlzLnVuc2V0U3R5bGU9ZnVuY3Rpb24oYil7ZS5yZW1vdmVDc3NDbGFzcyh0aGlzLmNvbnRhaW5lcixiKX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy4kdGV4dExheWVyLmRlc3Ryb3koKSx0aGlzLiRjdXJzb3JMYXllci5kZXN0cm95KCl9fSkuY2FsbChyLnByb3RvdHlwZSksYi5WaXJ0dWFsUmVuZGVyZXI9cn0pLGRlZmluZSgiYWNlL2xheWVyL2d1dHRlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL2RvbSIpLGU9YSgiLi4vbGliL29vcCIpLGY9YSgiLi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsZz1mdW5jdGlvbihhKXt0aGlzLmVsZW1lbnQ9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJhY2VfbGF5ZXIgYWNlX2d1dHRlci1sYXllciIsYS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuc2V0U2hvd0ZvbGRXaWRnZXRzKHRoaXMuJHNob3dGb2xkV2lkZ2V0cyksdGhpcy5ndXR0ZXJXaWR0aD0wLHRoaXMuJGJyZWFrcG9pbnRzPVtdLHRoaXMuJGFubm90YXRpb25zPVtdLHRoaXMuJGRlY29yYXRpb25zPVtdfTsoZnVuY3Rpb24oKXtlLmltcGxlbWVudCh0aGlzLGYpLHRoaXMuc2V0U2Vzc2lvbj1mdW5jdGlvbihhKXt0aGlzLnNlc3Npb249YX0sdGhpcy5hZGRHdXR0ZXJEZWNvcmF0aW9uPWZ1bmN0aW9uKGEsYil7dGhpcy4kZGVjb3JhdGlvbnNbYV18fCh0aGlzLiRkZWNvcmF0aW9uc1thXT0iIiksdGhpcy4kZGVjb3JhdGlvbnNbYV0rPSIgIitifSx0aGlzLnJlbW92ZUd1dHRlckRlY29yYXRpb249ZnVuY3Rpb24oYSxiKXt0aGlzLiRkZWNvcmF0aW9uc1thXT0odGhpcy4kZGVjb3JhdGlvbnNbYV18fCIiKS5yZXBsYWNlKCIgIitiLCIiKX0sdGhpcy5zZXRBbm5vdGF0aW9ucz1mdW5jdGlvbihhKXt0aGlzLiRhbm5vdGF0aW9ucz1bXTtmb3IodmFyIGIgaW4gYSlpZihhLmhhc093blByb3BlcnR5KGIpKXt2YXIgYz1hW2JdO2lmKCFjKWNvbnRpbnVlO3ZhciBkPXRoaXMuJGFubm90YXRpb25zW2JdPXt0ZXh0OltdfTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Y1tlXSxnPWYudGV4dC5yZXBsYWNlKC8iL2csIiZxdW90OyIpLnJlcGxhY2UoLycvZywiJiM4MjE3OyIpLnJlcGxhY2UoLzwvLCImbHQ7Iik7ZC50ZXh0LmluZGV4T2YoZyk9PT0tMSYmZC50ZXh0LnB1c2goZyk7dmFyIGg9Zi50eXBlO2g9PSJlcnJvciI/ZC5jbGFzc05hbWU9ImFjZV9lcnJvciI6aD09Indhcm5pbmciJiZkLmNsYXNzTmFtZSE9ImFjZV9lcnJvciI/ZC5jbGFzc05hbWU9ImFjZV93YXJuaW5nIjpoPT0iaW5mbyImJiFkLmNsYXNzTmFtZSYmKGQuY2xhc3NOYW1lPSJhY2VfaW5mbyIpfX19LHRoaXMudXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMuJGNvbmZpZz1hO3ZhciBiPXtjbGFzc05hbWU6IiIsdGV4dDpbXX0sYz1bXSxlPWEuZmlyc3RSb3csZj1hLmxhc3RSb3csZz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGUpLGg9Zz9nLnN0YXJ0LnJvdzpJbmZpbml0eSxpPXRoaXMuJHNob3dGb2xkV2lkZ2V0cyYmdGhpcy5zZXNzaW9uLmZvbGRXaWRnZXRzLGo9dGhpcy5zZXNzaW9uLiRicmVha3BvaW50cztmb3IoOzspe2U+aCYmKGU9Zy5lbmQucm93KzEsZz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGUsZyksaD1nP2cuc3RhcnQucm93OkluZmluaXR5KTtpZihlPmYpYnJlYWs7dmFyIGs9dGhpcy4kYW5ub3RhdGlvbnNbZV18fGI7Yy5wdXNoKCI8ZGl2IGNsYXNzPSdhY2VfZ3V0dGVyLWNlbGwiLHRoaXMuJGRlY29yYXRpb25zW2VdfHwiIixqW2VdPyIgYWNlX2JyZWFrcG9pbnQgIjoiICIsay5jbGFzc05hbWUsIicgdGl0bGU9JyIsay50ZXh0LmpvaW4oIlxuIiksIicgc3R5bGU9J2hlaWdodDoiLHRoaXMuc2Vzc2lvbi5nZXRSb3dMZW5ndGgoZSkqYS5saW5lSGVpZ2h0LCJweDsnPiIsZSsxKTtpZihpKXt2YXIgbD1pW2VdO2w9PW51bGwmJihsPWlbZV09dGhpcy5zZXNzaW9uLmdldEZvbGRXaWRnZXQoZSkpLGwmJmMucHVzaCgiPHNwYW4gY2xhc3M9J2FjZV9mb2xkLXdpZGdldCAiLGwsbD09InN0YXJ0IiYmZT09aCYmZTxnLmVuZC5yb3c/IiBjbG9zZWQiOiIgb3BlbiIsIic+PC9zcGFuPiIpfWMucHVzaCgiPC9kaXY+IiksZSsrfXRoaXMuc2Vzc2lvbi4kdXNlV3JhcE1vZGUmJmMucHVzaCgiPGRpdiBjbGFzcz0nYWNlX2d1dHRlci1jZWxsJyBzdHlsZT0ncG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5OjAnPiIsdGhpcy5zZXNzaW9uLmdldExlbmd0aCgpLTEsIjwvZGl2PiIpLHRoaXMuZWxlbWVudD1kLnNldElubmVySHRtbCh0aGlzLmVsZW1lbnQsYy5qb2luKCIiKSksdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD1hLm1pbkhlaWdodCsicHgiO3ZhciBtPXRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aDttIT09dGhpcy5ndXR0ZXJXaWR0aCYmKHRoaXMuZ3V0dGVyV2lkdGg9bSx0aGlzLl9lbWl0KCJjaGFuZ2VHdXR0ZXJXaWR0aCIsbSkpfSx0aGlzLiRzaG93Rm9sZFdpZGdldHM9ITAsdGhpcy5zZXRTaG93Rm9sZFdpZGdldHM9ZnVuY3Rpb24oYSl7YT9kLmFkZENzc0NsYXNzKHRoaXMuZWxlbWVudCwiYWNlX2ZvbGRpbmctZW5hYmxlZCIpOmQucmVtb3ZlQ3NzQ2xhc3ModGhpcy5lbGVtZW50LCJhY2VfZm9sZGluZy1lbmFibGVkIiksdGhpcy4kc2hvd0ZvbGRXaWRnZXRzPWF9LHRoaXMuZ2V0U2hvd0ZvbGRXaWRnZXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNob3dGb2xkV2lkZ2V0c319KS5jYWxsKGcucHJvdG90eXBlKSxiLkd1dHRlcj1nfSksZGVmaW5lKCJhY2UvbGF5ZXIvbWFya2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWEoIi4uL2xpYi9kb20iKSxmPWZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZWxlbWVudC5jbGFzc05hbWU9ImFjZV9sYXllciBhY2VfbWFya2VyLWxheWVyIixhLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCl9OyhmdW5jdGlvbigpe3RoaXMuJHBhZGRpbmc9MCx0aGlzLnNldFBhZGRpbmc9ZnVuY3Rpb24oYSl7dGhpcy4kcGFkZGluZz1hfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oYSl7dGhpcy5zZXNzaW9uPWF9LHRoaXMuc2V0TWFya2Vycz1mdW5jdGlvbihhKXt0aGlzLm1hcmtlcnM9YX0sdGhpcy51cGRhdGU9ZnVuY3Rpb24oYSl7dmFyIGE9YXx8dGhpcy5jb25maWc7aWYoIWEpcmV0dXJuO3RoaXMuY29uZmlnPWE7dmFyIGI9W107Zm9yKHZhciBjIGluIHRoaXMubWFya2Vycyl7dmFyIGQ9dGhpcy5tYXJrZXJzW2NdLGY9ZC5yYW5nZS5jbGlwUm93cyhhLmZpcnN0Um93LGEubGFzdFJvdyk7aWYoZi5pc0VtcHR5KCkpY29udGludWU7Zj1mLnRvU2NyZWVuUmFuZ2UodGhpcy5zZXNzaW9uKTtpZihkLnJlbmRlcmVyKXt2YXIgZz10aGlzLiRnZXRUb3AoZi5zdGFydC5yb3csYSksaD1NYXRoLnJvdW5kKHRoaXMuJHBhZGRpbmcrZi5zdGFydC5jb2x1bW4qYS5jaGFyYWN0ZXJXaWR0aCk7ZC5yZW5kZXJlcihiLGYsaCxnLGEpfWVsc2UgZi5pc011bHRpTGluZSgpP2QudHlwZT09InRleHQiP3RoaXMuZHJhd1RleHRNYXJrZXIoYixmLGQuY2xhenosYSk6dGhpcy5kcmF3TXVsdGlMaW5lTWFya2VyKGIsZixkLmNsYXp6LGEsZC50eXBlKTp0aGlzLmRyYXdTaW5nbGVMaW5lTWFya2VyKGIsZixkLmNsYXp6KyIgc3RhcnQiLGEsbnVsbCxkLnR5cGUpfXRoaXMuZWxlbWVudD1lLnNldElubmVySHRtbCh0aGlzLmVsZW1lbnQsYi5qb2luKCIiKSl9LHRoaXMuJGdldFRvcD1mdW5jdGlvbihhLGIpe3JldHVybihhLWIuZmlyc3RSb3dTY3JlZW4pKmIubGluZUhlaWdodH0sdGhpcy5kcmF3VGV4dE1hcmtlcj1mdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1iLnN0YXJ0LnJvdyxnPW5ldyBkKGYsYi5zdGFydC5jb2x1bW4sZix0aGlzLnNlc3Npb24uZ2V0U2NyZWVuTGFzdFJvd0NvbHVtbihmKSk7dGhpcy5kcmF3U2luZ2xlTGluZU1hcmtlcihhLGcsYysiIHN0YXJ0IixlLDEsInRleHQiKSxmPWIuZW5kLnJvdyxnPW5ldyBkKGYsMCxmLGIuZW5kLmNvbHVtbiksdGhpcy5kcmF3U2luZ2xlTGluZU1hcmtlcihhLGcsYyxlLDAsInRleHQiKTtmb3IoZj1iLnN0YXJ0LnJvdysxO2Y8Yi5lbmQucm93O2YrKylnLnN0YXJ0LnJvdz1mLGcuZW5kLnJvdz1mLGcuZW5kLmNvbHVtbj10aGlzLnNlc3Npb24uZ2V0U2NyZWVuTGFzdFJvd0NvbHVtbihmKSx0aGlzLmRyYXdTaW5nbGVMaW5lTWFya2VyKGEsZyxjLGUsMSwidGV4dCIpfSx0aGlzLmRyYXdNdWx0aUxpbmVNYXJrZXI9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1lPT09ImJhY2tncm91bmQiPzA6dGhpcy4kcGFkZGluZyxnPWQud2lkdGgrMip0aGlzLiRwYWRkaW5nLWYsaD1kLmxpbmVIZWlnaHQsaT1NYXRoLnJvdW5kKGctYi5zdGFydC5jb2x1bW4qZC5jaGFyYWN0ZXJXaWR0aCksaj10aGlzLiRnZXRUb3AoYi5zdGFydC5yb3csZCksaz1NYXRoLnJvdW5kKGYrYi5zdGFydC5jb2x1bW4qZC5jaGFyYWN0ZXJXaWR0aCk7YS5wdXNoKCI8ZGl2IGNsYXNzPSciLGMsIiBzdGFydCcgc3R5bGU9JyIsImhlaWdodDoiLGgsInB4OyIsIndpZHRoOiIsaSwicHg7IiwidG9wOiIsaiwicHg7IiwibGVmdDoiLGssInB4Oyc+PC9kaXY+Iiksaj10aGlzLiRnZXRUb3AoYi5lbmQucm93LGQpLGk9TWF0aC5yb3VuZChiLmVuZC5jb2x1bW4qZC5jaGFyYWN0ZXJXaWR0aCksYS5wdXNoKCI8ZGl2IGNsYXNzPSciLGMsIicgc3R5bGU9JyIsImhlaWdodDoiLGgsInB4OyIsIndpZHRoOiIsaSwicHg7IiwidG9wOiIsaiwicHg7IiwibGVmdDoiLGYsInB4Oyc+PC9kaXY+IiksaD0oYi5lbmQucm93LWIuc3RhcnQucm93LTEpKmQubGluZUhlaWdodDtpZihoPDApcmV0dXJuO2o9dGhpcy4kZ2V0VG9wKGIuc3RhcnQucm93KzEsZCksYS5wdXNoKCI8ZGl2IGNsYXNzPSciLGMsIicgc3R5bGU9JyIsImhlaWdodDoiLGgsInB4OyIsIndpZHRoOiIsZywicHg7IiwidG9wOiIsaiwicHg7IiwibGVmdDoiLGYsInB4Oyc+PC9kaXY+Iil9LHRoaXMuZHJhd1NpbmdsZUxpbmVNYXJrZXI9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWY9PT0iYmFja2dyb3VuZCI/MDp0aGlzLiRwYWRkaW5nLGg9ZC5saW5lSGVpZ2h0O2lmKGY9PT0iYmFja2dyb3VuZCIpdmFyIGk9ZC53aWR0aDtlbHNlIGk9TWF0aC5yb3VuZCgoYi5lbmQuY29sdW1uKyhlfHwwKS1iLnN0YXJ0LmNvbHVtbikqZC5jaGFyYWN0ZXJXaWR0aCk7dmFyIGo9dGhpcy4kZ2V0VG9wKGIuc3RhcnQucm93LGQpLGs9TWF0aC5yb3VuZChnK2Iuc3RhcnQuY29sdW1uKmQuY2hhcmFjdGVyV2lkdGgpO2EucHVzaCgiPGRpdiBjbGFzcz0nIixjLCInIHN0eWxlPSciLCJoZWlnaHQ6IixoLCJweDsiLCJ3aWR0aDoiLGksInB4OyIsInRvcDoiLGosInB4OyIsImxlZnQ6IixrLCJweDsnPjwvZGl2PiIpfX0pLmNhbGwoZi5wcm90b3R5cGUpLGIuTWFya2VyPWZ9KSxkZWZpbmUoImFjZS9sYXllci90ZXh0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvbGFuZyIsImFjZS9saWIvdXNlcmFnZW50IiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9kb20iKSxmPWEoIi4uL2xpYi9sYW5nIiksZz1hKCIuLi9saWIvdXNlcmFnZW50IiksaD1hKCIuLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixpPWZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZWxlbWVudC5jbGFzc05hbWU9ImFjZV9sYXllciBhY2VfdGV4dC1sYXllciIsYS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuJGNoYXJhY3RlclNpemU9dGhpcy4kbWVhc3VyZVNpemVzKCl8fHt3aWR0aDowLGhlaWdodDowfSx0aGlzLiRwb2xsU2l6ZUNoYW5nZXMoKX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxoKSx0aGlzLkVPRl9DSEFSPSLCtiIsdGhpcy5FT0xfQ0hBUj0iwqwiLHRoaXMuVEFCX0NIQVI9IuKGkiIsdGhpcy5TUEFDRV9DSEFSPSLCtyIsdGhpcy4kcGFkZGluZz0wLHRoaXMuc2V0UGFkZGluZz1mdW5jdGlvbihhKXt0aGlzLiRwYWRkaW5nPWEsdGhpcy5lbGVtZW50LnN0eWxlLnBhZGRpbmc9IjAgIithKyJweCJ9LHRoaXMuZ2V0TGluZUhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjaGFyYWN0ZXJTaXplLmhlaWdodHx8MX0sdGhpcy5nZXRDaGFyYWN0ZXJXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjaGFyYWN0ZXJTaXplLndpZHRofHwxfSx0aGlzLmNoZWNrRm9yU2l6ZUNoYW5nZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRtZWFzdXJlU2l6ZXMoKTthJiYodGhpcy4kY2hhcmFjdGVyU2l6ZS53aWR0aCE9PWEud2lkdGh8fHRoaXMuJGNoYXJhY3RlclNpemUuaGVpZ2h0IT09YS5oZWlnaHQpJiYodGhpcy4kY2hhcmFjdGVyU2l6ZT1hLHRoaXMuX2VtaXQoImNoYW5nZUNoYXJhY3RlclNpemUiLHtkYXRhOmF9KSl9LHRoaXMuJHBvbGxTaXplQ2hhbmdlcz1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy4kcG9sbFNpemVDaGFuZ2VzVGltZXI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXthLmNoZWNrRm9yU2l6ZUNoYW5nZXMoKX0sNTAwKX0sdGhpcy4kZm9udFN0eWxlcz17Zm9udEZhbWlseToxLGZvbnRTaXplOjEsZm9udFdlaWdodDoxLGZvbnRTdHlsZToxLGxpbmVIZWlnaHQ6MX0sdGhpcy4kbWVhc3VyZVNpemVzPWcuaXNJRXx8Zy5pc09sZEdlY2tvP2Z1bmN0aW9uKCl7dmFyIGE9MWUzO2lmKCF0aGlzLiRtZWFzdXJlTm9kZSl7dmFyIGI9dGhpcy4kbWVhc3VyZU5vZGU9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWIuc3R5bGU7Yy53aWR0aD1jLmhlaWdodD0iYXV0byIsYy5sZWZ0PWMudG9wPS1hKjQwKyJweCIsYy52aXNpYmlsaXR5PSJoaWRkZW4iLGMucG9zaXRpb249ImZpeGVkIixjLm92ZXJmbG93PSJ2aXNpYmxlIixjLndoaXRlU3BhY2U9Im5vd3JhcCIsYi5pbm5lckhUTUw9Zi5zdHJpbmdSZXBlYXQoIlh5IixhKTtpZih0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5KXRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYik7ZWxzZXt2YXIgZD10aGlzLmVsZW1lbnQucGFyZW50Tm9kZTt3aGlsZSghZS5oYXNDc3NDbGFzcyhkLCJhY2VfZWRpdG9yIikpZD1kLnBhcmVudE5vZGU7ZC5hcHBlbmRDaGlsZChiKX19aWYoIXRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aClyZXR1cm4gbnVsbDt2YXIgYz10aGlzLiRtZWFzdXJlTm9kZS5zdHlsZSxnPWUuY29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnQpO2Zvcih2YXIgaCBpbiB0aGlzLiRmb250U3R5bGVzKWNbaF09Z1toXTt2YXIgaT17aGVpZ2h0OnRoaXMuJG1lYXN1cmVOb2RlLm9mZnNldEhlaWdodCx3aWR0aDp0aGlzLiRtZWFzdXJlTm9kZS5vZmZzZXRXaWR0aC8oYSoyKX07cmV0dXJuIGkud2lkdGg9PTB8fGkuaGVpZ2h0PT0wP251bGw6aX06ZnVuY3Rpb24oKXtpZighdGhpcy4kbWVhc3VyZU5vZGUpe3ZhciBhPXRoaXMuJG1lYXN1cmVOb2RlPWUuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1hLnN0eWxlO2Iud2lkdGg9Yi5oZWlnaHQ9ImF1dG8iLGIubGVmdD1iLnRvcD0iLTEwMHB4IixiLnZpc2liaWxpdHk9ImhpZGRlbiIsYi5wb3NpdGlvbj0iZml4ZWQiLGIub3ZlcmZsb3c9InZpc2libGUiLGIud2hpdGVTcGFjZT0ibm93cmFwIixhLmlubmVySFRNTD0iWCI7dmFyIGM9dGhpcy5lbGVtZW50LnBhcmVudE5vZGU7d2hpbGUoYyYmIWUuaGFzQ3NzQ2xhc3MoYywiYWNlX2VkaXRvciIpKWM9Yy5wYXJlbnROb2RlO2lmKCFjKXJldHVybiB0aGlzLiRtZWFzdXJlTm9kZT1udWxsO2MuYXBwZW5kQ2hpbGQoYSl9dmFyIGQ9dGhpcy4kbWVhc3VyZU5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj17aGVpZ2h0OmQuaGVpZ2h0LHdpZHRoOmQud2lkdGh9O3JldHVybiBmLndpZHRoPT0wfHxmLmhlaWdodD09MD9udWxsOmZ9LHRoaXMuc2V0U2Vzc2lvbj1mdW5jdGlvbihhKXt0aGlzLnNlc3Npb249YX0sdGhpcy5zaG93SW52aXNpYmxlcz0hMSx0aGlzLnNldFNob3dJbnZpc2libGVzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNob3dJbnZpc2libGVzPT1hPyExOih0aGlzLnNob3dJbnZpc2libGVzPWEsITApfSx0aGlzLiR0YWJTdHJpbmdzPVtdLHRoaXMuJGNvbXB1dGVUYWJTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlc3Npb24uZ2V0VGFiU2l6ZSgpLGI9dGhpcy4kdGFiU3RyaW5ncz1bMF07Zm9yKHZhciBjPTE7YzxhKzE7YysrKXRoaXMuc2hvd0ludmlzaWJsZXM/Yi5wdXNoKCI8c3BhbiBjbGFzcz0nYWNlX2ludmlzaWJsZSc+Iit0aGlzLlRBQl9DSEFSKyhuZXcgQXJyYXkoYykpLmpvaW4oIiYjMTYwOyIpKyI8L3NwYW4+Iik6Yi5wdXNoKChuZXcgQXJyYXkoYysxKSkuam9pbigiJiMxNjA7IikpfSx0aGlzLnVwZGF0ZUxpbmVzPWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRjb21wdXRlVGFiU3RyaW5nKCksKHRoaXMuY29uZmlnLmxhc3RSb3chPWEubGFzdFJvd3x8dGhpcy5jb25maWcuZmlyc3RSb3chPWEuZmlyc3RSb3cpJiZ0aGlzLnNjcm9sbExpbmVzKGEpLHRoaXMuY29uZmlnPWE7dmFyIGQ9TWF0aC5tYXgoYixhLmZpcnN0Um93KSxmPU1hdGgubWluKGMsYS5sYXN0Um93KSxnPXRoaXMuZWxlbWVudC5jaGlsZE5vZGVzLGg9MDtmb3IodmFyIGk9YS5maXJzdFJvdztpPGQ7aSsrKXt2YXIgaj10aGlzLnNlc3Npb24uZ2V0Rm9sZExpbmUoaSk7aWYoail7aWYoai5jb250YWluc1JvdyhkKSl7ZD1qLnN0YXJ0LnJvdzticmVha31pPWouZW5kLnJvd31oKyt9Zm9yKHZhciBrPWQ7azw9ZjtrKyspe3ZhciBsPWdbaCsrXTtpZighbCljb250aW51ZTt2YXIgbT1bXSxuPXRoaXMuc2Vzc2lvbi5nZXRUb2tlbnMoayk7dGhpcy4kcmVuZGVyTGluZShtLGssbiwhdGhpcy4kdXNlTGluZUdyb3VwcygpKSxsPWUuc2V0SW5uZXJIdG1sKGwsbS5qb2luKCIiKSksaz10aGlzLnNlc3Npb24uZ2V0Um93Rm9sZEVuZChrKX19LHRoaXMuc2Nyb2xsTGluZXM9ZnVuY3Rpb24oYSl7dGhpcy4kY29tcHV0ZVRhYlN0cmluZygpO3ZhciBiPXRoaXMuY29uZmlnO3RoaXMuY29uZmlnPWE7aWYoIWJ8fGIubGFzdFJvdzxhLmZpcnN0Um93KXJldHVybiB0aGlzLnVwZGF0ZShhKTtpZihhLmxhc3RSb3c8Yi5maXJzdFJvdylyZXR1cm4gdGhpcy51cGRhdGUoYSk7dmFyIGM9dGhpcy5lbGVtZW50O2lmKGIuZmlyc3RSb3c8YS5maXJzdFJvdylmb3IodmFyIGQ9dGhpcy5zZXNzaW9uLmdldEZvbGRlZFJvd0NvdW50KGIuZmlyc3RSb3csYS5maXJzdFJvdy0xKTtkPjA7ZC0tKWMucmVtb3ZlQ2hpbGQoYy5maXJzdENoaWxkKTtpZihiLmxhc3RSb3c+YS5sYXN0Um93KWZvcih2YXIgZD10aGlzLnNlc3Npb24uZ2V0Rm9sZGVkUm93Q291bnQoYS5sYXN0Um93KzEsYi5sYXN0Um93KTtkPjA7ZC0tKWMucmVtb3ZlQ2hpbGQoYy5sYXN0Q2hpbGQpO2lmKGEuZmlyc3RSb3c8Yi5maXJzdFJvdyl7dmFyIGU9dGhpcy4kcmVuZGVyTGluZXNGcmFnbWVudChhLGEuZmlyc3RSb3csYi5maXJzdFJvdy0xKTtjLmZpcnN0Q2hpbGQ/Yy5pbnNlcnRCZWZvcmUoZSxjLmZpcnN0Q2hpbGQpOmMuYXBwZW5kQ2hpbGQoZSl9aWYoYS5sYXN0Um93PmIubGFzdFJvdyl7dmFyIGU9dGhpcy4kcmVuZGVyTGluZXNGcmFnbWVudChhLGIubGFzdFJvdysxLGEubGFzdFJvdyk7Yy5hcHBlbmRDaGlsZChlKX19LHRoaXMuJHJlbmRlckxpbmVzRnJhZ21lbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmPWIsZz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGYpLGg9Zz9nLnN0YXJ0LnJvdzpJbmZpbml0eTtmb3IoOzspe2Y+aCYmKGY9Zy5lbmQucm93KzEsZz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGYsZyksaD1nP2cuc3RhcnQucm93OkluZmluaXR5KTtpZihmPmMpYnJlYWs7dmFyIGk9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxqPVtdLGs9dGhpcy5zZXNzaW9uLmdldFRva2VucyhmKTt0aGlzLiRyZW5kZXJMaW5lKGosZixrLCExKSxpLmlubmVySFRNTD1qLmpvaW4oIiIpO2lmKHRoaXMuJHVzZUxpbmVHcm91cHMoKSlpLmNsYXNzTmFtZT0iYWNlX2xpbmVfZ3JvdXAiLGQuYXBwZW5kQ2hpbGQoaSk7ZWxzZXt2YXIgbD1pLmNoaWxkTm9kZXM7d2hpbGUobC5sZW5ndGgpZC5hcHBlbmRDaGlsZChsWzBdKX1mKyt9cmV0dXJuIGR9LHRoaXMudXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMuJGNvbXB1dGVUYWJTdHJpbmcoKSx0aGlzLmNvbmZpZz1hO3ZhciBiPVtdLGM9YS5maXJzdFJvdyxkPWEubGFzdFJvdyxmPWMsZz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGYpLGg9Zz9nLnN0YXJ0LnJvdzpJbmZpbml0eTtmb3IoOzspe2Y+aCYmKGY9Zy5lbmQucm93KzEsZz10aGlzLnNlc3Npb24uZ2V0TmV4dEZvbGRMaW5lKGYsZyksaD1nP2cuc3RhcnQucm93OkluZmluaXR5KTtpZihmPmQpYnJlYWs7dGhpcy4kdXNlTGluZUdyb3VwcygpJiZiLnB1c2goIjxkaXYgY2xhc3M9J2FjZV9saW5lX2dyb3VwJz4iKTt2YXIgaT10aGlzLnNlc3Npb24uZ2V0VG9rZW5zKGYpO3RoaXMuJHJlbmRlckxpbmUoYixmLGksITEpLHRoaXMuJHVzZUxpbmVHcm91cHMoKSYmYi5wdXNoKCI8L2Rpdj4iKSxmKyt9dGhpcy5lbGVtZW50PWUuc2V0SW5uZXJIdG1sKHRoaXMuZWxlbWVudCxiLmpvaW4oIiIpKX0sdGhpcy4kdGV4dFRva2VuPXt0ZXh0OiEwLHJwYXJlbjohMCxscGFyZW46ITB9LHRoaXMuJHJlbmRlclRva2VuPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMsZj0vXHR8Jnw8fCggKyl8KFtcdTAwMDAtXHUwMDE5XHUwMGEwXHUxNjgwXHUxODBFXHUyMDAwLVx1MjAwYlx1MjAyOFx1MjAyOVx1MjAyRlx1MjA1Rlx1MzAwMFx1RkVGRl0pfFtcdTExMDAtXHUxMTVGXHUxMUEzLVx1MTFBN1x1MTFGQS1cdTExRkZcdTIzMjktXHUyMzJBXHUyRTgwLVx1MkU5OVx1MkU5Qi1cdTJFRjNcdTJGMDAtXHUyRkQ1XHUyRkYwLVx1MkZGQlx1MzAwMC1cdTMwM0VcdTMwNDEtXHUzMDk2XHUzMDk5LVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUzMThFXHUzMTkwLVx1MzFCQVx1MzFDMC1cdTMxRTNcdTMxRjAtXHUzMjFFXHUzMjIwLVx1MzI0N1x1MzI1MC1cdTMyRkVcdTMzMDAtXHU0REJGXHU0RTAwLVx1QTQ4Q1x1QTQ5MC1cdUE0QzZcdUE5NjAtXHVBOTdDXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkFGRlx1RkUxMC1cdUZFMTlcdUZFMzAtXHVGRTUyXHVGRTU0LVx1RkU2Nlx1RkU2OC1cdUZFNkJcdUZGMDEtXHVGRjYwXHVGRkUwLVx1RkZFNl0vZyxnPWZ1bmN0aW9uKGEsYyxkLGYsZyl7aWYoYylyZXR1cm4obmV3IEFycmF5KGEubGVuZ3RoKzEpKS5qb2luKCImIzE2MDsiKTtpZihhPT0iJiIpcmV0dXJuIiYjMzg7IjtpZihhPT0iPCIpcmV0dXJuIiYjNjA7IjtpZihhPT0iCSIpe3ZhciBoPWUuc2Vzc2lvbi5nZXRTY3JlZW5UYWJTaXplKGIrZik7cmV0dXJuIGIrPWgtMSxlLiR0YWJTdHJpbmdzW2hdfWlmKGE9PSLjgIAiKXt2YXIgaT1lLnNob3dJbnZpc2libGVzPyJhY2VfY2prIGFjZV9pbnZpc2libGUiOiJhY2VfY2prIixqPWUuc2hvd0ludmlzaWJsZXM/ZS5TUEFDRV9DSEFSOiIiO3JldHVybiBiKz0xLCI8c3BhbiBjbGFzcz0nIitpKyInIHN0eWxlPSd3aWR0aDoiK2UuY29uZmlnLmNoYXJhY3RlcldpZHRoKjIrInB4Jz4iK2orIjwvc3Bhbj4ifXJldHVybiBkPyI8c3BhbiBjbGFzcz0nYWNlX2ludmlzaWJsZSBhY2VfaW52YWxpZCc+IitlLlNQQUNFX0NIQVIrIjwvc3Bhbj4iOihiKz0xLCI8c3BhbiBjbGFzcz0nYWNlX2Nqaycgc3R5bGU9J3dpZHRoOiIrZS5jb25maWcuY2hhcmFjdGVyV2lkdGgqMisicHgnPiIrYSsiPC9zcGFuPiIpfSxoPWQucmVwbGFjZShmLGcpO2lmKCF0aGlzLiR0ZXh0VG9rZW5bYy50eXBlXSl7dmFyIGk9ImFjZV8iK2MudHlwZS5yZXBsYWNlKC9cLi9nLCIgYWNlXyIpLGo9IiI7Yy50eXBlPT0iZm9sZCImJihqPSIgc3R5bGU9J3dpZHRoOiIrYy52YWx1ZS5sZW5ndGgqdGhpcy5jb25maWcuY2hhcmFjdGVyV2lkdGgrInB4OycgIiksYS5wdXNoKCI8c3BhbiBjbGFzcz0nIixpLCInIixqLCI+IixoLCI8L3NwYW4+Iil9ZWxzZSBhLnB1c2goaCk7cmV0dXJuIGIrZC5sZW5ndGh9LHRoaXMuJHJlbmRlckxpbmVDb3JlPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9MCxnPTAsaCxpPTAsaj10aGlzOyFkfHxkLmxlbmd0aD09MD9oPU51bWJlci5NQVhfVkFMVUU6aD1kWzBdLGV8fGEucHVzaCgiPGRpdiBjbGFzcz0nYWNlX2xpbmUnIHN0eWxlPSdoZWlnaHQ6Iix0aGlzLmNvbmZpZy5saW5lSGVpZ2h0LCJweCIsIic+Iik7Zm9yKHZhciBrPTA7azxjLmxlbmd0aDtrKyspe3ZhciBsPWNba10sbT1sLnZhbHVlO2lmKGYrbS5sZW5ndGg8aClpPWouJHJlbmRlclRva2VuKGEsaSxsLG0pLGYrPW0ubGVuZ3RoO2Vsc2V7d2hpbGUoZittLmxlbmd0aD49aClpPWouJHJlbmRlclRva2VuKGEsaSxsLG0uc3Vic3RyaW5nKDAsaC1mKSksbT1tLnN1YnN0cmluZyhoLWYpLGY9aCxlfHxhLnB1c2goIjwvZGl2PiIsIjxkaXYgY2xhc3M9J2FjZV9saW5lJyBzdHlsZT0naGVpZ2h0OiIsdGhpcy5jb25maWcubGluZUhlaWdodCwicHgiLCInPiIpLGcrKyxpPTAsaD1kW2ddfHxOdW1iZXIuTUFYX1ZBTFVFO20ubGVuZ3RoIT0wJiYoZis9bS5sZW5ndGgsaT1qLiRyZW5kZXJUb2tlbihhLGksbCxtKSl9fXRoaXMuc2hvd0ludmlzaWJsZXMmJihiIT09dGhpcy5zZXNzaW9uLmdldExlbmd0aCgpLTE/YS5wdXNoKCI8c3BhbiBjbGFzcz0nYWNlX2ludmlzaWJsZSc+Iit0aGlzLkVPTF9DSEFSKyI8L3NwYW4+Iik6YS5wdXNoKCI8c3BhbiBjbGFzcz0nYWNlX2ludmlzaWJsZSc+Iit0aGlzLkVPRl9DSEFSKyI8L3NwYW4+IikpLGV8fGEucHVzaCgiPC9kaXY+Iil9LHRoaXMuJHJlbmRlckxpbmU9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIXRoaXMuc2Vzc2lvbi5pc1Jvd0ZvbGRlZChiKSl7dmFyIGU9dGhpcy5zZXNzaW9uLmdldFJvd1NwbGl0RGF0YShiKTt0aGlzLiRyZW5kZXJMaW5lQ29yZShhLGIsYyxlLGQpfWVsc2UgdGhpcy4kcmVuZGVyRm9sZExpbmUoYSxiLGMsZCl9LHRoaXMuJHJlbmRlckZvbGRMaW5lPWZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGgoYSxiLGMpe3ZhciBkPTAsZT0wO3doaWxlKGUrYVtkXS52YWx1ZS5sZW5ndGg8Yil7ZSs9YVtkXS52YWx1ZS5sZW5ndGgsZCsrO2lmKGQ9PWEubGVuZ3RoKXJldHVybn1pZihlIT1iKXt2YXIgZj1hW2RdLnZhbHVlLnN1YnN0cmluZyhiLWUpO2YubGVuZ3RoPmMtYiYmKGY9Zi5zdWJzdHJpbmcoMCxjLWIpKSxnLnB1c2goe3R5cGU6YVtkXS50eXBlLHZhbHVlOmZ9KSxlPWIrZi5sZW5ndGgsZCs9MX13aGlsZShlPGMpe3ZhciBmPWFbZF0udmFsdWU7Zi5sZW5ndGgrZT5jJiYoZj1mLnN1YnN0cmluZygwLGMtZSkpLGcucHVzaCh7dHlwZTphW2RdLnR5cGUsdmFsdWU6Zn0pLGUrPWYubGVuZ3RoLGQrPTF9fXZhciBlPXRoaXMuc2Vzc2lvbixmPWUuZ2V0Rm9sZExpbmUoYiksZz1bXTtmLndhbGsoZnVuY3Rpb24oYSxiLGQsZSxmKXthP2cucHVzaCh7dHlwZToiZm9sZCIsdmFsdWU6YX0pOihmJiYoYz10aGlzLnNlc3Npb24uZ2V0VG9rZW5zKGIpKSxjLmxlbmd0aCYmaChjLGUsZCkpfS5iaW5kKHRoaXMpLGYuZW5kLnJvdyx0aGlzLnNlc3Npb24uZ2V0TGluZShmLmVuZC5yb3cpLmxlbmd0aCk7dmFyIGk9dGhpcy5zZXNzaW9uLiR1c2VXcmFwTW9kZT90aGlzLnNlc3Npb24uJHdyYXBEYXRhW2JdOm51bGw7dGhpcy4kcmVuZGVyTGluZUNvcmUoYSxiLGcsaSxkKX0sdGhpcy4kdXNlTGluZUdyb3Vwcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0VXNlV3JhcE1vZGUoKX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aGlzLiRwb2xsU2l6ZUNoYW5nZXNUaW1lciksdGhpcy4kbWVhc3VyZU5vZGUmJnRoaXMuJG1lYXN1cmVOb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kbWVhc3VyZU5vZGUpLGRlbGV0ZSB0aGlzLiRtZWFzdXJlTm9kZX19KS5jYWxsKGkucHJvdG90eXBlKSxiLlRleHQ9aX0pLGRlZmluZSgiYWNlL2xheWVyL2N1cnNvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9kb20iKSxlPWZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZWxlbWVudC5jbGFzc05hbWU9ImFjZV9sYXllciBhY2VfY3Vyc29yLWxheWVyIixhLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksdGhpcy5pc1Zpc2libGU9ITEsdGhpcy5jdXJzb3JzPVtdLHRoaXMuY3Vyc29yPXRoaXMuYWRkQ3Vyc29yKCl9OyhmdW5jdGlvbigpe3RoaXMuJHBhZGRpbmc9MCx0aGlzLnNldFBhZGRpbmc9ZnVuY3Rpb24oYSl7dGhpcy4kcGFkZGluZz1hfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oYSl7dGhpcy5zZXNzaW9uPWF9LHRoaXMuYWRkQ3Vyc29yPWZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPSJhY2VfY3Vyc29yIjtyZXR1cm4gdGhpcy5pc1Zpc2libGV8fChiKz0iIGFjZV9oaWRkZW4iKSx0aGlzLm92ZXJ3cml0ZSYmKGIrPSIgYWNlX292ZXJ3cml0ZSIpLGEuY2xhc3NOYW1lPWIsdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGEpLHRoaXMuY3Vyc29ycy5wdXNoKGEpLGF9LHRoaXMucmVtb3ZlQ3Vyc29yPWZ1bmN0aW9uKCl7aWYodGhpcy5jdXJzb3JzLmxlbmd0aD4xKXt2YXIgYT10aGlzLmN1cnNvcnMucG9wKCk7cmV0dXJuIGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKSxhfX0sdGhpcy5oaWRlQ3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy5pc1Zpc2libGU9ITE7Zm9yKHZhciBhPXRoaXMuY3Vyc29ycy5sZW5ndGg7YS0tOylkLmFkZENzc0NsYXNzKHRoaXMuY3Vyc29yc1thXSwiYWNlX2hpZGRlbiIpO2NsZWFySW50ZXJ2YWwodGhpcy5ibGlua0lkKX0sdGhpcy5zaG93Q3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy5pc1Zpc2libGU9ITA7Zm9yKHZhciBhPXRoaXMuY3Vyc29ycy5sZW5ndGg7YS0tOylkLnJlbW92ZUNzc0NsYXNzKHRoaXMuY3Vyc29yc1thXSwiYWNlX2hpZGRlbiIpO3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSIiLHRoaXMucmVzdGFydFRpbWVyKCl9LHRoaXMucmVzdGFydFRpbWVyPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aGlzLmJsaW5rSWQpO2lmKCF0aGlzLmlzVmlzaWJsZSlyZXR1cm47dmFyIGE9dGhpcy5jdXJzb3JzLmxlbmd0aD09MT90aGlzLmN1cnNvcjp0aGlzLmVsZW1lbnQ7dGhpcy5ibGlua0lkPXNldEludGVydmFsKGZ1bmN0aW9uKCl7YS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthLnN0eWxlLnZpc2liaWxpdHk9IiJ9LDQwMCl9LDFlMyl9LHRoaXMuZ2V0UGl4ZWxQb3NpdGlvbj1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmNvbmZpZ3x8IXRoaXMuc2Vzc2lvbilyZXR1cm57bGVmdDowLHRvcDowfTthfHwoYT10aGlzLnNlc3Npb24uc2VsZWN0aW9uLmdldEN1cnNvcigpKTt2YXIgYz10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKGEpLGQ9TWF0aC5yb3VuZCh0aGlzLiRwYWRkaW5nK2MuY29sdW1uKnRoaXMuY29uZmlnLmNoYXJhY3RlcldpZHRoKSxlPShjLnJvdy0oYj90aGlzLmNvbmZpZy5maXJzdFJvd1NjcmVlbjowKSkqdGhpcy5jb25maWcubGluZUhlaWdodDtyZXR1cm57bGVmdDpkLHRvcDplfX0sdGhpcy51cGRhdGU9ZnVuY3Rpb24oYSl7dGhpcy5jb25maWc9YTtpZih0aGlzLnNlc3Npb24uc2VsZWN0aW9uTWFya2VyQ291bnQ+MCl7dmFyIGI9dGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzLGM9MCxkLGU9MDtmb3IodmFyIGM9Yi5sZW5ndGg7Yy0tOyl7ZD1iW2NdO3ZhciBmPXRoaXMuZ2V0UGl4ZWxQb3NpdGlvbihkLmN1cnNvciwhMCksZz0odGhpcy5jdXJzb3JzW2UrK118fHRoaXMuYWRkQ3Vyc29yKCkpLnN0eWxlO2cubGVmdD1mLmxlZnQrInB4IixnLnRvcD1mLnRvcCsicHgiLGcud2lkdGg9YS5jaGFyYWN0ZXJXaWR0aCsicHgiLGcuaGVpZ2h0PWEubGluZUhlaWdodCsicHgifWlmKGU+MSl3aGlsZSh0aGlzLmN1cnNvcnMubGVuZ3RoPmUpdGhpcy5yZW1vdmVDdXJzb3IoKX1lbHNle3ZhciBmPXRoaXMuZ2V0UGl4ZWxQb3NpdGlvbihudWxsLCEwKSxnPXRoaXMuY3Vyc29yLnN0eWxlO2cubGVmdD1mLmxlZnQrInB4IixnLnRvcD1mLnRvcCsicHgiLGcud2lkdGg9YS5jaGFyYWN0ZXJXaWR0aCsicHgiLGcuaGVpZ2h0PWEubGluZUhlaWdodCsicHgiO3doaWxlKHRoaXMuY3Vyc29ycy5sZW5ndGg+MSl0aGlzLnJlbW92ZUN1cnNvcigpfXZhciBoPXRoaXMuc2Vzc2lvbi5nZXRPdmVyd3JpdGUoKTtoIT10aGlzLm92ZXJ3cml0ZSYmdGhpcy4kc2V0T3Zlcml0ZShoKSx0aGlzLiRwaXhlbFBvcz1mLHRoaXMucmVzdGFydFRpbWVyKCl9LHRoaXMuJHNldE92ZXJpdGU9ZnVuY3Rpb24oYSl7dGhpcy5vdmVyd3JpdGU9YTtmb3IodmFyIGI9dGhpcy5jdXJzb3JzLmxlbmd0aDtiLS07KWE/ZC5hZGRDc3NDbGFzcyh0aGlzLmN1cnNvcnNbYl0sImFjZV9vdmVyd3JpdGUiKTpkLnJlbW92ZUNzc0NsYXNzKHRoaXMuY3Vyc29yc1tiXSwiYWNlX292ZXJ3cml0ZSIpfSx0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKHRoaXMuYmxpbmtJZCl9fSkuY2FsbChlLnByb3RvdHlwZSksYi5DdXJzb3I9ZX0pLGRlZmluZSgiYWNlL3Njcm9sbGJhciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9kb20iLCJhY2UvbGliL2V2ZW50IiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vbGliL29vcCIpLGU9YSgiLi9saWIvZG9tIiksZj1hKCIuL2xpYi9ldmVudCIpLGc9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixoPWZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZWxlbWVudC5jbGFzc05hbWU9ImFjZV9zYiIsdGhpcy5pbm5lcj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmlubmVyKSxhLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksdGhpcy53aWR0aD1lLnNjcm9sbGJhcldpZHRoKGEub3duZXJEb2N1bWVudCksdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPSh0aGlzLndpZHRofHwxNSkrNSsicHgiLGYuYWRkTGlzdGVuZXIodGhpcy5lbGVtZW50LCJzY3JvbGwiLHRoaXMub25TY3JvbGwuYmluZCh0aGlzKSl9OyhmdW5jdGlvbigpe2QuaW1wbGVtZW50KHRoaXMsZyksdGhpcy5vblNjcm9sbD1mdW5jdGlvbigpe3RoaXMuX2VtaXQoInNjcm9sbCIse2RhdGE6dGhpcy5lbGVtZW50LnNjcm9sbFRvcH0pfSx0aGlzLmdldFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGh9LHRoaXMuc2V0SGVpZ2h0PWZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQ9YSsicHgifSx0aGlzLnNldElubmVySGVpZ2h0PWZ1bmN0aW9uKGEpe3RoaXMuaW5uZXIuc3R5bGUuaGVpZ2h0PWErInB4In0sdGhpcy5zZXRTY3JvbGxUb3A9ZnVuY3Rpb24oYSl7dGhpcy5lbGVtZW50LnNjcm9sbFRvcD1hfX0pLmNhbGwoaC5wcm90b3R5cGUpLGIuU2Nyb2xsQmFyPWh9KSxkZWZpbmUoImFjZS9yZW5kZXJsb29wIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9ldmVudCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2xpYi9ldmVudCIpLGU9ZnVuY3Rpb24oYSxiKXt0aGlzLm9uUmVuZGVyPWEsdGhpcy5wZW5kaW5nPSExLHRoaXMuY2hhbmdlcz0wLHRoaXMud2luZG93PWJ8fHdpbmRvd307KGZ1bmN0aW9uKCl7dGhpcy5zY2hlZHVsZT1mdW5jdGlvbihhKXt0aGlzLmNoYW5nZXM9dGhpcy5jaGFuZ2VzfGE7aWYoIXRoaXMucGVuZGluZyl7dGhpcy5wZW5kaW5nPSEwO3ZhciBiPXRoaXM7ZC5uZXh0VGljayhmdW5jdGlvbigpe2IucGVuZGluZz0hMTt2YXIgYTt3aGlsZShhPWIuY2hhbmdlcyliLmNoYW5nZXM9MCxiLm9uUmVuZGVyKGEpfSx0aGlzLndpbmRvdyl9fX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuUmVuZGVyTG9vcD1lfSksZGVmaW5lKCJ0ZXh0IWFjZS9jc3MvZWRpdG9yLmNzcyIsW10sIi5hY2VfZWRpdG9yIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdNZW5sbycsICdVYnVudHUgTW9ubycsICdEcm9pZCBTYW5zIE1vbm8nLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4uYWNlX3Njcm9sbGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmFjZV9jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGN1cnNvcjogdGV4dDtcbn1cblxuLmFjZV9ndXR0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvdmVyZmxvdyA6IGhpZGRlbjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIHotaW5kZXg6IDQ7XG59XG5cbi5hY2Vfc2Nyb2xsZXIuaG9yc2Nyb2xsIHtcbiAgICBib3gtc2hhZG93OiAxN3B4IDAgMTZweCAtMTZweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQ7XG59XG5cbi5hY2VfZ3V0dGVyLWNlbGwge1xuICAgIHBhZGRpbmctbGVmdDogMTlweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7XG59XG5cbi5hY2VfZ3V0dGVyLWNlbGwuYWNlX2Vycm9yIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TUMxak1EWXdJRFl4TGpFek5EYzNOeXdnTWpBeE1DOHdNaTh4TWkweE56b3pNam93TUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5TQk5ZV05wYm5SdmMyZ2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRVU0yT0VaRFFUUTRSVFUwTVRGRk1VRXpNMFZGUlRNMlJVWTFNMFJCTWpZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlFVTTJPRVpEUVRVNFJUVTBNVEZGTVVFek0wVkZSVE0yUlVZMU0wUkJNallpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwQlF6WTRSa05CTWpoRk5UUXhNVVV4UVRNelJVVkZNelpGUmpVelJFRXlOaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBCUXpZNFJrTkJNemhGTlRReE1VVXhRVE16UlVWRk16WkZSalV6UkVFeU5pSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9Qa2dYeGJBQUFBSmJTVVJCVkhqYXBGTk5hQk5CRkg0enM1dmRaTFA1c1FtTnBUODJRWTIwOWhlaDFpb1dpc2FEUmNTS0YwV0tKMEdRbnJ6cnhhc0hzUjZFbmxyd0QwVGFneEphYmFWRXBGWXhMV2xMU1M4MjJ0cjg3bTY2Y2NmZDJHS3lWaEE2TU15YmdmZTk3L3ZtUFVRcGhkMHNaanRvOVhJbjlPT3N2bHUybmtxUnpWVSs2dnZselBmOFc2Yms4ZHhRME5QYnhBQUxnQ2dnMkprYVF1aHpRYXUvRWwwemJtVUE3VTBFczh2MkNpWW1LUUpIR08xUUlDQ0xvcWlsTWhrbXVyREF5YXBLZ3FJdGV6aS9VU1JkSnFFWVk0RDVqQ3kwM2h0MnlNa2t2TDkxalRUWDEwcXp5eXUyaHJ1UFJON2pnYkgrRU9zWGNNTGdZaVRoRWdBTWhBQlc4NW9xeTFEWGRSSWR2UDFBSEoyYWNRWHZESXJWSGNkUU5yRUtOWVNWTVNaR01qRXpJSUF3RFhJbys2Ry9GeGNHbnprQzNUMm9NaExqcmU0OXNCQitSUmNITHFkYWZLNnNZZEUvR0dCd1UxVnBGTmowYU44cEpiZStCa1p5ZXZVcnZMbDZYbW0wVzlJdVRjMER4ckROQUpkNW9FdkkvS1JzTkMzYlF5TmpQTzl5UTFZSGNmajJRdmZRYy81VFVoSlRCYzJpTTBVN0FXRFF0YzFuSkh2RC9jZk8yczdqYUdraVRFZmEvRXA4Y29MdTd6bU5taDgrZGM1bFpEdVVlRkFHVU5BL09ZNkpWYXlwUTB2anI3WFlqVXZKTTM3dnQrajF2dVRLNURnVmZWVW9UalZlK3kzL0x4TXhZMkdnVStDU0x5NGNwZnNZb3JSWHVYSU9pMFZ0NDBoNjd1WkZUZElvNm5MYVpjd1VKV0F6d05TMHRCbnFxS3pRRG5qZEcvaVB5WnhvNDZIYUtVcGJ2WWtqOHFZUlRac0JoZ2UrSkhoWnloMHg5Yjk1SnFqVkprVDA4NGtaSVB3dS9tUFdxUGdmUTVqWGgyKzkyQXk3SGVkZkFnd0E2S0RXYWZiNHczY0FBQUFBU1VWT1JLNUNZSUk9XCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMnB4IGNlbnRlcjtcbn1cblxuLmFjZV9ndXR0ZXItY2VsbC5hY2Vfd2FybmluZyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5SnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU1DMWpNRFl3SURZeExqRXpORGMzTnl3Z01qQXhNQzh3TWk4eE1pMHhOem96TWpvd01DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROU0JOWVdOcGJuUnZjMmdpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UVVNMk9FWkRRVGc0UlRVME1URkZNVUV6TTBWRlJUTTJSVVkxTTBSQk1qWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRVU0yT0VaRFFUazRSVFUwTVRGRk1VRXpNMFZGUlRNMlJVWTFNMFJCTWpZaVBpQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMGdjM1JTWldZNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEJRelk0UmtOQk5qaEZOVFF4TVVVeFFUTXpSVVZGTXpaRlJqVXpSRUV5TmlJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQlF6WTRSa05CTnpoRk5UUXhNVVV4UVRNelJVVkZNelpGUmpVelJFRXlOaUl2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUGdkN1BmSUFBQUdtU1VSQlZIamFZdnIvL3o4REpaaUpnVUlBTm9DUmtSRWI5Z0xpU1ZBYVF4NE9RTTdBQWt3ZDdYVTIvdisrL3JPdHRkWUdFQjlkQVNFdk9NeWRHS2ZIOEd2L3A0WFRrdlJCZkx4ZVFBUCsxY1VoWG9weXZ6aFA3UC9Jb1NqN2c3TXcwOWNOS082SjFRUTBMNGdJQ1BJdi92ZWcvOFcrSmRGdlFOTEhWc1c5L25tbjl6azdCK2NDa0R3aEw3Z3Q2a25TWm54OS9MdUNFT2N2a0lBTVArY3Z0bzluZnF5Wm1tVUFrc2ZuQlV0Yk02MGdYLzMva2d5djMveFNGT0w1RFpUK0w4dlArWWZoNWN2ZlB2cC94VUh5UUhYR3lBWXdncHdCalpZRlQzWTFPRWwvT2ZDSDRmZnYzd3pjNGl3TXZOSXNESitmL21INCt2SVBBeHNiNjMxV1cwWWxuNlpwUUxYZE1LL0RYR0RmbGgrc0l2MzdFaXZENXgvL0diNytZV1Q0eTg2c2w3QkNDa1NEK1orKy8xZGt2c0ZSbCtIbkQxUnZqZTRGOHdoak1YbUdqNThZR2Y1enNETXdjbkF3ZlB2S2NtbDYyRHNRRGVhRHhOKy9ZMHF3bHBFSHFyZEI5NElSTklEVWdmZ2ZLSkNoR0s0T2lrRVczZ1RpWFVCOTUwQVNMRkFGNTRBQzk0QTBHOVFBZk9ubUY5RENEekFCRnFTMDhJSFlESVNjZGlqT2pRQUJCZ0MrLzlhd0JIOTZqd0FBQUFCSlJVNUVya0pnZ2c9PVwiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDJweCBjZW50ZXI7XG59XG5cbi5hY2VfZ3V0dGVyLWNlbGwuYWNlX2luZm8ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTVFBQUFBQUFFRkJRVkpTVWw1ZVhtUmtaR3RyYTM5L2Y0V0ZoWW1KaVpHUmthYW1wcnk4dk1QRHc4ek16TlhWMWR6YzNPVGs1T3JxNnZEdzhQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFrQUFCUUFMQUFBQUFBUUFCQUFBQVV1SUNXT1pHbWVhQm1sNVhHd0ZDUVNCR3lYUlNBd3RxUUlpUnVpd0lNNUJvWVZiRUZJeUdDUW9lSkdyVnB0SVFBN1wiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDJweCBjZW50ZXI7XG59XG5cbi5hY2VfZWRpdG9yIC5hY2Vfc2Ige1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIHJpZ2h0OiAwO1xufVxuXG4uYWNlX2VkaXRvciAuYWNlX3NiIGRpdiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgbGVmdDogMDtcbn1cblxuLmFjZV9lZGl0b3IgLmFjZV9wcmludF9tYXJnaW5fbGF5ZXIge1xuICAgIHotaW5kZXg6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uYWNlX2VkaXRvciAuYWNlX3ByaW50X21hcmdpbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLmFjZV9lZGl0b3IgPiB0ZXh0YXJlYSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgd2lkdGg6IDAuNWVtO1xuICAgIGhlaWdodDogMWVtO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hY2VfZWRpdG9yID4gdGV4dGFyZWEuYWNlX2NvbXBvc2l0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgb3BhY2l0eTogMTtcbiAgICBib3JkZXI6IHNvbGlkIGxpZ2h0Z3JheSAxcHg7XG4gICAgbWFyZ2luOiAtMXB4XG59XG5cbi5hY2VfbGF5ZXIge1xuICAgIHotaW5kZXg6IDE7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC8qIHNldHRpbmcgcG9pbnRlci1ldmVudHM6IGF1dG87IG9uIG5vZGUgdW5kZXIgdGhlIG1vdXNlLCB3aGljaCBjaGFuZ2VzXG4gICAgICAgIGR1cmluZyBzY3JvbGwsIHdpbGwgYnJlYWsgbW91c2Ugd2hlZWwgc2Nyb2xsaW5nIGluIFNhZmFyaSAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYWNlX2d1dHRlciAuYWNlX2xheWVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLXdpZHRoOiA0MHB4O1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuXG4uYWNlX3RleHQtbGF5ZXIge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG59XG5cbi5hY2VfY2prIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYWNlX2N1cnNvci1sYXllciB7XG4gICAgei1pbmRleDogNDtcbn1cblxuLmFjZV9jdXJzb3Ige1xuICAgIHotaW5kZXg6IDQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4uYWNlX2N1cnNvci5hY2VfaGlkZGVuIHtcbiAgICBvcGFjaXR5OiAwLjI7XG59XG5cbi5hY2VfZWRpdG9yLm11bHRpc2VsZWN0IC5hY2VfY3Vyc29yIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xufVxuXG4uYWNlX2xpbmUge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDM7XG59XG5cbi5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogNTtcbn1cblxuLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogNjtcbn1cblxuLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDI7XG59XG5cbi5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDQ7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uYWNlX2xpbmUgLmFjZV9mb2xkIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxMXB4O1xuICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIGJhY2tncm91bmQtaW1hZ2U6XG4gICAgICAgIHVybChcImRhdGE6aW1hZ2UvcG5nLCU4OVBORyUwRCUwQSUxQSUwQSUwMCUwMCUwMCUwRElIRFIlMDAlMDAlMDAlMTElMDAlMDAlMDAlMDklMDglMDYlMDAlMDAlMDAlRDQlRTglQzclMEMlMDAlMDAlMDMlMUVpQ0NQSUNDJTIwUHJvZmlsZSUwMCUwMHglMDElODVUJURGayVEM1AlMTQlRkUlREFlJTlEJUIwJUUxJThCJTNBZyUxMSUwOSUzRWglOTFuZFN0QyU5QyVCNmtXJUJBJUNEWiVFQTYlQjchSCU5QiVBNm0lNUMlOUElQzYlMjQlRUR+JUIwJTA3JUQ5JThCbyUzQSVDNXclRjElMDclM0UlRjklMDclMEMlRDklODNvJTdCJTkyJTBEJUM2JTE0YSVGOCVBQyU4OCUyMkwlRjYlMjIlQjMlOUUlOUI0TSdTJTAzJUI5JUY3JUJCJURGJUY5JUVFOSclRTclRTQlNUUlQTAlRjlxWiVEMyUxNCUyRiUwRiUxNFVTTyVDNSVDMiVGQyVDNCVFNCUxNCVERiVGMiUwMSU1RSUxQ0MlMkIlRkNoTSU4QiU4NiUxNkolMjZHJTQwJTBGJUQzJUIyeSVFRiVCMyVGMyUwRSUxRSVDNmx0JUVFbyVERiVBQiVGRWMlRDUlOUElOTUlMEMlMTElRjAlMUMlMjAlQkUlOTQ1JUM0JTIyJUUxWSVBMGklNUMlRDR0JTEzJUUwJUQ2JTg5JUVGJTlEMTUlQzIlQ0RMc1glQTclMDQlMDklMUZnOG9jJTgxJUUxJThDJThEJTIzJTk2ZjQ1JTQwJTlBJTA5JUMyJTA3JUM1QiUzQUslQjglNDA4JTk4aSVFMCVGMyUwRCVEOCVDRSU4MSUxNCVFNCclMjYlQTklOTIuJThCJTNDJUFCRVIlMkYlRTVkRSVCMiUwQyVGNiVGMCUxRnMlODMlRjJfJUIwJUE4JTk0JUU5JTlCJUFEJUU3JTEwJThEbSU5QSUxOU4lRDElN0MlOEElREUlMUY5JTdEcCU4QyVFNiUwMCVENSVDMSUzRl8lMTglQkRBJUI4JTlEcFg2JUUzJUEzNX5CJUNEJTI0JUFFJTExJTI2JUJEJUU3JUVFdGklOTglRURlJTlBJTk3WSklMTIlMjUlMUMlMjQlQkNiVCVBRTNsaSVFNiUwQiUwMyU4OSU5QSVFNiVEMyVFRCVGNFAlOTIlQjAlOUY0JUJGNDNZJUYzJUUzJUVEUCU5NSUwNCVFQjElQzUlRjUlRjZLRiVGNCVCQSVCRCVENyVEQiU5MSU5MyUwNyVFMzUlM0UlQTcpJUQ2JTdGJTQwJUZFJUJEJUY3JUY1ciU4QSVFNXklOTIlRjAlRUIlQjQlMUUlOEQlRDUlRjQlNUIlOTIlM0FWJURCJURCJUU0JUNEJUE2JTIzJUMzJUM0d1ElM0YlMDNIQiU4MiU4RSUxQ2QoJUUwJTkxQiUwQ2ElOUFjJUM0JUFBJUY4TCUxNiUxOSUyMkolQTQlRDJpdFR5JUIyOCVENiUzQiglOTMlOTYlRUQlMUNHeCVDOV8lMEUlQjglNUUlMTYlRjUlNUIlQjIlQjglRjYlRTAlRkIlOUUlREQlMjUlRDclOEUlQkMlMTUlODUlQzUlQjclQTMlRDhRJUVEJUI1JTgxJUU5JUJBJUIyJTEzJTlBJTFCJTdGdWElQTUlQTNuJUUxNyVCOSVFNSU5QiUxQm0lQUIlMEIlMDhRJUZFJThBJUU1JUIxSCU1RWUlQ0FPJTgyUSVEN3U2JUU2JTkwUyU5NyVGQ3UlMEIlQ0YyJTk0JUVFJTI1diUxMlglMEMlQkElQUMlRjAlNUUlRjgqbCUwQU8lODUlMTclQzIlOTclQkYlRDQlQzglQ0UlREUlQUQlMTElQ0IlODBxJTJDJTNFJUFCJTlFUyVDRCVDNiVFQyUyNSVEMkwlRDIlRUJkJUI4JUJGJThBJUY1QiVDNiUxOCVGOSU5MDFDWiU5RCVCRSUyNE0lOUMlOEE5JUYyJURBUCUwQiclMDZ3JTgyJUVCJUU2JUUyJTVDJTJGJUQ3JTA3JTlFJUJCJUNDJTVEJUUxJUZBJUI5JTA4JUFELnIlMjMlOEUlQzIlMTclRjVFJTdDISVGMCVCRTMlQkUlM0VfJUI3byU4OGElQTclREIlQkUlRDNkJUVCJUEzMVolRUIlQkIlRDMlOTElQkElQTIlQjF6JTk0JThGJURCJyVGNiUzRCU4RSVBQSUxMyUxOSVCMiVCMSVCRSVCMX5WJTA4JTJCJUI0JUEyY2pKJUIzdE8lMDAlMDMlMjVtTiU5NyVGMyUwNSU5MyVFRiUxMSU4NCUwQiU3QyU4OCVBRS0lODklOEYlQUJiVyU5ME8lMkIlMEFvJTk5JTBDJTVFJTk3JTBDSSVBRkglRDkuJUIwJTNCJThGJUVEJTAzJUI2UyVENiU1RCVFNmlfczklRjMqcCVFOSUxQiVGRCVDMyVFQi43VSUwNiU1RSUxOSVDMCVEMXMuJTE3JUEwM3UlRTQlMDklQjAlN0MlNUUlMkMlRUIlMTUlREIlMUYlM0MlOUUlQjclODAlOTElM0IlREJjJUFEJTNEbWElQkElOEIlM0VWJUFCJURCdC4lNUIlMUUlMDElQkIlMEYlQUIlRDUlOUYlQ0YlQUElRDUlREQlRTclRTQlN0YlMEJ4JUEzJUZDJTA2JUE5JTIzJTBBJUQ2JUMyJUExXzIlMDAlMDAlMDAlMDlwSFlzJTAwJTAwJTBCJTEzJTAwJTAwJTBCJTEzJTAxJTAwJTlBJTlDJTE4JTAwJTAwJTAwJUI1SURBVCglMTUlQTUlOTElM0QlMEUlMDIhJTEwJTg1YWMlRTElMDUlRDYlQ0UlRDYlQzYlQ0UlRDIlRTglRUQlQ0QlREUlQzAlQzYlRDZOLiVFMFYlRjglM0QlOUNhJTg5MVhIJUMyJUJFJUQ5eSUzRiU5MCElRTYlOUMlQzMlQkZrJUU1JTAxMSVDNi0lRjUlQzhOJTA0JURGJUJEJUZGJTg5JURGdCU4M0ROJTYwJTNFJUYzJUFCJUEwJURFJTFBJTVEZyVCRSUxMFElOTclMUIlNDAlOUMlQThvJTEwJThGJTVFJTgyOCVCNCUxQiU2MCU4NyVGNiUwMiUyNiU4NSUxQ2glMUUlQzElMkIlNUJrJUZGJTg2JUVFJUI3aiUwOSU5QSVEQSU5QiVBQ2UlQTMlRjklRUMlREEhOSVCNCVENSVBNiU4MSU4NiU4NiU5OCVDQyUzQyU1QiU0MCVGQSU4MSVCMyVFOSVDQiUyMyU5NCVDMTZBem8lMDUlRDQlRTElQzElOTVhJTNCJThBJyVBMCVFOCVDQyUxNyUyMiU4NSUxRCVCQSUwMCVBMiVGQSVEQyUwQSU5NCVEMSVEMSU4RCU4QiUzQSU4NCUxN0IlQzclNjAlMUElMjVaJUZDJThEJTAwJTAwJTAwJTAwSUVORCVBRUIlNjAlODJcIiksXG4gICAgICAgIHVybChcImRhdGE6aW1hZ2UvcG5nLCU4OVBORyUwRCUwQSUxQSUwQSUwMCUwMCUwMCUwRElIRFIlMDAlMDAlMDAlMDUlMDAlMDAlMDA3JTA4JTA2JTAwJTAwJTAwJUM0JUREJTgwQyUwMCUwMCUwMyUxRWlDQ1BJQ0MlMjBQcm9maWxlJTAwJTAweCUwMSU4NVQlREZrJUQzUCUxNCVGRSVEQWUlOUQlQjAlRTElOEIlM0FnJTExJTA5JTNFaCU5MW5kU3RDJTlDJUI2a1clQkElQ0RaJUVBNiVCNyFIJTlCJUE2bSU1QyU5QSVDNiUyNCVFRH4lQjAlMDclRDklOEJvJTNBJUM1dyVGMSUwNyUzRSVGOSUwNyUwQyVEOSU4M28lN0IlOTIlMEQlQzYlMTRhJUY4JUFDJTg4JTIyTCVGNiUyMiVCMyU5RSU5QjRNJ1MlMDMlQjklRjclQkIlREYlRjklRUU5JyVFNyVFNCU1RSVBMCVGOXFaJUQzJTE0JTJGJTBGJTE0VVNPJUM1JUMyJUZDJUM0JUU0JTE0JURGJUYyJTAxJTVFJTFDQyUyQiVGQ2hNJThCJTg2JTE2SiUyNkclNDAlMEYlRDMlQjJ5JUVGJUIzJUYzJTBFJTFFJUM2bHQlRUVvJURGJUFCJUZFYyVENSU5QSU5NSUwQyUxMSVGMCUxQyUyMCVCRSU5NDUlQzQlMjIlRTFZJUEwaSU1QyVENHQlMTMlRTAlRDYlODklRUYlOUQxNSVDMiVDRExzWCVBNyUwNCUwOSUxRmc4b2MlODElRTElOEMlOEQlMjMlOTZmNDUlNDAlOUElMDklQzIlMDclQzVCJTNBSyVCOCU0MDglOThpJUUwJUYzJTBEJUQ4JUNFJTgxJTE0JUU0JyUyNiVBOSU5Mi4lOEIlM0MlQUJFUiUyRiVFNWRFJUIyJTBDJUY2JUYwJTFGcyU4MyVGMl8lQjAlQTglOTQlRTklOUIlQUQlRTclMTAlOERtJTlBJTE5TiVEMSU3QyU4QSVERSUxRjklN0RwJThDJUU2JTAwJUQ1JUMxJTNGXyUxOCVCREElQjglOURwWDYlRTMlQTM1fkIlQ0QlMjQlQUUlMTElMjYlQkQlRTclRUV0aSU5OCVFRGUlOUElOTdZKSUxMiUyNSUxQyUyNCVCQ2JUJUFFM2xpJUU2JTBCJTAzJTg5JTlBJUU2JUQzJUVEJUY0UCU5MiVCMCU5RjQlQkY0M1klRjMlRTMlRURQJTk1JTA0JUVCMSVDNSVGNSVGNktGJUY0JUJBJUJEJUQ3JURCJTkxJTkzJTA3JUUzNSUzRSVBNyklRDYlN0YlNDAlRkUlQkQlRjclRjVyJThBJUU1eSU5MiVGMCVFQiVCNCUxRSU4RCVENSVGNCU1QiU5MiUzQVYlREIlREIlRTQlQ0QlQTYlMjMlQzMlQzR3USUzRiUwM0hCJTgyJThFJTFDZCglRTAlOTFCJTBDYSU5QWMlQzQlQUElRjhMJTE2JTE5JTIySiVBNCVEMml0VHklQjI4JUQ2JTNCKCU5MyU5NiVFRCUxQ0d4JUM5XyUwRSVCOCU1RSUxNiVGNSU1QiVCMiVCOCVGNiVFMCVGQiU5RSVERCUyNSVENyU4RSVCQyUxNSU4NSVDNSVCNyVBMyVEOFElRUQlQjUlODElRTklQkElQjIlMTMlOUElMUIlN0Z1YSVBNSVBM24lRTE3JUI5JUU1JTlCJTFCbSVBQiUwQiUwOFElRkUlOEElRTUlQjFIJTVFZSVDQU8lODJRJUQ3dTYlRTYlOTBTJTk3JUZDdSUwQiVDRjIlOTQlRUUlMjV2JTEyWCUwQyVCQSVBQyVGMCU1RSVGOCpsJTBBTyU4NSUxNyVDMiU5NyVCRiVENCVDOCVDRSVERSVBRCUxMSVDQiU4MHElMkMlM0UlQUIlOUVTJUNEJUM2JUVDJTI1JUQyTCVEMiVFQmQlQjglQkYlOEElRjVCJUM2JTE4JUY5JTkwMUNaJTlEJUJFJTI0TSU5QyU4QTklRjIlREFQJTBCJyUwNnclODIlRUIlRTYlRTIlNUMlMkYlRDclMDclOUUlQkIlQ0MlNUQlRTElRkElQjklMDglQUQuciUyMyU4RSVDMiUxNyVGNUUlN0MhJUYwJUJFMyVCRSUzRV8lQjdvJTg4YSVBNyVEQiVCRSVEM2QlRUIlQTMxWiVFQiVCQiVEMyU5MSVCQSVBMiVCMXolOTQlOEYlREInJUY2JTNEJThFJUFBJTEzJTE5JUIyJUIxJUJFJUIxflYlMDglMkIlQjQlQTJjakolQjN0TyUwMCUwMyUyNW1OJTk3JUYzJTA1JTkzJUVGJTExJTg0JTBCJTdDJTg4JUFFLSU4OSU4RiVBQmJXJTkwTyUyQiUwQW8lOTklMEMlNUUlOTclMENJJUFGSCVEOS4lQjAlM0IlOEYlRUQlMDMlQjZTJUQ2JTVEJUU2aV9zOSVGMypwJUU5JTFCJUZEJUMzJUVCLjdVJTA2JTVFJTE5JUMwJUQxcy4lMTclQTAzdSVFNCUwOSVCMCU3QyU1RSUyQyVFQiUxNSVEQiUxRiUzQyU5RSVCNyU4MCU5MSUzQiVEQmMlQUQlM0RtYSVCQSU4QiUzRVYlQUIlREJ0LiU1QiUxRSUwMSVCQiUwRiVBQiVENSU5RiVDRiVBQSVENSVERCVFNyVFNCU3RiUwQnglQTMlRkMlMDYlQTklMjMlMEElRDYlQzIlQTFfMiUwMCUwMCUwMCUwOXBIWXMlMDAlMDAlMEIlMTMlMDAlMDAlMEIlMTMlMDElMDAlOUElOUMlMTglMDAlMDAlMDAlM0FJREFUOCUxMWMlRkMlRkYlRkYlN0YlMTglMDMlMUElNjAlMDElRjIlM0YlQTAlODkxJTgwJTA0JUZGJTExLSVGOCUxNyU5QkolRTIlMDUlQjFaRCU4MXYlMjZ0JUU3JTgwJUY4JUEzJTgyaCVBMTIlMUElMjAlQTMlMDElMDIlMEYlMDElQkElMjUlMDYlMDAlMTklQzAlMEQlQUVGJUQ1JTNFUyUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQsIHJlcGVhdC14O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXIsIHRvcCBsZWZ0O1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLmFjZV9kYXJrIC5hY2VfZm9sZCB7XG59XG5cbi5hY2VfZm9sZDpob3ZlcntcbiAgICBiYWNrZ3JvdW5kLWltYWdlOlxuICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3BuZywlODlQTkclMEQlMEElMUElMEElMDAlMDAlMDAlMERJSERSJTAwJTAwJTAwJTExJTAwJTAwJTAwJTA5JTA4JTA2JTAwJTAwJTAwJUQ0JUU4JUM3JTBDJTAwJTAwJTAzJTFFaUNDUElDQyUyMFByb2ZpbGUlMDAlMDB4JTAxJTg1VCVERmslRDNQJTE0JUZFJURBZSU5RCVCMCVFMSU4QiUzQWclMTElMDklM0VoJTkxbmRTdEMlOUMlQjZrVyVCQSVDRFolRUE2JUI3IUglOUIlQTZtJTVDJTlBJUM2JTI0JUVEfiVCMCUwNyVEOSU4Qm8lM0ElQzV3JUYxJTA3JTNFJUY5JTA3JTBDJUQ5JTgzbyU3QiU5MiUwRCVDNiUxNGElRjglQUMlODglMjJMJUY2JTIyJUIzJTlFJTlCNE0nUyUwMyVCOSVGNyVCQiVERiVGOSVFRTknJUU3JUU0JTVFJUEwJUY5cVolRDMlMTQlMkYlMEYlMTRVU08lQzUlQzIlRkMlQzQlRTQlMTQlREYlRjIlMDElNUUlMUNDJTJCJUZDaE0lOEIlODYlMTZKJTI2RyU0MCUwRiVEMyVCMnklRUYlQjMlRjMlMEUlMUUlQzZsdCVFRW8lREYlQUIlRkVjJUQ1JTlBJTk1JTBDJTExJUYwJTFDJTIwJUJFJTk0NSVDNCUyMiVFMVklQTBpJTVDJUQ0dCUxMyVFMCVENiU4OSVFRiU5RDE1JUMyJUNETHNYJUE3JTA0JTA5JTFGZzhvYyU4MSVFMSU4QyU4RCUyMyU5NmY0NSU0MCU5QSUwOSVDMiUwNyVDNUIlM0FLJUI4JTQwOCU5OGklRTAlRjMlMEQlRDglQ0UlODElMTQlRTQnJTI2JUE5JTkyLiU4QiUzQyVBQkVSJTJGJUU1ZEUlQjIlMEMlRjYlRjAlMUZzJTgzJUYyXyVCMCVBOCU5NCVFOSU5QiVBRCVFNyUxMCU4RG0lOUElMTlOJUQxJTdDJThBJURFJTFGOSU3RHAlOEMlRTYlMDAlRDUlQzElM0ZfJTE4JUJEQSVCOCU5RHBYNiVFMyVBMzV+QiVDRCUyNCVBRSUxMSUyNiVCRCVFNyVFRXRpJTk4JUVEZSU5QSU5N1kpJTEyJTI1JTFDJTI0JUJDYlQlQUUzbGklRTYlMEIlMDMlODklOUElRTYlRDMlRUQlRjRQJTkyJUIwJTlGNCVCRjQzWSVGMyVFMyVFRFAlOTUlMDQlRUIxJUM1JUY1JUY2S0YlRjQlQkElQkQlRDclREIlOTElOTMlMDclRTM1JTNFJUE3KSVENiU3RiU0MCVGRSVCRCVGNyVGNXIlOEElRTV5JTkyJUYwJUVCJUI0JTFFJThEJUQ1JUY0JTVCJTkyJTNBViVEQiVEQiVFNCVDRCVBNiUyMyVDMyVDNHdRJTNGJTAzSEIlODIlOEUlMUNkKCVFMCU5MUIlMENhJTlBYyVDNCVBQSVGOEwlMTYlMTklMjJKJUE0JUQyaXRUeSVCMjglRDYlM0IoJTkzJTk2JUVEJTFDR3glQzlfJTBFJUI4JTVFJTE2JUY1JTVCJUIyJUI4JUY2JUUwJUZCJTlFJUREJTI1JUQ3JThFJUJDJTE1JTg1JUM1JUI3JUEzJUQ4USVFRCVCNSU4MSVFOSVCQSVCMiUxMyU5QSUxQiU3RnVhJUE1JUEzbiVFMTclQjklRTUlOUIlMUJtJUFCJTBCJTA4USVGRSU4QSVFNSVCMUglNUVlJUNBTyU4MlElRDd1NiVFNiU5MFMlOTclRkN1JTBCJUNGMiU5NCVFRSUyNXYlMTJYJTBDJUJBJUFDJUYwJTVFJUY4KmwlMEFPJTg1JTE3JUMyJTk3JUJGJUQ0JUM4JUNFJURFJUFEJTExJUNCJTgwcSUyQyUzRSVBQiU5RVMlQ0QlQzYlRUMlMjUlRDJMJUQyJUVCZCVCOCVCRiU4QSVGNUIlQzYlMTglRjklOTAxQ1olOUQlQkUlMjRNJTlDJThBOSVGMiVEQVAlMEInJTA2dyU4MiVFQiVFNiVFMiU1QyUyRiVENyUwNyU5RSVCQiVDQyU1RCVFMSVGQSVCOSUwOCVBRC5yJTIzJThFJUMyJTE3JUY1RSU3QyElRjAlQkUzJUJFJTNFXyVCN28lODhhJUE3JURCJUJFJUQzZCVFQiVBMzFaJUVCJUJCJUQzJTkxJUJBJUEyJUIxeiU5NCU4RiVEQiclRjYlM0QlOEUlQUElMTMlMTklQjIlQjElQkUlQjF+ViUwOCUyQiVCNCVBMmNqSiVCM3RPJTAwJTAzJTI1bU4lOTclRjMlMDUlOTMlRUYlMTElODQlMEIlN0MlODglQUUtJTg5JThGJUFCYlclOTBPJTJCJTBBbyU5OSUwQyU1RSU5NyUwQ0klQUZIJUQ5LiVCMCUzQiU4RiVFRCUwMyVCNlMlRDYlNUQlRTZpX3M5JUYzKnAlRTklMUIlRkQlQzMlRUIuN1UlMDYlNUUlMTklQzAlRDFzLiUxNyVBMDN1JUU0JTA5JUIwJTdDJTVFJTJDJUVCJTE1JURCJTFGJTNDJTlFJUI3JTgwJTkxJTNCJURCYyVBRCUzRG1hJUJBJThCJTNFViVBQiVEQnQuJTVCJTFFJTAxJUJCJTBGJUFCJUQ1JTlGJUNGJUFBJUQ1JUREJUU3JUU0JTdGJTBCeCVBMyVGQyUwNiVBOSUyMyUwQSVENiVDMiVBMV8yJTAwJTAwJTAwJTA5cEhZcyUwMCUwMCUwQiUxMyUwMCUwMCUwQiUxMyUwMSUwMCU5QSU5QyUxOCUwMCUwMCUwMCVCNUlEQVQoJTE1JUE1JTkxJTNEJTBFJTAyISUxMCU4NWFjJUUxJTA1JUQ2JUNFJUQ2JUM2JUNFJUQyJUU4JUVEJUNEJURFJUMwJUM2JUQ2Ti4lRTBWJUY4JTNEJTlDYSU4OTFYSCVDMiVCRSVEOXklM0YlOTAhJUU2JTlDJUMzJUJGayVFNSUwMTElQzYtJUY1JUM4TiUwNCVERiVCRCVGRiU4OSVERnQlODNETiU2MCUzRSVGMyVBQiVBMCVERSUxQSU1RGclQkUlMTBRJTk3JTFCJTQwJTlDJUE4byUxMCU4RiU1RSU4MjglQjQlMUIlNjAlODclRjYlMDIlMjYlODUlMUNoJTFFJUMxJTJCJTVCayVGRiU4NiVFRSVCN2olMDklOUElREElOUIlQUNlJUEzJUY5JUVDJURBITklQjQlRDUlQTYlODElODYlODYlOTglQ0MlM0MlNUIlNDAlRkElODElQjMlRTklQ0IlMjMlOTQlQzE2QXpvJTA1JUQ0JUUxJUMxJTk1YSUzQiU4QSclQTAlRTglQ0MlMTclMjIlODUlMUQlQkElMDAlQTIlRkElREMlMEElOTQlRDElRDElOEQlOEIlM0ElODQlMTdCJUM3JTYwJTFBJTI1WiVGQyU4RCUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpLFxuICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3BuZywlODlQTkclMEQlMEElMUElMEElMDAlMDAlMDAlMERJSERSJTAwJTAwJTAwJTA1JTAwJTAwJTAwNyUwOCUwNiUwMCUwMCUwMCVDNCVERCU4MEMlMDAlMDAlMDMlMUVpQ0NQSUNDJTIwUHJvZmlsZSUwMCUwMHglMDElODVUJURGayVEM1AlMTQlRkUlREFlJTlEJUIwJUUxJThCJTNBZyUxMSUwOSUzRWglOTFuZFN0QyU5QyVCNmtXJUJBJUNEWiVFQTYlQjchSCU5QiVBNm0lNUMlOUElQzYlMjQlRUR+JUIwJTA3JUQ5JThCbyUzQSVDNXclRjElMDclM0UlRjklMDclMEMlRDklODNvJTdCJTkyJTBEJUM2JTE0YSVGOCVBQyU4OCUyMkwlRjYlMjIlQjMlOUUlOUI0TSdTJTAzJUI5JUY3JUJCJURGJUY5JUVFOSclRTclRTQlNUUlQTAlRjlxWiVEMyUxNCUyRiUwRiUxNFVTTyVDNSVDMiVGQyVDNCVFNCUxNCVERiVGMiUwMSU1RSUxQ0MlMkIlRkNoTSU4QiU4NiUxNkolMjZHJTQwJTBGJUQzJUIyeSVFRiVCMyVGMyUwRSUxRSVDNmx0JUVFbyVERiVBQiVGRWMlRDUlOUElOTUlMEMlMTElRjAlMUMlMjAlQkUlOTQ1JUM0JTIyJUUxWSVBMGklNUMlRDR0JTEzJUUwJUQ2JTg5JUVGJTlEMTUlQzIlQ0RMc1glQTclMDQlMDklMUZnOG9jJTgxJUUxJThDJThEJTIzJTk2ZjQ1JTQwJTlBJTA5JUMyJTA3JUM1QiUzQUslQjglNDA4JTk4aSVFMCVGMyUwRCVEOCVDRSU4MSUxNCVFNCclMjYlQTklOTIuJThCJTNDJUFCRVIlMkYlRTVkRSVCMiUwQyVGNiVGMCUxRnMlODMlRjJfJUIwJUE4JTk0JUU5JTlCJUFEJUU3JTEwJThEbSU5QSUxOU4lRDElN0MlOEElREUlMUY5JTdEcCU4QyVFNiUwMCVENSVDMSUzRl8lMTglQkRBJUI4JTlEcFg2JUUzJUEzNX5CJUNEJTI0JUFFJTExJTI2JUJEJUU3JUVFdGklOTglRURlJTlBJTk3WSklMTIlMjUlMUMlMjQlQkNiVCVBRTNsaSVFNiUwQiUwMyU4OSU5QSVFNiVEMyVFRCVGNFAlOTIlQjAlOUY0JUJGNDNZJUYzJUUzJUVEUCU5NSUwNCVFQjElQzUlRjUlRjZLRiVGNCVCQSVCRCVENyVEQiU5MSU5MyUwNyVFMzUlM0UlQTcpJUQ2JTdGJTQwJUZFJUJEJUY3JUY1ciU4QSVFNXklOTIlRjAlRUIlQjQlMUUlOEQlRDUlRjQlNUIlOTIlM0FWJURCJURCJUU0JUNEJUE2JTIzJUMzJUM0d1ElM0YlMDNIQiU4MiU4RSUxQ2QoJUUwJTkxQiUwQ2ElOUFjJUM0JUFBJUY4TCUxNiUxOSUyMkolQTQlRDJpdFR5JUIyOCVENiUzQiglOTMlOTYlRUQlMUNHeCVDOV8lMEUlQjglNUUlMTYlRjUlNUIlQjIlQjglRjYlRTAlRkIlOUUlREQlMjUlRDclOEUlQkMlMTUlODUlQzUlQjclQTMlRDhRJUVEJUI1JTgxJUU5JUJBJUIyJTEzJTlBJTFCJTdGdWElQTUlQTNuJUUxNyVCOSVFNSU5QiUxQm0lQUIlMEIlMDhRJUZFJThBJUU1JUIxSCU1RWUlQ0FPJTgyUSVEN3U2JUU2JTkwUyU5NyVGQ3UlMEIlQ0YyJTk0JUVFJTI1diUxMlglMEMlQkElQUMlRjAlNUUlRjgqbCUwQU8lODUlMTclQzIlOTclQkYlRDQlQzglQ0UlREUlQUQlMTElQ0IlODBxJTJDJTNFJUFCJTlFUyVDRCVDNiVFQyUyNSVEMkwlRDIlRUJkJUI4JUJGJThBJUY1QiVDNiUxOCVGOSU5MDFDWiU5RCVCRSUyNE0lOUMlOEE5JUYyJURBUCUwQiclMDZ3JTgyJUVCJUU2JUUyJTVDJTJGJUQ3JTA3JTlFJUJCJUNDJTVEJUUxJUZBJUI5JTA4JUFELnIlMjMlOEUlQzIlMTclRjVFJTdDISVGMCVCRTMlQkUlM0VfJUI3byU4OGElQTclREIlQkUlRDNkJUVCJUEzMVolRUIlQkIlRDMlOTElQkElQTIlQjF6JTk0JThGJURCJyVGNiUzRCU4RSVBQSUxMyUxOSVCMiVCMSVCRSVCMX5WJTA4JTJCJUI0JUEyY2pKJUIzdE8lMDAlMDMlMjVtTiU5NyVGMyUwNSU5MyVFRiUxMSU4NCUwQiU3QyU4OCVBRS0lODklOEYlQUJiVyU5ME8lMkIlMEFvJTk5JTBDJTVFJTk3JTBDSSVBRkglRDkuJUIwJTNCJThGJUVEJTAzJUI2UyVENiU1RCVFNmlfczklRjMqcCVFOSUxQiVGRCVDMyVFQi43VSUwNiU1RSUxOSVDMCVEMXMuJTE3JUEwM3UlRTQlMDklQjAlN0MlNUUlMkMlRUIlMTUlREIlMUYlM0MlOUUlQjclODAlOTElM0IlREJjJUFEJTNEbWElQkElOEIlM0VWJUFCJURCdC4lNUIlMUUlMDElQkIlMEYlQUIlRDUlOUYlQ0YlQUElRDUlREQlRTclRTQlN0YlMEJ4JUEzJUZDJTA2JUE5JTIzJTBBJUQ2JUMyJUExXzIlMDAlMDAlMDAlMDlwSFlzJTAwJTAwJTBCJTEzJTAwJTAwJTBCJTEzJTAxJTAwJTlBJTlDJTE4JTAwJTAwJTAwM0lEQVQ4JTExYyVGQyVGRiVGRiU3RiUzRSUwMyUxQSU2MCUwMSVGMiUzRiVBMyU4OTElODAlMDQlRkZRJTI2JUY4dyVDMCVCNDMlQTElREIlMEMlRTIlOEYlMEElQTIlODUlQ0FoJTgwJThDJTA2JTA4JTNDJTA0JUU4JTk2JTE4JTAwJUEzUyUwRCVDRCVDRiVEOCVDMSU5RCUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQsIHJlcGVhdC14O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXIsIHRvcCBsZWZ0O1xufVxuXG4uYWNlX2RyYWdnaW5nIC5hY2VfY29udGVudCB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuXG4uYWNlX2ZvbGRpbmctZW5hYmxlZCA+IC5hY2VfZ3V0dGVyLWNlbGwge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEzcHg7XG59XG5cbi5hY2VfZm9sZC13aWRnZXQge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIG1hcmdpbjogMCAtMTJweCAxcHggMXB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgd2lkdGg6IDExcHg7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmcsJTg5UE5HJTBEJTBBJTFBJTBBJTAwJTAwJTAwJTBESUhEUiUwMCUwMCUwMCUwNSUwMCUwMCUwMCUwNSUwOCUwNiUwMCUwMCUwMCU4RG8lMjYlRTUlMDAlMDAlMDA0SURBVHglREFlJThBJUIxJTBEJTAwMCUwQyVDMiVGMiUyQ0slOTYlQkMlRDAlOEY5JTgxJTg4SCVFOSVEMCUwRSU5NiVDMCUxMCU5MiUzRSUwMiU4MCU1RSU4MiVFNCVBOSotJUVFc3clQzglQ0MlMTElRUUlOTZ3JUQ4JURDJUU5KkVoJTBDJTE1MSglMDAlMDAlMDAlMDBJRU5EJUFFQiU2MCU4MlwiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciA1cHg7XG5cbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG5cbi5hY2VfZm9sZC13aWRnZXQuZW5kIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZywlODlQTkclMEQlMEElMUElMEElMDAlMDAlMDAlMERJSERSJTAwJTAwJTAwJTA1JTAwJTAwJTAwJTA1JTA4JTA2JTAwJTAwJTAwJThEbyUyNiVFNSUwMCUwMCUwMDRJREFUeCVEQW0lQzclQzElMDklMDAwJTA4QyVEMSU4QyVFQ0UlQzhFKCU4RSVFQyUwMiklMUVaSiVGMSVDMSclMDQlMDdJJUUxJUU1JUVFJUNBTCVGNSVBMiU5OSU5OSUyMiVFMiVENiUxRlUlQjUlRkUwJUQ5eCVBNyUyNld6NSUwRSVENSUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpO1xufVxuXG4uYWNlX2ZvbGQtd2lkZ2V0LmNsb3NlZCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmcsJTg5UE5HJTBEJTBBJTFBJTBBJTAwJTAwJTAwJTBESUhEUiUwMCUwMCUwMCUwMyUwMCUwMCUwMCUwNiUwOCUwNiUwMCUwMCUwMCUwNiVFNSUyNCUwQyUwMCUwMCUwMDlJREFUeCVEQTUlQ0ElQzElMDklMDAwJTA4JTAzJUMwJUFDKiglM0UlMDQlQzElMEQlQkElQjElMjMlQTRVaCVFMCUyMCU4MSVDMCVDQyVGOCU4MiU4MSVBQSVBMiVBQXJHZnIlODglMDglMTElMTElMUMlREQlN0QlRTAlRUUlNUIlRjYlRjYlQ0IlQjglMDVRJTJGJUU5dGFpJUQ5JTAwJTAwJTAwJTAwSUVORCVBRUIlNjAlODJcIik7XG59XG5cbi5hY2VfZm9sZC13aWRnZXQ6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gICAgLW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gICAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICBib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgNHB4O1xufVxuXG4uYWNlX2ZvbGQtd2lkZ2V0OmFjdGl2ZSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgLW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUpO1xuICAgIC1tb3otYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSk7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgIGJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbn1cblxuLmFjZV9mb2xkLXdpZGdldC5pbnZhbGlkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZCNEI0O1xuICAgIGJvcmRlci1jb2xvcjogI0RFNTU1NTtcbn1cblxuLmFjZV9mYWRlLWZvbGQtd2lkZ2V0cyAuYWNlX2ZvbGQtd2lkZ2V0IHtcbiAgICAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlIDAuMDVzO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UgMC4wNXM7XG4gICAgICAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZSAwLjA1cztcbiAgICAgICAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlIDAuMDVzO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UgMC4wNXM7XG4gICAgb3BhY2l0eTogMDtcbn1cblxuLmFjZV9mYWRlLWZvbGQtd2lkZ2V0czpob3ZlciAuYWNlX2ZvbGQtd2lkZ2V0IHtcbiAgICAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAgICAgIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAgICAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICBvcGFjaXR5OjE7XG59XG4iKSxkZWZpbmUoImFjZS9tdWx0aV9zZWxlY3QiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2VfbGlzdCIsImFjZS9yYW5nZSIsImFjZS9zZWxlY3Rpb24iLCJhY2UvbW91c2UvbXVsdGlfc2VsZWN0X2hhbmRsZXIiLCJhY2UvbGliL2V2ZW50IiwiYWNlL2NvbW1hbmRzL211bHRpX3NlbGVjdF9jb21tYW5kcyIsImFjZS9zZWFyY2giLCJhY2UvZWRpdF9zZXNzaW9uIiwiYWNlL2VkaXRvciJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBsKGEsYixjKXtyZXR1cm4gay4kb3B0aW9ucy53cmFwPSEwLGsuJG9wdGlvbnMubmVlZGxlPWIsay4kb3B0aW9ucy5iYWNrd2FyZHM9Yz09LTEsay5maW5kKGEpfWZ1bmN0aW9uIG8oYSxiKXtyZXR1cm4gYS5yb3c9PWIucm93JiZhLmNvbHVtbj09Yi5jb2x1bW59ZnVuY3Rpb24gcChhKXthLiRvbkFkZFJhbmdlPWEuJG9uQWRkUmFuZ2UuYmluZChhKSxhLiRvblJlbW92ZVJhbmdlPWEuJG9uUmVtb3ZlUmFuZ2UuYmluZChhKSxhLiRvbk11bHRpU2VsZWN0PWEuJG9uTXVsdGlTZWxlY3QuYmluZChhKSxhLiRvblNpbmdsZVNlbGVjdD1hLiRvblNpbmdsZVNlbGVjdC5iaW5kKGEpLGIub25TZXNzaW9uQ2hhbmdlLmNhbGwoYSxhKSxhLm9uKCJjaGFuZ2VTZXNzaW9uIixiLm9uU2Vzc2lvbkNoYW5nZS5iaW5kKGEpKSxhLm9uKCJtb3VzZWRvd24iLGcpLGEuY29tbWFuZHMuYWRkQ29tbWFuZHMoaS5kZWZhdWx0Q29tbWFuZHMpLHEoYSl9ZnVuY3Rpb24gcShhKXtmdW5jdGlvbiBlKCl7YyYmKGQuc3R5bGUuY3Vyc29yPSIiLGM9ITEpfXZhciBiPWEudGV4dElucHV0LmdldEVsZW1lbnQoKSxjPSExLGQ9YS5yZW5kZXJlci5jb250ZW50O2guYWRkTGlzdGVuZXIoYiwia2V5ZG93biIsZnVuY3Rpb24oYSl7YS5rZXlDb2RlPT0xOCYmIShhLmN0cmxLZXl8fGEuc2hpZnRLZXl8fGEubWV0YUtleSk/Y3x8KGQuc3R5bGUuY3Vyc29yPSJjcm9zc2hhaXIiLGM9ITApOmMmJihkLnN0eWxlLmN1cnNvcj0iIil9KSxoLmFkZExpc3RlbmVyKGIsImtleXVwIixlKSxoLmFkZExpc3RlbmVyKGIsImJsdXIiLGUpfXZhciBkPWEoIi4vcmFuZ2VfbGlzdCIpLlJhbmdlTGlzdCxlPWEoIi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vc2VsZWN0aW9uIikuU2VsZWN0aW9uLGc9YSgiLi9tb3VzZS9tdWx0aV9zZWxlY3RfaGFuZGxlciIpLm9uTW91c2VEb3duLGg9YSgiLi9saWIvZXZlbnQiKSxpPWEoIi4vY29tbWFuZHMvbXVsdGlfc2VsZWN0X2NvbW1hbmRzIik7Yi5jb21tYW5kcz1pLmRlZmF1bHRDb21tYW5kcy5jb25jYXQoaS5tdWx0aVNlbGVjdENvbW1hbmRzKTt2YXIgaj1hKCIuL3NlYXJjaCIpLlNlYXJjaCxrPW5ldyBqLG09YSgiLi9lZGl0X3Nlc3Npb24iKS5FZGl0U2Vzc2lvbjsoZnVuY3Rpb24oKXt0aGlzLmdldFNlbGVjdGlvbk1hcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2VsZWN0aW9uTWFya2Vyc319KS5jYWxsKG0ucHJvdG90eXBlKSxmdW5jdGlvbigpe3RoaXMucmFuZ2VzPW51bGwsdGhpcy5yYW5nZUxpc3Q9bnVsbCx0aGlzLmFkZFJhbmdlPWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuO2lmKCF0aGlzLmluTXVsdGlTZWxlY3RNb2RlJiZ0aGlzLnJhbmdlQ291bnQ9PTApe3ZhciBjPXRoaXMudG9PcmllbnRlZFJhbmdlKCk7aWYoYS5pbnRlcnNlY3RzKGMpKXJldHVybiBifHx0aGlzLmZyb21PcmllbnRlZFJhbmdlKGEpO3RoaXMucmFuZ2VMaXN0LmFkZChjKSx0aGlzLiRvbkFkZFJhbmdlKGMpfWEuY3Vyc29yfHwoYS5jdXJzb3I9YS5lbmQpO3ZhciBkPXRoaXMucmFuZ2VMaXN0LmFkZChhKTtyZXR1cm4gdGhpcy4kb25BZGRSYW5nZShhKSxkLmxlbmd0aCYmdGhpcy4kb25SZW1vdmVSYW5nZShkKSx0aGlzLnJhbmdlQ291bnQ+MSYmIXRoaXMuaW5NdWx0aVNlbGVjdE1vZGUmJih0aGlzLl9lbWl0KCJtdWx0aVNlbGVjdCIpLHRoaXMuaW5NdWx0aVNlbGVjdE1vZGU9ITAsdGhpcy5zZXNzaW9uLiR1bmRvU2VsZWN0PSExLHRoaXMucmFuZ2VMaXN0LmF0dGFjaCh0aGlzLnNlc3Npb24pKSxifHx0aGlzLmZyb21PcmllbnRlZFJhbmdlKGEpfSx0aGlzLnRvU2luZ2xlUmFuZ2U9ZnVuY3Rpb24oYSl7YT1hfHx0aGlzLnJhbmdlc1swXTt2YXIgYj10aGlzLnJhbmdlTGlzdC5yZW1vdmVBbGwoKTtiLmxlbmd0aCYmdGhpcy4kb25SZW1vdmVSYW5nZShiKSxhJiZ0aGlzLmZyb21PcmllbnRlZFJhbmdlKGEpfSx0aGlzLnN1YnN0cmFjdFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucmFuZ2VMaXN0LnN1YnN0cmFjdFBvaW50KGEpO2lmKGIpcmV0dXJuIHRoaXMuJG9uUmVtb3ZlUmFuZ2UoYiksYlswXX0sdGhpcy5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yYW5nZUxpc3QubWVyZ2UoKTthLmxlbmd0aD90aGlzLiRvblJlbW92ZVJhbmdlKGEpOnRoaXMucmFuZ2VzWzBdJiZ0aGlzLmZyb21PcmllbnRlZFJhbmdlKHRoaXMucmFuZ2VzWzBdKX0sdGhpcy4kb25BZGRSYW5nZT1mdW5jdGlvbihhKXt0aGlzLnJhbmdlQ291bnQ9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLmxlbmd0aCx0aGlzLnJhbmdlcy51bnNoaWZ0KGEpLHRoaXMuX2VtaXQoImFkZFJhbmdlIix7cmFuZ2U6YX0pfSx0aGlzLiRvblJlbW92ZVJhbmdlPWZ1bmN0aW9uKGEpe3RoaXMucmFuZ2VDb3VudD10aGlzLnJhbmdlTGlzdC5yYW5nZXMubGVuZ3RoO2lmKHRoaXMucmFuZ2VDb3VudD09MSYmdGhpcy5pbk11bHRpU2VsZWN0TW9kZSl7dmFyIGI9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLnBvcCgpO2EucHVzaChiKSx0aGlzLnJhbmdlQ291bnQ9MH1mb3IodmFyIGM9YS5sZW5ndGg7Yy0tOyl7dmFyIGQ9dGhpcy5yYW5nZXMuaW5kZXhPZihhW2NdKTt0aGlzLnJhbmdlcy5zcGxpY2UoZCwxKX10aGlzLl9lbWl0KCJyZW1vdmVSYW5nZSIse3JhbmdlczphfSksdGhpcy5yYW5nZUNvdW50PT0wJiZ0aGlzLmluTXVsdGlTZWxlY3RNb2RlJiYodGhpcy5pbk11bHRpU2VsZWN0TW9kZT0hMSx0aGlzLl9lbWl0KCJzaW5nbGVTZWxlY3QiKSx0aGlzLnNlc3Npb24uJHVuZG9TZWxlY3Q9ITAsdGhpcy5yYW5nZUxpc3QuZGV0YWNoKHRoaXMuc2Vzc2lvbikpLGI9Ynx8dGhpcy5yYW5nZXNbMF0sYiYmIWIuaXNFcXVhbCh0aGlzLmdldFJhbmdlKCkpJiZ0aGlzLmZyb21PcmllbnRlZFJhbmdlKGIpfSx0aGlzLiRpbml0UmFuZ2VMaXN0PWZ1bmN0aW9uKCl7aWYodGhpcy5yYW5nZUxpc3QpcmV0dXJuO3RoaXMucmFuZ2VMaXN0PW5ldyBkLHRoaXMucmFuZ2VzPVtdLHRoaXMucmFuZ2VDb3VudD0wfSx0aGlzLmdldEFsbFJhbmdlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlTGlzdC5yYW5nZXMuY29uY2F0KCl9LHRoaXMuc3BsaXRJbnRvTGluZXM9ZnVuY3Rpb24oKXtpZih0aGlzLnJhbmdlQ291bnQ+MSl7dmFyIGE9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLGI9YVthLmxlbmd0aC0xXSxjPWUuZnJvbVBvaW50cyhhWzBdLnN0YXJ0LGIuZW5kKTt0aGlzLnRvU2luZ2xlUmFuZ2UoKSx0aGlzLnNldFNlbGVjdGlvblJhbmdlKGMsYi5jdXJzb3I9PWIuc3RhcnQpfWVsc2V7dmFyIGM9dGhpcy5nZXRSYW5nZSgpLGQ9Yy5zdGFydC5yb3csZj1jLmVuZC5yb3c7aWYoZD09ZilyZXR1cm47dmFyIGc9W10saD10aGlzLmdldExpbmVSYW5nZShkLCEwKTtoLnN0YXJ0LmNvbHVtbj1jLnN0YXJ0LmNvbHVtbixnLnB1c2goaCk7Zm9yKHZhciBpPWQrMTtpPGY7aSsrKWcucHVzaCh0aGlzLmdldExpbmVSYW5nZShpLCEwKSk7aD10aGlzLmdldExpbmVSYW5nZShmLCEwKSxoLmVuZC5jb2x1bW49Yy5lbmQuY29sdW1uLGcucHVzaChoKSxnLmZvckVhY2godGhpcy5hZGRSYW5nZSx0aGlzKX19LHRoaXMudG9nZ2xlQmxvY2tTZWxlY3Rpb249ZnVuY3Rpb24oKXtpZih0aGlzLnJhbmdlQ291bnQ+MSl7dmFyIGE9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLGI9YVthLmxlbmd0aC0xXSxjPWUuZnJvbVBvaW50cyhhWzBdLnN0YXJ0LGIuZW5kKTt0aGlzLnRvU2luZ2xlUmFuZ2UoKSx0aGlzLnNldFNlbGVjdGlvblJhbmdlKGMsYi5jdXJzb3I9PWIuc3RhcnQpfWVsc2V7dmFyIGQ9dGhpcy5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnNlbGVjdGlvbkxlYWQpLGY9dGhpcy5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnNlbGVjdGlvbkFuY2hvciksZz10aGlzLnJlY3Rhbmd1bGFyUmFuZ2VCbG9jayhkLGYpO2cuZm9yRWFjaCh0aGlzLmFkZFJhbmdlLHRoaXMpfX0sdGhpcy5yZWN0YW5ndWxhclJhbmdlQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGY9YS5jb2x1bW48Yi5jb2x1bW47aWYoZil2YXIgZz1hLmNvbHVtbixoPWIuY29sdW1uO2Vsc2UgdmFyIGc9Yi5jb2x1bW4saD1hLmNvbHVtbjt2YXIgaT1hLnJvdzxiLnJvdztpZihpKXZhciBqPWEucm93LGs9Yi5yb3c7ZWxzZSB2YXIgaj1iLnJvdyxrPWEucm93O2c8MCYmKGc9MCksajwwJiYoaj0wKSxqPT1rJiYoYz0hMCk7Zm9yKHZhciBsPWo7bDw9aztsKyspe3ZhciBtPWUuZnJvbVBvaW50cyh0aGlzLnNlc3Npb24uc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGwsZyksdGhpcy5zZXNzaW9uLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihsLGgpKTtpZihtLmlzRW1wdHkoKSl7aWYobiYmbyhtLmVuZCxuKSlicmVhazt2YXIgbj1tLmVuZH1tLmN1cnNvcj1mP20uc3RhcnQ6bS5lbmQsZC5wdXNoKG0pfWkmJmQucmV2ZXJzZSgpO2lmKCFjKXt2YXIgcD1kLmxlbmd0aC0xO3doaWxlKGRbcF0uaXNFbXB0eSgpJiZwPjApcC0tO2lmKHA+MCl7dmFyIHE9MDt3aGlsZShkW3FdLmlzRW1wdHkoKSlxKyt9Zm9yKHZhciByPXA7cj49cTtyLS0pZFtyXS5pc0VtcHR5KCkmJmQuc3BsaWNlKHIsMSl9cmV0dXJuIGR9fS5jYWxsKGYucHJvdG90eXBlKTt2YXIgbj1hKCIuL2VkaXRvciIpLkVkaXRvcjsoZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVNlbGVjdGlvbk1hcmtlcnM9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX0sdGhpcy5hZGRTZWxlY3Rpb25NYXJrZXI9ZnVuY3Rpb24oYSl7YS5jdXJzb3J8fChhLmN1cnNvcj1hLmVuZCk7dmFyIGI9dGhpcy5nZXRTZWxlY3Rpb25TdHlsZSgpO3JldHVybiBhLm1hcmtlcj10aGlzLnNlc3Npb24uYWRkTWFya2VyKGEsImFjZV9zZWxlY3Rpb24iLGIpLHRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2Vycy5wdXNoKGEpLHRoaXMuc2Vzc2lvbi5zZWxlY3Rpb25NYXJrZXJDb3VudD10aGlzLnNlc3Npb24uJHNlbGVjdGlvbk1hcmtlcnMubGVuZ3RoLGF9LHRoaXMucmVtb3ZlU2VsZWN0aW9uTWFya2VyPWZ1bmN0aW9uKGEpe2lmKCFhLm1hcmtlcilyZXR1cm47dGhpcy5zZXNzaW9uLnJlbW92ZU1hcmtlcihhLm1hcmtlcik7dmFyIGI9dGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzLmluZGV4T2YoYSk7YiE9LTEmJnRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2Vycy5zcGxpY2UoYiwxKSx0aGlzLnNlc3Npb24uc2VsZWN0aW9uTWFya2VyQ291bnQ9dGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzLmxlbmd0aH0sdGhpcy5yZW1vdmVTZWxlY3Rpb25NYXJrZXJzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2Vycztmb3IodmFyIGM9YS5sZW5ndGg7Yy0tOyl7dmFyIGQ9YVtjXTtpZighZC5tYXJrZXIpY29udGludWU7dGhpcy5zZXNzaW9uLnJlbW92ZU1hcmtlcihkLm1hcmtlcik7dmFyIGU9Yi5pbmRleE9mKGQpO2UhPS0xJiZiLnNwbGljZShlLDEpfXRoaXMuc2Vzc2lvbi5zZWxlY3Rpb25NYXJrZXJDb3VudD1iLmxlbmd0aH0sdGhpcy4kb25BZGRSYW5nZT1mdW5jdGlvbihhKXt0aGlzLmFkZFNlbGVjdGlvbk1hcmtlcihhLnJhbmdlKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX0sdGhpcy4kb25SZW1vdmVSYW5nZT1mdW5jdGlvbihhKXt0aGlzLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnMoYS5yYW5nZXMpLHRoaXMucmVuZGVyZXIudXBkYXRlQ3Vyc29yKCksdGhpcy5yZW5kZXJlci51cGRhdGVCYWNrTWFya2VycygpfSx0aGlzLiRvbk11bHRpU2VsZWN0PWZ1bmN0aW9uKGEpe2lmKHRoaXMuaW5NdWx0aVNlbGVjdE1vZGUpcmV0dXJuO3RoaXMuaW5NdWx0aVNlbGVjdE1vZGU9ITAsdGhpcy5zZXRTdHlsZSgibXVsdGlzZWxlY3QiKSx0aGlzLmtleUJpbmRpbmcuYWRkS2V5Ym9hcmRIYW5kbGVyKGkua2V5Ym9hcmRIYW5kbGVyKSx0aGlzLmNvbW1hbmRzLm9uKCJleGVjIix0aGlzLiRvbk11bHRpU2VsZWN0RXhlYyksdGhpcy5yZW5kZXJlci51cGRhdGVDdXJzb3IoKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUJhY2tNYXJrZXJzKCl9LHRoaXMuJG9uU2luZ2xlU2VsZWN0PWZ1bmN0aW9uKGEpe2lmKHRoaXMuc2Vzc2lvbi5tdWx0aVNlbGVjdC5pblZpcnR1YWxNb2RlKXJldHVybjt0aGlzLmluTXVsdGlTZWxlY3RNb2RlPSExLHRoaXMudW5zZXRTdHlsZSgibXVsdGlzZWxlY3QiKSx0aGlzLmtleUJpbmRpbmcucmVtb3ZlS2V5Ym9hcmRIYW5kbGVyKGkua2V5Ym9hcmRIYW5kbGVyKSx0aGlzLmNvbW1hbmRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImV4ZWMiLHRoaXMuJG9uTXVsdGlTZWxlY3RFeGVjKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX0sdGhpcy4kb25NdWx0aVNlbGVjdEV4ZWM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5jb21tYW5kLGM9YS5lZGl0b3I7aWYoIWMubXVsdGlTZWxlY3QpcmV0dXJuO2IubXVsdGlTZWxlY3RBY3Rpb24/Yi5tdWx0aVNlbGVjdEFjdGlvbj09ImZvckVhY2giP2MuZm9yRWFjaFNlbGVjdGlvbihiLGEuYXJncyk6Yi5tdWx0aVNlbGVjdEFjdGlvbj09InNpbmdsZSI/KGMuZXhpdE11bHRpU2VsZWN0TW9kZSgpLGIuZXhlYyhjLGEuYXJnc3x8e30pKTpiLm11bHRpU2VsZWN0QWN0aW9uKGMsYS5hcmdzfHx7fSk6KGIuZXhlYyhjLGEuYXJnc3x8e30pLGMubXVsdGlTZWxlY3QuYWRkUmFuZ2UoYy5tdWx0aVNlbGVjdC50b09yaWVudGVkUmFuZ2UoKSksYy5tdWx0aVNlbGVjdC5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzKCkpLGEucHJldmVudERlZmF1bHQoKX0sdGhpcy5mb3JFYWNoU2VsZWN0aW9uPWZ1bmN0aW9uKGEsYil7aWYodGhpcy5pblZpcnR1YWxTZWxlY3Rpb25Nb2RlKXJldHVybjt2YXIgYz10aGlzLnNlc3Npb24sZD10aGlzLnNlbGVjdGlvbixlPWQucmFuZ2VMaXN0LGc9ZC5fZXZlbnRSZWdpc3RyeTtkLl9ldmVudFJlZ2lzdHJ5PXt9O3ZhciBoPW5ldyBmKGMpO3RoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZT0hMDtmb3IodmFyIGk9ZS5yYW5nZXMubGVuZ3RoO2ktLTspaC5mcm9tT3JpZW50ZWRSYW5nZShlLnJhbmdlc1tpXSksdGhpcy5zZWxlY3Rpb249Yy5zZWxlY3Rpb249aCxhLmV4ZWModGhpcyxifHx7fSksaC50b09yaWVudGVkUmFuZ2UoZS5yYW5nZXNbaV0pO2guZGV0YWNoKCksdGhpcy5zZWxlY3Rpb249Yy5zZWxlY3Rpb249ZCx0aGlzLmluVmlydHVhbFNlbGVjdGlvbk1vZGU9ITEsZC5fZXZlbnRSZWdpc3RyeT1nLGQubWVyZ2VPdmVybGFwcGluZ1JhbmdlcygpLHRoaXMub25DdXJzb3JDaGFuZ2UoKSx0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKCl9LHRoaXMuZXhpdE11bHRpU2VsZWN0TW9kZT1mdW5jdGlvbigpe2lmKHRoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZSlyZXR1cm47dGhpcy5tdWx0aVNlbGVjdC50b1NpbmdsZVJhbmdlKCl9LHRoaXMuZ2V0Q29weVRleHQ9ZnVuY3Rpb24oKXt2YXIgYT0iIjtpZih0aGlzLmluTXVsdGlTZWxlY3RNb2RlKXt2YXIgYj10aGlzLm11bHRpU2VsZWN0LnJhbmdlTGlzdC5yYW5nZXM7YT1bXTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKylhLnB1c2godGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZShiW2NdKSk7YT1hLmpvaW4odGhpcy5zZXNzaW9uLmdldERvY3VtZW50KCkuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX1lbHNlIHRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKXx8KGE9dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZSh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpKTtyZXR1cm4gYX0sdGhpcy5vblBhc3RlPWZ1bmN0aW9uKGEpe3RoaXMuX2VtaXQoInBhc3RlIixhKTtpZighdGhpcy5pbk11bHRpU2VsZWN0TW9kZSlyZXR1cm4gdGhpcy5pbnNlcnQoYSk7dmFyIGI9YS5zcGxpdCgvXHJcbnxccnxcbi8pLGM9dGhpcy5zZWxlY3Rpb24ucmFuZ2VMaXN0LnJhbmdlcztpZihiLmxlbmd0aD5jLmxlbmd0aHx8Yi5sZW5ndGg8PTJ8fCFiWzFdKXJldHVybiB0aGlzLmNvbW1hbmRzLmV4ZWMoImluc2VydHN0cmluZyIsdGhpcyxhKTtmb3IodmFyIGQ9Yy5sZW5ndGg7ZC0tOyl7dmFyIGU9Y1tkXTtlLmlzRW1wdHkoKXx8dGhpcy5zZXNzaW9uLnJlbW92ZShlKSx0aGlzLnNlc3Npb24uaW5zZXJ0KGUuc3RhcnQsYltkXSl9fSx0aGlzLmZpbmRBbGw9ZnVuY3Rpb24oYSxiLGMpe2I9Ynx8e30sYi5uZWVkbGU9YXx8Yi5uZWVkbGUsdGhpcy4kc2VhcmNoLnNldChiKTt2YXIgZD10aGlzLiRzZWFyY2guZmluZEFsbCh0aGlzLnNlc3Npb24pO2lmKCFkLmxlbmd0aClyZXR1cm4gMDt0aGlzLiRibG9ja1Njcm9sbGluZys9MTt2YXIgZT10aGlzLm11bHRpU2VsZWN0O2N8fGUudG9TaW5nbGVSYW5nZShkWzBdKTtmb3IodmFyIGY9ZC5sZW5ndGg7Zi0tOyllLmFkZFJhbmdlKGRbZl0sITApO3JldHVybiB0aGlzLiRibG9ja1Njcm9sbGluZy09MSxkLmxlbmd0aH0sdGhpcy5zZWxlY3RNb3JlTGluZXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnNlbGVjdGlvbi50b09yaWVudGVkUmFuZ2UoKSxkPWMuY3Vyc29yPT1jLmVuZCxmPXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oYy5jdXJzb3IpO3RoaXMuc2VsZWN0aW9uLiRkZXNpcmVkQ29sdW1uJiYoZi5jb2x1bW49dGhpcy5zZWxlY3Rpb24uJGRlc2lyZWRDb2x1bW4pO3ZhciBnPXRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oZi5yb3crYSxmLmNvbHVtbik7aWYoIWMuaXNFbXB0eSgpKXZhciBoPXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oZD9jLmVuZDpjLnN0YXJ0KSxpPXRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oaC5yb3crYSxoLmNvbHVtbik7ZWxzZSB2YXIgaT1nO2lmKGQpe3ZhciBqPWUuZnJvbVBvaW50cyhnLGkpO2ouY3Vyc29yPWouc3RhcnR9ZWxzZXt2YXIgaj1lLmZyb21Qb2ludHMoaSxnKTtqLmN1cnNvcj1qLmVuZH1qLmRlc2lyZWRDb2x1bW49Zi5jb2x1bW47aWYoIXRoaXMuc2VsZWN0aW9uLmluTXVsdGlTZWxlY3RNb2RlKXRoaXMuc2VsZWN0aW9uLmFkZFJhbmdlKGMpO2Vsc2UgaWYoYil2YXIgaz1jLmN1cnNvcjt0aGlzLnNlbGVjdGlvbi5hZGRSYW5nZShqKSxrJiZ0aGlzLnNlbGVjdGlvbi5zdWJzdHJhY3RQb2ludChrKX0sdGhpcy50cmFuc3Bvc2VTZWxlY3Rpb25zPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuc2Vzc2lvbixjPWIubXVsdGlTZWxlY3QsZD1jLnJhbmdlcztmb3IodmFyIGU9ZC5sZW5ndGg7ZS0tOyl7dmFyIGY9ZFtlXTtpZihmLmlzRW1wdHkoKSl7dmFyIGc9Yi5nZXRXb3JkUmFuZ2UoZi5zdGFydC5yb3csZi5zdGFydC5jb2x1bW4pO2Yuc3RhcnQucm93PWcuc3RhcnQucm93LGYuc3RhcnQuY29sdW1uPWcuc3RhcnQuY29sdW1uLGYuZW5kLnJvdz1nLmVuZC5yb3csZi5lbmQuY29sdW1uPWcuZW5kLmNvbHVtbn19Yy5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzKCk7dmFyIGg9W107Zm9yKHZhciBlPWQubGVuZ3RoO2UtLTspe3ZhciBmPWRbZV07aC51bnNoaWZ0KGIuZ2V0VGV4dFJhbmdlKGYpKX1hPDA/aC51bnNoaWZ0KGgucG9wKCkpOmgucHVzaChoLnNoaWZ0KCkpO2Zvcih2YXIgZT1kLmxlbmd0aDtlLS07KXt2YXIgZj1kW2VdLGc9Zi5jbG9uZSgpO2IucmVwbGFjZShmLGhbZV0pLGYuc3RhcnQucm93PWcuc3RhcnQucm93LGYuc3RhcnQuY29sdW1uPWcuc3RhcnQuY29sdW1ufX0sdGhpcy5zZWxlY3RNb3JlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5zZXNzaW9uLGQ9Yy5tdWx0aVNlbGVjdCxlPWQudG9PcmllbnRlZFJhbmdlKCk7aWYoZS5pc0VtcHR5KCkpe3ZhciBlPWMuZ2V0V29yZFJhbmdlKGUuc3RhcnQucm93LGUuc3RhcnQuY29sdW1uKTtlLmN1cnNvcj1lLmVuZCx0aGlzLm11bHRpU2VsZWN0LmFkZFJhbmdlKGUpfXZhciBmPWMuZ2V0VGV4dFJhbmdlKGUpLGc9bChjLGYsYSk7ZyYmKGcuY3Vyc29yPWE9PS0xP2cuc3RhcnQ6Zy5lbmQsdGhpcy5tdWx0aVNlbGVjdC5hZGRSYW5nZShnKSksYiYmdGhpcy5tdWx0aVNlbGVjdC5zdWJzdHJhY3RQb2ludChlLmN1cnNvcil9fSkuY2FsbChuLnByb3RvdHlwZSksYi5vblNlc3Npb25DaGFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zZXNzaW9uO2IubXVsdGlTZWxlY3R8fChiLiRzZWxlY3Rpb25NYXJrZXJzPVtdLGIuc2VsZWN0aW9uLiRpbml0UmFuZ2VMaXN0KCksYi5tdWx0aVNlbGVjdD1iLnNlbGVjdGlvbiksdGhpcy5tdWx0aVNlbGVjdD1iLm11bHRpU2VsZWN0O3ZhciBjPWEub2xkU2Vzc2lvbjtjJiYoYy5tdWx0aVNlbGVjdCYmYy5tdWx0aVNlbGVjdC5lZGl0b3I9PXRoaXMmJihjLm11bHRpU2VsZWN0LmVkaXRvcj1udWxsKSxiLm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFkZFJhbmdlIix0aGlzLiRvbkFkZFJhbmdlKSxiLm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlbW92ZVJhbmdlIix0aGlzLiRvblJlbW92ZVJhbmdlKSxiLm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm11bHRpU2VsZWN0Iix0aGlzLiRvbk11bHRpU2VsZWN0KSxiLm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNpbmdsZVNlbGVjdCIsdGhpcy4kb25TaW5nbGVTZWxlY3QpKSxiLm11bHRpU2VsZWN0Lm9uKCJhZGRSYW5nZSIsdGhpcy4kb25BZGRSYW5nZSksYi5tdWx0aVNlbGVjdC5vbigicmVtb3ZlUmFuZ2UiLHRoaXMuJG9uUmVtb3ZlUmFuZ2UpLGIubXVsdGlTZWxlY3Qub24oIm11bHRpU2VsZWN0Iix0aGlzLiRvbk11bHRpU2VsZWN0KSxiLm11bHRpU2VsZWN0Lm9uKCJzaW5nbGVTZWxlY3QiLHRoaXMuJG9uU2luZ2xlU2VsZWN0KSx0aGlzLmluTXVsdGlTZWxlY3RNb2RlIT1iLnNlbGVjdGlvbi5pbk11bHRpU2VsZWN0TW9kZSYmKGIuc2VsZWN0aW9uLmluTXVsdGlTZWxlY3RNb2RlP3RoaXMuJG9uTXVsdGlTZWxlY3QoKTp0aGlzLiRvblNpbmdsZVNlbGVjdCgpKX0sYi5NdWx0aVNlbGVjdD1wfSksZGVmaW5lKCJhY2UvcmFuZ2VfbGlzdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbigpe3RoaXMucmFuZ2VzPVtdfTsoZnVuY3Rpb24oKXt0aGlzLmNvbXBhcmVQb2ludHM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yb3ctYi5yb3d8fGEuY29sdW1uLWIuY29sdW1ufSx0aGlzLnBvaW50SW5kZXg9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnJhbmdlcztmb3IodmFyIGQ9Ynx8MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXSxmPXRoaXMuY29tcGFyZVBvaW50cyhhLGUuZW5kKTtpZihmPjApY29udGludWU7cmV0dXJuIGY9PTA/ZDooZj10aGlzLmNvbXBhcmVQb2ludHMoYSxlLnN0YXJ0KSxmPj0wP2Q6LWQtMSl9cmV0dXJuLWQtMX0sdGhpcy5hZGQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wb2ludEluZGV4KGEuc3RhcnQpO2I8MCYmKGI9LWItMSk7dmFyIGM9dGhpcy5wb2ludEluZGV4KGEuZW5kLGIpO3JldHVybiBjPDA/Yz0tYy0xOmMrKyx0aGlzLnJhbmdlcy5zcGxpY2UoYixjLWIsYSl9LHRoaXMuYWRkTGlzdD1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IodmFyIGM9YS5sZW5ndGg7Yy0tOyliLnB1c2guY2FsbChiLHRoaXMuYWRkKGFbY10pKTtyZXR1cm4gYn0sdGhpcy5zdWJzdHJhY3RQb2ludD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLnBvaW50SW5kZXgoYSk7aWYoYj49MClyZXR1cm4gdGhpcy5yYW5nZXMuc3BsaWNlKGIsMSl9LHRoaXMubWVyZ2U9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXMucmFuZ2VzLGM9YlswXSxkO2Zvcih2YXIgZT0xO2U8Yi5sZW5ndGg7ZSsrKXtkPWMsYz1iW2VdO3ZhciBmPXRoaXMuY29tcGFyZVBvaW50cyhkLmVuZCxjLnN0YXJ0KTtpZihmPDApY29udGludWU7aWYoZj09MCYmIWQuaXNFbXB0eSgpJiYhYy5pc0VtcHR5KCkpY29udGludWU7dGhpcy5jb21wYXJlUG9pbnRzKGQuZW5kLGMuZW5kKTwwJiYoZC5lbmQucm93PWMuZW5kLnJvdyxkLmVuZC5jb2x1bW49Yy5lbmQuY29sdW1uKSxiLnNwbGljZShlLDEpLGEucHVzaChjKSxjPWQsZS0tfXJldHVybiBhfSx0aGlzLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucG9pbnRJbmRleCh7cm93OmEsY29sdW1uOmJ9KT49MH0sdGhpcy5jb250YWluc1BvaW50PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBvaW50SW5kZXgoYSk+PTB9LHRoaXMucmFuZ2VBdFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucG9pbnRJbmRleChhKTtpZihiPj0wKXJldHVybiB0aGlzLnJhbmdlc1tiXX0sdGhpcy5jbGlwUm93cz1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMucmFuZ2VzO2lmKGNbMF0uc3RhcnQucm93PmJ8fGNbYy5sZW5ndGgtMV0uc3RhcnQucm93PGEpcmV0dXJuW107dmFyIGQ9dGhpcy5wb2ludEluZGV4KHtyb3c6YSxjb2x1bW46MH0pO2Q8MCYmKGQ9LWQtMSk7dmFyIGU9dGhpcy5wb2ludEluZGV4KHtyb3c6Yixjb2x1bW46MH0sZCk7ZTwwJiYoZT0tZS0xKTt2YXIgZj1bXTtmb3IodmFyIGc9ZDtnPGU7ZysrKWYucHVzaChjW2ddKTtyZXR1cm4gZn0sdGhpcy5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZXMuc3BsaWNlKDAsdGhpcy5yYW5nZXMubGVuZ3RoKX0sdGhpcy5hdHRhY2g9ZnVuY3Rpb24oYSl7dGhpcy5zZXNzaW9uJiZ0aGlzLmRldGFjaCgpLHRoaXMuc2Vzc2lvbj1hLHRoaXMub25DaGFuZ2U9dGhpcy4kb25DaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24ub24oImNoYW5nZSIsdGhpcy5vbkNoYW5nZSl9LHRoaXMuZGV0YWNoPWZ1bmN0aW9uKCl7aWYoIXRoaXMuc2Vzc2lvbilyZXR1cm47dGhpcy5zZXNzaW9uLnJlbW92ZUxpc3RlbmVyKCJjaGFuZ2UiLHRoaXMub25DaGFuZ2UpLHRoaXMuc2Vzc2lvbj1udWxsfSx0aGlzLiRvbkNoYW5nZT1mdW5jdGlvbihhKXt2YXIgYj1hLmRhdGEucmFuZ2U7aWYoYS5kYXRhLmFjdGlvblswXT09ImkiKXZhciBjPWIuc3RhcnQsZD1iLmVuZDtlbHNlIHZhciBkPWIuc3RhcnQsYz1iLmVuZDt2YXIgZT1jLnJvdyxmPWQucm93LGc9Zi1lLGg9LWMuY29sdW1uK2QuY29sdW1uLGk9dGhpcy5yYW5nZXM7Zm9yKHZhciBqPTAsaz1pLmxlbmd0aDtqPGs7aisrKXt2YXIgbD1pW2pdO2lmKGwuZW5kLnJvdzxlKWNvbnRpbnVlO2lmKGwuc3RhcnQucm93PmUpYnJlYWs7bC5zdGFydC5yb3c9PWUmJmwuc3RhcnQuY29sdW1uPj1jLmNvbHVtbiYmKGwuc3RhcnQuY29sdW1uKz1oLGwuc3RhcnQucm93Kz1nKSxsLmVuZC5yb3c9PWUmJmwuZW5kLmNvbHVtbj49Yy5jb2x1bW4mJihsLmVuZC5jb2x1bW4rPWgsbC5lbmQucm93Kz1nKX1pZihnIT0wJiZqPGspZm9yKDtqPGs7aisrKXt2YXIgbD1pW2pdO2wuc3RhcnQucm93Kz1nLGwuZW5kLnJvdys9Z319fSkuY2FsbChkLnByb3RvdHlwZSksYi5SYW5nZUxpc3Q9ZH0pLGRlZmluZSgiYWNlL21vdXNlL211bHRpX3NlbGVjdF9oYW5kbGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9ldmVudCJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBlKGEsYil7cmV0dXJuIGEucm93PT1iLnJvdyYmYS5jb2x1bW49PWIuY29sdW1ufWZ1bmN0aW9uIGYoYSl7dmFyIGI9YS5kb21FdmVudCxjPWIuYWx0S2V5LGY9Yi5zaGlmdEtleSxnPWEuZ2V0QWNjZWxLZXkoKSxoPWEuZ2V0QnV0dG9uKCk7aWYoIWcmJiFjKXtpZihhLmVkaXRvci5pbk11bHRpU2VsZWN0TW9kZSlpZihoPT0wKWEuZWRpdG9yLmV4aXRNdWx0aVNlbGVjdE1vZGUoKTtlbHNlIGlmKGg9PTIpe3ZhciBpPWEuZWRpdG9yLGo9aS5zZWxlY3Rpb24uaXNFbXB0eSgpO2kudGV4dElucHV0Lm9uQ29udGV4dE1lbnUoe3g6YS5jbGllbnRYLHk6YS5jbGllbnRZfSxqKSxkLmNhcHR1cmUoaS5jb250YWluZXIsZnVuY3Rpb24oKXt9LGkudGV4dElucHV0Lm9uQ29udGV4dE1lbnVDbG9zZSksYS5zdG9wKCl9cmV0dXJufXZhciBpPWEuZWRpdG9yLGs9aS5zZWxlY3Rpb24sbD1pLmluTXVsdGlTZWxlY3RNb2RlLG09YS5nZXREb2N1bWVudFBvc2l0aW9uKCksbj1rLmdldEN1cnNvcigpLG89YS5pblNlbGVjdGlvbigpfHxrLmlzRW1wdHkoKSYmZShtLG4pLHA9YS54LHE9YS55LHI9ZnVuY3Rpb24oYSl7cD1hLmNsaWVudFgscT1hLmNsaWVudFl9LHM9ZnVuY3Rpb24oKXt2YXIgYT1pLnJlbmRlcmVyLnBpeGVsVG9TY3JlZW5Db29yZGluYXRlcyhwLHEpLGI9dC5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oYS5yb3csYS5jb2x1bW4pO2lmKGUodixhKSYmZShiLGsuc2VsZWN0aW9uTGVhZCkpcmV0dXJuO3Y9YSxpLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbihiKSxpLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGkucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKSxpLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnMoeSkseT1rLnJlY3Rhbmd1bGFyUmFuZ2VCbG9jayh2LHUpLHkuZm9yRWFjaChpLmFkZFNlbGVjdGlvbk1hcmtlcixpKSxpLnVwZGF0ZVNlbGVjdGlvbk1hcmtlcnMoKX0sdD1pLnNlc3Npb24sdT1pLnJlbmRlcmVyLnBpeGVsVG9TY3JlZW5Db29yZGluYXRlcyhwLHEpLHY9dTtpZihnJiYhZiYmIWMmJmg9PTApe2lmKCFsJiZvKXJldHVybjtpZighbCl7dmFyIHc9ay50b09yaWVudGVkUmFuZ2UoKTtpLmFkZFNlbGVjdGlvbk1hcmtlcih3KX12YXIgeD1rLnJhbmdlTGlzdC5yYW5nZUF0UG9pbnQobSk7ZC5jYXB0dXJlKGkuY29udGFpbmVyLGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3ZhciBhPWsudG9PcmllbnRlZFJhbmdlKCk7eCYmYS5pc0VtcHR5KCkmJmUoeC5jdXJzb3IsYS5jdXJzb3IpP2suc3Vic3RyYWN0UG9pbnQoYS5jdXJzb3IpOih3JiYoaS5yZW1vdmVTZWxlY3Rpb25NYXJrZXIodyksay5hZGRSYW5nZSh3KSksay5hZGRSYW5nZShhKSl9KX1lbHNlIGlmKCFmJiZjJiZoPT0wKXthLnN0b3AoKSxsJiYhZz9rLnRvU2luZ2xlUmFuZ2UoKTohbCYmZyYmay5hZGRSYW5nZSgpLGsubW92ZUN1cnNvclRvUG9zaXRpb24obSksay5jbGVhclNlbGVjdGlvbigpO3ZhciB5PVtdLHo9ZnVuY3Rpb24oYSl7Y2xlYXJJbnRlcnZhbChCKSxpLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnMoeSk7Zm9yKHZhciBiPTA7Yjx5Lmxlbmd0aDtiKyspay5hZGRSYW5nZSh5W2JdKX0sQT1zO2QuY2FwdHVyZShpLmNvbnRhaW5lcixyLHopO3ZhciBCPXNldEludGVydmFsKGZ1bmN0aW9uKCl7QSgpfSwyMCk7cmV0dXJuIGEucHJldmVudERlZmF1bHQoKX19dmFyIGQ9YSgiLi4vbGliL2V2ZW50Iik7Yi5vbk1vdXNlRG93bj1mfSksZGVmaW5lKCJhY2UvY29tbWFuZHMvbXVsdGlfc2VsZWN0X2NvbW1hbmRzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2tleWJvYXJkL2hhc2hfaGFuZGxlciJdLGZ1bmN0aW9uKGEsYixjKXtiLmRlZmF1bHRDb21tYW5kcz1be25hbWU6ImFkZEN1cnNvckFib3ZlIixleGVjOmZ1bmN0aW9uKGEpe2Euc2VsZWN0TW9yZUxpbmVzKC0xKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1VcCIsbWFjOiJDdHJsLUFsdC1VcCJ9LHJlYWRvbmx5OiEwfSx7bmFtZToiYWRkQ3Vyc29yQmVsb3ciLGV4ZWM6ZnVuY3Rpb24oYSl7YS5zZWxlY3RNb3JlTGluZXMoMSl9LGJpbmRLZXk6e3dpbjoiQ3RybC1BbHQtRG93biIsbWFjOiJDdHJsLUFsdC1Eb3duIn0scmVhZG9ubHk6ITB9LHtuYW1lOiJhZGRDdXJzb3JBYm92ZVNraXBDdXJyZW50IixleGVjOmZ1bmN0aW9uKGEpe2Euc2VsZWN0TW9yZUxpbmVzKC0xLCEwKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1TaGlmdC1VcCIsbWFjOiJDdHJsLUFsdC1TaGlmdC1VcCJ9LHJlYWRvbmx5OiEwfSx7bmFtZToiYWRkQ3Vyc29yQmVsb3dTa2lwQ3VycmVudCIsZXhlYzpmdW5jdGlvbihhKXthLnNlbGVjdE1vcmVMaW5lcygxLCEwKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1TaGlmdC1Eb3duIixtYWM6IkN0cmwtQWx0LVNoaWZ0LURvd24ifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE1vcmVCZWZvcmUiLGV4ZWM6ZnVuY3Rpb24oYSl7YS5zZWxlY3RNb3JlKC0xKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1MZWZ0IixtYWM6IkN0cmwtQWx0LUxlZnQifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE1vcmVBZnRlciIsZXhlYzpmdW5jdGlvbihhKXthLnNlbGVjdE1vcmUoMSl9LGJpbmRLZXk6e3dpbjoiQ3RybC1BbHQtUmlnaHQiLG1hYzoiQ3RybC1BbHQtUmlnaHQifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE5leHRCZWZvcmUiLGV4ZWM6ZnVuY3Rpb24oYSl7YS5zZWxlY3RNb3JlKC0xLCEwKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1TaGlmdC1MZWZ0IixtYWM6IkN0cmwtQWx0LVNoaWZ0LUxlZnQifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE5leHRBZnRlciIsZXhlYzpmdW5jdGlvbihhKXthLnNlbGVjdE1vcmUoMSwhMCl9LGJpbmRLZXk6e3dpbjoiQ3RybC1BbHQtU2hpZnQtUmlnaHQiLG1hYzoiQ3RybC1BbHQtU2hpZnQtUmlnaHQifSxyZWFkb25seTohMH0se25hbWU6InNwbGl0SW50b0xpbmVzIixleGVjOmZ1bmN0aW9uKGEpe2EubXVsdGlTZWxlY3Quc3BsaXRJbnRvTGluZXMoKX0sYmluZEtleTp7d2luOiJDdHJsLVNoaWZ0LUwiLG1hYzoiQ3RybC1TaGlmdC1MIn0scmVhZG9ubHk6ITB9XSxiLm11bHRpU2VsZWN0Q29tbWFuZHM9W3tuYW1lOiJzaW5nbGVTZWxlY3Rpb24iLGJpbmRLZXk6ImVzYyIsZXhlYzpmdW5jdGlvbihhKXthLmV4aXRNdWx0aVNlbGVjdE1vZGUoKX0scmVhZG9ubHk6ITAsaXNBdmFpbGFibGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5NdWx0aVNlbGVjdE1vZGV9fV07dmFyIGQ9YSgiLi4va2V5Ym9hcmQvaGFzaF9oYW5kbGVyIikuSGFzaEhhbmRsZXI7Yi5rZXlib2FyZEhhbmRsZXI9bmV3IGQoYi5tdWx0aVNlbGVjdENvbW1hbmRzKX0pLGRlZmluZSgiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvY29uZmlnIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGY9YSgiLi4vY29uZmlnIiksZz1mdW5jdGlvbihiLGMsZCxlKXt0aGlzLmNoYW5nZUxpc3RlbmVyPXRoaXMuY2hhbmdlTGlzdGVuZXIuYmluZCh0aGlzKTtpZihmLmdldCgicGFja2FnZWQiKSl0aGlzLiR3b3JrZXI9bmV3IFdvcmtlcihmLmdldCgid29ya2VyUGF0aCIpKyIvIitjKTtlbHNle3ZhciBnO3R5cGVvZiBhLnN1cHBvcnRzIT0idW5kZWZpbmVkIiYmYS5zdXBwb3J0cy5pbmRleE9mKCJ1Y2pzMi1waW5mLTAiKT49MD9nPWEubmFtZVRvVXJsKCJhY2Uvd29ya2VyL3dvcmtlcl9zb3VyY2VtaW50Iik6Zz10aGlzLiRub3JtYWxpemVQYXRoKGEubmFtZVRvVXJsKCJhY2Uvd29ya2VyL3dvcmtlciIsbnVsbCwiXyIpKSx0aGlzLiR3b3JrZXI9bmV3IFdvcmtlcihnKTt2YXIgaD17fTtmb3IodmFyIGk9MDtpPGIubGVuZ3RoO2krKyl7dmFyIGo9YltpXSxrPXRoaXMuJG5vcm1hbGl6ZVBhdGgoYS5uYW1lVG9VcmwoaixudWxsLCJfIikucmVwbGFjZSgvLmpzJC8sIiIpKTtoW2pdPWt9fXRoaXMuJHdvcmtlci5wb3N0TWVzc2FnZSh7aW5pdDohMCx0bG5zOmgsbW9kdWxlOmQsY2xhc3NuYW1lOmV9KSx0aGlzLmNhbGxiYWNrSWQ9MSx0aGlzLmNhbGxiYWNrcz17fTt2YXIgbD10aGlzO3RoaXMuJHdvcmtlci5vbmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IHdpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coYSksYX0sdGhpcy4kd29ya2VyLm9ubWVzc2FnZT1mdW5jdGlvbihhKXt2YXIgYj1hLmRhdGE7c3dpdGNoKGIudHlwZSl7Y2FzZSJsb2ciOndpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coYi5kYXRhKTticmVhaztjYXNlImV2ZW50IjpsLl9lbWl0KGIubmFtZSx7ZGF0YTpiLmRhdGF9KTticmVhaztjYXNlImNhbGwiOnZhciBjPWwuY2FsbGJhY2tzW2IuaWRdO2MmJihjKGIuZGF0YSksZGVsZXRlIGwuY2FsbGJhY2tzW2IuaWRdKX19fTsoZnVuY3Rpb24oKXtkLmltcGxlbWVudCh0aGlzLGUpLHRoaXMuJG5vcm1hbGl6ZVBhdGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKC9eW2Etel0rOlwvXC9bXlwvXSsvLCIiKSxhPWxvY2F0aW9uLnByb3RvY29sKyIvLyIrbG9jYXRpb24uaG9zdCsoYS5jaGFyQXQoMCk9PSIvIj8iIjpsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cL1teXC9dKiQvLCIiKSkrIi8iK2EucmVwbGFjZSgvXltcL10rLywiIiksYX0sdGhpcy50ZXJtaW5hdGU9ZnVuY3Rpb24oKXt0aGlzLl9lbWl0KCJ0ZXJtaW5hdGUiLHt9KSx0aGlzLiR3b3JrZXIudGVybWluYXRlKCksdGhpcy4kd29ya2VyPW51bGwsdGhpcy4kZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy5jaGFuZ2VMaXN0ZW5lciksdGhpcy4kZG9jPW51bGx9LHRoaXMuc2VuZD1mdW5jdGlvbihhLGIpe3RoaXMuJHdvcmtlci5wb3N0TWVzc2FnZSh7Y29tbWFuZDphLGFyZ3M6Yn0pfSx0aGlzLmNhbGw9ZnVuY3Rpb24oYSxiLGMpe2lmKGMpe3ZhciBkPXRoaXMuY2FsbGJhY2tJZCsrO3RoaXMuY2FsbGJhY2tzW2RdPWMsYi5wdXNoKGQpfXRoaXMuc2VuZChhLGIpfSx0aGlzLmVtaXQ9ZnVuY3Rpb24oYSxiKXt0cnl7dGhpcy4kd29ya2VyLnBvc3RNZXNzYWdlKHtldmVudDphLGRhdGE6e2RhdGE6Yi5kYXRhfX0pfWNhdGNoKGMpe319LHRoaXMuYXR0YWNoVG9Eb2N1bWVudD1mdW5jdGlvbihhKXt0aGlzLiRkb2MmJnRoaXMudGVybWluYXRlKCksdGhpcy4kZG9jPWEsdGhpcy5jYWxsKCJzZXRWYWx1ZSIsW2EuZ2V0VmFsdWUoKV0pLGEub24oImNoYW5nZSIsdGhpcy5jaGFuZ2VMaXN0ZW5lcil9LHRoaXMuY2hhbmdlTGlzdGVuZXI9ZnVuY3Rpb24oYSl7YS5yYW5nZT17c3RhcnQ6YS5kYXRhLnJhbmdlLnN0YXJ0LGVuZDphLmRhdGEucmFuZ2UuZW5kfSx0aGlzLmVtaXQoImNoYW5nZSIsYSl9fSkuY2FsbChnLnByb3RvdHlwZSksYi5Xb3JrZXJDbGllbnQ9Z30pLGRlZmluZSgiYWNlL2tleWJvYXJkL3N0YXRlX2hhbmRsZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZShhKXt0aGlzLmtleW1hcHBpbmc9dGhpcy4kYnVpbGRLZXltYXBwaW5nUmVnZXgoYSl9dmFyIGQ9ITE7ZS5wcm90b3R5cGU9eyRidWlsZEtleW1hcHBpbmdSZWdleDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSl0aGlzLiRidWlsZEJpbmRpbmdzUmVnZXgoYVtiXSk7cmV0dXJuIGF9LCRidWlsZEJpbmRpbmdzUmVnZXg6ZnVuY3Rpb24oYSl7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Eua2V5P2Eua2V5PW5ldyBSZWdFeHAoIl4iK2Eua2V5KyIkIik6QXJyYXkuaXNBcnJheShhLnJlZ2V4KT8oImtleSJpbiBhfHwoYS5rZXk9bmV3IFJlZ0V4cCgiXiIrYS5yZWdleFsxXSsiJCIpKSxhLnJlZ2V4PW5ldyBSZWdFeHAoYS5yZWdleC5qb2luKCIiKSsiJCIpKTphLnJlZ2V4JiYoYS5yZWdleD1uZXcgUmVnRXhwKGEucmVnZXgrIiQiKSl9KX0sJGNvbXBvc2VCdWZmZXI6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5zdGF0ZT09bnVsbHx8YS5idWZmZXI9PW51bGwpYS5zdGF0ZT0ic3RhcnQiLGEuYnVmZmVyPSIiO3ZhciBlPVtdO2ImMSYmZS5wdXNoKCJjdHJsIiksYiY4JiZlLnB1c2goImNvbW1hbmQiKSxiJjImJmUucHVzaCgib3B0aW9uIiksYiY0JiZlLnB1c2goInNoaWZ0IiksYyYmZS5wdXNoKGMpO3ZhciBmPWUuam9pbigiLSIpLGc9YS5idWZmZXIrZjtiIT0yJiYoYS5idWZmZXI9Zyk7dmFyIGg9e2J1ZmZlclRvVXNlOmcsc3ltYm9saWNOYW1lOmZ9O3JldHVybiBkJiYoaC5rZXlJZGVudGlmaWVyPWQua2V5SWRlbnRpZmllciksaH0sJGZpbmQ6ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXt9O3JldHVybiB0aGlzLmtleW1hcHBpbmdbYS5zdGF0ZV0uc29tZShmdW5jdGlvbihpKXt2YXIgajtpZihpLmtleSYmIWkua2V5LnRlc3QoYykpcmV0dXJuITE7aWYoaS5yZWdleCYmIShqPWkucmVnZXguZXhlYyhiKSkpcmV0dXJuITE7aWYoaS5tYXRjaCYmIWkubWF0Y2goYixlLGYsYyxnKSlyZXR1cm4hMTtpZihpLmRpc2FsbG93TWF0Y2hlcylmb3IodmFyIGs9MDtrPGkuZGlzYWxsb3dNYXRjaGVzLmxlbmd0aDtrKyspaWYoISFqW2kuZGlzYWxsb3dNYXRjaGVzW2tdXSlyZXR1cm4hMTtpZihpLmV4ZWMpe2guY29tbWFuZD1pLmV4ZWM7aWYoaS5wYXJhbXMpe3ZhciBsO2guYXJncz17fSxpLnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EubWF0Y2ghPW51bGwmJmohPW51bGw/bD1qW2EubWF0Y2hdfHxhLmRlZmF1bHRWYWx1ZTpsPWEuZGVmYXVsdFZhbHVlLGEudHlwZT09PSJudW1iZXIiJiYobD1wYXJzZUludChsKSksaC5hcmdzW2EubmFtZV09bH0pfWEuYnVmZmVyPSIifXJldHVybiBpLnRoZW4mJihhLnN0YXRlPWkudGhlbixhLmJ1ZmZlcj0iIiksaC5jb21tYW5kPT1udWxsJiYoaC5jb21tYW5kPSJudWxsIiksZCYmY29uc29sZS5sb2coIktleWJvYXJkU3RhdGVNYXBwZXIjZmluZCIsaSksITB9KSxoLmNvbW1hbmQ/aDooYS5idWZmZXI9IiIsITEpfSxoYW5kbGVLZXlib2FyZDpmdW5jdGlvbihhLGIsYyxlLGYpe2I9PS0xJiYoYj0wKTtpZihiPT0wfHxjIT0iIiYmYyE9U3RyaW5nLmZyb21DaGFyQ29kZSgwKSl7dmFyIGc9dGhpcy4kY29tcG9zZUJ1ZmZlcihhLGIsYyxmKSxoPWcuYnVmZmVyVG9Vc2UsaT1nLnN5bWJvbGljTmFtZSxqPWcua2V5SWRlbnRpZmllcjtyZXR1cm4gZz10aGlzLiRmaW5kKGEsaCxpLGIsYyxqKSxkJiZjb25zb2xlLmxvZygiS2V5Ym9hcmRTdGF0ZU1hcHBlciNtYXRjaCIsaCxpLGcpLGd9cmV0dXJuIG51bGx9fSxiLm1hdGNoQ2hhcmFjdGVyT25seT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYj09MD8hMDpiPT00JiZjLmxlbmd0aD09MT8hMDohMX0sYi5TdGF0ZUhhbmRsZXI9ZX0pLGRlZmluZSgiYWNlL3BsYWNlaG9sZGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL2xpYi9vb3AiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9yYW5nZSIpLlJhbmdlLGU9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixmPWEoIi4vbGliL29vcCIpLGc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXRoaXM7dGhpcy5sZW5ndGg9Yix0aGlzLnNlc3Npb249YSx0aGlzLmRvYz1hLmdldERvY3VtZW50KCksdGhpcy5tYWluQ2xhc3M9ZSx0aGlzLm90aGVyc0NsYXNzPWYsdGhpcy4kb25VcGRhdGU9dGhpcy5vblVwZGF0ZS5iaW5kKHRoaXMpLHRoaXMuZG9jLm9uKCJjaGFuZ2UiLHRoaXMuJG9uVXBkYXRlKSx0aGlzLiRvdGhlcnM9ZCx0aGlzLiRvbkN1cnNvckNoYW5nZT1mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnLm9uQ3Vyc29yQ2hhbmdlKCl9KX0sdGhpcy4kcG9zPWM7dmFyIGg9YS5nZXRVbmRvTWFuYWdlcigpLiR1bmRvU3RhY2t8fGEuZ2V0VW5kb01hbmFnZXIoKS4kdW5kb3N0YWNrfHx7bGVuZ3RoOi0xfTt0aGlzLiR1bmRvU3RhY2tEZXB0aD1oLmxlbmd0aCx0aGlzLnNldHVwKCksYS5zZWxlY3Rpb24ub24oImNoYW5nZUN1cnNvciIsdGhpcy4kb25DdXJzb3JDaGFuZ2UpfTsoZnVuY3Rpb24oKXtmLmltcGxlbWVudCh0aGlzLGUpLHRoaXMuc2V0dXA9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9dGhpcy5kb2MsYz10aGlzLnNlc3Npb24sZT10aGlzLiRwb3M7dGhpcy5wb3M9Yi5jcmVhdGVBbmNob3IoZS5yb3csZS5jb2x1bW4pLHRoaXMubWFya2VySWQ9Yy5hZGRNYXJrZXIobmV3IGQoZS5yb3csZS5jb2x1bW4sZS5yb3csZS5jb2x1bW4rdGhpcy5sZW5ndGgpLHRoaXMubWFpbkNsYXNzLG51bGwsITEpLHRoaXMucG9zLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGIpe2MucmVtb3ZlTWFya2VyKGEubWFya2VySWQpLGEubWFya2VySWQ9Yy5hZGRNYXJrZXIobmV3IGQoYi52YWx1ZS5yb3csYi52YWx1ZS5jb2x1bW4sYi52YWx1ZS5yb3csYi52YWx1ZS5jb2x1bW4rYS5sZW5ndGgpLGEubWFpbkNsYXNzLG51bGwsITEpfSksdGhpcy5vdGhlcnM9W10sdGhpcy4kb3RoZXJzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9Yi5jcmVhdGVBbmNob3IoYy5yb3csYy5jb2x1bW4pO2Eub3RoZXJzLnB1c2goZCl9KSxjLnNldFVuZG9TZWxlY3QoITEpfSx0aGlzLnNob3dPdGhlck1hcmtlcnM9ZnVuY3Rpb24oKXtpZih0aGlzLm90aGVyc0FjdGl2ZSlyZXR1cm47dmFyIGE9dGhpcy5zZXNzaW9uLGI9dGhpczt0aGlzLm90aGVyc0FjdGl2ZT0hMCx0aGlzLm90aGVycy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2MubWFya2VySWQ9YS5hZGRNYXJrZXIobmV3IGQoYy5yb3csYy5jb2x1bW4sYy5yb3csYy5jb2x1bW4rYi5sZW5ndGgpLGIub3RoZXJzQ2xhc3MsbnVsbCwhMSksYy5vbigiY2hhbmdlIixmdW5jdGlvbihlKXthLnJlbW92ZU1hcmtlcihjLm1hcmtlcklkKSxjLm1hcmtlcklkPWEuYWRkTWFya2VyKG5ldyBkKGUudmFsdWUucm93LGUudmFsdWUuY29sdW1uLGUudmFsdWUucm93LGUudmFsdWUuY29sdW1uK2IubGVuZ3RoKSxiLm90aGVyc0NsYXNzLG51bGwsITEpfSl9KX0sdGhpcy5oaWRlT3RoZXJNYXJrZXJzPWZ1bmN0aW9uKCl7aWYoIXRoaXMub3RoZXJzQWN0aXZlKXJldHVybjt0aGlzLm90aGVyc0FjdGl2ZT0hMTtmb3IodmFyIGE9MDthPHRoaXMub3RoZXJzLmxlbmd0aDthKyspdGhpcy5zZXNzaW9uLnJlbW92ZU1hcmtlcih0aGlzLm90aGVyc1thXS5tYXJrZXJJZCl9LHRoaXMub25VcGRhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhLGM9Yi5yYW5nZTtpZihjLnN0YXJ0LnJvdyE9PWMuZW5kLnJvdylyZXR1cm47aWYoYy5zdGFydC5yb3chPT10aGlzLnBvcy5yb3cpcmV0dXJuO2lmKHRoaXMuJHVwZGF0aW5nKXJldHVybjt0aGlzLiR1cGRhdGluZz0hMDt2YXIgZT1iLmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9jLmVuZC5jb2x1bW4tYy5zdGFydC5jb2x1bW46Yy5zdGFydC5jb2x1bW4tYy5lbmQuY29sdW1uO2lmKGMuc3RhcnQuY29sdW1uPj10aGlzLnBvcy5jb2x1bW4mJmMuc3RhcnQuY29sdW1uPD10aGlzLnBvcy5jb2x1bW4rdGhpcy5sZW5ndGgrMSl7dmFyIGY9Yy5zdGFydC5jb2x1bW4tdGhpcy5wb3MuY29sdW1uO3RoaXMubGVuZ3RoKz1lO2lmKCF0aGlzLnNlc3Npb24uJGZyb21VbmRvKXtpZihiLmFjdGlvbj09PSJpbnNlcnRUZXh0Iilmb3IodmFyIGc9dGhpcy5vdGhlcnMubGVuZ3RoLTE7Zz49MDtnLS0pe3ZhciBoPXRoaXMub3RoZXJzW2ddLGk9e3JvdzpoLnJvdyxjb2x1bW46aC5jb2x1bW4rZn07aC5yb3c9PT1jLnN0YXJ0LnJvdyYmYy5zdGFydC5jb2x1bW48aC5jb2x1bW4mJihpLmNvbHVtbis9ZSksdGhpcy5kb2MuaW5zZXJ0KGksYi50ZXh0KX1lbHNlIGlmKGIuYWN0aW9uPT09InJlbW92ZVRleHQiKWZvcih2YXIgZz10aGlzLm90aGVycy5sZW5ndGgtMTtnPj0wO2ctLSl7dmFyIGg9dGhpcy5vdGhlcnNbZ10saT17cm93Omgucm93LGNvbHVtbjpoLmNvbHVtbitmfTtoLnJvdz09PWMuc3RhcnQucm93JiZjLnN0YXJ0LmNvbHVtbjxoLmNvbHVtbiYmKGkuY29sdW1uKz1lKSx0aGlzLmRvYy5yZW1vdmUobmV3IGQoaS5yb3csaS5jb2x1bW4saS5yb3csaS5jb2x1bW4tZSkpfWMuc3RhcnQuY29sdW1uPT09dGhpcy5wb3MuY29sdW1uJiZiLmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5wb3Muc2V0UG9zaXRpb24odGhpcy5wb3Mucm93LHRoaXMucG9zLmNvbHVtbi1lKTtmb3IodmFyIGE9MDthPHRoaXMub3RoZXJzLmxlbmd0aDthKyspe3ZhciBiPXRoaXMub3RoZXJzW2FdLGQ9e3JvdzpiLnJvdyxjb2x1bW46Yi5jb2x1bW4tZX07Yi5yb3c9PT1jLnN0YXJ0LnJvdyYmYy5zdGFydC5jb2x1bW48Yi5jb2x1bW4mJihkLmNvbHVtbis9ZSksYi5zZXRQb3NpdGlvbihkLnJvdyxkLmNvbHVtbil9fS5iaW5kKHRoaXMpLDApOmMuc3RhcnQuY29sdW1uPT09dGhpcy5wb3MuY29sdW1uJiZiLmFjdGlvbj09PSJyZW1vdmVUZXh0IiYmc2V0VGltZW91dChmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy5vdGhlcnMubGVuZ3RoO2ErKyl7dmFyIGI9dGhpcy5vdGhlcnNbYV07Yi5yb3c9PT1jLnN0YXJ0LnJvdyYmYy5zdGFydC5jb2x1bW48Yi5jb2x1bW4mJmIuc2V0UG9zaXRpb24oYi5yb3csYi5jb2x1bW4tZSl9fS5iaW5kKHRoaXMpLDApfXRoaXMucG9zLl9lbWl0KCJjaGFuZ2UiLHt2YWx1ZTp0aGlzLnBvc30pO2Zvcih2YXIgZz0wO2c8dGhpcy5vdGhlcnMubGVuZ3RoO2crKyl0aGlzLm90aGVyc1tnXS5fZW1pdCgiY2hhbmdlIix7dmFsdWU6dGhpcy5vdGhlcnNbZ119KX10aGlzLiR1cGRhdGluZz0hMX0sdGhpcy5vbkN1cnNvckNoYW5nZT1mdW5jdGlvbihhKXtpZih0aGlzLiR1cGRhdGluZylyZXR1cm47dmFyIGI9dGhpcy5zZXNzaW9uLnNlbGVjdGlvbi5nZXRDdXJzb3IoKTtiLnJvdz09PXRoaXMucG9zLnJvdyYmYi5jb2x1bW4+PXRoaXMucG9zLmNvbHVtbiYmYi5jb2x1bW48PXRoaXMucG9zLmNvbHVtbit0aGlzLmxlbmd0aD8odGhpcy5zaG93T3RoZXJNYXJrZXJzKCksdGhpcy5fZW1pdCgiY3Vyc29yRW50ZXIiLGEpKToodGhpcy5oaWRlT3RoZXJNYXJrZXJzKCksdGhpcy5fZW1pdCgiY3Vyc29yTGVhdmUiLGEpKX0sdGhpcy5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24ucmVtb3ZlTWFya2VyKHRoaXMubWFya2VySWQpLHRoaXMuaGlkZU90aGVyTWFya2VycygpLHRoaXMuZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25VcGRhdGUpLHRoaXMuc2Vzc2lvbi5zZWxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlQ3Vyc29yIix0aGlzLiRvbkN1cnNvckNoYW5nZSksdGhpcy5wb3MuZGV0YWNoKCk7Zm9yKHZhciBhPTA7YTx0aGlzLm90aGVycy5sZW5ndGg7YSsrKXRoaXMub3RoZXJzW2FdLmRldGFjaCgpO3RoaXMuc2Vzc2lvbi5zZXRVbmRvU2VsZWN0KCEwKX0sdGhpcy5jYW5jZWw9ZnVuY3Rpb24oKXtpZih0aGlzLiR1bmRvU3RhY2tEZXB0aD09PS0xKXRocm93IEVycm9yKCJDYW5jZWxpbmcgcGxhY2Vob2xkZXJzIG9ubHkgc3VwcG9ydGVkIHdpdGggdW5kbyBtYW5hZ2VyIGF0dGFjaGVkIHRvIHNlc3Npb24uIik7dmFyIGE9dGhpcy5zZXNzaW9uLmdldFVuZG9NYW5hZ2VyKCksYj0oYS4kdW5kb1N0YWNrfHxhLiR1bmRvc3RhY2spLmxlbmd0aC10aGlzLiR1bmRvU3RhY2tEZXB0aDtmb3IodmFyIGM9MDtjPGI7YysrKWEudW5kbyghMCl9fSkuY2FsbChnLnByb3RvdHlwZSksYi5QbGFjZUhvbGRlcj1nfSksZGVmaW5lKCJhY2UvdGhlbWUvdGV4dG1hdGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJ0ZXh0IWFjZS90aGVtZS90ZXh0bWF0ZS5jc3MiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMSxiLmNzc0NsYXNzPSJhY2UtdG0iLGIuY3NzVGV4dD1hKCJ0ZXh0IS4vdGV4dG1hdGUuY3NzIik7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0pLGRlZmluZSgidGV4dCFhY2UvdGhlbWUvdGV4dG1hdGUuY3NzIixbXSwiLmFjZS10bSAuYWNlX2VkaXRvciB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYigxNTksIDE1OSwgMTU5KTtcbn1cblxuLmFjZS10bSAuYWNlX2VkaXRvci5hY2VfZm9jdXMge1xuICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO1xufVxuXG4uYWNlLXRtIC5hY2VfZ3V0dGVyIHtcbiAgYmFja2dyb3VuZDogI2U4ZThlODtcbiAgY29sb3I6ICMzMzM7XG59XG5cbi5hY2UtdG0gLmFjZV9wcmludF9tYXJnaW4ge1xuICB3aWR0aDogMXB4O1xuICBiYWNrZ3JvdW5kOiAjZThlOGU4O1xufVxuXG4uYWNlLXRtIC5hY2VfZm9sZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzZCNzJFNjtcbn1cblxuLmFjZS10bSAuYWNlX3RleHQtbGF5ZXIge1xuICBjdXJzb3I6IHRleHQ7XG59XG5cbi5hY2UtdG0gLmFjZV9jdXJzb3Ige1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkIGJsYWNrO1xufVxuXG4uYWNlLXRtIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUge1xuICBib3JkZXItbGVmdDogMHB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7XG59XG4gICAgICAgIFxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9pbnZpc2libGUge1xuICBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N0b3JhZ2UsXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2tleXdvcmQge1xuICBjb2xvcjogYmx1ZTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudCB7XG4gIGNvbG9yOiByZ2IoMTk3LCA2LCAxMSk7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2J1aWxkaW4ge1xuICBjb2xvcjogcmdiKDg4LCA3MiwgMjQ2KTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2Uge1xuICBjb2xvcjogcmdiKDg4LCA5MiwgMjQ2KTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGlicmFyeSB7XG4gIGNvbG9yOiByZ2IoNiwgMTUwLCAxNCk7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfaW52YWxpZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjEpO1xuICBjb2xvcjogcmVkO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHtcbiAgY29sb3I6IHJnYig2MCwgNzYsIDExNCk7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQge1xuICBjb2xvcjogcmdiKDYsIDE1MCwgMTQpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX3R5cGUsXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX2NsYXNzIHtcbiAgY29sb3I6IHJnYigxMDksIDEyMSwgMjIyKTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7XG4gIGNvbG9yOiByZ2IoMTA0LCAxMTgsIDEzNSk7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3RyaW5nIHtcbiAgY29sb3I6IHJnYigzLCAxMDYsIDcpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQge1xuICBjb2xvcjogcmdiKDc2LCAxMzYsIDEwNyk7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHtcbiAgY29sb3I6IHJnYigwLCAxMDIsIDI1NSk7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jLmFjZV90YWcge1xuICBjb2xvcjogcmdiKDEyOCwgMTU5LCAxOTEpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHtcbiAgY29sb3I6IHJnYigwLCAwLCAyMDUpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3ZhcmlhYmxlIHtcbiAgY29sb3I6IHJnYig0OSwgMTMyLCAxNDkpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3htbF9wZSB7XG4gIGNvbG9yOiByZ2IoMTA0LCAxMDQsIDkxKTtcbn1cblxuLmFjZS10bSAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24ge1xuICBjb2xvcjogIzAwMDBBMjtcbn1cblxuLmFjZS10bSAuYWNlX21hcmt1cC5hY2VfbWFya3VwaW5lIHtcbiAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO1xufVxuXG4uYWNlLXRtIC5hY2VfbWFya3VwLmFjZV9oZWFkaW5nIHtcbiAgY29sb3I6IHJnYigxMiwgNywgMjU1KTtcbn1cblxuLmFjZS10bSAuYWNlX21hcmt1cC5hY2VfbGlzdCB7XG4gIGNvbG9yOnJnYigxODUsIDYsIDE0NCk7XG59XG5cbi5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiByZ2IoMTgxLCAyMTMsIDI1NSk7XG59XG4uYWNlLXRtLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHtcbiAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cbi5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHtcbiAgYmFja2dyb3VuZDogcmdiKDI1MiwgMjU1LCAwKTtcbn1cblxuLmFjZS10bSAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0YWNrIHtcbiAgYmFja2dyb3VuZDogcmdiKDE2NCwgMjI5LCAxMDEpO1xufVxuXG4uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7XG4gIG1hcmdpbjogLTFweCAwIDAgLTFweDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE5MiwgMTkyLCAxOTIpO1xufVxuXG4uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDcpO1xufVxuLmFjZS10bSAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZXtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yIDogI2RjZGNkYztcbn1cblxuLmFjZS10bSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQge1xuICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1NSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDAsIDIwMCwgMjUwKTtcbn1cblxuLmFjZS10bSAuYWNlX21ldGEuYWNlX3RhZyB7XG4gIGNvbG9yOnJnYigwLCA1MCwgMTk4KTtcbn1cblxuLmFjZS10bSAuYWNlX3N0cmluZy5hY2VfcmVnZXgge1xuICBjb2xvcjogcmdiKDI1NSwgMCwgMClcbn0iKTsKICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgd2luZG93LnJlcXVpcmUoWyJhY2UvYWNlIl0sIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICBhICYmIGEuY29uZmlnLmluaXQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5hY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5hY2UgPSB7fTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYSkgaWYgKGEuaGFzT3duUHJvcGVydHkoa2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgYWNlW2tleV0gPSBhW2tleV07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSkoKTsKICAgICAgICA=]]></data>
	</file>
	<file>
	  <filename>/ace/src/keybinding-emacs.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2Uva2V5Ym9hcmQvZW1hY3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSIsImFjZS9rZXlib2FyZC9oYXNoX2hhbmRsZXIiLCJhY2UvbGliL2tleXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL2RvbSIpLGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnNjcm9sbGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9TWF0aC5mbG9vcigoYSt0aGlzLnNjcm9sbExlZnQtYy5sZWZ0LXRoaXMuJHBhZGRpbmctZC5nZXRQYWdlU2Nyb2xsTGVmdCgpKS90aGlzLmNoYXJhY3RlcldpZHRoKSxmPU1hdGguZmxvb3IoKGIrdGhpcy5zY3JvbGxUb3AtYy50b3AtZC5nZXRQYWdlU2Nyb2xsVG9wKCkpL3RoaXMubGluZUhlaWdodCk7cmV0dXJuIHRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oZixlKX0sZj1hKCIuL2hhc2hfaGFuZGxlciIpLkhhc2hIYW5kbGVyO2IuaGFuZGxlcj1uZXcgZjt2YXIgZz0hMTtiLmhhbmRsZXIuYXR0YWNoPWZ1bmN0aW9uKGEpe2d8fChnPSEwLGQuaW1wb3J0Q3NzU3RyaW5nKCIgICAgICAgICAgICAuZW1hY3MtbW9kZSAuYWNlX2N1cnNvcnsgICAgICAgICAgICAgICAgYm9yZGVyOiAycHggcmdiYSg1MCwyNTAsNTAsMC44KSBzb2xpZCFpbXBvcnRhbnQ7ICAgICAgICAgICAgICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveCFpbXBvcnRhbnQ7ICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ghaW1wb3J0YW50OyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMjUwLDAsMC45KTsgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41OyAgICAgICAgICAgIH0gICAgICAgICAgICAuZW1hY3MtbW9kZSAuYWNlX2N1cnNvci5hY2VfaGlkZGVueyAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgICAgICAgICAgICB9ICAgICAgICAgICAgLmVtYWNzLW1vZGUgLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7ICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDAgMCAycHggMnB4ICFpbXBvcnRhbnQ7ICAgICAgICAgICAgfSAgICAgICAgICAgIC5lbWFjcy1tb2RlIC5hY2VfdGV4dC1sYXllciB7ICAgICAgICAgICAgICAgIHotaW5kZXg6IDQgICAgICAgICAgICB9ICAgICAgICAgICAgLmVtYWNzLW1vZGUgLmFjZV9jdXJzb3ItbGF5ZXIgeyAgICAgICAgICAgICAgICB6LWluZGV4OiAyICAgICAgICAgICAgfSIsImVtYWNzTW9kZSIpKSxhLnJlbmRlcmVyLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzPWUsYS5zZXRTdHlsZSgiZW1hY3MtbW9kZSIpfSxiLmhhbmRsZXIuZGV0YWNoPWZ1bmN0aW9uKGEpe2RlbGV0ZSBhLnJlbmRlcmVyLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzLGEudW5zZXRTdHlsZSgiZW1hY3MtbW9kZSIpfTt2YXIgaD1hKCIuLi9saWIva2V5cyIpLktFWV9NT0RTLGk9e0M6ImN0cmwiLFM6InNoaWZ0IixNOiJhbHQifTtbIlMtQy1NIiwiUy1DIiwiUy1NIiwiQy1NIiwiUyIsIkMiLCJNIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj0wO2Euc3BsaXQoIi0iKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2J8PWhbaVthXV19KSxpW2JdPWEudG9Mb3dlckNhc2UoKSsiLSJ9KSxiLmhhbmRsZXIuYmluZEtleT1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybjt2YXIgYz10aGlzLmNvbW1tYW5kS2V5QmluZGluZzthLnNwbGl0KCJ8IikuZm9yRWFjaChmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKSxjW2FdPWIsYT1hLnNwbGl0KCIgIilbMF0sY1thXXx8KGNbYV09Im51bGwiKX0sdGhpcyl9LGIuaGFuZGxlci5oYW5kbGVLZXlib2FyZD1mdW5jdGlvbihhLGIsYyxkKXtpZihiPT0tMSYmYS5jb3VudCl7dmFyIGU9QXJyYXkoYS5jb3VudCsxKS5qb2luKGMpO3JldHVybiBhLmNvdW50PW51bGwse2NvbW1hbmQ6Imluc2VydHN0cmluZyIsYXJnczplfX1pZihjPT0iXDAiKXJldHVybjt2YXIgZj1pW2JdO2lmKGY9PSJjLSJ8fGEudW5pdmVyc2FsQXJndW1lbnQpe3ZhciBnPXBhcnNlSW50KGNbYy5sZW5ndGgtMV0pO2lmKGcpcmV0dXJuIGEuY291bnQ9Zyx7Y29tbWFuZDoibnVsbCJ9fWEudW5pdmVyc2FsQXJndW1lbnQ9ITEsZiYmKGM9ZitjKSxhLmtleUNoYWluJiYoYz1hLmtleUNoYWluKz0iICIrYyk7dmFyIGg9dGhpcy5jb21tbWFuZEtleUJpbmRpbmdbY107YS5rZXlDaGFpbj1oPT0ibnVsbCI/YzoiIjtpZighaClyZXR1cm47aWYoaD09Im51bGwiKXJldHVybntjb21tYW5kOiJudWxsIn07aWYoaD09InVuaXZlcnNhbEFyZ3VtZW50IilyZXR1cm4gYS51bml2ZXJzYWxBcmd1bWVudD0hMCx7Y29tbWFuZDoibnVsbCJ9O2lmKHR5cGVvZiBoIT0ic3RyaW5nIil7dmFyIGo9aC5hcmdzO2g9aC5jb21tYW5kfXR5cGVvZiBoPT0ic3RyaW5nIiYmKGg9dGhpcy5jb21tYW5kc1toXXx8YS5lZGl0b3IuY29tbWFuZHMuY29tbWFuZHNbaF0pLCFoLnJlYWRvbmx5JiYhaC5pc1lhbmsmJihhLmxhc3RDb21tYW5kPW51bGwpO2lmKGEuY291bnQpe3ZhciBnPWEuY291bnQ7cmV0dXJuIGEuY291bnQ9MCx7YXJnczpqLGNvbW1hbmQ6e2V4ZWM6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGc7YysrKWguZXhlYyhhLGIpfX19fXJldHVybntjb21tYW5kOmgsYXJnczpqfX0sYi5lbWFjc0tleXM9eyJVcHxDLXAiOiJnb2xpbmV1cCIsIkRvd258Qy1uIjoiZ29saW5lZG93biIsIkxlZnR8Qy1iIjoiZ290b2xlZnQiLCJSaWdodHxDLWYiOiJnb3RvcmlnaHQiLCJDLUxlZnR8TS1iIjoiZ290b3dvcmRsZWZ0IiwiQy1SaWdodHxNLWYiOiJnb3Rvd29yZHJpZ2h0IiwiSG9tZXxDLWEiOiJnb3RvbGluZXN0YXJ0IiwiRW5kfEMtZSI6ImdvdG9saW5lZW5kIiwiQy1Ib21lfFMtTS0sIjoiZ290b3N0YXJ0IiwiQy1FbmR8Uy1NLS4iOiJnb3RvZW5kIiwiUy1VcHxTLUMtcCI6InNlbGVjdHVwIiwiUy1Eb3dufFMtQy1uIjoic2VsZWN0ZG93biIsIlMtTGVmdHxTLUMtYiI6InNlbGVjdGxlZnQiLCJTLVJpZ2h0fFMtQy1mIjoic2VsZWN0cmlnaHQiLCJTLUMtTGVmdHxTLU0tYiI6InNlbGVjdHdvcmRsZWZ0IiwiUy1DLVJpZ2h0fFMtTS1mIjoic2VsZWN0d29yZHJpZ2h0IiwiUy1Ib21lfFMtQy1hIjoic2VsZWN0dG9saW5lc3RhcnQiLCJTLUVuZHxTLUMtZSI6InNlbGVjdHRvbGluZWVuZCIsIlMtQy1Ib21lIjoic2VsZWN0dG9zdGFydCIsIlMtQy1FbmQiOiJzZWxlY3R0b2VuZCIsIkMtbHxNLXMiOiJjZW50ZXJzZWxlY3Rpb24iLCJNLWciOiJnb3RvbGluZSIsIkMteCBDLXAiOiJzZWxlY3RhbGwiLCJDLURvd24iOiJnb3RvcGFnZWRvd24iLCJDLVVwIjoiZ290b3BhZ2V1cCIsIlBhZ2VEb3dufEMtdiI6ImdvdG9wYWdlZG93biIsIlBhZ2VVcHxNLXYiOiJnb3RvcGFnZXVwIiwiUy1DLURvd24iOiJzZWxlY3RwYWdlZG93biIsIlMtQy1VcCI6InNlbGVjdHBhZ2V1cCIsIkMtcyI6ImZpbmRuZXh0IiwiQy1yIjoiZmluZHByZXZpb3VzIiwiTS1DLXMiOiJmaW5kbmV4dCIsIk0tQy1yIjoiZmluZHByZXZpb3VzIiwiUy1NLTUiOiJyZXBsYWNlIixCYWNrc3BhY2U6ImJhY2tzcGFjZSIsIkRlbGV0ZXxDLWQiOiJkZWwiLCJSZXR1cm58Qy1tIjp7Y29tbWFuZDoiaW5zZXJ0c3RyaW5nIixhcmdzOiJcbiJ9LCJDLW8iOiJzcGxpdGxpbmUiLCJNLWR8Qy1EZWxldGUiOntjb21tYW5kOiJraWxsV29yZCIsYXJnczoicmlnaHQifSwiQy1CYWNrc3BhY2V8TS1CYWNrc3BhY2V8TS1EZWxldGUiOntjb21tYW5kOiJraWxsV29yZCIsYXJnczoibGVmdCJ9LCJDLWsiOiJraWxsTGluZSIsIkMteXxTLURlbGV0ZSI6InlhbmsiLCJNLXkiOiJ5YW5rUm90YXRlIiwiQy1nIjoia2V5Ym9hcmRRdWl0IiwiQy13Ijoia2lsbFJlZ2lvbiIsIk0tdyI6ImtpbGxSaW5nU2F2ZSIsIkMtU3BhY2UiOiJzZXRNYXJrIiwiQy14IEMteCI6ImV4Y2hhbmdlUG9pbnRBbmRNYXJrIiwiQy10IjoidHJhbnNwb3NlbGV0dGVycyIsIk0tdSI6InRvdXBwZXJjYXNlIiwiTS1sIjoidG9sb3dlcmNhc2UiLCJNLS8iOiJhdXRvY29tcGxldGUiLCJDLXUiOiJ1bml2ZXJzYWxBcmd1bWVudCIsIk0tOyI6InRvZ2dsZWNvbW1lbnQiLCJDLS98Qy14IHV8Uy1DLS18Qy16IjoidW5kbyIsIlMtQy0vfFMtQy14IHV8Qy0tfFMtQy16IjoicmVkbyIsIkMteCByIjoic2VsZWN0UmVjdGFuZ3VsYXJSZWdpb24ifSxiLmhhbmRsZXIuYmluZEtleXMoYi5lbWFjc0tleXMpLGIuaGFuZGxlci5hZGRDb21tYW5kcyh7c2VsZWN0UmVjdGFuZ3VsYXJSZWdpb246ZnVuY3Rpb24oYSl7YS5tdWx0aVNlbGVjdC50b2dnbGVCbG9ja1NlbGVjdGlvbigpfSxzZXRNYXJrOmZ1bmN0aW9uKCl7fSxleGNoYW5nZVBvaW50QW5kTWFyazp7ZXhlYzpmdW5jdGlvbihhKXt2YXIgYj1hLnNlbGVjdGlvbi5nZXRSYW5nZSgpO2Euc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGIsIWEuc2VsZWN0aW9uLmlzQmFja3dhcmRzKCkpfSxyZWFkb25seTohMCxtdWx0aXNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LGtpbGxXb3JkOntleGVjOmZ1bmN0aW9uKGEsYyl7YS5jbGVhclNlbGVjdGlvbigpLGM9PSJsZWZ0Ij9hLnNlbGVjdGlvbi5zZWxlY3RXb3JkTGVmdCgpOmEuc2VsZWN0aW9uLnNlbGVjdFdvcmRSaWdodCgpO3ZhciBkPWEuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxlPWEuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UoZCk7Yi5raWxsUmluZy5hZGQoZSksYS5zZXNzaW9uLnJlbW92ZShkKSxhLmNsZWFyU2VsZWN0aW9uKCl9LG11bHRpc2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0sa2lsbExpbmU6ZnVuY3Rpb24oYSl7YS5zZWxlY3Rpb24uc2VsZWN0TGluZSgpO3ZhciBjPWEuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxkPWEuc2Vzc2lvbi5nZXRUZXh0UmFuZ2UoYyk7Yi5raWxsUmluZy5hZGQoZCksYS5zZXNzaW9uLnJlbW92ZShjKSxhLmNsZWFyU2VsZWN0aW9uKCl9LHlhbms6ZnVuY3Rpb24oYSl7YS5vblBhc3RlKGIua2lsbFJpbmcuZ2V0KCkpLGEua2V5QmluZGluZy4kZGF0YS5sYXN0Q29tbWFuZD0ieWFuayJ9LHlhbmtSb3RhdGU6ZnVuY3Rpb24oYSl7aWYoYS5rZXlCaW5kaW5nLiRkYXRhLmxhc3RDb21tYW5kIT0ieWFuayIpcmV0dXJuO2EudW5kbygpLGEub25QYXN0ZShiLmtpbGxSaW5nLnJvdGF0ZSgpKSxhLmtleUJpbmRpbmcuJGRhdGEubGFzdENvbW1hbmQ9InlhbmsifSxraWxsUmVnaW9uOmZ1bmN0aW9uKGEpe2Iua2lsbFJpbmcuYWRkKGEuZ2V0Q29weVRleHQoKSksYS5jdXQoKX0sa2lsbFJpbmdTYXZlOmZ1bmN0aW9uKGEpe2Iua2lsbFJpbmcuYWRkKGEuZ2V0Q29weVRleHQoKSl9fSk7dmFyIGo9Yi5oYW5kbGVyLmNvbW1hbmRzO2oueWFuay5pc1lhbms9ITAsai55YW5rUm90YXRlLmlzWWFuaz0hMCxiLmtpbGxSaW5nPXskZGF0YTpbXSxhZGQ6ZnVuY3Rpb24oYSl7YSYmdGhpcy4kZGF0YS5wdXNoKGEpLHRoaXMuJGRhdGEubGVuZ3RoPjMwJiZ0aGlzLiRkYXRhLnNoaWZ0KCl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRkYXRhW3RoaXMuJGRhdGEubGVuZ3RoLTFdfHwiIn0scG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGRhdGEubGVuZ3RoPjEmJnRoaXMuJGRhdGEucG9wKCksdGhpcy5nZXQoKX0scm90YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGRhdGEudW5zaGlmdCh0aGlzLiRkYXRhLnBvcCgpKSx0aGlzLmdldCgpfX19KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/keybinding-vim.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2Uva2V5Ym9hcmQvdmltIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9rZXlzIiwiYWNlL2tleWJvYXJkL3ZpbS9jb21tYW5kcyIsImFjZS9rZXlib2FyZC92aW0vbWFwcy91dGlsIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9rZXlzIiksZT1hKCIuL3ZpbS9jb21tYW5kcyIpLGY9ZS5jb3JlQ29tbWFuZHMsZz1hKCIuL3ZpbS9tYXBzL3V0aWwiKSxoPXtpOntjb21tYW5kOmYuc3RhcnR9LEk6e2NvbW1hbmQ6Zi5zdGFydEJlZ2lubmluZ30sYTp7Y29tbWFuZDpmLmFwcGVuZH0sQTp7Y29tbWFuZDpmLmFwcGVuZEVuZH0sImN0cmwtZiI6e2NvbW1hbmQ6ImdvdG9wYWdlZG93biJ9LCJjdHJsLWIiOntjb21tYW5kOiJnb3RvcGFnZXVwIn19O2IuaGFuZGxlcj17aGFuZGxlS2V5Ym9hcmQ6ZnVuY3Rpb24oYSxiLGMsZCxnKXtpZihiIT0wJiYoYz09IiJ8fGM9PSJcMCIpKXJldHVybiBudWxsO2I9PTEmJihjPSJjdHJsLSIrYyk7aWYoYS5zdGF0ZT09InN0YXJ0Iil7aWYoYj09LTF8fGI9PTEpcmV0dXJuIGUuaW5wdXRCdWZmZXIuaWRsZSYmaFtjXT9oW2NdOntjb21tYW5kOntleGVjOmZ1bmN0aW9uKGEpe2UuaW5wdXRCdWZmZXIucHVzaChhLGMpfX19O2lmKGMubGVuZ3RoPT0xJiYoYj09MHx8Yj09NCkpcmV0dXJue2NvbW1hbmQ6Im51bGwiLHBhc3NFdmVudDohMH07aWYoYz09ImVzYyIpcmV0dXJue2NvbW1hbmQ6Zi5zdG9wfX1lbHNle2lmKGM9PSJlc2MifHxjPT0iY3RybC1bIilyZXR1cm4gYS5zdGF0ZT0ic3RhcnQiLHtjb21tYW5kOmYuc3RvcH07aWYoYz09ImN0cmwtdyIpcmV0dXJue2NvbW1hbmQ6InJlbW92ZXdvcmRsZWZ0In19fSxhdHRhY2g6ZnVuY3Rpb24oYSl7YS5vbigiY2xpY2siLGIub25DdXJzb3JNb3ZlKSxnLmN1cnJlbnRNb2RlIT09Imluc2VydCImJmUuY29yZUNvbW1hbmRzLnN0b3AuZXhlYyhhKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe2EucmVtb3ZlTGlzdGVuZXIoImNsaWNrIixiLm9uQ3Vyc29yTW92ZSksZy5ub01vZGUoYSksZy5jdXJyZW50TW9kZT0ibm9ybWFsIn0sYWN0aW9uczplLmFjdGlvbnN9LGIub25DdXJzb3JNb3ZlPWZ1bmN0aW9uKGEpe2Uub25DdXJzb3JNb3ZlKGEuZWRpdG9yLGEpLGIub25DdXJzb3JNb3ZlLnNjaGVkdWxlZD0hMX19KSxkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vY29tbWFuZHMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2Uva2V5Ym9hcmQvdmltL21hcHMvdXRpbCIsImFjZS9rZXlib2FyZC92aW0vbWFwcy9tb3Rpb25zIiwiYWNlL2tleWJvYXJkL3ZpbS9tYXBzL29wZXJhdG9ycyIsImFjZS9rZXlib2FyZC92aW0vbWFwcy9hbGlhc2VzIiwiYWNlL2tleWJvYXJkL3ZpbS9yZWdpc3RlcnMiXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gcihhKXtxLnByZXZpb3VzPXthY3Rpb246e2FjdGlvbjp7Zm46YX19fX0ibmV2ZXIgdXNlIHN0cmljdCI7dmFyIGQ9YSgiLi9tYXBzL3V0aWwiKSxlPWEoIi4vbWFwcy9tb3Rpb25zIiksZj1hKCIuL21hcHMvb3BlcmF0b3JzIiksZz1hKCIuL21hcHMvYWxpYXNlcyIpLGg9YSgiLi9yZWdpc3RlcnMiKSxpPTEsaj0yLGs9MyxsPTQsbT04LG49ZnVuY3Rpb24oYixjLGQpe3doaWxlKDA8Yy0tKWIuYXBwbHkodGhpcyxkKX0sbz1mdW5jdGlvbihhKXt2YXIgYj1hLnJlbmRlcmVyLGM9Yi4kY3Vyc29yTGF5ZXIuZ2V0UGl4ZWxQb3NpdGlvbigpLGQ9Yy50b3AsZT1tKmIubGF5ZXJDb25maWcubGluZUhlaWdodDsyKmU+Yi4kc2l6ZS5zY3JvbGxlckhlaWdodCYmKGU9Yi4kc2l6ZS5zY3JvbGxlckhlaWdodC8yKSxiLnNjcm9sbFRvcD5kLWUmJmIuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoZC1lKSxiLnNjcm9sbFRvcCtiLiRzaXplLnNjcm9sbGVySGVpZ2h0PGQrZStiLmxpbmVIZWlnaHQmJmIuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoZCtlK2IubGluZUhlaWdodC1iLiRzaXplLnNjcm9sbGVySGVpZ2h0KX0scD1iLmFjdGlvbnM9e3o6e3BhcmFtOiEwLGZuOmZ1bmN0aW9uKGEsYixjLGQpe3N3aXRjaChkKXtjYXNlInoiOmEuYWxpZ25DdXJzb3IobnVsbCwuNSk7YnJlYWs7Y2FzZSJ0IjphLmFsaWduQ3Vyc29yKG51bGwsMCk7YnJlYWs7Y2FzZSJiIjphLmFsaWduQ3Vyc29yKG51bGwsMSl9fX0scjp7cGFyYW06ITAsZm46ZnVuY3Rpb24oYSxiLGMsZCl7ZCYmZC5sZW5ndGgmJihuKGZ1bmN0aW9uKCl7YS5pbnNlcnQoZCl9LGN8fDEpLGEubmF2aWdhdGVMZWZ0KCkpfX0sUjp7Zm46ZnVuY3Rpb24oYSxiLGMsZSl7ZC5pbnNlcnRNb2RlKGEpLGEuc2V0T3ZlcndyaXRlKCEwKX19LCJ+Ijp7Zm46ZnVuY3Rpb24oYSxiLGMpe24oZnVuY3Rpb24oKXt2YXIgYj1hLnNlbGVjdGlvbi5nZXRSYW5nZSgpO2IuaXNFbXB0eSgpJiZiLmVuZC5jb2x1bW4rKzt2YXIgYz1hLnNlc3Npb24uZ2V0VGV4dFJhbmdlKGIpLGQ9Yy50b1VwcGVyQ2FzZSgpO2Q9PWM/YS5uYXZpZ2F0ZVJpZ2h0KCk6YS5zZXNzaW9uLnJlcGxhY2UoYixkKX0sY3x8MSl9fSwiKiI6e2ZuOmZ1bmN0aW9uKGEsYixjLGQpe2Euc2VsZWN0aW9uLnNlbGVjdFdvcmQoKSxhLmZpbmROZXh0KCksbyhhKTt2YXIgZT1hLnNlbGVjdGlvbi5nZXRSYW5nZSgpO2Euc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGUsITApfX0sIiMiOntmbjpmdW5jdGlvbihhLGIsYyxkKXthLnNlbGVjdGlvbi5zZWxlY3RXb3JkKCksYS5maW5kUHJldmlvdXMoKSxvKGEpO3ZhciBlPWEuc2VsZWN0aW9uLmdldFJhbmdlKCk7YS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UoZSwhMCl9fSxuOntmbjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLmdldExhc3RTZWFyY2hPcHRpb25zKCk7ZS5iYWNrd2FyZHM9ITEsYS5zZWxlY3Rpb24ubW92ZUN1cnNvclJpZ2h0KCksYS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxhLmZpbmROZXh0KGUpLG8oYSk7dmFyIGY9YS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTtmLmVuZC5yb3c9Zi5zdGFydC5yb3csZi5lbmQuY29sdW1uPWYuc3RhcnQuY29sdW1uLGEuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGYsITApfX0sTjp7Zm46ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5nZXRMYXN0U2VhcmNoT3B0aW9ucygpO2UuYmFja3dhcmRzPSEwLGEuZmluZFByZXZpb3VzKGUpLG8oYSk7dmFyIGY9YS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTtmLmVuZC5yb3c9Zi5zdGFydC5yb3csZi5lbmQuY29sdW1uPWYuc3RhcnQuY29sdW1uLGEuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGYsITApfX0sdjp7Zm46ZnVuY3Rpb24oYSxiLGMsZSl7YS5zZWxlY3Rpb24uc2VsZWN0UmlnaHQoKSxkLnZpc3VhbE1vZGUoYSwhMSl9LGFjY2VwdHNNb3Rpb246ITB9LFY6e2ZuOmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKS5yb3c7YS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxhLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG8oZiwwKSxhLnNlbGVjdGlvbi5zZWxlY3RMaW5lRW5kKCksYS5zZWxlY3Rpb24udmlzdWFsTGluZVN0YXJ0PWYsZC52aXN1YWxNb2RlKGEsITApfSxhY2NlcHRzTW90aW9uOiEwfSxZOntmbjpmdW5jdGlvbihhLGIsYyxlKXtkLmNvcHlMaW5lKGEpfX0scDp7Zm46ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9aC5fZGVmYXVsdDthLnNldE92ZXJ3cml0ZSghMSk7aWYoZS5pc0xpbmUpe3ZhciBmPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKSxnPWUudGV4dC5zcGxpdCgiXG4iKTthLnNlc3Npb24uZ2V0RG9jdW1lbnQoKS5pbnNlcnRMaW5lcyhmLnJvdysxLGcpLGEubW92ZUN1cnNvclRvKGYucm93KzEsMCl9ZWxzZSBhLm5hdmlnYXRlUmlnaHQoKSxhLmluc2VydChlLnRleHQpLGEubmF2aWdhdGVMZWZ0KCk7YS5zZXRPdmVyd3JpdGUoITApLGEuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCl9fSxQOntmbjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1oLl9kZWZhdWx0O2Euc2V0T3ZlcndyaXRlKCExKTtpZihlLmlzTGluZSl7dmFyIGY9YS5nZXRDdXJzb3JQb3NpdGlvbigpLGc9ZS50ZXh0LnNwbGl0KCJcbiIpO2Euc2Vzc2lvbi5nZXREb2N1bWVudCgpLmluc2VydExpbmVzKGYucm93LGcpLGEubW92ZUN1cnNvclRvKGYucm93LDApfWVsc2UgYS5pbnNlcnQoZS50ZXh0KTthLnNldE92ZXJ3cml0ZSghMCksYS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX19LEo6e2ZuOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuc2Vzc2lvbjtiPWEuZ2V0U2VsZWN0aW9uUmFuZ2UoKTt2YXIgZj17cm93OmIuc3RhcnQucm93LGNvbHVtbjpiLnN0YXJ0LmNvbHVtbn07Yz1jfHxiLmVuZC5yb3ctYi5zdGFydC5yb3c7dmFyIGc9TWF0aC5taW4oZi5yb3crKGN8fDEpLGUuZ2V0TGVuZ3RoKCktMSk7Yi5zdGFydC5jb2x1bW49ZS5nZXRMaW5lKGYucm93KS5sZW5ndGgsYi5lbmQuY29sdW1uPWUuZ2V0TGluZShnKS5sZW5ndGgsYi5lbmQucm93PWc7dmFyIGg9IiI7Zm9yKHZhciBpPWYucm93O2k8ZztpKyspe3ZhciBqPWUuZ2V0TGluZShpKzEpO2grPSIgIisvXlxzKiguKikkLy5leGVjKGopWzFdfHwiIn1lLnJlcGxhY2UoYixoKSxhLm1vdmVDdXJzb3JUbyhmLnJvdyxmLmNvbHVtbil9fSx1OntmbjpmdW5jdGlvbihhLGIsYyxkKXtjPXBhcnNlSW50KGN8fDEsMTApO2Zvcih2YXIgZT0wO2U8YztlKyspYS51bmRvKCk7YS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX19LCJjdHJsLXIiOntmbjpmdW5jdGlvbihhLGIsYyxkKXtjPXBhcnNlSW50KGN8fDEsMTApO2Zvcih2YXIgZT0wO2U8YztlKyspYS5yZWRvKCk7YS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX19LCI6Ijp7Zm46ZnVuY3Rpb24oYSxiLGMsZCl7fX0sIi8iOntmbjpmdW5jdGlvbihhLGIsYyxkKXt9fSwiPyI6e2ZuOmZ1bmN0aW9uKGEsYixjLGQpe319LCIuIjp7Zm46ZnVuY3Rpb24oYSxiLGMsZSl7ZC5vbkluc2VydFJlcGxheVNlcXVlbmNlPXEubGFzdEluc2VydENvbW1hbmRzO3ZhciBmPXEucHJldmlvdXM7ZiYmcS5leGVjKGEsZi5hY3Rpb24sZi5wYXJhbSl9fX0scT1iLmlucHV0QnVmZmVyPXthY2NlcHRpbmc6W2ksaixrLGxdLGN1cnJlbnRDbWQ6bnVsbCxjdXJyZW50Q291bnQ6IiIsb3BlcmF0b3I6bnVsbCxtb3Rpb246bnVsbCxsYXN0SW5zZXJ0Q29tbWFuZHM6W10scHVzaDpmdW5jdGlvbihhLGIsYyl7dGhpcy5pZGxlPSExO3ZhciBkPXRoaXMud2FpdGluZ0ZvclBhcmFtO2lmKGQpdGhpcy5leGVjKGEsZCxiKTtlbHNlIGlmKGI9PT0iMCImJiF0aGlzLmN1cnJlbnRDb3VudC5sZW5ndGh8fCFiLm1hdGNoKC9eXGQrJC8pfHwhdGhpcy5pc0FjY2VwdGluZyhpKSlpZighdGhpcy5vcGVyYXRvciYmdGhpcy5pc0FjY2VwdGluZyhqKSYmZltiXSl0aGlzLm9wZXJhdG9yPXsiY2hhciI6Yixjb3VudDp0aGlzLmdldENvdW50KCl9LHRoaXMuY3VycmVudENtZD1qLHRoaXMuYWNjZXB0aW5nPVtpLGssbF0sdGhpcy5leGVjKGEse29wZXJhdG9yOnRoaXMub3BlcmF0b3J9KTtlbHNlIGlmKGVbYl0mJnRoaXMuaXNBY2NlcHRpbmcoaykpe3RoaXMuY3VycmVudENtZD1rO3ZhciBoPXtvcGVyYXRvcjp0aGlzLm9wZXJhdG9yLG1vdGlvbjp7ImNoYXIiOmIsY291bnQ6dGhpcy5nZXRDb3VudCgpfX07ZVtiXS5wYXJhbT90aGlzLndhaXRGb3JQYXJhbShoKTp0aGlzLmV4ZWMoYSxoKX1lbHNlIGlmKGdbYl0mJnRoaXMuaXNBY2NlcHRpbmcoaykpZ1tiXS5vcGVyYXRvci5jb3VudD10aGlzLmdldENvdW50KCksdGhpcy5leGVjKGEsZ1tiXSk7ZWxzZSBpZihwW2JdJiZ0aGlzLmlzQWNjZXB0aW5nKGwpKXt2YXIgbT17YWN0aW9uOntmbjpwW2JdLmZuLGNvdW50OnRoaXMuZ2V0Q291bnQoKX19O3BbYl0ucGFyYW0/dGhpcy53YWl0Rm9yUGFyYW0obSk6dGhpcy5leGVjKGEsbSkscFtiXS5hY2NlcHRzTW90aW9uJiYodGhpcy5pZGxlPSExKX1lbHNlIHRoaXMub3BlcmF0b3I/dGhpcy5leGVjKGEse29wZXJhdG9yOnRoaXMub3BlcmF0b3J9LGIpOnRoaXMucmVzZXQoKTtlbHNlIHRoaXMuY3VycmVudENvdW50Kz1iLHRoaXMuY3VycmVudENtZD1pLHRoaXMuYWNjZXB0aW5nPVtpLGosayxsXX0sd2FpdEZvclBhcmFtOmZ1bmN0aW9uKGEpe3RoaXMud2FpdGluZ0ZvclBhcmFtPWF9LGdldENvdW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jdXJyZW50Q291bnQ7cmV0dXJuIHRoaXMuY3VycmVudENvdW50PSIiLGEmJnBhcnNlSW50KGEsMTApfSxleGVjOmZ1bmN0aW9uKGEsYixjKXt2YXIgZz1iLm1vdGlvbixoPWIub3BlcmF0b3IsaT1iLmFjdGlvbjtjfHwoYz1iLnBhcmFtKSxoJiYodGhpcy5wcmV2aW91cz17YWN0aW9uOmIscGFyYW06Y30pO2lmKGgmJiFhLnNlbGVjdGlvbi5pc0VtcHR5KCkpe2ZbaC5jaGFyXS5zZWxGbiYmKGZbaC5jaGFyXS5zZWxGbihhLGEuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoLmNvdW50LGMpLHRoaXMucmVzZXQoKSk7cmV0dXJufWlmKCFnJiYhaSYmaCYmYylmW2guY2hhcl0uZm4oYSxudWxsLGguY291bnQsYyksdGhpcy5yZXNldCgpO2Vsc2UgaWYoZyl7dmFyIGo9ZnVuY3Rpb24oYil7YiYmdHlwZW9mIGI9PSJmdW5jdGlvbiImJihnLmNvdW50JiYhay5oYW5kbGVzQ291bnQ/bihiLGcuY291bnQsW2EsbnVsbCxnLmNvdW50LGNdKTpiKGEsbnVsbCxnLmNvdW50LGMpKX0saz1lW2cuY2hhcl0sbD1rLnNlbDtoP2wmJm4oZnVuY3Rpb24oKXtqKGsuc2VsKSxmW2guY2hhcl0uZm4oYSxhLmdldFNlbGVjdGlvblJhbmdlKCksaC5jb3VudCxjKX0saC5jb3VudHx8MSk6KGQub25WaXN1YWxNb2RlfHxkLm9uVmlzdWFsTGluZU1vZGUpJiZsP2ooay5zZWwpOmooay5uYXYpLHRoaXMucmVzZXQoKX1lbHNlIGkmJihpLmZuKGEsYS5nZXRTZWxlY3Rpb25SYW5nZSgpLGkuY291bnQsYyksdGhpcy5yZXNldCgpKTtzKGEpfSxpc0FjY2VwdGluZzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hY2NlcHRpbmcuaW5kZXhPZihhKSE9PS0xfSxyZXNldDpmdW5jdGlvbigpe3RoaXMub3BlcmF0b3I9bnVsbCx0aGlzLm1vdGlvbj1udWxsLHRoaXMuY3VycmVudENvdW50PSIiLHRoaXMuYWNjZXB0aW5nPVtpLGosayxsXSx0aGlzLmlkbGU9ITAsdGhpcy53YWl0aW5nRm9yUGFyYW09bnVsbH19O2IuY29yZUNvbW1hbmRzPXtzdGFydDp7ZXhlYzpmdW5jdGlvbiB0KGEpe2QuaW5zZXJ0TW9kZShhKSxyKHQpfX0sc3RhcnRCZWdpbm5pbmc6e2V4ZWM6ZnVuY3Rpb24gdShhKXthLm5hdmlnYXRlTGluZVN0YXJ0KCksZC5pbnNlcnRNb2RlKGEpLHIodSl9fSxzdG9wOntleGVjOmZ1bmN0aW9uKGIpe3EucmVzZXQoKSxkLm9uVmlzdWFsTW9kZT0hMSxkLm9uVmlzdWFsTGluZU1vZGU9ITEscS5sYXN0SW5zZXJ0Q29tbWFuZHM9ZC5ub3JtYWxNb2RlKGIpfX0sYXBwZW5kOntleGVjOmZ1bmN0aW9uIHYoYSl7dmFyIGI9YS5nZXRDdXJzb3JQb3NpdGlvbigpLGM9YS5zZXNzaW9uLmdldExpbmUoYi5yb3cpLmxlbmd0aDtjJiZhLm5hdmlnYXRlUmlnaHQoKSxkLmluc2VydE1vZGUoYSkscih2KX19LGFwcGVuZEVuZDp7ZXhlYzpmdW5jdGlvbiB3KGEpe2EubmF2aWdhdGVMaW5lRW5kKCksZC5pbnNlcnRNb2RlKGEpLHIodyl9fX07dmFyIHM9Yi5vbkN1cnNvck1vdmU9ZnVuY3Rpb24oYSxiKXtpZihkLmN1cnJlbnRNb2RlPT09Imluc2VydCJ8fHMucnVubmluZylyZXR1cm47aWYoIWEuc2VsZWN0aW9uLmlzRW1wdHkoKSl7cy5ydW5uaW5nPSEwO2lmKGQub25WaXN1YWxMaW5lTW9kZSl7dmFyIGM9YS5zZWxlY3Rpb24udmlzdWFsTGluZVN0YXJ0LGU9YS5nZXRDdXJzb3JQb3NpdGlvbigpLnJvdztpZihjPD1lKXt2YXIgZj1hLnNlc3Npb24uZ2V0TGluZShlKTthLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGEuc2VsZWN0aW9uLm1vdmVDdXJzb3JUbyhjLDApLGEuc2VsZWN0aW9uLnNlbGVjdFRvKGUsZi5sZW5ndGgpfWVsc2V7dmFyIGY9YS5zZXNzaW9uLmdldExpbmUoYyk7YS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxhLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG8oYyxmLmxlbmd0aCksYS5zZWxlY3Rpb24uc2VsZWN0VG8oZSwwKX19cy5ydW5uaW5nPSExO3JldHVybn1iJiYoZC5vblZpc3VhbExpbmVNb2RlfHxkLm9uVmlzdWFsTW9kZSkmJihhLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGQubm9ybWFsTW9kZShhKSkscy5ydW5uaW5nPSEwO3ZhciBnPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKSxoPWEuc2Vzc2lvbi5nZXRMaW5lKGcucm93KS5sZW5ndGg7aCYmZy5jb2x1bW49PT1oJiZhLm5hdmlnYXRlTGVmdCgpLHMucnVubmluZz0hMX19KSxkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vbWFwcy91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2tleWJvYXJkL3ZpbS9yZWdpc3RlcnMiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yZWdpc3RlcnMiKSxlPWEoIi4uLy4uLy4uL2xpYi9kb20iKTtlLmltcG9ydENzc1N0cmluZygiLmluc2VydC1tb2RlLiBhY2VfY3Vyc29yeyAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMzMzMzMzM7fS5hY2VfZGFyay5pbnNlcnQtbW9kZSAuYWNlX2N1cnNvcnsgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZWVlZWVlO30ubm9ybWFsLW1vZGUgLmFjZV9jdXJzb3J7ICAgIGJvcmRlcjogMCFpbXBvcnRhbnQ7ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsgICAgb3BhY2l0eTogMC41O30iLCJ2aW1Nb2RlIiksYy5leHBvcnRzPXtvblZpc3VhbE1vZGU6ITEsb25WaXN1YWxMaW5lTW9kZTohMSxjdXJyZW50TW9kZToibm9ybWFsIixub01vZGU6ZnVuY3Rpb24oYSl7YS51bnNldFN0eWxlKCJpbnNlcnQtbW9kZSIpLGEudW5zZXRTdHlsZSgibm9ybWFsLW1vZGUiKSxhLmNvbW1hbmRzLnJlY29yZGluZyYmYS5jb21tYW5kcy50b2dnbGVSZWNvcmRpbmcoKSxhLnNldE92ZXJ3cml0ZSghMSl9LGluc2VydE1vZGU6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50TW9kZT0iaW5zZXJ0IixhLnNldFN0eWxlKCJpbnNlcnQtbW9kZSIpLGEudW5zZXRTdHlsZSgibm9ybWFsLW1vZGUiKSxhLnNldE92ZXJ3cml0ZSghMSksYS5rZXlCaW5kaW5nLiRkYXRhLmJ1ZmZlcj0iIixhLmtleUJpbmRpbmcuJGRhdGEuc3RhdGU9Imluc2VydE1vZGUiLHRoaXMub25WaXN1YWxNb2RlPSExLHRoaXMub25WaXN1YWxMaW5lTW9kZT0hMSx0aGlzLm9uSW5zZXJ0UmVwbGF5U2VxdWVuY2U/KGEuY29tbWFuZHMubWFjcm89dGhpcy5vbkluc2VydFJlcGxheVNlcXVlbmNlLGEuY29tbWFuZHMucmVwbGF5KGEpLHRoaXMub25JbnNlcnRSZXBsYXlTZXF1ZW5jZT1udWxsLHRoaXMubm9ybWFsTW9kZShhKSk6KGEuX2VtaXQoInZpbU1vZGUiLCJpbnNlcnQiKSxhLmNvbW1hbmRzLnJlY29yZGluZ3x8YS5jb21tYW5kcy50b2dnbGVSZWNvcmRpbmcoKSl9LG5vcm1hbE1vZGU6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50TW9kZT0ibm9ybWFsIixhLnVuc2V0U3R5bGUoImluc2VydC1tb2RlIiksYS5zZXRTdHlsZSgibm9ybWFsLW1vZGUiKSxhLmNsZWFyU2VsZWN0aW9uKCk7dmFyIGI7cmV0dXJuIGEuZ2V0T3ZlcndyaXRlKCl8fChiPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKSxiLmNvbHVtbj4wJiZhLm5hdmlnYXRlTGVmdCgpKSxhLnNldE92ZXJ3cml0ZSghMCksYS5rZXlCaW5kaW5nLiRkYXRhLmJ1ZmZlcj0iIixhLmtleUJpbmRpbmcuJGRhdGEuc3RhdGU9InN0YXJ0Iix0aGlzLm9uVmlzdWFsTW9kZT0hMSx0aGlzLm9uVmlzdWFsTGluZU1vZGU9ITEsYS5fZW1pdCgiY2hhbmdlVmltTW9kZSIsIm5vcm1hbCIpLGEuY29tbWFuZHMucmVjb3JkaW5nPyhhLmNvbW1hbmRzLnRvZ2dsZVJlY29yZGluZygpLGEuY29tbWFuZHMubWFjcm8pOltdfSx2aXN1YWxNb2RlOmZ1bmN0aW9uKGEsYil7aWYodGhpcy5vblZpc3VhbExpbmVNb2RlJiZifHx0aGlzLm9uVmlzdWFsTW9kZSYmIWIpe3RoaXMubm9ybWFsTW9kZShhKTtyZXR1cm59YS5zZXRTdHlsZSgiaW5zZXJ0LW1vZGUiKSxhLnVuc2V0U3R5bGUoIm5vcm1hbC1tb2RlIiksYS5fZW1pdCgiY2hhbmdlVmltTW9kZSIsInZpc3VhbCIpLGI/dGhpcy5vblZpc3VhbExpbmVNb2RlPSEwOih0aGlzLm9uVmlzdWFsTW9kZT0hMCx0aGlzLm9uVmlzdWFsTGluZU1vZGU9ITEpfSxnZXRSaWdodE50aENoYXI6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5nZXRTZXNzaW9uKCkuZ2V0TGluZShiLnJvdyksZj1lLnN1YnN0cihiLmNvbHVtbisxKS5zcGxpdChjKTtyZXR1cm4gZDxmLmxlbmd0aD9mLnNsaWNlKDAsZCkuam9pbihjKS5sZW5ndGg6bnVsbH0sZ2V0TGVmdE50aENoYXI6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5nZXRTZXNzaW9uKCkuZ2V0TGluZShiLnJvdyksZj1lLnN1YnN0cigwLGIuY29sdW1uKS5zcGxpdChjKTtyZXR1cm4gZDxmLmxlbmd0aD9mLnNsaWNlKC0xKmQpLmpvaW4oYykubGVuZ3RoOm51bGx9LHRvUmVhbENoYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RoPT09MT9hOi9ec2hpZnQtLi8udGVzdChhKT9hW2EubGVuZ3RoLTFdLnRvVXBwZXJDYXNlKCk6IiJ9LGNvcHlMaW5lOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKTthLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGEubW92ZUN1cnNvclRvKGIucm93LGIuY29sdW1uKSxhLnNlbGVjdGlvbi5zZWxlY3RMaW5lKCksZC5fZGVmYXVsdC5pc0xpbmU9ITAsZC5fZGVmYXVsdC50ZXh0PWEuZ2V0Q29weVRleHQoKS5yZXBsYWNlKC9cbiQvLCIiKSxhLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGEubW92ZUN1cnNvclRvKGIucm93LGIuY29sdW1uKX19fSksZGVmaW5lKCJhY2Uva2V5Ym9hcmQvdmltL3JlZ2lzdGVycyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXsibmV2ZXIgdXNlIHN0cmljdCIsYy5leHBvcnRzPXtfZGVmYXVsdDp7dGV4dDoiIixpc0xpbmU6ITF9fX0pLCJ1c2Ugc3RyaWN0IixkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vbWFwcy9tb3Rpb25zIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2tleWJvYXJkL3ZpbS9tYXBzL3V0aWwiLCJhY2Uvc2VhcmNoIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGYoYSxiKXtpZihiPT0iZXh0ZW5kIil2YXIgYz0hMDtlbHNlIHZhciBkPWI7dGhpcy5uYXY9ZnVuY3Rpb24oYil7dmFyIGM9YShiKTtpZighYylyZXR1cm47aWYoIWMuZW5kKXZhciBlPWM7ZWxzZSBpZihkKXZhciBlPWMuc3RhcnQ7ZWxzZSB2YXIgZT1jLmVuZDtiLmNsZWFyU2VsZWN0aW9uKCksYi5tb3ZlQ3Vyc29yVG8oZS5yb3csZS5jb2x1bW4pfSx0aGlzLnNlbD1mdW5jdGlvbihiKXt2YXIgZT1hKGIpO2lmKCFlKXJldHVybjtpZihjKXJldHVybiBiLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShlKTtpZighZS5lbmQpdmFyIGY9ZTtlbHNlIGlmKGQpdmFyIGY9ZS5zdGFydDtlbHNlIHZhciBmPWUuZW5kO2Iuc2VsZWN0aW9uLnNlbGVjdFRvKGYucm93LGYuY29sdW1uKX19ZnVuY3Rpb24gbShhLGIsYyl7cmV0dXJuIGwuJG9wdGlvbnMubmVlZGxlPWIsbC4kb3B0aW9ucy5iYWNrd2FyZHM9Yz09LTEsbC5maW5kKGEuc2Vzc2lvbil9dmFyIGQ9YSgiLi91dGlsIiksZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEucmVuZGVyZXIuZ2V0U2Nyb2xsVG9wUm93KCksZD1hLmdldEN1cnNvclBvc2l0aW9uKCkucm93LGU9ZC1jO2ImJmIuY2FsbChhKSxhLnJlbmRlcmVyLnNjcm9sbFRvUm93KGEuZ2V0Q3Vyc29yUG9zaXRpb24oKS5yb3ctZSl9LGc9L1tccy5cL1xcKClcIictOiwuOzw+fiFAIyQlXiYqfCs9XFtcXXt9YH4/XS8saD0vWy5cL1xcKClcIictOiwuOzw+fiFAIyQlXiYqfCs9XFtcXXt9YH4/XS8saT0vXHMvLGo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnNlbGVjdGlvbjt0aGlzLnJhbmdlPWMuZ2V0UmFuZ2UoKSxiPWJ8fGMuc2VsZWN0aW9uTGVhZCx0aGlzLnJvdz1iLnJvdyx0aGlzLmNvbD1iLmNvbHVtbjt2YXIgZD1hLnNlc3Npb24uZ2V0TGluZSh0aGlzLnJvdyksZT1hLnNlc3Npb24uZ2V0TGVuZ3RoKCk7dGhpcy5jaD1kW3RoaXMuY29sXXx8IlxuIix0aGlzLnNraXBwZWRMaW5lcz0wLHRoaXMubmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoPWRbKyt0aGlzLmNvbF18fHRoaXMuaGFuZGxlTmV3TGluZSgxKSx0aGlzLmNofSx0aGlzLnByZXY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaD1kWy0tdGhpcy5jb2xdfHx0aGlzLmhhbmRsZU5ld0xpbmUoLTEpLHRoaXMuY2h9LHRoaXMucGVlaz1mdW5jdGlvbihiKXt2YXIgYz1kW3RoaXMuY29sK2JdO3JldHVybiBjP2M6Yj09LTE/IlxuIjp0aGlzLmNvbD09ZC5sZW5ndGgtMT8iXG4iOmEuc2Vzc2lvbi5nZXRMaW5lKHRoaXMucm93KzEpWzBdfHwiXG4ifSx0aGlzLmhhbmRsZU5ld0xpbmU9ZnVuY3Rpb24oYil7aWYoYj09MSlyZXR1cm4gdGhpcy5jb2w9PWQubGVuZ3RoPyJcbiI6dGhpcy5yb3c9PWUtMT8iIjoodGhpcy5jb2w9MCx0aGlzLnJvdysrLGQ9YS5zZXNzaW9uLmdldExpbmUodGhpcy5yb3cpLHRoaXMuc2tpcHBlZExpbmVzKyssZFswXXx8IlxuIik7aWYoYj09LTEpcmV0dXJuIHRoaXMucm93PT0wPyIiOih0aGlzLnJvdy0tLGQ9YS5zZXNzaW9uLmdldExpbmUodGhpcy5yb3cpLHRoaXMuY29sPWQubGVuZ3RoLHRoaXMuc2tpcHBlZExpbmVzLS0sIlxuIil9LHRoaXMuZGVidWc9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZyhkLnN1YnN0cmluZygwLHRoaXMuY29sKSsifCIrdGhpcy5jaCsiJyIrdGhpcy5jb2wrIiciK2Quc3Vic3RyKHRoaXMuY29sKzEpKX19LGs9YSgiYWNlL3NlYXJjaCIpLlNlYXJjaCxsPW5ldyBrLG49YSgiYWNlL3JhbmdlIikuUmFuZ2U7Yy5leHBvcnRzPXt3Om5ldyBmKGZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBqKGEpO2lmKGIuY2gmJmgudGVzdChiLmNoKSl3aGlsZShiLmNoJiZoLnRlc3QoYi5jaCkpYi5uZXh0KCk7ZWxzZSB3aGlsZShiLmNoJiYhZy50ZXN0KGIuY2gpKWIubmV4dCgpO3doaWxlKGIuY2gmJmkudGVzdChiLmNoKSYmYi5za2lwcGVkTGluZXM8MiliLm5leHQoKTtyZXR1cm4gYi5za2lwcGVkTGluZXM9PTImJmIucHJldigpLHtjb2x1bW46Yi5jb2wscm93OmIucm93fX0pLFc6bmV3IGYoZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooYSk7d2hpbGUoYi5jaCYmKCFpLnRlc3QoYi5jaCl8fCEhaS50ZXN0KGIucGVlaygxKSkpJiZiLnNraXBwZWRMaW5lczwyKWIubmV4dCgpO3JldHVybiBiLnNraXBwZWRMaW5lcz09Mj9iLnByZXYoKTpiLm5leHQoKSx7Y29sdW1uOmIuY29sLHJvdzpiLnJvd319KSxiOm5ldyBmKGZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBqKGEpO2IucHJldigpO3doaWxlKGIuY2gmJmkudGVzdChiLmNoKSYmYi5za2lwcGVkTGluZXM+LTIpYi5wcmV2KCk7aWYoYi5jaCYmaC50ZXN0KGIuY2gpKXdoaWxlKGIuY2gmJmgudGVzdChiLmNoKSliLnByZXYoKTtlbHNlIHdoaWxlKGIuY2gmJiFnLnRlc3QoYi5jaCkpYi5wcmV2KCk7cmV0dXJuIGIuY2gmJmIubmV4dCgpLHtjb2x1bW46Yi5jb2wscm93OmIucm93fX0pLEI6bmV3IGYoZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooYSk7Yi5wcmV2KCk7d2hpbGUoYi5jaCYmKCEhaS50ZXN0KGIuY2gpfHwhaS50ZXN0KGIucGVlaygtMSkpKSYmYi5za2lwcGVkTGluZXM+LTIpYi5wcmV2KCk7cmV0dXJuIGIuc2tpcHBlZExpbmVzPT0tMiYmYi5uZXh0KCkse2NvbHVtbjpiLmNvbCxyb3c6Yi5yb3d9fSwhMCksZTpuZXcgZihmdW5jdGlvbihhKXt2YXIgYj1uZXcgaihhKTtiLm5leHQoKTt3aGlsZShiLmNoJiZpLnRlc3QoYi5jaCkpYi5uZXh0KCk7aWYoYi5jaCYmaC50ZXN0KGIuY2gpKXdoaWxlKGIuY2gmJmgudGVzdChiLmNoKSliLm5leHQoKTtlbHNlIHdoaWxlKGIuY2gmJiFnLnRlc3QoYi5jaCkpYi5uZXh0KCk7cmV0dXJuIGIuY2gmJmIucHJldigpLHtjb2x1bW46Yi5jb2wscm93OmIucm93fX0pLEU6bmV3IGYoZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooYSk7Yi5uZXh0KCk7d2hpbGUoYi5jaCYmKCEhaS50ZXN0KGIuY2gpfHwhaS50ZXN0KGIucGVlaygxKSkpKWIubmV4dCgpO3JldHVybntjb2x1bW46Yi5jb2wscm93OmIucm93fX0pLGw6e25hdjpmdW5jdGlvbihhKXthLm5hdmlnYXRlUmlnaHQoKX0sc2VsOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKSxjPWIuY29sdW1uLGQ9YS5zZXNzaW9uLmdldExpbmUoYi5yb3cpLmxlbmd0aDtkJiZjIT09ZCYmYS5zZWxlY3Rpb24uc2VsZWN0UmlnaHQoKX19LGg6e25hdjpmdW5jdGlvbihhKXt2YXIgYj1hLmdldEN1cnNvclBvc2l0aW9uKCk7Yi5jb2x1bW4+MCYmYS5uYXZpZ2F0ZUxlZnQoKX0sc2VsOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKTtiLmNvbHVtbj4wJiZhLnNlbGVjdGlvbi5zZWxlY3RMZWZ0KCl9fSxrOntuYXY6ZnVuY3Rpb24oYSl7YS5uYXZpZ2F0ZVVwKCl9LHNlbDpmdW5jdGlvbihhKXthLnNlbGVjdGlvbi5zZWxlY3RVcCgpfX0sajp7bmF2OmZ1bmN0aW9uKGEpe2EubmF2aWdhdGVEb3duKCl9LHNlbDpmdW5jdGlvbihhKXthLnNlbGVjdGlvbi5zZWxlY3REb3duKCl9fSxpOntwYXJhbTohMCxzZWw6ZnVuY3Rpb24oYSxiLGMsZCl7c3dpdGNoKGQpe2Nhc2UidyI6YS5zZWxlY3Rpb24uc2VsZWN0V29yZCgpO2JyZWFrO2Nhc2UiVyI6YS5zZWxlY3Rpb24uc2VsZWN0QVdvcmQoKTticmVhaztjYXNlIigiOmNhc2UieyI6Y2FzZSJbIjp2YXIgZT1hLmdldEN1cnNvclBvc2l0aW9uKCksZj1hLnNlc3Npb24uJGZpbmRDbG9zaW5nQnJhY2tldChkLGUsL3BhcmVuLyk7aWYoIWYpcmV0dXJuO3ZhciBnPWEuc2Vzc2lvbi4kZmluZE9wZW5pbmdCcmFja2V0KGEuc2Vzc2lvbi4kYnJhY2tldHNbZF0sZSwvcGFyZW4vKTtpZighZylyZXR1cm47Zy5jb2x1bW4rKyxhLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuLmZyb21Qb2ludHMoZyxmKSk7YnJlYWs7Y2FzZSInIjpjYXNlJyInOmNhc2UiLyI6dmFyIGY9bShhLGQsMSk7aWYoIWYpcmV0dXJuO3ZhciBnPW0oYSxkLC0xKTtpZighZylyZXR1cm47YS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2Uobi5mcm9tUG9pbnRzKGcuZW5kLGYuc3RhcnQpKX19fSxhOntwYXJhbTohMCxzZWw6ZnVuY3Rpb24oYSxiLGMsZCl7c3dpdGNoKGQpe2Nhc2UidyI6YS5zZWxlY3Rpb24uc2VsZWN0QVdvcmQoKTticmVhaztjYXNlIlciOmEuc2VsZWN0aW9uLnNlbGVjdEFXb3JkKCk7YnJlYWs7Y2FzZSIoIjpjYXNlInsiOmNhc2UiWyI6dmFyIGU9YS5nZXRDdXJzb3JQb3NpdGlvbigpLGY9YS5zZXNzaW9uLiRmaW5kQ2xvc2luZ0JyYWNrZXQoZCxlLC9wYXJlbi8pO2lmKCFmKXJldHVybjt2YXIgZz1hLnNlc3Npb24uJGZpbmRPcGVuaW5nQnJhY2tldChhLnNlc3Npb24uJGJyYWNrZXRzW2RdLGUsL3BhcmVuLyk7aWYoIWcpcmV0dXJuO2YuY29sdW1uKyssYS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2Uobi5mcm9tUG9pbnRzKGcsZikpO2JyZWFrO2Nhc2UiJyI6Y2FzZSciJzpjYXNlIi8iOnZhciBmPW0oYSxkLDEpO2lmKCFmKXJldHVybjt2YXIgZz1tKGEsZCwtMSk7aWYoIWcpcmV0dXJuO2YuY29sdW1uKyssYS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2Uobi5mcm9tUG9pbnRzKGcuc3RhcnQsZi5lbmQpKX19fSxmOntwYXJhbTohMCxoYW5kbGVzQ291bnQ6ITAsbmF2OmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmPWEsZz1mLmdldEN1cnNvclBvc2l0aW9uKCksaD1kLmdldFJpZ2h0TnRoQ2hhcihhLGcsZSxjfHwxKTt0eXBlb2YgaD09Im51bWJlciImJihmLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGYubW92ZUN1cnNvclRvKGcucm93LGgrZy5jb2x1bW4rMSkpfSxzZWw6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9YSxnPWYuZ2V0Q3Vyc29yUG9zaXRpb24oKSxoPWQuZ2V0UmlnaHROdGhDaGFyKGEsZyxlLGN8fDEpO3R5cGVvZiBoPT0ibnVtYmVyIiYmZi5tb3ZlQ3Vyc29yVG8oZy5yb3csaCtnLmNvbHVtbisxKX19LEY6e3BhcmFtOiEwLGhhbmRsZXNDb3VudDohMCxuYXY6ZnVuY3Rpb24oYSxiLGMsZSl7Yz1wYXJzZUludChjLDEwKXx8MTt2YXIgZj1hLGc9Zi5nZXRDdXJzb3JQb3NpdGlvbigpLGg9ZC5nZXRMZWZ0TnRoQ2hhcihhLGcsZSxjKTt0eXBlb2YgaD09Im51bWJlciImJihmLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGYubW92ZUN1cnNvclRvKGcucm93LGcuY29sdW1uLWgtMSkpfSxzZWw6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9YSxnPWYuZ2V0Q3Vyc29yUG9zaXRpb24oKSxoPWQuZ2V0TGVmdE50aENoYXIoYSxnLGUsY3x8MSk7dHlwZW9mIGg9PSJudW1iZXIiJiZmLm1vdmVDdXJzb3JUbyhnLnJvdyxnLmNvbHVtbi1oLTEpfX0sdDp7cGFyYW06ITAsaGFuZGxlc0NvdW50OiEwLG5hdjpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1hLGc9Zi5nZXRDdXJzb3JQb3NpdGlvbigpLGg9ZC5nZXRSaWdodE50aENoYXIoYSxnLGUsY3x8MSk7dHlwZW9mIGg9PSJudW1iZXIiJiYoZi5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxmLm1vdmVDdXJzb3JUbyhnLnJvdyxoK2cuY29sdW1uKSl9LHNlbDpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1hLGc9Zi5nZXRDdXJzb3JQb3NpdGlvbigpLGg9ZC5nZXRSaWdodE50aENoYXIoYSxnLGUsY3x8MSk7dHlwZW9mIGg9PSJudW1iZXIiJiZmLm1vdmVDdXJzb3JUbyhnLnJvdyxoK2cuY29sdW1uKX19LFQ6e3BhcmFtOiEwLGhhbmRsZXNDb3VudDohMCxuYXY6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9YSxnPWYuZ2V0Q3Vyc29yUG9zaXRpb24oKSxoPWQuZ2V0TGVmdE50aENoYXIoYSxnLGUsY3x8MSk7dHlwZW9mIGg9PSJudW1iZXIiJiYoZi5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxmLm1vdmVDdXJzb3JUbyhnLnJvdywtaCtnLmNvbHVtbikpfSxzZWw6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9YSxnPWYuZ2V0Q3Vyc29yUG9zaXRpb24oKSxoPWQuZ2V0TGVmdE50aENoYXIoYSxnLGUsY3x8MSk7dHlwZW9mIGg9PSJudW1iZXIiJiZmLm1vdmVDdXJzb3JUbyhnLnJvdywtaCtnLmNvbHVtbil9fSwiXiI6e25hdjpmdW5jdGlvbihhKXthLm5hdmlnYXRlTGluZVN0YXJ0KCl9LHNlbDpmdW5jdGlvbihhKXthLnNlbGVjdGlvbi5zZWxlY3RMaW5lU3RhcnQoKX19LCQ6e25hdjpmdW5jdGlvbihhKXthLm5hdmlnYXRlTGluZUVuZCgpfSxzZWw6ZnVuY3Rpb24oYSl7YS5zZWxlY3Rpb24uc2VsZWN0TGluZUVuZCgpfX0sMDp7bmF2OmZ1bmN0aW9uKGEpe3ZhciBiPWE7Yi5uYXZpZ2F0ZVRvKGIuc2VsZWN0aW9uLnNlbGVjdGlvbkxlYWQucm93LDApfSxzZWw6ZnVuY3Rpb24oYSl7dmFyIGI9YTtiLnNlbGVjdFRvKGIuc2VsZWN0aW9uLnNlbGVjdGlvbkxlYWQucm93LDApfX0sRzp7bmF2OmZ1bmN0aW9uKGEsYixjLGQpeyFjJiZjIT09MCYmKGM9YS5zZXNzaW9uLmdldExlbmd0aCgpKSxhLmdvdG9MaW5lKGMpfSxzZWw6ZnVuY3Rpb24oYSxiLGMsZCl7IWMmJmMhPT0wJiYoYz1hLnNlc3Npb24uZ2V0TGVuZ3RoKCkpLGEuc2VsZWN0aW9uLnNlbGVjdFRvKGMsMCl9fSxnOntwYXJhbTohMCxuYXY6ZnVuY3Rpb24oYSxiLGMsZCl7c3dpdGNoKGQpe2Nhc2UibSI6Y29uc29sZS5sb2coIk1pZGRsZSBsaW5lIik7YnJlYWs7Y2FzZSJlIjpjb25zb2xlLmxvZygiRW5kIG9mIHByZXYgd29yZCIpO2JyZWFrO2Nhc2UiZyI6YS5nb3RvTGluZShjfHwwKTtjYXNlInUiOmEuZ290b0xpbmUoY3x8MCk7Y2FzZSJVIjphLmdvdG9MaW5lKGN8fDApfX0sc2VsOmZ1bmN0aW9uKGEsYixjLGQpe3N3aXRjaChkKXtjYXNlIm0iOmNvbnNvbGUubG9nKCJNaWRkbGUgbGluZSIpO2JyZWFrO2Nhc2UiZSI6Y29uc29sZS5sb2coIkVuZCBvZiBwcmV2IHdvcmQiKTticmVhaztjYXNlImciOmEuc2VsZWN0aW9uLnNlbGVjdFRvKGN8fDAsMCl9fX0sbzp7bmF2OmZ1bmN0aW9uKGEsYixjLGUpe2M9Y3x8MTt2YXIgZj0iIjt3aGlsZSgwPGMtLSlmKz0iXG4iO2YubGVuZ3RoJiYoYS5uYXZpZ2F0ZUxpbmVFbmQoKSxhLmluc2VydChmKSxkLmluc2VydE1vZGUoYSkpfX0sTzp7bmF2OmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKS5yb3c7Yz1jfHwxO3ZhciBnPSIiO3doaWxlKDA8Yy0tKWcrPSJcbiI7Zy5sZW5ndGgmJihmPjA/KGEubmF2aWdhdGVVcCgpLGEubmF2aWdhdGVMaW5lRW5kKCksYS5pbnNlcnQoZykpOihhLnNlc3Npb24uaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sZyksYS5uYXZpZ2F0ZVVwKCkpLGQuaW5zZXJ0TW9kZShhKSl9fSwiJSI6bmV3IGYoZnVuY3Rpb24oYSl7dmFyIGI9L1tcW1xde30oKV0vZyxjPWEuZ2V0Q3Vyc29yUG9zaXRpb24oKSxkPWEuc2Vzc2lvbi5nZXRMaW5lKGMucm93KVtjLmNvbHVtbl07aWYoIWIudGVzdChkKSl7dmFyIGU9bShhLGIpO2lmKCFlKXJldHVybjtjPWUuc3RhcnR9dmFyIGY9YS5zZXNzaW9uLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpjLnJvdyxjb2x1bW46Yy5jb2x1bW4rMX0pO3JldHVybiBmfSksImN0cmwtZCI6e25hdjpmdW5jdGlvbihhLGIsYyxkKXthLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGUoYSxhLmdvdG9QYWdlRG93bil9LHNlbDpmdW5jdGlvbihhLGIsYyxkKXtlKGEsYS5zZWxlY3RQYWdlRG93bil9fSwiY3RybC11Ijp7bmF2OmZ1bmN0aW9uKGEsYixjLGQpe2Euc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksZShhLGEuZ290b1BhZ2VVcCl9LHNlbDpmdW5jdGlvbihhLGIsYyxkKXtlKGEsYS5zZWxlY3RQYWdlVXApfX19LGMuZXhwb3J0cy5iYWNrc3BhY2U9Yy5leHBvcnRzLmxlZnQ9Yy5leHBvcnRzLmgsYy5leHBvcnRzLnJpZ2h0PWMuZXhwb3J0cy5sLGMuZXhwb3J0cy51cD1jLmV4cG9ydHMuayxjLmV4cG9ydHMuZG93bj1jLmV4cG9ydHMuaixjLmV4cG9ydHMucGFnZWRvd249Yy5leHBvcnRzWyJjdHJsLWQiXSxjLmV4cG9ydHMucGFnZXVwPWMuZXhwb3J0c1siY3RybC11Il19KSxkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vbWFwcy9vcGVyYXRvcnMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2Uva2V5Ym9hcmQvdmltL21hcHMvdXRpbCIsImFjZS9rZXlib2FyZC92aW0vcmVnaXN0ZXJzIl0sZnVuY3Rpb24oYSxiLGMpeyJuZXZlciB1c2Ugc3RyaWN0Ijt2YXIgZD1hKCIuL3V0aWwiKSxlPWEoIi4uL3JlZ2lzdGVycyIpO2MuZXhwb3J0cz17ZDp7c2VsRm46ZnVuY3Rpb24oYSxiLGMsZil7ZS5fZGVmYXVsdC50ZXh0PWEuZ2V0Q29weVRleHQoKSxlLl9kZWZhdWx0LmlzTGluZT1kLm9uVmlzdWFsTGluZU1vZGUsZC5vblZpc3VhbExpbmVNb2RlP2EucmVtb3ZlTGluZXMoKTphLnNlc3Npb24ucmVtb3ZlKGIpLGQubm9ybWFsTW9kZShhKX0sZm46ZnVuY3Rpb24oYSxiLGMsZCl7Yz1jfHwxO3N3aXRjaChkKXtjYXNlImQiOmUuX2RlZmF1bHQudGV4dD0iIixlLl9kZWZhdWx0LmlzTGluZT0hMDtmb3IodmFyIGY9MDtmPGM7ZisrKXthLnNlbGVjdGlvbi5zZWxlY3RMaW5lKCksZS5fZGVmYXVsdC50ZXh0Kz1hLmdldENvcHlUZXh0KCk7dmFyIGc9YS5nZXRTZWxlY3Rpb25SYW5nZSgpO2Euc2Vzc2lvbi5yZW1vdmUoZyksYS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX1lLl9kZWZhdWx0LnRleHQ9ZS5fZGVmYXVsdC50ZXh0LnJlcGxhY2UoL1xuJC8sIiIpO2JyZWFrO2RlZmF1bHQ6YiYmKGEuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGIpLGUuX2RlZmF1bHQudGV4dD1hLmdldENvcHlUZXh0KCksZS5fZGVmYXVsdC5pc0xpbmU9ITEsYS5zZXNzaW9uLnJlbW92ZShiKSxhLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpKX19fSxjOntzZWxGbjpmdW5jdGlvbihhLGIsYyxlKXthLnNlc3Npb24ucmVtb3ZlKGIpLGQuaW5zZXJ0TW9kZShhKX0sZm46ZnVuY3Rpb24oYSxiLGMsZSl7Yz1jfHwxO3N3aXRjaChlKXtjYXNlImMiOmZvcih2YXIgZj0wO2Y8YztmKyspYS5yZW1vdmVMaW5lcygpLGQuaW5zZXJ0TW9kZShhKTticmVhaztkZWZhdWx0OmImJihhLnNlc3Npb24ucmVtb3ZlKGIpLGQuaW5zZXJ0TW9kZShhKSl9fX0seTp7c2VsRm46ZnVuY3Rpb24oYSxiLGMsZil7ZS5fZGVmYXVsdC50ZXh0PWEuZ2V0Q29weVRleHQoKSxlLl9kZWZhdWx0LmlzTGluZT1kLm9uVmlzdWFsTGluZU1vZGUsYS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxkLm5vcm1hbE1vZGUoYSl9LGZuOmZ1bmN0aW9uKGEsYixjLGQpe2M9Y3x8MTtzd2l0Y2goZCl7Y2FzZSJ5Ijp2YXIgZj1hLmdldEN1cnNvclBvc2l0aW9uKCk7YS5zZWxlY3Rpb24uc2VsZWN0TGluZSgpO2Zvcih2YXIgZz0wO2c8Yy0xO2crKylhLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRG93bigpO2UuX2RlZmF1bHQudGV4dD1hLmdldENvcHlUZXh0KCkucmVwbGFjZSgvXG4kLywiIiksYS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxlLl9kZWZhdWx0LmlzTGluZT0hMCxhLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGYpO2JyZWFrO2RlZmF1bHQ6aWYoYil7dmFyIGY9YS5nZXRDdXJzb3JQb3NpdGlvbigpO2Euc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGIpLGUuX2RlZmF1bHQudGV4dD1hLmdldENvcHlUZXh0KCksZS5fZGVmYXVsdC5pc0xpbmU9ITEsYS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxhLm1vdmVDdXJzb3JUbyhmLnJvdyxmLmNvbHVtbil9fX19LCI+Ijp7c2VsRm46ZnVuY3Rpb24oYSxiLGMsZSl7Yz1jfHwxO2Zvcih2YXIgZj0wO2Y8YztmKyspYS5pbmRlbnQoKTtkLm5vcm1hbE1vZGUoYSl9LGZuOmZ1bmN0aW9uKGEsYixjLGQpe2M9cGFyc2VJbnQoY3x8MSwxMCk7c3dpdGNoKGQpe2Nhc2UiPiI6dmFyIGU9YS5nZXRDdXJzb3JQb3NpdGlvbigpO2Euc2VsZWN0aW9uLnNlbGVjdExpbmUoKTtmb3IodmFyIGY9MDtmPGMtMTtmKyspYS5zZWxlY3Rpb24ubW92ZUN1cnNvckRvd24oKTthLmluZGVudCgpLGEuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksYS5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbihlKSxhLm5hdmlnYXRlTGluZUVuZCgpLGEubmF2aWdhdGVMaW5lU3RhcnQoKX19fSwiPCI6e3NlbEZuOmZ1bmN0aW9uKGEsYixjLGUpe2M9Y3x8MTtmb3IodmFyIGY9MDtmPGM7ZisrKWEuYmxvY2tPdXRkZW50KCk7ZC5ub3JtYWxNb2RlKGEpfSxmbjpmdW5jdGlvbihhLGIsYyxkKXtjPWN8fDE7c3dpdGNoKGQpe2Nhc2UiPCI6dmFyIGU9YS5nZXRDdXJzb3JQb3NpdGlvbigpO2Euc2VsZWN0aW9uLnNlbGVjdExpbmUoKTtmb3IodmFyIGY9MDtmPGMtMTtmKyspYS5zZWxlY3Rpb24ubW92ZUN1cnNvckRvd24oKTthLmJsb2NrT3V0ZGVudCgpLGEuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksYS5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbihlKSxhLm5hdmlnYXRlTGluZUVuZCgpLGEubmF2aWdhdGVMaW5lU3RhcnQoKX19fX19KSwidXNlIHN0cmljdCIsZGVmaW5lKCJhY2Uva2V5Ym9hcmQvdmltL21hcHMvYWxpYXNlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtjLmV4cG9ydHM9e3g6e29wZXJhdG9yOnsiY2hhciI6ImQiLGNvdW50OjF9LG1vdGlvbjp7ImNoYXIiOiJsIixjb3VudDoxfX0sWDp7b3BlcmF0b3I6eyJjaGFyIjoiZCIsY291bnQ6MX0sbW90aW9uOnsiY2hhciI6ImgiLGNvdW50OjF9fSxEOntvcGVyYXRvcjp7ImNoYXIiOiJkIixjb3VudDoxfSxtb3Rpb246eyJjaGFyIjoiJCIsY291bnQ6MX19LEM6e29wZXJhdG9yOnsiY2hhciI6ImMiLGNvdW50OjF9LG1vdGlvbjp7ImNoYXIiOiIkIixjb3VudDoxfX0sczp7b3BlcmF0b3I6eyJjaGFyIjoiYyIsY291bnQ6MX0sbW90aW9uOnsiY2hhciI6ImwiLGNvdW50OjF9fSxTOntvcGVyYXRvcjp7ImNoYXIiOiJjIixjb3VudDoxfSxwYXJhbToiYyJ9fX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-c9search.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jOXNlYXJjaCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9jOXNlYXJjaF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL21vZGUvZm9sZGluZy9jOXNlYXJjaCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9jOXNlYXJjaF9oaWdobGlnaHRfcnVsZXMiKS5DOVNlYXJjaEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuL2ZvbGRpbmcvYzlzZWFyY2giKS5Gb2xkTW9kZSxqPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGl9O2QuaW5oZXJpdHMoaixlKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSkudG9rZW5zO2lmKGUubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDt2YXIgZj1iLm1hdGNoKC9eLipce1xzKiQvKTtyZXR1cm4gZiYmKGQrPWMpLGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfX0uY2FsbChqLnByb3RvdHlwZSksYi5Nb2RlPWp9KSxkZWZpbmUoImFjZS9tb2RlL2M5c2VhcmNoX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46WyJzdHJpbmciLCJ0ZXh0Il0scmVnZXg6IiguKykoOiQpIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyIsInRleHQiXSxyZWdleDoiKF5cXHMqWzAtOV0rKSg6XFxzKikifV19fTtkLmluaGVyaXRzKGYsZSksYi5DOVNlYXJjaEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvYzlzZWFyY2giLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZj1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGc9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307ZC5pbmhlcml0cyhnLGYpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9L1thLXpBLVpdKDopXHMqJC8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXihccyopJC8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKSxmPWQubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXg7aWYoZlsxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGEsZlsxXSxjLGcsITEsITApO3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcrZlswXS5sZW5ndGgpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH1pZihiIT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBmPWQubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleCtmWzBdLmxlbmd0aDtpZihmWzJdKXt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9dmFyIGk9e3JvdzpjLGNvbHVtbjpnfSxqPWEuJGZpbmRPcGVuaW5nQnJhY2tldChmWzFdLGkpO2lmKCFqKXJldHVybjtyZXR1cm4gai5jb2x1bW4rKyxpLmNvbHVtbi0tLGUuZnJvbVBvaW50cyhqLGkpfX19LmNhbGwoZy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGU9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyk7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3QoZCk/InN0YXJ0IjpiPT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KGQpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihhLGIsYyl7dmFyIGU9L15ccyovLGY9YixnPWIsaD1hLmdldExpbmUoYiksaT1jfHxoLmxlbmd0aCxqPWgubWF0Y2goZSlbMF0ubGVuZ3RoLGs9YS5nZXRMZW5ndGgoKTt3aGlsZSgrK2I8ayl7aD1hLmdldExpbmUoYik7dmFyIGw9aC5tYXRjaChlKVswXS5sZW5ndGg7aWYobD09aC5sZW5ndGgpY29udGludWU7aWYobDw9ailicmVhaztnPWJ9aWYoZz5mKXt2YXIgbT1hLmdldExpbmUoZykubGVuZ3RoO3JldHVybiBuZXcgZChmLGksZyxtKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihhLGIsYyxlLGYsZyl7dmFyIGg9e3JvdzpjLGNvbHVtbjplKzF9LGk9YS4kZmluZENsb3NpbmdCcmFja2V0KGIsaCxmLGcpO2lmKCFpKXJldHVybjt2YXIgaj1hLmZvbGRXaWRnZXRzW2kucm93XTtyZXR1cm4gaj09bnVsbCYmKGo9dGhpcy5nZXRGb2xkV2lkZ2V0KGEsaS5yb3cpKSxqPT0ic3RhcnQiJiYoaS5yb3ctLSxpLmNvbHVtbj1hLmdldExpbmUoaS5yb3cpLmxlbmd0aCksZC5mcm9tUG9pbnRzKGgsaSl9fSkuY2FsbChlLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-clojure.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jbG9qdXJlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2Nsb2p1cmVfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfcGFyZW5zX291dGRlbnQiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vY2xvanVyZV9oaWdobGlnaHRfcnVsZXMiKS5DbG9qdXJlSGlnaGxpZ2h0UnVsZXMsaD1hKCIuL21hdGNoaW5nX3BhcmVuc19vdXRkZW50IikuTWF0Y2hpbmdQYXJlbnNPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgaH07ZC5pbmhlcml0cyhqLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopIy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIjsiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQiKXt2YXIgZz1iLm1hdGNoKC9bXChcW10vKTtnJiYoZCs9IiAgIiksZz1iLm1hdGNoKC9bXCldLyksZyYmKGQ9IiIpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX19LmNhbGwoai5wcm90b3R5cGUpLGIuTW9kZT1qfSksZGVmaW5lKCJhY2UvbW9kZS9jbG9qdXJlX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiKiAqMSAqMiAqMyAqYWdlbnQqICphbGxvdy11bnJlc29sdmVkLXZhcnMqICphc3NlcnQqICpjbG9qdXJlLXZlcnNpb24qICpjb21tYW5kLWxpbmUtYXJncyogKmNvbXBpbGUtZmlsZXMqICpjb21waWxlLXBhdGgqICplICplcnIqICpmaWxlKiAqZmx1c2gtb24tbmV3bGluZSogKmluKiAqbWFjcm8tbWV0YSogKm1hdGgtY29udGV4dCogKm5zKiAqb3V0KiAqcHJpbnQtZHVwKiAqcHJpbnQtbGVuZ3RoKiAqcHJpbnQtbGV2ZWwqICpwcmludC1tZXRhKiAqcHJpbnQtcmVhZGFibHkqICpyZWFkLWV2YWwqICpzb3VyY2UtcGF0aCogKnVzZS1jb250ZXh0LWNsYXNzbG9hZGVyKiAqd2Fybi1vbi1yZWZsZWN0aW9uKiArIC0gLT4gLSZndDsgLT4+IC0mZ3Q7Jmd0OyAuLiAvIDwgJmx0OyA8PSAmbHQ7PSA9ID09ID4gJmd0OyA+PSAmZ3Q7PSBhY2Nlc3NvciBhY2xvbmUgYWRkLWNsYXNzcGF0aCBhZGQtd2F0Y2ggYWdlbnQgYWdlbnQtZXJyb3JzIGFnZXQgYWxlbmd0aCBhbGlhcyBhbGwtbnMgYWx0ZXIgYWx0ZXItbWV0YSEgYWx0ZXItdmFyLXJvb3QgYW1hcCBhbmNlc3RvcnMgYW5kIGFwcGx5IGFyZWR1Y2UgYXJyYXktbWFwIGFzZXQgYXNldC1ib29sZWFuIGFzZXQtYnl0ZSBhc2V0LWNoYXIgYXNldC1kb3VibGUgYXNldC1mbG9hdCBhc2V0LWludCBhc2V0LWxvbmcgYXNldC1zaG9ydCBhc3NlcnQgYXNzb2MgYXNzb2MhIGFzc29jLWluIGFzc29jaWF0aXZlPyBhdG9tIGF3YWl0IGF3YWl0LWZvciBhd2FpdDEgYmFzZXMgYmVhbiBiaWdkZWMgYmlnaW50IGJpbmRpbmcgYml0LWFuZCBiaXQtYW5kLW5vdCBiaXQtY2xlYXIgYml0LWZsaXAgYml0LW5vdCBiaXQtb3IgYml0LXNldCBiaXQtc2hpZnQtbGVmdCBiaXQtc2hpZnQtcmlnaHQgYml0LXRlc3QgYml0LXhvciBib29sZWFuIGJvb2xlYW4tYXJyYXkgYm9vbGVhbnMgYm91bmQtZm4gYm91bmQtZm4qIGJ1dGxhc3QgYnl0ZSBieXRlLWFycmF5IGJ5dGVzIGNhc3QgY2hhciBjaGFyLWFycmF5IGNoYXItZXNjYXBlLXN0cmluZyBjaGFyLW5hbWUtc3RyaW5nIGNoYXI/IGNoYXJzIGNodW5rIGNodW5rLWFwcGVuZCBjaHVuay1idWZmZXIgY2h1bmstY29ucyBjaHVuay1maXJzdCBjaHVuay1uZXh0IGNodW5rLXJlc3QgY2h1bmtlZC1zZXE/IGNsYXNzIGNsYXNzPyBjbGVhci1hZ2VudC1lcnJvcnMgY2xvanVyZS12ZXJzaW9uIGNvbGw/IGNvbW1lbnQgY29tbXV0ZSBjb21wIGNvbXBhcmF0b3IgY29tcGFyZSBjb21wYXJlLWFuZC1zZXQhIGNvbXBpbGUgY29tcGxlbWVudCBjb25jYXQgY29uZCBjb25kcCBjb25qIGNvbmohIGNvbnMgY29uc3RhbnRseSBjb25zdHJ1Y3QtcHJveHkgY29udGFpbnM/IGNvdW50IGNvdW50ZWQ/IGNyZWF0ZS1ucyBjcmVhdGUtc3RydWN0IGN5Y2xlIGRlYyBkZWNpbWFsPyBkZWNsYXJlIGRlZmlubGluZSBkZWZtYWNybyBkZWZtZXRob2QgZGVmbXVsdGkgZGVmbiBkZWZuLSBkZWZvbmNlIGRlZnN0cnVjdCBkZWxheSBkZWxheT8gZGVsaXZlciBkZXJlZiBkZXJpdmUgZGVzY2VuZGFudHMgZGVzdHJ1Y3R1cmUgZGlzaiBkaXNqISBkaXNzb2MgZGlzc29jISBkaXN0aW5jdCBkaXN0aW5jdD8gZG9hbGwgZG9jIGRvcnVuIGRvc2VxIGRvc3luYyBkb3RpbWVzIGRvdG8gZG91YmxlIGRvdWJsZS1hcnJheSBkb3VibGVzIGRyb3AgZHJvcC1sYXN0IGRyb3Atd2hpbGUgZW1wdHkgZW1wdHk/IGVuc3VyZSBlbnVtZXJhdGlvbi1zZXEgZXZhbCBldmVuPyBldmVyeT8gZmFsc2U/IGZmaXJzdCBmaWxlLXNlcSBmaWx0ZXIgZmluZCBmaW5kLWRvYyBmaW5kLW5zIGZpbmQtdmFyIGZpcnN0IGZsb2F0IGZsb2F0LWFycmF5IGZsb2F0PyBmbG9hdHMgZmx1c2ggZm4gZm4/IGZuZXh0IGZvciBmb3JjZSBmb3JtYXQgZnV0dXJlIGZ1dHVyZS1jYWxsIGZ1dHVyZS1jYW5jZWwgZnV0dXJlLWNhbmNlbGxlZD8gZnV0dXJlLWRvbmU/IGZ1dHVyZT8gZ2VuLWNsYXNzIGdlbi1pbnRlcmZhY2UgZ2Vuc3ltIGdldCBnZXQtaW4gZ2V0LW1ldGhvZCBnZXQtcHJveHktY2xhc3MgZ2V0LXRocmVhZC1iaW5kaW5ncyBnZXQtdmFsaWRhdG9yIGhhc2ggaGFzaC1tYXAgaGFzaC1zZXQgaWRlbnRpY2FsPyBpZGVudGl0eSBpZi1sZXQgaWYtbm90IGlmbj8gaW1wb3J0IGluLW5zIGluYyBpbml0LXByb3h5IGluc3RhbmNlPyBpbnQgaW50LWFycmF5IGludGVnZXI/IGludGVybGVhdmUgaW50ZXJuIGludGVycG9zZSBpbnRvIGludG8tYXJyYXkgaW50cyBpbyEgaXNhPyBpdGVyYXRlIGl0ZXJhdG9yLXNlcSBqdXh0IGtleSBrZXlzIGtleXdvcmQga2V5d29yZD8gbGFzdCBsYXp5LWNhdCBsYXp5LXNlcSBsZXQgbGV0Zm4gbGluZS1zZXEgbGlzdCBsaXN0KiBsaXN0PyBsb2FkIGxvYWQtZmlsZSBsb2FkLXJlYWRlciBsb2FkLXN0cmluZyBsb2FkZWQtbGlicyBsb2NraW5nIGxvbmcgbG9uZy1hcnJheSBsb25ncyBsb29wIG1hY3JvZXhwYW5kIG1hY3JvZXhwYW5kLTEgbWFrZS1hcnJheSBtYWtlLWhpZXJhcmNoeSBtYXAgbWFwPyBtYXBjYXQgbWF4IG1heC1rZXkgbWVtZm4gbWVtb2l6ZSBtZXJnZSBtZXJnZS13aXRoIG1ldGEgbWV0aG9kLXNpZyBtZXRob2RzIG1pbiBtaW4ta2V5IG1vZCBuYW1lIG5hbWVzcGFjZSBuZWc/IG5ld2xpbmUgbmV4dCBuZmlyc3QgbmlsPyBubmV4dCBub3Qgbm90LWFueT8gbm90LWVtcHR5IG5vdC1ldmVyeT8gbm90PSBucyBucy1hbGlhc2VzIG5zLWltcG9ydHMgbnMtaW50ZXJucyBucy1tYXAgbnMtbmFtZSBucy1wdWJsaWNzIG5zLXJlZmVycyBucy1yZXNvbHZlIG5zLXVuYWxpYXMgbnMtdW5tYXAgbnRoIG50aG5leHQgbnVtIG51bWJlcj8gb2RkPyBvciBwYXJlbnRzIHBhcnRpYWwgcGFydGl0aW9uIHBjYWxscyBwZWVrIHBlcnNpc3RlbnQhIHBtYXAgcG9wIHBvcCEgcG9wLXRocmVhZC1iaW5kaW5ncyBwb3M/IHByIHByLXN0ciBwcmVmZXItbWV0aG9kIHByZWZlcnMgcHJpbWl0aXZlcy1jbGFzc25hbWVzIHByaW50IHByaW50LWN0b3IgcHJpbnQtZG9jIHByaW50LWR1cCBwcmludC1tZXRob2QgcHJpbnQtbmFtZXNwYWNlLWRvYyBwcmludC1zaW1wbGUgcHJpbnQtc3BlY2lhbC1kb2MgcHJpbnQtc3RyIHByaW50ZiBwcmludGxuIHByaW50bG4tc3RyIHBybiBwcm4tc3RyIHByb21pc2UgcHJveHkgcHJveHktY2FsbC13aXRoLXN1cGVyIHByb3h5LW1hcHBpbmdzIHByb3h5LW5hbWUgcHJveHktc3VwZXIgcHVzaC10aHJlYWQtYmluZGluZ3MgcHZhbHVlcyBxdW90IHJhbmQgcmFuZC1pbnQgcmFuZ2UgcmF0aW8/IHJhdGlvbmFsPyByYXRpb25hbGl6ZSByZS1maW5kIHJlLWdyb3VwcyByZS1tYXRjaGVyIHJlLW1hdGNoZXMgcmUtcGF0dGVybiByZS1zZXEgcmVhZCByZWFkLWxpbmUgcmVhZC1zdHJpbmcgcmVkdWNlIHJlZiByZWYtaGlzdG9yeS1jb3VudCByZWYtbWF4LWhpc3RvcnkgcmVmLW1pbi1oaXN0b3J5IHJlZi1zZXQgcmVmZXIgcmVmZXItY2xvanVyZSByZWxlYXNlLXBlbmRpbmctc2VuZHMgcmVtIHJlbW92ZSByZW1vdmUtbWV0aG9kIHJlbW92ZS1ucyByZW1vdmUtd2F0Y2ggcmVwZWF0IHJlcGVhdGVkbHkgcmVwbGFjZSByZXBsaWNhdGUgcmVxdWlyZSByZXNldCEgcmVzZXQtbWV0YSEgcmVzb2x2ZSByZXN0IHJlc3VsdHNldC1zZXEgcmV2ZXJzZSByZXZlcnNpYmxlPyByc2VxIHJzdWJzZXEgc2Vjb25kIHNlbGVjdC1rZXlzIHNlbmQgc2VuZC1vZmYgc2VxIHNlcT8gc2VxdWUgc2VxdWVuY2Ugc2VxdWVudGlhbD8gc2V0IHNldC12YWxpZGF0b3IhIHNldD8gc2hvcnQgc2hvcnQtYXJyYXkgc2hvcnRzIHNodXRkb3duLWFnZW50cyBzbHVycCBzb21lIHNvcnQgc29ydC1ieSBzb3J0ZWQtbWFwIHNvcnRlZC1tYXAtYnkgc29ydGVkLXNldCBzb3J0ZWQtc2V0LWJ5IHNvcnRlZD8gc3BlY2lhbC1mb3JtLWFuY2hvciBzcGVjaWFsLXN5bWJvbD8gc3BsaXQtYXQgc3BsaXQtd2l0aCBzdHIgc3RyZWFtPyBzdHJpbmc/IHN0cnVjdCBzdHJ1Y3QtbWFwIHN1YnMgc3Vic2VxIHN1YnZlYyBzdXBlcnMgc3dhcCEgc3ltYm9sIHN5bWJvbD8gc3luYyBzeW50YXgtc3ltYm9sLWFuY2hvciB0YWtlIHRha2UtbGFzdCB0YWtlLW50aCB0YWtlLXdoaWxlIHRlc3QgdGhlLW5zIHRpbWUgdG8tYXJyYXkgdG8tYXJyYXktMmQgdHJhbXBvbGluZSB0cmFuc2llbnQgdHJlZS1zZXEgdHJ1ZT8gdHlwZSB1bmNoZWNrZWQtYWRkIHVuY2hlY2tlZC1kZWMgdW5jaGVja2VkLWRpdmlkZSB1bmNoZWNrZWQtaW5jIHVuY2hlY2tlZC1tdWx0aXBseSB1bmNoZWNrZWQtbmVnYXRlIHVuY2hlY2tlZC1yZW1haW5kZXIgdW5jaGVja2VkLXN1YnRyYWN0IHVuZGVyaXZlIHVucXVvdGUgdW5xdW90ZS1zcGxpY2luZyB1cGRhdGUtaW4gdXBkYXRlLXByb3h5IHVzZSB2YWwgdmFscyB2YXItZ2V0IHZhci1zZXQgdmFyPyB2YXJ5LW1ldGEgdmVjIHZlY3RvciB2ZWN0b3I/IHdoZW4gd2hlbi1maXJzdCB3aGVuLWxldCB3aGVuLW5vdCB3aGlsZSB3aXRoLWJpbmRpbmdzIHdpdGgtYmluZGluZ3MqIHdpdGgtaW4tc3RyIHdpdGgtbG9hZGluZy1jb250ZXh0IHdpdGgtbG9jYWwtdmFycyB3aXRoLW1ldGEgd2l0aC1vcGVuIHdpdGgtb3V0LXN0ciB3aXRoLXByZWNpc2lvbiB4bWwtc2VxIHplcm8/IHppcG1hcCAiLnNwbGl0KCIgIikpLGI9ZS5hcnJheVRvTWFwKCJkZWYgZG8gZm4gaWYgbGV0IGxvb3AgbW9uaXRvci1lbnRlciBtb25pdG9yLWV4aXQgbmV3IHF1b3RlIHJlY3VyIHNldCEgdGhyb3cgdHJ5IHZhciIuc3BsaXQoIiAiKSksYz1lLmFycmF5VG9NYXAoInRydWUgZmFsc2UgbmlsIi5zcGxpdCgiICIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IjsuKiQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJePWJlZ2luJCIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCh8XFwpXSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCdcXChdIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiW1xcW3xcXF1dIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiW1xce3xcXH18XFwjXFx7fFxcI1xcfV0ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiJbXFwmXSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCNcXF5cXHtdIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiW1xcJV0ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiJbQF0ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZSIscmVnZXg6IlshfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x8PXwhPXw8PXw+PXw8Pnw8fD58IXwmJl0ifSx7dG9rZW46ZnVuY3Rpb24oZCl7cmV0dXJuIGIuaGFzT3duUHJvcGVydHkoZCk/ImtleXdvcmQiOmMuaGFzT3duUHJvcGVydHkoZCk/ImNvbnN0YW50Lmxhbmd1YWdlIjphLmhhc093blByb3BlcnR5KGQpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj8kJyxuZXh0OiJzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6Ils6XSg/OlthLXpBLVpdfFxcZCkrIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDonLyMiKD86XFwufCg/OlxcIil8W14iIlxuXSkqIi9nJ31dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Il49ZW5kJCIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiXFxcXC4ifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKj8iJyxuZXh0OiJzdGFydCJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLkNsb2p1cmVIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19wYXJlbnNfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXCkvLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlwpKS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdQYXJlbnNPdXRkZW50PWV9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-coffee.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY29mZmVlX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvbW9kZS9mb2xkaW5nL3B5dGhvbmljIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvdGV4dCIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9saWIvb29wIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGwoKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGQoKG5ldyBlKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBmLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBnKCI9fD0+fC0+fFxccypjbGFzcyBbXiNdKiIpfXZhciBkPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixlPWEoIi4vY29mZmVlX2hpZ2hsaWdodF9ydWxlcyIpLkNvZmZlZUhpZ2hsaWdodFJ1bGVzLGY9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsZz1hKCIuL2ZvbGRpbmcvcHl0aG9uaWMiKS5Gb2xkTW9kZSxoPWEoIi4uL3JhbmdlIikuUmFuZ2UsaT1hKCIuL3RleHQiKS5Nb2RlLGo9YSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsaz1hKCIuLi9saWIvb29wIik7ay5pbmhlcml0cyhsLGkpLGZ1bmN0aW9uKCl7dmFyIGE9Lyg/Olsoe1s9Ol18Wy09XT58XGIoPzplbHNlfHN3aXRjaHx0cnl8Y2F0Y2goPzpccypbJEEtWmEtel9ceDdmLVx1ZmZmZl1bJFx3XHg3Zi1cdWZmZmZdKik/fGZpbmFsbHkpKVxzKiQvLGI9L14oXHMqKSMvLGM9L15ccyojIyMoPyEjKS8sZD0vXlxzKi87dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihiLGMsZCl7dmFyIGU9dGhpcy4kZ2V0SW5kZW50KGMpLGY9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYyxiKS50b2tlbnM7cmV0dXJuKCFmLmxlbmd0aHx8ZltmLmxlbmd0aC0xXS50eXBlIT09ImNvbW1lbnQiKSYmYj09PSJzdGFydCImJmEudGVzdChjKSYmKGUrPWQpLGV9LHRoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGEsZSxmLGcpe2NvbnNvbGUubG9nKCJ0b2dnbGUiKTt2YXIgaT1uZXcgaCgwLDAsMCwwKTtmb3IodmFyIGo9ZjtqPD1nOysrail7dmFyIGs9ZS5nZXRMaW5lKGopO2lmKGMudGVzdChrKSljb250aW51ZTtiLnRlc3Qoayk/az1rLnJlcGxhY2UoYiwiJDEiKTprPWsucmVwbGFjZShkLCIkJiMiKSxpLmVuZC5yb3c9aS5zdGFydC5yb3c9aixpLmVuZC5jb2x1bW49ay5sZW5ndGgrMSxlLnJlcGxhY2UoaSxrKX19LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgaihbImFjZSJdLCJ3b3JrZXItY29mZmVlLmpzIiwiYWNlL21vZGUvY29mZmVlX3dvcmtlciIsIldvcmtlciIpO3JldHVybiBiLmF0dGFjaFRvRG9jdW1lbnQoYS5nZXREb2N1bWVudCgpKSxiLm9uKCJlcnJvciIsZnVuY3Rpb24oYil7YS5zZXRBbm5vdGF0aW9ucyhbYi5kYXRhXSl9KSxiLm9uKCJvayIsZnVuY3Rpb24oYil7YS5jbGVhckFubm90YXRpb25zKCl9KSxifX0uY2FsbChsLnByb3RvdHlwZSksYi5Nb2RlPWx9KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZV9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2xhbmciLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoKXt2YXIgYT0iWyRBLVphLXpfXFx4N2YtXFx1ZmZmZl1bJFxcd1xceDdmLVxcdWZmZmZdKiIsYj17dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn0sYz1kLmFycmF5VG9NYXAoInRoaXN8dGhyb3d8dGhlbnx0cnl8dHlwZW9mfHN1cGVyfHN3aXRjaHxyZXR1cm58YnJlYWt8YnkpfGNvbnRpbnVlfGNhdGNofGNsYXNzfGlufGluc3RhbmNlb2Z8aXN8aXNudHxpZnxlbHNlfGV4dGVuZHN8Zm9yfGZvcm93bnxmaW5hbGx5fGZ1bmN0aW9ufHdoaWxlfHdoZW58bmV3fG5vfG5vdHxkZWxldGV8ZGVidWdnZXJ8ZG98bG9vcHxvZnxvZmZ8b3J8b258dW5sZXNzfHVudGlsfGFuZHx5ZXMiLnNwbGl0KCJ8IikpLGU9ZC5hcnJheVRvTWFwKCJ0cnVlfGZhbHNlfG51bGx8dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxmPWQuYXJyYXlUb01hcCgiY2FzZXxjb25zdHxkZWZhdWx0fGZ1bmN0aW9ufHZhcnx2b2lkfHdpdGh8ZW51bXxleHBvcnR8aW1wbGVtZW50c3xpbnRlcmZhY2V8bGV0fHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHN0YXRpY3x5aWVsZHxfX2hhc1Byb3B8ZXh0ZW5kc3xzbGljZXxiaW5kfGluZGV4T2YiLnNwbGl0KCJ8IikpLGc9ZC5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258TnVtYmVyfE9iamVjdHxSZWdFeHB8UmVmZXJlbmNlRXJyb3J8UmFuZ2VFcnJvcnxTdHJpbmd8U3ludGF4RXJyb3J8RXJyb3J8RXZhbEVycm9yfFR5cGVFcnJvcnxVUklFcnJvciIuc3BsaXQoInwiKSksaD1kLmFycmF5VG9NYXAoIk1hdGh8SlNPTnxpc05hTnxpc0Zpbml0ZXxwYXJzZUludHxwYXJzZUZsb2F0fGVuY29kZVVSSXxlbmNvZGVVUklDb21wb25lbnR8ZGVjb2RlVVJJfGRlY29kZVVSSUNvbXBvbmVudHxSYW5nZUVycm9yfFN0cmluZ3xTeW50YXhFcnJvcnxFcnJvcnxFdmFsRXJyb3J8VHlwZUVycm9yfFVSSUVycm9yIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiaWRlbnRpZmllciIscmVnZXg6Iig/Oig/OlxcLnw6OilcXHMqKSIrYX0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IkAoPzoiK2ErIik/In0se3Rva2VuOmZ1bmN0aW9uKGEpe3JldHVybiBjLmhhc093blByb3BlcnR5KGEpPyJrZXl3b3JkIjplLmhhc093blByb3BlcnR5KGEpPyJjb25zdGFudC5sYW5ndWFnZSI6Zi5oYXNPd25Qcm9wZXJ0eShhKT8iaW52YWxpZC5pbGxlZ2FsIjpnLmhhc093blByb3BlcnR5KGEpPyJsYW5ndWFnZS5zdXBwb3J0LmNsYXNzIjpoLmhhc093blByb3BlcnR5KGEpPyJsYW5ndWFnZS5zdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OmF9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6Iig/OjB4W1xcZGEtZkEtRl0rfCg/OlxcZCsoPzpcXC5cXGQrKT98XFwuXFxkKykoPzpbZUVdWystXT9cXGQrKT8pIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiInJyciLG5leHQ6InFkb2MifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6JyIiIicsbmV4dDoicXFkb2MifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IiciLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6JyInLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiJgIixuZXh0OiJqcyJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4IixtZXJnZTohMCxyZWdleDoiLy8vIixuZXh0OiJoZXJlZ2V4In0se3Rva2VuOiJzdHJpbmcucmVnZXgiLHJlZ2V4OiIvKD8hXFxzKVteWy9cXG5cXFxcXSooPzogKD86XFxcXC58XFxbW15cXF1cXG5cXFxcXSooPzpcXFxcLlteXFxdXFxuXFxcXF0qKSpcXF0pW15bL1xcblxcXFxdKikqL1tpbWd5XXswLDR9KD8hXFx3KSJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IiMjIyg/ISMpIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiIy4qIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlxcP3xcXDp8XFwsfFxcLiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6Iig/OltcXC09XT58Wy0rKi8lPD4mfF4hPz1dPXw+Pj49P3xcXC1cXC18XFwrXFwrfDo6fCYmPXxcXHxcXHw9fDw8PXw+Pj18XFw/XFwufFxcLnsyLDN9fFxcISkifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6Ilsoe1tdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdfSldIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxZG9jOlt7dG9rZW46InN0cmluZyIscmVnZXg6Ii4qPycnJyIsbmV4dDoic3RhcnQifSxiXSxxcWRvYzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicuKj8iIiInLG5leHQ6InN0YXJ0In0sYl0scXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbXlxcXFwnXSooPzpcXFxcLlteXFxcXCddKikqJyIsbWVyZ2U6ITAsbmV4dDoic3RhcnQifSxiXSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbXlxcXFwiXSooPzpcXFxcLlteXFxcXCJdKikqIicsbWVyZ2U6ITAsbmV4dDoic3RhcnQifSxiXSxqczpbe3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiJbXlxcXFxgXSooPzpcXFxcLlteXFxcXGBdKikqYCIsbmV4dDoic3RhcnQifSxiXSxoZXJlZ2V4Olt7dG9rZW46InN0cmluZy5yZWdleCIscmVnZXg6Ii4qPy8vL1tpbWd5XXswLDR9IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudC5yZWdleCIscmVnZXg6IlxccysoPzojLiopPyJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4IixtZXJnZTohMCxyZWdleDoiXFxTKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj8jIyMiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV19fXZhciBkPWEoIi4uL2xpYi9sYW5nIiksZT1hKCIuLi9saWIvb29wIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzO2UuaW5oZXJpdHMoZyxmKSxiLkNvZmZlZUhpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvcHl0aG9uaWMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZj1iLkZvbGRNb2RlPWZ1bmN0aW9uKGEpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW5ldyBSZWdFeHAoIig/OihbXFxbe10pfCgiK2ErIikpKD86XFxzKikoPzojLiopPyQiKX07ZC5pbmhlcml0cyhmLGUpLGZ1bmN0aW9uKCl7dGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKSxlPWQubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKGUpcmV0dXJuIGVbMV0/dGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGEsZVsxXSxjLGUuaW5kZXgpOmVbMl0/dGhpcy5pbmRlbnRhdGlvbkJsb2NrKGEsYyxlLmluZGV4K2VbMl0ubGVuZ3RoKTp0aGlzLmluZGVudGF0aW9uQmxvY2soYSxjKX19LmNhbGwoZi5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGU9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyk7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3QoZCk/InN0YXJ0IjpiPT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KGQpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihhLGIsYyl7dmFyIGU9L15ccyovLGY9YixnPWIsaD1hLmdldExpbmUoYiksaT1jfHxoLmxlbmd0aCxqPWgubWF0Y2goZSlbMF0ubGVuZ3RoLGs9YS5nZXRMZW5ndGgoKTt3aGlsZSgrK2I8ayl7aD1hLmdldExpbmUoYik7dmFyIGw9aC5tYXRjaChlKVswXS5sZW5ndGg7aWYobD09aC5sZW5ndGgpY29udGludWU7aWYobDw9ailicmVhaztnPWJ9aWYoZz5mKXt2YXIgbT1hLmdldExpbmUoZykubGVuZ3RoO3JldHVybiBuZXcgZChmLGksZyxtKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihhLGIsYyxlLGYsZyl7dmFyIGg9e3JvdzpjLGNvbHVtbjplKzF9LGk9YS4kZmluZENsb3NpbmdCcmFja2V0KGIsaCxmLGcpO2lmKCFpKXJldHVybjt2YXIgaj1hLmZvbGRXaWRnZXRzW2kucm93XTtyZXR1cm4gaj09bnVsbCYmKGo9dGhpcy5nZXRGb2xkV2lkZ2V0KGEsaS5yb3cpKSxqPT0ic3RhcnQiJiYoaS5yb3ctLSxpLmNvbHVtbj1hLmdldExpbmUoaS5yb3cpLmxlbmd0aCksZC5mcm9tUG9pbnRzKGgsaSl9fSkuY2FsbChlLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-coldfusion.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jb2xkZnVzaW9uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS94bWwiLCJhY2UvbW9kZS9qYXZhc2NyaXB0IiwiYWNlL21vZGUvY3NzIiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2NvbGRmdXNpb25faGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4veG1sIikuTW9kZSxmPWEoIi4vamF2YXNjcmlwdCIpLk1vZGUsZz1hKCIuL2NzcyIpLk1vZGUsaD1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaT1hKCIuL2NvbGRmdXNpb25faGlnaGxpZ2h0X3J1bGVzIikuQ29sZGZ1c2lvbkhpZ2hsaWdodFJ1bGVzLGo9ZnVuY3Rpb24oKXtlLmNhbGwodGhpcyk7dmFyIGE9bmV3IGk7dGhpcy4kdG9rZW5pemVyPW5ldyBoKGEuZ2V0UnVsZXMoKSksdGhpcy4kZW1iZWRzPWEuZ2V0RW1iZWRzKCksdGhpcy5jcmVhdGVNb2RlRGVsZWdhdGVzKHsianMtIjpmLCJjc3MtIjpnfSl9O2QuaW5oZXJpdHMoaixlKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRnZXRJbmRlbnQoYil9fS5jYWxsKGoucHJvdG90eXBlKSxiLk1vZGU9an0pLGRlZmluZSgiYWNlL21vZGUveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3htbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvZm9sZGluZy94bWwiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4veG1sX2hpZ2hsaWdodF9ydWxlcyIpLlhtbEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGk9YSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGo9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRiZWhhdmlvdXI9bmV3IGgsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGl9O2QuaW5oZXJpdHMoaixlKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRnZXRJbmRlbnQoYil9fS5jYWxsKGoucHJvdG90eXBlKSxiLk1vZGU9an0pLGRlZmluZSgiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3htbF91dGlsIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGc9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sZS50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0Iil9O2QuaW5oZXJpdHMoZyxmKSxiLlhtbEhpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmErIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmErIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2EsbmV4dDpifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXZhciBkPWEoIi4uL2xpYi9sYW5nIiksZT1kLmFycmF5VG9NYXAoImJ1dHRvbnxmb3JtfGlucHV0fGxhYmVsfHNlbGVjdHx0ZXh0YXJlYSIuc3BsaXQoInwiKSksZj1kLmFycmF5VG9NYXAoInRhYmxlfHRib2R5fHRkfHRmb290fHRofHRyIi5zcGxpdCgifCIpKTtiLnRhZz1mdW5jdGlvbihhLGIsYyl7YVtiXT1be3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjpmdW5jdGlvbihhKXtyZXR1cm4gYT09PSJhIj8ibWV0YS50YWcuYW5jaG9yIjphPT09ImltZyI/Im1ldGEudGFnLmltYWdlIjphPT09InNjcmlwdCI/Im1ldGEudGFnLnNjcmlwdCI6YT09PSJzdHlsZSI/Im1ldGEudGFnLnN0eWxlIjplLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/Im1ldGEudGFnLmZvcm0iOmYuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT8ibWV0YS50YWcudGFibGUiOiJtZXRhLnRhZyJ9LG1lcmdlOiEwLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsiLG5leHQ6YisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDpiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifV0sYVtiKyJfcXN0cmluZyJdPWgoIiciLGIrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGFbYisiX3Fxc3RyaW5nIl09aCgnIicsYisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksYVtiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiXT1be3Rva2VuOiJtZXRhLnRhZyIsbWVyZ2U6ITAscmVnZXg6Ii8/PiIsbmV4dDpjfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI9In0se3Rva2VuOiJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUiLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0uY29uY2F0KGcoYikpfX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1hKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixnPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KGYsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYnJhY2tldHMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IjwiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj8hMTp7dGV4dDoiPD4iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09Ij4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSI+IilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaz1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisyKTtpZihrPT0iPC8iKXt2YXIgbD10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpK2QuZ2V0VGFiU3RyaW5nKCksbT10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbCsiXG4iK20sc2VsZWN0aW9uOlsxLGwubGVuZ3RoLDEsbC5sZW5ndGhdfX19fSl9O2QuaW5oZXJpdHMoZyxlKSxiLlhtbEJlaGF2aW91cj1nfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLGY9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSJ7Iil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6InsiK2crIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSJ9Iil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBsPWQuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93Omgucm93LGNvbHVtbjpoLmNvbHVtbisxfSk7aWYoIWwpcmV0dXJuIG51bGw7dmFyIG09dGhpcy5nZXROZXh0TGluZUluZGVudChhLGkuc3Vic3RyaW5nKDAsaS5sZW5ndGgtMSksZC5nZXRUYWJTdHJpbmcoKSksbj10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShsLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbSsiXG4iK24sc2VsZWN0aW9uOlsxLG0ubGVuZ3RoLDEsbS5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0ieyIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5lbmQuY29sdW1uLGUuZW5kLmNvbHVtbisxKTtpZihoPT0ifSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0iKCIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiIoIitnKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0iKSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09IikiKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSIoIil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSIpIilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09JyInfHxlPT0iJyIpe3ZhciBmPWUsZz1jLmdldFNlbGVjdGlvblJhbmdlKCksaD1kLmRvYy5nZXRUZXh0UmFuZ2UoZyk7aWYoaCE9PSIiKXJldHVybnt0ZXh0OmYraCtmLHNlbGVjdGlvbjohMX07dmFyIGk9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGo9ZC5kb2MuZ2V0TGluZShpLnJvdyksaz1qLnN1YnN0cmluZyhpLmNvbHVtbi0xLGkuY29sdW1uKTtpZihrPT0iXFwiKXJldHVybiBudWxsO3ZhciBsPWQuZ2V0VG9rZW5zKGcuc3RhcnQucm93KSxtPTAsbixvPS0xO2Zvcih2YXIgcD0wO3A8bC5sZW5ndGg7cCsrKXtuPWxbcF0sbi50eXBlPT0ic3RyaW5nIj9vPS0xOm88MCYmKG89bi52YWx1ZS5pbmRleE9mKGYpKTtpZihuLnZhbHVlLmxlbmd0aCttPmcuc3RhcnQuY29sdW1uKWJyZWFrO20rPWxbcF0udmFsdWUubGVuZ3RofWlmKCFufHxvPDAmJm4udHlwZSE9PSJjb21tZW50IiYmKG4udHlwZSE9PSJzdHJpbmcifHxnLnN0YXJ0LmNvbHVtbiE9PW4udmFsdWUubGVuZ3RoK20tMSYmbi52YWx1ZS5sYXN0SW5kZXhPZihmKT09PW4udmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OmYrZixzZWxlY3Rpb246WzEsMV19O2lmKG4mJm4udHlwZT09PSJzdHJpbmciKXt2YXIgcT1qLnN1YnN0cmluZyhpLmNvbHVtbixpLmNvbHVtbisxKTtpZihxPT1mKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiYoZj09JyInfHxmPT0iJyIpKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09JyInKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pfTtkLmluaGVyaXRzKGYsZSksYi5Dc3R5bGVCZWhhdmlvdXI9Zn0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIiwiYWNlL3Rva2VuX2l0ZXJhdG9yIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uLy4uL2xpYi9sYW5nIiksZj1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGc9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxoPWEoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixpPWIuRm9sZE1vZGU9ZnVuY3Rpb24oYSl7Zy5jYWxsKHRoaXMpLHRoaXMudm9pZEVsZW1lbnRzPWF8fHt9fTtkLmluaGVyaXRzKGksZyksZnVuY3Rpb24oKXt0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX2dldEZpcnN0VGFnSW5MaW5lKGEsYyk7cmV0dXJuIGQuY2xvc2luZz9iPT0ibWFya2JlZ2luZW5kIj8iZW5kIjoiIjohZC50YWdOYW1lfHx0aGlzLnZvaWRFbGVtZW50c1tkLnRhZ05hbWUudG9Mb3dlckNhc2UoKV0/IiI6ZC5zZWxmQ2xvc2luZz8iIjpkLnZhbHVlLmluZGV4T2YoIi8iK2QudGFnTmFtZSkhPT0tMT8iIjoic3RhcnQifSx0aGlzLl9nZXRGaXJzdFRhZ0luTGluZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0VG9rZW5zKGIpLGQ9IiI7Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspe3ZhciBnPWNbZl07Zy50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wP2QrPWcudmFsdWU6ZCs9ZS5zdHJpbmdSZXBlYXQoIiAiLGcudmFsdWUubGVuZ3RoKX1yZXR1cm4gdGhpcy5fcGFyc2VUYWcoZCl9LHRoaXMudGFnUmU9L14oXHMqKSg8PyhcLz8pKFstX2EtekEtWjAtOTohXSopXHMqKFwvPyk+PykvLHRoaXMuX3BhcnNlVGFnPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFnUmUuZXhlYyhhKSxjPXRoaXMudGFnUmUubGFzdEluZGV4fHwwO3JldHVybiB0aGlzLnRhZ1JlLmxhc3RJbmRleD0wLHt2YWx1ZTphLG1hdGNoOmI/YlsyXToiIixjbG9zaW5nOmI/ISFiWzNdOiExLHNlbGZDbG9zaW5nOmI/ISFiWzVdfHxiWzJdPT0iLz4iOiExLHRhZ05hbWU6Yj9iWzRdOiIiLGNvbHVtbjpiWzFdP2MrYlsxXS5sZW5ndGg6Y319LHRoaXMuX3JlYWRUYWdGb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q3VycmVudFRva2VuKCk7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGM9IiIsZDtkbyBpZihiLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTApe2lmKCFkKXZhciBkPXtyb3c6YS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46YS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX07Yys9Yi52YWx1ZTtpZihjLmluZGV4T2YoIj4iKSE9PS0xKXt2YXIgZT10aGlzLl9wYXJzZVRhZyhjKTtyZXR1cm4gZS5zdGFydD1kLGUuZW5kPXtyb3c6YS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46YS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKStiLnZhbHVlLmxlbmd0aH0sYS5zdGVwRm9yd2FyZCgpLGV9fXdoaWxlKGI9YS5zdGVwRm9yd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcmVhZFRhZ0JhY2t3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q3VycmVudFRva2VuKCk7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGM9IiIsZDtkbyBpZihiLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTApe2R8fChkPXtyb3c6YS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46YS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKStiLnZhbHVlLmxlbmd0aH0pLGM9Yi52YWx1ZStjO2lmKGMuaW5kZXhPZigiPCIpIT09LTEpe3ZhciBlPXRoaXMuX3BhcnNlVGFnKGMpO3JldHVybiBlLmVuZD1kLGUuc3RhcnQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfSxhLnN0ZXBCYWNrd2FyZCgpLGV9fXdoaWxlKGI9YS5zdGVwQmFja3dhcmQoKSk7cmV0dXJuIG51bGx9LHRoaXMuX3BvcD1mdW5jdGlvbihhLGIpe3doaWxlKGEubGVuZ3RoKXt2YXIgYz1hW2EubGVuZ3RoLTFdO2lmKCFifHxjLnRhZ05hbWU9PWIudGFnTmFtZSlyZXR1cm4gYS5wb3AoKTtpZih0aGlzLnZvaWRFbGVtZW50c1tiLnRhZ05hbWVdKXJldHVybjtpZih0aGlzLnZvaWRFbGVtZW50c1tjLnRhZ05hbWVdKXthLnBvcCgpO2NvbnRpbnVlfXJldHVybiBudWxsfX0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX2dldEZpcnN0VGFnSW5MaW5lKGEsYyk7aWYoIWQubWF0Y2gpcmV0dXJuIG51bGw7dmFyIGU9ZC5jbG9zaW5nfHxkLnNlbGZDbG9zaW5nLGc9W10saTtpZighZSl7dmFyIGo9bmV3IGgoYSxjLGQuY29sdW1uKSxrPXtyb3c6Yyxjb2x1bW46ZC5jb2x1bW4rZC50YWdOYW1lLmxlbmd0aCsyfTt3aGlsZShpPXRoaXMuX3JlYWRUYWdGb3J3YXJkKGopKXtpZihpLnNlbGZDbG9zaW5nKXtpZighZy5sZW5ndGgpcmV0dXJuIGkuc3RhcnQuY29sdW1uKz1pLnRhZ05hbWUubGVuZ3RoKzIsaS5lbmQuY29sdW1uLT0yLGYuZnJvbVBvaW50cyhpLnN0YXJ0LGkuZW5kKTtjb250aW51ZX1pZihpLmNsb3Npbmcpe3RoaXMuX3BvcChnLGkpO2lmKGcubGVuZ3RoPT0wKXJldHVybiBmLmZyb21Qb2ludHMoayxpLnN0YXJ0KX1lbHNlIGcucHVzaChpKX19ZWxzZXt2YXIgaj1uZXcgaChhLGMsZC5jb2x1bW4rZC5tYXRjaC5sZW5ndGgpLGw9e3JvdzpjLGNvbHVtbjpkLmNvbHVtbn07d2hpbGUoaT10aGlzLl9yZWFkVGFnQmFja3dhcmQoaikpe2lmKGkuc2VsZkNsb3Npbmcpe2lmKCFnLmxlbmd0aClyZXR1cm4gaS5zdGFydC5jb2x1bW4rPWkudGFnTmFtZS5sZW5ndGgrMixpLmVuZC5jb2x1bW4tPTIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsaS5lbmQpO2NvbnRpbnVlfWlmKCFpLmNsb3Npbmcpe3RoaXMuX3BvcChnLGkpO2lmKGcubGVuZ3RoPT0wKXJldHVybiBpLnN0YXJ0LmNvbHVtbis9aS50YWdOYW1lLmxlbmd0aCsyLGYuZnJvbVBvaW50cyhpLnN0YXJ0LGwpfWVsc2UgZy5wdXNoKGkpfX19fS5jYWxsKGkucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGs9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGw9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLG09ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgayx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ZC5pbmhlcml0cyhtLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopXC9cLy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucyxnPWUuc3RhdGU7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCJ8fGE9PSJyZWdleF9hbGxvd2VkIil7dmFyIGg9Yi5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTtoJiYoZCs9Yyl9ZWxzZSBpZihhPT0iZG9jLXN0YXJ0Iil7aWYoZz09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciBoPWIubWF0Y2goL15ccyooXC8/KVwqLyk7aCYmKGhbMV0mJihkKz0iICIpLGQrPSIqICIpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooWyJhY2UiXSwid29ya2VyLWphdmFzY3JpcHQuanMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigianNsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPGIuZGF0YS5sZW5ndGg7ZCsrKXt2YXIgZT1iLmRhdGFbZF07ZSYmYy5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY2hhcmFjdGVyLTEsdGV4dDplLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50OmV9KX1hLnNldEFubm90YXRpb25zKGMpfSksYi5vbigibmFyY2lzc3VzIixmdW5jdGlvbihiKXthLnNldEFubm90YXRpb25zKFtiLmRhdGFdKX0pLGIub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXthLmNsZWFyQW5ub3RhdGlvbnMoKX0pLGJ9fS5jYWxsKG0ucHJvdG90eXBlKSxiLk1vZGU9bX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4uL3VuaWNvZGUiKSxnPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksYz0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIsZD1lLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGk9ZS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGo9ZS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksaz0iWyIrZi5wYWNrYWdlcy5MKyJcXCRfXVsiK2YucGFja2FnZXMuTCtmLnBhY2thZ2VzLk1uK2YucGFja2FnZXMuTWMrZi5wYWNrYWdlcy5OZCtmLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGw9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LGcuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitrKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrYysiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/InZhcmlhYmxlLmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmguaGFzT3duUHJvcGVydHkoYyk/InN0b3JhZ2UudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmouaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuaWxsZWdhbCI6Yz09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omt9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omt9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhnLCJkb2MtIixbZy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaSxoKSxiLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvY3NzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vY3NzX2hpZ2hsaWdodF9ydWxlcyIpLkNzc0hpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxqPWEoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxrPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGp9O2QuaW5oZXJpdHMoayxlKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1J1bGVzPSJjU3R5bGUiLHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSkudG9rZW5zO2lmKGUubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDt2YXIgZj1iLm1hdGNoKC9eLipce1xzKiQvKTtyZXR1cm4gZiYmKGQrPWMpLGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgaShbImFjZSJdLCJ3b3JrZXItY3NzLmpzIiwiYWNlL21vZGUvY3NzX3dvcmtlciIsIldvcmtlciIpO3JldHVybiBiLmF0dGFjaFRvRG9jdW1lbnQoYS5nZXREb2N1bWVudCgpKSxiLm9uKCJjc3NsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtiLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXtjLnB1c2goe3JvdzphLmxpbmUtMSxjb2x1bW46YS5jb2wtMSx0ZXh0OmEubWVzc2FnZSx0eXBlOmEudHlwZSxsaW50OmF9KX0pLGEuc2V0QW5ub3RhdGlvbnMoYyl9KSxifX0uY2FsbChrLnByb3RvdHlwZSksYi5Nb2RlPWt9KSxkZWZpbmUoImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGc9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoImFuaW1hdGlvbi1maWxsLW1vZGV8YWxpZ25tZW50LWFkanVzdHxhbGlnbm1lbnQtYmFzZWxpbmV8YW5pbWF0aW9uLWRlbGF5fGFuaW1hdGlvbi1kaXJlY3Rpb258YW5pbWF0aW9uLWR1cmF0aW9ufGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnR8YW5pbWF0aW9uLW5hbWV8YW5pbWF0aW9uLXBsYXktc3RhdGV8YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbnxhbmltYXRpb258YXBwZWFyYW5jZXxhemltdXRofGJhY2tmYWNlLXZpc2liaWxpdHl8YmFja2dyb3VuZC1hdHRhY2htZW50fGJhY2tncm91bmQtYnJlYWt8YmFja2dyb3VuZC1jbGlwfGJhY2tncm91bmQtY29sb3J8YmFja2dyb3VuZC1pbWFnZXxiYWNrZ3JvdW5kLW9yaWdpbnxiYWNrZ3JvdW5kLXBvc2l0aW9ufGJhY2tncm91bmQtcmVwZWF0fGJhY2tncm91bmQtc2l6ZXxiYWNrZ3JvdW5kfGJhc2VsaW5lLXNoaWZ0fGJpbmRpbmd8YmxlZWR8Ym9va21hcmstbGFiZWx8Ym9va21hcmstbGV2ZWx8Ym9va21hcmstc3RhdGV8Ym9va21hcmstdGFyZ2V0fGJvcmRlci1ib3R0b218Ym9yZGVyLWJvdHRvbS1jb2xvcnxib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzfGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzfGJvcmRlci1ib3R0b20tc3R5bGV8Ym9yZGVyLWJvdHRvbS13aWR0aHxib3JkZXItY29sbGFwc2V8Ym9yZGVyLWNvbG9yfGJvcmRlci1pbWFnZXxib3JkZXItaW1hZ2Utb3V0c2V0fGJvcmRlci1pbWFnZS1yZXBlYXR8Ym9yZGVyLWltYWdlLXNsaWNlfGJvcmRlci1pbWFnZS1zb3VyY2V8Ym9yZGVyLWltYWdlLXdpZHRofGJvcmRlci1sZWZ0fGJvcmRlci1sZWZ0LWNvbG9yfGJvcmRlci1sZWZ0LXN0eWxlfGJvcmRlci1sZWZ0LXdpZHRofGJvcmRlci1yYWRpdXN8Ym9yZGVyLXJpZ2h0fGJvcmRlci1yaWdodC1jb2xvcnxib3JkZXItcmlnaHQtc3R5bGV8Ym9yZGVyLXJpZ2h0LXdpZHRofGJvcmRlci1zcGFjaW5nfGJvcmRlci1zdHlsZXxib3JkZXItdG9wfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1c3xib3JkZXItdG9wLXJpZ2h0LXJhZGl1c3xib3JkZXItdG9wLXN0eWxlfGJvcmRlci10b3Atd2lkdGh8Ym9yZGVyLXdpZHRofGJvcmRlcnxib3R0b218Ym94LWFsaWdufGJveC1kZWNvcmF0aW9uLWJyZWFrfGJveC1kaXJlY3Rpb258Ym94LWZsZXgtZ3JvdXB8Ym94LWZsZXh8Ym94LWxpbmVzfGJveC1vcmRpbmFsLWdyb3VwfGJveC1vcmllbnR8Ym94LXBhY2t8Ym94LXNoYWRvd3xib3gtc2l6aW5nfGJyZWFrLWFmdGVyfGJyZWFrLWJlZm9yZXxicmVhay1pbnNpZGV8Y2FwdGlvbi1zaWRlfGNsZWFyfGNsaXB8Y29sb3ItcHJvZmlsZXxjb2xvcnxjb2x1bW4tY291bnR8Y29sdW1uLWZpbGx8Y29sdW1uLWdhcHxjb2x1bW4tcnVsZXxjb2x1bW4tcnVsZS1jb2xvcnxjb2x1bW4tcnVsZS1zdHlsZXxjb2x1bW4tcnVsZS13aWR0aHxjb2x1bW4tc3Bhbnxjb2x1bW4td2lkdGh8Y29sdW1uc3xjb250ZW50fGNvdW50ZXItaW5jcmVtZW50fGNvdW50ZXItcmVzZXR8Y3JvcHxjdWUtYWZ0ZXJ8Y3VlLWJlZm9yZXxjdWV8Y3Vyc29yfGRpcmVjdGlvbnxkaXNwbGF5fGRvbWluYW50LWJhc2VsaW5lfGRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3R8ZHJvcC1pbml0aWFsLWFmdGVyLWFsaWdufGRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0fGRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ258ZHJvcC1pbml0aWFsLXNpemV8ZHJvcC1pbml0aWFsLXZhbHVlfGVsZXZhdGlvbnxlbXB0eS1jZWxsc3xmaXR8Zml0LXBvc2l0aW9ufGZsb2F0LW9mZnNldHxmbG9hdHxmb250LWZhbWlseXxmb250LXNpemV8Zm9udC1zaXplLWFkanVzdHxmb250LXN0cmV0Y2h8Zm9udC1zdHlsZXxmb250LXZhcmlhbnR8Zm9udC13ZWlnaHR8Zm9udHxncmlkLWNvbHVtbnN8Z3JpZC1yb3dzfGhhbmdpbmctcHVuY3R1YXRpb258aGVpZ2h0fGh5cGhlbmF0ZS1hZnRlcnxoeXBoZW5hdGUtYmVmb3JlfGh5cGhlbmF0ZS1jaGFyYWN0ZXJ8aHlwaGVuYXRlLWxpbmVzfGh5cGhlbmF0ZS1yZXNvdXJjZXxoeXBoZW5zfGljb258aW1hZ2Utb3JpZW50YXRpb258aW1hZ2UtcmVuZGVyaW5nfGltYWdlLXJlc29sdXRpb258aW5saW5lLWJveC1hbGlnbnxsZWZ0fGxldHRlci1zcGFjaW5nfGxpbmUtaGVpZ2h0fGxpbmUtc3RhY2tpbmctcnVieXxsaW5lLXN0YWNraW5nLXNoaWZ0fGxpbmUtc3RhY2tpbmctc3RyYXRlZ3l8bGluZS1zdGFja2luZ3xsaXN0LXN0eWxlLWltYWdlfGxpc3Qtc3R5bGUtcG9zaXRpb258bGlzdC1zdHlsZS10eXBlfGxpc3Qtc3R5bGV8bWFyZ2luLWJvdHRvbXxtYXJnaW4tbGVmdHxtYXJnaW4tcmlnaHR8bWFyZ2luLXRvcHxtYXJnaW58bWFyay1hZnRlcnxtYXJrLWJlZm9yZXxtYXJrfG1hcmtzfG1hcnF1ZWUtZGlyZWN0aW9ufG1hcnF1ZWUtcGxheS1jb3VudHxtYXJxdWVlLXNwZWVkfG1hcnF1ZWUtc3R5bGV8bWF4LWhlaWdodHxtYXgtd2lkdGh8bWluLWhlaWdodHxtaW4td2lkdGh8bW92ZS10b3xuYXYtZG93bnxuYXYtaW5kZXh8bmF2LWxlZnR8bmF2LXJpZ2h0fG5hdi11cHxvcGFjaXR5fG9ycGhhbnN8b3V0bGluZS1jb2xvcnxvdXRsaW5lLW9mZnNldHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtd2lkdGh8b3V0bGluZXxvdmVyZmxvdy1zdHlsZXxvdmVyZmxvdy14fG92ZXJmbG93LXl8b3ZlcmZsb3d8cGFkZGluZy1ib3R0b218cGFkZGluZy1sZWZ0fHBhZGRpbmctcmlnaHR8cGFkZGluZy10b3B8cGFkZGluZ3xwYWdlLWJyZWFrLWFmdGVyfHBhZ2UtYnJlYWstYmVmb3JlfHBhZ2UtYnJlYWstaW5zaWRlfHBhZ2UtcG9saWN5fHBhZ2V8cGF1c2UtYWZ0ZXJ8cGF1c2UtYmVmb3JlfHBhdXNlfHBlcnNwZWN0aXZlLW9yaWdpbnxwZXJzcGVjdGl2ZXxwaG9uZW1lc3xwaXRjaC1yYW5nZXxwaXRjaHxwbGF5LWR1cmluZ3xwb3NpdGlvbnxwcmVzZW50YXRpb24tbGV2ZWx8cHVuY3R1YXRpb24tdHJpbXxxdW90ZXN8cmVuZGVyaW5nLWludGVudHxyZXNpemV8cmVzdC1hZnRlcnxyZXN0LWJlZm9yZXxyZXN0fHJpY2huZXNzfHJpZ2h0fHJvdGF0aW9uLXBvaW50fHJvdGF0aW9ufHJ1YnktYWxpZ258cnVieS1vdmVyaGFuZ3xydWJ5LXBvc2l0aW9ufHJ1Ynktc3BhbnxzaXplfHNwZWFrLWhlYWRlcnxzcGVhay1udW1lcmFsfHNwZWFrLXB1bmN0dWF0aW9ufHNwZWFrfHNwZWVjaC1yYXRlfHN0cmVzc3xzdHJpbmctc2V0fHRhYmxlLWxheW91dHx0YXJnZXQtbmFtZXx0YXJnZXQtbmV3fHRhcmdldC1wb3NpdGlvbnx0YXJnZXR8dGV4dC1hbGlnbi1sYXN0fHRleHQtYWxpZ258dGV4dC1kZWNvcmF0aW9ufHRleHQtZW1waGFzaXN8dGV4dC1oZWlnaHR8dGV4dC1pbmRlbnR8dGV4dC1qdXN0aWZ5fHRleHQtb3V0bGluZXx0ZXh0LXNoYWRvd3x0ZXh0LXRyYW5zZm9ybXx0ZXh0LXdyYXB8dG9wfHRyYW5zZm9ybS1vcmlnaW58dHJhbnNmb3JtLXN0eWxlfHRyYW5zZm9ybXx0cmFuc2l0aW9uLWRlbGF5fHRyYW5zaXRpb24tZHVyYXRpb258dHJhbnNpdGlvbi1wcm9wZXJ0eXx0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbnx0cmFuc2l0aW9ufHVuaWNvZGUtYmlkaXx2ZXJ0aWNhbC1hbGlnbnx2aXNpYmlsaXR5fHZvaWNlLWJhbGFuY2V8dm9pY2UtZHVyYXRpb258dm9pY2UtZmFtaWx5fHZvaWNlLXBpdGNoLXJhbmdlfHZvaWNlLXBpdGNofHZvaWNlLXJhdGV8dm9pY2Utc3RyZXNzfHZvaWNlLXZvbHVtZXx2b2x1bWV8d2hpdGUtc3BhY2UtY29sbGFwc2V8d2hpdGUtc3BhY2V8d2lkb3dzfHdpZHRofHdvcmQtYnJlYWt8d29yZC1zcGFjaW5nfHdvcmQtd3JhcHx6LWluZGV4Ii5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgicmdifHJnYmF8dXJsfGF0dHJ8Y291bnRlcnxjb3VudGVycyIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoImFic29sdXRlfGFmdGVyLWVkZ2V8YWZ0ZXJ8YWxsLXNjcm9sbHxhbGx8YWxwaGFiZXRpY3xhbHdheXN8YW50aWFsaWFzZWR8YXJtZW5pYW58YXV0b3xhdm9pZC1jb2x1bW58YXZvaWQtcGFnZXxhdm9pZHxiYWxhbmNlfGJhc2VsaW5lfGJlZm9yZS1lZGdlfGJlZm9yZXxiZWxvd3xiaWRpLW92ZXJyaWRlfGJsb2NrLWxpbmUtaGVpZ2h0fGJsb2NrfGJvbGR8Ym9sZGVyfGJvcmRlci1ib3h8Ym90aHxib3R0b218Ym94fGJyZWFrLWFsbHxicmVhay13b3JkfGNhcGl0YWxpemV8Y2Fwcy1oZWlnaHR8Y2FwdGlvbnxjZW50ZXJ8Y2VudHJhbHxjaGFyfGNpcmNsZXxjamstaWRlb2dyYXBoaWN8Y2xvbmV8Y2xvc2UtcXVvdGV8Y29sLXJlc2l6ZXxjb2xsYXBzZXxjb2x1bW58Y29uc2lkZXItc2hpZnRzfGNvbnRhaW58Y29udGVudC1ib3h8Y292ZXJ8Y3Jvc3NoYWlyfGN1YmljLWJlemllcnxkYXNoZWR8ZGVjaW1hbC1sZWFkaW5nLXplcm98ZGVjaW1hbHxkZWZhdWx0fGRpc2FibGVkfGRpc2N8ZGlzcmVnYXJkLXNoaWZ0c3xkaXN0cmlidXRlLWFsbC1saW5lc3xkaXN0cmlidXRlLWxldHRlcnxkaXN0cmlidXRlLXNwYWNlfGRpc3RyaWJ1dGV8ZG90dGVkfGRvdWJsZXxlLXJlc2l6ZXxlYXNlLWlufGVhc2UtaW4tb3V0fGVhc2Utb3V0fGVhc2V8ZWxsaXBzaXN8ZW5kfGV4Y2x1ZGUtcnVieXxmaWxsfGZpeGVkfGZvbnQtc2l6ZXxmb250fGdlb3JnaWFufGdseXBoc3xncmlkLWhlaWdodHxncm9vdmV8aGFuZHxoYW5naW5nfGhlYnJld3xoZWxwfGhpZGRlbnxoaXJhZ2FuYS1pcm9oYXxoaXJhZ2FuYXxob3Jpem9udGFsfGljb258aWRlb2dyYXBoLWFscGhhfGlkZW9ncmFwaC1udW1lcmljfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtc3BhY2V8aWRlb2dyYXBoaWN8aW5hY3RpdmV8aW5jbHVkZS1ydWJ5fGluaGVyaXR8aW5pdGlhbHxpbmxpbmUtYmxvY2t8aW5saW5lLWJveHxpbmxpbmUtbGluZS1oZWlnaHR8aW5saW5lLXRhYmxlfGlubGluZXxpbnNldHxpbnNpZGV8aW50ZXItaWRlb2dyYXBofGludGVyLXdvcmR8aW52ZXJ0fGl0YWxpY3xqdXN0aWZ5fGthdGFrYW5hLWlyb2hhfGthdGFrYW5hfGtlZXAtYWxsfGxhc3R8bGVmdHxsaWdodGVyfGxpbmUtZWRnZXxsaW5lLXRocm91Z2h8bGluZXxsaW5lYXJ8bGlzdC1pdGVtfGxvY2FsfGxvb3NlfGxvd2VyLWFscGhhfGxvd2VyLWdyZWVrfGxvd2VyLWxhdGlufGxvd2VyLXJvbWFufGxvd2VyY2FzZXxsci10YnxsdHJ8bWF0aGVtYXRpY2FsfG1heC1oZWlnaHR8bWF4LXNpemV8bWVkaXVtfG1lbnV8bWVzc2FnZS1ib3h8bWlkZGxlfG1vdmV8bi1yZXNpemV8bmUtcmVzaXplfG5ld3NwYXBlcnxuby1jaGFuZ2V8bm8tY2xvc2UtcXVvdGV8bm8tZHJvcHxuby1vcGVuLXF1b3RlfG5vLXJlcGVhdHxub25lfG5vcm1hbHxub3QtYWxsb3dlZHxub3dyYXB8bnctcmVzaXplfG9ibGlxdWV8b3Blbi1xdW90ZXxvdXRzZXR8b3V0c2lkZXxvdmVybGluZXxwYWRkaW5nLWJveHxwYWdlfHBvaW50ZXJ8cHJlLWxpbmV8cHJlLXdyYXB8cHJlfHByZXNlcnZlLTNkfHByb2dyZXNzfHJlbGF0aXZlfHJlcGVhdC14fHJlcGVhdC15fHJlcGVhdHxyZXBsYWNlZHxyZXNldC1zaXplfHJpZGdlfHJpZ2h0fHJvdW5kfHJvdy1yZXNpemV8cnRsfHMtcmVzaXplfHNjcm9sbHxzZS1yZXNpemV8c2VwYXJhdGV8c2xpY2V8c21hbGwtY2Fwc3xzbWFsbC1jYXB0aW9ufHNvbGlkfHNwYWNlfHNxdWFyZXxzdGFydHxzdGF0aWN8c3RhdHVzLWJhcnxzdGVwLWVuZHxzdGVwLXN0YXJ0fHN0ZXBzfHN0cmV0Y2h8c3RyaWN0fHN1YnxzdXBlcnxzdy1yZXNpemV8dGFibGUtY2FwdGlvbnx0YWJsZS1jZWxsfHRhYmxlLWNvbHVtbi1ncm91cHx0YWJsZS1jb2x1bW58dGFibGUtZm9vdGVyLWdyb3VwfHRhYmxlLWhlYWRlci1ncm91cHx0YWJsZS1yb3ctZ3JvdXB8dGFibGUtcm93fHRhYmxlfHRiLXJsfHRleHQtYWZ0ZXItZWRnZXx0ZXh0LWJlZm9yZS1lZGdlfHRleHQtYm90dG9tfHRleHQtc2l6ZXx0ZXh0LXRvcHx0ZXh0fHRoaWNrfHRoaW58dG9wfHRyYW5zcGFyZW50fHVuZGVybGluZXx1cHBlci1hbHBoYXx1cHBlci1sYXRpbnx1cHBlci1yb21hbnx1cHBlcmNhc2V8dXNlLXNjcmlwdHx2ZXJ0aWNhbC1pZGVvZ3JhcGhpY3x2ZXJ0aWNhbC10ZXh0fHZpc2libGV8dy1yZXNpemV8d2FpdHx3aGl0ZXNwYWNlfHotaW5kZXh8emVybyIuc3BsaXQoInwiKSksZD1lLmFycmF5VG9NYXAoImFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3ciLnNwbGl0KCJ8IikpLGY9ZS5hcnJheVRvTWFwKCJhcmlhbHxjZW50dXJ5fGNvbWljfGNvdXJpZXJ8Z2FyYW1vbmR8Z2VvcmdpYXxoZWx2ZXRpY2F8aW1wYWN0fGx1Y2lkYXxzeW1ib2x8c3lzdGVtfHRhaG9tYXx0aW1lc3x0cmVidWNoZXR8dXRvcGlhfHZlcmRhbmF8d2ViZGluZ3N8c2Fucy1zZXJpZnxzZXJpZnxtb25vc3BhY2UiLnNwbGl0KCJ8IikpLGc9IlxcLT8oPzooPzpbMC05XSspfCg/OlswLTldKlxcLlswLTldKykpIixoPSIoXFw6KylcXGIoYWZ0ZXJ8YmVmb3JlfGZpcnN0LWxldHRlcnxmaXJzdC1saW5lfG1vei1zZWxlY3Rpb258c2VsZWN0aW9uKVxcYiIsaT0iKDopXFxiKGFjdGl2ZXxjaGVja2VkfGRpc2FibGVkfGVtcHR5fGVuYWJsZWR8Zmlyc3QtY2hpbGR8Zmlyc3Qtb2YtdHlwZXxmb2N1c3xob3ZlcnxpbmRldGVybWluYXRlfGludmFsaWR8bGFzdC1jaGlsZHxsYXN0LW9mLXR5cGV8bGlua3xub3R8bnRoLWNoaWxkfG50aC1sYXN0LWNoaWxkfG50aC1sYXN0LW9mLXR5cGV8bnRoLW9mLXR5cGV8b25seS1jaGlsZHxvbmx5LW9mLXR5cGV8cmVxdWlyZWR8cm9vdHx0YXJnZXR8dmFsaWR8dmlzaXRlZClcXGIiLGo9W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoicnVsZXNldF9jb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyIsImtleXdvcmQiXSxyZWdleDoiKCIrZysiKShjaHxjbXxkZWd8ZW18ZXh8ZnJ8Z2R8Z3JhZHxIenxpbnxrSHp8bW18bXN8cGN8cHR8cHh8cmFkfHJlbXxzfHR1cm58dmh8dm18dnd8JSkifSx7dG9rZW46WyJjb25zdGFudC5udW1lcmljIl0scmVnZXg6IihbMC05XSspIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezZ9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezN9In0se3Rva2VuOlsicHVuY3R1YXRpb24iLCJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUucHNldWRvLWVsZW1lbnQuY3NzIl0scmVnZXg6aH0se3Rva2VuOlsicHVuY3R1YXRpb24iLCJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUucHNldWRvLWNsYXNzLmNzcyJdLHJlZ2V4Oml9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LnR5cGUiOmIuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5mdW5jdGlvbiI6Yy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50IjpkLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuY29sb3IiOmYuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudC5mb250cyI6InRleHQifSxyZWdleDoiXFwtP1thLXpBLVpfXVthLXpBLVowLTlfXFwtXSoifV0saz1lLmNvcHlBcnJheShqKTtrLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0pO3ZhciBsPWUuY29weUFycmF5KGopO2wudW5zaGlmdCh7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IlxcfSIsbmV4dDoibWVkaWEifSk7dmFyIG09W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLG49ZS5jb3B5QXJyYXkobSk7bi51bnNoaWZ0KHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSk7dmFyIG89ZS5jb3B5QXJyYXkobSk7by51bnNoaWZ0KHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoibWVkaWEifSk7dmFyIHA9ZS5jb3B5QXJyYXkobSk7cC51bnNoaWZ0KHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoicnVsZXNldCJ9KSx0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJALio/eyIsbmV4dDoibWVkaWEifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIjW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwuW2EtejAtOS1fXSsifSx7dG9rZW46InN0cmluZyIscmVnZXg6IjpbYS16MC05LV9dKyJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiJbYS16MC05LV9dKyJ9XSxtZWRpYTpbe3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJtZWRpYV9jb21tZW50In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJcXHsiLG5leHQ6Im1lZGlhX3J1bGVzZXQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcfSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIjW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwuW2EtejAtOS1fXSsifSx7dG9rZW46InN0cmluZyIscmVnZXg6IjpbYS16MC05LV9dKyJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiJbYS16MC05LV9dKyJ9XSxjb21tZW50Om4scnVsZXNldDprLHJ1bGVzZXRfY29tbWVudDpwLG1lZGlhX3J1bGVzZXQ6bCxtZWRpYV9jb21tZW50Om99fTtkLmluaGVyaXRzKGcsZiksYi5Dc3NIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9jb2xkZnVzaW9uX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfdXRpbCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL2Nzc19oaWdobGlnaHRfcnVsZXMiKS5Dc3NIaWdobGlnaHRSdWxlcyxmPWEoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsZz1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi94bWxfdXRpbCIpLGk9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjwoPz1zKnNjcmlwdCkiLG5leHQ6InNjcmlwdCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzdHlsZSkiLG5leHQ6InN0eWxlIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0saC50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0IiksaC50YWcodGhpcy4kcnVsZXMsInN0eWxlIiwiY3NzLXN0YXJ0IiksaC50YWcodGhpcy4kcnVsZXMsInNjcmlwdCIsImpzLXN0YXJ0IiksdGhpcy5lbWJlZFJ1bGVzKGYsImpzLSIsW3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qKD89PFxcL3NjcmlwdD4pIixuZXh0OiJ0YWcifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXNjcmlwdCkiLG5leHQ6InRhZyJ9XSksdGhpcy5lbWJlZFJ1bGVzKGUsImNzcy0iLFt7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXN0eWxlKSIsbmV4dDoidGFnIn1dKX07ZC5pbmhlcml0cyhpLGcpLGIuQ29sZGZ1c2lvbkhpZ2hsaWdodFJ1bGVzPWl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-csharp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jc2hhcnAiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY3NoYXJwX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vY3NoYXJwX2hpZ2hsaWdodF9ydWxlcyIpLkNTaGFycEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsaj1hKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsaz1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy4kYmVoYXZpb3VyPW5ldyBpLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBqfTtkLmluaGVyaXRzKGssZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnM7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCIpe3ZhciBnPWIubWF0Y2goL14uKltce1woXFtdXHMqJC8pO2cmJihkKz1jKX1yZXR1cm4gZH0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudChiLGMpfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KGIsYyl9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsfX0uY2FsbChrLnByb3RvdHlwZSksYi5Nb2RlPWt9KSxkZWZpbmUoImFjZS9tb2RlL2NzaGFycF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxnPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsaD1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYWJzdHJhY3R8ZXZlbnR8bmV3fHN0cnVjdHxhc3xleHBsaWNpdHxudWxsfHN3aXRjaHxiYXNlfGV4dGVybnxvYmplY3R8dGhpc3xib29sfGZhbHNlfG9wZXJhdG9yfHRocm93fGJyZWFrfGZpbmFsbHl8b3V0fHRydWV8Ynl0ZXxmaXhlZHxvdmVycmlkZXx0cnl8Y2FzZXxmbG9hdHxwYXJhbXN8dHlwZW9mfGNhdGNofGZvcnxwcml2YXRlfHVpbnR8Y2hhcnxmb3JlYWNofHByb3RlY3RlZHx1bG9uZ3xjaGVja2VkfGdvdG98cHVibGljfHVuY2hlY2tlZHxjbGFzc3xpZnxyZWFkb25seXx1bnNhZmV8Y29uc3R8aW1wbGljaXR8cmVmfHVzaG9ydHxjb250aW51ZXxpbnxyZXR1cm58dXNpbmd8ZGVjaW1hbHxpbnR8c2J5dGV8dmlydHVhbHxkZWZhdWx0fGludGVyZmFjZXxzZWFsZWR8dm9sYXRpbGV8ZGVsZWdhdGV8aW50ZXJuYWx8c2hvcnR8dm9pZHxkb3xpc3xzaXplb2Z8d2hpbGV8ZG91YmxlfGxvY2t8c3RhY2thbGxvY3xlbHNlfGxvbmd8c3RhdGljfGVudW18bmFtZXNwYWNlfHN0cmluZ3x2YXJ8ZHluYW1pYyIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoIm51bGx8dHJ1ZXxmYWxzZSIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxmLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwqIixtZXJnZTohMCxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjBbeFhdWzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4OiIoPzp0cnVlfGZhbHNlKVxcYiJ9LHt0b2tlbjpmdW5jdGlvbihjKXtyZXR1cm4gYz09InRoaXMiPyJ2YXJpYWJsZS5sYW5ndWFnZSI6YS5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8XFwkfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcXHxcXHx8XFw/XFw6fFxcKj18JT18XFwrPXxcXC09fCY9fFxcXj18XFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJcXD98XFw6fFxcLHxcXDt8XFwuIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSx0aGlzLmVtYmVkUnVsZXMoZiwiZG9jLSIsW2YuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtkLmluaGVyaXRzKGgsZyksYi5DU2hhcnBIaWdobGlnaHRSdWxlcz1ofSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-css.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jc3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsaD1hKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxpPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGo9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGs9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpLCJpIiksdGhpcy4kb3V0ZGVudD1uZXcgaCx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgan07ZC5pbmhlcml0cyhrLGUpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nUnVsZXM9ImNTdHlsZSIsdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKS50b2tlbnM7aWYoZS5sZW5ndGgmJmVbZS5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO3ZhciBmPWIubWF0Y2goL14uKlx7XHMqJC8pO3JldHVybiBmJiYoZCs9YyksZH0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudChiLGMpfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KGIsYyl9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBpKFsiYWNlIl0sIndvcmtlci1jc3MuanMiLCJhY2UvbW9kZS9jc3Nfd29ya2VyIiwiV29ya2VyIik7cmV0dXJuIGIuYXR0YWNoVG9Eb2N1bWVudChhLmdldERvY3VtZW50KCkpLGIub24oImNzc2xpbnQiLGZ1bmN0aW9uKGIpe3ZhciBjPVtdO2IuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2MucHVzaCh7cm93OmEubGluZS0xLGNvbHVtbjphLmNvbC0xLHRleHQ6YS5tZXNzYWdlLHR5cGU6YS50eXBlLGxpbnQ6YX0pfSksYS5zZXRBbm5vdGF0aW9ucyhjKX0pLGJ9fS5jYWxsKGsucHJvdG90eXBlKSxiLk1vZGU9a30pLGRlZmluZSgiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYW5pbWF0aW9uLWZpbGwtbW9kZXxhbGlnbm1lbnQtYWRqdXN0fGFsaWdubWVudC1iYXNlbGluZXxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudHxhbmltYXRpb24tbmFtZXxhbmltYXRpb24tcGxheS1zdGF0ZXxhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbnxhcHBlYXJhbmNlfGF6aW11dGh8YmFja2ZhY2UtdmlzaWJpbGl0eXxiYWNrZ3JvdW5kLWF0dGFjaG1lbnR8YmFja2dyb3VuZC1icmVha3xiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWltYWdlfGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtcG9zaXRpb258YmFja2dyb3VuZC1yZXBlYXR8YmFja2dyb3VuZC1zaXplfGJhY2tncm91bmR8YmFzZWxpbmUtc2hpZnR8YmluZGluZ3xibGVlZHxib29rbWFyay1sYWJlbHxib29rbWFyay1sZXZlbHxib29rbWFyay1zdGF0ZXxib29rbWFyay10YXJnZXR8Ym9yZGVyLWJvdHRvbXxib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1jb2xsYXBzZXxib3JkZXItY29sb3J8Ym9yZGVyLWltYWdlfGJvcmRlci1pbWFnZS1vdXRzZXR8Ym9yZGVyLWltYWdlLXJlcGVhdHxib3JkZXItaW1hZ2Utc2xpY2V8Ym9yZGVyLWltYWdlLXNvdXJjZXxib3JkZXItaW1hZ2Utd2lkdGh8Ym9yZGVyLWxlZnR8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLXJhZGl1c3xib3JkZXItcmlnaHR8Ym9yZGVyLXJpZ2h0LWNvbG9yfGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtd2lkdGh8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3B8Ym9yZGVyLXRvcC1jb2xvcnxib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtcmlnaHQtcmFkaXVzfGJvcmRlci10b3Atc3R5bGV8Ym9yZGVyLXRvcC13aWR0aHxib3JkZXItd2lkdGh8Ym9yZGVyfGJvdHRvbXxib3gtYWxpZ258Ym94LWRlY29yYXRpb24tYnJlYWt8Ym94LWRpcmVjdGlvbnxib3gtZmxleC1ncm91cHxib3gtZmxleHxib3gtbGluZXN8Ym94LW9yZGluYWwtZ3JvdXB8Ym94LW9yaWVudHxib3gtcGFja3xib3gtc2hhZG93fGJveC1zaXppbmd8YnJlYWstYWZ0ZXJ8YnJlYWstYmVmb3JlfGJyZWFrLWluc2lkZXxjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvci1wcm9maWxlfGNvbG9yfGNvbHVtbi1jb3VudHxjb2x1bW4tZmlsbHxjb2x1bW4tZ2FwfGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLWNvbG9yfGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1zcGFufGNvbHVtbi13aWR0aHxjb2x1bW5zfGNvbnRlbnR8Y291bnRlci1pbmNyZW1lbnR8Y291bnRlci1yZXNldHxjcm9wfGN1ZS1hZnRlcnxjdWUtYmVmb3JlfGN1ZXxjdXJzb3J8ZGlyZWN0aW9ufGRpc3BsYXl8ZG9taW5hbnQtYmFzZWxpbmV8ZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdHxkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ258ZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3R8ZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbnxkcm9wLWluaXRpYWwtc2l6ZXxkcm9wLWluaXRpYWwtdmFsdWV8ZWxldmF0aW9ufGVtcHR5LWNlbGxzfGZpdHxmaXQtcG9zaXRpb258ZmxvYXQtb2Zmc2V0fGZsb2F0fGZvbnQtZmFtaWx5fGZvbnQtc2l6ZXxmb250LXNpemUtYWRqdXN0fGZvbnQtc3RyZXRjaHxmb250LXN0eWxlfGZvbnQtdmFyaWFudHxmb250LXdlaWdodHxmb250fGdyaWQtY29sdW1uc3xncmlkLXJvd3N8aGFuZ2luZy1wdW5jdHVhdGlvbnxoZWlnaHR8aHlwaGVuYXRlLWFmdGVyfGh5cGhlbmF0ZS1iZWZvcmV8aHlwaGVuYXRlLWNoYXJhY3RlcnxoeXBoZW5hdGUtbGluZXN8aHlwaGVuYXRlLXJlc291cmNlfGh5cGhlbnN8aWNvbnxpbWFnZS1vcmllbnRhdGlvbnxpbWFnZS1yZW5kZXJpbmd8aW1hZ2UtcmVzb2x1dGlvbnxpbmxpbmUtYm94LWFsaWdufGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGluZS1zdGFja2luZy1ydWJ5fGxpbmUtc3RhY2tpbmctc2hpZnR8bGluZS1zdGFja2luZy1zdHJhdGVneXxsaW5lLXN0YWNraW5nfGxpc3Qtc3R5bGUtaW1hZ2V8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZXxtYXJnaW4tYm90dG9tfG1hcmdpbi1sZWZ0fG1hcmdpbi1yaWdodHxtYXJnaW4tdG9wfG1hcmdpbnxtYXJrLWFmdGVyfG1hcmstYmVmb3JlfG1hcmt8bWFya3N8bWFycXVlZS1kaXJlY3Rpb258bWFycXVlZS1wbGF5LWNvdW50fG1hcnF1ZWUtc3BlZWR8bWFycXVlZS1zdHlsZXxtYXgtaGVpZ2h0fG1heC13aWR0aHxtaW4taGVpZ2h0fG1pbi13aWR0aHxtb3ZlLXRvfG5hdi1kb3dufG5hdi1pbmRleHxuYXYtbGVmdHxuYXYtcmlnaHR8bmF2LXVwfG9wYWNpdHl8b3JwaGFuc3xvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtc3R5bGV8b3V0bGluZS13aWR0aHxvdXRsaW5lfG92ZXJmbG93LXN0eWxlfG92ZXJmbG93LXh8b3ZlcmZsb3cteXxvdmVyZmxvd3xwYWRkaW5nLWJvdHRvbXxwYWRkaW5nLWxlZnR8cGFkZGluZy1yaWdodHxwYWRkaW5nLXRvcHxwYWRkaW5nfHBhZ2UtYnJlYWstYWZ0ZXJ8cGFnZS1icmVhay1iZWZvcmV8cGFnZS1icmVhay1pbnNpZGV8cGFnZS1wb2xpY3l8cGFnZXxwYXVzZS1hZnRlcnxwYXVzZS1iZWZvcmV8cGF1c2V8cGVyc3BlY3RpdmUtb3JpZ2lufHBlcnNwZWN0aXZlfHBob25lbWVzfHBpdGNoLXJhbmdlfHBpdGNofHBsYXktZHVyaW5nfHBvc2l0aW9ufHByZXNlbnRhdGlvbi1sZXZlbHxwdW5jdHVhdGlvbi10cmltfHF1b3Rlc3xyZW5kZXJpbmctaW50ZW50fHJlc2l6ZXxyZXN0LWFmdGVyfHJlc3QtYmVmb3JlfHJlc3R8cmljaG5lc3N8cmlnaHR8cm90YXRpb24tcG9pbnR8cm90YXRpb258cnVieS1hbGlnbnxydWJ5LW92ZXJoYW5nfHJ1YnktcG9zaXRpb258cnVieS1zcGFufHNpemV8c3BlYWstaGVhZGVyfHNwZWFrLW51bWVyYWx8c3BlYWstcHVuY3R1YXRpb258c3BlYWt8c3BlZWNoLXJhdGV8c3RyZXNzfHN0cmluZy1zZXR8dGFibGUtbGF5b3V0fHRhcmdldC1uYW1lfHRhcmdldC1uZXd8dGFyZ2V0LXBvc2l0aW9ufHRhcmdldHx0ZXh0LWFsaWduLWxhc3R8dGV4dC1hbGlnbnx0ZXh0LWRlY29yYXRpb258dGV4dC1lbXBoYXNpc3x0ZXh0LWhlaWdodHx0ZXh0LWluZGVudHx0ZXh0LWp1c3RpZnl8dGV4dC1vdXRsaW5lfHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRleHQtd3JhcHx0b3B8dHJhbnNmb3JtLW9yaWdpbnx0cmFuc2Zvcm0tc3R5bGV8dHJhbnNmb3JtfHRyYW5zaXRpb24tZGVsYXl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLXByb3BlcnR5fHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb258dW5pY29kZS1iaWRpfHZlcnRpY2FsLWFsaWdufHZpc2liaWxpdHl8dm9pY2UtYmFsYW5jZXx2b2ljZS1kdXJhdGlvbnx2b2ljZS1mYW1pbHl8dm9pY2UtcGl0Y2gtcmFuZ2V8dm9pY2UtcGl0Y2h8dm9pY2UtcmF0ZXx2b2ljZS1zdHJlc3N8dm9pY2Utdm9sdW1lfHZvbHVtZXx3aGl0ZS1zcGFjZS1jb2xsYXBzZXx3aGl0ZS1zcGFjZXx3aWRvd3N8d2lkdGh8d29yZC1icmVha3x3b3JkLXNwYWNpbmd8d29yZC13cmFwfHotaW5kZXgiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJyZ2J8cmdiYXx1cmx8YXR0cnxjb3VudGVyfGNvdW50ZXJzIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgiYWJzb2x1dGV8YWZ0ZXItZWRnZXxhZnRlcnxhbGwtc2Nyb2xsfGFsbHxhbHBoYWJldGljfGFsd2F5c3xhbnRpYWxpYXNlZHxhcm1lbmlhbnxhdXRvfGF2b2lkLWNvbHVtbnxhdm9pZC1wYWdlfGF2b2lkfGJhbGFuY2V8YmFzZWxpbmV8YmVmb3JlLWVkZ2V8YmVmb3JlfGJlbG93fGJpZGktb3ZlcnJpZGV8YmxvY2stbGluZS1oZWlnaHR8YmxvY2t8Ym9sZHxib2xkZXJ8Ym9yZGVyLWJveHxib3RofGJvdHRvbXxib3h8YnJlYWstYWxsfGJyZWFrLXdvcmR8Y2FwaXRhbGl6ZXxjYXBzLWhlaWdodHxjYXB0aW9ufGNlbnRlcnxjZW50cmFsfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjbG9uZXxjbG9zZS1xdW90ZXxjb2wtcmVzaXplfGNvbGxhcHNlfGNvbHVtbnxjb25zaWRlci1zaGlmdHN8Y29udGFpbnxjb250ZW50LWJveHxjb3Zlcnxjcm9zc2hhaXJ8Y3ViaWMtYmV6aWVyfGRhc2hlZHxkZWNpbWFsLWxlYWRpbmctemVyb3xkZWNpbWFsfGRlZmF1bHR8ZGlzYWJsZWR8ZGlzY3xkaXNyZWdhcmQtc2hpZnRzfGRpc3RyaWJ1dGUtYWxsLWxpbmVzfGRpc3RyaWJ1dGUtbGV0dGVyfGRpc3RyaWJ1dGUtc3BhY2V8ZGlzdHJpYnV0ZXxkb3R0ZWR8ZG91YmxlfGUtcmVzaXplfGVhc2UtaW58ZWFzZS1pbi1vdXR8ZWFzZS1vdXR8ZWFzZXxlbGxpcHNpc3xlbmR8ZXhjbHVkZS1ydWJ5fGZpbGx8Zml4ZWR8Zm9udC1zaXplfGZvbnR8Z2VvcmdpYW58Z2x5cGhzfGdyaWQtaGVpZ2h0fGdyb292ZXxoYW5kfGhhbmdpbmd8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWNvbnxpZGVvZ3JhcGgtYWxwaGF8aWRlb2dyYXBoLW51bWVyaWN8aWRlb2dyYXBoLXBhcmVudGhlc2lzfGlkZW9ncmFwaC1zcGFjZXxpZGVvZ3JhcGhpY3xpbmFjdGl2ZXxpbmNsdWRlLXJ1Ynl8aW5oZXJpdHxpbml0aWFsfGlubGluZS1ibG9ja3xpbmxpbmUtYm94fGlubGluZS1saW5lLWhlaWdodHxpbmxpbmUtdGFibGV8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpbnZlcnR8aXRhbGljfGp1c3RpZnl8a2F0YWthbmEtaXJvaGF8a2F0YWthbmF8a2VlcC1hbGx8bGFzdHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpbmVhcnxsaXN0LWl0ZW18bG9jYWx8bG9vc2V8bG93ZXItYWxwaGF8bG93ZXItZ3JlZWt8bG93ZXItbGF0aW58bG93ZXItcm9tYW58bG93ZXJjYXNlfGxyLXRifGx0cnxtYXRoZW1hdGljYWx8bWF4LWhlaWdodHxtYXgtc2l6ZXxtZWRpdW18bWVudXxtZXNzYWdlLWJveHxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWNoYW5nZXxuby1jbG9zZS1xdW90ZXxuby1kcm9wfG5vLW9wZW4tcXVvdGV8bm8tcmVwZWF0fG5vbmV8bm9ybWFsfG5vdC1hbGxvd2VkfG5vd3JhcHxudy1yZXNpemV8b2JsaXF1ZXxvcGVuLXF1b3RlfG91dHNldHxvdXRzaWRlfG92ZXJsaW5lfHBhZGRpbmctYm94fHBhZ2V8cG9pbnRlcnxwcmUtbGluZXxwcmUtd3JhcHxwcmV8cHJlc2VydmUtM2R8cHJvZ3Jlc3N8cmVsYXRpdmV8cmVwZWF0LXh8cmVwZWF0LXl8cmVwZWF0fHJlcGxhY2VkfHJlc2V0LXNpemV8cmlkZ2V8cmlnaHR8cm91bmR8cm93LXJlc2l6ZXxydGx8cy1yZXNpemV8c2Nyb2xsfHNlLXJlc2l6ZXxzZXBhcmF0ZXxzbGljZXxzbWFsbC1jYXBzfHNtYWxsLWNhcHRpb258c29saWR8c3BhY2V8c3F1YXJlfHN0YXJ0fHN0YXRpY3xzdGF0dXMtYmFyfHN0ZXAtZW5kfHN0ZXAtc3RhcnR8c3RlcHN8c3RyZXRjaHxzdHJpY3R8c3VifHN1cGVyfHN3LXJlc2l6ZXx0YWJsZS1jYXB0aW9ufHRhYmxlLWNlbGx8dGFibGUtY29sdW1uLWdyb3VwfHRhYmxlLWNvbHVtbnx0YWJsZS1mb290ZXItZ3JvdXB8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLXJvdy1ncm91cHx0YWJsZS1yb3d8dGFibGV8dGItcmx8dGV4dC1hZnRlci1lZGdlfHRleHQtYmVmb3JlLWVkZ2V8dGV4dC1ib3R0b218dGV4dC1zaXplfHRleHQtdG9wfHRleHR8dGhpY2t8dGhpbnx0b3B8dHJhbnNwYXJlbnR8dW5kZXJsaW5lfHVwcGVyLWFscGhhfHVwcGVyLWxhdGlufHVwcGVyLXJvbWFufHVwcGVyY2FzZXx1c2Utc2NyaXB0fHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8ei1pbmRleHx6ZXJvIi5zcGxpdCgifCIpKSxkPWUuYXJyYXlUb01hcCgiYXF1YXxibGFja3xibHVlfGZ1Y2hzaWF8Z3JheXxncmVlbnxsaW1lfG1hcm9vbnxuYXZ5fG9saXZlfG9yYW5nZXxwdXJwbGV8cmVkfHNpbHZlcnx0ZWFsfHdoaXRlfHllbGxvdyIuc3BsaXQoInwiKSksZj1lLmFycmF5VG9NYXAoImFyaWFsfGNlbnR1cnl8Y29taWN8Y291cmllcnxnYXJhbW9uZHxnZW9yZ2lhfGhlbHZldGljYXxpbXBhY3R8bHVjaWRhfHN5bWJvbHxzeXN0ZW18dGFob21hfHRpbWVzfHRyZWJ1Y2hldHx1dG9waWF8dmVyZGFuYXx3ZWJkaW5nc3xzYW5zLXNlcmlmfHNlcmlmfG1vbm9zcGFjZSIuc3BsaXQoInwiKSksZz0iXFwtPyg/Oig/OlswLTldKyl8KD86WzAtOV0qXFwuWzAtOV0rKSkiLGg9IihcXDorKVxcYihhZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8bW96LXNlbGVjdGlvbnxzZWxlY3Rpb24pXFxiIixpPSIoOilcXGIoYWN0aXZlfGNoZWNrZWR8ZGlzYWJsZWR8ZW1wdHl8ZW5hYmxlZHxmaXJzdC1jaGlsZHxmaXJzdC1vZi10eXBlfGZvY3VzfGhvdmVyfGluZGV0ZXJtaW5hdGV8aW52YWxpZHxsYXN0LWNoaWxkfGxhc3Qtb2YtdHlwZXxsaW5rfG5vdHxudGgtY2hpbGR8bnRoLWxhc3QtY2hpbGR8bnRoLWxhc3Qtb2YtdHlwZXxudGgtb2YtdHlwZXxvbmx5LWNoaWxkfG9ubHktb2YtdHlwZXxyZXF1aXJlZHxyb290fHRhcmdldHx2YWxpZHx2aXNpdGVkKVxcYiIsaj1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJydWxlc2V0X2NvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46WyJjb25zdGFudC5udW1lcmljIiwia2V5d29yZCJdLHJlZ2V4OiIoIitnKyIpKGNofGNtfGRlZ3xlbXxleHxmcnxnZHxncmFkfEh6fGlufGtIenxtbXxtc3xwY3xwdHxweHxyYWR8cmVtfHN8dHVybnx2aHx2bXx2d3wlKSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiXSxyZWdleDoiKFswLTldKykifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17Nn0ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17M30ifSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tZWxlbWVudC5jc3MiXSxyZWdleDpofSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tY2xhc3MuY3NzIl0scmVnZXg6aX0se3Rva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmZ1bmN0aW9uIjpjLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQiOmQuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudC5jb2xvciI6Zi5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmZvbnRzIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W2EtekEtWl9dW2EtekEtWjAtOV9cXC1dKiJ9XSxrPWUuY29weUFycmF5KGopO2sudW5zaGlmdCh7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IlxcfSIsbmV4dDoic3RhcnQifSk7dmFyIGw9ZS5jb3B5QXJyYXkoaik7bC51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJtZWRpYSJ9KTt2YXIgbT1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sbj1lLmNvcHlBcnJheShtKTtuLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9KTt2YXIgbz1lLmNvcHlBcnJheShtKTtvLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJtZWRpYSJ9KTt2YXIgcD1lLmNvcHlBcnJheShtKTtwLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJydWxlc2V0In0pLHRoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJcXHsiLG5leHQ6InJ1bGVzZXQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IkAuKj97IixuZXh0OiJtZWRpYSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLG1lZGlhOlt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6Im1lZGlhX2NvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoibWVkaWFfcnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLGNvbW1lbnQ6bixydWxlc2V0OmsscnVsZXNldF9jb21tZW50OnAsbWVkaWFfcnVsZXNldDpsLG1lZGlhX2NvbW1lbnQ6b319O2QuaW5oZXJpdHMoZyxmKSxiLkNzc0hpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-c_cpp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jX2NwcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9jX2NwcF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL2NfY3BwX2hpZ2hsaWdodF9ydWxlcyIpLmNfY3BwSGlnaGxpZ2h0UnVsZXMsaD1hKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxpPWEoIi4uL3JhbmdlIikuUmFuZ2Usaj1hKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsaz1hKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsbD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy4kYmVoYXZpb3VyPW5ldyBqLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBrfTtkLmluaGVyaXRzKGwsZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMCxmPS9eKFxzKilcL1wvLztmb3IodmFyIGc9YztnPD1kO2crKylpZighZi50ZXN0KGIuZ2V0TGluZShnKSkpe2U9ITE7YnJlYWt9aWYoZSl7dmFyIGg9bmV3IGkoMCwwLDAsMCk7Zm9yKHZhciBnPWM7Zzw9ZDtnKyspe3ZhciBqPWIuZ2V0TGluZShnKSxrPWoubWF0Y2goZik7aC5zdGFydC5yb3c9ZyxoLmVuZC5yb3c9ZyxoLmVuZC5jb2x1bW49a1swXS5sZW5ndGgsYi5yZXBsYWNlKGgsa1sxXSl9fWVsc2UgYi5pbmRlbnRSb3dzKGMsZCwiLy8iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zLGc9ZS5zdGF0ZTtpZihmLmxlbmd0aCYmZltmLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIGQ7aWYoYT09InN0YXJ0Iil7dmFyIGg9Yi5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7aCYmKGQrPWMpfWVsc2UgaWYoYT09ImRvYy1zdGFydCIpe2lmKGc9PSJzdGFydCIpcmV0dXJuIiI7dmFyIGg9Yi5tYXRjaCgvXlxzKihcLz8pXCovKTtoJiYoaFsxXSYmKGQrPSIgIiksZCs9IiogIil9cmV0dXJuIGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfX0uY2FsbChsLnByb3RvdHlwZSksYi5Nb2RlPWx9KSxkZWZpbmUoImFjZS9tb2RlL2NfY3BwX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGc9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxoPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJhbmR8ZG91YmxlfG5vdF9lcXx0aHJvd3xhbmRfZXF8ZHluYW1pY19jYXN0fG9wZXJhdG9yfHRydWV8YXNtfGVsc2V8b3J8dHJ5fGF1dG98ZW51bXxvcl9lcXx0eXBlZGVmfGJpdGFuZHxleHBsaWNpdHxwcml2YXRlfHR5cGVpZHxiaXRvcnxleHRlcm58cHJvdGVjdGVkfHR5cGVuYW1lfGJvb2x8ZmFsc2V8cHVibGljfHVuaW9ufGJyZWFrfGZsb2F0fHJlZ2lzdGVyfHVuc2lnbmVkfGNhc2V8ZnJvfHJlaW50ZXJwcmV0LWNhc3R8dXNpbmd8Y2F0Y2h8ZnJpZW5kfHJldHVybnx2aXJ0dWFsfGNoYXJ8Z290b3xzaG9ydHx2b2lkfGNsYXNzfGlmfHNpZ25lZHx2b2xhdGlsZXxjb21wbHxpbmxpbmV8c2l6ZW9mfHdjaGFyX3R8Y29uc3R8aW50fHN0YXRpY3x3aGlsZXxjb25zdC1jYXN0fGxvbmd8c3RhdGljX2Nhc3R8eG9yfGNvbnRpbnVlfG11dGFibGV8c3RydWN0fHhvcl9lcXxkZWZhdWx0fG5hbWVzcGFjZXxzd2l0Y2h8ZGVsZXRlfG5ld3x0ZW1wbGF0ZXxkb3xub3R8dGhpc3xmb3IiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJOVUxMIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LGYuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qXFxcXCQnLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiJbJ10uKlxcXFwkIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiI8W2EtekEtWjAtOS5dKz4ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzojaW5jbHVkZXwjcHJhZ21hfCNsaW5lfCNkZWZpbmV8I3VuZGVmfCNpZmRlZnwjZWxzZXwjZWxpZnwjZW5kaWZ8I2lmbmRlZikifSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PSJ0aGlzIj8idmFyaWFibGUubGFuZ3VhZ2UiOmEuaGFzT3duUHJvcGVydHkoYyk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoYyk/ImNvbnN0YW50Lmxhbmd1YWdlIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIhfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x+fD09fD18IT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJcXD98XFw6fFxcLHxcXDt8XFwuIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Jyg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj8iJyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/JyIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSx0aGlzLmVtYmVkUnVsZXMoZiwiZG9jLSIsW2YuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtkLmluaGVyaXRzKGgsZyksYi5jX2NwcEhpZ2hsaWdodFJ1bGVzPWh9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ZC5pbmhlcml0cyhmLGUpLGYuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmF9fSxmLmdldEVuZFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDphfX0sYi5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0ieyIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiJ7IitnKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0ifSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGU9PSJcbiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgbD1kLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpoLnJvdyxjb2x1bW46aC5jb2x1bW4rMX0pO2lmKCFsKXJldHVybiBudWxsO3ZhciBtPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoYSxpLnN1YnN0cmluZygwLGkubGVuZ3RoLTEpLGQuZ2V0VGFiU3RyaW5nKCkpLG49dGhpcy4kZ2V0SW5kZW50KGQuZG9jLmdldExpbmUobC5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK20rIlxuIituLHNlbGVjdGlvbjpbMSxtLmxlbmd0aCwxLG0ubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09InsiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuZW5kLmNvbHVtbixlLmVuZC5jb2x1bW4rMSk7aWYoaD09In0iKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IigiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoiKCIrZysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09IikiKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSIpIil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0iKCIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0iKSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSciJ3x8ZT09IiciKXt2YXIgZj1lLGc9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGg9ZC5kb2MuZ2V0VGV4dFJhbmdlKGcpO2lmKGghPT0iIilyZXR1cm57dGV4dDpmK2grZixzZWxlY3Rpb246ITF9O3ZhciBpPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxqPWQuZG9jLmdldExpbmUoaS5yb3cpLGs9ai5zdWJzdHJpbmcoaS5jb2x1bW4tMSxpLmNvbHVtbik7aWYoaz09IlxcIilyZXR1cm4gbnVsbDt2YXIgbD1kLmdldFRva2VucyhnLnN0YXJ0LnJvdyksbT0wLG4sbz0tMTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyl7bj1sW3BdLG4udHlwZT09InN0cmluZyI/bz0tMTpvPDAmJihvPW4udmFsdWUuaW5kZXhPZihmKSk7aWYobi52YWx1ZS5sZW5ndGgrbT5nLnN0YXJ0LmNvbHVtbilicmVhazttKz1sW3BdLnZhbHVlLmxlbmd0aH1pZighbnx8bzwwJiZuLnR5cGUhPT0iY29tbWVudCImJihuLnR5cGUhPT0ic3RyaW5nInx8Zy5zdGFydC5jb2x1bW4hPT1uLnZhbHVlLmxlbmd0aCttLTEmJm4udmFsdWUubGFzdEluZGV4T2YoZik9PT1uLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpmK2Ysc2VsZWN0aW9uOlsxLDFdfTtpZihuJiZuLnR5cGU9PT0ic3RyaW5nIil7dmFyIHE9ai5zdWJzdHJpbmcoaS5jb2x1bW4saS5jb2x1bW4rMSk7aWYocT09ZilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmKGY9PSciJ3x8Zj09IiciKSl7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSciJylyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KX07ZC5pbmhlcml0cyhmLGUpLGIuQ3N0eWxlQmVoYXZpb3VyPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-diff.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9kaWZmIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2RpZmZfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvZm9sZGluZy9kaWZmIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL2RpZmZfaGlnaGxpZ2h0X3J1bGVzIikuRGlmZkhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9mb2xkaW5nL2RpZmYiKS5Gb2xkTW9kZSxpPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBoKFsiZGlmZiIsImluZGV4IiwiXFwrezN9IiwiQEB8XFwqezV9Il0sImkiKX07ZC5pbmhlcml0cyhpLGUpLGZ1bmN0aW9uKCl7fS5jYWxsKGkucHJvdG90eXBlKSxiLk1vZGU9aX0pLGRlZmluZSgiYWNlL21vZGUvZGlmZl9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3JlZ2V4OiJeKD86XFwqezE1fXw9ezY3fXwtezN9fFxcK3szfSkkIix0b2tlbjoicHVuY3R1YXRpb24uZGVmaW5pdGlvbi5zZXBhcmF0b3IuZGlmZiIsbmFtZToia2V5d29yZCJ9LHtyZWdleDoiXihAQCkoXFxzKi4rP1xccyopKEBAKSguKikkIix0b2tlbjpbImNvbnN0YW50IiwiY29uc3RhbnQubnVtZXJpYyIsImNvbnN0YW50IiwiY29tbWVudC5kb2MudGFnIl19LHtyZWdleDoiXihcXGQrKShbLFxcZF0rKShhfGR8YykoXFxkKykoWyxcXGRdKykoLiopJCIsdG9rZW46WyJjb25zdGFudC5udW1lcmljIiwicHVuY3R1YXRpb24uZGVmaW5pdGlvbi5yYW5nZS5kaWZmIiwiY29uc3RhbnQuZnVuY3Rpb24iLCJjb25zdGFudC5udW1lcmljIiwicHVuY3R1YXRpb24uZGVmaW5pdGlvbi5yYW5nZS5kaWZmIiwiaW52YWxpZCJdLG5hbWU6Im1ldGEuIn0se3JlZ2V4OiJeKD86KFxcLXszfXxcXCt7M318XFwqezN9KSggLispKSQiLHRva2VuOlsiY29uc3RhbnQubnVtZXJpYyIsIm1ldGEudGFnIl19LHtyZWdleDoiXihbISs+XSkoLio/KShcXHMqKSQiLHRva2VuOlsic3VwcG9ydC5jb25zdGFudCIsInRleHQiLCJpbnZhbGlkIl19LHtyZWdleDoiXihbPFxcLV0pKC4qPykoXFxzKikkIix0b2tlbjpbInN1cHBvcnQuZnVuY3Rpb24iLCJzdHJpbmciLCJpbnZhbGlkIl19LHtyZWdleDoiXihkaWZmKShcXHMrLS1cXHcrKT8oLis/KSggLispPyQiLHRva2VuOlsidmFyaWFibGUiLCJ2YXJpYWJsZSIsImtleXdvcmQiLCJ2YXJpYWJsZSJdfSx7cmVnZXg6Il5JbmRleC4rJCIsdG9rZW46InZhcmlhYmxlIn0se3JlZ2V4OiJeKC4qPykoXFxzKikkIix0b2tlbjpbImludmlzaWJsZSIsImludmFsaWQiXX1dfX07ZC5pbmhlcml0cyhmLGUpLGIuRGlmZkhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZGlmZiIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxmPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKGEsYil7dGhpcy5yZWdFeHBMaXN0PWEsdGhpcy5mbGFnPWIsdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9UmVnRXhwKCJeKCIrYS5qb2luKCJ8IikrIikiLHRoaXMuZmxhZyl9O2QuaW5oZXJpdHMoZyxlKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZT17cm93OmMsY29sdW1uOmQubGVuZ3RofSxnPXRoaXMucmVnRXhwTGlzdDtmb3IodmFyIGg9MTtoPD1nLmxlbmd0aDtoKyspe3ZhciBpPVJlZ0V4cCgiXigiK2cuc2xpY2UoMCxoKS5qb2luKCJ8IikrIikiLHRoaXMuZmxhZyk7aWYoaS50ZXN0KGQpKWJyZWFrfWZvcih2YXIgaj1hLmdldExlbmd0aCgpOysrYzxqOyl7ZD1hLmdldExpbmUoYyk7aWYoaS50ZXN0KGQpKWJyZWFrfWlmKGM9PWUucm93KzEpcmV0dXJuO3JldHVybiBmLmZyb21Qb2ludHMoZSx7cm93OmMtMSxjb2x1bW46ZC5sZW5ndGh9KX19LmNhbGwoZy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGU9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyk7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3QoZCk/InN0YXJ0IjpiPT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KGQpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihhLGIsYyl7dmFyIGU9L15ccyovLGY9YixnPWIsaD1hLmdldExpbmUoYiksaT1jfHxoLmxlbmd0aCxqPWgubWF0Y2goZSlbMF0ubGVuZ3RoLGs9YS5nZXRMZW5ndGgoKTt3aGlsZSgrK2I8ayl7aD1hLmdldExpbmUoYik7dmFyIGw9aC5tYXRjaChlKVswXS5sZW5ndGg7aWYobD09aC5sZW5ndGgpY29udGludWU7aWYobDw9ailicmVhaztnPWJ9aWYoZz5mKXt2YXIgbT1hLmdldExpbmUoZykubGVuZ3RoO3JldHVybiBuZXcgZChmLGksZyxtKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihhLGIsYyxlLGYsZyl7dmFyIGg9e3JvdzpjLGNvbHVtbjplKzF9LGk9YS4kZmluZENsb3NpbmdCcmFja2V0KGIsaCxmLGcpO2lmKCFpKXJldHVybjt2YXIgaj1hLmZvbGRXaWRnZXRzW2kucm93XTtyZXR1cm4gaj09bnVsbCYmKGo9dGhpcy5nZXRGb2xkV2lkZ2V0KGEsaS5yb3cpKSxqPT0ic3RhcnQiJiYoaS5yb3ctLSxpLmNvbHVtbj1hLmdldExpbmUoaS5yb3cpLmxlbmd0aCksZC5mcm9tUG9pbnRzKGgsaSl9fSkuY2FsbChlLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-golang.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9nb2xhbmciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvZ29sYW5nX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vZ29sYW5nX2hpZ2hsaWdodF9ydWxlcyIpLkdvbGFuZ0hpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IGh9O2QuaW5oZXJpdHMoaSxlKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSEwLGY9W10sZz0vXihccyopXC9cLy87Zm9yKHZhciBoPWM7aDw9ZDtoKyspaWYoIWcudGVzdChiLmdldExpbmUoaCkpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBpPW5ldyBSYW5nZSgwLDAsMCwwKTtmb3IodmFyIGg9YztoPD1kO2grKyl7dmFyIGo9Yi5nZXRMaW5lKGgpLGs9ai5tYXRjaChnKTtpLnN0YXJ0LnJvdz1oLGkuZW5kLnJvdz1oLGkuZW5kLmNvbHVtbj1rWzBdLmxlbmd0aCxiLnJlcGxhY2UoaSxrWzFdKX19ZWxzZSBiLmluZGVudFJvd3MoYyxkLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnMsZz1lLnN0YXRlO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQiKXt2YXIgaD1iLm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtoJiYoZCs9Yyl9cmV0dXJuIGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfX0uY2FsbChpLnByb3RvdHlwZSksYi5Nb2RlPWl9KSxkZWZpbmUoImFjZS9tb2RlL2dvbGFuZ19oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxnPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsaD1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgidHJ1ZXxlbHNlfGZhbHNlfGJyZWFrfGNhc2V8cmV0dXJufGdvdG98aWZ8Y29uc3R8Y29udGludWV8c3RydWN0fGRlZmF1bHR8c3dpdGNofGZvcnxmdW5jfGltcG9ydHxwYWNrYWdlfGNoYW58ZGVmZXJ8ZmFsbHRocm91Z2h8Z298aW50ZXJmYWNlfG1hcHxyYW5nZXNlbGVjdHx0eXBlfHZhciIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoIm5pdHx0cnVlfGZhbHNlfGlvdGEiLnNwbGl0KCJ8IikpO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0sZi5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDonWyJdLipcXFxcJCcsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qXFxcXCQiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IjxbYS16QS1aMC05Ll0rPiJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiNpbmNsdWRlfCNwcmFnbWF8I2xpbmV8I2RlZmluZXwjdW5kZWZ8I2lmZGVmfCNlbHNlfCNlbGlmfCNlbmRpZnwjaWZuZGVmKSJ9LHt0b2tlbjpmdW5jdGlvbihjKXtyZXR1cm4gYz09InRoaXMiPyJ2YXJpYWJsZS5sYW5ndWFnZSI6YS5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8XFwkfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT18PXwhPXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XFx8XFx8fFxcP1xcOnxcXCo9fCU9fFxcKz18XFwtPXwmPXxcXF49fFxcYig/OmlufG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlxcP3xcXDp8XFwsfFxcO3xcXC4ifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDonKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqPyInLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj8nIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19LHRoaXMuZW1iZWRSdWxlcyhmLCJkb2MtIixbZi5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaCxnKSxiLkdvbGFuZ0hpZ2hsaWdodFJ1bGVzPWh9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ZC5pbmhlcml0cyhmLGUpLGYuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmF9fSxmLmdldEVuZFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDphfX0sYi5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-groovy.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9ncm9vdnkiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvZ3Jvb3Z5X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL2phdmFzY3JpcHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9ncm9vdnlfaGlnaGxpZ2h0X3J1bGVzIikuR3Jvb3Z5SGlnaGxpZ2h0UnVsZXMsaD1mdW5jdGlvbigpe2UuY2FsbCh0aGlzKSx0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKX07ZC5pbmhlcml0cyhoLGUpLGZ1bmN0aW9uKCl7dGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGx9fS5jYWxsKGgucHJvdG90eXBlKSxiLk1vZGU9aH0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsaD1hKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxpPWEoIi4uL3JhbmdlIikuUmFuZ2Usaj1hKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxrPWEoIi4vYmVoYXZpb3VyL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixsPWEoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxtPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgaCx0aGlzLiRiZWhhdmlvdXI9bmV3IGssdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGx9O2QuaW5oZXJpdHMobSxlKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSEwLGY9L14oXHMqKVwvXC8vO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKWlmKCFmLnRlc3QoYi5nZXRMaW5lKGcpKSl7ZT0hMTticmVha31pZihlKXt2YXIgaD1uZXcgaSgwLDAsMCwwKTtmb3IodmFyIGc9YztnPD1kO2crKyl7dmFyIGo9Yi5nZXRMaW5lKGcpLGs9ai5tYXRjaChmKTtoLnN0YXJ0LnJvdz1nLGguZW5kLnJvdz1nLGguZW5kLmNvbHVtbj1rWzBdLmxlbmd0aCxiLnJlcGxhY2UoaCxrWzFdKX19ZWxzZSBiLmluZGVudFJvd3MoYyxkLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnMsZz1lLnN0YXRlO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQifHxhPT0icmVnZXhfYWxsb3dlZCIpe3ZhciBoPWIubWF0Y2goL14uKig/OlxiY2FzZVxiLipcOnxbXHtcKFxbXSlccyokLyk7aCYmKGQrPWMpfWVsc2UgaWYoYT09ImRvYy1zdGFydCIpe2lmKGc9PSJzdGFydCJ8fGE9PSJyZWdleF9hbGxvd2VkIilyZXR1cm4iIjt2YXIgaD1iLm1hdGNoKC9eXHMqKFwvPylcKi8pO2gmJihoWzFdJiYoZCs9IiAiKSxkKz0iKiAiKX1yZXR1cm4gZH0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudChiLGMpfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KGIsYyl9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBqKFsiYWNlIl0sIndvcmtlci1qYXZhc2NyaXB0LmpzIiwiYWNlL21vZGUvamF2YXNjcmlwdF93b3JrZXIiLCJKYXZhU2NyaXB0V29ya2VyIik7cmV0dXJuIGIuYXR0YWNoVG9Eb2N1bWVudChhLmdldERvY3VtZW50KCkpLGIub24oImpzbGludCIsZnVuY3Rpb24oYil7dmFyIGM9W107Zm9yKHZhciBkPTA7ZDxiLmRhdGEubGVuZ3RoO2QrKyl7dmFyIGU9Yi5kYXRhW2RdO2UmJmMucHVzaCh7cm93OmUubGluZS0xLGNvbHVtbjplLmNoYXJhY3Rlci0xLHRleHQ6ZS5yZWFzb24sdHlwZToid2FybmluZyIsbGludDplfSl9YS5zZXRBbm5vdGF0aW9ucyhjKX0pLGIub24oIm5hcmNpc3N1cyIsZnVuY3Rpb24oYil7YS5zZXRBbm5vdGF0aW9ucyhbYi5kYXRhXSl9KSxiLm9uKCJ0ZXJtaW5hdGUiLGZ1bmN0aW9uKCl7YS5jbGVhckFubm90YXRpb25zKCl9KSxifX0uY2FsbChtLnByb3RvdHlwZSksYi5Nb2RlPW19KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvdW5pY29kZSIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuLi91bmljb2RlIiksZz1hKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxoPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsaT1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiQXJyYXl8Qm9vbGVhbnxEYXRlfEZ1bmN0aW9ufEl0ZXJhdG9yfE51bWJlcnxPYmplY3R8UmVnRXhwfFN0cmluZ3xQcm94eXxOYW1lc3BhY2V8UU5hbWV8WE1MfFhNTExpc3R8QXJyYXlCdWZmZXJ8RmxvYXQzMkFycmF5fEZsb2F0NjRBcnJheXxJbnQxNkFycmF5fEludDMyQXJyYXl8SW50OEFycmF5fFVpbnQxNkFycmF5fFVpbnQzMkFycmF5fFVpbnQ4QXJyYXl8VWludDhDbGFtcGVkQXJyYXl8RXJyb3J8RXZhbEVycm9yfEludGVybmFsRXJyb3J8UmFuZ2VFcnJvcnxSZWZlcmVuY2VFcnJvcnxTdG9wSXRlcmF0aW9ufFN5bnRheEVycm9yfFR5cGVFcnJvcnxVUklFcnJvcnxkZWNvZGVVUkl8ZGVjb2RlVVJJQ29tcG9uZW50fGVuY29kZVVSSXxlbmNvZGVVUklDb21wb25lbnR8ZXZhbHxpc0Zpbml0ZXxpc05hTnxwYXJzZUZsb2F0fHBhcnNlSW50fEpTT058TWF0aHx0aGlzfGFyZ3VtZW50c3xwcm90b3R5cGV8d2luZG93fGRvY3VtZW50Ii5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgiYnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxkZWZhdWx0fGRlbGV0ZXxkb3xlbHNlfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGlmfGlufGluc3RhbmNlb2Z8bmV3fHJldHVybnxzd2l0Y2h8dGhyb3d8dHJ5fHR5cGVvZnxsZXR8dmFyfHdoaWxlfHdpdGh8Y29uc3R8eWllbGR8aW1wb3J0fGdldHxzZXQiLnNwbGl0KCJ8IikpLGM9ImNhc2V8ZG98ZWxzZXxmaW5hbGx5fGlufGluc3RhbmNlb2Z8cmV0dXJufHRocm93fHRyeXx0eXBlb2Z8eWllbGQiLGQ9ZS5hcnJheVRvTWFwKCJfX3BhcmVudF9ffF9fY291bnRfX3xlc2NhcGV8dW5lc2NhcGV8d2l0aHxfX3Byb3RvX18iLnNwbGl0KCJ8IikpLGg9ZS5hcnJheVRvTWFwKCJjb25zdHxsZXR8dmFyfGZ1bmN0aW9uIi5zcGxpdCgifCIpKSxpPWUuYXJyYXlUb01hcCgibnVsbHxJbmZpbml0eXxOYU58dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxqPWUuYXJyYXlUb01hcCgiY2xhc3N8ZW51bXxleHRlbmRzfHN1cGVyfGV4cG9ydHxpbXBsZW1lbnRzfHByaXZhdGV8cHVibGljfGludGVyZmFjZXxwYWNrYWdlfHByb3RlY3RlZHxzdGF0aWMiLnNwbGl0KCJ8IikpLGs9IlsiK2YucGFja2FnZXMuTCsiXFwkX11bIitmLnBhY2thZ2VzLkwrZi5wYWNrYWdlcy5NbitmLnBhY2thZ2VzLk1jK2YucGFja2FnZXMuTmQrZi5wYWNrYWdlcy5QYysiXFwkX10qXFxiIixsPSJcXFxcKD86eFswLTlhLWZBLUZdezJ9fHVbMC05YS1mQS1GXXs0fXxbMC0yXVswLTddezAsMn18M1swLTZdWzAtN10/fDM3WzAtN10/fFs0LTddWzAtN10/fC4pIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6L1wvXC8uKiQvfSxnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDovXC9cKi8sbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyg/PS4pIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciKD89LiknLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovMFt4WF1bMC05YS1mQS1GXStcYi99LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6L1srLV0/XGQrKD86KD86XC5cZCopPyg/OltlRV1bKy1dP1xkKyk/KT9cYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Il0scmVnZXg6IigiK2srIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitrKyIpKFxccyopKD0pKFxccyopIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxcLikoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoZnVuY3Rpb24pKFxccyspKCIraysiKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFxzKikoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInRleHQiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Lyg/OnRydWV8ZmFsc2UpXGIvfSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzoiK2MrIilcXGIiLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iXSxyZWdleDovKFwuKShzKD86aCg/OmlmdHxvdyg/Ok1vZCg/OmVsZXNzRGlhbG9nfGFsRGlhbG9nKXxIZWxwKSl8Y3JvbGwoPzpYfEJ5KD86UGFnZXN8TGluZXMpP3xZfFRvKT98dCg/Om9wenp6enxyaWtlKXxpKD86bnx6ZVRvQ29udGVudHxkZWJhcnxnblRleHQpfG9ydHx1KD86cHxiKD86c3RyKD86aW5nKT8pPyl8cGxpKD86Y2V8dCl8ZSg/Om5kfHQoPzpSZSg/OnNpemFibGV8cXVlc3RIZWFkZXIpfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIbyg/OnRLZXlzfHVycyl8WWVhcnxDdXJzb3J8VGltZSg/Om91dCk/fEludGVydmFsfFpPcHRpb25zfERhdGV8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhdGV8RnVsbFllYXIpfEZ1bGxZZWFyfEFjdGl2ZSl8YXJjaCl8cXJ0fGxpY2V8YXZlUHJlZmVyZW5jZXN8bWFsbCl8aCg/Om9tZXxhbmRsZUV2ZW50KXxuYXZpZ2F0ZXxjKD86aGFyKD86Q29kZUF0fEF0KXxvKD86c3xuKD86Y2F0fHRleHR1YWx8ZmlybSl8bXBpbGUpfGVpbHxsZWFyKD86VGltZW91dHxJbnRlcnZhbCk/fGEoPzpwdHVyZUV2ZW50c3xsbCl8cmVhdGUoPzpTdHlsZVNoZWV0fFBvcHVwfEV2ZW50T2JqZWN0KSl8dCg/Om8oPzpHTVRTdHJpbmd8Uyg/OnRyaW5nfG91cmNlKXxVKD86VENTdHJpbmd8cHBlckNhc2UpfExvKD86Y2FsZVN0cmluZ3x3ZXJDYXNlKSl8ZXN0fGEoPzpufGludCg/OkVuYWJsZWQpPykpfGkoPzpzKD86TmFOfEZpbml0ZSl8bmRleE9mfHRhbGljcyl8ZCg/OmlzYWJsZUV4dGVybmFsQ2FwdHVyZXx1bXB8ZXRhY2hFdmVudCl8dSg/Om4oPzpzaGlmdHx0YWludHxlc2NhcGV8d2F0Y2gpfHBkYXRlQ29tbWFuZHMpfGooPzpvaW58YXZhRW5hYmxlZCl8cCg/Om8oPzpwfHcpfHVzaHxsdWdpbnMucmVmcmVzaHxhKD86ZGRpbmdzfHJzZSg/OkludHxGbG9hdCk/KXxyKD86aW50fG9tcHR8ZWZlcmVuY2UpKXxlKD86c2NhcGV8bmFibGVFeHRlcm5hbENhcHR1cmV8dmFsfGxlbWVudEZyb21Qb2ludHx4KD86cHxlYyg/OlNjcmlwdHxDb21tYW5kKT8pKXx2YWx1ZU9mfFVUQ3xxdWVyeUNvbW1hbmQoPzpTdGF0ZXxJbmRldGVybXxFbmFibGVkfFZhbHVlKXxmKD86aSg/Om5kfGxlKD86TW9kaWZpZWREYXRlfFNpemV8Q3JlYXRlZERhdGV8VXBkYXRlZERhdGUpfHhlZCl8byg/Om50KD86c2l6ZXxjb2xvcil8cndhcmQpfGxvb3J8cm9tQ2hhckNvZGUpfHdhdGNofGwoPzppbmt8byg/OmFkfGcpfGFzdEluZGV4T2YpfGEoPzpzaW58bmNob3J8Y29zfHQoPzp0YWNoRXZlbnR8b2J8YW4oPzoyKT8pfHBwbHl8bGVydHxiKD86c3xvcnQpKXxyKD86b3UoPzpuZHx0ZUV2ZW50cyl8ZSg/OnNpemUoPzpCeXxUbyl8Y2FsY3x0dXJuVmFsdWV8cGxhY2V8dmVyc2V8bCg/Om9hZHxlYXNlKD86Q2FwdHVyZXxFdmVudHMpKSl8YW5kb20pfGcoPzpvfGV0KD86UmVzcG9uc2VIZWFkZXJ8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZSg/OmNvbmRzfGxlY3Rpb24pfEhvdXJzfFllYXJ8VGltZSg/OnpvbmVPZmZzZXQpP3xEYSg/Onl8dGUpfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYSg/Onl8dGUpfEZ1bGxZZWFyKXxGdWxsWWVhcnxBKD86dHRlbnRpb258bGxSZXNwb25zZUhlYWRlcnMpKSl8bSg/OmlufG92ZSg/OkIoPzp5fGVsb3cpfFRvKD86QWJzb2x1dGUpP3xBYm92ZSl8ZXJnZUF0dHJpYnV0ZXN8YSg/OnRjaHxyZ2luc3x4KSl8Yig/OnRvYXxpZ3xvKD86bGR8cmRlcldpZHRocyl8bGlua3xhY2spKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmRvbSJdLHJlZ2V4Oi8oXC4pKHMoPzp1Yig/OnN0cmluZ0RhdGF8bWl0KXxwbGl0VGV4dHxlKD86dCg/Ok5hbWVkSXRlbXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGxlY3QpKXxoYXMoPzpDaGlsZE5vZGVzfEZlYXR1cmUpfG5hbWVkSXRlbXxjKD86bCg/Omlja3xvKD86c2V8bmVOb2RlKSl8cmVhdGUoPzpDKD86b21tZW50fERBVEFTZWN0aW9ufGFwdGlvbil8VCg/OkhlYWR8ZXh0Tm9kZXxGb290KXxEb2N1bWVudEZyYWdtZW50fFByb2Nlc3NpbmdJbnN0cnVjdGlvbnxFKD86bnRpdHlSZWZlcmVuY2V8bGVtZW50KXxBdHRyaWJ1dGUpKXx0YWJJbmRleHxpKD86bnNlcnQoPzpSb3d8QmVmb3JlfENlbGx8RGF0YSl8dGVtKXxvcGVufGRlbGV0ZSg/OlJvd3xDKD86ZWxsfGFwdGlvbil8VCg/OkhlYWR8Rm9vdCl8RGF0YSl8Zm9jdXN8d3JpdGUoPzpsbik/fGEoPzpkZHxwcGVuZCg/OkNoaWxkfERhdGEpKXxyZSg/OnNldHxwbGFjZSg/OkNoaWxkfERhdGEpfG1vdmUoPzpOYW1lZEl0ZW18Q2hpbGR8QXR0cmlidXRlKD86Tm9kZSk/KT8pfGdldCg/Ok5hbWVkSXRlbXxFbGVtZW50KD86c0J5KD86TmFtZXxUYWdOYW1lKXxCeUlkKXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGJsdXIpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuY29uc3RhbnQiXSxyZWdleDovKFwuKShzKD86eXN0ZW1MYW5ndWFnZXxjcig/OmlwdHN8b2xsYmFyc3xlZW4oPzpYfFl8VG9wfExlZnQpKXx0KD86eWxlKD86U2hlZXRzKT98YXR1cyg/OlRleHR8YmFyKT8pfGlibGluZyg/OkJlbG93fEFib3ZlKXxvdXJjZXx1ZmZpeGVzfGUoPzpjdXJpdHkoPzpQb2xpY3kpP3xsKD86ZWN0aW9ufGYpKSl8aCg/OmlzdG9yeXxvc3QoPzpuYW1lKT98YXMoPzpofEZvY3VzKSl8eXxYKD86TUxEb2N1bWVudHxTTERvY3VtZW50KXxuKD86ZXh0fGFtZSg/OnNwYWNlKD86c3xVUkkpfFByb3ApKXxNKD86SU5fVkFMVUV8QVhfVkFMVUUpfGMoPzpoYXJhY3RlclNldHxvKD86big/OnN0cnVjdG9yfHRyb2xsZXJzKXxva2llRW5hYmxlZHxsb3JEZXB0aHxtcCg/Om9uZW50c3xsZXRlKSl8dXJyZW50fHB1Q2xhc3N8bCg/OmkoPzpwKD86Ym9hcmREYXRhKT98ZW50SW5mb3JtYXRpb24pfG9zZWR8YXNzZXMpfGFsbGUoPzplfHIpfHJ5cHRvKXx0KD86byg/Om9sYmFyfHApfGV4dCg/OlRyYW5zZm9ybXxJbmRlbnR8RGVjb3JhdGlvbnxBbGlnbil8YWdzKXxTUVJUKD86MV8yfDIpfGkoPzpuKD86bmVyKD86SGVpZ2h0fFdpZHRoKXxwdXQpfGRzfGdub3JlQ2FzZSl8ekluZGV4fG8oPzpzY3B1fG4oPzpyZWFkeXN0YXRlY2hhbmdlfExpbmUpfHV0ZXIoPzpIZWlnaHR8V2lkdGgpfHAoPzpzUHJvZmlsZXxlbmVyKXxmZnNjcmVlbkJ1ZmZlcmluZyl8TkVHQVRJVkVfSU5GSU5JVFl8ZCg/OmkoPzpzcGxheXxhbG9nKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0fEFyZ3VtZW50cyl8cmVjdG9yaWVzKXxlKD86c2NyaXB0aW9ufGZhdWx0KD86U3RhdHVzfENoKD86ZWNrZWR8YXJzZXQpfFZpZXcpKSl8dSg/OnNlcig/OlByb2ZpbGV8TGFuZ3VhZ2V8QWdlbnQpfG4oPzppcXVlSUR8ZGVmaW5lZCl8cGRhdGVJbnRlcnZhbCl8X2NvbnRlbnR8cCg/Oml4ZWxEZXB0aHxvcnR8ZXJzb25hbGJhcnxrY3MxMXxsKD86dWdpbnN8YXRmb3JtKXxhKD86dGhuYW1lfGRkaW5nKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KXxyZW50KD86V2luZG93fExheWVyKT98Z2UoPzpYKD86T2Zmc2V0KT98WSg/Ok9mZnNldCk/KSl8cig/Om8oPzp0byg/OmNvbHx0eXBlKXxkdWN0KD86U3ViKT98bXB0ZXIpfGUoPzp2aW91c3xmaXgpKSl8ZSg/Om4oPzpjb2Rpbmd8YWJsZWRQbHVnaW4pfHgoPzp0ZXJuYWx8cGFuZG8pfG1iZWRzKXx2KD86aXNpYmlsaXR5fGVuZG9yKD86U3ViKT98TGlua2NvbG9yKXxVUkxVbmVuY29kZWR8UCg/Okl8T1NJVElWRV9JTkZJTklUWSl8Zig/OmlsZW5hbWV8byg/Om50KD86U2l6ZXxGYW1pbHl8V2VpZ2h0KXxybU5hbWUpfHJhbWUoPzpzfEVsZW1lbnQpfGdDb2xvcil8RXx3aGl0ZVNwYWNlfGwoPzppKD86c3RTdHlsZVR5cGV8big/OmVIZWlnaHR8a0NvbG9yKSl8byg/OmNhKD86dGlvbig/OmJhcik/fGxOYW1lKXx3c3JjKXxlKD86bmd0aHxmdCg/OkNvbnRleHQpPyl8YSg/OnN0KD86TSg/Om9kaWZpZWR8YXRjaCl8SW5kZXh8UGFyZW4pfHllcig/OnN8WCl8bmd1YWdlKSl8YSg/OnBwKD86TWlub3JWZXJzaW9ufE5hbWV8Q28oPzpkZU5hbWV8cmUpfFZlcnNpb24pfHZhaWwoPzpIZWlnaHR8VG9wfFdpZHRofExlZnQpfGxsfHIoPzppdHl8Z3VtZW50cyl8TGlua2NvbG9yfGJvdmUpfHIoPzppZ2h0KD86Q29udGV4dCk/fGUoPzpzcG9uc2UoPzpYTUx8VGV4dCl8YWR5U3RhdGUpKXxnbG9iYWx8eHxtKD86aW1lVHlwZXN8dWx0aWxpbmV8ZW51YmFyfGFyZ2luKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KSl8TCg/Ok4oPzoxMHwyKXxPRyg/OjEwRXwyRSkpfGIoPzpvKD86dHRvbXxyZGVyKD86V2lkdGh8UmlnaHRXaWR0aHxCb3R0b21XaWR0aHxTdHlsZXxDb2xvcnxUb3BXaWR0aHxMZWZ0V2lkdGgpKXx1ZmZlckRlcHRofGVsb3d8YWNrZ3JvdW5kKD86Q29sb3J8SW1hZ2UpKSlcYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5maXJlYnVnIl0scmVnZXg6Lyhjb25zb2xlKShcLikod2FybnxpbmZvfGxvZ3xlcnJvcnx0aW1lfHRpbWVFbmR8YXNzZXJ0KVxiL30se3Rva2VuOmZ1bmN0aW9uKGMpe3JldHVybiBhLmhhc093blByb3BlcnR5KGMpPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ZC5oYXNPd25Qcm9wZXJ0eShjKT8iaW52YWxpZC5kZXByZWNhdGVkIjpoLmhhc093blByb3BlcnR5KGMpPyJzdG9yYWdlLnR5cGUiOmIuaGFzT3duUHJvcGVydHkoYyk/ImtleXdvcmQiOmkuaGFzT3duUHJvcGVydHkoYyk/ImNvbnN0YW50Lmxhbmd1YWdlIjpqLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmlsbGVnYWwiOmM9PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDprfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi8hfFwkfCV8JnxcKnxcLVwtfFwtfFwrXCt8XCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFx8XHx8XD9cOnxcKj18JT18XCs9fFwtPXwmPXxcXj18XGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6L1w/fFw6fFwsfFw7fFwuLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFsoe10vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6L1tcXSl9XS99LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6L1wvPT8vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9eIyEuKiQvfSx7dG9rZW46InRleHQiLHJlZ2V4Oi9ccysvfV0scmVnZXhfYWxsb3dlZDpbZy5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudF9yZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiXFwvIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleDpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiL1xcdyoiLG5leHQ6InN0YXJ0IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiW15cXFxcL1xcW10rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlxcWyIsbmV4dDoicmVnZXhfY2hhcmFjdGVyX2NsYXNzIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXhfY2hhcmFjdGVyX2NsYXNzOlt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXSIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiW15cXFxcXFxdXSsiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxmdW5jdGlvbl9hcmd1bWVudHM6W3t0b2tlbjoidmFyaWFibGUucGFyYW1ldGVyIixyZWdleDprfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiWywgXSsiLG1lcmdlOiEwfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiJCIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGNvbW1lbnRfcmVnZXhfYWxsb3dlZDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6bH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbXiJcXFxcXSsnLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxcXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDonInwkJyxuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XSxxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6bH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbXidcXFxcXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInfCQiLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dfSx0aGlzLmVtYmVkUnVsZXMoZywiZG9jLSIsW2cuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtkLmluaGVyaXRzKGksaCksYi5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXM9aX0pLGRlZmluZSgiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGY9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJUT0RPIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlteQFxcKl0rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6Ii4ifV19fTtkLmluaGVyaXRzKGYsZSksZi5nZXRTdGFydFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKig/PVxcKikiLG5leHQ6YX19LGYuZ2V0RW5kUnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwqXFwvIixuZXh0OmF9fSxiLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcz1mfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL3JhbmdlIikuUmFuZ2UsZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4vXlxzKyQvLnRlc3QoYSk/L15ccypcfS8udGVzdChiKTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0TGluZShiKSxlPWMubWF0Y2goL14oXHMqXH0pLyk7aWYoIWUpcmV0dXJuIDA7dmFyIGY9ZVsxXS5sZW5ndGgsZz1hLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpiLGNvbHVtbjpmfSk7aWYoIWd8fGcucm93PT1iKXJldHVybiAwO3ZhciBoPXRoaXMuJGdldEluZGVudChhLmdldExpbmUoZy5yb3cpKTthLnJlcGxhY2UobmV3IGQoYiwwLGIsZi0xKSxoKX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14oXHMrKS8pO3JldHVybiBiP2JbMV06IiJ9fSkuY2FsbChlLnByb3RvdHlwZSksYi5NYXRjaGluZ0JyYWNlT3V0ZGVudD1lfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLGY9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSJ7Iil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6InsiK2crIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSJ9Iil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBsPWQuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93Omgucm93LGNvbHVtbjpoLmNvbHVtbisxfSk7aWYoIWwpcmV0dXJuIG51bGw7dmFyIG09dGhpcy5nZXROZXh0TGluZUluZGVudChhLGkuc3Vic3RyaW5nKDAsaS5sZW5ndGgtMSksZC5nZXRUYWJTdHJpbmcoKSksbj10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShsLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbSsiXG4iK24sc2VsZWN0aW9uOlsxLG0ubGVuZ3RoLDEsbS5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0ieyIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5lbmQuY29sdW1uLGUuZW5kLmNvbHVtbisxKTtpZihoPT0ifSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0iKCIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiIoIitnKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0iKSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09IikiKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSIoIil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSIpIilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09JyInfHxlPT0iJyIpe3ZhciBmPWUsZz1jLmdldFNlbGVjdGlvblJhbmdlKCksaD1kLmRvYy5nZXRUZXh0UmFuZ2UoZyk7aWYoaCE9PSIiKXJldHVybnt0ZXh0OmYraCtmLHNlbGVjdGlvbjohMX07dmFyIGk9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGo9ZC5kb2MuZ2V0TGluZShpLnJvdyksaz1qLnN1YnN0cmluZyhpLmNvbHVtbi0xLGkuY29sdW1uKTtpZihrPT0iXFwiKXJldHVybiBudWxsO3ZhciBsPWQuZ2V0VG9rZW5zKGcuc3RhcnQucm93KSxtPTAsbixvPS0xO2Zvcih2YXIgcD0wO3A8bC5sZW5ndGg7cCsrKXtuPWxbcF0sbi50eXBlPT0ic3RyaW5nIj9vPS0xOm88MCYmKG89bi52YWx1ZS5pbmRleE9mKGYpKTtpZihuLnZhbHVlLmxlbmd0aCttPmcuc3RhcnQuY29sdW1uKWJyZWFrO20rPWxbcF0udmFsdWUubGVuZ3RofWlmKCFufHxvPDAmJm4udHlwZSE9PSJjb21tZW50IiYmKG4udHlwZSE9PSJzdHJpbmcifHxnLnN0YXJ0LmNvbHVtbiE9PW4udmFsdWUubGVuZ3RoK20tMSYmbi52YWx1ZS5sYXN0SW5kZXhPZihmKT09PW4udmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OmYrZixzZWxlY3Rpb246WzEsMV19O2lmKG4mJm4udHlwZT09PSJzdHJpbmciKXt2YXIgcT1qLnN1YnN0cmluZyhpLmNvbHVtbixpLmNvbHVtbisxKTtpZihxPT1mKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiYoZj09JyInfHxmPT0iJyIpKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09JyInKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pfTtkLmluaGVyaXRzKGYsZSksYi5Dc3R5bGVCZWhhdmlvdXI9Zn0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZj1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGc9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307ZC5pbmhlcml0cyhnLGYpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKSxmPWQubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXg7aWYoZlsxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGEsZlsxXSxjLGcpO3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcrZlswXS5sZW5ndGgpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH1pZihiIT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBmPWQubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleCtmWzBdLmxlbmd0aDtpZihmWzJdKXt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9dmFyIGk9e3JvdzpjLGNvbHVtbjpnfSxqPWEuJGZpbmRPcGVuaW5nQnJhY2tldChmWzFdLGkpO2lmKCFqKXJldHVybjtyZXR1cm4gai5jb2x1bW4rKyxpLmNvbHVtbi0tLGUuZnJvbVBvaW50cyhqLGkpfX19LmNhbGwoZy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGU9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyk7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3QoZCk/InN0YXJ0IjpiPT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KGQpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihhLGIsYyl7dmFyIGU9L15ccyovLGY9YixnPWIsaD1hLmdldExpbmUoYiksaT1jfHxoLmxlbmd0aCxqPWgubWF0Y2goZSlbMF0ubGVuZ3RoLGs9YS5nZXRMZW5ndGgoKTt3aGlsZSgrK2I8ayl7aD1hLmdldExpbmUoYik7dmFyIGw9aC5tYXRjaChlKVswXS5sZW5ndGg7aWYobD09aC5sZW5ndGgpY29udGludWU7aWYobDw9ailicmVhaztnPWJ9aWYoZz5mKXt2YXIgbT1hLmdldExpbmUoZykubGVuZ3RoO3JldHVybiBuZXcgZChmLGksZyxtKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihhLGIsYyxlLGYsZyl7dmFyIGg9e3JvdzpjLGNvbHVtbjplKzF9LGk9YS4kZmluZENsb3NpbmdCcmFja2V0KGIsaCxmLGcpO2lmKCFpKXJldHVybjt2YXIgaj1hLmZvbGRXaWRnZXRzW2kucm93XTtyZXR1cm4gaj09bnVsbCYmKGo9dGhpcy5nZXRGb2xkV2lkZ2V0KGEsaS5yb3cpKSxqPT0ic3RhcnQiJiYoaS5yb3ctLSxpLmNvbHVtbj1hLmdldExpbmUoaS5yb3cpLmxlbmd0aCksZC5mcm9tUG9pbnRzKGgsaSl9fSkuY2FsbChlLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2dyb292eV9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxnPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsaD1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYXNzZXJ0fHdpdGh8YWJzdHJhY3R8Y29udGludWV8Zm9yfG5ld3xzd2l0Y2h8YXNzZXJ0fGRlZmF1bHR8Z290b3xwYWNrYWdlfHN5bmNocm9uaXplZHxib29sZWFufGRvfGlmfHByaXZhdGV8dGhpc3xicmVha3xkb3VibGV8aW1wbGVtZW50c3xwcm90ZWN0ZWR8dGhyb3d8Ynl0ZXxlbHNlfGltcG9ydHxwdWJsaWN8dGhyb3dzfGNhc2V8ZW51bXxpbnN0YW5jZW9mfHJldHVybnx0cmFuc2llbnR8Y2F0Y2h8ZXh0ZW5kc3xpbnR8c2hvcnR8dHJ5fGNoYXJ8ZmluYWx8aW50ZXJmYWNlfHN0YXRpY3x2b2lkfGNsYXNzfGZpbmFsbHl8bG9uZ3xzdHJpY3RmcHx2b2xhdGlsZXxkZWZ8ZmxvYXR8bmF0aXZlfHN1cGVyfHdoaWxlIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgibnVsbHxJbmZpbml0eXxOYU58dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgiQWJzdHJhY3RNZXRob2RFcnJvcnxBc3NlcnRpb25FcnJvcnxDbGFzc0NpcmN1bGFyaXR5RXJyb3J8Q2xhc3NGb3JtYXRFcnJvcnxEZXByZWNhdGVkfEVudW1Db25zdGFudE5vdFByZXNlbnRFeGNlcHRpb258RXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yfElsbGVnYWxBY2Nlc3NFcnJvcnxJbGxlZ2FsVGhyZWFkU3RhdGVFeGNlcHRpb258SW5zdGFudGlhdGlvbkVycm9yfEludGVybmFsRXJyb3J8TmVnYXRpdmVBcnJheVNpemVFeGNlcHRpb258Tm9TdWNoRmllbGRFcnJvcnxPdmVycmlkZXxQcm9jZXNzfFByb2Nlc3NCdWlsZGVyfFNlY3VyaXR5TWFuYWdlcnxTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9ufFN1cHByZXNzV2FybmluZ3N8VHlwZU5vdFByZXNlbnRFeGNlcHRpb258VW5rbm93bkVycm9yfFVuc2F0aXNmaWVkTGlua0Vycm9yfFVuc3VwcG9ydGVkQ2xhc3NWZXJzaW9uRXJyb3J8VmVyaWZ5RXJyb3J8SW5zdGFudGlhdGlvbkV4Y2VwdGlvbnxJbmRleE91dE9mQm91bmRzRXhjZXB0aW9ufEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbnxOb1N1Y2hGaWVsZEV4Y2VwdGlvbnxJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb258TnVtYmVyRm9ybWF0RXhjZXB0aW9ufFNlY3VyaXR5RXhjZXB0aW9ufFZvaWR8SW5oZXJpdGFibGVUaHJlYWRMb2NhbHxJbGxlZ2FsU3RhdGVFeGNlcHRpb258SW50ZXJydXB0ZWRFeGNlcHRpb258Tm9TdWNoTWV0aG9kRXhjZXB0aW9ufElsbGVnYWxBY2Nlc3NFeGNlcHRpb258VW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb258RW51bXxTdHJpY3RNYXRofFBhY2thZ2V8Q29tcGlsZXJ8UmVhZGFibGV8UnVudGltZXxTdHJpbmdCdWlsZGVyfE1hdGh8SW5jb21wYXRpYmxlQ2xhc3NDaGFuZ2VFcnJvcnxOb1N1Y2hNZXRob2RFcnJvcnxUaHJlYWRMb2NhbHxSdW50aW1lUGVybWlzc2lvbnxBcml0aG1ldGljRXhjZXB0aW9ufE51bGxQb2ludGVyRXhjZXB0aW9ufExvbmd8SW50ZWdlcnxTaG9ydHxCeXRlfERvdWJsZXxOdW1iZXJ8RmxvYXR8Q2hhcmFjdGVyfEJvb2xlYW58U3RhY2tUcmFjZUVsZW1lbnR8QXBwZW5kYWJsZXxTdHJpbmdCdWZmZXJ8SXRlcmFibGV8VGhyZWFkR3JvdXB8UnVubmFibGV8VGhyZWFkfElsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb258U3RhY2tPdmVyZmxvd0Vycm9yfE91dE9mTWVtb3J5RXJyb3J8VmlydHVhbE1hY2hpbmVFcnJvcnxBcnJheVN0b3JlRXhjZXB0aW9ufENsYXNzQ2FzdEV4Y2VwdGlvbnxMaW5rYWdlRXJyb3J8Tm9DbGFzc0RlZkZvdW5kRXJyb3J8Q2xhc3NOb3RGb3VuZEV4Y2VwdGlvbnxSdW50aW1lRXhjZXB0aW9ufEV4Y2VwdGlvbnxUaHJlYWREZWF0aHxFcnJvcnxUaHJvd2FibGV8U3lzdGVtfENsYXNzTG9hZGVyfENsb25lYWJsZXxDbGFzc3xDaGFyU2VxdWVuY2V8Q29tcGFyYWJsZXxTdHJpbmd8T2JqZWN0Ii5zcGxpdCgifCIpKSxkPWUuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LGYuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBlPT0idGhpcyI/InZhcmlhYmxlLmxhbmd1YWdlIjphLmhhc093blByb3BlcnR5KGUpPyJrZXl3b3JkIjpjLmhhc093blByb3BlcnR5KGUpPyJzdXBwb3J0LmZ1bmN0aW9uIjpkLmhhc093blByb3BlcnR5KGUpPyJzdXBwb3J0LmZ1bmN0aW9uIjpiLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5sYW5ndWFnZSI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFw/OnxcXD9cXC58XFwqXFwufDw9Pnw9fnw9PX58XFwuQHxcXCpcXC5AfFxcLiZ8YXN8aW58aXN8IXxcXCR8JXwmfFxcKnxcXC1cXC18XFwtfFxcK1xcK3xcXCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJscGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSx0aGlzLmVtYmVkUnVsZXMoZiwiZG9jLSIsW2YuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtkLmluaGVyaXRzKGgsZyksYi5Hcm9vdnlIaWdobGlnaHRSdWxlcz1ofSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-haxe.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9oYXhlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2hheGVfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9oYXhlX2hpZ2hsaWdodF9ydWxlcyIpLkhheGVIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGo9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGs9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgaSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgan07ZC5pbmhlcml0cyhrLGUpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQiKXt2YXIgZz1iLm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtnJiYoZCs9Yyl9cmV0dXJuIGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbH19LmNhbGwoay5wcm90b3R5cGUpLGIuTW9kZT1rfSksZGVmaW5lKCJhY2UvbW9kZS9oYXhlX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGc9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxoPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhc3R8Y2F0Y2h8Y2xhc3N8Y29udGludWV8ZGVmYXVsdHxlbHNlfGVudW18ZXh0ZW5kc3xmb3J8ZnVuY3Rpb258aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW58aW5saW5lfGludGVyZmFjZXxuZXd8b3ZlcnJpZGV8cGFja2FnZXxwcml2YXRlfHB1YmxpY3xyZXR1cm58c3RhdGljfHN1cGVyfHN3aXRjaHx0aGlzfHRocm93fHRyYWNlfHRyeXx0eXBlZGVmfHVudHlwZWR8dmFyfHdoaWxlfEFycmF5fFZvaWR8Qm9vbHxJbnR8VUludHxGbG9hdHxEeW5hbWljfFN0cmluZ3xMaXN0fEhhc2h8SW50SGFzaHxFcnJvcnxVbmtub3dufFR5cGV8U3RkIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgibnVsbHx0cnVlfGZhbHNlIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LGYuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXCoiLG1lcmdlOiEwLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGMpe3JldHVybiBjPT0idGhpcyI/InZhcmlhYmxlLmxhbmd1YWdlIjphLmhhc093blByb3BlcnR5KGMpPyJrZXl3b3JkIjpiLmhhc093blByb3BlcnR5KGMpPyJjb25zdGFudC5sYW5ndWFnZSI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiIXxcXCR8JXwmfFxcKnxcXC1cXC18XFwtfFxcK1xcK3xcXCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlxcP3xcXDp8XFwsfFxcO3xcXC4ifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltbKHs8XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9Pl0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sdGhpcy5lbWJlZFJ1bGVzKGYsImRvYy0iLFtmLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ZC5pbmhlcml0cyhoLGcpLGIuSGF4ZUhpZ2hsaWdodFJ1bGVzPWh9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ZC5pbmhlcml0cyhmLGUpLGYuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmF9fSxmLmdldEVuZFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDphfX0sYi5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0ieyIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiJ7IitnKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0ifSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGU9PSJcbiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgbD1kLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpoLnJvdyxjb2x1bW46aC5jb2x1bW4rMX0pO2lmKCFsKXJldHVybiBudWxsO3ZhciBtPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoYSxpLnN1YnN0cmluZygwLGkubGVuZ3RoLTEpLGQuZ2V0VGFiU3RyaW5nKCkpLG49dGhpcy4kZ2V0SW5kZW50KGQuZG9jLmdldExpbmUobC5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK20rIlxuIituLHNlbGVjdGlvbjpbMSxtLmxlbmd0aCwxLG0ubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09InsiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuZW5kLmNvbHVtbixlLmVuZC5jb2x1bW4rMSk7aWYoaD09In0iKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IigiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoiKCIrZysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09IikiKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSIpIil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0iKCIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0iKSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSciJ3x8ZT09IiciKXt2YXIgZj1lLGc9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGg9ZC5kb2MuZ2V0VGV4dFJhbmdlKGcpO2lmKGghPT0iIilyZXR1cm57dGV4dDpmK2grZixzZWxlY3Rpb246ITF9O3ZhciBpPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxqPWQuZG9jLmdldExpbmUoaS5yb3cpLGs9ai5zdWJzdHJpbmcoaS5jb2x1bW4tMSxpLmNvbHVtbik7aWYoaz09IlxcIilyZXR1cm4gbnVsbDt2YXIgbD1kLmdldFRva2VucyhnLnN0YXJ0LnJvdyksbT0wLG4sbz0tMTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyl7bj1sW3BdLG4udHlwZT09InN0cmluZyI/bz0tMTpvPDAmJihvPW4udmFsdWUuaW5kZXhPZihmKSk7aWYobi52YWx1ZS5sZW5ndGgrbT5nLnN0YXJ0LmNvbHVtbilicmVhazttKz1sW3BdLnZhbHVlLmxlbmd0aH1pZighbnx8bzwwJiZuLnR5cGUhPT0iY29tbWVudCImJihuLnR5cGUhPT0ic3RyaW5nInx8Zy5zdGFydC5jb2x1bW4hPT1uLnZhbHVlLmxlbmd0aCttLTEmJm4udmFsdWUubGFzdEluZGV4T2YoZik9PT1uLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpmK2Ysc2VsZWN0aW9uOlsxLDFdfTtpZihuJiZuLnR5cGU9PT0ic3RyaW5nIil7dmFyIHE9ai5zdWJzdHJpbmcoaS5jb2x1bW4saS5jb2x1bW4rMSk7aWYocT09ZilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmKGY9PSciJ3x8Zj09IiciKSl7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSciJylyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KX07ZC5pbmhlcml0cyhmLGUpLGIuQ3N0eWxlQmVoYXZpb3VyPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-html.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9odG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL21vZGUvamF2YXNjcmlwdCIsImFjZS9tb2RlL2NzcyIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9odG1sX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLCJhY2UvbW9kZS9mb2xkaW5nL2h0bWwiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4vamF2YXNjcmlwdCIpLk1vZGUsZz1hKCIuL2NzcyIpLk1vZGUsaD1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaT1hKCIuL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIikuSHRtbEhpZ2hsaWdodFJ1bGVzLGo9YSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGs9YSgiLi9mb2xkaW5nL2h0bWwiKS5Gb2xkTW9kZSxsPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IGk7dGhpcy4kdG9rZW5pemVyPW5ldyBoKGEuZ2V0UnVsZXMoKSksdGhpcy4kYmVoYXZpb3VyPW5ldyBqLHRoaXMuJGVtYmVkcz1hLmdldEVtYmVkcygpLHRoaXMuY3JlYXRlTW9kZURlbGVnYXRlcyh7ImpzLSI6ZiwiY3NzLSI6Z30pLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBrfTtkLmluaGVyaXRzKGwsZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gMH0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJGdldEluZGVudChiKX0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiExfX0uY2FsbChsLnByb3RvdHlwZSksYi5Nb2RlPWx9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuLi9yYW5nZSIpLlJhbmdlLGo9YSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsaz1hKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsbD1hKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsbT1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy4kYmVoYXZpb3VyPW5ldyBrLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBsfTtkLmluaGVyaXRzKG0sZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMCxmPS9eKFxzKilcL1wvLztmb3IodmFyIGc9YztnPD1kO2crKylpZighZi50ZXN0KGIuZ2V0TGluZShnKSkpe2U9ITE7YnJlYWt9aWYoZSl7dmFyIGg9bmV3IGkoMCwwLDAsMCk7Zm9yKHZhciBnPWM7Zzw9ZDtnKyspe3ZhciBqPWIuZ2V0TGluZShnKSxrPWoubWF0Y2goZik7aC5zdGFydC5yb3c9ZyxoLmVuZC5yb3c9ZyxoLmVuZC5jb2x1bW49a1swXS5sZW5ndGgsYi5yZXBsYWNlKGgsa1sxXSl9fWVsc2UgYi5pbmRlbnRSb3dzKGMsZCwiLy8iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zLGc9ZS5zdGF0ZTtpZihmLmxlbmd0aCYmZltmLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIGQ7aWYoYT09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXt2YXIgaD1iLm1hdGNoKC9eLiooPzpcYmNhc2VcYi4qXDp8W1x7XChcW10pXHMqJC8pO2gmJihkKz1jKX1lbHNlIGlmKGE9PSJkb2Mtc3RhcnQiKXtpZihnPT0ic3RhcnQifHxhPT0icmVnZXhfYWxsb3dlZCIpcmV0dXJuIiI7dmFyIGg9Yi5tYXRjaCgvXlxzKihcLz8pXCovKTtoJiYoaFsxXSYmKGQrPSIgIiksZCs9IiogIil9cmV0dXJuIGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgaihbImFjZSJdLCJ3b3JrZXItamF2YXNjcmlwdC5qcyIsImFjZS9tb2RlL2phdmFzY3JpcHRfd29ya2VyIiwiSmF2YVNjcmlwdFdvcmtlciIpO3JldHVybiBiLmF0dGFjaFRvRG9jdW1lbnQoYS5nZXREb2N1bWVudCgpKSxiLm9uKCJqc2xpbnQiLGZ1bmN0aW9uKGIpe3ZhciBjPVtdO2Zvcih2YXIgZD0wO2Q8Yi5kYXRhLmxlbmd0aDtkKyspe3ZhciBlPWIuZGF0YVtkXTtlJiZjLnB1c2goe3JvdzplLmxpbmUtMSxjb2x1bW46ZS5jaGFyYWN0ZXItMSx0ZXh0OmUucmVhc29uLHR5cGU6Indhcm5pbmciLGxpbnQ6ZX0pfWEuc2V0QW5ub3RhdGlvbnMoYyl9KSxiLm9uKCJuYXJjaXNzdXMiLGZ1bmN0aW9uKGIpe2Euc2V0QW5ub3RhdGlvbnMoW2IuZGF0YV0pfSksYi5vbigidGVybWluYXRlIixmdW5jdGlvbigpe2EuY2xlYXJBbm5vdGF0aW9ucygpfSksYn19LmNhbGwobS5wcm90b3R5cGUpLGIuTW9kZT1tfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3VuaWNvZGUiLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi4vdW5pY29kZSIpLGc9YSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsaD1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGk9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoIkFycmF5fEJvb2xlYW58RGF0ZXxGdW5jdGlvbnxJdGVyYXRvcnxOdW1iZXJ8T2JqZWN0fFJlZ0V4cHxTdHJpbmd8UHJveHl8TmFtZXNwYWNlfFFOYW1lfFhNTHxYTUxMaXN0fEFycmF5QnVmZmVyfEZsb2F0MzJBcnJheXxGbG9hdDY0QXJyYXl8SW50MTZBcnJheXxJbnQzMkFycmF5fEludDhBcnJheXxVaW50MTZBcnJheXxVaW50MzJBcnJheXxVaW50OEFycmF5fFVpbnQ4Q2xhbXBlZEFycmF5fEVycm9yfEV2YWxFcnJvcnxJbnRlcm5hbEVycm9yfFJhbmdlRXJyb3J8UmVmZXJlbmNlRXJyb3J8U3RvcEl0ZXJhdGlvbnxTeW50YXhFcnJvcnxUeXBlRXJyb3J8VVJJRXJyb3J8ZGVjb2RlVVJJfGRlY29kZVVSSUNvbXBvbmVudHxlbmNvZGVVUkl8ZW5jb2RlVVJJQ29tcG9uZW50fGV2YWx8aXNGaW5pdGV8aXNOYU58cGFyc2VGbG9hdHxwYXJzZUludHxKU09OfE1hdGh8dGhpc3xhcmd1bWVudHN8cHJvdG90eXBlfHdpbmRvd3xkb2N1bWVudCIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoImJyZWFrfGNhc2V8Y2F0Y2h8Y29udGludWV8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8bGV0fHZhcnx3aGlsZXx3aXRofGNvbnN0fHlpZWxkfGltcG9ydHxnZXR8c2V0Ii5zcGxpdCgifCIpKSxjPSJjYXNlfGRvfGVsc2V8ZmluYWxseXxpbnxpbnN0YW5jZW9mfHJldHVybnx0aHJvd3x0cnl8dHlwZW9mfHlpZWxkIixkPWUuYXJyYXlUb01hcCgiX19wYXJlbnRfX3xfX2NvdW50X198ZXNjYXBlfHVuZXNjYXBlfHdpdGh8X19wcm90b19fIi5zcGxpdCgifCIpKSxoPWUuYXJyYXlUb01hcCgiY29uc3R8bGV0fHZhcnxmdW5jdGlvbiIuc3BsaXQoInwiKSksaT1lLmFycmF5VG9NYXAoIm51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIuc3BsaXQoInwiKSksaj1lLmFycmF5VG9NYXAoImNsYXNzfGVudW18ZXh0ZW5kc3xzdXBlcnxleHBvcnR8aW1wbGVtZW50c3xwcml2YXRlfHB1YmxpY3xpbnRlcmZhY2V8cGFja2FnZXxwcm90ZWN0ZWR8c3RhdGljIi5zcGxpdCgifCIpKSxrPSJbIitmLnBhY2thZ2VzLkwrIlxcJF9dWyIrZi5wYWNrYWdlcy5MK2YucGFja2FnZXMuTW4rZi5wYWNrYWdlcy5NYytmLnBhY2thZ2VzLk5kK2YucGFja2FnZXMuUGMrIlxcJF9dKlxcYiIsbD0iXFxcXCg/OnhbMC05YS1mQS1GXXsyfXx1WzAtOWEtZkEtRl17NH18WzAtMl1bMC03XXswLDJ9fDNbMC02XVswLTddP3wzN1swLTddP3xbNC03XVswLTddP3wuKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9cL1wvLiokL30sZy5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6L1wvXCovLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPz0uKSIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIig/PS4pJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6LzBbeFhdWzAtOWEtZkEtRl0rXGIvfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi9bKy1dP1xkKyg/Oig/OlwuXGQqKT8oPzpbZUVdWystXT9cZCspPyk/XGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIraysiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCJdLHJlZ2V4OiIoIitrKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIraysiKShcXHMqKSg9KShcXHMqKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKCIraysiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKGZ1bmN0aW9uKShcXHMrKSgiK2srIikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJ0ZXh0IiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4Oi8oPzp0cnVlfGZhbHNlKVxiL30se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiKD86IitjKyIpXFxiIixuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIl0scmVnZXg6LyhcLikocyg/OmgoPzppZnR8b3coPzpNb2QoPzplbGVzc0RpYWxvZ3xhbERpYWxvZyl8SGVscCkpfGNyb2xsKD86WHxCeSg/OlBhZ2VzfExpbmVzKT98WXxUbyk/fHQoPzpvcHp6enp8cmlrZSl8aSg/Om58emVUb0NvbnRlbnR8ZGViYXJ8Z25UZXh0KXxvcnR8dSg/OnB8Yig/OnN0cig/OmluZyk/KT8pfHBsaSg/OmNlfHQpfGUoPzpuZHx0KD86UmUoPzpzaXphYmxlfHF1ZXN0SGVhZGVyKXxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG8oPzp0S2V5c3x1cnMpfFllYXJ8Q3Vyc29yfFRpbWUoPzpvdXQpP3xJbnRlcnZhbHxaT3B0aW9uc3xEYXRlfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYXRlfEZ1bGxZZWFyKXxGdWxsWWVhcnxBY3RpdmUpfGFyY2gpfHFydHxsaWNlfGF2ZVByZWZlcmVuY2VzfG1hbGwpfGgoPzpvbWV8YW5kbGVFdmVudCl8bmF2aWdhdGV8Yyg/Omhhcig/OkNvZGVBdHxBdCl8byg/OnN8big/OmNhdHx0ZXh0dWFsfGZpcm0pfG1waWxlKXxlaWx8bGVhcig/OlRpbWVvdXR8SW50ZXJ2YWwpP3xhKD86cHR1cmVFdmVudHN8bGwpfHJlYXRlKD86U3R5bGVTaGVldHxQb3B1cHxFdmVudE9iamVjdCkpfHQoPzpvKD86R01UU3RyaW5nfFMoPzp0cmluZ3xvdXJjZSl8VSg/OlRDU3RyaW5nfHBwZXJDYXNlKXxMbyg/OmNhbGVTdHJpbmd8d2VyQ2FzZSkpfGVzdHxhKD86bnxpbnQoPzpFbmFibGVkKT8pKXxpKD86cyg/Ok5hTnxGaW5pdGUpfG5kZXhPZnx0YWxpY3MpfGQoPzppc2FibGVFeHRlcm5hbENhcHR1cmV8dW1wfGV0YWNoRXZlbnQpfHUoPzpuKD86c2hpZnR8dGFpbnR8ZXNjYXBlfHdhdGNoKXxwZGF0ZUNvbW1hbmRzKXxqKD86b2lufGF2YUVuYWJsZWQpfHAoPzpvKD86cHx3KXx1c2h8bHVnaW5zLnJlZnJlc2h8YSg/OmRkaW5nc3xyc2UoPzpJbnR8RmxvYXQpPyl8cig/OmludHxvbXB0fGVmZXJlbmNlKSl8ZSg/OnNjYXBlfG5hYmxlRXh0ZXJuYWxDYXB0dXJlfHZhbHxsZW1lbnRGcm9tUG9pbnR8eCg/OnB8ZWMoPzpTY3JpcHR8Q29tbWFuZCk/KSl8dmFsdWVPZnxVVEN8cXVlcnlDb21tYW5kKD86U3RhdGV8SW5kZXRlcm18RW5hYmxlZHxWYWx1ZSl8Zig/OmkoPzpuZHxsZSg/Ok1vZGlmaWVkRGF0ZXxTaXplfENyZWF0ZWREYXRlfFVwZGF0ZWREYXRlKXx4ZWQpfG8oPzpudCg/OnNpemV8Y29sb3IpfHJ3YXJkKXxsb29yfHJvbUNoYXJDb2RlKXx3YXRjaHxsKD86aW5rfG8oPzphZHxnKXxhc3RJbmRleE9mKXxhKD86c2lufG5jaG9yfGNvc3x0KD86dGFjaEV2ZW50fG9ifGFuKD86Mik/KXxwcGx5fGxlcnR8Yig/OnN8b3J0KSl8cig/Om91KD86bmR8dGVFdmVudHMpfGUoPzpzaXplKD86Qnl8VG8pfGNhbGN8dHVyblZhbHVlfHBsYWNlfHZlcnNlfGwoPzpvYWR8ZWFzZSg/OkNhcHR1cmV8RXZlbnRzKSkpfGFuZG9tKXxnKD86b3xldCg/OlJlc3BvbnNlSGVhZGVyfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2UoPzpjb25kc3xsZWN0aW9uKXxIb3Vyc3xZZWFyfFRpbWUoPzp6b25lT2Zmc2V0KT98RGEoPzp5fHRlKXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGEoPzp5fHRlKXxGdWxsWWVhcil8RnVsbFllYXJ8QSg/OnR0ZW50aW9ufGxsUmVzcG9uc2VIZWFkZXJzKSkpfG0oPzppbnxvdmUoPzpCKD86eXxlbG93KXxUbyg/OkFic29sdXRlKT98QWJvdmUpfGVyZ2VBdHRyaWJ1dGVzfGEoPzp0Y2h8cmdpbnN8eCkpfGIoPzp0b2F8aWd8byg/OmxkfHJkZXJXaWR0aHMpfGxpbmt8YWNrKSlcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5kb20iXSxyZWdleDovKFwuKShzKD86dWIoPzpzdHJpbmdEYXRhfG1pdCl8cGxpdFRleHR8ZSg/OnQoPzpOYW1lZEl0ZW18QXR0cmlidXRlKD86Tm9kZSk/KXxsZWN0KSl8aGFzKD86Q2hpbGROb2Rlc3xGZWF0dXJlKXxuYW1lZEl0ZW18Yyg/OmwoPzppY2t8byg/OnNlfG5lTm9kZSkpfHJlYXRlKD86Qyg/Om9tbWVudHxEQVRBU2VjdGlvbnxhcHRpb24pfFQoPzpIZWFkfGV4dE5vZGV8Rm9vdCl8RG9jdW1lbnRGcmFnbWVudHxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb258RSg/Om50aXR5UmVmZXJlbmNlfGxlbWVudCl8QXR0cmlidXRlKSl8dGFiSW5kZXh8aSg/Om5zZXJ0KD86Um93fEJlZm9yZXxDZWxsfERhdGEpfHRlbSl8b3BlbnxkZWxldGUoPzpSb3d8Qyg/OmVsbHxhcHRpb24pfFQoPzpIZWFkfEZvb3QpfERhdGEpfGZvY3VzfHdyaXRlKD86bG4pP3xhKD86ZGR8cHBlbmQoPzpDaGlsZHxEYXRhKSl8cmUoPzpzZXR8cGxhY2UoPzpDaGlsZHxEYXRhKXxtb3ZlKD86TmFtZWRJdGVtfENoaWxkfEF0dHJpYnV0ZSg/Ok5vZGUpPyk/KXxnZXQoPzpOYW1lZEl0ZW18RWxlbWVudCg/OnNCeSg/Ok5hbWV8VGFnTmFtZSl8QnlJZCl8QXR0cmlidXRlKD86Tm9kZSk/KXxibHVyKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmNvbnN0YW50Il0scmVnZXg6LyhcLikocyg/OnlzdGVtTGFuZ3VhZ2V8Y3IoPzppcHRzfG9sbGJhcnN8ZWVuKD86WHxZfFRvcHxMZWZ0KSl8dCg/OnlsZSg/OlNoZWV0cyk/fGF0dXMoPzpUZXh0fGJhcik/KXxpYmxpbmcoPzpCZWxvd3xBYm92ZSl8b3VyY2V8dWZmaXhlc3xlKD86Y3VyaXR5KD86UG9saWN5KT98bCg/OmVjdGlvbnxmKSkpfGgoPzppc3Rvcnl8b3N0KD86bmFtZSk/fGFzKD86aHxGb2N1cykpfHl8WCg/Ok1MRG9jdW1lbnR8U0xEb2N1bWVudCl8big/OmV4dHxhbWUoPzpzcGFjZSg/OnN8VVJJKXxQcm9wKSl8TSg/OklOX1ZBTFVFfEFYX1ZBTFVFKXxjKD86aGFyYWN0ZXJTZXR8byg/Om4oPzpzdHJ1Y3Rvcnx0cm9sbGVycyl8b2tpZUVuYWJsZWR8bG9yRGVwdGh8bXAoPzpvbmVudHN8bGV0ZSkpfHVycmVudHxwdUNsYXNzfGwoPzppKD86cCg/OmJvYXJkRGF0YSk/fGVudEluZm9ybWF0aW9uKXxvc2VkfGFzc2VzKXxhbGxlKD86ZXxyKXxyeXB0byl8dCg/Om8oPzpvbGJhcnxwKXxleHQoPzpUcmFuc2Zvcm18SW5kZW50fERlY29yYXRpb258QWxpZ24pfGFncyl8U1FSVCg/OjFfMnwyKXxpKD86big/Om5lcig/OkhlaWdodHxXaWR0aCl8cHV0KXxkc3xnbm9yZUNhc2UpfHpJbmRleHxvKD86c2NwdXxuKD86cmVhZHlzdGF0ZWNoYW5nZXxMaW5lKXx1dGVyKD86SGVpZ2h0fFdpZHRoKXxwKD86c1Byb2ZpbGV8ZW5lcil8ZmZzY3JlZW5CdWZmZXJpbmcpfE5FR0FUSVZFX0lORklOSVRZfGQoPzppKD86c3BsYXl8YWxvZyg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdHxBcmd1bWVudHMpfHJlY3Rvcmllcyl8ZSg/OnNjcmlwdGlvbnxmYXVsdCg/OlN0YXR1c3xDaCg/OmVja2VkfGFyc2V0KXxWaWV3KSkpfHUoPzpzZXIoPzpQcm9maWxlfExhbmd1YWdlfEFnZW50KXxuKD86aXF1ZUlEfGRlZmluZWQpfHBkYXRlSW50ZXJ2YWwpfF9jb250ZW50fHAoPzppeGVsRGVwdGh8b3J0fGVyc29uYWxiYXJ8a2NzMTF8bCg/OnVnaW5zfGF0Zm9ybSl8YSg/OnRobmFtZXxkZGluZyg/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCl8cmVudCg/OldpbmRvd3xMYXllcik/fGdlKD86WCg/Ok9mZnNldCk/fFkoPzpPZmZzZXQpPykpfHIoPzpvKD86dG8oPzpjb2x8dHlwZSl8ZHVjdCg/OlN1Yik/fG1wdGVyKXxlKD86dmlvdXN8Zml4KSkpfGUoPzpuKD86Y29kaW5nfGFibGVkUGx1Z2luKXx4KD86dGVybmFsfHBhbmRvKXxtYmVkcyl8dig/OmlzaWJpbGl0eXxlbmRvcig/OlN1Yik/fExpbmtjb2xvcil8VVJMVW5lbmNvZGVkfFAoPzpJfE9TSVRJVkVfSU5GSU5JVFkpfGYoPzppbGVuYW1lfG8oPzpudCg/OlNpemV8RmFtaWx5fFdlaWdodCl8cm1OYW1lKXxyYW1lKD86c3xFbGVtZW50KXxnQ29sb3IpfEV8d2hpdGVTcGFjZXxsKD86aSg/OnN0U3R5bGVUeXBlfG4oPzplSGVpZ2h0fGtDb2xvcikpfG8oPzpjYSg/OnRpb24oPzpiYXIpP3xsTmFtZSl8d3NyYyl8ZSg/Om5ndGh8ZnQoPzpDb250ZXh0KT8pfGEoPzpzdCg/Ok0oPzpvZGlmaWVkfGF0Y2gpfEluZGV4fFBhcmVuKXx5ZXIoPzpzfFgpfG5ndWFnZSkpfGEoPzpwcCg/Ok1pbm9yVmVyc2lvbnxOYW1lfENvKD86ZGVOYW1lfHJlKXxWZXJzaW9uKXx2YWlsKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0KXxsbHxyKD86aXR5fGd1bWVudHMpfExpbmtjb2xvcnxib3ZlKXxyKD86aWdodCg/OkNvbnRleHQpP3xlKD86c3BvbnNlKD86WE1MfFRleHQpfGFkeVN0YXRlKSl8Z2xvYmFsfHh8bSg/OmltZVR5cGVzfHVsdGlsaW5lfGVudWJhcnxhcmdpbig/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCkpfEwoPzpOKD86MTB8Mil8T0coPzoxMEV8MkUpKXxiKD86byg/OnR0b218cmRlcig/OldpZHRofFJpZ2h0V2lkdGh8Qm90dG9tV2lkdGh8U3R5bGV8Q29sb3J8VG9wV2lkdGh8TGVmdFdpZHRoKSl8dWZmZXJEZXB0aHxlbG93fGFja2dyb3VuZCg/OkNvbG9yfEltYWdlKSkpXGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZmlyZWJ1ZyJdLHJlZ2V4Oi8oY29uc29sZSkoXC4pKHdhcm58aW5mb3xsb2d8ZXJyb3J8dGltZXx0aW1lRW5kfGFzc2VydClcYi99LHt0b2tlbjpmdW5jdGlvbihjKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShjKT8idmFyaWFibGUubGFuZ3VhZ2UiOmQuaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuZGVwcmVjYXRlZCI6aC5oYXNPd25Qcm9wZXJ0eShjKT8ic3RvcmFnZS50eXBlIjpiLmhhc093blByb3BlcnR5KGMpPyJrZXl3b3JkIjppLmhhc093blByb3BlcnR5KGMpPyJjb25zdGFudC5sYW5ndWFnZSI6ai5oYXNPd25Qcm9wZXJ0eShjKT8iaW52YWxpZC5pbGxlZ2FsIjpjPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOiJpZGVudGlmaWVyIn0scmVnZXg6a30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovIXxcJHwlfCZ8XCp8XC1cLXxcLXxcK1wrfFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcfFx8fFw/XDp8XCo9fCU9fFwrPXxcLT18Jj18XF49fFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4Oi9cP3xcOnxcLHxcO3xcLi8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDovW1xbKHtdLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi9cLz0/LyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDovXiMhLiokL30se3Rva2VuOiJ0ZXh0IixyZWdleDovXHMrL31dLHJlZ2V4X2FsbG93ZWQ6W2cuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnRfcmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlxcLyIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXg6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6Ii9cXHcqIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlteXFxcXC9cXFtdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJcXFsiLG5leHQ6InJlZ2V4X2NoYXJhY3Rlcl9jbGFzcyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4X2NoYXJhY3Rlcl9jbGFzczpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6Il0iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlteXFxcXFxcXV0rIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sZnVuY3Rpb25fYXJndW1lbnRzOlt7dG9rZW46InZhcmlhYmxlLnBhcmFtZXRlciIscmVnZXg6a30se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlssIF0rIixtZXJnZTohMH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IiQiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxjb21tZW50X3JlZ2V4X2FsbG93ZWQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Omx9LHt0b2tlbjoic3RyaW5nIixyZWdleDonW14iXFxcXF0rJyxtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyJ8JCcsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Omx9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiW14nXFxcXF0rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJ3wkIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XX0sdGhpcy5lbWJlZFJ1bGVzKGcsImRvYy0iLFtnLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ZC5pbmhlcml0cyhpLGgpLGIuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzPWl9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ZC5pbmhlcml0cyhmLGUpLGYuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmF9fSxmLmdldEVuZFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDphfX0sYi5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0ieyIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiJ7IitnKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0ifSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGU9PSJcbiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgbD1kLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpoLnJvdyxjb2x1bW46aC5jb2x1bW4rMX0pO2lmKCFsKXJldHVybiBudWxsO3ZhciBtPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoYSxpLnN1YnN0cmluZygwLGkubGVuZ3RoLTEpLGQuZ2V0VGFiU3RyaW5nKCkpLG49dGhpcy4kZ2V0SW5kZW50KGQuZG9jLmdldExpbmUobC5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK20rIlxuIituLHNlbGVjdGlvbjpbMSxtLmxlbmd0aCwxLG0ubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09InsiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuZW5kLmNvbHVtbixlLmVuZC5jb2x1bW4rMSk7aWYoaD09In0iKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IigiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoiKCIrZysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09IikiKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSIpIil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0iKCIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0iKSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSciJ3x8ZT09IiciKXt2YXIgZj1lLGc9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGg9ZC5kb2MuZ2V0VGV4dFJhbmdlKGcpO2lmKGghPT0iIilyZXR1cm57dGV4dDpmK2grZixzZWxlY3Rpb246ITF9O3ZhciBpPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxqPWQuZG9jLmdldExpbmUoaS5yb3cpLGs9ai5zdWJzdHJpbmcoaS5jb2x1bW4tMSxpLmNvbHVtbik7aWYoaz09IlxcIilyZXR1cm4gbnVsbDt2YXIgbD1kLmdldFRva2VucyhnLnN0YXJ0LnJvdyksbT0wLG4sbz0tMTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyl7bj1sW3BdLG4udHlwZT09InN0cmluZyI/bz0tMTpvPDAmJihvPW4udmFsdWUuaW5kZXhPZihmKSk7aWYobi52YWx1ZS5sZW5ndGgrbT5nLnN0YXJ0LmNvbHVtbilicmVhazttKz1sW3BdLnZhbHVlLmxlbmd0aH1pZighbnx8bzwwJiZuLnR5cGUhPT0iY29tbWVudCImJihuLnR5cGUhPT0ic3RyaW5nInx8Zy5zdGFydC5jb2x1bW4hPT1uLnZhbHVlLmxlbmd0aCttLTEmJm4udmFsdWUubGFzdEluZGV4T2YoZik9PT1uLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpmK2Ysc2VsZWN0aW9uOlsxLDFdfTtpZihuJiZuLnR5cGU9PT0ic3RyaW5nIil7dmFyIHE9ai5zdWJzdHJpbmcoaS5jb2x1bW4saS5jb2x1bW4rMSk7aWYocT09ZilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmKGY9PSciJ3x8Zj09IiciKSl7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSciJylyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KX07ZC5pbmhlcml0cyhmLGUpLGIuQ3N0eWxlQmVoYXZpb3VyPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9jc3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsaD1hKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxpPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGo9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGs9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpLCJpIiksdGhpcy4kb3V0ZGVudD1uZXcgaCx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgan07ZC5pbmhlcml0cyhrLGUpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nUnVsZXM9ImNTdHlsZSIsdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKS50b2tlbnM7aWYoZS5sZW5ndGgmJmVbZS5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO3ZhciBmPWIubWF0Y2goL14uKlx7XHMqJC8pO3JldHVybiBmJiYoZCs9YyksZH0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudChiLGMpfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KGIsYyl9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBpKFsiYWNlIl0sIndvcmtlci1jc3MuanMiLCJhY2UvbW9kZS9jc3Nfd29ya2VyIiwiV29ya2VyIik7cmV0dXJuIGIuYXR0YWNoVG9Eb2N1bWVudChhLmdldERvY3VtZW50KCkpLGIub24oImNzc2xpbnQiLGZ1bmN0aW9uKGIpe3ZhciBjPVtdO2IuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2MucHVzaCh7cm93OmEubGluZS0xLGNvbHVtbjphLmNvbC0xLHRleHQ6YS5tZXNzYWdlLHR5cGU6YS50eXBlLGxpbnQ6YX0pfSksYS5zZXRBbm5vdGF0aW9ucyhjKX0pLGJ9fS5jYWxsKGsucHJvdG90eXBlKSxiLk1vZGU9a30pLGRlZmluZSgiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYW5pbWF0aW9uLWZpbGwtbW9kZXxhbGlnbm1lbnQtYWRqdXN0fGFsaWdubWVudC1iYXNlbGluZXxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudHxhbmltYXRpb24tbmFtZXxhbmltYXRpb24tcGxheS1zdGF0ZXxhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbnxhcHBlYXJhbmNlfGF6aW11dGh8YmFja2ZhY2UtdmlzaWJpbGl0eXxiYWNrZ3JvdW5kLWF0dGFjaG1lbnR8YmFja2dyb3VuZC1icmVha3xiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWltYWdlfGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtcG9zaXRpb258YmFja2dyb3VuZC1yZXBlYXR8YmFja2dyb3VuZC1zaXplfGJhY2tncm91bmR8YmFzZWxpbmUtc2hpZnR8YmluZGluZ3xibGVlZHxib29rbWFyay1sYWJlbHxib29rbWFyay1sZXZlbHxib29rbWFyay1zdGF0ZXxib29rbWFyay10YXJnZXR8Ym9yZGVyLWJvdHRvbXxib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1jb2xsYXBzZXxib3JkZXItY29sb3J8Ym9yZGVyLWltYWdlfGJvcmRlci1pbWFnZS1vdXRzZXR8Ym9yZGVyLWltYWdlLXJlcGVhdHxib3JkZXItaW1hZ2Utc2xpY2V8Ym9yZGVyLWltYWdlLXNvdXJjZXxib3JkZXItaW1hZ2Utd2lkdGh8Ym9yZGVyLWxlZnR8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLXJhZGl1c3xib3JkZXItcmlnaHR8Ym9yZGVyLXJpZ2h0LWNvbG9yfGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtd2lkdGh8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3B8Ym9yZGVyLXRvcC1jb2xvcnxib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtcmlnaHQtcmFkaXVzfGJvcmRlci10b3Atc3R5bGV8Ym9yZGVyLXRvcC13aWR0aHxib3JkZXItd2lkdGh8Ym9yZGVyfGJvdHRvbXxib3gtYWxpZ258Ym94LWRlY29yYXRpb24tYnJlYWt8Ym94LWRpcmVjdGlvbnxib3gtZmxleC1ncm91cHxib3gtZmxleHxib3gtbGluZXN8Ym94LW9yZGluYWwtZ3JvdXB8Ym94LW9yaWVudHxib3gtcGFja3xib3gtc2hhZG93fGJveC1zaXppbmd8YnJlYWstYWZ0ZXJ8YnJlYWstYmVmb3JlfGJyZWFrLWluc2lkZXxjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvci1wcm9maWxlfGNvbG9yfGNvbHVtbi1jb3VudHxjb2x1bW4tZmlsbHxjb2x1bW4tZ2FwfGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLWNvbG9yfGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1zcGFufGNvbHVtbi13aWR0aHxjb2x1bW5zfGNvbnRlbnR8Y291bnRlci1pbmNyZW1lbnR8Y291bnRlci1yZXNldHxjcm9wfGN1ZS1hZnRlcnxjdWUtYmVmb3JlfGN1ZXxjdXJzb3J8ZGlyZWN0aW9ufGRpc3BsYXl8ZG9taW5hbnQtYmFzZWxpbmV8ZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdHxkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ258ZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3R8ZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbnxkcm9wLWluaXRpYWwtc2l6ZXxkcm9wLWluaXRpYWwtdmFsdWV8ZWxldmF0aW9ufGVtcHR5LWNlbGxzfGZpdHxmaXQtcG9zaXRpb258ZmxvYXQtb2Zmc2V0fGZsb2F0fGZvbnQtZmFtaWx5fGZvbnQtc2l6ZXxmb250LXNpemUtYWRqdXN0fGZvbnQtc3RyZXRjaHxmb250LXN0eWxlfGZvbnQtdmFyaWFudHxmb250LXdlaWdodHxmb250fGdyaWQtY29sdW1uc3xncmlkLXJvd3N8aGFuZ2luZy1wdW5jdHVhdGlvbnxoZWlnaHR8aHlwaGVuYXRlLWFmdGVyfGh5cGhlbmF0ZS1iZWZvcmV8aHlwaGVuYXRlLWNoYXJhY3RlcnxoeXBoZW5hdGUtbGluZXN8aHlwaGVuYXRlLXJlc291cmNlfGh5cGhlbnN8aWNvbnxpbWFnZS1vcmllbnRhdGlvbnxpbWFnZS1yZW5kZXJpbmd8aW1hZ2UtcmVzb2x1dGlvbnxpbmxpbmUtYm94LWFsaWdufGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGluZS1zdGFja2luZy1ydWJ5fGxpbmUtc3RhY2tpbmctc2hpZnR8bGluZS1zdGFja2luZy1zdHJhdGVneXxsaW5lLXN0YWNraW5nfGxpc3Qtc3R5bGUtaW1hZ2V8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZXxtYXJnaW4tYm90dG9tfG1hcmdpbi1sZWZ0fG1hcmdpbi1yaWdodHxtYXJnaW4tdG9wfG1hcmdpbnxtYXJrLWFmdGVyfG1hcmstYmVmb3JlfG1hcmt8bWFya3N8bWFycXVlZS1kaXJlY3Rpb258bWFycXVlZS1wbGF5LWNvdW50fG1hcnF1ZWUtc3BlZWR8bWFycXVlZS1zdHlsZXxtYXgtaGVpZ2h0fG1heC13aWR0aHxtaW4taGVpZ2h0fG1pbi13aWR0aHxtb3ZlLXRvfG5hdi1kb3dufG5hdi1pbmRleHxuYXYtbGVmdHxuYXYtcmlnaHR8bmF2LXVwfG9wYWNpdHl8b3JwaGFuc3xvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtc3R5bGV8b3V0bGluZS13aWR0aHxvdXRsaW5lfG92ZXJmbG93LXN0eWxlfG92ZXJmbG93LXh8b3ZlcmZsb3cteXxvdmVyZmxvd3xwYWRkaW5nLWJvdHRvbXxwYWRkaW5nLWxlZnR8cGFkZGluZy1yaWdodHxwYWRkaW5nLXRvcHxwYWRkaW5nfHBhZ2UtYnJlYWstYWZ0ZXJ8cGFnZS1icmVhay1iZWZvcmV8cGFnZS1icmVhay1pbnNpZGV8cGFnZS1wb2xpY3l8cGFnZXxwYXVzZS1hZnRlcnxwYXVzZS1iZWZvcmV8cGF1c2V8cGVyc3BlY3RpdmUtb3JpZ2lufHBlcnNwZWN0aXZlfHBob25lbWVzfHBpdGNoLXJhbmdlfHBpdGNofHBsYXktZHVyaW5nfHBvc2l0aW9ufHByZXNlbnRhdGlvbi1sZXZlbHxwdW5jdHVhdGlvbi10cmltfHF1b3Rlc3xyZW5kZXJpbmctaW50ZW50fHJlc2l6ZXxyZXN0LWFmdGVyfHJlc3QtYmVmb3JlfHJlc3R8cmljaG5lc3N8cmlnaHR8cm90YXRpb24tcG9pbnR8cm90YXRpb258cnVieS1hbGlnbnxydWJ5LW92ZXJoYW5nfHJ1YnktcG9zaXRpb258cnVieS1zcGFufHNpemV8c3BlYWstaGVhZGVyfHNwZWFrLW51bWVyYWx8c3BlYWstcHVuY3R1YXRpb258c3BlYWt8c3BlZWNoLXJhdGV8c3RyZXNzfHN0cmluZy1zZXR8dGFibGUtbGF5b3V0fHRhcmdldC1uYW1lfHRhcmdldC1uZXd8dGFyZ2V0LXBvc2l0aW9ufHRhcmdldHx0ZXh0LWFsaWduLWxhc3R8dGV4dC1hbGlnbnx0ZXh0LWRlY29yYXRpb258dGV4dC1lbXBoYXNpc3x0ZXh0LWhlaWdodHx0ZXh0LWluZGVudHx0ZXh0LWp1c3RpZnl8dGV4dC1vdXRsaW5lfHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRleHQtd3JhcHx0b3B8dHJhbnNmb3JtLW9yaWdpbnx0cmFuc2Zvcm0tc3R5bGV8dHJhbnNmb3JtfHRyYW5zaXRpb24tZGVsYXl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLXByb3BlcnR5fHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb258dW5pY29kZS1iaWRpfHZlcnRpY2FsLWFsaWdufHZpc2liaWxpdHl8dm9pY2UtYmFsYW5jZXx2b2ljZS1kdXJhdGlvbnx2b2ljZS1mYW1pbHl8dm9pY2UtcGl0Y2gtcmFuZ2V8dm9pY2UtcGl0Y2h8dm9pY2UtcmF0ZXx2b2ljZS1zdHJlc3N8dm9pY2Utdm9sdW1lfHZvbHVtZXx3aGl0ZS1zcGFjZS1jb2xsYXBzZXx3aGl0ZS1zcGFjZXx3aWRvd3N8d2lkdGh8d29yZC1icmVha3x3b3JkLXNwYWNpbmd8d29yZC13cmFwfHotaW5kZXgiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJyZ2J8cmdiYXx1cmx8YXR0cnxjb3VudGVyfGNvdW50ZXJzIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgiYWJzb2x1dGV8YWZ0ZXItZWRnZXxhZnRlcnxhbGwtc2Nyb2xsfGFsbHxhbHBoYWJldGljfGFsd2F5c3xhbnRpYWxpYXNlZHxhcm1lbmlhbnxhdXRvfGF2b2lkLWNvbHVtbnxhdm9pZC1wYWdlfGF2b2lkfGJhbGFuY2V8YmFzZWxpbmV8YmVmb3JlLWVkZ2V8YmVmb3JlfGJlbG93fGJpZGktb3ZlcnJpZGV8YmxvY2stbGluZS1oZWlnaHR8YmxvY2t8Ym9sZHxib2xkZXJ8Ym9yZGVyLWJveHxib3RofGJvdHRvbXxib3h8YnJlYWstYWxsfGJyZWFrLXdvcmR8Y2FwaXRhbGl6ZXxjYXBzLWhlaWdodHxjYXB0aW9ufGNlbnRlcnxjZW50cmFsfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjbG9uZXxjbG9zZS1xdW90ZXxjb2wtcmVzaXplfGNvbGxhcHNlfGNvbHVtbnxjb25zaWRlci1zaGlmdHN8Y29udGFpbnxjb250ZW50LWJveHxjb3Zlcnxjcm9zc2hhaXJ8Y3ViaWMtYmV6aWVyfGRhc2hlZHxkZWNpbWFsLWxlYWRpbmctemVyb3xkZWNpbWFsfGRlZmF1bHR8ZGlzYWJsZWR8ZGlzY3xkaXNyZWdhcmQtc2hpZnRzfGRpc3RyaWJ1dGUtYWxsLWxpbmVzfGRpc3RyaWJ1dGUtbGV0dGVyfGRpc3RyaWJ1dGUtc3BhY2V8ZGlzdHJpYnV0ZXxkb3R0ZWR8ZG91YmxlfGUtcmVzaXplfGVhc2UtaW58ZWFzZS1pbi1vdXR8ZWFzZS1vdXR8ZWFzZXxlbGxpcHNpc3xlbmR8ZXhjbHVkZS1ydWJ5fGZpbGx8Zml4ZWR8Zm9udC1zaXplfGZvbnR8Z2VvcmdpYW58Z2x5cGhzfGdyaWQtaGVpZ2h0fGdyb292ZXxoYW5kfGhhbmdpbmd8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWNvbnxpZGVvZ3JhcGgtYWxwaGF8aWRlb2dyYXBoLW51bWVyaWN8aWRlb2dyYXBoLXBhcmVudGhlc2lzfGlkZW9ncmFwaC1zcGFjZXxpZGVvZ3JhcGhpY3xpbmFjdGl2ZXxpbmNsdWRlLXJ1Ynl8aW5oZXJpdHxpbml0aWFsfGlubGluZS1ibG9ja3xpbmxpbmUtYm94fGlubGluZS1saW5lLWhlaWdodHxpbmxpbmUtdGFibGV8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpbnZlcnR8aXRhbGljfGp1c3RpZnl8a2F0YWthbmEtaXJvaGF8a2F0YWthbmF8a2VlcC1hbGx8bGFzdHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpbmVhcnxsaXN0LWl0ZW18bG9jYWx8bG9vc2V8bG93ZXItYWxwaGF8bG93ZXItZ3JlZWt8bG93ZXItbGF0aW58bG93ZXItcm9tYW58bG93ZXJjYXNlfGxyLXRifGx0cnxtYXRoZW1hdGljYWx8bWF4LWhlaWdodHxtYXgtc2l6ZXxtZWRpdW18bWVudXxtZXNzYWdlLWJveHxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWNoYW5nZXxuby1jbG9zZS1xdW90ZXxuby1kcm9wfG5vLW9wZW4tcXVvdGV8bm8tcmVwZWF0fG5vbmV8bm9ybWFsfG5vdC1hbGxvd2VkfG5vd3JhcHxudy1yZXNpemV8b2JsaXF1ZXxvcGVuLXF1b3RlfG91dHNldHxvdXRzaWRlfG92ZXJsaW5lfHBhZGRpbmctYm94fHBhZ2V8cG9pbnRlcnxwcmUtbGluZXxwcmUtd3JhcHxwcmV8cHJlc2VydmUtM2R8cHJvZ3Jlc3N8cmVsYXRpdmV8cmVwZWF0LXh8cmVwZWF0LXl8cmVwZWF0fHJlcGxhY2VkfHJlc2V0LXNpemV8cmlkZ2V8cmlnaHR8cm91bmR8cm93LXJlc2l6ZXxydGx8cy1yZXNpemV8c2Nyb2xsfHNlLXJlc2l6ZXxzZXBhcmF0ZXxzbGljZXxzbWFsbC1jYXBzfHNtYWxsLWNhcHRpb258c29saWR8c3BhY2V8c3F1YXJlfHN0YXJ0fHN0YXRpY3xzdGF0dXMtYmFyfHN0ZXAtZW5kfHN0ZXAtc3RhcnR8c3RlcHN8c3RyZXRjaHxzdHJpY3R8c3VifHN1cGVyfHN3LXJlc2l6ZXx0YWJsZS1jYXB0aW9ufHRhYmxlLWNlbGx8dGFibGUtY29sdW1uLWdyb3VwfHRhYmxlLWNvbHVtbnx0YWJsZS1mb290ZXItZ3JvdXB8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLXJvdy1ncm91cHx0YWJsZS1yb3d8dGFibGV8dGItcmx8dGV4dC1hZnRlci1lZGdlfHRleHQtYmVmb3JlLWVkZ2V8dGV4dC1ib3R0b218dGV4dC1zaXplfHRleHQtdG9wfHRleHR8dGhpY2t8dGhpbnx0b3B8dHJhbnNwYXJlbnR8dW5kZXJsaW5lfHVwcGVyLWFscGhhfHVwcGVyLWxhdGlufHVwcGVyLXJvbWFufHVwcGVyY2FzZXx1c2Utc2NyaXB0fHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8ei1pbmRleHx6ZXJvIi5zcGxpdCgifCIpKSxkPWUuYXJyYXlUb01hcCgiYXF1YXxibGFja3xibHVlfGZ1Y2hzaWF8Z3JheXxncmVlbnxsaW1lfG1hcm9vbnxuYXZ5fG9saXZlfG9yYW5nZXxwdXJwbGV8cmVkfHNpbHZlcnx0ZWFsfHdoaXRlfHllbGxvdyIuc3BsaXQoInwiKSksZj1lLmFycmF5VG9NYXAoImFyaWFsfGNlbnR1cnl8Y29taWN8Y291cmllcnxnYXJhbW9uZHxnZW9yZ2lhfGhlbHZldGljYXxpbXBhY3R8bHVjaWRhfHN5bWJvbHxzeXN0ZW18dGFob21hfHRpbWVzfHRyZWJ1Y2hldHx1dG9waWF8dmVyZGFuYXx3ZWJkaW5nc3xzYW5zLXNlcmlmfHNlcmlmfG1vbm9zcGFjZSIuc3BsaXQoInwiKSksZz0iXFwtPyg/Oig/OlswLTldKyl8KD86WzAtOV0qXFwuWzAtOV0rKSkiLGg9IihcXDorKVxcYihhZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8bW96LXNlbGVjdGlvbnxzZWxlY3Rpb24pXFxiIixpPSIoOilcXGIoYWN0aXZlfGNoZWNrZWR8ZGlzYWJsZWR8ZW1wdHl8ZW5hYmxlZHxmaXJzdC1jaGlsZHxmaXJzdC1vZi10eXBlfGZvY3VzfGhvdmVyfGluZGV0ZXJtaW5hdGV8aW52YWxpZHxsYXN0LWNoaWxkfGxhc3Qtb2YtdHlwZXxsaW5rfG5vdHxudGgtY2hpbGR8bnRoLWxhc3QtY2hpbGR8bnRoLWxhc3Qtb2YtdHlwZXxudGgtb2YtdHlwZXxvbmx5LWNoaWxkfG9ubHktb2YtdHlwZXxyZXF1aXJlZHxyb290fHRhcmdldHx2YWxpZHx2aXNpdGVkKVxcYiIsaj1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJydWxlc2V0X2NvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46WyJjb25zdGFudC5udW1lcmljIiwia2V5d29yZCJdLHJlZ2V4OiIoIitnKyIpKGNofGNtfGRlZ3xlbXxleHxmcnxnZHxncmFkfEh6fGlufGtIenxtbXxtc3xwY3xwdHxweHxyYWR8cmVtfHN8dHVybnx2aHx2bXx2d3wlKSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiXSxyZWdleDoiKFswLTldKykifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17Nn0ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17M30ifSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tZWxlbWVudC5jc3MiXSxyZWdleDpofSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tY2xhc3MuY3NzIl0scmVnZXg6aX0se3Rva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmZ1bmN0aW9uIjpjLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQiOmQuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudC5jb2xvciI6Zi5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmZvbnRzIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W2EtekEtWl9dW2EtekEtWjAtOV9cXC1dKiJ9XSxrPWUuY29weUFycmF5KGopO2sudW5zaGlmdCh7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IlxcfSIsbmV4dDoic3RhcnQifSk7dmFyIGw9ZS5jb3B5QXJyYXkoaik7bC51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJtZWRpYSJ9KTt2YXIgbT1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sbj1lLmNvcHlBcnJheShtKTtuLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9KTt2YXIgbz1lLmNvcHlBcnJheShtKTtvLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJtZWRpYSJ9KTt2YXIgcD1lLmNvcHlBcnJheShtKTtwLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJydWxlc2V0In0pLHRoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJcXHsiLG5leHQ6InJ1bGVzZXQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IkAuKj97IixuZXh0OiJtZWRpYSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLG1lZGlhOlt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6Im1lZGlhX2NvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoibWVkaWFfcnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLGNvbW1lbnQ6bixydWxlc2V0OmsscnVsZXNldF9jb21tZW50OnAsbWVkaWFfcnVsZXNldDpsLG1lZGlhX2NvbW1lbnQ6b319O2QuaW5oZXJpdHMoZyxmKSxiLkNzc0hpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfdXRpbCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vY3NzX2hpZ2hsaWdodF9ydWxlcyIpLkNzc0hpZ2hsaWdodFJ1bGVzLGY9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxnPWEoIi4veG1sX3V0aWwiKSxoPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsaT1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiPFxcIVxcW0NEQVRBXFxbIixuZXh0OiJjZGF0YSJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcPy4qP1xcPz4ifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhLS0iLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXCEuKj8+In0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjwoPz1zKnNjcmlwdFxcYikiLG5leHQ6InNjcmlwdCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzdHlsZVxcYikiLG5leHQ6InN0eWxlIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb25zdGFudC5jaGFyYWN0ZXIuZW50aXR5IixyZWdleDoiKD86JiNbMC05XSs7KXwoPzomI3hbMC05YS1mQS1GXSs7KXwoPzomW2EtekEtWjAtOV86XFwuLV0rOykifSx7dG9rZW46InRleHQiLHJlZ2V4OiJbXjxdKyJ9XSxjZGF0YTpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxdXFxdPiIsbmV4dDoic3RhcnQifSx7dG9rZW46InRleHQiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiLisifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/LS0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSxnLnRhZyh0aGlzLiRydWxlcywidGFnIiwic3RhcnQiKSxnLnRhZyh0aGlzLiRydWxlcywic3R5bGUiLCJjc3Mtc3RhcnQiKSxnLnRhZyh0aGlzLiRydWxlcywic2NyaXB0IiwianMtc3RhcnQiKSx0aGlzLmVtYmVkUnVsZXMoZiwianMtIixbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiooPz08XFwvc2NyaXB0PikiLG5leHQ6InRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c2NyaXB0KSIsbmV4dDoidGFnIn1dKSx0aGlzLmVtYmVkUnVsZXMoZSwiY3NzLSIsW3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c3R5bGUpIixuZXh0OiJ0YWcifV0pfTtkLmluaGVyaXRzKGksaCksYi5IdG1sSGlnaGxpZ2h0UnVsZXM9aX0pLGRlZmluZSgiYWNlL21vZGUveG1sX3V0aWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2xhbmciXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZyhhKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDonWyJdLionLG5leHQ6YSsiX3Fxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLioiLG5leHQ6YSsiX3FzdHJpbmcifV19ZnVuY3Rpb24gaChhLGIpe3JldHVyblt7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4qPyIrYSxuZXh0OmJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19dmFyIGQ9YSgiLi4vbGliL2xhbmciKSxlPWQuYXJyYXlUb01hcCgiYnV0dG9ufGZvcm18aW5wdXR8bGFiZWx8c2VsZWN0fHRleHRhcmVhIi5zcGxpdCgifCIpKSxmPWQuYXJyYXlUb01hcCgidGFibGV8dGJvZHl8dGR8dGZvb3R8dGh8dHIiLnNwbGl0KCJ8IikpO2IudGFnPWZ1bmN0aW9uKGEsYixjKXthW2JdPVt7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09ImEiPyJtZXRhLnRhZy5hbmNob3IiOmE9PT0iaW1nIj8ibWV0YS50YWcuaW1hZ2UiOmE9PT0ic2NyaXB0Ij8ibWV0YS50YWcuc2NyaXB0IjphPT09InN0eWxlIj8ibWV0YS50YWcuc3R5bGUiOmUuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT8ibWV0YS50YWcuZm9ybSI6Zi5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpPyJtZXRhLnRhZy50YWJsZSI6Im1ldGEudGFnIn0sbWVyZ2U6ITAscmVnZXg6IlstX2EtekEtWjAtOTpdKyIsbmV4dDpiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OmIrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJ9XSxhW2IrIl9xc3RyaW5nIl09aCgiJyIsYisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksYVtiKyJfcXFzdHJpbmciXT1oKCciJyxiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiKSxhW2IrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJdPVt7dG9rZW46Im1ldGEudGFnIixtZXJnZTohMCxyZWdleDoiLz8+IixuZXh0OmN9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6Ij0ifSx7dG9rZW46ImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZSIscmVnZXg6IlstX2EtekEtWjAtOTpdKyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XS5jb25jYXQoZyhiKSl9fSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWEoIi4vY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGc9ZnVuY3Rpb24oKXt0aGlzLmluaGVyaXQoZixbInN0cmluZ19kcXVvdGVzIl0pLHRoaXMuYWRkKCJicmFja2V0cyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0iPCIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiPyExOnt0ZXh0OiI8PiIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0iPiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09Ij4iKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxrPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzIpO2lmKGs9PSI8LyIpe3ZhciBsPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGgucm93KSkrZC5nZXRUYWJTdHJpbmcoKSxtPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGgucm93KSk7cmV0dXJue3RleHQ6IlxuIitsKyJcbiIrbSxzZWxlY3Rpb246WzEsbC5sZW5ndGgsMSxsLmxlbmd0aF19fX19KX07ZC5pbmhlcml0cyhnLGUpLGIuWG1sQmVoYXZpb3VyPWd9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvaHRtbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvZm9sZGluZy9taXhlZCIsImFjZS9tb2RlL2ZvbGRpbmcveG1sIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi9taXhlZCIpLkZvbGRNb2RlLGY9YSgiLi94bWwiKS5Gb2xkTW9kZSxnPWEoIi4vY3N0eWxlIikuRm9sZE1vZGUsaD1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7ZS5jYWxsKHRoaXMsbmV3IGYoe2FyZWE6MSxiYXNlOjEsYnI6MSxjb2w6MSxjb21tYW5kOjEsZW1iZWQ6MSxocjoxLGltZzoxLGlucHV0OjEsa2V5Z2VuOjEsbGluazoxLG1ldGE6MSxwYXJhbToxLHNvdXJjZToxLHRyYWNrOjEsd2JyOjEsbGk6MSxkdDoxLGRkOjEscDoxLHJ0OjEscnA6MSxvcHRncm91cDoxLG9wdGlvbjoxLGNvbGdyb3VwOjEsdGQ6MSx0aDoxfSkseyJqcy0iOm5ldyBnLCJjc3MtIjpuZXcgZ30pfTtkLmluaGVyaXRzKGgsZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZj1iLkZvbGRNb2RlPWZ1bmN0aW9uKGEsYil7dGhpcy5kZWZhdWx0TW9kZT1hLHRoaXMuc3ViTW9kZXM9Yn07ZC5pbmhlcml0cyhmLGUpLGZ1bmN0aW9uKCl7dGhpcy4kZ2V0TW9kZT1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gdGhpcy5zdWJNb2RlcylpZihhLmluZGV4T2YoYik9PT0wKXJldHVybiB0aGlzLnN1Yk1vZGVzW2JdO3JldHVybiBudWxsfSx0aGlzLiR0cnlNb2RlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJGdldE1vZGUoYSk7cmV0dXJuIGU/ZS5nZXRGb2xkV2lkZ2V0KGIsYyxkKToiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kdHJ5TW9kZShhLmdldFN0YXRlKGMtMSksYSxiLGMpfHx0aGlzLiR0cnlNb2RlKGEuZ2V0U3RhdGUoYyksYSxiLGMpfHx0aGlzLmRlZmF1bHRNb2RlLmdldEZvbGRXaWRnZXQoYSxiLGMpfSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0TW9kZShhLmdldFN0YXRlKGMtMSkpO2lmKCFkfHwhZC5nZXRGb2xkV2lkZ2V0KGEsYixjKSlkPXRoaXMuJGdldE1vZGUoYS5nZXRTdGF0ZShjKSk7aWYoIWR8fCFkLmdldEZvbGRXaWRnZXQoYSxiLGMpKWQ9dGhpcy5kZWZhdWx0TW9kZTtyZXR1cm4gZC5nZXRGb2xkV2lkZ2V0UmFuZ2UoYSxiLGMpfX0uY2FsbChmLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsImFjZS90b2tlbl9pdGVyYXRvciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9saWIvbGFuZyIpLGY9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxnPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsaD1hKCIuLi8uLi90b2tlbl9pdGVyYXRvciIpLlRva2VuSXRlcmF0b3IsaT1iLkZvbGRNb2RlPWZ1bmN0aW9uKGEpe2cuY2FsbCh0aGlzKSx0aGlzLnZvaWRFbGVtZW50cz1hfHx7fX07ZC5pbmhlcml0cyhpLGcpLGZ1bmN0aW9uKCl7dGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShhLGMpO3JldHVybiBkLmNsb3Npbmc/Yj09Im1hcmtiZWdpbmVuZCI/ImVuZCI6IiI6IWQudGFnTmFtZXx8dGhpcy52b2lkRWxlbWVudHNbZC50YWdOYW1lLnRvTG93ZXJDYXNlKCldPyIiOmQuc2VsZkNsb3Npbmc/IiI6ZC52YWx1ZS5pbmRleE9mKCIvIitkLnRhZ05hbWUpIT09LTE/IiI6InN0YXJ0In0sdGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldFRva2VucyhiKSxkPSIiO2Zvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7ZisrKXt2YXIgZz1jW2ZdO2cudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MD9kKz1nLnZhbHVlOmQrPWUuc3RyaW5nUmVwZWF0KCIgIixnLnZhbHVlLmxlbmd0aCl9cmV0dXJuIHRoaXMuX3BhcnNlVGFnKGQpfSx0aGlzLnRhZ1JlPS9eKFxzKikoPD8oXC8/KShbLV9hLXpBLVowLTk6IV0qKVxzKihcLz8pPj8pLyx0aGlzLl9wYXJzZVRhZz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLnRhZ1JlLmV4ZWMoYSksYz10aGlzLnRhZ1JlLmxhc3RJbmRleHx8MDtyZXR1cm4gdGhpcy50YWdSZS5sYXN0SW5kZXg9MCx7dmFsdWU6YSxtYXRjaDpiP2JbMl06IiIsY2xvc2luZzpiPyEhYlszXTohMSxzZWxmQ2xvc2luZzpiPyEhYls1XXx8YlsyXT09Ii8+IjohMSx0YWdOYW1lOmI/Yls0XToiIixjb2x1bW46YlsxXT9jK2JbMV0ubGVuZ3RoOmN9fSx0aGlzLl9yZWFkVGFnRm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYj1hLmdldEN1cnJlbnRUb2tlbigpO2lmKCFiKXJldHVybiBudWxsO3ZhciBjPSIiLGQ7ZG8gaWYoYi50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtpZighZCl2YXIgZD17cm93OmEuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmEuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9O2MrPWIudmFsdWU7aWYoYy5pbmRleE9mKCI+IikhPT0tMSl7dmFyIGU9dGhpcy5fcGFyc2VUYWcoYyk7cmV0dXJuIGUuc3RhcnQ9ZCxlLmVuZD17cm93OmEuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmEuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrYi52YWx1ZS5sZW5ndGh9LGEuc3RlcEZvcndhcmQoKSxlfX13aGlsZShiPWEuc3RlcEZvcndhcmQoKSk7cmV0dXJuIG51bGx9LHRoaXMuX3JlYWRUYWdCYWNrd2FyZD1mdW5jdGlvbihhKXt2YXIgYj1hLmdldEN1cnJlbnRUb2tlbigpO2lmKCFiKXJldHVybiBudWxsO3ZhciBjPSIiLGQ7ZG8gaWYoYi50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtkfHwoZD17cm93OmEuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmEuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrYi52YWx1ZS5sZW5ndGh9KSxjPWIudmFsdWUrYztpZihjLmluZGV4T2YoIjwiKSE9PS0xKXt2YXIgZT10aGlzLl9wYXJzZVRhZyhjKTtyZXR1cm4gZS5lbmQ9ZCxlLnN0YXJ0PXtyb3c6YS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46YS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX0sYS5zdGVwQmFja3dhcmQoKSxlfX13aGlsZShiPWEuc3RlcEJhY2t3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9wb3A9ZnVuY3Rpb24oYSxiKXt3aGlsZShhLmxlbmd0aCl7dmFyIGM9YVthLmxlbmd0aC0xXTtpZighYnx8Yy50YWdOYW1lPT1iLnRhZ05hbWUpcmV0dXJuIGEucG9wKCk7aWYodGhpcy52b2lkRWxlbWVudHNbYi50YWdOYW1lXSlyZXR1cm47aWYodGhpcy52b2lkRWxlbWVudHNbYy50YWdOYW1lXSl7YS5wb3AoKTtjb250aW51ZX1yZXR1cm4gbnVsbH19LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShhLGMpO2lmKCFkLm1hdGNoKXJldHVybiBudWxsO3ZhciBlPWQuY2xvc2luZ3x8ZC5zZWxmQ2xvc2luZyxnPVtdLGk7aWYoIWUpe3ZhciBqPW5ldyBoKGEsYyxkLmNvbHVtbiksaz17cm93OmMsY29sdW1uOmQuY29sdW1uK2QudGFnTmFtZS5sZW5ndGgrMn07d2hpbGUoaT10aGlzLl9yZWFkVGFnRm9yd2FyZChqKSl7aWYoaS5zZWxmQ2xvc2luZyl7aWYoIWcubGVuZ3RoKXJldHVybiBpLnN0YXJ0LmNvbHVtbis9aS50YWdOYW1lLmxlbmd0aCsyLGkuZW5kLmNvbHVtbi09MixmLmZyb21Qb2ludHMoaS5zdGFydCxpLmVuZCk7Y29udGludWV9aWYoaS5jbG9zaW5nKXt0aGlzLl9wb3AoZyxpKTtpZihnLmxlbmd0aD09MClyZXR1cm4gZi5mcm9tUG9pbnRzKGssaS5zdGFydCl9ZWxzZSBnLnB1c2goaSl9fWVsc2V7dmFyIGo9bmV3IGgoYSxjLGQuY29sdW1uK2QubWF0Y2gubGVuZ3RoKSxsPXtyb3c6Yyxjb2x1bW46ZC5jb2x1bW59O3doaWxlKGk9dGhpcy5fcmVhZFRhZ0JhY2t3YXJkKGopKXtpZihpLnNlbGZDbG9zaW5nKXtpZighZy5sZW5ndGgpcmV0dXJuIGkuc3RhcnQuY29sdW1uKz1pLnRhZ05hbWUubGVuZ3RoKzIsaS5lbmQuY29sdW1uLT0yLGYuZnJvbVBvaW50cyhpLnN0YXJ0LGkuZW5kKTtjb250aW51ZX1pZighaS5jbG9zaW5nKXt0aGlzLl9wb3AoZyxpKTtpZihnLmxlbmd0aD09MClyZXR1cm4gaS5zdGFydC5jb2x1bW4rPWkudGFnTmFtZS5sZW5ndGgrMixmLmZyb21Qb2ludHMoaS5zdGFydCxsKX1lbHNlIGcucHVzaChpKX19fX0uY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-java.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9qYXZhIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9qYXZhc2NyaXB0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vamF2YXNjcmlwdCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL2phdmFfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YUhpZ2hsaWdodFJ1bGVzLGg9ZnVuY3Rpb24oKXtlLmNhbGwodGhpcyksdGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSl9O2QuaW5oZXJpdHMoaCxlKSxmdW5jdGlvbigpe3RoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsfX0uY2FsbChoLnByb3RvdHlwZSksYi5Nb2RlPWh9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuLi9yYW5nZSIpLlJhbmdlLGo9YSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsaz1hKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsbD1hKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsbT1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy4kYmVoYXZpb3VyPW5ldyBrLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBsfTtkLmluaGVyaXRzKG0sZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMCxmPS9eKFxzKilcL1wvLztmb3IodmFyIGc9YztnPD1kO2crKylpZighZi50ZXN0KGIuZ2V0TGluZShnKSkpe2U9ITE7YnJlYWt9aWYoZSl7dmFyIGg9bmV3IGkoMCwwLDAsMCk7Zm9yKHZhciBnPWM7Zzw9ZDtnKyspe3ZhciBqPWIuZ2V0TGluZShnKSxrPWoubWF0Y2goZik7aC5zdGFydC5yb3c9ZyxoLmVuZC5yb3c9ZyxoLmVuZC5jb2x1bW49a1swXS5sZW5ndGgsYi5yZXBsYWNlKGgsa1sxXSl9fWVsc2UgYi5pbmRlbnRSb3dzKGMsZCwiLy8iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zLGc9ZS5zdGF0ZTtpZihmLmxlbmd0aCYmZltmLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIGQ7aWYoYT09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXt2YXIgaD1iLm1hdGNoKC9eLiooPzpcYmNhc2VcYi4qXDp8W1x7XChcW10pXHMqJC8pO2gmJihkKz1jKX1lbHNlIGlmKGE9PSJkb2Mtc3RhcnQiKXtpZihnPT0ic3RhcnQifHxhPT0icmVnZXhfYWxsb3dlZCIpcmV0dXJuIiI7dmFyIGg9Yi5tYXRjaCgvXlxzKihcLz8pXCovKTtoJiYoaFsxXSYmKGQrPSIgIiksZCs9IiogIil9cmV0dXJuIGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgaihbImFjZSJdLCJ3b3JrZXItamF2YXNjcmlwdC5qcyIsImFjZS9tb2RlL2phdmFzY3JpcHRfd29ya2VyIiwiSmF2YVNjcmlwdFdvcmtlciIpO3JldHVybiBiLmF0dGFjaFRvRG9jdW1lbnQoYS5nZXREb2N1bWVudCgpKSxiLm9uKCJqc2xpbnQiLGZ1bmN0aW9uKGIpe3ZhciBjPVtdO2Zvcih2YXIgZD0wO2Q8Yi5kYXRhLmxlbmd0aDtkKyspe3ZhciBlPWIuZGF0YVtkXTtlJiZjLnB1c2goe3JvdzplLmxpbmUtMSxjb2x1bW46ZS5jaGFyYWN0ZXItMSx0ZXh0OmUucmVhc29uLHR5cGU6Indhcm5pbmciLGxpbnQ6ZX0pfWEuc2V0QW5ub3RhdGlvbnMoYyl9KSxiLm9uKCJuYXJjaXNzdXMiLGZ1bmN0aW9uKGIpe2Euc2V0QW5ub3RhdGlvbnMoW2IuZGF0YV0pfSksYi5vbigidGVybWluYXRlIixmdW5jdGlvbigpe2EuY2xlYXJBbm5vdGF0aW9ucygpfSksYn19LmNhbGwobS5wcm90b3R5cGUpLGIuTW9kZT1tfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3VuaWNvZGUiLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi4vdW5pY29kZSIpLGc9YSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsaD1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGk9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoIkFycmF5fEJvb2xlYW58RGF0ZXxGdW5jdGlvbnxJdGVyYXRvcnxOdW1iZXJ8T2JqZWN0fFJlZ0V4cHxTdHJpbmd8UHJveHl8TmFtZXNwYWNlfFFOYW1lfFhNTHxYTUxMaXN0fEFycmF5QnVmZmVyfEZsb2F0MzJBcnJheXxGbG9hdDY0QXJyYXl8SW50MTZBcnJheXxJbnQzMkFycmF5fEludDhBcnJheXxVaW50MTZBcnJheXxVaW50MzJBcnJheXxVaW50OEFycmF5fFVpbnQ4Q2xhbXBlZEFycmF5fEVycm9yfEV2YWxFcnJvcnxJbnRlcm5hbEVycm9yfFJhbmdlRXJyb3J8UmVmZXJlbmNlRXJyb3J8U3RvcEl0ZXJhdGlvbnxTeW50YXhFcnJvcnxUeXBlRXJyb3J8VVJJRXJyb3J8ZGVjb2RlVVJJfGRlY29kZVVSSUNvbXBvbmVudHxlbmNvZGVVUkl8ZW5jb2RlVVJJQ29tcG9uZW50fGV2YWx8aXNGaW5pdGV8aXNOYU58cGFyc2VGbG9hdHxwYXJzZUludHxKU09OfE1hdGh8dGhpc3xhcmd1bWVudHN8cHJvdG90eXBlfHdpbmRvd3xkb2N1bWVudCIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoImJyZWFrfGNhc2V8Y2F0Y2h8Y29udGludWV8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8bGV0fHZhcnx3aGlsZXx3aXRofGNvbnN0fHlpZWxkfGltcG9ydHxnZXR8c2V0Ii5zcGxpdCgifCIpKSxjPSJjYXNlfGRvfGVsc2V8ZmluYWxseXxpbnxpbnN0YW5jZW9mfHJldHVybnx0aHJvd3x0cnl8dHlwZW9mfHlpZWxkIixkPWUuYXJyYXlUb01hcCgiX19wYXJlbnRfX3xfX2NvdW50X198ZXNjYXBlfHVuZXNjYXBlfHdpdGh8X19wcm90b19fIi5zcGxpdCgifCIpKSxoPWUuYXJyYXlUb01hcCgiY29uc3R8bGV0fHZhcnxmdW5jdGlvbiIuc3BsaXQoInwiKSksaT1lLmFycmF5VG9NYXAoIm51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIuc3BsaXQoInwiKSksaj1lLmFycmF5VG9NYXAoImNsYXNzfGVudW18ZXh0ZW5kc3xzdXBlcnxleHBvcnR8aW1wbGVtZW50c3xwcml2YXRlfHB1YmxpY3xpbnRlcmZhY2V8cGFja2FnZXxwcm90ZWN0ZWR8c3RhdGljIi5zcGxpdCgifCIpKSxrPSJbIitmLnBhY2thZ2VzLkwrIlxcJF9dWyIrZi5wYWNrYWdlcy5MK2YucGFja2FnZXMuTW4rZi5wYWNrYWdlcy5NYytmLnBhY2thZ2VzLk5kK2YucGFja2FnZXMuUGMrIlxcJF9dKlxcYiIsbD0iXFxcXCg/OnhbMC05YS1mQS1GXXsyfXx1WzAtOWEtZkEtRl17NH18WzAtMl1bMC03XXswLDJ9fDNbMC02XVswLTddP3wzN1swLTddP3xbNC03XVswLTddP3wuKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9cL1wvLiokL30sZy5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6L1wvXCovLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPz0uKSIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIig/PS4pJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6LzBbeFhdWzAtOWEtZkEtRl0rXGIvfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi9bKy1dP1xkKyg/Oig/OlwuXGQqKT8oPzpbZUVdWystXT9cZCspPyk/XGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIraysiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCJdLHJlZ2V4OiIoIitrKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIraysiKShcXHMqKSg9KShcXHMqKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKCIraysiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKGZ1bmN0aW9uKShcXHMrKSgiK2srIikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJ0ZXh0IiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4Oi8oPzp0cnVlfGZhbHNlKVxiL30se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiKD86IitjKyIpXFxiIixuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIl0scmVnZXg6LyhcLikocyg/OmgoPzppZnR8b3coPzpNb2QoPzplbGVzc0RpYWxvZ3xhbERpYWxvZyl8SGVscCkpfGNyb2xsKD86WHxCeSg/OlBhZ2VzfExpbmVzKT98WXxUbyk/fHQoPzpvcHp6enp8cmlrZSl8aSg/Om58emVUb0NvbnRlbnR8ZGViYXJ8Z25UZXh0KXxvcnR8dSg/OnB8Yig/OnN0cig/OmluZyk/KT8pfHBsaSg/OmNlfHQpfGUoPzpuZHx0KD86UmUoPzpzaXphYmxlfHF1ZXN0SGVhZGVyKXxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG8oPzp0S2V5c3x1cnMpfFllYXJ8Q3Vyc29yfFRpbWUoPzpvdXQpP3xJbnRlcnZhbHxaT3B0aW9uc3xEYXRlfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYXRlfEZ1bGxZZWFyKXxGdWxsWWVhcnxBY3RpdmUpfGFyY2gpfHFydHxsaWNlfGF2ZVByZWZlcmVuY2VzfG1hbGwpfGgoPzpvbWV8YW5kbGVFdmVudCl8bmF2aWdhdGV8Yyg/Omhhcig/OkNvZGVBdHxBdCl8byg/OnN8big/OmNhdHx0ZXh0dWFsfGZpcm0pfG1waWxlKXxlaWx8bGVhcig/OlRpbWVvdXR8SW50ZXJ2YWwpP3xhKD86cHR1cmVFdmVudHN8bGwpfHJlYXRlKD86U3R5bGVTaGVldHxQb3B1cHxFdmVudE9iamVjdCkpfHQoPzpvKD86R01UU3RyaW5nfFMoPzp0cmluZ3xvdXJjZSl8VSg/OlRDU3RyaW5nfHBwZXJDYXNlKXxMbyg/OmNhbGVTdHJpbmd8d2VyQ2FzZSkpfGVzdHxhKD86bnxpbnQoPzpFbmFibGVkKT8pKXxpKD86cyg/Ok5hTnxGaW5pdGUpfG5kZXhPZnx0YWxpY3MpfGQoPzppc2FibGVFeHRlcm5hbENhcHR1cmV8dW1wfGV0YWNoRXZlbnQpfHUoPzpuKD86c2hpZnR8dGFpbnR8ZXNjYXBlfHdhdGNoKXxwZGF0ZUNvbW1hbmRzKXxqKD86b2lufGF2YUVuYWJsZWQpfHAoPzpvKD86cHx3KXx1c2h8bHVnaW5zLnJlZnJlc2h8YSg/OmRkaW5nc3xyc2UoPzpJbnR8RmxvYXQpPyl8cig/OmludHxvbXB0fGVmZXJlbmNlKSl8ZSg/OnNjYXBlfG5hYmxlRXh0ZXJuYWxDYXB0dXJlfHZhbHxsZW1lbnRGcm9tUG9pbnR8eCg/OnB8ZWMoPzpTY3JpcHR8Q29tbWFuZCk/KSl8dmFsdWVPZnxVVEN8cXVlcnlDb21tYW5kKD86U3RhdGV8SW5kZXRlcm18RW5hYmxlZHxWYWx1ZSl8Zig/OmkoPzpuZHxsZSg/Ok1vZGlmaWVkRGF0ZXxTaXplfENyZWF0ZWREYXRlfFVwZGF0ZWREYXRlKXx4ZWQpfG8oPzpudCg/OnNpemV8Y29sb3IpfHJ3YXJkKXxsb29yfHJvbUNoYXJDb2RlKXx3YXRjaHxsKD86aW5rfG8oPzphZHxnKXxhc3RJbmRleE9mKXxhKD86c2lufG5jaG9yfGNvc3x0KD86dGFjaEV2ZW50fG9ifGFuKD86Mik/KXxwcGx5fGxlcnR8Yig/OnN8b3J0KSl8cig/Om91KD86bmR8dGVFdmVudHMpfGUoPzpzaXplKD86Qnl8VG8pfGNhbGN8dHVyblZhbHVlfHBsYWNlfHZlcnNlfGwoPzpvYWR8ZWFzZSg/OkNhcHR1cmV8RXZlbnRzKSkpfGFuZG9tKXxnKD86b3xldCg/OlJlc3BvbnNlSGVhZGVyfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2UoPzpjb25kc3xsZWN0aW9uKXxIb3Vyc3xZZWFyfFRpbWUoPzp6b25lT2Zmc2V0KT98RGEoPzp5fHRlKXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGEoPzp5fHRlKXxGdWxsWWVhcil8RnVsbFllYXJ8QSg/OnR0ZW50aW9ufGxsUmVzcG9uc2VIZWFkZXJzKSkpfG0oPzppbnxvdmUoPzpCKD86eXxlbG93KXxUbyg/OkFic29sdXRlKT98QWJvdmUpfGVyZ2VBdHRyaWJ1dGVzfGEoPzp0Y2h8cmdpbnN8eCkpfGIoPzp0b2F8aWd8byg/OmxkfHJkZXJXaWR0aHMpfGxpbmt8YWNrKSlcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5kb20iXSxyZWdleDovKFwuKShzKD86dWIoPzpzdHJpbmdEYXRhfG1pdCl8cGxpdFRleHR8ZSg/OnQoPzpOYW1lZEl0ZW18QXR0cmlidXRlKD86Tm9kZSk/KXxsZWN0KSl8aGFzKD86Q2hpbGROb2Rlc3xGZWF0dXJlKXxuYW1lZEl0ZW18Yyg/OmwoPzppY2t8byg/OnNlfG5lTm9kZSkpfHJlYXRlKD86Qyg/Om9tbWVudHxEQVRBU2VjdGlvbnxhcHRpb24pfFQoPzpIZWFkfGV4dE5vZGV8Rm9vdCl8RG9jdW1lbnRGcmFnbWVudHxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb258RSg/Om50aXR5UmVmZXJlbmNlfGxlbWVudCl8QXR0cmlidXRlKSl8dGFiSW5kZXh8aSg/Om5zZXJ0KD86Um93fEJlZm9yZXxDZWxsfERhdGEpfHRlbSl8b3BlbnxkZWxldGUoPzpSb3d8Qyg/OmVsbHxhcHRpb24pfFQoPzpIZWFkfEZvb3QpfERhdGEpfGZvY3VzfHdyaXRlKD86bG4pP3xhKD86ZGR8cHBlbmQoPzpDaGlsZHxEYXRhKSl8cmUoPzpzZXR8cGxhY2UoPzpDaGlsZHxEYXRhKXxtb3ZlKD86TmFtZWRJdGVtfENoaWxkfEF0dHJpYnV0ZSg/Ok5vZGUpPyk/KXxnZXQoPzpOYW1lZEl0ZW18RWxlbWVudCg/OnNCeSg/Ok5hbWV8VGFnTmFtZSl8QnlJZCl8QXR0cmlidXRlKD86Tm9kZSk/KXxibHVyKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmNvbnN0YW50Il0scmVnZXg6LyhcLikocyg/OnlzdGVtTGFuZ3VhZ2V8Y3IoPzppcHRzfG9sbGJhcnN8ZWVuKD86WHxZfFRvcHxMZWZ0KSl8dCg/OnlsZSg/OlNoZWV0cyk/fGF0dXMoPzpUZXh0fGJhcik/KXxpYmxpbmcoPzpCZWxvd3xBYm92ZSl8b3VyY2V8dWZmaXhlc3xlKD86Y3VyaXR5KD86UG9saWN5KT98bCg/OmVjdGlvbnxmKSkpfGgoPzppc3Rvcnl8b3N0KD86bmFtZSk/fGFzKD86aHxGb2N1cykpfHl8WCg/Ok1MRG9jdW1lbnR8U0xEb2N1bWVudCl8big/OmV4dHxhbWUoPzpzcGFjZSg/OnN8VVJJKXxQcm9wKSl8TSg/OklOX1ZBTFVFfEFYX1ZBTFVFKXxjKD86aGFyYWN0ZXJTZXR8byg/Om4oPzpzdHJ1Y3Rvcnx0cm9sbGVycyl8b2tpZUVuYWJsZWR8bG9yRGVwdGh8bXAoPzpvbmVudHN8bGV0ZSkpfHVycmVudHxwdUNsYXNzfGwoPzppKD86cCg/OmJvYXJkRGF0YSk/fGVudEluZm9ybWF0aW9uKXxvc2VkfGFzc2VzKXxhbGxlKD86ZXxyKXxyeXB0byl8dCg/Om8oPzpvbGJhcnxwKXxleHQoPzpUcmFuc2Zvcm18SW5kZW50fERlY29yYXRpb258QWxpZ24pfGFncyl8U1FSVCg/OjFfMnwyKXxpKD86big/Om5lcig/OkhlaWdodHxXaWR0aCl8cHV0KXxkc3xnbm9yZUNhc2UpfHpJbmRleHxvKD86c2NwdXxuKD86cmVhZHlzdGF0ZWNoYW5nZXxMaW5lKXx1dGVyKD86SGVpZ2h0fFdpZHRoKXxwKD86c1Byb2ZpbGV8ZW5lcil8ZmZzY3JlZW5CdWZmZXJpbmcpfE5FR0FUSVZFX0lORklOSVRZfGQoPzppKD86c3BsYXl8YWxvZyg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdHxBcmd1bWVudHMpfHJlY3Rvcmllcyl8ZSg/OnNjcmlwdGlvbnxmYXVsdCg/OlN0YXR1c3xDaCg/OmVja2VkfGFyc2V0KXxWaWV3KSkpfHUoPzpzZXIoPzpQcm9maWxlfExhbmd1YWdlfEFnZW50KXxuKD86aXF1ZUlEfGRlZmluZWQpfHBkYXRlSW50ZXJ2YWwpfF9jb250ZW50fHAoPzppeGVsRGVwdGh8b3J0fGVyc29uYWxiYXJ8a2NzMTF8bCg/OnVnaW5zfGF0Zm9ybSl8YSg/OnRobmFtZXxkZGluZyg/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCl8cmVudCg/OldpbmRvd3xMYXllcik/fGdlKD86WCg/Ok9mZnNldCk/fFkoPzpPZmZzZXQpPykpfHIoPzpvKD86dG8oPzpjb2x8dHlwZSl8ZHVjdCg/OlN1Yik/fG1wdGVyKXxlKD86dmlvdXN8Zml4KSkpfGUoPzpuKD86Y29kaW5nfGFibGVkUGx1Z2luKXx4KD86dGVybmFsfHBhbmRvKXxtYmVkcyl8dig/OmlzaWJpbGl0eXxlbmRvcig/OlN1Yik/fExpbmtjb2xvcil8VVJMVW5lbmNvZGVkfFAoPzpJfE9TSVRJVkVfSU5GSU5JVFkpfGYoPzppbGVuYW1lfG8oPzpudCg/OlNpemV8RmFtaWx5fFdlaWdodCl8cm1OYW1lKXxyYW1lKD86c3xFbGVtZW50KXxnQ29sb3IpfEV8d2hpdGVTcGFjZXxsKD86aSg/OnN0U3R5bGVUeXBlfG4oPzplSGVpZ2h0fGtDb2xvcikpfG8oPzpjYSg/OnRpb24oPzpiYXIpP3xsTmFtZSl8d3NyYyl8ZSg/Om5ndGh8ZnQoPzpDb250ZXh0KT8pfGEoPzpzdCg/Ok0oPzpvZGlmaWVkfGF0Y2gpfEluZGV4fFBhcmVuKXx5ZXIoPzpzfFgpfG5ndWFnZSkpfGEoPzpwcCg/Ok1pbm9yVmVyc2lvbnxOYW1lfENvKD86ZGVOYW1lfHJlKXxWZXJzaW9uKXx2YWlsKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0KXxsbHxyKD86aXR5fGd1bWVudHMpfExpbmtjb2xvcnxib3ZlKXxyKD86aWdodCg/OkNvbnRleHQpP3xlKD86c3BvbnNlKD86WE1MfFRleHQpfGFkeVN0YXRlKSl8Z2xvYmFsfHh8bSg/OmltZVR5cGVzfHVsdGlsaW5lfGVudWJhcnxhcmdpbig/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCkpfEwoPzpOKD86MTB8Mil8T0coPzoxMEV8MkUpKXxiKD86byg/OnR0b218cmRlcig/OldpZHRofFJpZ2h0V2lkdGh8Qm90dG9tV2lkdGh8U3R5bGV8Q29sb3J8VG9wV2lkdGh8TGVmdFdpZHRoKSl8dWZmZXJEZXB0aHxlbG93fGFja2dyb3VuZCg/OkNvbG9yfEltYWdlKSkpXGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZmlyZWJ1ZyJdLHJlZ2V4Oi8oY29uc29sZSkoXC4pKHdhcm58aW5mb3xsb2d8ZXJyb3J8dGltZXx0aW1lRW5kfGFzc2VydClcYi99LHt0b2tlbjpmdW5jdGlvbihjKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShjKT8idmFyaWFibGUubGFuZ3VhZ2UiOmQuaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuZGVwcmVjYXRlZCI6aC5oYXNPd25Qcm9wZXJ0eShjKT8ic3RvcmFnZS50eXBlIjpiLmhhc093blByb3BlcnR5KGMpPyJrZXl3b3JkIjppLmhhc093blByb3BlcnR5KGMpPyJjb25zdGFudC5sYW5ndWFnZSI6ai5oYXNPd25Qcm9wZXJ0eShjKT8iaW52YWxpZC5pbGxlZ2FsIjpjPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOiJpZGVudGlmaWVyIn0scmVnZXg6a30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovIXxcJHwlfCZ8XCp8XC1cLXxcLXxcK1wrfFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcfFx8fFw/XDp8XCo9fCU9fFwrPXxcLT18Jj18XF49fFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4Oi9cP3xcOnxcLHxcO3xcLi8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDovW1xbKHtdLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi9cLz0/LyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDovXiMhLiokL30se3Rva2VuOiJ0ZXh0IixyZWdleDovXHMrL31dLHJlZ2V4X2FsbG93ZWQ6W2cuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnRfcmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlxcLyIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXg6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6Ii9cXHcqIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlteXFxcXC9cXFtdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJcXFsiLG5leHQ6InJlZ2V4X2NoYXJhY3Rlcl9jbGFzcyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4X2NoYXJhY3Rlcl9jbGFzczpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6Il0iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlteXFxcXFxcXV0rIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sZnVuY3Rpb25fYXJndW1lbnRzOlt7dG9rZW46InZhcmlhYmxlLnBhcmFtZXRlciIscmVnZXg6a30se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlssIF0rIixtZXJnZTohMH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IiQiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxjb21tZW50X3JlZ2V4X2FsbG93ZWQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Omx9LHt0b2tlbjoic3RyaW5nIixyZWdleDonW14iXFxcXF0rJyxtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyJ8JCcsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Omx9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiW14nXFxcXF0rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJ3wkIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XX0sdGhpcy5lbWJlZFJ1bGVzKGcsImRvYy0iLFtnLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ZC5pbmhlcml0cyhpLGgpLGIuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzPWl9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ZC5pbmhlcml0cyhmLGUpLGYuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmF9fSxmLmdldEVuZFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDphfX0sYi5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0ieyIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiJ7IitnKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0ifSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGU9PSJcbiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgbD1kLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpoLnJvdyxjb2x1bW46aC5jb2x1bW4rMX0pO2lmKCFsKXJldHVybiBudWxsO3ZhciBtPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoYSxpLnN1YnN0cmluZygwLGkubGVuZ3RoLTEpLGQuZ2V0VGFiU3RyaW5nKCkpLG49dGhpcy4kZ2V0SW5kZW50KGQuZG9jLmdldExpbmUobC5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK20rIlxuIituLHNlbGVjdGlvbjpbMSxtLmxlbmd0aCwxLG0ubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09InsiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuZW5kLmNvbHVtbixlLmVuZC5jb2x1bW4rMSk7aWYoaD09In0iKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IigiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoiKCIrZysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09IikiKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSIpIil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0iKCIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0iKSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSciJ3x8ZT09IiciKXt2YXIgZj1lLGc9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGg9ZC5kb2MuZ2V0VGV4dFJhbmdlKGcpO2lmKGghPT0iIilyZXR1cm57dGV4dDpmK2grZixzZWxlY3Rpb246ITF9O3ZhciBpPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxqPWQuZG9jLmdldExpbmUoaS5yb3cpLGs9ai5zdWJzdHJpbmcoaS5jb2x1bW4tMSxpLmNvbHVtbik7aWYoaz09IlxcIilyZXR1cm4gbnVsbDt2YXIgbD1kLmdldFRva2VucyhnLnN0YXJ0LnJvdyksbT0wLG4sbz0tMTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyl7bj1sW3BdLG4udHlwZT09InN0cmluZyI/bz0tMTpvPDAmJihvPW4udmFsdWUuaW5kZXhPZihmKSk7aWYobi52YWx1ZS5sZW5ndGgrbT5nLnN0YXJ0LmNvbHVtbilicmVhazttKz1sW3BdLnZhbHVlLmxlbmd0aH1pZighbnx8bzwwJiZuLnR5cGUhPT0iY29tbWVudCImJihuLnR5cGUhPT0ic3RyaW5nInx8Zy5zdGFydC5jb2x1bW4hPT1uLnZhbHVlLmxlbmd0aCttLTEmJm4udmFsdWUubGFzdEluZGV4T2YoZik9PT1uLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpmK2Ysc2VsZWN0aW9uOlsxLDFdfTtpZihuJiZuLnR5cGU9PT0ic3RyaW5nIil7dmFyIHE9ai5zdWJzdHJpbmcoaS5jb2x1bW4saS5jb2x1bW4rMSk7aWYocT09ZilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmKGY9PSciJ3x8Zj09IiciKSl7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSciJylyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KX07ZC5pbmhlcml0cyhmLGUpLGIuQ3N0eWxlQmVoYXZpb3VyPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGc9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxoPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJhYnN0cmFjdHxjb250aW51ZXxmb3J8bmV3fHN3aXRjaHxhc3NlcnR8ZGVmYXVsdHxnb3RvfHBhY2thZ2V8c3luY2hyb25pemVkfGJvb2xlYW58ZG98aWZ8cHJpdmF0ZXx0aGlzfGJyZWFrfGRvdWJsZXxpbXBsZW1lbnRzfHByb3RlY3RlZHx0aHJvd3xieXRlfGVsc2V8aW1wb3J0fHB1YmxpY3x0aHJvd3N8Y2FzZXxlbnVtfGluc3RhbmNlb2Z8cmV0dXJufHRyYW5zaWVudHxjYXRjaHxleHRlbmRzfGludHxzaG9ydHx0cnl8Y2hhcnxmaW5hbHxpbnRlcmZhY2V8c3RhdGljfHZvaWR8Y2xhc3N8ZmluYWxseXxsb25nfHN0cmljdGZwfHZvbGF0aWxlfGNvbnN0fGZsb2F0fG5hdGl2ZXxzdXBlcnx3aGlsZSIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoIm51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoIkFic3RyYWN0TWV0aG9kRXJyb3J8QXNzZXJ0aW9uRXJyb3J8Q2xhc3NDaXJjdWxhcml0eUVycm9yfENsYXNzRm9ybWF0RXJyb3J8RGVwcmVjYXRlZHxFbnVtQ29uc3RhbnROb3RQcmVzZW50RXhjZXB0aW9ufEV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvcnxJbGxlZ2FsQWNjZXNzRXJyb3J8SWxsZWdhbFRocmVhZFN0YXRlRXhjZXB0aW9ufEluc3RhbnRpYXRpb25FcnJvcnxJbnRlcm5hbEVycm9yfE5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9ufE5vU3VjaEZpZWxkRXJyb3J8T3ZlcnJpZGV8UHJvY2Vzc3xQcm9jZXNzQnVpbGRlcnxTZWN1cml0eU1hbmFnZXJ8U3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxTdXBwcmVzc1dhcm5pbmdzfFR5cGVOb3RQcmVzZW50RXhjZXB0aW9ufFVua25vd25FcnJvcnxVbnNhdGlzZmllZExpbmtFcnJvcnxVbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yfFZlcmlmeUVycm9yfEluc3RhbnRpYXRpb25FeGNlcHRpb258SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb258Q2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb258Tm9TdWNoRmllbGRFeGNlcHRpb258SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9ufE51bWJlckZvcm1hdEV4Y2VwdGlvbnxTZWN1cml0eUV4Y2VwdGlvbnxWb2lkfEluaGVyaXRhYmxlVGhyZWFkTG9jYWx8SWxsZWdhbFN0YXRlRXhjZXB0aW9ufEludGVycnVwdGVkRXhjZXB0aW9ufE5vU3VjaE1ldGhvZEV4Y2VwdGlvbnxJbGxlZ2FsQWNjZXNzRXhjZXB0aW9ufFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9ufEVudW18U3RyaWN0TWF0aHxQYWNrYWdlfENvbXBpbGVyfFJlYWRhYmxlfFJ1bnRpbWV8U3RyaW5nQnVpbGRlcnxNYXRofEluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3J8Tm9TdWNoTWV0aG9kRXJyb3J8VGhyZWFkTG9jYWx8UnVudGltZVBlcm1pc3Npb258QXJpdGhtZXRpY0V4Y2VwdGlvbnxOdWxsUG9pbnRlckV4Y2VwdGlvbnxMb25nfEludGVnZXJ8U2hvcnR8Qnl0ZXxEb3VibGV8TnVtYmVyfEZsb2F0fENoYXJhY3RlcnxCb29sZWFufFN0YWNrVHJhY2VFbGVtZW50fEFwcGVuZGFibGV8U3RyaW5nQnVmZmVyfEl0ZXJhYmxlfFRocmVhZEdyb3VwfFJ1bm5hYmxlfFRocmVhZHxJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9ufFN0YWNrT3ZlcmZsb3dFcnJvcnxPdXRPZk1lbW9yeUVycm9yfFZpcnR1YWxNYWNoaW5lRXJyb3J8QXJyYXlTdG9yZUV4Y2VwdGlvbnxDbGFzc0Nhc3RFeGNlcHRpb258TGlua2FnZUVycm9yfE5vQ2xhc3NEZWZGb3VuZEVycm9yfENsYXNzTm90Rm91bmRFeGNlcHRpb258UnVudGltZUV4Y2VwdGlvbnxFeGNlcHRpb258VGhyZWFkRGVhdGh8RXJyb3J8VGhyb3dhYmxlfFN5c3RlbXxDbGFzc0xvYWRlcnxDbG9uZWFibGV8Q2xhc3N8Q2hhclNlcXVlbmNlfENvbXBhcmFibGV8U3RyaW5nfE9iamVjdCIuc3BsaXQoInwiKSksZD1lLmFycmF5VG9NYXAoIiIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxmLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjBbeFhdWzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4OiIoPzp0cnVlfGZhbHNlKVxcYiJ9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gZT09InRoaXMiPyJ2YXJpYWJsZS5sYW5ndWFnZSI6YS5oYXNPd25Qcm9wZXJ0eShlKT8ia2V5d29yZCI6Yy5oYXNPd25Qcm9wZXJ0eShlKT8ic3VwcG9ydC5mdW5jdGlvbiI6ZC5oYXNPd25Qcm9wZXJ0eShlKT8ic3VwcG9ydC5mdW5jdGlvbiI6Yi5oYXNPd25Qcm9wZXJ0eShlKT8iY29uc3RhbnQubGFuZ3VhZ2UiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8XFwkfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcXHxcXHx8XFw/XFw6fFxcKj18JT18XFwrPXxcXC09fCY9fFxcXj18XFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoibHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sdGhpcy5lbWJlZFJ1bGVzKGYsImRvYy0iLFtmLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ZC5pbmhlcml0cyhoLGcpLGIuSmF2YUhpZ2hsaWdodFJ1bGVzPWh9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-javascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGs9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGw9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLG09ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgayx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ZC5pbmhlcml0cyhtLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopXC9cLy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucyxnPWUuc3RhdGU7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCJ8fGE9PSJyZWdleF9hbGxvd2VkIil7dmFyIGg9Yi5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTtoJiYoZCs9Yyl9ZWxzZSBpZihhPT0iZG9jLXN0YXJ0Iil7aWYoZz09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciBoPWIubWF0Y2goL15ccyooXC8/KVwqLyk7aCYmKGhbMV0mJihkKz0iICIpLGQrPSIqICIpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooWyJhY2UiXSwid29ya2VyLWphdmFzY3JpcHQuanMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigianNsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPGIuZGF0YS5sZW5ndGg7ZCsrKXt2YXIgZT1iLmRhdGFbZF07ZSYmYy5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY2hhcmFjdGVyLTEsdGV4dDplLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50OmV9KX1hLnNldEFubm90YXRpb25zKGMpfSksYi5vbigibmFyY2lzc3VzIixmdW5jdGlvbihiKXthLnNldEFubm90YXRpb25zKFtiLmRhdGFdKX0pLGIub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXthLmNsZWFyQW5ub3RhdGlvbnMoKX0pLGJ9fS5jYWxsKG0ucHJvdG90eXBlKSxiLk1vZGU9bX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4uL3VuaWNvZGUiKSxnPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksYz0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIsZD1lLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGk9ZS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGo9ZS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksaz0iWyIrZi5wYWNrYWdlcy5MKyJcXCRfXVsiK2YucGFja2FnZXMuTCtmLnBhY2thZ2VzLk1uK2YucGFja2FnZXMuTWMrZi5wYWNrYWdlcy5OZCtmLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGw9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LGcuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitrKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrYysiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/InZhcmlhYmxlLmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmguaGFzT3duUHJvcGVydHkoYyk/InN0b3JhZ2UudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmouaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuaWxsZWdhbCI6Yz09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omt9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omt9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhnLCJkb2MtIixbZy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaSxoKSxiLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-json.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9qc29uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2pzb25faGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9qc29uX2hpZ2hsaWdodF9ydWxlcyIpLkpzb25IaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGo9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGs9YSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsbD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy4kYmVoYXZpb3VyPW5ldyBpLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBqfTtkLmluaGVyaXRzKGwsZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYik7aWYoYT09InN0YXJ0Iil7dmFyIGU9Yi5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7ZSYmKGQrPWMpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGsoWyJhY2UiXSwid29ya2VyLWpzb24uanMiLCJhY2UvbW9kZS9qc29uX3dvcmtlciIsIkpzb25Xb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigiZXJyb3IiLGZ1bmN0aW9uKGIpe2Euc2V0QW5ub3RhdGlvbnMoW2IuZGF0YV0pfSksYi5vbigib2siLGZ1bmN0aW9uKCl7YS5jbGVhckFubm90YXRpb25zKCl9KSxifX0uY2FsbChsLnByb3RvdHlwZSksYi5Nb2RlPWx9KSxkZWZpbmUoImFjZS9tb2RlL2pzb25faGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGY9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidmFyaWFibGUiLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdXFxzKig/PTopJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciJyxuZXh0OiJzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDoiKD86dHJ1ZXxmYWxzZSlcXGIifSx7dG9rZW46ImludmFsaWQuaWxsZWdhbCIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46ImludmFsaWQuaWxsZWdhbCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLHN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Oi9cXCg/OnhbMC05YS1mQS1GXXsyfXx1WzAtOWEtZkEtRl17NH0pL30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbXiJcXFxcXSsnLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyInLG5leHQ6InN0YXJ0IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIiLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dfX07ZC5pbmhlcml0cyhmLGUpLGIuSnNvbkhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-latex.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sYXRleCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9sYXRleF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vbGF0ZXhfaGlnaGxpZ2h0X3J1bGVzIikuTGF0ZXhIaWdobGlnaHRSdWxlcyxoPWEoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpfTtkLmluaGVyaXRzKGksZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMCxmPS9eKFxzKilcJS87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBpPW5ldyBoKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2kuc3RhcnQucm93PWcsaS5lbmQucm93PWcsaS5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShpLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIiUiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJGdldEluZGVudChiKX19LmNhbGwoaS5wcm90b3R5cGUpLGIuTW9kZT1pfSksZGVmaW5lKCJhY2UvbW9kZS9sYXRleF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJrZXl3b3JkIixyZWdleDoiXFxcXCg/OlteYS16QS1aXXxbYS16QS1aXSspIn0se3Rva2VuOiJscGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFwkKD86KD86XFxcXC4pfCg/OlteXFwkXFxcXF0pKSo/XFwkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiJS4qJCJ9XX19O2QuaW5oZXJpdHMoZixlKSxiLkxhdGV4SGlnaGxpZ2h0UnVsZXM9Zn0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-less.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sZXNzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2xlc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL2xlc3NfaGlnaGxpZ2h0X3J1bGVzIikuTGVzc0hpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsaj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCksImkiKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBpfTtkLmluaGVyaXRzKGosZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLnRva2VucztpZihlLmxlbmd0aCYmZVtlLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIGQ7dmFyIGY9Yi5tYXRjaCgvXi4qXHtccyokLyk7cmV0dXJuIGYmJihkKz1jKSxkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX19LmNhbGwoai5wcm90b3R5cGUpLGIuTW9kZT1qfSksZGVmaW5lKCJhY2UvbW9kZS9sZXNzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcChmdW5jdGlvbigpe3ZhciBhPSItd2Via2l0LXwtbW96LXwtby18LW1zLXwtc3ZnLXwtcGllLXwta2h0bWwtIi5zcGxpdCgifCIpLGI9ImFwcGVhcmFuY2V8YmFja2dyb3VuZC1jbGlwfGJhY2tncm91bmQtaW5saW5lLXBvbGljeXxiYWNrZ3JvdW5kLW9yaWdpbnxiYWNrZ3JvdW5kLXNpemV8YmluZGluZ3xib3JkZXItYm90dG9tLWNvbG9yc3xib3JkZXItbGVmdC1jb2xvcnN8Ym9yZGVyLXJpZ2h0LWNvbG9yc3xib3JkZXItdG9wLWNvbG9yc3xib3JkZXItZW5kfGJvcmRlci1lbmQtY29sb3J8Ym9yZGVyLWVuZC1zdHlsZXxib3JkZXItZW5kLXdpZHRofGJvcmRlci1pbWFnZXxib3JkZXItc3RhcnR8Ym9yZGVyLXN0YXJ0LWNvbG9yfGJvcmRlci1zdGFydC1zdHlsZXxib3JkZXItc3RhcnQtd2lkdGh8Ym94LWFsaWdufGJveC1kaXJlY3Rpb258Ym94LWZsZXh8Ym94LWZsZXhncm91cHxib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaXppbmd8Y29sdW1uLWNvdW50fGNvbHVtbi1nYXB8Y29sdW1uLXdpZHRofGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLWNvbG9yfGZsb2F0LWVkZ2V8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGV8Zm9yY2UtYnJva2VuLWltYWdlLWljb258aW1hZ2UtcmVnaW9ufG1hcmdpbi1lbmR8bWFyZ2luLXN0YXJ0fG9wYWNpdHl8b3V0bGluZXxvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtcmFkaXVzfG91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnR8b3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHR8b3V0bGluZS1yYWRpdXMtdG9wbGVmdHxvdXRsaW5lLXJhZGl1cy10b3ByaWdodHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtd2lkdGh8cGFkZGluZy1lbmR8cGFkZGluZy1zdGFydHxzdGFjay1zaXppbmd8dGFiLXNpemV8dGV4dC1ibGlua3x0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9uLWxpbmV8dGV4dC1kZWNvcmF0aW9uLXN0eWxlfHRyYW5zZm9ybXx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zaXRpb258dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dXNlci1mb2N1c3x1c2VyLWlucHV0fHVzZXItbW9kaWZ5fHVzZXItc2VsZWN0fHdpbmRvdy1zaGFkb3d8Ym9yZGVyLXJhZGl1cyIuc3BsaXQoInwiKSxjPSJhemltdXRofGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b218Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItbGVmdHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItcmlnaHR8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci10b3B8Ym9yZGVyLXdpZHRofGJvcmRlcnxib3R0b218Ym94LXNpemluZ3xjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvcnxjb250ZW50fGNvdW50ZXItaW5jcmVtZW50fGNvdW50ZXItcmVzZXR8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxlbGV2YXRpb258ZW1wdHktY2VsbHN8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8aGVpZ2h0fGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFya2VyLW9mZnNldHxtYXJnaW58bWFya3N8bWF4LWhlaWdodHxtYXgtd2lkdGh8bWluLWhlaWdodHxtaW4td2lkdGh8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3d8b3ZlcmZsb3cteHxvdmVyZmxvdy15fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwaXRjaC1yYW5nZXxwaXRjaHxwbGF5LWR1cmluZ3xwb3NpdGlvbnxxdW90ZXN8cmljaG5lc3N8cmlnaHR8c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVlY2gtcmF0ZXxzcGVha3xzdHJlc3N8dGFibGUtbGF5b3V0fHRleHQtYWxpZ258dGV4dC1kZWNvcmF0aW9ufHRleHQtaW5kZW50fHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRvcHx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1mYW1pbHl8dm9sdW1lfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLXNwYWNpbmd8ei1pbmRleCIuc3BsaXQoInwiKSxkPVtdO2Zvcih2YXIgZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKylBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLChhW2VdK2Iuam9pbigifCIrYVtlXSkpLnNwbGl0KCJ8IikpO3JldHVybiBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGIpLEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsYyksZH0oKSksYj1lLmFycmF5VG9NYXAoImhzbHxoc2xhfHJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnN8bGlnaHRlbnxkYXJrZW58c2F0dXJhdGV8ZGVzYXR1cmF0ZXxmYWRlaW58ZmFkZW91dHxmYWRlfHNwaW58bWl4fGh1ZXxzYXR1cmF0aW9ufGxpZ2h0bmVzc3xhbHBoYXxyb3VuZHxjZWlsfGZsb29yfHBlcmNlbnRhZ2V8Y29sb3J8aXNjb2xvcnxpc251bWJlcnxpc3N0cmluZ3xpc2tleXdvcmR8aXN1cmx8aXNwaXhlbHxpc3BlcmNlbnRhZ2V8aXNlbSIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoImFic29sdXRlfGFsbC1zY3JvbGx8YWx3YXlzfGFybWVuaWFufGF1dG98YmFzZWxpbmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJyZWFrLWFsbHxicmVhay13b3JkfGNhcGl0YWxpemV8Y2VudGVyfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjb2wtcmVzaXplfGNvbGxhcHNlfGNvbnRlbnQtYm94fGNyb3NzaGFpcnxkYXNoZWR8ZGVjaW1hbC1sZWFkaW5nLXplcm98ZGVjaW1hbHxkZWZhdWx0fGRpc2FibGVkfGRpc2N8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWxsaXBzaXN8Zml4ZWR8Z2VvcmdpYW58Z3Jvb3ZlfGhhbmR8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWRlb2dyYXBoLWFscGhhfGlkZW9ncmFwaC1udW1lcmljfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtc3BhY2V8aW5hY3RpdmV8aW5oZXJpdHxpbmxpbmUtYmxvY2t8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpc3QtaXRlbXxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1lZGl1bXxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWRyb3B8bm8tcmVwZWF0fG53LXJlc2l6ZXxub25lfG5vcm1hbHxub3QtYWxsb3dlZHxub3dyYXB8b2JsaXF1ZXxvdXRzZXR8b3V0c2lkZXxvdmVybGluZXxwb2ludGVyfHByb2dyZXNzfHJlbGF0aXZlfHJlcGVhdC14fHJlcGVhdC15fHJlcGVhdHxyaWdodHxyaWRnZXxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNtYWxsLWNhcHN8c29saWR8c3F1YXJlfHN0YXRpY3xzdHJpY3R8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGItcmx8dGV4dC1ib3R0b218dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8emVybyIuc3BsaXQoInwiKSksZD1lLmFycmF5VG9NYXAoImFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3ciLnNwbGl0KCJ8IikpLGY9ZS5hcnJheVRvTWFwKCJAbWl4aW58QGV4dGVuZHxAaW5jbHVkZXxAaW1wb3J0fEBtZWRpYXxAZGVidWd8QHdhcm58QGlmfEBmb3J8QGVhY2h8QHdoaWxlfEBlbHNlfEBmb250LWZhY2V8QC13ZWJraXQta2V5ZnJhbWVzfGlmfGFuZHwhZGVmYXVsdHxtb2R1bGV8ZGVmfGVuZHxkZWNsYXJlfHdoZW58bm90fGFuZCIuc3BsaXQoInwiKSksZz1lLmFycmF5VG9NYXAoImF8YWJicnxhY3JvbnltfGFkZHJlc3N8YXBwbGV0fGFyZWF8YXJ0aWNsZXxhc2lkZXxhdWRpb3xifGJhc2V8YmFzZWZvbnR8YmRvfGJpZ3xibG9ja3F1b3RlfGJvZHl8YnJ8YnV0dG9ufGNhbnZhc3xjYXB0aW9ufGNlbnRlcnxjaXRlfGNvZGV8Y29sfGNvbGdyb3VwfGNvbW1hbmR8ZGF0YWxpc3R8ZGR8ZGVsfGRldGFpbHN8ZGZufGRpcnxkaXZ8ZGx8ZHR8ZW18ZW1iZWR8ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9udHxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHxoMXxoMnxoM3xoNHxoNXxoNnxoZWFkfGhlYWRlcnxoZ3JvdXB8aHJ8aHRtbHxpfGlmcmFtZXxpbWd8aW5wdXR8aW5zfGtleWdlbnxrYmR8bGFiZWx8bGVnZW5kfGxpfGxpbmt8bWFwfG1hcmt8bWVudXxtZXRhfG1ldGVyfG5hdnxub2ZyYW1lc3xub3NjcmlwdHxvYmplY3R8b2x8b3B0Z3JvdXB8b3B0aW9ufG91dHB1dHxwfHBhcmFtfHByZXxwcm9ncmVzc3xxfHJwfHJ0fHJ1Ynl8c3xzYW1wfHNjcmlwdHxzZWN0aW9ufHNlbGVjdHxzbWFsbHxzb3VyY2V8c3BhbnxzdHJpa2V8c3Ryb25nfHN0eWxlfHN1YnxzdW1tYXJ5fHN1cHx0YWJsZXx0Ym9keXx0ZHx0ZXh0YXJlYXx0Zm9vdHx0aHx0aGVhZHx0aW1lfHRpdGxlfHRyfHR0fHV8dWx8dmFyfHZpZGVvfHdicnx4bXAiLnNwbGl0KCJ8IikpLGg9IlxcLT8oPzooPzpbMC05XSspfCg/OlswLTldKlxcLlswLTldKykpIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6aCsiKD86ZW18ZXh8cHh8Y218bW18aW58cHR8cGN8ZGVnfHJhZHxncmFkfG1zfHN8aHp8a2h6fCUpIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezZ9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezN9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpofSx7dG9rZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGYuaGFzT3duUHJvcGVydHkoYSk/ImtleXdvcmQiOiJ2YXJpYWJsZSJ9LHJlZ2V4OiJAW2EtejAtOV9cXC1AXSpcXGIifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjpmLmhhc093blByb3BlcnR5KGUpPyJrZXl3b3JkIjpjLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5sYW5ndWFnZSI6Yi5oYXNPd25Qcm9wZXJ0eShlKT8ic3VwcG9ydC5mdW5jdGlvbiI6ZC5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpnLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InZhcmlhYmxlLmxhbmd1YWdlIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W0BhLXpfXVtAYS16MC05X1xcLV0qIn0se3Rva2VuOiJ2YXJpYWJsZS5sYW5ndWFnZSIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI8fD58PD18Pj18PT18IT18LXwlfCN8XFwrfFxcJHxcXCt8XFwqIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfX07ZC5pbmhlcml0cyhnLGYpLGIuTGVzc0hpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-liquid.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9saXF1aWQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvbGlxdWlkX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vbGlxdWlkX2hpZ2hsaWdodF9ydWxlcyIpLkxpcXVpZEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuLi9yYW5nZSIpLlJhbmdlLGo9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBofTtkLmluaGVyaXRzKGosZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMCxmPVtdLGc9L14oXHMqKSMvO2Zvcih2YXIgaD1jO2g8PWQ7aCsrKWlmKCFnLnRlc3QoYi5nZXRMaW5lKGgpKSl7ZT0hMTticmVha31pZihlKXt2YXIgaj1uZXcgaSgwLDAsMCwwKTtmb3IodmFyIGg9YztoPD1kO2grKyl7dmFyIGs9Yi5nZXRMaW5lKGgpLGw9ay5tYXRjaChnKTtqLnN0YXJ0LnJvdz1oLGouZW5kLnJvdz1oLGouZW5kLmNvbHVtbj1sWzBdLmxlbmd0aCxiLnJlcGxhY2UoaixsWzFdKX19ZWxzZSBiLmluZGVudFJvd3MoYyxkLCIjIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucyxnPWUuc3RhdGU7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCIpe3ZhciBoPWIubWF0Y2goL14uKltce1woXFtdXHMqJC8pO2gmJihkKz1jKX1yZXR1cm4gZH0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudChiLGMpfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KGIsYyl9fS5jYWxsKGoucHJvdG90eXBlKSxiLk1vZGU9an0pLGRlZmluZSgiYWNlL21vZGUvbGlxdWlkX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL2Nzc19oaWdobGlnaHRfcnVsZXMiKS5Dc3NIaWdobGlnaHRSdWxlcyxmPWEoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsZz1hKCIuLi9saWIvbGFuZyIpLGg9YSgiLi94bWxfdXRpbCIpLGk9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxqPWZ1bmN0aW9uKCl7dmFyIGE9Zy5hcnJheVRvTWFwKCJkYXRlfGNhcGl0YWxpemV8ZG93bmNhc2V8dXBjYXNlfGZpcnN0fGxhc3R8am9pbnxzb3J0fG1hcHxzaXplfGVzY2FwZXxlc2NhcGVfb25jZXxzdHJpcF9odG1sfHN0cmlwX25ld2xpbmVzfG5ld2xpbmVfdG9fYnJ8cmVwbGFjZXxyZXBsYWNlX2ZpcnN0fHRydW5jYXRlfHRydW5jYXRld29yZHN8cHJlcGVuZHxhcHBlbmR8bWludXN8cGx1c3x0aW1lc3xkaXZpZGVkX2J5fHNwbGl0Ii5zcGxpdCgifCIpKSxiPWcuYXJyYXlUb01hcCgiY2FwdHVyZXxlbmRjYXB0dXJlfGNhc2V8ZW5kY2FzZXx3aGVufGNvbW1lbnR8ZW5kY29tbWVudHxjeWNsZXxmb3J8ZW5kZm9yfGlufHJldmVyc2VkfGlmfGVuZGlmfGVsc2V8ZWxzaWZ8aW5jbHVkZXxlbmRpbmNsdWRlfHVubGVzc3xlbmR1bmxlc3N8c3R5bGV8dGV4dHxpbWFnZXx3aWRnZXR8cGx1Z2lufG1hcmtlcnxlbmRtYXJrZXJ8dGFibGVyb3d8ZW5kdGFibGVyb3ciLnNwbGl0KCJ8IikpLGM9Zy5hcnJheVRvTWFwKFsiZm9ybG9vcCJdKSxkPWcuYXJyYXlUb01hcCgiYXNzaWduIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJ7JSIsbmV4dDoibGlxdWlkX3N0YXJ0In0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6Int7IixuZXh0OiJsaXF1aWRfc3RhcnQifSx7dG9rZW46Im1ldGEudGFnIixtZXJnZTohMCxyZWdleDoiPFxcIVxcW0NEQVRBXFxbIixuZXh0OiJjZGF0YSJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcPy4qP1xcPz4ifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhLS0iLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PVxccypzY3JpcHRcXGIpIixuZXh0OiJzY3JpcHQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PVxccypzdHlsZVxcYikiLG5leHQ6InN0eWxlIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxsaXF1aWRfc3RhcnQ6W3t0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJ9fSIsbmV4dDoic3RhcnQifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiJX0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhc093blByb3BlcnR5KGUpPyJzdXBwb3J0LmZ1bmN0aW9uIjpiLmhhc093blByb3BlcnR5KGUpPyJrZXl3b3JkIjpjLmhhc093blByb3BlcnR5KGUpPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ZC5oYXNPd25Qcm9wZXJ0eShlKT8ia2V5d29yZC5kZWZpbml0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIvfFxcKnxcXC18XFwrfD18IT18XFw/XFw6In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFtcKHtdL30se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dfSxoLnRhZyh0aGlzLiRydWxlcywidGFnIiwic3RhcnQiKSxoLnRhZyh0aGlzLiRydWxlcywic3R5bGUiLCJjc3Mtc3RhcnQiKSxoLnRhZyh0aGlzLiRydWxlcywic2NyaXB0IiwianMtc3RhcnQiKSx0aGlzLmVtYmVkUnVsZXMoZiwianMtIixbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiooPz08XFwvc2NyaXB0PikiLG5leHQ6InRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c2NyaXB0KSIsbmV4dDoidGFnIn1dKSx0aGlzLmVtYmVkUnVsZXMoZSwiY3NzLSIsW3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c3R5bGUpIixuZXh0OiJ0YWcifV0pfTtkLmluaGVyaXRzKGosaSksYi5MaXF1aWRIaWdobGlnaHRSdWxlcz1qfSksZGVmaW5lKCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxnPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJhbmltYXRpb24tZmlsbC1tb2RlfGFsaWdubWVudC1hZGp1c3R8YWxpZ25tZW50LWJhc2VsaW5lfGFuaW1hdGlvbi1kZWxheXxhbmltYXRpb24tZGlyZWN0aW9ufGFuaW1hdGlvbi1kdXJhdGlvbnxhbmltYXRpb24taXRlcmF0aW9uLWNvdW50fGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb258YW5pbWF0aW9ufGFwcGVhcmFuY2V8YXppbXV0aHxiYWNrZmFjZS12aXNpYmlsaXR5fGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWJyZWFrfGJhY2tncm91bmQtY2xpcHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1vcmlnaW58YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXNpemV8YmFja2dyb3VuZHxiYXNlbGluZS1zaGlmdHxiaW5kaW5nfGJsZWVkfGJvb2ttYXJrLWxhYmVsfGJvb2ttYXJrLWxldmVsfGJvb2ttYXJrLXN0YXRlfGJvb2ttYXJrLXRhcmdldHxib3JkZXItYm90dG9tfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c3xib3JkZXItYm90dG9tLXN0eWxlfGJvcmRlci1ib3R0b20td2lkdGh8Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItaW1hZ2V8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2UtcmVwZWF0fGJvcmRlci1pbWFnZS1zbGljZXxib3JkZXItaW1hZ2Utc291cmNlfGJvcmRlci1pbWFnZS13aWR0aHxib3JkZXItbGVmdHxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItcmFkaXVzfGJvcmRlci1yaWdodHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItc3BhY2luZ3xib3JkZXItc3R5bGV8Ym9yZGVyLXRvcHxib3JkZXItdG9wLWNvbG9yfGJvcmRlci10b3AtbGVmdC1yYWRpdXN8Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXN8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci13aWR0aHxib3JkZXJ8Ym90dG9tfGJveC1hbGlnbnxib3gtZGVjb3JhdGlvbi1icmVha3xib3gtZGlyZWN0aW9ufGJveC1mbGV4LWdyb3VwfGJveC1mbGV4fGJveC1saW5lc3xib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaGFkb3d8Ym94LXNpemluZ3xicmVhay1hZnRlcnxicmVhay1iZWZvcmV8YnJlYWstaW5zaWRlfGNhcHRpb24tc2lkZXxjbGVhcnxjbGlwfGNvbG9yLXByb2ZpbGV8Y29sb3J8Y29sdW1uLWNvdW50fGNvbHVtbi1maWxsfGNvbHVtbi1nYXB8Y29sdW1uLXJ1bGV8Y29sdW1uLXJ1bGUtY29sb3J8Y29sdW1uLXJ1bGUtc3R5bGV8Y29sdW1uLXJ1bGUtd2lkdGh8Y29sdW1uLXNwYW58Y29sdW1uLXdpZHRofGNvbHVtbnN8Y29udGVudHxjb3VudGVyLWluY3JlbWVudHxjb3VudGVyLXJlc2V0fGNyb3B8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxkb21pbmFudC1iYXNlbGluZXxkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0fGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbnxkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdHxkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWdufGRyb3AtaW5pdGlhbC1zaXplfGRyb3AtaW5pdGlhbC12YWx1ZXxlbGV2YXRpb258ZW1wdHktY2VsbHN8Zml0fGZpdC1wb3NpdGlvbnxmbG9hdC1vZmZzZXR8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplfGZvbnQtc2l6ZS1hZGp1c3R8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8Z3JpZC1jb2x1bW5zfGdyaWQtcm93c3xoYW5naW5nLXB1bmN0dWF0aW9ufGhlaWdodHxoeXBoZW5hdGUtYWZ0ZXJ8aHlwaGVuYXRlLWJlZm9yZXxoeXBoZW5hdGUtY2hhcmFjdGVyfGh5cGhlbmF0ZS1saW5lc3xoeXBoZW5hdGUtcmVzb3VyY2V8aHlwaGVuc3xpY29ufGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlbmRlcmluZ3xpbWFnZS1yZXNvbHV0aW9ufGlubGluZS1ib3gtYWxpZ258bGVmdHxsZXR0ZXItc3BhY2luZ3xsaW5lLWhlaWdodHxsaW5lLXN0YWNraW5nLXJ1Ynl8bGluZS1zdGFja2luZy1zaGlmdHxsaW5lLXN0YWNraW5nLXN0cmF0ZWd5fGxpbmUtc3RhY2tpbmd8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFyZ2lufG1hcmstYWZ0ZXJ8bWFyay1iZWZvcmV8bWFya3xtYXJrc3xtYXJxdWVlLWRpcmVjdGlvbnxtYXJxdWVlLXBsYXktY291bnR8bWFycXVlZS1zcGVlZHxtYXJxdWVlLXN0eWxlfG1heC1oZWlnaHR8bWF4LXdpZHRofG1pbi1oZWlnaHR8bWluLXdpZHRofG1vdmUtdG98bmF2LWRvd258bmF2LWluZGV4fG5hdi1sZWZ0fG5hdi1yaWdodHxuYXYtdXB8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1vZmZzZXR8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3ctc3R5bGV8b3ZlcmZsb3cteHxvdmVyZmxvdy15fG92ZXJmbG93fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLXBvbGljeXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwZXJzcGVjdGl2ZS1vcmlnaW58cGVyc3BlY3RpdmV8cGhvbmVtZXN8cGl0Y2gtcmFuZ2V8cGl0Y2h8cGxheS1kdXJpbmd8cG9zaXRpb258cHJlc2VudGF0aW9uLWxldmVsfHB1bmN0dWF0aW9uLXRyaW18cXVvdGVzfHJlbmRlcmluZy1pbnRlbnR8cmVzaXplfHJlc3QtYWZ0ZXJ8cmVzdC1iZWZvcmV8cmVzdHxyaWNobmVzc3xyaWdodHxyb3RhdGlvbi1wb2ludHxyb3RhdGlvbnxydWJ5LWFsaWdufHJ1Ynktb3Zlcmhhbmd8cnVieS1wb3NpdGlvbnxydWJ5LXNwYW58c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVha3xzcGVlY2gtcmF0ZXxzdHJlc3N8c3RyaW5nLXNldHx0YWJsZS1sYXlvdXR8dGFyZ2V0LW5hbWV8dGFyZ2V0LW5ld3x0YXJnZXQtcG9zaXRpb258dGFyZ2V0fHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRleHQtZGVjb3JhdGlvbnx0ZXh0LWVtcGhhc2lzfHRleHQtaGVpZ2h0fHRleHQtaW5kZW50fHRleHQtanVzdGlmeXx0ZXh0LW91dGxpbmV8dGV4dC1zaGFkb3d8dGV4dC10cmFuc2Zvcm18dGV4dC13cmFwfHRvcHx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zZm9ybS1zdHlsZXx0cmFuc2Zvcm18dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dHJhbnNpdGlvbnx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1iYWxhbmNlfHZvaWNlLWR1cmF0aW9ufHZvaWNlLWZhbWlseXx2b2ljZS1waXRjaC1yYW5nZXx2b2ljZS1waXRjaHx2b2ljZS1yYXRlfHZvaWNlLXN0cmVzc3x2b2ljZS12b2x1bWV8dm9sdW1lfHdoaXRlLXNwYWNlLWNvbGxhcHNlfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLWJyZWFrfHdvcmQtc3BhY2luZ3x3b3JkLXdyYXB8ei1pbmRleCIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoInJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnMiLnNwbGl0KCJ8IikpLGM9ZS5hcnJheVRvTWFwKCJhYnNvbHV0ZXxhZnRlci1lZGdlfGFmdGVyfGFsbC1zY3JvbGx8YWxsfGFscGhhYmV0aWN8YWx3YXlzfGFudGlhbGlhc2VkfGFybWVuaWFufGF1dG98YXZvaWQtY29sdW1ufGF2b2lkLXBhZ2V8YXZvaWR8YmFsYW5jZXxiYXNlbGluZXxiZWZvcmUtZWRnZXxiZWZvcmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9jay1saW5lLWhlaWdodHxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJveHxicmVhay1hbGx8YnJlYWstd29yZHxjYXBpdGFsaXplfGNhcHMtaGVpZ2h0fGNhcHRpb258Y2VudGVyfGNlbnRyYWx8Y2hhcnxjaXJjbGV8Y2prLWlkZW9ncmFwaGljfGNsb25lfGNsb3NlLXF1b3RlfGNvbC1yZXNpemV8Y29sbGFwc2V8Y29sdW1ufGNvbnNpZGVyLXNoaWZ0c3xjb250YWlufGNvbnRlbnQtYm94fGNvdmVyfGNyb3NzaGFpcnxjdWJpYy1iZXppZXJ8ZGFzaGVkfGRlY2ltYWwtbGVhZGluZy16ZXJvfGRlY2ltYWx8ZGVmYXVsdHxkaXNhYmxlZHxkaXNjfGRpc3JlZ2FyZC1zaGlmdHN8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWFzZS1pbnxlYXNlLWluLW91dHxlYXNlLW91dHxlYXNlfGVsbGlwc2lzfGVuZHxleGNsdWRlLXJ1Ynl8ZmlsbHxmaXhlZHxmb250LXNpemV8Zm9udHxnZW9yZ2lhbnxnbHlwaHN8Z3JpZC1oZWlnaHR8Z3Jvb3ZlfGhhbmR8aGFuZ2luZ3xoZWJyZXd8aGVscHxoaWRkZW58aGlyYWdhbmEtaXJvaGF8aGlyYWdhbmF8aG9yaXpvbnRhbHxpY29ufGlkZW9ncmFwaC1hbHBoYXxpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaGljfGluYWN0aXZlfGluY2x1ZGUtcnVieXxpbmhlcml0fGluaXRpYWx8aW5saW5lLWJsb2NrfGlubGluZS1ib3h8aW5saW5lLWxpbmUtaGVpZ2h0fGlubGluZS10YWJsZXxpbmxpbmV8aW5zZXR8aW5zaWRlfGludGVyLWlkZW9ncmFwaHxpbnRlci13b3JkfGludmVydHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsYXN0fGxlZnR8bGlnaHRlcnxsaW5lLWVkZ2V8bGluZS10aHJvdWdofGxpbmV8bGluZWFyfGxpc3QtaXRlbXxsb2NhbHxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1hdGhlbWF0aWNhbHxtYXgtaGVpZ2h0fG1heC1zaXplfG1lZGl1bXxtZW51fG1lc3NhZ2UtYm94fG1pZGRsZXxtb3ZlfG4tcmVzaXplfG5lLXJlc2l6ZXxuZXdzcGFwZXJ8bm8tY2hhbmdlfG5vLWNsb3NlLXF1b3RlfG5vLWRyb3B8bm8tb3Blbi1xdW90ZXxuby1yZXBlYXR8bm9uZXxub3JtYWx8bm90LWFsbG93ZWR8bm93cmFwfG53LXJlc2l6ZXxvYmxpcXVlfG9wZW4tcXVvdGV8b3V0c2V0fG91dHNpZGV8b3ZlcmxpbmV8cGFkZGluZy1ib3h8cGFnZXxwb2ludGVyfHByZS1saW5lfHByZS13cmFwfHByZXxwcmVzZXJ2ZS0zZHxwcm9ncmVzc3xyZWxhdGl2ZXxyZXBlYXQteHxyZXBlYXQteXxyZXBlYXR8cmVwbGFjZWR8cmVzZXQtc2l6ZXxyaWRnZXxyaWdodHxyb3VuZHxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNsaWNlfHNtYWxsLWNhcHN8c21hbGwtY2FwdGlvbnxzb2xpZHxzcGFjZXxzcXVhcmV8c3RhcnR8c3RhdGljfHN0YXR1cy1iYXJ8c3RlcC1lbmR8c3RlcC1zdGFydHxzdGVwc3xzdHJldGNofHN0cmljdHxzdWJ8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWNhcHRpb258dGFibGUtY2VsbHx0YWJsZS1jb2x1bW4tZ3JvdXB8dGFibGUtY29sdW1ufHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGFibGUtcm93LWdyb3VwfHRhYmxlLXJvd3x0YWJsZXx0Yi1ybHx0ZXh0LWFmdGVyLWVkZ2V8dGV4dC1iZWZvcmUtZWRnZXx0ZXh0LWJvdHRvbXx0ZXh0LXNpemV8dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHVzZS1zY3JpcHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dmVydGljYWwtdGV4dHx2aXNpYmxlfHctcmVzaXplfHdhaXR8d2hpdGVzcGFjZXx6LWluZGV4fHplcm8iLnNwbGl0KCJ8IikpLGQ9ZS5hcnJheVRvTWFwKCJhcXVhfGJsYWNrfGJsdWV8ZnVjaHNpYXxncmF5fGdyZWVufGxpbWV8bWFyb29ufG5hdnl8b2xpdmV8b3JhbmdlfHB1cnBsZXxyZWR8c2lsdmVyfHRlYWx8d2hpdGV8eWVsbG93Ii5zcGxpdCgifCIpKSxmPWUuYXJyYXlUb01hcCgiYXJpYWx8Y2VudHVyeXxjb21pY3xjb3VyaWVyfGdhcmFtb25kfGdlb3JnaWF8aGVsdmV0aWNhfGltcGFjdHxsdWNpZGF8c3ltYm9sfHN5c3RlbXx0YWhvbWF8dGltZXN8dHJlYnVjaGV0fHV0b3BpYXx2ZXJkYW5hfHdlYmRpbmdzfHNhbnMtc2VyaWZ8c2VyaWZ8bW9ub3NwYWNlIi5zcGxpdCgifCIpKSxnPSJcXC0/KD86KD86WzAtOV0rKXwoPzpbMC05XSpcXC5bMC05XSspKSIsaD0iKFxcOispXFxiKGFmdGVyfGJlZm9yZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtbGluZXxtb3otc2VsZWN0aW9ufHNlbGVjdGlvbilcXGIiLGk9Iig6KVxcYihhY3RpdmV8Y2hlY2tlZHxkaXNhYmxlZHxlbXB0eXxlbmFibGVkfGZpcnN0LWNoaWxkfGZpcnN0LW9mLXR5cGV8Zm9jdXN8aG92ZXJ8aW5kZXRlcm1pbmF0ZXxpbnZhbGlkfGxhc3QtY2hpbGR8bGFzdC1vZi10eXBlfGxpbmt8bm90fG50aC1jaGlsZHxudGgtbGFzdC1jaGlsZHxudGgtbGFzdC1vZi10eXBlfG50aC1vZi10eXBlfG9ubHktY2hpbGR8b25seS1vZi10eXBlfHJlcXVpcmVkfHJvb3R8dGFyZ2V0fHZhbGlkfHZpc2l0ZWQpXFxiIixqPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6InJ1bGVzZXRfY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiLCJrZXl3b3JkIl0scmVnZXg6IigiK2crIikoY2h8Y218ZGVnfGVtfGV4fGZyfGdkfGdyYWR8SHp8aW58a0h6fG1tfG1zfHBjfHB0fHB4fHJhZHxyZW18c3x0dXJufHZofHZtfHZ3fCUpIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyJdLHJlZ2V4OiIoWzAtOV0rKSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXs2fSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXszfSJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1lbGVtZW50LmNzcyJdLHJlZ2V4Omh9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1jbGFzcy5jc3MiXSxyZWdleDppfSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjpiLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuZnVuY3Rpb24iOmMuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudCI6ZC5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpmLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuZm9udHMiOiJ0ZXh0In0scmVnZXg6IlxcLT9bYS16QS1aX11bYS16QS1aMC05X1xcLV0qIn1dLGs9ZS5jb3B5QXJyYXkoaik7ay51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9KTt2YXIgbD1lLmNvcHlBcnJheShqKTtsLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6Im1lZGlhIn0pO3ZhciBtPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxuPWUuY29weUFycmF5KG0pO24udW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0pO3ZhciBvPWUuY29weUFycmF5KG0pO28udW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6Im1lZGlhIn0pO3ZhciBwPWUuY29weUFycmF5KG0pO3AudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InJ1bGVzZXQifSksdGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoicnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiQC4qP3siLG5leHQ6Im1lZGlhIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sbWVkaWE6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoibWVkaWFfY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJtZWRpYV9ydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sY29tbWVudDpuLHJ1bGVzZXQ6ayxydWxlc2V0X2NvbW1lbnQ6cCxtZWRpYV9ydWxlc2V0OmwsbWVkaWFfY29tbWVudDpvfX07ZC5pbmhlcml0cyhnLGYpLGIuQ3NzSGlnaGxpZ2h0UnVsZXM9Z30pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4uL3VuaWNvZGUiKSxnPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksYz0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIsZD1lLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGk9ZS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGo9ZS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksaz0iWyIrZi5wYWNrYWdlcy5MKyJcXCRfXVsiK2YucGFja2FnZXMuTCtmLnBhY2thZ2VzLk1uK2YucGFja2FnZXMuTWMrZi5wYWNrYWdlcy5OZCtmLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGw9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LGcuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitrKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrYysiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/InZhcmlhYmxlLmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmguaGFzT3duUHJvcGVydHkoYyk/InN0b3JhZ2UudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmouaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuaWxsZWdhbCI6Yz09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omt9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omt9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhnLCJkb2MtIixbZy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaSxoKSxiLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmErIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmErIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2EsbmV4dDpifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXZhciBkPWEoIi4uL2xpYi9sYW5nIiksZT1kLmFycmF5VG9NYXAoImJ1dHRvbnxmb3JtfGlucHV0fGxhYmVsfHNlbGVjdHx0ZXh0YXJlYSIuc3BsaXQoInwiKSksZj1kLmFycmF5VG9NYXAoInRhYmxlfHRib2R5fHRkfHRmb290fHRofHRyIi5zcGxpdCgifCIpKTtiLnRhZz1mdW5jdGlvbihhLGIsYyl7YVtiXT1be3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjpmdW5jdGlvbihhKXtyZXR1cm4gYT09PSJhIj8ibWV0YS50YWcuYW5jaG9yIjphPT09ImltZyI/Im1ldGEudGFnLmltYWdlIjphPT09InNjcmlwdCI/Im1ldGEudGFnLnNjcmlwdCI6YT09PSJzdHlsZSI/Im1ldGEudGFnLnN0eWxlIjplLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/Im1ldGEudGFnLmZvcm0iOmYuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT8ibWV0YS50YWcudGFibGUiOiJtZXRhLnRhZyJ9LG1lcmdlOiEwLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsiLG5leHQ6YisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDpiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifV0sYVtiKyJfcXN0cmluZyJdPWgoIiciLGIrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGFbYisiX3Fxc3RyaW5nIl09aCgnIicsYisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksYVtiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiXT1be3Rva2VuOiJtZXRhLnRhZyIsbWVyZ2U6ITAscmVnZXg6Ii8/PiIsbmV4dDpjfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI9In0se3Rva2VuOiJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUiLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0uY29uY2F0KGcoYikpfX0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-lua.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sdWEiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9sdWFfaGlnaGxpZ2h0X3J1bGVzIikuTHVhSGlnaGxpZ2h0UnVsZXMsaD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpfTtkLmluaGVyaXRzKGgsZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnMsZz1bImZ1bmN0aW9uIiwidGhlbiIsImRvIiwicmVwZWF0Il07aWYoYT09InN0YXJ0Iil7dmFyIGg9Yi5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7aWYoaClkKz1jO2Vsc2UgZm9yKHZhciBpIGluIGYpe3ZhciBqPWZbaV07aWYoai50eXBlIT0ia2V5d29yZCIpY29udGludWU7dmFyIGs9Zy5pbmRleE9mKGoudmFsdWUpO2lmKGshPS0xKXtkKz1jO2JyZWFrfX19cmV0dXJuIGR9fS5jYWxsKGgucHJvdG90eXBlKSxiLk1vZGU9aH0pLGRlZmluZSgiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYnJlYWt8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGZvcnxmdW5jdGlvbnxpZnxpbnxsb2NhbHxyZXBlYXR8cmV0dXJufHRoZW58dW50aWx8d2hpbGV8b3J8YW5kfG5vdCIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoInRydWV8ZmFsc2V8bmlsfF9HfF9WRVJTSU9OIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgic3RyaW5nfHhwY2FsbHxwYWNrYWdlfHRvc3RyaW5nfHByaW50fG9zfHVucGFja3xyZXF1aXJlfGdldGZlbnZ8c2V0bWV0YXRhYmxlfG5leHR8YXNzZXJ0fHRvbnVtYmVyfGlvfHJhd2VxdWFsfGNvbGxlY3RnYXJiYWdlfGdldG1ldGF0YWJsZXxtb2R1bGV8cmF3c2V0fG1hdGh8ZGVidWd8cGNhbGx8dGFibGV8bmV3cHJveHl8dHlwZXxjb3JvdXRpbmV8X0d8c2VsZWN0fGdjaW5mb3xwYWlyc3xyYXdnZXR8bG9hZHN0cmluZ3xpcGFpcnN8X1ZFUlNJT058ZG9maWxlfHNldGZlbnZ8bG9hZHxlcnJvcnxsb2FkZmlsZXxzdWJ8dXBwZXJ8bGVufGdmaW5kfHJlcHxmaW5kfG1hdGNofGNoYXJ8ZHVtcHxnbWF0Y2h8cmV2ZXJzZXxieXRlfGZvcm1hdHxnc3VifGxvd2VyfHByZWxvYWR8bG9hZGxpYnxsb2FkZWR8bG9hZGVyc3xjcGF0aHxjb25maWd8cGF0aHxzZWVhbGx8ZXhpdHxzZXRsb2NhbGV8ZGF0ZXxnZXRlbnZ8ZGlmZnRpbWV8cmVtb3ZlfHRpbWV8Y2xvY2t8dG1wbmFtZXxyZW5hbWV8ZXhlY3V0ZXxsaW5lc3x3cml0ZXxjbG9zZXxmbHVzaHxvcGVufG91dHB1dHx0eXBlfHJlYWR8c3RkZXJyfHN0ZGlufGlucHV0fHN0ZG91dHxwb3Blbnx0bXBmaWxlfGxvZ3xtYXh8YWNvc3xodWdlfGxkZXhwfHBpfGNvc3x0YW5ofHBvd3xkZWd8dGFufGNvc2h8c2luaHxyYW5kb218cmFuZG9tc2VlZHxmcmV4cHxjZWlsfGZsb29yfHJhZHxhYnN8c3FydHxtb2RmfGFzaW58bWlufG1vZHxmbW9kfGxvZzEwfGF0YW4yfGV4cHxzaW58YXRhbnxnZXR1cHZhbHVlfGRlYnVnfHNldGhvb2t8Z2V0bWV0YXRhYmxlfGdldGhvb2t8c2V0bWV0YXRhYmxlfHNldGxvY2FsfHRyYWNlYmFja3xzZXRmZW52fGdldGluZm98c2V0dXB2YWx1ZXxnZXRsb2NhbHxnZXRyZWdpc3RyeXxnZXRmZW52fHNldG58aW5zZXJ0fGdldG58Zm9yZWFjaGl8bWF4bnxmb3JlYWNofGNvbmNhdHxzb3J0fHJlbW92ZXxyZXN1bWV8eWllbGR8c3RhdHVzfHdyYXB8Y3JlYXRlfHJ1bm5pbmciLnNwbGl0KCJ8IikpLGQ9ZS5hcnJheVRvTWFwKCJzdHJpbmd8cGFja2FnZXxvc3xpb3xtYXRofGRlYnVnfHRhYmxlfGNvcm91dGluZSIuc3BsaXQoInwiKSksZj1lLmFycmF5VG9NYXAoIl9fYWRkfF9fc3VifF9fbW9kfF9fdW5tfF9fY29uY2F0fF9fbHR8X19pbmRleHxfX2NhbGx8X19nY3xfX21ldGF0YWJsZXxfX211bHxfX2RpdnxfX3Bvd3xfX2xlbnxfX2VxfF9fbGV8X19uZXdpbmRleHxfX3Rvc3RyaW5nfF9fbW9kZXxfX3RvbnVtYmVyIi5zcGxpdCgifCIpKSxnPWUuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKSxoPWUuYXJyYXlUb01hcCgic2V0bnxmb3JlYWNofGZvcmVhY2hpfGdjaW5mb3xsb2cxMHxtYXhuIi5zcGxpdCgifCIpKSxpPSIiLGo9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixrPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLGw9Iig/OiIraisifCIraysiKSIsbT0iKD86XFwuXFxkKykiLG49Iig/OlxcZCspIixvPSIoPzooPzoiK24rIj8iK20rIil8KD86IituKyJcXC4pKSIscD0iKD86IitvKyIpIixxPVtdO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDppKyJcXC1cXC1cXFtcXFsuKlxcXVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6aSsiXFwtXFwtXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPXsyfVxcWy4qXFxdXFw9ezJ9XFxdIn0se3Rva2VuOiJjb21tZW50IixyZWdleDppKyJcXC1cXC1cXFtcXD17M31cXFsuKlxcXVxcPXszfVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6aSsiXFwtXFwtXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPXs1fVxcPSpcXFsuKlxcXVxcPXs1fVxcPSpcXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQxIn0se3Rva2VuOiJjb21tZW50IixyZWdleDppKyJcXC1cXC1cXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFjb21tZW50MiJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6aSsiXFwtXFwtXFxbXFw9ezN9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDMifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPXs0fVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQ0In0se3Rva2VuOmZ1bmN0aW9uKGEpe3ZhciBiPS9cLVwtXFsoXD0rKVxbLyxjO3JldHVybihjPWIuZXhlYyhhKSkhPW51bGwmJihjPWNbMV0pIT11bmRlZmluZWQmJnEucHVzaChjLmxlbmd0aCksImNvbW1lbnQifSxyZWdleDppKyJcXC1cXC1cXFtcXD17NX1cXD0qXFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDUifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC1cXC0uKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFxbLipcXF1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezJ9XFxbLipcXF1cXD17Mn1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezN9XFxbLipcXF1cXD17M31cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezV9XFw9KlxcWy4qXFxdXFw9ezV9XFw9KlxcXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDppKyJcXFtcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nMSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDppKyJcXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcyIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmkrIlxcW1xcPXszfVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicXN0cmluZzMifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezR9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nNCJ9LHt0b2tlbjpmdW5jdGlvbihhKXt2YXIgYj0vXFsoXD0rKVxbLyxjO3JldHVybihjPWIuZXhlYyhhKSkhPW51bGwmJihjPWNbMV0pIT11bmRlZmluZWQmJnEucHVzaChjLmxlbmd0aCksInN0cmluZyJ9LHJlZ2V4OmkrIlxcW1xcPXs1fVxcPSpcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmc1In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmkrJyIoPzpbXlxcXFxdfFxcXFwuKSo/Iid9LHt0b2tlbjoic3RyaW5nIixyZWdleDppKyInKD86W15cXFxcXXxcXFxcLikqPycifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OnB9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6bCsiXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhc093blByb3BlcnR5KGUpPyJrZXl3b3JkIjpiLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5sYW5ndWFnZSI6Zy5oYXNPd25Qcm9wZXJ0eShlKT8iaW52YWxpZC5pbGxlZ2FsIjpkLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5saWJyYXJ5IjpoLmhhc093blByb3BlcnR5KGUpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmMuaGFzT3duUHJvcGVydHkoZSk/InN1cHBvcnQuZnVuY3Rpb24iOmYuaGFzT3duUHJvcGVydHkoZSk/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK3xcXC18XFwqfFxcL3wlfFxcI3xcXF58fnw8fD58PD18PT58PT18fj18PXxcXDp8XFwuXFwuXFwufFxcLlxcLiJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcW1xcKFxce10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF1cXClcXH1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDE6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQyOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezJ9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFjb21tZW50Mzpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXszfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NH1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQ1Olt7dG9rZW46ZnVuY3Rpb24oYSl7dmFyIGI9L1xdKFw9KylcXS8sYz10aGlzLnJ1bGVzLnFjb21tZW50NVswXSxkO2MubmV4dD0ic3RhcnQiO2lmKChkPWIuZXhlYyhhKSkhPW51bGwmJihkPWRbMV0pIT11bmRlZmluZWQpe3ZhciBlPWQubGVuZ3RoLGY7KGY9cS5wb3AoKSkhPWUmJihxLnB1c2goZiksYy5uZXh0PSJxY29tbWVudDUiKX1yZXR1cm4iY29tbWVudCJ9LHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezV9XFw9KlxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nMTpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzI6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXsyfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmczOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17M31cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nNDpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezR9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzU6W3t0b2tlbjpmdW5jdGlvbihhKXt2YXIgYj0vXF0oXD0rKVxdLyxjPXRoaXMucnVsZXMucXN0cmluZzVbMF0sZDtjLm5leHQ9InN0YXJ0IjtpZigoZD1iLmV4ZWMoYSkpIT1udWxsJiYoZD1kWzFdKSE9dW5kZWZpbmVkKXt2YXIgZT1kLmxlbmd0aCxmOyhmPXEucG9wKCkpIT1lJiYocS5wdXNoKGYpLGMubmV4dD0icXN0cmluZzUiKX1yZXR1cm4ic3RyaW5nIn0scmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NX1cXD0qXFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19fTtkLmluaGVyaXRzKGcsZiksYi5MdWFIaWdobGlnaHRSdWxlcz1nfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-markdown.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9tYXJrZG93biIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvbW9kZS94bWwiLCJhY2UvbW9kZS9odG1sIiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL21hcmtkb3duX2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi9qYXZhc2NyaXB0IikuTW9kZSxnPWEoIi4veG1sIikuTW9kZSxoPWEoIi4vaHRtbCIpLk1vZGUsaT1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaj1hKCIuL21hcmtkb3duX2hpZ2hsaWdodF9ydWxlcyIpLk1hcmtkb3duSGlnaGxpZ2h0UnVsZXMsaz1mdW5jdGlvbigpe3ZhciBhPW5ldyBqO3RoaXMuJHRva2VuaXplcj1uZXcgaShhLmdldFJ1bGVzKCkpLHRoaXMuJGVtYmVkcz1hLmdldEVtYmVkcygpLHRoaXMuY3JlYXRlTW9kZURlbGVnYXRlcyh7ImpzLSI6ZiwieG1sLSI6ZywiaHRtbC0iOmh9KX07ZC5pbmhlcml0cyhrLGUpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7aWYoYT09Imxpc3RibG9jayIpe3ZhciBkPS9eKCg/Oi4rKT8pKFstKypdWyBdKykvLmV4ZWMoYik7cmV0dXJuIGQ/KG5ldyBBcnJheShkWzFdLmxlbmd0aCsxKSkuam9pbigiICIpK2RbMl06IiJ9cmV0dXJuIHRoaXMuJGdldEluZGVudChiKX19LmNhbGwoay5wcm90b3R5cGUpLGIuTW9kZT1rfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGs9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGw9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLG09ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgayx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ZC5pbmhlcml0cyhtLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopXC9cLy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucyxnPWUuc3RhdGU7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCJ8fGE9PSJyZWdleF9hbGxvd2VkIil7dmFyIGg9Yi5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTtoJiYoZCs9Yyl9ZWxzZSBpZihhPT0iZG9jLXN0YXJ0Iil7aWYoZz09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciBoPWIubWF0Y2goL15ccyooXC8/KVwqLyk7aCYmKGhbMV0mJihkKz0iICIpLGQrPSIqICIpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooWyJhY2UiXSwid29ya2VyLWphdmFzY3JpcHQuanMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigianNsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPGIuZGF0YS5sZW5ndGg7ZCsrKXt2YXIgZT1iLmRhdGFbZF07ZSYmYy5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY2hhcmFjdGVyLTEsdGV4dDplLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50OmV9KX1hLnNldEFubm90YXRpb25zKGMpfSksYi5vbigibmFyY2lzc3VzIixmdW5jdGlvbihiKXthLnNldEFubm90YXRpb25zKFtiLmRhdGFdKX0pLGIub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXthLmNsZWFyQW5ub3RhdGlvbnMoKX0pLGJ9fS5jYWxsKG0ucHJvdG90eXBlKSxiLk1vZGU9bX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4uL3VuaWNvZGUiKSxnPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksYz0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIsZD1lLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGk9ZS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGo9ZS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksaz0iWyIrZi5wYWNrYWdlcy5MKyJcXCRfXVsiK2YucGFja2FnZXMuTCtmLnBhY2thZ2VzLk1uK2YucGFja2FnZXMuTWMrZi5wYWNrYWdlcy5OZCtmLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGw9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LGcuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitrKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrYysiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/InZhcmlhYmxlLmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmguaGFzT3duUHJvcGVydHkoYyk/InN0b3JhZ2UudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmouaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuaWxsZWdhbCI6Yz09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omt9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omt9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhnLCJkb2MtIixbZy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaSxoKSxiLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3htbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvZm9sZGluZy94bWwiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4veG1sX2hpZ2hsaWdodF9ydWxlcyIpLlhtbEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGk9YSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGo9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRiZWhhdmlvdXI9bmV3IGgsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGl9O2QuaW5oZXJpdHMoaixlKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRnZXRJbmRlbnQoYil9fS5jYWxsKGoucHJvdG90eXBlKSxiLk1vZGU9an0pLGRlZmluZSgiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3htbF91dGlsIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGc9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sZS50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0Iil9O2QuaW5oZXJpdHMoZyxmKSxiLlhtbEhpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmErIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmErIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2EsbmV4dDpifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXZhciBkPWEoIi4uL2xpYi9sYW5nIiksZT1kLmFycmF5VG9NYXAoImJ1dHRvbnxmb3JtfGlucHV0fGxhYmVsfHNlbGVjdHx0ZXh0YXJlYSIuc3BsaXQoInwiKSksZj1kLmFycmF5VG9NYXAoInRhYmxlfHRib2R5fHRkfHRmb290fHRofHRyIi5zcGxpdCgifCIpKTtiLnRhZz1mdW5jdGlvbihhLGIsYyl7YVtiXT1be3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjpmdW5jdGlvbihhKXtyZXR1cm4gYT09PSJhIj8ibWV0YS50YWcuYW5jaG9yIjphPT09ImltZyI/Im1ldGEudGFnLmltYWdlIjphPT09InNjcmlwdCI/Im1ldGEudGFnLnNjcmlwdCI6YT09PSJzdHlsZSI/Im1ldGEudGFnLnN0eWxlIjplLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/Im1ldGEudGFnLmZvcm0iOmYuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT8ibWV0YS50YWcudGFibGUiOiJtZXRhLnRhZyJ9LG1lcmdlOiEwLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsiLG5leHQ6YisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDpiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifV0sYVtiKyJfcXN0cmluZyJdPWgoIiciLGIrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGFbYisiX3Fxc3RyaW5nIl09aCgnIicsYisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksYVtiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiXT1be3Rva2VuOiJtZXRhLnRhZyIsbWVyZ2U6ITAscmVnZXg6Ii8/PiIsbmV4dDpjfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI9In0se3Rva2VuOiJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUiLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0uY29uY2F0KGcoYikpfX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1hKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixnPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KGYsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYnJhY2tldHMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IjwiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj8hMTp7dGV4dDoiPD4iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09Ij4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSI+IilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaz1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisyKTtpZihrPT0iPC8iKXt2YXIgbD10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpK2QuZ2V0VGFiU3RyaW5nKCksbT10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbCsiXG4iK20sc2VsZWN0aW9uOlsxLGwubGVuZ3RoLDEsbC5sZW5ndGhdfX19fSl9O2QuaW5oZXJpdHMoZyxlKSxiLlhtbEJlaGF2aW91cj1nfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vbGliL2xhbmciKSxmPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZz1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGg9YSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGk9Yi5Gb2xkTW9kZT1mdW5jdGlvbihhKXtnLmNhbGwodGhpcyksdGhpcy52b2lkRWxlbWVudHM9YXx8e319O2QuaW5oZXJpdHMoaSxnKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoYSxjKTtyZXR1cm4gZC5jbG9zaW5nP2I9PSJtYXJrYmVnaW5lbmQiPyJlbmQiOiIiOiFkLnRhZ05hbWV8fHRoaXMudm9pZEVsZW1lbnRzW2QudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT8iIjpkLnNlbGZDbG9zaW5nPyIiOmQudmFsdWUuaW5kZXhPZigiLyIrZC50YWdOYW1lKSE9PS0xPyIiOiJzdGFydCJ9LHRoaXMuX2dldEZpcnN0VGFnSW5MaW5lPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRUb2tlbnMoYiksZD0iIjtmb3IodmFyIGY9MDtmPGMubGVuZ3RoO2YrKyl7dmFyIGc9Y1tmXTtnLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTA/ZCs9Zy52YWx1ZTpkKz1lLnN0cmluZ1JlcGVhdCgiICIsZy52YWx1ZS5sZW5ndGgpfXJldHVybiB0aGlzLl9wYXJzZVRhZyhkKX0sdGhpcy50YWdSZT0vXihccyopKDw/KFwvPykoWy1fYS16QS1aMC05OiFdKilccyooXC8/KT4/KS8sdGhpcy5fcGFyc2VUYWc9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50YWdSZS5leGVjKGEpLGM9dGhpcy50YWdSZS5sYXN0SW5kZXh8fDA7cmV0dXJuIHRoaXMudGFnUmUubGFzdEluZGV4PTAse3ZhbHVlOmEsbWF0Y2g6Yj9iWzJdOiIiLGNsb3Npbmc6Yj8hIWJbM106ITEsc2VsZkNsb3Npbmc6Yj8hIWJbNV18fGJbMl09PSIvPiI6ITEsdGFnTmFtZTpiP2JbNF06IiIsY29sdW1uOmJbMV0/YytiWzFdLmxlbmd0aDpjfX0sdGhpcy5fcmVhZFRhZ0ZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDdXJyZW50VG9rZW4oKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz0iIixkO2RvIGlmKGIudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7aWYoIWQpdmFyIGQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfTtjKz1iLnZhbHVlO2lmKGMuaW5kZXhPZigiPiIpIT09LTEpe3ZhciBlPXRoaXMuX3BhcnNlVGFnKGMpO3JldHVybiBlLnN0YXJ0PWQsZS5lbmQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2IudmFsdWUubGVuZ3RofSxhLnN0ZXBGb3J3YXJkKCksZX19d2hpbGUoYj1hLnN0ZXBGb3J3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9yZWFkVGFnQmFja3dhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDdXJyZW50VG9rZW4oKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz0iIixkO2RvIGlmKGIudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7ZHx8KGQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2IudmFsdWUubGVuZ3RofSksYz1iLnZhbHVlK2M7aWYoYy5pbmRleE9mKCI8IikhPT0tMSl7dmFyIGU9dGhpcy5fcGFyc2VUYWcoYyk7cmV0dXJuIGUuZW5kPWQsZS5zdGFydD17cm93OmEuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmEuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9LGEuc3RlcEJhY2t3YXJkKCksZX19d2hpbGUoYj1hLnN0ZXBCYWNrd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcG9wPWZ1bmN0aW9uKGEsYil7d2hpbGUoYS5sZW5ndGgpe3ZhciBjPWFbYS5sZW5ndGgtMV07aWYoIWJ8fGMudGFnTmFtZT09Yi50YWdOYW1lKXJldHVybiBhLnBvcCgpO2lmKHRoaXMudm9pZEVsZW1lbnRzW2IudGFnTmFtZV0pcmV0dXJuO2lmKHRoaXMudm9pZEVsZW1lbnRzW2MudGFnTmFtZV0pe2EucG9wKCk7Y29udGludWV9cmV0dXJuIG51bGx9fSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoYSxjKTtpZighZC5tYXRjaClyZXR1cm4gbnVsbDt2YXIgZT1kLmNsb3Npbmd8fGQuc2VsZkNsb3NpbmcsZz1bXSxpO2lmKCFlKXt2YXIgaj1uZXcgaChhLGMsZC5jb2x1bW4pLGs9e3JvdzpjLGNvbHVtbjpkLmNvbHVtbitkLnRhZ05hbWUubGVuZ3RoKzJ9O3doaWxlKGk9dGhpcy5fcmVhZFRhZ0ZvcndhcmQoaikpe2lmKGkuc2VsZkNsb3Npbmcpe2lmKCFnLmxlbmd0aClyZXR1cm4gaS5zdGFydC5jb2x1bW4rPWkudGFnTmFtZS5sZW5ndGgrMixpLmVuZC5jb2x1bW4tPTIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsaS5lbmQpO2NvbnRpbnVlfWlmKGkuY2xvc2luZyl7dGhpcy5fcG9wKGcsaSk7aWYoZy5sZW5ndGg9PTApcmV0dXJuIGYuZnJvbVBvaW50cyhrLGkuc3RhcnQpfWVsc2UgZy5wdXNoKGkpfX1lbHNle3ZhciBqPW5ldyBoKGEsYyxkLmNvbHVtbitkLm1hdGNoLmxlbmd0aCksbD17cm93OmMsY29sdW1uOmQuY29sdW1ufTt3aGlsZShpPXRoaXMuX3JlYWRUYWdCYWNrd2FyZChqKSl7aWYoaS5zZWxmQ2xvc2luZyl7aWYoIWcubGVuZ3RoKXJldHVybiBpLnN0YXJ0LmNvbHVtbis9aS50YWdOYW1lLmxlbmd0aCsyLGkuZW5kLmNvbHVtbi09MixmLmZyb21Qb2ludHMoaS5zdGFydCxpLmVuZCk7Y29udGludWV9aWYoIWkuY2xvc2luZyl7dGhpcy5fcG9wKGcsaSk7aWYoZy5sZW5ndGg9PTApcmV0dXJuIGkuc3RhcnQuY29sdW1uKz1pLnRhZ05hbWUubGVuZ3RoKzIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsbCl9ZWxzZSBnLnB1c2goaSl9fX19LmNhbGwoaS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9odG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL21vZGUvamF2YXNjcmlwdCIsImFjZS9tb2RlL2NzcyIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9odG1sX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLCJhY2UvbW9kZS9mb2xkaW5nL2h0bWwiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4vamF2YXNjcmlwdCIpLk1vZGUsZz1hKCIuL2NzcyIpLk1vZGUsaD1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaT1hKCIuL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIikuSHRtbEhpZ2hsaWdodFJ1bGVzLGo9YSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGs9YSgiLi9mb2xkaW5nL2h0bWwiKS5Gb2xkTW9kZSxsPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IGk7dGhpcy4kdG9rZW5pemVyPW5ldyBoKGEuZ2V0UnVsZXMoKSksdGhpcy4kYmVoYXZpb3VyPW5ldyBqLHRoaXMuJGVtYmVkcz1hLmdldEVtYmVkcygpLHRoaXMuY3JlYXRlTW9kZURlbGVnYXRlcyh7ImpzLSI6ZiwiY3NzLSI6Z30pLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBrfTtkLmluaGVyaXRzKGwsZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gMH0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJGdldEluZGVudChiKX0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiExfX0uY2FsbChsLnByb3RvdHlwZSksYi5Nb2RlPWx9KSxkZWZpbmUoImFjZS9tb2RlL2NzcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL2Nzc19oaWdobGlnaHRfcnVsZXMiKS5Dc3NIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsaj1hKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsaz1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCksImkiKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBqfTtkLmluaGVyaXRzKGssZSksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdSdWxlcz0iY1N0eWxlIix0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLnRva2VucztpZihlLmxlbmd0aCYmZVtlLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIGQ7dmFyIGY9Yi5tYXRjaCgvXi4qXHtccyokLyk7cmV0dXJuIGYmJihkKz1jKSxkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGkoWyJhY2UiXSwid29ya2VyLWNzcy5qcyIsImFjZS9tb2RlL2Nzc193b3JrZXIiLCJXb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigiY3NzbGludCIsZnVuY3Rpb24oYil7dmFyIGM9W107Yi5kYXRhLmZvckVhY2goZnVuY3Rpb24oYSl7Yy5wdXNoKHtyb3c6YS5saW5lLTEsY29sdW1uOmEuY29sLTEsdGV4dDphLm1lc3NhZ2UsdHlwZTphLnR5cGUsbGludDphfSl9KSxhLnNldEFubm90YXRpb25zKGMpfSksYn19LmNhbGwoay5wcm90b3R5cGUpLGIuTW9kZT1rfSksZGVmaW5lKCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxnPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJhbmltYXRpb24tZmlsbC1tb2RlfGFsaWdubWVudC1hZGp1c3R8YWxpZ25tZW50LWJhc2VsaW5lfGFuaW1hdGlvbi1kZWxheXxhbmltYXRpb24tZGlyZWN0aW9ufGFuaW1hdGlvbi1kdXJhdGlvbnxhbmltYXRpb24taXRlcmF0aW9uLWNvdW50fGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb258YW5pbWF0aW9ufGFwcGVhcmFuY2V8YXppbXV0aHxiYWNrZmFjZS12aXNpYmlsaXR5fGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWJyZWFrfGJhY2tncm91bmQtY2xpcHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1vcmlnaW58YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXNpemV8YmFja2dyb3VuZHxiYXNlbGluZS1zaGlmdHxiaW5kaW5nfGJsZWVkfGJvb2ttYXJrLWxhYmVsfGJvb2ttYXJrLWxldmVsfGJvb2ttYXJrLXN0YXRlfGJvb2ttYXJrLXRhcmdldHxib3JkZXItYm90dG9tfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c3xib3JkZXItYm90dG9tLXN0eWxlfGJvcmRlci1ib3R0b20td2lkdGh8Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItaW1hZ2V8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2UtcmVwZWF0fGJvcmRlci1pbWFnZS1zbGljZXxib3JkZXItaW1hZ2Utc291cmNlfGJvcmRlci1pbWFnZS13aWR0aHxib3JkZXItbGVmdHxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItcmFkaXVzfGJvcmRlci1yaWdodHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItc3BhY2luZ3xib3JkZXItc3R5bGV8Ym9yZGVyLXRvcHxib3JkZXItdG9wLWNvbG9yfGJvcmRlci10b3AtbGVmdC1yYWRpdXN8Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXN8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci13aWR0aHxib3JkZXJ8Ym90dG9tfGJveC1hbGlnbnxib3gtZGVjb3JhdGlvbi1icmVha3xib3gtZGlyZWN0aW9ufGJveC1mbGV4LWdyb3VwfGJveC1mbGV4fGJveC1saW5lc3xib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaGFkb3d8Ym94LXNpemluZ3xicmVhay1hZnRlcnxicmVhay1iZWZvcmV8YnJlYWstaW5zaWRlfGNhcHRpb24tc2lkZXxjbGVhcnxjbGlwfGNvbG9yLXByb2ZpbGV8Y29sb3J8Y29sdW1uLWNvdW50fGNvbHVtbi1maWxsfGNvbHVtbi1nYXB8Y29sdW1uLXJ1bGV8Y29sdW1uLXJ1bGUtY29sb3J8Y29sdW1uLXJ1bGUtc3R5bGV8Y29sdW1uLXJ1bGUtd2lkdGh8Y29sdW1uLXNwYW58Y29sdW1uLXdpZHRofGNvbHVtbnN8Y29udGVudHxjb3VudGVyLWluY3JlbWVudHxjb3VudGVyLXJlc2V0fGNyb3B8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxkb21pbmFudC1iYXNlbGluZXxkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0fGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbnxkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdHxkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWdufGRyb3AtaW5pdGlhbC1zaXplfGRyb3AtaW5pdGlhbC12YWx1ZXxlbGV2YXRpb258ZW1wdHktY2VsbHN8Zml0fGZpdC1wb3NpdGlvbnxmbG9hdC1vZmZzZXR8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplfGZvbnQtc2l6ZS1hZGp1c3R8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8Z3JpZC1jb2x1bW5zfGdyaWQtcm93c3xoYW5naW5nLXB1bmN0dWF0aW9ufGhlaWdodHxoeXBoZW5hdGUtYWZ0ZXJ8aHlwaGVuYXRlLWJlZm9yZXxoeXBoZW5hdGUtY2hhcmFjdGVyfGh5cGhlbmF0ZS1saW5lc3xoeXBoZW5hdGUtcmVzb3VyY2V8aHlwaGVuc3xpY29ufGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlbmRlcmluZ3xpbWFnZS1yZXNvbHV0aW9ufGlubGluZS1ib3gtYWxpZ258bGVmdHxsZXR0ZXItc3BhY2luZ3xsaW5lLWhlaWdodHxsaW5lLXN0YWNraW5nLXJ1Ynl8bGluZS1zdGFja2luZy1zaGlmdHxsaW5lLXN0YWNraW5nLXN0cmF0ZWd5fGxpbmUtc3RhY2tpbmd8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFyZ2lufG1hcmstYWZ0ZXJ8bWFyay1iZWZvcmV8bWFya3xtYXJrc3xtYXJxdWVlLWRpcmVjdGlvbnxtYXJxdWVlLXBsYXktY291bnR8bWFycXVlZS1zcGVlZHxtYXJxdWVlLXN0eWxlfG1heC1oZWlnaHR8bWF4LXdpZHRofG1pbi1oZWlnaHR8bWluLXdpZHRofG1vdmUtdG98bmF2LWRvd258bmF2LWluZGV4fG5hdi1sZWZ0fG5hdi1yaWdodHxuYXYtdXB8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1vZmZzZXR8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3ctc3R5bGV8b3ZlcmZsb3cteHxvdmVyZmxvdy15fG92ZXJmbG93fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLXBvbGljeXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwZXJzcGVjdGl2ZS1vcmlnaW58cGVyc3BlY3RpdmV8cGhvbmVtZXN8cGl0Y2gtcmFuZ2V8cGl0Y2h8cGxheS1kdXJpbmd8cG9zaXRpb258cHJlc2VudGF0aW9uLWxldmVsfHB1bmN0dWF0aW9uLXRyaW18cXVvdGVzfHJlbmRlcmluZy1pbnRlbnR8cmVzaXplfHJlc3QtYWZ0ZXJ8cmVzdC1iZWZvcmV8cmVzdHxyaWNobmVzc3xyaWdodHxyb3RhdGlvbi1wb2ludHxyb3RhdGlvbnxydWJ5LWFsaWdufHJ1Ynktb3Zlcmhhbmd8cnVieS1wb3NpdGlvbnxydWJ5LXNwYW58c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVha3xzcGVlY2gtcmF0ZXxzdHJlc3N8c3RyaW5nLXNldHx0YWJsZS1sYXlvdXR8dGFyZ2V0LW5hbWV8dGFyZ2V0LW5ld3x0YXJnZXQtcG9zaXRpb258dGFyZ2V0fHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRleHQtZGVjb3JhdGlvbnx0ZXh0LWVtcGhhc2lzfHRleHQtaGVpZ2h0fHRleHQtaW5kZW50fHRleHQtanVzdGlmeXx0ZXh0LW91dGxpbmV8dGV4dC1zaGFkb3d8dGV4dC10cmFuc2Zvcm18dGV4dC13cmFwfHRvcHx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zZm9ybS1zdHlsZXx0cmFuc2Zvcm18dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dHJhbnNpdGlvbnx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1iYWxhbmNlfHZvaWNlLWR1cmF0aW9ufHZvaWNlLWZhbWlseXx2b2ljZS1waXRjaC1yYW5nZXx2b2ljZS1waXRjaHx2b2ljZS1yYXRlfHZvaWNlLXN0cmVzc3x2b2ljZS12b2x1bWV8dm9sdW1lfHdoaXRlLXNwYWNlLWNvbGxhcHNlfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLWJyZWFrfHdvcmQtc3BhY2luZ3x3b3JkLXdyYXB8ei1pbmRleCIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoInJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnMiLnNwbGl0KCJ8IikpLGM9ZS5hcnJheVRvTWFwKCJhYnNvbHV0ZXxhZnRlci1lZGdlfGFmdGVyfGFsbC1zY3JvbGx8YWxsfGFscGhhYmV0aWN8YWx3YXlzfGFudGlhbGlhc2VkfGFybWVuaWFufGF1dG98YXZvaWQtY29sdW1ufGF2b2lkLXBhZ2V8YXZvaWR8YmFsYW5jZXxiYXNlbGluZXxiZWZvcmUtZWRnZXxiZWZvcmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9jay1saW5lLWhlaWdodHxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJveHxicmVhay1hbGx8YnJlYWstd29yZHxjYXBpdGFsaXplfGNhcHMtaGVpZ2h0fGNhcHRpb258Y2VudGVyfGNlbnRyYWx8Y2hhcnxjaXJjbGV8Y2prLWlkZW9ncmFwaGljfGNsb25lfGNsb3NlLXF1b3RlfGNvbC1yZXNpemV8Y29sbGFwc2V8Y29sdW1ufGNvbnNpZGVyLXNoaWZ0c3xjb250YWlufGNvbnRlbnQtYm94fGNvdmVyfGNyb3NzaGFpcnxjdWJpYy1iZXppZXJ8ZGFzaGVkfGRlY2ltYWwtbGVhZGluZy16ZXJvfGRlY2ltYWx8ZGVmYXVsdHxkaXNhYmxlZHxkaXNjfGRpc3JlZ2FyZC1zaGlmdHN8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWFzZS1pbnxlYXNlLWluLW91dHxlYXNlLW91dHxlYXNlfGVsbGlwc2lzfGVuZHxleGNsdWRlLXJ1Ynl8ZmlsbHxmaXhlZHxmb250LXNpemV8Zm9udHxnZW9yZ2lhbnxnbHlwaHN8Z3JpZC1oZWlnaHR8Z3Jvb3ZlfGhhbmR8aGFuZ2luZ3xoZWJyZXd8aGVscHxoaWRkZW58aGlyYWdhbmEtaXJvaGF8aGlyYWdhbmF8aG9yaXpvbnRhbHxpY29ufGlkZW9ncmFwaC1hbHBoYXxpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaGljfGluYWN0aXZlfGluY2x1ZGUtcnVieXxpbmhlcml0fGluaXRpYWx8aW5saW5lLWJsb2NrfGlubGluZS1ib3h8aW5saW5lLWxpbmUtaGVpZ2h0fGlubGluZS10YWJsZXxpbmxpbmV8aW5zZXR8aW5zaWRlfGludGVyLWlkZW9ncmFwaHxpbnRlci13b3JkfGludmVydHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsYXN0fGxlZnR8bGlnaHRlcnxsaW5lLWVkZ2V8bGluZS10aHJvdWdofGxpbmV8bGluZWFyfGxpc3QtaXRlbXxsb2NhbHxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1hdGhlbWF0aWNhbHxtYXgtaGVpZ2h0fG1heC1zaXplfG1lZGl1bXxtZW51fG1lc3NhZ2UtYm94fG1pZGRsZXxtb3ZlfG4tcmVzaXplfG5lLXJlc2l6ZXxuZXdzcGFwZXJ8bm8tY2hhbmdlfG5vLWNsb3NlLXF1b3RlfG5vLWRyb3B8bm8tb3Blbi1xdW90ZXxuby1yZXBlYXR8bm9uZXxub3JtYWx8bm90LWFsbG93ZWR8bm93cmFwfG53LXJlc2l6ZXxvYmxpcXVlfG9wZW4tcXVvdGV8b3V0c2V0fG91dHNpZGV8b3ZlcmxpbmV8cGFkZGluZy1ib3h8cGFnZXxwb2ludGVyfHByZS1saW5lfHByZS13cmFwfHByZXxwcmVzZXJ2ZS0zZHxwcm9ncmVzc3xyZWxhdGl2ZXxyZXBlYXQteHxyZXBlYXQteXxyZXBlYXR8cmVwbGFjZWR8cmVzZXQtc2l6ZXxyaWRnZXxyaWdodHxyb3VuZHxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNsaWNlfHNtYWxsLWNhcHN8c21hbGwtY2FwdGlvbnxzb2xpZHxzcGFjZXxzcXVhcmV8c3RhcnR8c3RhdGljfHN0YXR1cy1iYXJ8c3RlcC1lbmR8c3RlcC1zdGFydHxzdGVwc3xzdHJldGNofHN0cmljdHxzdWJ8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWNhcHRpb258dGFibGUtY2VsbHx0YWJsZS1jb2x1bW4tZ3JvdXB8dGFibGUtY29sdW1ufHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGFibGUtcm93LWdyb3VwfHRhYmxlLXJvd3x0YWJsZXx0Yi1ybHx0ZXh0LWFmdGVyLWVkZ2V8dGV4dC1iZWZvcmUtZWRnZXx0ZXh0LWJvdHRvbXx0ZXh0LXNpemV8dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHVzZS1zY3JpcHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dmVydGljYWwtdGV4dHx2aXNpYmxlfHctcmVzaXplfHdhaXR8d2hpdGVzcGFjZXx6LWluZGV4fHplcm8iLnNwbGl0KCJ8IikpLGQ9ZS5hcnJheVRvTWFwKCJhcXVhfGJsYWNrfGJsdWV8ZnVjaHNpYXxncmF5fGdyZWVufGxpbWV8bWFyb29ufG5hdnl8b2xpdmV8b3JhbmdlfHB1cnBsZXxyZWR8c2lsdmVyfHRlYWx8d2hpdGV8eWVsbG93Ii5zcGxpdCgifCIpKSxmPWUuYXJyYXlUb01hcCgiYXJpYWx8Y2VudHVyeXxjb21pY3xjb3VyaWVyfGdhcmFtb25kfGdlb3JnaWF8aGVsdmV0aWNhfGltcGFjdHxsdWNpZGF8c3ltYm9sfHN5c3RlbXx0YWhvbWF8dGltZXN8dHJlYnVjaGV0fHV0b3BpYXx2ZXJkYW5hfHdlYmRpbmdzfHNhbnMtc2VyaWZ8c2VyaWZ8bW9ub3NwYWNlIi5zcGxpdCgifCIpKSxnPSJcXC0/KD86KD86WzAtOV0rKXwoPzpbMC05XSpcXC5bMC05XSspKSIsaD0iKFxcOispXFxiKGFmdGVyfGJlZm9yZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtbGluZXxtb3otc2VsZWN0aW9ufHNlbGVjdGlvbilcXGIiLGk9Iig6KVxcYihhY3RpdmV8Y2hlY2tlZHxkaXNhYmxlZHxlbXB0eXxlbmFibGVkfGZpcnN0LWNoaWxkfGZpcnN0LW9mLXR5cGV8Zm9jdXN8aG92ZXJ8aW5kZXRlcm1pbmF0ZXxpbnZhbGlkfGxhc3QtY2hpbGR8bGFzdC1vZi10eXBlfGxpbmt8bm90fG50aC1jaGlsZHxudGgtbGFzdC1jaGlsZHxudGgtbGFzdC1vZi10eXBlfG50aC1vZi10eXBlfG9ubHktY2hpbGR8b25seS1vZi10eXBlfHJlcXVpcmVkfHJvb3R8dGFyZ2V0fHZhbGlkfHZpc2l0ZWQpXFxiIixqPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6InJ1bGVzZXRfY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiLCJrZXl3b3JkIl0scmVnZXg6IigiK2crIikoY2h8Y218ZGVnfGVtfGV4fGZyfGdkfGdyYWR8SHp8aW58a0h6fG1tfG1zfHBjfHB0fHB4fHJhZHxyZW18c3x0dXJufHZofHZtfHZ3fCUpIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyJdLHJlZ2V4OiIoWzAtOV0rKSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXs2fSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXszfSJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1lbGVtZW50LmNzcyJdLHJlZ2V4Omh9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1jbGFzcy5jc3MiXSxyZWdleDppfSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjpiLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuZnVuY3Rpb24iOmMuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudCI6ZC5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpmLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuZm9udHMiOiJ0ZXh0In0scmVnZXg6IlxcLT9bYS16QS1aX11bYS16QS1aMC05X1xcLV0qIn1dLGs9ZS5jb3B5QXJyYXkoaik7ay51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9KTt2YXIgbD1lLmNvcHlBcnJheShqKTtsLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6Im1lZGlhIn0pO3ZhciBtPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxuPWUuY29weUFycmF5KG0pO24udW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0pO3ZhciBvPWUuY29weUFycmF5KG0pO28udW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6Im1lZGlhIn0pO3ZhciBwPWUuY29weUFycmF5KG0pO3AudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InJ1bGVzZXQifSksdGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoicnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiQC4qP3siLG5leHQ6Im1lZGlhIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sbWVkaWE6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoibWVkaWFfY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJtZWRpYV9ydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sY29tbWVudDpuLHJ1bGVzZXQ6ayxydWxlc2V0X2NvbW1lbnQ6cCxtZWRpYV9ydWxlc2V0OmwsbWVkaWFfY29tbWVudDpvfX07ZC5pbmhlcml0cyhnLGYpLGIuQ3NzSGlnaGxpZ2h0UnVsZXM9Z30pLGRlZmluZSgiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3htbF91dGlsIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsZj1hKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLGc9YSgiLi94bWxfdXRpbCIpLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46InRleHQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhXFxbQ0RBVEFcXFsiLG5leHQ6ImNkYXRhIn0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFw/Lio/XFw/PiJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IjxcXCEtLSIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcIS4qPz4ifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PXMqc2NyaXB0XFxiKSIsbmV4dDoic2NyaXB0In0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjwoPz1zKnN0eWxlXFxiKSIsbmV4dDoic3R5bGUifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLz8iLG5leHQ6InRhZyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ImNvbnN0YW50LmNoYXJhY3Rlci5lbnRpdHkiLHJlZ2V4OiIoPzomI1swLTldKzspfCg/OiYjeFswLTlhLWZBLUZdKzspfCg/OiZbYS16QS1aMC05XzpcXC4tXSs7KSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IltePF0rIn1dLGNkYXRhOlt7dG9rZW46InRleHQiLHJlZ2V4OiJcXF1cXF0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46InRleHQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj8tLT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV19LGcudGFnKHRoaXMuJHJ1bGVzLCJ0YWciLCJzdGFydCIpLGcudGFnKHRoaXMuJHJ1bGVzLCJzdHlsZSIsImNzcy1zdGFydCIpLGcudGFnKHRoaXMuJHJ1bGVzLCJzY3JpcHQiLCJqcy1zdGFydCIpLHRoaXMuZW1iZWRSdWxlcyhmLCJqcy0iLFt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKig/PTxcXC9zY3JpcHQ+KSIsbmV4dDoidGFnIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8oPz1zY3JpcHQpIixuZXh0OiJ0YWcifV0pLHRoaXMuZW1iZWRSdWxlcyhlLCJjc3MtIixbe3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8oPz1zdHlsZSkiLG5leHQ6InRhZyJ9XSl9O2QuaW5oZXJpdHMoaSxoKSxiLkh0bWxIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2h0bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4vbWl4ZWQiKS5Gb2xkTW9kZSxmPWEoIi4veG1sIikuRm9sZE1vZGUsZz1hKCIuL2NzdHlsZSIpLkZvbGRNb2RlLGg9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe2UuY2FsbCh0aGlzLG5ldyBmKHthcmVhOjEsYmFzZToxLGJyOjEsY29sOjEsY29tbWFuZDoxLGVtYmVkOjEsaHI6MSxpbWc6MSxpbnB1dDoxLGtleWdlbjoxLGxpbms6MSxtZXRhOjEscGFyYW06MSxzb3VyY2U6MSx0cmFjazoxLHdicjoxLGxpOjEsZHQ6MSxkZDoxLHA6MSxydDoxLHJwOjEsb3B0Z3JvdXA6MSxvcHRpb246MSxjb2xncm91cDoxLHRkOjEsdGg6MX0pLHsianMtIjpuZXcgZywiY3NzLSI6bmV3IGd9KX07ZC5pbmhlcml0cyhoLGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL21peGVkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGY9Yi5Gb2xkTW9kZT1mdW5jdGlvbihhLGIpe3RoaXMuZGVmYXVsdE1vZGU9YSx0aGlzLnN1Yk1vZGVzPWJ9O2QuaW5oZXJpdHMoZixlKSxmdW5jdGlvbigpe3RoaXMuJGdldE1vZGU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIHRoaXMuc3ViTW9kZXMpaWYoYS5pbmRleE9mKGIpPT09MClyZXR1cm4gdGhpcy5zdWJNb2Rlc1tiXTtyZXR1cm4gbnVsbH0sdGhpcy4kdHJ5TW9kZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLiRnZXRNb2RlKGEpO3JldHVybiBlP2UuZ2V0Rm9sZFdpZGdldChiLGMsZCk6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJHRyeU1vZGUoYS5nZXRTdGF0ZShjLTEpLGEsYixjKXx8dGhpcy4kdHJ5TW9kZShhLmdldFN0YXRlKGMpLGEsYixjKXx8dGhpcy5kZWZhdWx0TW9kZS5nZXRGb2xkV2lkZ2V0KGEsYixjKX0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldE1vZGUoYS5nZXRTdGF0ZShjLTEpKTtpZighZHx8IWQuZ2V0Rm9sZFdpZGdldChhLGIsYykpZD10aGlzLiRnZXRNb2RlKGEuZ2V0U3RhdGUoYykpO2lmKCFkfHwhZC5nZXRGb2xkV2lkZ2V0KGEsYixjKSlkPXRoaXMuZGVmYXVsdE1vZGU7cmV0dXJuIGQuZ2V0Rm9sZFdpZGdldFJhbmdlKGEsYixjKX19LmNhbGwoZi5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9tYXJrZG93bl9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGooYSxiKXtyZXR1cm57dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJeYGBgIithKyJcXHMqJCIsbmV4dDpiKyJzdGFydCJ9fXZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1hKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLGc9YSgiLi94bWxfaGlnaGxpZ2h0X3J1bGVzIikuWG1sSGlnaGxpZ2h0UnVsZXMsaD1hKCIuL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIikuSHRtbEhpZ2hsaWdodFJ1bGVzLGk9YSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsaz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJlbXB0eV9saW5lIixyZWdleDoiXiQifSx7dG9rZW46WyJzdXBwb3J0LmZ1bmN0aW9uIiwic3VwcG9ydC5mdW5jdGlvbiIsInN1cHBvcnQuZnVuY3Rpb24iXSxyZWdleDoiKGArKShbXlxccl0qP1teYF0pKFxcMSkifSx7dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJeWyBdezR9LisifSx7dG9rZW46Im1hcmt1cC5oZWFkaW5nLjEiLHJlZ2V4OiJePSsoPz1cXHMqJCkifSx7dG9rZW46Im1hcmt1cC5oZWFkaW5nLjEiLHJlZ2V4OiJeXFwtKyg/PVxccyokKSJ9LHt0b2tlbjpmdW5jdGlvbihhKXtyZXR1cm4ibWFya3VwLmhlYWRpbmcuIithLmxlbmd0aH0scmVnZXg6Il4jezEsNn0ifSxqKCJqYXZhc2NyaXB0IiwianMtIiksaigieG1sIiwieG1sLSIpLGooImh0bWwiLCJodG1sLSIpLGooImNzcyIsImNzcy0iKSx7dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJeYGBgW2EtekEtWl0rXFxzKiQiLG5leHQ6ImdpdGh1YmJsb2NrIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJePlsgXS4rJCIsbmV4dDoiYmxvY2txdW90ZSJ9LHt0b2tlbjpbInRleHQiLCJjb25zdGFudCIsInRleHQiLCJ1cmwiLCJzdHJpbmciLCJ0ZXh0Il0scmVnZXg6J14oWyBdezAsM31cXFspKFteXFxdXSspKFxcXTpcXHMqKShbXiBdKykoXFxzKig/OlsiXVteIl0rWyJdKT8oXFxzKikpJCd9LHt0b2tlbjpbInRleHQiLCJzdHJpbmciLCJ0ZXh0IiwiY29uc3RhbnQiLCJ0ZXh0Il0scmVnZXg6IihcXFspKCg/OltbXlxcXV0qXFxdfFteXFxbXFxdXSkqKShcXF1bIF0/KD86XFxuWyBdKik/XFxbKSguKj8pKFxcXSkifSx7dG9rZW46WyJ0ZXh0Iiwic3RyaW5nIiwidGV4dCIsIm1hcmt1cC51bmRlcmxpbmUiLCJzdHJpbmciLCJ0ZXh0Il0scmVnZXg6JyhcXFspKFxcW1teXFxdXSpcXF18W15cXFtcXF1dKikoXFxdXFwoWyBcXHRdKikoPD8oPzooPzpbXlxcKF0qP1xcKFteXFwpXSo/XFwpXFxTKj8pfCg/Oi4qPykpPj8pKCg/OlsgCV0qIig/Oi4qPykiWyBcXHRdKik/KShcXCkpJ30se3Rva2VuOiJjb25zdGFudCIscmVnZXg6Il5bIF17MCwyfSg/OlsgXT9cXCpbIF0/KXszLH1cXHMqJCJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiJeWyBdezAsMn0oPzpbIF0/XFwtWyBdPyl7Myx9XFxzKiQifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiXlsgXXswLDJ9KD86WyBdP1xcX1sgXT8pezMsfVxccyokIn0se3Rva2VuOiJtYXJrdXAubGlzdCIscmVnZXg6Il5cXHN7MCwzfSg/OlsqKy1dfFxcZCtcXC4pXFxzKyIsbmV4dDoibGlzdGJsb2NrIn0se3Rva2VuOlsic3RyaW5nIiwic3RyaW5nIiwic3RyaW5nIl0scmVnZXg6IihbKl17Mn18W19dezJ9KD89XFxTKSkoW15cXHJdKj9cXFNbKl9dKikoXFwxKSJ9LHt0b2tlbjpbInN0cmluZyIsInN0cmluZyIsInN0cmluZyJdLHJlZ2V4OiIoWypdfFtfXSg/PVxcUykpKFteXFxyXSo/XFxTWypfXSopKFxcMSkifSx7dG9rZW46WyJ0ZXh0IiwidXJsIiwidGV4dCJdLHJlZ2V4OiIoPCkoKD86aHR0cHM/fGZ0cHxkaWN0KTpbXidcIj5cXHNdK3woPzptYWlsdG86KT9bLS5cXHddK1xcQFstYS16MC05XSsoPzpcXC5bLWEtejAtOV0rKSpcXC5bYS16XSspKD4pIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW15cXCpfJSRgXFxbIzw+XSsifV0sbGlzdGJsb2NrOlt7dG9rZW46ImVtcHR5X2xpbmUiLHJlZ2V4OiJeJCIsbmV4dDoic3RhcnQifSx7dG9rZW46Im1hcmt1cC5saXN0IixyZWdleDoiLisifV0sYmxvY2txdW90ZTpbe3Rva2VuOiJlbXB0eV9saW5lIixyZWdleDoiXlxccyokIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiLisifV0sZ2l0aHViYmxvY2s6W3t0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6Il5gYGAiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDoiLisifV19LHRoaXMuZW1iZWRSdWxlcyhmLCJqcy0iLFt7dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJeYGBgIixuZXh0OiJzdGFydCJ9XSksdGhpcy5lbWJlZFJ1bGVzKGgsImh0bWwtIixbe3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDoiXmBgYCIsbmV4dDoic3RhcnQifV0pLHRoaXMuZW1iZWRSdWxlcyhpLCJjc3MtIixbe3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDoiXmBgYCIsbmV4dDoic3RhcnQifV0pLHRoaXMuZW1iZWRSdWxlcyhnLCJ4bWwtIixbe3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDoiXmBgYCIsbmV4dDoic3RhcnQifV0pfTtkLmluaGVyaXRzKGssZSksYi5NYXJrZG93bkhpZ2hsaWdodFJ1bGVzPWt9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-ocaml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9vY2FtbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9vY2FtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL29jYW1sX2hpZ2hsaWdodF9ydWxlcyIpLk9jYW1sSGlnaGxpZ2h0UnVsZXMsaD1hKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxpPWEoIi4uL3JhbmdlIikuUmFuZ2Usaj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IGh9O2QuaW5oZXJpdHMoaixlKTt2YXIgaz0vKD86Wyh7Wz06XXxbLT1dPnxcYig/OmVsc2V8dHJ5fHdpdGgpKVxzKiQvOyhmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz0hMCxoPS9eXHMqXChcKiguKilcKlwpLztmb3IoZT1jO2U8PWQ7ZSsrKWlmKCFoLnRlc3QoYi5nZXRMaW5lKGUpKSl7Zz0hMTticmVha312YXIgaj1uZXcgaSgwLDAsMCwwKTtmb3IoZT1jO2U8PWQ7ZSsrKWY9Yi5nZXRMaW5lKGUpLGouc3RhcnQucm93PWUsai5lbmQucm93PWUsai5lbmQuY29sdW1uPWYubGVuZ3RoLGIucmVwbGFjZShqLGc/Zi5tYXRjaChoKVsxXToiKCoiK2YrIiopIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSkudG9rZW5zO3JldHVybighZS5sZW5ndGh8fGVbZS5sZW5ndGgtMV0udHlwZSE9PSJjb21tZW50IikmJmE9PT0ic3RhcnQiJiZrLnRlc3QoYikmJihkKz1jKSxkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX19KS5jYWxsKGoucHJvdG90eXBlKSxiLk1vZGU9an0pLGRlZmluZSgiYWNlL21vZGUvb2NhbWxfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxnPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJhbmR8YXN8YXNzZXJ0fGJlZ2lufGNsYXNzfGNvbnN0cmFpbnR8ZG98ZG9uZXxkb3dudG98ZWxzZXxlbmR8ZXhjZXB0aW9ufGV4dGVybmFsfGZvcnxmdW58ZnVuY3Rpb258ZnVuY3RvcnxpZnxpbnxpbmNsdWRlfGluaGVyaXR8aW5pdGlhbGl6ZXJ8bGF6eXxsZXR8bWF0Y2h8bWV0aG9kfG1vZHVsZXxtdXRhYmxlfG5ld3xvYmplY3R8b2Z8b3Blbnxvcnxwcml2YXRlfHJlY3xzaWd8c3RydWN0fHRoZW58dG98dHJ5fHR5cGV8dmFsfHZpcnR1YWx8d2hlbnx3aGlsZXx3aXRoIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgidHJ1ZXxmYWxzZSIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoImFic3xhYnNfYmlnX2ludHxhYnNfZmxvYXR8YWJzX251bXxhYnN0cmFjdF90YWd8YWNjZXB0fGFjY2Vzc3xhY29zfGFkZHxhZGRfYXZhaWxhYmxlX3VuaXRzfGFkZF9iaWdfaW50fGFkZF9idWZmZXJ8YWRkX2NoYW5uZWx8YWRkX2NoYXJ8YWRkX2luaXRpYWxpemVyfGFkZF9pbnRfYmlnX2ludHxhZGRfaW50ZXJmYWNlc3xhZGRfbnVtfGFkZF9zdHJpbmd8YWRkX3N1YnN0aXR1dGV8YWRkX3N1YnN0cmluZ3xhbGFybXxhbGxvY2F0ZWRfYnl0ZXN8YWxsb3dfb25seXxhbGxvd191bnNhZmVfbW9kdWxlc3xhbHdheXN8YXBwZW5kfGFwcG5hbWVfZ2V0fGFwcG5hbWVfc2V0fGFwcHJveF9udW1fZXhwfGFwcHJveF9udW1fZml4fGFyZ3xhcmd2fGFyaXRoX3N0YXR1c3xhcnJheXxhcnJheTFfb2ZfZ2VuYXJyYXl8YXJyYXkyX29mX2dlbmFycmF5fGFycmF5M19vZl9nZW5hcnJheXxhc2lufGFzcnxhc3NvY3xhc3NxfGF0X2V4aXR8YXRhbnxhdGFuMnxhdXRvX3N5bmNocm9uaXplfGJhY2tncm91bmR8YmFzZW5hbWV8YmVnaW5uaW5nX29mX2lucHV0fGJpZ19pbnRfb2ZfaW50fGJpZ19pbnRfb2ZfbnVtfGJpZ19pbnRfb2Zfc3RyaW5nfGJpbmR8YmluZF9jbGFzc3xiaW5kX3RhZ3xiaXRzfGJpdHNfb2ZfZmxvYXR8YmxhY2t8YmxpdHxibGl0X2ltYWdlfGJsdWV8Ym9vbHxib29sX29mX3N0cmluZ3xib3VuZGVkX2Z1bGxfc3BsaXR8Ym91bmRlZF9zcGxpdHxib3VuZGVkX3NwbGl0X2RlbGltfGJwcmludGZ8YnJlYWt8YnJvYWRjYXN0fGJzY2FuZnxidXR0b25fZG93bnxjX2xheW91dHxjYXBpdGFsaXplfGNhcmRpbmFsfGNhcmRpbmFsfGNhdGNofGNhdGNoX2JyZWFrfGNlaWx8Y2VpbGluZ19udW18Y2hhbm5lbHxjaGFyfGNoYXJfb2ZfaW50fGNoZGlyfGNoZWNrfGNoZWNrX3N1ZmZpeHxjaG1vZHxjaG9vc2V8Y2hvcF9leHRlbnNpb258Y2hvcF9zdWZmaXh8Y2hvd258Y2hvd258Y2hyfGNocm9vdHxjbGFzc2lmeV9mbG9hdHxjbGVhcnxjbGVhcl9hdmFpbGFibGVfdW5pdHN8Y2xlYXJfY2xvc2Vfb25fZXhlY3xjbGVhcl9ncmFwaHxjbGVhcl9ub25ibG9ja3xjbGVhcl9wYXJzZXJ8Y2xvc2V8Y2xvc2V8Y2xvc2VUa3xjbG9zZV9ib3h8Y2xvc2VfZ3JhcGh8Y2xvc2VfaW58Y2xvc2VfaW5fbm9lcnJ8Y2xvc2Vfb3V0fGNsb3NlX291dF9ub2VycnxjbG9zZV9wcm9jZXNzfGNsb3NlX3Byb2Nlc3N8Y2xvc2VfcHJvY2Vzc19mdWxsfGNsb3NlX3Byb2Nlc3NfaW58Y2xvc2VfcHJvY2Vzc19vdXR8Y2xvc2Vfc3Vid2luZG93fGNsb3NlX3RhZ3xjbG9zZV90Ym94fGNsb3NlZGlyfGNsb3NlZGlyfGNsb3N1cmVfdGFnfGNvZGV8Y29tYmluZXxjb21iaW5lfGNvbWJpbmV8Y29tbWFuZHxjb21wYWN0fGNvbXBhcmV8Y29tcGFyZV9iaWdfaW50fGNvbXBhcmVfbnVtfGNvbXBsZXgzMnxjb21wbGV4NjR8Y29uY2F0fGNvbmp8Y29ubmVjdHxjb250YWluc3xjb250YWluc19mcm9tfGNvbnRlbnRzfGNvcHl8Y29zfGNvc2h8Y291bnR8Y291bnR8Y291bnRlcnN8Y3JlYXRlfGNyZWF0ZV9hbGFybXxjcmVhdGVfaW1hZ2V8Y3JlYXRlX21hdHJpeHxjcmVhdGVfbWF0cml4fGNyZWF0ZV9tYXRyaXh8Y3JlYXRlX29iamVjdHxjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzfGNyZWF0ZV9vYmplY3Rfb3B0fGNyZWF0ZV9wcm9jZXNzfGNyZWF0ZV9wcm9jZXNzfGNyZWF0ZV9wcm9jZXNzX2VudnxjcmVhdGVfcHJvY2Vzc19lbnZ8Y3JlYXRlX3RhYmxlfGN1cnJlbnR8Y3VycmVudF9kaXJfbmFtZXxjdXJyZW50X3BvaW50fGN1cnJlbnRfeHxjdXJyZW50X3l8Y3VydmV0b3xjdXN0b21fdGFnfGN5YW58ZGF0YV9zaXplfGRlY3J8ZGVjcl9udW18ZGVmYXVsdF9hdmFpbGFibGVfdW5pdHN8ZGVsYXl8ZGVsZXRlX2FsYXJtfGRlc2NyX29mX2luX2NoYW5uZWx8ZGVzY3Jfb2Zfb3V0X2NoYW5uZWx8ZGVzdHJveXxkaWZmfGRpbXxkaW0xfGRpbTJ8ZGltM3xkaW1zfGRpcm5hbWV8ZGlzcGxheV9tb2RlfGRpdnxkaXZfYmlnX2ludHxkaXZfbnVtfGRvdWJsZV9hcnJheV90YWd8ZG91YmxlX3RhZ3xkcmF3X2FyY3xkcmF3X2NoYXJ8ZHJhd19jaXJjbGV8ZHJhd19lbGxpcHNlfGRyYXdfaW1hZ2V8ZHJhd19wb2x5fGRyYXdfcG9seV9saW5lfGRyYXdfcmVjdHxkcmF3X3NlZ21lbnRzfGRyYXdfc3RyaW5nfGR1bW15X3Bvc3xkdW1teV90YWJsZXxkdW1wX2ltYWdlfGR1cHxkdXAyfGVsZW1lbnRzfGVtcHR5fGVuZF9vZl9pbnB1dHxlbnZpcm9ubWVudHxlcHJpbnRmfGVwc2lsb25fZmxvYXR8ZXFfYmlnX2ludHxlcV9udW18ZXF1YWx8ZXJyX2Zvcm1hdHRlcnxlcnJvcl9tZXNzYWdlfGVzY2FwZWR8ZXN0YWJsaXNoX3NlcnZlcnxleGVjdXRhYmxlX25hbWV8ZXhlY3Z8ZXhlY3ZlfGV4ZWN2cHxleGVjdnBlfGV4aXN0c3xleGlzdHMyfGV4aXR8ZXhwfGZhaWx3aXRofGZhc3Rfc29ydHxmY2htb2R8ZmNob3dufGZpZWxkfGZpbGV8ZmlsZV9leGlzdHN8ZmlsbHxmaWxsX2FyY3xmaWxsX2NpcmNsZXxmaWxsX2VsbGlwc2V8ZmlsbF9wb2x5fGZpbGxfcmVjdHxmaWx0ZXJ8ZmluYWxfdGFnfGZpbmFsaXNlfGZpbmR8ZmluZF9hbGx8Zmlyc3RfY2hhcnN8Zmlyc3RrZXl8ZmxhdHRlbnxmbG9hdHxmbG9hdDMyfGZsb2F0NjR8ZmxvYXRfb2ZfYmlnX2ludHxmbG9hdF9vZl9iaXRzfGZsb2F0X29mX2ludHxmbG9hdF9vZl9udW18ZmxvYXRfb2Zfc3RyaW5nfGZsb29yfGZsb29yX251bXxmbHVzaHxmbHVzaF9hbGx8Zmx1c2hfaW5wdXR8Zmx1c2hfc3RyX2Zvcm1hdHRlcnxmb2xkfGZvbGRfbGVmdHxmb2xkX2xlZnQyfGZvbGRfcmlnaHR8Zm9sZF9yaWdodDJ8Zm9yX2FsbHxmb3JfYWxsMnxmb3JjZXxmb3JjZV9uZXdsaW5lfGZvcmNlX3ZhbHxmb3JlZ3JvdW5kfGZvcmt8Zm9ybWF0X29mX3N0cmluZ3xmb3JtYXR0ZXJfb2ZfYnVmZmVyfGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbHxmb3J0cmFuX2xheW91dHxmb3J3YXJkX3RhZ3xmcHJpbnRmfGZyZXhwfGZyb218ZnJvbV9jaGFubmVsfGZyb21fZmlsZXxmcm9tX2ZpbGVfYmlufGZyb21fZnVuY3Rpb258ZnJvbV9zdHJpbmd8ZnNjYW5mfGZzdHxmc3RhdHxmdHJ1bmNhdGV8ZnVsbF9pbml0fGZ1bGxfbWFqb3J8ZnVsbF9zcGxpdHxnY2RfYmlnX2ludHxnZV9iaWdfaW50fGdlX251bXxnZW5hcnJheV9vZl9hcnJheTF8Z2VuYXJyYXlfb2ZfYXJyYXkyfGdlbmFycmF5X29mX2FycmF5M3xnZXR8Z2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uc3xnZXRfYXBwcm94X3ByaW50aW5nfGdldF9jb3B5fGdldF9lbGxpcHNpc190ZXh0fGdldF9lcnJvcl93aGVuX251bGxfZGVub21pbmF0b3J8Z2V0X2Zsb2F0aW5nX3ByZWNpc2lvbnxnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8Z2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zfGdldF9pbWFnZXxnZXRfbWFyZ2lufGdldF9tYXJrX3RhZ3N8Z2V0X21heF9ib3hlc3xnZXRfbWF4X2luZGVudHxnZXRfbWV0aG9kfGdldF9tZXRob2RfbGFiZWx8Z2V0X25vcm1hbGl6ZV9yYXRpb3xnZXRfbm9ybWFsaXplX3JhdGlvX3doZW5fcHJpbnRpbmd8Z2V0X3ByaW50X3RhZ3N8Z2V0X3N0YXRlfGdldF92YXJpYWJsZXxnZXRjd2R8Z2V0ZWdpZHxnZXRlZ2lkfGdldGVudnxnZXRlbnZ8Z2V0ZW52fGdldGV1aWR8Z2V0ZXVpZHxnZXRnaWR8Z2V0Z2lkfGdldGdyZ2lkfGdldGdyZ2lkfGdldGdybmFtfGdldGdybmFtfGdldGdyb3Vwc3xnZXRob3N0YnlhZGRyfGdldGhvc3RieW5hbWV8Z2V0aG9zdG5hbWV8Z2V0aXRpbWVyfGdldGxvZ2lufGdldHBlZXJuYW1lfGdldHBpZHxnZXRwcGlkfGdldHByb3RvYnluYW1lfGdldHByb3RvYnludW1iZXJ8Z2V0cHduYW18Z2V0cHd1aWR8Z2V0c2VydmJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldHNvY2tuYW1lfGdldHNvY2tvcHR8Z2V0c29ja29wdF9mbG9hdHxnZXRzb2Nrb3B0X2ludHxnZXRzb2Nrb3B0X29wdGludHxnZXR0aW1lb2ZkYXl8Z2V0dWlkfGdsb2JhbF9yZXBsYWNlfGdsb2JhbF9zdWJzdGl0dXRlfGdtdGltZXxncmVlbnxncmlkfGdyb3VwX2JlZ2lubmluZ3xncm91cF9lbmR8Z3RfYmlnX2ludHxndF9udW18Z3VhcmR8aGFuZGxlX3VuaXhfZXJyb3J8aGFzaHxoYXNoX3BhcmFtfGhkfGhlYWRlcl9zaXplfGl8aWR8aWdub3JlfGluX2NoYW5uZWxfbGVuZ3RofGluX2NoYW5uZWxfb2ZfZGVzY3J8aW5jcnxpbmNyX251bXxpbmRleHxpbmRleF9mcm9tfGluZXRfYWRkcl9hbnl8aW5ldF9hZGRyX29mX3N0cmluZ3xpbmZpbml0eXxpbmZpeF90YWd8aW5pdHxpbml0X2NsYXNzfGlucHV0fGlucHV0X2JpbmFyeV9pbnR8aW5wdXRfYnl0ZXxpbnB1dF9jaGFyfGlucHV0X2xpbmV8aW5wdXRfdmFsdWV8aW50fGludDE2X3NpZ25lZHxpbnQxNl91bnNpZ25lZHxpbnQzMnxpbnQ2NHxpbnQ4X3NpZ25lZHxpbnQ4X3Vuc2lnbmVkfGludF9vZl9iaWdfaW50fGludF9vZl9jaGFyfGludF9vZl9mbG9hdHxpbnRfb2ZfbnVtfGludF9vZl9zdHJpbmd8aW50ZWdlcl9udW18aW50ZXJ8aW50ZXJhY3RpdmV8aW52fGludmFsaWRfYXJnfGlzX2Jsb2NrfGlzX2VtcHR5fGlzX2ltcGxpY2l0fGlzX2ludHxpc19pbnRfYmlnX2ludHxpc19pbnRlZ2VyX251bXxpc19yZWxhdGl2ZXxpdGVyfGl0ZXIyfGl0ZXJpfGpvaW58anVua3xrZXlfcHJlc3NlZHxraWxsfGtpbmR8a3ByaW50Znxrc2NhbmZ8bGFuZHxsYXN0X2NoYXJzfGxheW91dHxsYXp5X2Zyb21fZnVufGxhenlfZnJvbV92YWx8bGF6eV9pc192YWx8bGF6eV90YWd8bGRleHB8bGVfYmlnX2ludHxsZV9udW18bGVuZ3RofGxleGVtZXxsZXhlbWVfY2hhcnxsZXhlbWVfZW5kfGxleGVtZV9lbmRfcHxsZXhlbWVfc3RhcnR8bGV4ZW1lX3N0YXJ0X3B8bGluZXRvfGxpbmt8bGlzdHxsaXN0ZW58bG5vdHxsb2FkZmlsZXxsb2FkZmlsZV9wcml2YXRlfGxvY2FsdGltZXxsb2NrfGxvY2tmfGxvZ3xsb2cxMHxsb2dhbmR8bG9nbm90fGxvZ29yfGxvZ3hvcnxsb3J8bG93ZXJfd2luZG93fGxvd2VyY2FzZXxsc2Vla3xsc2x8bHNyfGxzdGF0fGx0X2JpZ19pbnR8bHRfbnVtfGx4b3J8bWFnZW50YXxtYWdpY3xtYWluTG9vcHxtYWpvcnxtYWpvcl9zbGljZXxtYWtlfG1ha2VfZm9ybWF0dGVyfG1ha2VfaW1hZ2V8bWFrZV9sZXhlcnxtYWtlX21hdHJpeHxtYWtlX3NlbGZfaW5pdHxtYXB8bWFwMnxtYXBfZmlsZXxtYXBpfG1hcnNoYWx8bWF0Y2hfYmVnaW5uaW5nfG1hdGNoX2VuZHxtYXRjaGVkX2dyb3VwfG1hdGNoZWRfc3RyaW5nfG1heHxtYXhfYXJyYXlfbGVuZ3RofG1heF9iaWdfaW50fG1heF9lbHR8bWF4X2Zsb2F0fG1heF9pbnR8bWF4X251bXxtYXhfc3RyaW5nX2xlbmd0aHxtZW18bWVtX2Fzc29jfG1lbV9hc3NxfG1lbXF8bWVyZ2V8bWlufG1pbl9iaWdfaW50fG1pbl9lbHR8bWluX2Zsb2F0fG1pbl9pbnR8bWluX251bXxtaW5vcnxtaW51c19iaWdfaW50fG1pbnVzX251bXxtaW51c19vbmV8bWtkaXJ8bWtmaWZvfG1rdGltZXxtb2R8bW9kX2JpZ19pbnR8bW9kX2Zsb2F0fG1vZF9udW18bW9kZnxtb3VzZV9wb3N8bW92ZXRvfG11bHxtdWx0X2JpZ19pbnR8bXVsdF9pbnRfYmlnX2ludHxtdWx0X251bXxuYW58bmFycm93fG5hdF9vZl9udW18bmF0aXZlaW50fG5lZ3xuZWdfaW5maW5pdHl8bmV3X2Jsb2NrfG5ld19jaGFubmVsfG5ld19tZXRob2R8bmV3X3ZhcmlhYmxlfG5leHR8bmV4dGtleXxuaWNlfG5pY2V8bm9fc2Nhbl90YWd8bm9ybXxub3JtMnxub3R8bnBlZWt8bnRofG50aF9kaW18bnVtX2RpZ2l0c19iaWdfaW50fG51bV9kaW1zfG51bV9vZl9iaWdfaW50fG51bV9vZl9pbnR8bnVtX29mX25hdHxudW1fb2ZfcmF0aW98bnVtX29mX3N0cmluZ3xPfG9ianxvYmplY3RfdGFnfG9jYW1sX3ZlcnNpb258b2ZfYXJyYXl8b2ZfY2hhbm5lbHxvZl9mbG9hdHxvZl9pbnR8b2ZfaW50MzJ8b2ZfbGlzdHxvZl9uYXRpdmVpbnR8b2Zfc3RyaW5nfG9uZXxvcGVuVGt8b3Blbl9ib3h8b3Blbl9jb25uZWN0aW9ufG9wZW5fZ3JhcGh8b3Blbl9oYm94fG9wZW5faG92Ym94fG9wZW5faHZib3h8b3Blbl9pbnxvcGVuX2luX2JpbnxvcGVuX2luX2dlbnxvcGVuX291dHxvcGVuX291dF9iaW58b3Blbl9vdXRfZ2VufG9wZW5fcHJvY2Vzc3xvcGVuX3Byb2Nlc3NfZnVsbHxvcGVuX3Byb2Nlc3NfaW58b3Blbl9wcm9jZXNzX291dHxvcGVuX3N1YndpbmRvd3xvcGVuX3RhZ3xvcGVuX3Rib3h8b3Blbl90ZW1wX2ZpbGV8b3Blbl92Ym94fG9wZW5kYm18b3BlbmRpcnxvcGVuZmlsZXxvcnxvc190eXBlfG91dF9jaGFubmVsX2xlbmd0aHxvdXRfY2hhbm5lbF9vZl9kZXNjcnxvdXRwdXR8b3V0cHV0X2JpbmFyeV9pbnR8b3V0cHV0X2J1ZmZlcnxvdXRwdXRfYnl0ZXxvdXRwdXRfY2hhcnxvdXRwdXRfc3RyaW5nfG91dHB1dF92YWx1ZXxvdmVyX21heF9ib3hlc3xwYWNrfHBhcmFtc3xwYXJlbnRfZGlyX25hbWV8cGFyc2V8cGFyc2VfYXJndnxwYXJ0aXRpb258cGF1c2V8cGVla3xwaXBlfHBpeGVsc3xwbGFjZXxwbG90fHBsb3RzfHBvaW50X2NvbG9yfHBvbGFyfHBvbGx8cG9wfHBvc19pbnxwb3Nfb3V0fHBvd3xwb3dlcl9iaWdfaW50X3Bvc2l0aXZlX2JpZ19pbnR8cG93ZXJfYmlnX2ludF9wb3NpdGl2ZV9pbnR8cG93ZXJfaW50X3Bvc2l0aXZlX2JpZ19pbnR8cG93ZXJfaW50X3Bvc2l0aXZlX2ludHxwb3dlcl9udW18cHBfY2xvc2VfYm94fHBwX2Nsb3NlX3RhZ3xwcF9jbG9zZV90Ym94fHBwX2ZvcmNlX25ld2xpbmV8cHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uc3xwcF9nZXRfZWxsaXBzaXNfdGV4dHxwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8cHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zfHBwX2dldF9tYXJnaW58cHBfZ2V0X21hcmtfdGFnc3xwcF9nZXRfbWF4X2JveGVzfHBwX2dldF9tYXhfaW5kZW50fHBwX2dldF9wcmludF90YWdzfHBwX29wZW5fYm94fHBwX29wZW5faGJveHxwcF9vcGVuX2hvdmJveHxwcF9vcGVuX2h2Ym94fHBwX29wZW5fdGFnfHBwX29wZW5fdGJveHxwcF9vcGVuX3Zib3h8cHBfb3Zlcl9tYXhfYm94ZXN8cHBfcHJpbnRfYXN8cHBfcHJpbnRfYm9vbHxwcF9wcmludF9icmVha3xwcF9wcmludF9jaGFyfHBwX3ByaW50X2N1dHxwcF9wcmludF9mbG9hdHxwcF9wcmludF9mbHVzaHxwcF9wcmludF9pZl9uZXdsaW5lfHBwX3ByaW50X2ludHxwcF9wcmludF9uZXdsaW5lfHBwX3ByaW50X3NwYWNlfHBwX3ByaW50X3N0cmluZ3xwcF9wcmludF90YWJ8cHBfcHJpbnRfdGJyZWFrfHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8cHBfc2V0X2VsbGlwc2lzX3RleHR8cHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbHxwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8cHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zfHBwX3NldF9tYXJnaW58cHBfc2V0X21hcmtfdGFnc3xwcF9zZXRfbWF4X2JveGVzfHBwX3NldF9tYXhfaW5kZW50fHBwX3NldF9wcmludF90YWdzfHBwX3NldF90YWJ8cHBfc2V0X3RhZ3N8cHJlZHxwcmVkX2JpZ19pbnR8cHJlZF9udW18cHJlcnJfY2hhcnxwcmVycl9lbmRsaW5lfHByZXJyX2Zsb2F0fHByZXJyX2ludHxwcmVycl9uZXdsaW5lfHByZXJyX3N0cmluZ3xwcmludHxwcmludF9hc3xwcmludF9ib29sfHByaW50X2JyZWFrfHByaW50X2NoYXJ8cHJpbnRfY3V0fHByaW50X2VuZGxpbmV8cHJpbnRfZmxvYXR8cHJpbnRfZmx1c2h8cHJpbnRfaWZfbmV3bGluZXxwcmludF9pbnR8cHJpbnRfbmV3bGluZXxwcmludF9zcGFjZXxwcmludF9zdGF0fHByaW50X3N0cmluZ3xwcmludF90YWJ8cHJpbnRfdGJyZWFrfHByaW50Znxwcm9oaWJpdHxwdWJsaWNfbWV0aG9kX2xhYmVsfHB1c2h8cHV0ZW52fHF1b19udW18cXVvbW9kX2JpZ19pbnR8cXVvdGV8cmFpc2V8cmFpc2Vfd2luZG93fHJhdGlvX29mX251bXxyY29udGFpbnNfZnJvbXxyZWFkfHJlYWRfZmxvYXR8cmVhZF9pbnR8cmVhZF9rZXl8cmVhZF9saW5lfHJlYWRkaXJ8cmVhZGRpcnxyZWFkbGlua3xyZWFsbHlfaW5wdXR8cmVjZWl2ZXxyZWN2fHJlY3Zmcm9tfHJlZHxyZWZ8cmVnZXhwfHJlZ2V4cF9jYXNlX2ZvbGR8cmVnZXhwX3N0cmluZ3xyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZHxyZWdpc3RlcnxyZWdpc3Rlcl9leGNlcHRpb258cmVtfHJlbWVtYmVyX21vZGV8cmVtb3ZlfHJlbW92ZV9hc3NvY3xyZW1vdmVfYXNzcXxyZW5hbWV8cmVwbGFjZXxyZXBsYWNlX2ZpcnN0fHJlcGxhY2VfbWF0Y2hlZHxyZXByfHJlc2V0fHJlc2hhcGV8cmVzaGFwZV8xfHJlc2hhcGVfMnxyZXNoYXBlXzN8cmV2fHJldl9hcHBlbmR8cmV2X21hcHxyZXZfbWFwMnxyZXdpbmRkaXJ8cmdifHJoc19lbmR8cmhzX2VuZF9wb3N8cmhzX3N0YXJ0fHJoc19zdGFydF9wb3N8cmluZGV4fHJpbmRleF9mcm9tfHJsaW5ldG98cm1kaXJ8cm1vdmV0b3xyb3VuZF9udW18cnVuX2luaXRpYWxpemVyc3xydW5faW5pdGlhbGl6ZXJzX29wdHxzY2FuZnxzZWFyY2hfYmFja3dhcmR8c2VhcmNoX2ZvcndhcmR8c2Vla19pbnxzZWVrX291dHxzZWxlY3R8c2VsZnxzZWxmX2luaXR8c2VuZHxzZW5kdG98c2V0fHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8c2V0X2FwcHJveF9wcmludGluZ3xzZXRfYmluYXJ5X21vZGVfaW58c2V0X2JpbmFyeV9tb2RlX291dHxzZXRfY2xvc2Vfb25fZXhlY3xzZXRfY2xvc2Vfb25fZXhlY3xzZXRfY29sb3J8c2V0X2VsbGlwc2lzX3RleHR8c2V0X2Vycm9yX3doZW5fbnVsbF9kZW5vbWluYXRvcnxzZXRfZmllbGR8c2V0X2Zsb2F0aW5nX3ByZWNpc2lvbnxzZXRfZm9udHxzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsfHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uc3xzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnN8c2V0X2xpbmVfd2lkdGh8c2V0X21hcmdpbnxzZXRfbWFya190YWdzfHNldF9tYXhfYm94ZXN8c2V0X21heF9pbmRlbnR8c2V0X21ldGhvZHxzZXRfbm9uYmxvY2t8c2V0X25vbmJsb2NrfHNldF9ub3JtYWxpemVfcmF0aW98c2V0X25vcm1hbGl6ZV9yYXRpb193aGVuX3ByaW50aW5nfHNldF9wcmludF90YWdzfHNldF9zaWduYWx8c2V0X3N0YXRlfHNldF90YWJ8c2V0X3RhZ3xzZXRfdGFnc3xzZXRfdGV4dF9zaXplfHNldF93aW5kb3dfdGl0bGV8c2V0Z2lkfHNldGdpZHxzZXRpdGltZXJ8c2V0aXRpbWVyfHNldHNpZHxzZXRzaWR8c2V0c29ja29wdHxzZXRzb2Nrb3B0fHNldHNvY2tvcHRfZmxvYXR8c2V0c29ja29wdF9mbG9hdHxzZXRzb2Nrb3B0X2ludHxzZXRzb2Nrb3B0X2ludHxzZXRzb2Nrb3B0X29wdGludHxzZXRzb2Nrb3B0X29wdGludHxzZXR1aWR8c2V0dWlkfHNoaWZ0X2xlZnR8c2hpZnRfbGVmdHxzaGlmdF9sZWZ0fHNoaWZ0X3JpZ2h0fHNoaWZ0X3JpZ2h0fHNoaWZ0X3JpZ2h0fHNoaWZ0X3JpZ2h0X2xvZ2ljYWx8c2hpZnRfcmlnaHRfbG9naWNhbHxzaGlmdF9yaWdodF9sb2dpY2FsfHNob3dfYnVja2V0c3xzaHV0ZG93bnxzaHV0ZG93bnxzaHV0ZG93bl9jb25uZWN0aW9ufHNodXRkb3duX2Nvbm5lY3Rpb258c2lnYWJydHxzaWdhbHJtfHNpZ2NobGR8c2lnY29udHxzaWdmcGV8c2lnaHVwfHNpZ2lsbHxzaWdpbnR8c2lna2lsbHxzaWduX2JpZ19pbnR8c2lnbl9udW18c2lnbmFsfHNpZ25hbHxzaWdwZW5kaW5nfHNpZ3BlbmRpbmd8c2lncGlwZXxzaWdwcm9jbWFza3xzaWdwcm9jbWFza3xzaWdwcm9mfHNpZ3F1aXR8c2lnc2VndnxzaWdzdG9wfHNpZ3N1c3BlbmR8c2lnc3VzcGVuZHxzaWd0ZXJtfHNpZ3RzdHB8c2lndHRpbnxzaWd0dG91fHNpZ3VzcjF8c2lndXNyMnxzaWd2dGFscm18c2lufHNpbmdsZXRvbnxzaW5ofHNpemV8c2l6ZXxzaXplX3h8c2l6ZV95fHNsZWVwfHNsZWVwfHNsZWVwfHNsaWNlX2xlZnR8c2xpY2VfbGVmdHxzbGljZV9sZWZ0XzF8c2xpY2VfbGVmdF8yfHNsaWNlX3JpZ2h0fHNsaWNlX3JpZ2h0fHNsaWNlX3JpZ2h0XzF8c2xpY2VfcmlnaHRfMnxzbmR8c29ja2V0fHNvY2tldHxzb2NrZXR8c29ja2V0cGFpcnxzb2NrZXRwYWlyfHNvcnR8c291bmR8c3BsaXR8c3BsaXRfZGVsaW18c3ByaW50ZnxzcHJpbnRmfHNxcnR8c3FydHxzcXJ0X2JpZ19pbnR8c3F1YXJlX2JpZ19pbnR8c3F1YXJlX251bXxzc2NhbmZ8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhdHxzdGF0fHN0YXR8c3RhdHxzdGF0fHN0YXRzfHN0YXRzfHN0ZF9mb3JtYXR0ZXJ8c3RkYnVmfHN0ZGVycnxzdGRlcnJ8c3RkZXJyfHN0ZGlifHN0ZGlufHN0ZGlufHN0ZGlufHN0ZG91dHxzdGRvdXR8c3Rkb3V0fHN0cl9mb3JtYXR0ZXJ8c3RyaW5nfHN0cmluZ19hZnRlcnxzdHJpbmdfYmVmb3JlfHN0cmluZ19tYXRjaHxzdHJpbmdfb2ZfYmlnX2ludHxzdHJpbmdfb2ZfYm9vbHxzdHJpbmdfb2ZfZmxvYXR8c3RyaW5nX29mX2Zvcm1hdHxzdHJpbmdfb2ZfaW5ldF9hZGRyfHN0cmluZ19vZl9pbmV0X2FkZHJ8c3RyaW5nX29mX2ludHxzdHJpbmdfb2ZfbnVtfHN0cmluZ19wYXJ0aWFsX21hdGNofHN0cmluZ190YWd8c3VifHN1YnxzdWJfYmlnX2ludHxzdWJfbGVmdHxzdWJfbnVtfHN1Yl9yaWdodHxzdWJzZXR8c3Vic2V0fHN1YnN0aXR1dGVfZmlyc3R8c3Vic3RyaW5nfHN1Y2N8c3VjY3xzdWNjfHN1Y2N8c3VjY19iaWdfaW50fHN1Y2NfbnVtfHN5bWJvbF9lbmR8c3ltYm9sX2VuZF9wb3N8c3ltYm9sX3N0YXJ0fHN5bWJvbF9zdGFydF9wb3N8c3ltbGlua3xzeW1saW5rfHN5bmN8c3luY2hyb25pemV8c3lzdGVtfHN5c3RlbXxzeXN0ZW18dGFnfHRha2V8dGFufHRhbmh8dGNkcmFpbnx0Y2RyYWlufHRjZmxvd3x0Y2Zsb3d8dGNmbHVzaHx0Y2ZsdXNofHRjZ2V0YXR0cnx0Y2dldGF0dHJ8dGNzZW5kYnJlYWt8dGNzZW5kYnJlYWt8dGNzZXRhdHRyfHRjc2V0YXR0cnx0ZW1wX2ZpbGV8dGV4dF9zaXplfHRpbWV8dGltZXx0aW1lfHRpbWVkX3JlYWR8dGltZWRfd3JpdGV8dGltZXN8dGltZXN8dGx8dGx8dGx8dG9fYnVmZmVyfHRvX2NoYW5uZWx8dG9fZmxvYXR8dG9faGV4fHRvX2ludHx0b19pbnQzMnx0b19saXN0fHRvX2xpc3R8dG9fbGlzdHx0b19uYXRpdmVpbnR8dG9fc3RyaW5nfHRvX3N0cmluZ3x0b19zdHJpbmd8dG9fc3RyaW5nfHRvX3N0cmluZ3x0b3B8dG9wfHRvdGFsX3NpemV8dHJhbnNmZXJ8dHJhbnNwfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRyeV9sb2NrfHVtYXNrfHVtYXNrfHVuY2FwaXRhbGl6ZXx1bmNhcGl0YWxpemV8dW5jYXBpdGFsaXplfHVuaW9ufHVuaW9ufHVuaXRfYmlnX2ludHx1bmxpbmt8dW5saW5rfHVubG9ja3x1bm1hcnNoYWx8dW5zYWZlX2JsaXR8dW5zYWZlX2ZpbGx8dW5zYWZlX2dldHx1bnNhZmVfZ2V0fHVuc2FmZV9zZXR8dW5zYWZlX3NldHx1cGRhdGV8dXBwZXJjYXNlfHVwcGVyY2FzZXx1cHBlcmNhc2V8dXBwZXJjYXNlfHVzYWdlfHV0aW1lc3x1dGltZXN8d2FpdHx3YWl0fHdhaXR8d2FpdHx3YWl0X25leHRfZXZlbnR8d2FpdF9waWR8d2FpdF9yZWFkfHdhaXRfc2lnbmFsfHdhaXRfdGltZWRfcmVhZHx3YWl0X3RpbWVkX3dyaXRlfHdhaXRfd3JpdGV8d2FpdHBpZHx3aGl0ZXx3aWRlbnx3aW5kb3dfaWR8d29yZF9zaXplfHdyYXB8d3JhcF9hYm9ydHx3cml0ZXx5ZWxsb3d8eWllbGR8emVyb3x6ZXJvX2JpZ19pbnR8QXJnfEFyaXRoX3N0YXR1c3xBcnJheXxBcnJheTF8QXJyYXkyfEFycmF5M3xBcnJheUxhYmVsc3xCaWdfaW50fEJpZ2FycmF5fEJ1ZmZlcnxDYWxsYmFja3xDYW1saW50ZXJuYWxPT3xDaGFyfENvbXBsZXh8Q29uZGl0aW9ufERibXxEaWdlc3R8RHlubGlua3xFdmVudHxGaWxlbmFtZXxGb3JtYXR8R2N8R2VuYXJyYXl8R2VubGV4fEdyYXBoaWNzfEdyYXBoaWNzWDExfEhhc2h0Ymx8SW50MzJ8SW50NjR8TGFyZ2VGaWxlfExhenl8TGV4aW5nfExpc3R8TGlzdExhYmVsc3xNYWtlfE1hcHxNYXJzaGFsfE1vcmVMYWJlbHN8TXV0ZXh8TmF0aXZlaW50fE51bXxPYmp8T298UGFyc2luZ3xQZXJ2YXNpdmVzfFByaW50ZXhjfFByaW50ZnxRdWV1ZXxSYW5kb218U2NhbmZ8U2Nhbm5pbmd8U2V0fFNvcnR8U3RhY2t8U3RhdGV8U3RkTGFiZWxzfFN0cnxTdHJlYW18U3RyaW5nfFN0cmluZ0xhYmVsc3xTeXN8VGhyZWFkfFRocmVhZFVuaXh8VGt8VW5peHxVbml4TGFiZWxzfFdlYWsiLnNwbGl0KCJ8IikpLGQ9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixmPSIoPzowW29PXT9bMC03XSspIixnPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLGg9Iig/OjBbYkJdWzAxXSspIixpPSIoPzoiK2QrInwiK2YrInwiK2crInwiK2grIikiLGo9Iig/OltlRV1bKy1dP1xcZCspIixrPSIoPzpcXC5cXGQrKSIsbD0iKD86XFxkKykiLG09Iig/Oig/OiIrbCsiPyIraysiKXwoPzoiK2wrIlxcLikpIixuPSIoPzooPzoiK20rInwiK2wrIikiK2orIikiLG89Iig/OiIrbisifCIrbSsiKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXChcXCouKj9cXCpcXClcXHMqPyQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXChcXCouKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4nIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiciJyxuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiKD86IitvKyJ8XFxkKylbakpdXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpvfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OmkrIlxcYiJ9LHt0b2tlbjpmdW5jdGlvbihkKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShkKT8ia2V5d29yZCI6Yi5oYXNPd25Qcm9wZXJ0eShkKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmMuaGFzT3duUHJvcGVydHkoZCk/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK1xcLnxcXC1cXC58XFwqXFwufFxcL1xcLnwjfDs7fFxcK3xcXC18XFwqfFxcKlxcKlxcL3xcXC9cXC98JXw8PHw+PnwmfFxcfHxcXF58fnw8fD58PD18PT58PT18IT18PD58PC18PSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcKSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6JyInLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLk9jYW1sSGlnaGxpZ2h0UnVsZXM9Z30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-perl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9wZXJsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3BlcmxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL3BlcmxfaGlnaGxpZ2h0X3J1bGVzIikuUGVybEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuLi9yYW5nZSIpLlJhbmdlLGo9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGs9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBqfTtkLmluaGVyaXRzKGssZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMCxmPS9eKFxzKikjLztmb3IodmFyIGc9YztnPD1kO2crKylpZighZi50ZXN0KGIuZ2V0TGluZShnKSkpe2U9ITE7YnJlYWt9aWYoZSl7dmFyIGg9bmV3IGkoMCwwLDAsMCk7Zm9yKHZhciBnPWM7Zzw9ZDtnKyspe3ZhciBqPWIuZ2V0TGluZShnKSxrPWoubWF0Y2goZik7aC5zdGFydC5yb3c9ZyxoLmVuZC5yb3c9ZyxoLmVuZC5jb2x1bW49a1swXS5sZW5ndGgsYi5yZXBsYWNlKGgsa1sxXSl9fWVsc2UgYi5pbmRlbnRSb3dzKGMsZCwiIyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnM7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCIpe3ZhciBnPWIubWF0Y2goL14uKltce1woXFtcOl1ccyokLyk7ZyYmKGQrPWMpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX19LmNhbGwoay5wcm90b3R5cGUpLGIuTW9kZT1rfSksZGVmaW5lKCJhY2UvbW9kZS9wZXJsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYmFzZXxjb25zdGFudHxjb250aW51ZXxlbHNlfGVsc2lmfGZvcnxmb3JlYWNofGZvcm1hdHxnb3RvfGlmfGxhc3R8bG9jYWx8bXl8bmV4dHxub3xwYWNrYWdlfHBhcmVudHxyZWRvfHJlcXVpcmV8c2NhbGFyfHN1Ynx1bmxlc3N8dW50aWx8d2hpbGV8dXNlfHZhcnMiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJBUkdWfEVOVnxJTkN8U0lHIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgiZ2V0cHJvdG9ieW51bWJlcnxnZXRwcm90b2J5bmFtZXxnZXRzZXJ2YnluYW1lfGdldGhvc3RieWFkZHJ8Z2V0aG9zdGJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldG5ldGJ5YWRkcnxnZXRuZXRieW5hbWV8Z2V0c29ja25hbWV8Z2V0cGVlcm5hbWV8c2V0cHJpb3JpdHl8Z2V0cHJvdG9lbnR8c2V0cHJvdG9lbnR8Z2V0cHJpb3JpdHl8ZW5kcHJvdG9lbnR8Z2V0c2VydmVudHxzZXRzZXJ2ZW50fGVuZHNlcnZlbnR8c2V0aG9zdGVudHxzb2NrZXRwYWlyfGdldHNvY2tvcHR8Z2V0aG9zdGVudHxlbmRob3N0ZW50fHNldHNvY2tvcHR8c2V0bmV0ZW50fHF1b3RlbWV0YXxsb2NhbHRpbWV8cHJvdG90eXBlfGdldG5ldGVudHxlbmRuZXRlbnR8cmV3aW5kZGlyfHdhbnRhcnJheXxnZXRwd3VpZHxjbG9zZWRpcnxnZXRsb2dpbnxyZWFkbGlua3xlbmRncmVudHxnZXRncmdpZHxnZXRncm5hbXxzaG13cml0ZXxzaHV0ZG93bnxyZWFkbGluZXxlbmRwd2VudHxzZXRncmVudHxyZWFkcGlwZXxmb3JtbGluZXx0cnVuY2F0ZXxkYm1jbG9zZXxzeXN3cml0ZXxzZXRwd2VudHxnZXRwd25hbXxnZXRncmVudHxnZXRwd2VudHx1Y2ZpcnN0fHN5c3JlYWR8c2V0cGdycHxzaG1yZWFkfHN5c3NlZWt8c3lzb3Blbnx0ZWxsZGlyfGRlZmluZWR8b3BlbmRpcnxjb25uZWN0fGxjZmlyc3R8Z2V0cHBpZHxiaW5tb2RlfHN5c2NhbGx8c3ByaW50ZnxnZXRwZ3JwfHJlYWRkaXJ8c2Vla2Rpcnx3YWl0cGlkfHJldmVyc2V8dW5zaGlmdHxzeW1saW5rfGRibW9wZW58c2VtZ2V0fG1zZ3JjdnxyZW5hbWV8bGlzdGVufGNocm9vdHxtc2dzbmR8c2htY3RsfGFjY2VwdHx1bnBhY2t8ZXhpc3RzfGZpbGVub3xzaG1nZXR8c3lzdGVtfHVubGlua3xwcmludGZ8Z210aW1lfG1zZ2N0bHxzZW1jdGx8dmFsdWVzfHJpbmRleHxzdWJzdHJ8c3BsaWNlfGxlbmd0aHxtc2dnZXR8c2VsZWN0fHNvY2tldHxyZXR1cm58Y2FsbGVyfGRlbGV0ZXxhbGFybXxpb2N0bHxpbmRleHx1bmRlZnxsc3RhdHx0aW1lc3xzcmFuZHxjaG93bnxmY250bHxjbG9zZXx3cml0ZXx1bWFza3xybWRpcnxzdHVkeXxzbGVlcHxjaG9tcHx1bnRpZXxwcmludHx1dGltZXxta2RpcnxhdGFuMnxzcGxpdHxjcnlwdHxmbG9ja3xjaG1vZHxCRUdJTnxibGVzc3xjaGRpcnxzZW1vcHxzaGlmdHxyZXNldHxsaW5rfHN0YXR8Y2hvcHxncmVwfGZvcmt8ZHVtcHxqb2lufG9wZW58dGVsbHxwaXBlfGV4aXR8Z2xvYnx3YXJufGVhY2h8YmluZHxzb3J0fHBhY2t8ZXZhbHxwdXNofGtleXN8Z2V0Y3xraWxsfHNlZWt8c3FydHxzZW5kfHdhaXR8cmFuZHx0aWVkfHJlYWR8dGltZXxleGVjfHJlY3Z8ZW9mfGNocnxpbnR8b3JkfGV4cHxwb3N8cG9wfHNpbnxsb2d8YWJzfG9jdHxoZXh8dGllfGNvc3x2ZWN8RU5EfHJlZnxtYXB8ZGllfHVjfGxjfGRvIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OidbIl0uKlxcXFwkJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLipcXFxcJCIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjB4WzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ZnVuY3Rpb24oZCl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoZCk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoZCk/ImNvbnN0YW50Lmxhbmd1YWdlIjpjLmhhc093blByb3BlcnR5KGQpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXC5cXC5cXC58XFx8XFx8PXw+Pj18PDw9fDw9PnwmJj18PT58IX58XFxePXwmPXxcXHw9fFxcLj18eD18JT18XFwvPXxcXCo9fFxcLT18XFwrPXw9fnxcXCpcXCp8XFwtXFwtfFxcLlxcLnxcXHxcXHx8JiZ8XFwrXFwrfFxcLT58IT18PT18Pj18PD18Pj58PDx8LHw9fFxcP1xcOnxcXF58XFx8fHh8JXxcXC98XFwqfDx8JnxcXFxcfH58IXw+fFxcLnxcXC18XFwrfFxcLUN8XFwtYnxcXC1TfFxcLXV8XFwtdHxcXC1wfFxcLWx8XFwtZHxcXC1mfFxcLWd8XFwtc3xcXC16fFxcLWt8XFwtZXxcXC1PfFxcLVR8XFwtQnxcXC1NfFxcLUF8XFwtWHxcXC1XfFxcLWN8XFwtUnxcXC1vfFxcLXh8XFwtd3xcXC1yfFxcYig/OmFuZHxjbXB8ZXF8Z2V8Z3R8bGV8bHR8bmV8bm90fG9yfHhvcikifSx7dG9rZW46ImxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLlBlcmxIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL3JhbmdlIikuUmFuZ2UsZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4vXlxzKyQvLnRlc3QoYSk/L15ccypcfS8udGVzdChiKTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0TGluZShiKSxlPWMubWF0Y2goL14oXHMqXH0pLyk7aWYoIWUpcmV0dXJuIDA7dmFyIGY9ZVsxXS5sZW5ndGgsZz1hLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpiLGNvbHVtbjpmfSk7aWYoIWd8fGcucm93PT1iKXJldHVybiAwO3ZhciBoPXRoaXMuJGdldEluZGVudChhLmdldExpbmUoZy5yb3cpKTthLnJlcGxhY2UobmV3IGQoYiwwLGIsZi0xKSxoKX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14oXHMrKS8pO3JldHVybiBiP2JbMV06IiJ9fSkuY2FsbChlLnByb3RvdHlwZSksYi5NYXRjaGluZ0JyYWNlT3V0ZGVudD1lfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-pgsql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9wZ3NxbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9wZ3NxbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiYWNlL2xpYi9vb3AiKSxlPWEoImFjZS9tb2RlL3RleHQiKS5Nb2RlLGY9YSgiYWNlL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoImFjZS9tb2RlL3Bnc3FsX2hpZ2hsaWdodF9ydWxlcyIpLlBnc3FsSGlnaGxpZ2h0UnVsZXMsaD1hKCJhY2UvcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSl9O2QuaW5oZXJpdHMoaSxlKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSEwLGY9L14oXHMqKS0tLztmb3IodmFyIGc9YztnPD1kO2crKylpZighZi50ZXN0KGIuZ2V0TGluZShnKSkpe2U9ITE7YnJlYWt9aWYoZSl7dmFyIGk9bmV3IGgoMCwwLDAsMCk7Zm9yKHZhciBnPWM7Zzw9ZDtnKyspe3ZhciBqPWIuZ2V0TGluZShnKSxrPWoubWF0Y2goZik7aS5zdGFydC5yb3c9ZyxpLmVuZC5yb3c9ZyxpLmVuZC5jb2x1bW49a1swXS5sZW5ndGgsYi5yZXBsYWNlKGksa1sxXSl9fWVsc2UgYi5pbmRlbnRSb3dzKGMsZCwiLS0iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGE9PSJzdGFydCJ8fGE9PSJrZXl3b3JkLnN0YXRlbWVudEVuZCI/IiI6dGhpcy4kZ2V0SW5kZW50KGIpfX0uY2FsbChpLnByb3RvdHlwZSksYi5Nb2RlPWl9KSxkZWZpbmUoImFjZS9tb2RlL3Bnc3FsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9wZXJsX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3B5dGhvbl9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiYWNlL2xpYi9vb3AiKSxlPWEoImFjZS9saWIvbGFuZyIpLGY9YSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsZz1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9wZXJsX2hpZ2hsaWdodF9ydWxlcyIpLlBlcmxIaWdobGlnaHRSdWxlcyxpPWEoIi4vcHl0aG9uX2hpZ2hsaWdodF9ydWxlcyIpLlB5dGhvbkhpZ2hsaWdodFJ1bGVzLGo9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoImFib3J0fGFic29sdXRlfGFic3RpbWV8YWNjZXNzfGFjbGl0ZW18YWN0aW9ufGFkZHxhZG1pbnxhZnRlcnxhZ2dyZWdhdGV8YWxsfGFsc298YWx0ZXJ8YWx3YXlzfGFuYWx5c2V8YW5hbHl6ZXxhbmR8YW55fGFueWFycmF5fGFueWVsZW1lbnR8YW55ZW51bXxhbnlub25hcnJheXxhcnJheXxhc3xhc2N8YXNzZXJ0aW9ufGFzc2lnbm1lbnR8YXN5bW1ldHJpY3xhdHxhdHRyaWJ1dGV8YXV0aG9yaXphdGlvbnxiYWNrd2FyZHxiZWZvcmV8YmVnaW58YmV0d2VlbnxiaWdpbnR8YmluYXJ5fGJpdHxib29sfGJvb2xlYW58Ym90aHxib3h8YnBjaGFyfGJ5fGJ5dGVhfGNhY2hlfGNhbGxlZHxjYXNjYWRlfGNhc2NhZGVkfGNhc2V8Y2FzdHxjYXRhbG9nfGNoYWlufGNoYXJ8Y2hhcmFjdGVyfGNoYXJhY3RlcmlzdGljc3xjaGVja3xjaGVja3BvaW50fGNpZHxjaWRyfGNpcmNsZXxjbGFzc3xjbG9zZXxjbHVzdGVyfGNvYWxlc2NlfGNvbGxhdGV8Y29sbGF0aW9ufGNvbHVtbnxjb21tZW50fGNvbW1lbnRzfGNvbW1pdHxjb21taXR0ZWR8Y29uY3VycmVudGx5fGNvbmZpZ3VyYXRpb258Y29ubmVjdGlvbnxjb25zdHJhaW50fGNvbnN0cmFpbnRzfGNvbnRlbnR8Y29udGludWV8Y29udmVyc2lvbnxjb3B5fGNvc3R8Y3JlYXRlfGNyb3NzfGNzdHJpbmd8Y3N2fGN1cnJlbnR8Y3VycmVudF9jYXRhbG9nfGN1cnJlbnRfZGF0ZXxjdXJyZW50X3JvbGV8Y3VycmVudF9zY2hlbWF8Y3VycmVudF90aW1lfGN1cnJlbnRfdGltZXN0YW1wfGN1cnJlbnRfdXNlcnxjdXJzb3J8Y3ljbGV8ZGF0YXxkYXRhYmFzZXxkYXRlfGRheXxkZWFsbG9jYXRlfGRlY3xkZWNpbWFsfGRlY2xhcmV8ZGVmYXVsdHxkZWZhdWx0c3xkZWZlcnJhYmxlfGRlZmVycmVkfGRlZmluZXJ8ZGVsZXRlfGRlbGltaXRlcnxkZWxpbWl0ZXJzfGRlc2N8ZGljdGlvbmFyeXxkaXNhYmxlfGRpc2NhcmR8ZGlzdGluY3R8ZG98ZG9jdW1lbnR8ZG9tYWlufGRvdWJsZXxkcm9wfGVhY2h8ZWxzZXxlbmFibGV8ZW5jb2Rpbmd8ZW5jcnlwdGVkfGVuZHxlbnVtfGVzY2FwZXxleGNlcHR8ZXhjbHVkZXxleGNsdWRpbmd8ZXhjbHVzaXZlfGV4ZWN1dGV8ZXhpc3RzfGV4cGxhaW58ZXh0ZW5zaW9ufGV4dGVybmFsfGV4dHJhY3R8ZmFsc2V8ZmFtaWx5fGZkd19oYW5kbGVyfGZldGNofGZpcnN0fGZsb2F0fGZsb2F0NHxmbG9hdDh8Zm9sbG93aW5nfGZvcnxmb3JjZXxmb3JlaWdufGZvcndhcmR8ZnJlZXplfGZyb218ZnVsbHxmdW5jdGlvbnxmdW5jdGlvbnN8Z2xvYmFsfGdyYW50fGdyYW50ZWR8Z3JlYXRlc3R8Z3JvdXB8Z3RzdmVjdG9yfGhhbmRsZXJ8aGF2aW5nfGhlYWRlcnxob2xkfGhvdXJ8aWRlbnRpdHl8aWZ8aWxpa2V8aW1tZWRpYXRlfGltbXV0YWJsZXxpbXBsaWNpdHxpbnxpbmNsdWRpbmd8aW5jcmVtZW50fGluZGV4fGluZGV4ZXN8aW5ldHxpbmhlcml0fGluaGVyaXRzfGluaXRpYWxseXxpbmxpbmV8aW5uZXJ8aW5vdXR8aW5wdXR8aW5zZW5zaXRpdmV8aW5zZXJ0fGluc3RlYWR8aW50fGludDJ8aW50MnZlY3RvcnxpbnQ0fGludDh8aW50ZWdlcnxpbnRlcm5hbHxpbnRlcnNlY3R8aW50ZXJ2YWx8aW50b3xpbnZva2VyfGlzfGlzbnVsbHxpc29sYXRpb258am9pbnxrZXl8bGFiZWx8bGFuZ3VhZ2V8bGFuZ3VhZ2VfaGFuZGxlcnxsYXJnZXxsYXN0fGxjX2NvbGxhdGV8bGNfY3R5cGV8bGVhZGluZ3xsZWFzdHxsZWZ0fGxldmVsfGxpa2V8bGltaXR8bGluZXxsaXN0ZW58bG9hZHxsb2NhbHxsb2NhbHRpbWV8bG9jYWx0aW1lc3RhbXB8bG9jYXRpb258bG9ja3xsc2VnfG1hY2FkZHJ8bWFwcGluZ3xtYXRjaHxtYXh2YWx1ZXxtaW51dGV8bWludmFsdWV8bW9kZXxtb25leXxtb250aHxtb3ZlfG5hbWV8bmFtZXN8bmF0aW9uYWx8bmF0dXJhbHxuY2hhcnxuZXh0fG5vfG5vbmV8bm90fG5vdGhpbmd8bm90aWZ5fG5vdG51bGx8bm93YWl0fG51bGx8bnVsbGlmfG51bGxzfG51bWVyaWN8b2JqZWN0fG9mfG9mZnxvZmZzZXR8b2lkfG9pZHN8b2lkdmVjdG9yfG9ufG9ubHl8b3BhcXVlfG9wZXJhdG9yfG9wdGlvbnxvcHRpb25zfG9yfG9yZGVyfG91dHxvdXRlcnxvdmVyfG92ZXJsYXBzfG92ZXJsYXl8b3duZWR8b3duZXJ8cGFyc2VyfHBhcnRpYWx8cGFydGl0aW9ufHBhc3Npbmd8cGFzc3dvcmR8cGF0aHxwZ19hdHRyaWJ1dGV8cGdfYXV0aF9tZW1iZXJzfHBnX2F1dGhpZHxwZ19jbGFzc3xwZ19kYXRhYmFzZXxwZ19ub2RlX3RyZWV8cGdfcHJvY3xwZ190eXBlfHBsYWNpbmd8cGxhbnN8cG9pbnR8cG9seWdvbnxwb3NpdGlvbnxwcmVjZWRpbmd8cHJlY2lzaW9ufHByZXBhcmV8cHJlcGFyZWR8cHJlc2VydmV8cHJpbWFyeXxwcmlvcnxwcml2aWxlZ2VzfHByb2NlZHVyYWx8cHJvY2VkdXJlfHF1b3RlfHJhbmdlfHJlYWR8cmVhbHxyZWFzc2lnbnxyZWNoZWNrfHJlY29yZHxyZWN1cnNpdmV8cmVmfHJlZmN1cnNvcnxyZWZlcmVuY2VzfHJlZ2NsYXNzfHJlZ2NvbmZpZ3xyZWdkaWN0aW9uYXJ5fHJlZ29wZXJ8cmVnb3BlcmF0b3J8cmVncHJvY3xyZWdwcm9jZWR1cmV8cmVndHlwZXxyZWluZGV4fHJlbGF0aXZlfHJlbGVhc2V8cmVsdGltZXxyZW5hbWV8cmVwZWF0YWJsZXxyZXBsYWNlfHJlcGxpY2F8cmVzZXR8cmVzdGFydHxyZXN0cmljdHxyZXR1cm5pbmd8cmV0dXJuc3xyZXZva2V8cmlnaHR8cm9sZXxyb2xsYmFja3xyb3d8cm93c3xydWxlfHNhdmVwb2ludHxzY2hlbWF8c2Nyb2xsfHNlYXJjaHxzZWNvbmR8c2VjdXJpdHl8c2VsZWN0fHNlcXVlbmNlfHNlcXVlbmNlc3xzZXJpYWxpemFibGV8c2VydmVyfHNlc3Npb258c2Vzc2lvbl91c2VyfHNldHxzZXRvZnxzaGFyZXxzaG93fHNpbWlsYXJ8c2ltcGxlfHNtYWxsaW50fHNtZ3J8c29tZXxzdGFibGV8c3RhbmRhbG9uZXxzdGFydHxzdGF0ZW1lbnR8c3RhdGlzdGljc3xzdGRpbnxzdGRvdXR8c3RvcmFnZXxzdHJpY3R8c3RyaXB8c3Vic3RyaW5nfHN5bW1ldHJpY3xzeXNpZHxzeXN0ZW18dGFibGV8dGFibGVzfHRhYmxlc3BhY2V8dGVtcHx0ZW1wbGF0ZXx0ZW1wb3Jhcnl8dGV4dHx0aGVufHRpZHx0aW1lfHRpbWVzdGFtcHx0aW1lc3RhbXB0enx0aW1ldHp8dGludGVydmFsfHRvfHRyYWlsaW5nfHRyYW5zYWN0aW9ufHRyZWF0fHRyaWdnZXJ8dHJpbXx0cnVlfHRydW5jYXRlfHRydXN0ZWR8dHNxdWVyeXx0c3ZlY3Rvcnx0eGlkX3NuYXBzaG90fHR5cGV8dW5ib3VuZGVkfHVuY29tbWl0dGVkfHVuZW5jcnlwdGVkfHVuaW9ufHVuaXF1ZXx1bmtub3dufHVubGlzdGVufHVubG9nZ2VkfHVudGlsfHVwZGF0ZXx1c2VyfHVzaW5nfHV1aWR8dmFjdXVtfHZhbGlkfHZhbGlkYXRlfHZhbGlkYXRvcnx2YWx1ZXx2YWx1ZXN8dmFyYml0fHZhcmNoYXJ8dmFyaWFkaWN8dmFyeWluZ3x2ZXJib3NlfHZlcnNpb258dmlld3x2b2lkfHZvbGF0aWxlfHdoZW58d2hlcmV8d2hpdGVzcGFjZXx3aW5kb3d8d2l0aHx3aXRob3V0fHdvcmt8d3JhcHBlcnx3cml0ZXx4aWR8eG1sfHhtbGF0dHJpYnV0ZXN8eG1sY29uY2F0fHhtbGVsZW1lbnR8eG1sZXhpc3RzfHhtbGZvcmVzdHx4bWxwYXJzZXx4bWxwaXx4bWxyb290fHhtbHNlcmlhbGl6ZXx5ZWFyfHllc3x6b25lIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgiUklfRktleV9jYXNjYWRlX2RlbHxSSV9GS2V5X2Nhc2NhZGVfdXBkfFJJX0ZLZXlfY2hlY2tfaW5zfFJJX0ZLZXlfY2hlY2tfdXBkfFJJX0ZLZXlfbm9hY3Rpb25fZGVsfFJJX0ZLZXlfbm9hY3Rpb25fdXBkfFJJX0ZLZXlfcmVzdHJpY3RfZGVsfFJJX0ZLZXlfcmVzdHJpY3RfdXBkfFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWx8UklfRktleV9zZXRkZWZhdWx0X3VwZHxSSV9GS2V5X3NldG51bGxfZGVsfFJJX0ZLZXlfc2V0bnVsbF91cGR8YWJicmV2fGFic3xhYnN0aW1lfGFic3RpbWVlcXxhYnN0aW1lZ2V8YWJzdGltZWd0fGFic3RpbWVpbnxhYnN0aW1lbGV8YWJzdGltZWx0fGFic3RpbWVuZXxhYnN0aW1lb3V0fGFic3RpbWVyZWN2fGFic3RpbWVzZW5kfGFjbGNvbnRhaW5zfGFjbGV4cGxvZGV8YWNsaW5zZXJ0fGFjbGl0ZW1lcXxhY2xpdGVtaW58YWNsaXRlbW91dHxhY2xyZW1vdmV8YWNvc3xhZ2V8YW55X2lufGFueV9vdXR8YW55YXJyYXlfaW58YW55YXJyYXlfb3V0fGFueWFycmF5X3JlY3Z8YW55YXJyYXlfc2VuZHxhbnllbGVtZW50X2lufGFueWVsZW1lbnRfb3V0fGFueWVudW1faW58YW55ZW51bV9vdXR8YW55bm9uYXJyYXlfaW58YW55bm9uYXJyYXlfb3V0fGFueXRleHRjYXR8YXJlYXxhcmVham9pbnNlbHxhcmVhc2VsfGFycmF5X2FnZ3xhcnJheV9hZ2dfZmluYWxmbnxhcnJheV9hZ2dfdHJhbnNmbnxhcnJheV9hcHBlbmR8YXJyYXlfY2F0fGFycmF5X2RpbXN8YXJyYXlfZXF8YXJyYXlfZmlsbHxhcnJheV9nZXxhcnJheV9ndHxhcnJheV9pbnxhcnJheV9sYXJnZXJ8YXJyYXlfbGV8YXJyYXlfbGVuZ3RofGFycmF5X2xvd2VyfGFycmF5X2x0fGFycmF5X25kaW1zfGFycmF5X25lfGFycmF5X291dHxhcnJheV9wcmVwZW5kfGFycmF5X3JlY3Z8YXJyYXlfc2VuZHxhcnJheV9zbWFsbGVyfGFycmF5X3RvX3N0cmluZ3xhcnJheV91cHBlcnxhcnJheWNvbnRhaW5lZHxhcnJheWNvbnRhaW5zfGFycmF5b3ZlcmxhcHxhc2NpaXxhc2NpaV90b19taWN8YXNjaWlfdG9fdXRmOHxhc2lufGF0YW58YXRhbjJ8YXZnfGJpZzVfdG9fZXVjX3R3fGJpZzVfdG9fbWljfGJpZzVfdG9fdXRmOHxiaXRfYW5kfGJpdF9pbnxiaXRfbGVuZ3RofGJpdF9vcnxiaXRfb3V0fGJpdF9yZWN2fGJpdF9zZW5kfGJpdGFuZHxiaXRjYXR8Yml0Y21wfGJpdGVxfGJpdGdlfGJpdGd0fGJpdGxlfGJpdGx0fGJpdG5lfGJpdG5vdHxiaXRvcnxiaXRzaGlmdGxlZnR8Yml0c2hpZnRyaWdodHxiaXR0eXBtb2RpbnxiaXR0eXBtb2RvdXR8Yml0eG9yfGJvb2x8Ym9vbF9hbmR8Ym9vbF9vcnxib29sYW5kX3N0YXRlZnVuY3xib29sZXF8Ym9vbGdlfGJvb2xndHxib29saW58Ym9vbGxlfGJvb2xsdHxib29sbmV8Ym9vbG9yX3N0YXRlZnVuY3xib29sb3V0fGJvb2xyZWN2fGJvb2xzZW5kfGJveHxib3hfYWJvdmV8Ym94X2Fib3ZlX2VxfGJveF9hZGR8Ym94X2JlbG93fGJveF9iZWxvd19lcXxib3hfY2VudGVyfGJveF9jb250YWlufGJveF9jb250YWluX3B0fGJveF9jb250YWluZWR8Ym94X2Rpc3RhbmNlfGJveF9kaXZ8Ym94X2VxfGJveF9nZXxib3hfZ3R8Ym94X2lufGJveF9pbnRlcnNlY3R8Ym94X2xlfGJveF9sZWZ0fGJveF9sdHxib3hfbXVsfGJveF9vdXR8Ym94X292ZXJhYm92ZXxib3hfb3ZlcmJlbG93fGJveF9vdmVybGFwfGJveF9vdmVybGVmdHxib3hfb3ZlcnJpZ2h0fGJveF9yZWN2fGJveF9yaWdodHxib3hfc2FtZXxib3hfc2VuZHxib3hfc3VifGJwY2hhcl9sYXJnZXJ8YnBjaGFyX3BhdHRlcm5fZ2V8YnBjaGFyX3BhdHRlcm5fZ3R8YnBjaGFyX3BhdHRlcm5fbGV8YnBjaGFyX3BhdHRlcm5fbHR8YnBjaGFyX3NtYWxsZXJ8YnBjaGFyY21wfGJwY2hhcmVxfGJwY2hhcmdlfGJwY2hhcmd0fGJwY2hhcmljbGlrZXxicGNoYXJpY25saWtlfGJwY2hhcmljcmVnZXhlcXxicGNoYXJpY3JlZ2V4bmV8YnBjaGFyaW58YnBjaGFybGV8YnBjaGFybGlrZXxicGNoYXJsdHxicGNoYXJuZXxicGNoYXJubGlrZXxicGNoYXJvdXR8YnBjaGFycmVjdnxicGNoYXJyZWdleGVxfGJwY2hhcnJlZ2V4bmV8YnBjaGFyc2VuZHxicGNoYXJ0eXBtb2RpbnxicGNoYXJ0eXBtb2RvdXR8YnJvYWRjYXN0fGJ0YWJzdGltZWNtcHxidGFycmF5Y21wfGJ0YmVnaW5zY2FufGJ0Ym9vbGNtcHxidGJwY2hhcl9wYXR0ZXJuX2NtcHxidGJ1aWxkfGJ0YnVpbGRlbXB0eXxidGJ1bGtkZWxldGV8YnRjaGFyY21wfGJ0Y29zdGVzdGltYXRlfGJ0ZW5kc2NhbnxidGZsb2F0NDhjbXB8YnRmbG9hdDRjbXB8YnRmbG9hdDg0Y21wfGJ0ZmxvYXQ4Y21wfGJ0Z2V0Yml0bWFwfGJ0Z2V0dHVwbGV8YnRpbnNlcnR8YnRpbnQyNGNtcHxidGludDI4Y21wfGJ0aW50MmNtcHxidGludDQyY21wfGJ0aW50NDhjbXB8YnRpbnQ0Y21wfGJ0aW50ODJjbXB8YnRpbnQ4NGNtcHxidGludDhjbXB8YnRtYXJrcG9zfGJ0bmFtZWNtcHxidG9pZGNtcHxidG9pZHZlY3RvcmNtcHxidG9wdGlvbnN8YnRyZWNvcmRjbXB8YnRyZWx0aW1lY21wfGJ0cmVzY2FufGJ0cmVzdHJwb3N8YnRyaW18YnR0ZXh0X3BhdHRlcm5fY21wfGJ0dGV4dGNtcHxidHRpZGNtcHxidHRpbnRlcnZhbGNtcHxidHZhY3V1bWNsZWFudXB8Ynl0ZWFjYXR8Ynl0ZWFjbXB8Ynl0ZWFlcXxieXRlYWdlfGJ5dGVhZ3R8Ynl0ZWFpbnxieXRlYWxlfGJ5dGVhbGlrZXxieXRlYWx0fGJ5dGVhbmV8Ynl0ZWFubGlrZXxieXRlYW91dHxieXRlYXJlY3Z8Ynl0ZWFzZW5kfGNhc2hfY21wfGNhc2hfZGl2X2Nhc2h8Y2FzaF9kaXZfZmx0NHxjYXNoX2Rpdl9mbHQ4fGNhc2hfZGl2X2ludDJ8Y2FzaF9kaXZfaW50NHxjYXNoX2VxfGNhc2hfZ2V8Y2FzaF9ndHxjYXNoX2lufGNhc2hfbGV8Y2FzaF9sdHxjYXNoX21pfGNhc2hfbXVsX2ZsdDR8Y2FzaF9tdWxfZmx0OHxjYXNoX211bF9pbnQyfGNhc2hfbXVsX2ludDR8Y2FzaF9uZXxjYXNoX291dHxjYXNoX3BsfGNhc2hfcmVjdnxjYXNoX3NlbmR8Y2FzaF93b3Jkc3xjYXNobGFyZ2VyfGNhc2hzbWFsbGVyfGNicnR8Y2VpbHxjZWlsaW5nfGNlbnRlcnxjaGFyfGNoYXJfbGVuZ3RofGNoYXJhY3Rlcl9sZW5ndGh8Y2hhcmVxfGNoYXJnZXxjaGFyZ3R8Y2hhcmlufGNoYXJsZXxjaGFybHR8Y2hhcm5lfGNoYXJvdXR8Y2hhcnJlY3Z8Y2hhcnNlbmR8Y2hyfGNpZGVxfGNpZGlufGNpZG91dHxjaWRyfGNpZHJfaW58Y2lkcl9vdXR8Y2lkcl9yZWN2fGNpZHJfc2VuZHxjaWRyZWN2fGNpZHNlbmR8Y2lyY2xlfGNpcmNsZV9hYm92ZXxjaXJjbGVfYWRkX3B0fGNpcmNsZV9iZWxvd3xjaXJjbGVfY2VudGVyfGNpcmNsZV9jb250YWlufGNpcmNsZV9jb250YWluX3B0fGNpcmNsZV9jb250YWluZWR8Y2lyY2xlX2Rpc3RhbmNlfGNpcmNsZV9kaXZfcHR8Y2lyY2xlX2VxfGNpcmNsZV9nZXxjaXJjbGVfZ3R8Y2lyY2xlX2lufGNpcmNsZV9sZXxjaXJjbGVfbGVmdHxjaXJjbGVfbHR8Y2lyY2xlX211bF9wdHxjaXJjbGVfbmV8Y2lyY2xlX291dHxjaXJjbGVfb3ZlcmFib3ZlfGNpcmNsZV9vdmVyYmVsb3d8Y2lyY2xlX292ZXJsYXB8Y2lyY2xlX292ZXJsZWZ0fGNpcmNsZV9vdmVycmlnaHR8Y2lyY2xlX3JlY3Z8Y2lyY2xlX3JpZ2h0fGNpcmNsZV9zYW1lfGNpcmNsZV9zZW5kfGNpcmNsZV9zdWJfcHR8Y2xvY2tfdGltZXN0YW1wfGNsb3NlX2xifGNsb3NlX2xzfGNsb3NlX2xzZWd8Y2xvc2VfcGJ8Y2xvc2VfcGx8Y2xvc2VfcHN8Y2xvc2Vfc2J8Y2xvc2Vfc2x8Y29sX2Rlc2NyaXB0aW9ufGNvbmNhdHxjb25jYXRfd3N8Y29udGpvaW5zZWx8Y29udHNlbHxjb252ZXJ0fGNvbnZlcnRfZnJvbXxjb252ZXJ0X3RvfGNvcnJ8Y29zfGNvdHxjb3VudHxjb3Zhcl9wb3B8Y292YXJfc2FtcHxjc3RyaW5nX2lufGNzdHJpbmdfb3V0fGNzdHJpbmdfcmVjdnxjc3RyaW5nX3NlbmR8Y3VtZV9kaXN0fGN1cnJlbnRfZGF0YWJhc2V8Y3VycmVudF9xdWVyeXxjdXJyZW50X3NjaGVtYXxjdXJyZW50X3NjaGVtYXN8Y3VycmVudF9zZXR0aW5nfGN1cnJlbnRfdXNlcnxjdXJydGlkfGN1cnJ0aWQyfGN1cnJ2YWx8Y3Vyc29yX3RvX3htbHxjdXJzb3JfdG9feG1sc2NoZW1hfGRhdGFiYXNlX3RvX3htbHxkYXRhYmFzZV90b194bWxfYW5kX3htbHNjaGVtYXxkYXRhYmFzZV90b194bWxzY2hlbWF8ZGF0ZXxkYXRlX2NtcHxkYXRlX2NtcF90aW1lc3RhbXB8ZGF0ZV9jbXBfdGltZXN0YW1wdHp8ZGF0ZV9lcXxkYXRlX2VxX3RpbWVzdGFtcHxkYXRlX2VxX3RpbWVzdGFtcHR6fGRhdGVfZ2V8ZGF0ZV9nZV90aW1lc3RhbXB8ZGF0ZV9nZV90aW1lc3RhbXB0enxkYXRlX2d0fGRhdGVfZ3RfdGltZXN0YW1wfGRhdGVfZ3RfdGltZXN0YW1wdHp8ZGF0ZV9pbnxkYXRlX2xhcmdlcnxkYXRlX2xlfGRhdGVfbGVfdGltZXN0YW1wfGRhdGVfbGVfdGltZXN0YW1wdHp8ZGF0ZV9sdHxkYXRlX2x0X3RpbWVzdGFtcHxkYXRlX2x0X3RpbWVzdGFtcHR6fGRhdGVfbWl8ZGF0ZV9taV9pbnRlcnZhbHxkYXRlX21paXxkYXRlX25lfGRhdGVfbmVfdGltZXN0YW1wfGRhdGVfbmVfdGltZXN0YW1wdHp8ZGF0ZV9vdXR8ZGF0ZV9wYXJ0fGRhdGVfcGxfaW50ZXJ2YWx8ZGF0ZV9wbGl8ZGF0ZV9yZWN2fGRhdGVfc2VuZHxkYXRlX3NtYWxsZXJ8ZGF0ZV90cnVuY3xkYXRldGltZV9wbHxkYXRldGltZXR6X3BsfGRjYnJ0fGRlY29kZXxkZWdyZWVzfGRlbnNlX3Jhbmt8ZGV4cHxkaWFnb25hbHxkaWFtZXRlcnxkaXNwZWxsX2luaXR8ZGlzcGVsbF9sZXhpemV8ZGlzdF9jcG9seXxkaXN0X2xifGRpc3RfcGJ8ZGlzdF9wY3xkaXN0X3BsfGRpc3RfcHBhdGh8ZGlzdF9wc3xkaXN0X3NifGRpc3Rfc2x8ZGl2fGRsb2cxfGRsb2cxMHxkb21haW5faW58ZG9tYWluX3JlY3Z8ZHBvd3xkcm91bmR8ZHNpbXBsZV9pbml0fGRzaW1wbGVfbGV4aXplfGRzbm93YmFsbF9pbml0fGRzbm93YmFsbF9sZXhpemV8ZHNxcnR8ZHN5bm9ueW1faW5pdHxkc3lub255bV9sZXhpemV8ZHRydW5jfGVuY29kZXxlbnVtX2NtcHxlbnVtX2VxfGVudW1fZmlyc3R8ZW51bV9nZXxlbnVtX2d0fGVudW1faW58ZW51bV9sYXJnZXJ8ZW51bV9sYXN0fGVudW1fbGV8ZW51bV9sdHxlbnVtX25lfGVudW1fb3V0fGVudW1fcmFuZ2V8ZW51bV9yZWN2fGVudW1fc2VuZHxlbnVtX3NtYWxsZXJ8ZXFqb2luc2VsfGVxc2VsfGV1Y19jbl90b19taWN8ZXVjX2NuX3RvX3V0Zjh8ZXVjX2ppc18yMDA0X3RvX3NoaWZ0X2ppc18yMDA0fGV1Y19qaXNfMjAwNF90b191dGY4fGV1Y19qcF90b19taWN8ZXVjX2pwX3RvX3NqaXN8ZXVjX2pwX3RvX3V0Zjh8ZXVjX2tyX3RvX21pY3xldWNfa3JfdG9fdXRmOHxldWNfdHdfdG9fYmlnNXxldWNfdHdfdG9fbWljfGV1Y190d190b191dGY4fGV2ZXJ5fGV4cHxmYWN0b3JpYWx8ZmFtaWx5fGZkd19oYW5kbGVyX2lufGZkd19oYW5kbGVyX291dHxmaXJzdF92YWx1ZXxmbG9hdDR8ZmxvYXQ0OGRpdnxmbG9hdDQ4ZXF8ZmxvYXQ0OGdlfGZsb2F0NDhndHxmbG9hdDQ4bGV8ZmxvYXQ0OGx0fGZsb2F0NDhtaXxmbG9hdDQ4bXVsfGZsb2F0NDhuZXxmbG9hdDQ4cGx8ZmxvYXQ0X2FjY3VtfGZsb2F0NGFic3xmbG9hdDRkaXZ8ZmxvYXQ0ZXF8ZmxvYXQ0Z2V8ZmxvYXQ0Z3R8ZmxvYXQ0aW58ZmxvYXQ0bGFyZ2VyfGZsb2F0NGxlfGZsb2F0NGx0fGZsb2F0NG1pfGZsb2F0NG11bHxmbG9hdDRuZXxmbG9hdDRvdXR8ZmxvYXQ0cGx8ZmxvYXQ0cmVjdnxmbG9hdDRzZW5kfGZsb2F0NHNtYWxsZXJ8ZmxvYXQ0dW18ZmxvYXQ0dXB8ZmxvYXQ4fGZsb2F0ODRkaXZ8ZmxvYXQ4NGVxfGZsb2F0ODRnZXxmbG9hdDg0Z3R8ZmxvYXQ4NGxlfGZsb2F0ODRsdHxmbG9hdDg0bWl8ZmxvYXQ4NG11bHxmbG9hdDg0bmV8ZmxvYXQ4NHBsfGZsb2F0OF9hY2N1bXxmbG9hdDhfYXZnfGZsb2F0OF9jb3JyfGZsb2F0OF9jb3Zhcl9wb3B8ZmxvYXQ4X2NvdmFyX3NhbXB8ZmxvYXQ4X3JlZ3JfYWNjdW18ZmxvYXQ4X3JlZ3JfYXZneHxmbG9hdDhfcmVncl9hdmd5fGZsb2F0OF9yZWdyX2ludGVyY2VwdHxmbG9hdDhfcmVncl9yMnxmbG9hdDhfcmVncl9zbG9wZXxmbG9hdDhfcmVncl9zeHh8ZmxvYXQ4X3JlZ3Jfc3h5fGZsb2F0OF9yZWdyX3N5eXxmbG9hdDhfc3RkZGV2X3BvcHxmbG9hdDhfc3RkZGV2X3NhbXB8ZmxvYXQ4X3Zhcl9wb3B8ZmxvYXQ4X3Zhcl9zYW1wfGZsb2F0OGFic3xmbG9hdDhkaXZ8ZmxvYXQ4ZXF8ZmxvYXQ4Z2V8ZmxvYXQ4Z3R8ZmxvYXQ4aW58ZmxvYXQ4bGFyZ2VyfGZsb2F0OGxlfGZsb2F0OGx0fGZsb2F0OG1pfGZsb2F0OG11bHxmbG9hdDhuZXxmbG9hdDhvdXR8ZmxvYXQ4cGx8ZmxvYXQ4cmVjdnxmbG9hdDhzZW5kfGZsb2F0OHNtYWxsZXJ8ZmxvYXQ4dW18ZmxvYXQ4dXB8Zmxvb3J8Zmx0NF9tdWxfY2FzaHxmbHQ4X211bF9jYXNofGZtZ3JfY192YWxpZGF0b3J8Zm1ncl9pbnRlcm5hbF92YWxpZGF0b3J8Zm1ncl9zcWxfdmFsaWRhdG9yfGZvcm1hdHxmb3JtYXRfdHlwZXxnYjE4MDMwX3RvX3V0Zjh8Z2JrX3RvX3V0Zjh8Z2VuZXJhdGVfc2VyaWVzfGdlbmVyYXRlX3N1YnNjcmlwdHN8Z2V0X2JpdHxnZXRfYnl0ZXxnZXRfY3VycmVudF90c19jb25maWd8Z2V0ZGF0YWJhc2VlbmNvZGluZ3xnZXRwZ3VzZXJuYW1lfGdpbl9jbXBfcHJlZml4fGdpbl9jbXBfdHNsZXhlbWV8Z2luX2V4dHJhY3RfdHNxdWVyeXxnaW5fZXh0cmFjdF90c3ZlY3RvcnxnaW5fdHNxdWVyeV9jb25zaXN0ZW50fGdpbmFycmF5Y29uc2lzdGVudHxnaW5hcnJheWV4dHJhY3R8Z2luYmVnaW5zY2FufGdpbmJ1aWxkfGdpbmJ1aWxkZW1wdHl8Z2luYnVsa2RlbGV0ZXxnaW5jb3N0ZXN0aW1hdGV8Z2luZW5kc2NhbnxnaW5nZXRiaXRtYXB8Z2luaW5zZXJ0fGdpbm1hcmtwb3N8Z2lub3B0aW9uc3xnaW5xdWVyeWFycmF5ZXh0cmFjdHxnaW5yZXNjYW58Z2lucmVzdHJwb3N8Z2ludmFjdXVtY2xlYW51cHxnaXN0X2JveF9jb21wcmVzc3xnaXN0X2JveF9jb25zaXN0ZW50fGdpc3RfYm94X2RlY29tcHJlc3N8Z2lzdF9ib3hfcGVuYWx0eXxnaXN0X2JveF9waWNrc3BsaXR8Z2lzdF9ib3hfc2FtZXxnaXN0X2JveF91bmlvbnxnaXN0X2NpcmNsZV9jb21wcmVzc3xnaXN0X2NpcmNsZV9jb25zaXN0ZW50fGdpc3RfcG9pbnRfY29tcHJlc3N8Z2lzdF9wb2ludF9jb25zaXN0ZW50fGdpc3RfcG9pbnRfZGlzdGFuY2V8Z2lzdF9wb2x5X2NvbXByZXNzfGdpc3RfcG9seV9jb25zaXN0ZW50fGdpc3RiZWdpbnNjYW58Z2lzdGJ1aWxkfGdpc3RidWlsZGVtcHR5fGdpc3RidWxrZGVsZXRlfGdpc3Rjb3N0ZXN0aW1hdGV8Z2lzdGVuZHNjYW58Z2lzdGdldGJpdG1hcHxnaXN0Z2V0dHVwbGV8Z2lzdGluc2VydHxnaXN0bWFya3Bvc3xnaXN0b3B0aW9uc3xnaXN0cmVzY2FufGdpc3RyZXN0cnBvc3xnaXN0dmFjdXVtY2xlYW51cHxndHNxdWVyeV9jb21wcmVzc3xndHNxdWVyeV9jb25zaXN0ZW50fGd0c3F1ZXJ5X2RlY29tcHJlc3N8Z3RzcXVlcnlfcGVuYWx0eXxndHNxdWVyeV9waWNrc3BsaXR8Z3RzcXVlcnlfc2FtZXxndHNxdWVyeV91bmlvbnxndHN2ZWN0b3JfY29tcHJlc3N8Z3RzdmVjdG9yX2NvbnNpc3RlbnR8Z3RzdmVjdG9yX2RlY29tcHJlc3N8Z3RzdmVjdG9yX3BlbmFsdHl8Z3RzdmVjdG9yX3BpY2tzcGxpdHxndHN2ZWN0b3Jfc2FtZXxndHN2ZWN0b3JfdW5pb258Z3RzdmVjdG9yaW58Z3RzdmVjdG9yb3V0fGhhc19hbnlfY29sdW1uX3ByaXZpbGVnZXxoYXNfY29sdW1uX3ByaXZpbGVnZXxoYXNfZGF0YWJhc2VfcHJpdmlsZWdlfGhhc19mb3JlaWduX2RhdGFfd3JhcHBlcl9wcml2aWxlZ2V8aGFzX2Z1bmN0aW9uX3ByaXZpbGVnZXxoYXNfbGFuZ3VhZ2VfcHJpdmlsZWdlfGhhc19zY2hlbWFfcHJpdmlsZWdlfGhhc19zZXF1ZW5jZV9wcml2aWxlZ2V8aGFzX3NlcnZlcl9wcml2aWxlZ2V8aGFzX3RhYmxlX3ByaXZpbGVnZXxoYXNfdGFibGVzcGFjZV9wcml2aWxlZ2V8aGFzaF9hY2xpdGVtfGhhc2hfYXJyYXl8aGFzaF9udW1lcmljfGhhc2hiZWdpbnNjYW58aGFzaGJwY2hhcnxoYXNoYnVpbGR8aGFzaGJ1aWxkZW1wdHl8aGFzaGJ1bGtkZWxldGV8aGFzaGNoYXJ8aGFzaGNvc3Rlc3RpbWF0ZXxoYXNoZW5kc2NhbnxoYXNoZW51bXxoYXNoZmxvYXQ0fGhhc2hmbG9hdDh8aGFzaGdldGJpdG1hcHxoYXNoZ2V0dHVwbGV8aGFzaGluZXR8aGFzaGluc2VydHxoYXNoaW50MnxoYXNoaW50MnZlY3RvcnxoYXNoaW50NHxoYXNoaW50OHxoYXNobWFjYWRkcnxoYXNobWFya3Bvc3xoYXNobmFtZXxoYXNob2lkfGhhc2hvaWR2ZWN0b3J8aGFzaG9wdGlvbnN8aGFzaHJlc2NhbnxoYXNocmVzdHJwb3N8aGFzaHRleHR8aGFzaHZhY3V1bWNsZWFudXB8aGFzaHZhcmxlbmF8aGVpZ2h0fGhvc3R8aG9zdG1hc2t8aWNsaWtlam9pbnNlbHxpY2xpa2VzZWx8aWNubGlrZWpvaW5zZWx8aWNubGlrZXNlbHxpY3JlZ2V4ZXFqb2luc2VsfGljcmVnZXhlcXNlbHxpY3JlZ2V4bmVqb2luc2VsfGljcmVnZXhuZXNlbHxpbmV0X2NsaWVudF9hZGRyfGluZXRfY2xpZW50X3BvcnR8aW5ldF9pbnxpbmV0X291dHxpbmV0X3JlY3Z8aW5ldF9zZW5kfGluZXRfc2VydmVyX2FkZHJ8aW5ldF9zZXJ2ZXJfcG9ydHxpbmV0YW5kfGluZXRtaXxpbmV0bWlfaW50OHxpbmV0bm90fGluZXRvcnxpbmV0cGx8aW5pdGNhcHxpbnQyfGludDI0ZGl2fGludDI0ZXF8aW50MjRnZXxpbnQyNGd0fGludDI0bGV8aW50MjRsdHxpbnQyNG1pfGludDI0bXVsfGludDI0bmV8aW50MjRwbHxpbnQyOGRpdnxpbnQyOGVxfGludDI4Z2V8aW50MjhndHxpbnQyOGxlfGludDI4bHR8aW50MjhtaXxpbnQyOG11bHxpbnQyOG5lfGludDI4cGx8aW50Ml9hY2N1bXxpbnQyX2F2Z19hY2N1bXxpbnQyX211bF9jYXNofGludDJfc3VtfGludDJhYnN8aW50MmFuZHxpbnQyZGl2fGludDJlcXxpbnQyZ2V8aW50Mmd0fGludDJpbnxpbnQybGFyZ2VyfGludDJsZXxpbnQybHR8aW50Mm1pfGludDJtb2R8aW50Mm11bHxpbnQybmV8aW50Mm5vdHxpbnQyb3J8aW50Mm91dHxpbnQycGx8aW50MnJlY3Z8aW50MnNlbmR8aW50MnNobHxpbnQyc2hyfGludDJzbWFsbGVyfGludDJ1bXxpbnQydXB8aW50MnZlY3RvcmVxfGludDJ2ZWN0b3JpbnxpbnQydmVjdG9yb3V0fGludDJ2ZWN0b3JyZWN2fGludDJ2ZWN0b3JzZW5kfGludDJ4b3J8aW50NHxpbnQ0MmRpdnxpbnQ0MmVxfGludDQyZ2V8aW50NDJndHxpbnQ0MmxlfGludDQybHR8aW50NDJtaXxpbnQ0Mm11bHxpbnQ0Mm5lfGludDQycGx8aW50NDhkaXZ8aW50NDhlcXxpbnQ0OGdlfGludDQ4Z3R8aW50NDhsZXxpbnQ0OGx0fGludDQ4bWl8aW50NDhtdWx8aW50NDhuZXxpbnQ0OHBsfGludDRfYWNjdW18aW50NF9hdmdfYWNjdW18aW50NF9tdWxfY2FzaHxpbnQ0X3N1bXxpbnQ0YWJzfGludDRhbmR8aW50NGRpdnxpbnQ0ZXF8aW50NGdlfGludDRndHxpbnQ0aW58aW50NGluY3xpbnQ0bGFyZ2VyfGludDRsZXxpbnQ0bHR8aW50NG1pfGludDRtb2R8aW50NG11bHxpbnQ0bmV8aW50NG5vdHxpbnQ0b3J8aW50NG91dHxpbnQ0cGx8aW50NHJlY3Z8aW50NHNlbmR8aW50NHNobHxpbnQ0c2hyfGludDRzbWFsbGVyfGludDR1bXxpbnQ0dXB8aW50NHhvcnxpbnQ4fGludDgyZGl2fGludDgyZXF8aW50ODJnZXxpbnQ4Mmd0fGludDgybGV8aW50ODJsdHxpbnQ4Mm1pfGludDgybXVsfGludDgybmV8aW50ODJwbHxpbnQ4NGRpdnxpbnQ4NGVxfGludDg0Z2V8aW50ODRndHxpbnQ4NGxlfGludDg0bHR8aW50ODRtaXxpbnQ4NG11bHxpbnQ4NG5lfGludDg0cGx8aW50OF9hY2N1bXxpbnQ4X2F2Z3xpbnQ4X2F2Z19hY2N1bXxpbnQ4X3N1bXxpbnQ4YWJzfGludDhhbmR8aW50OGRpdnxpbnQ4ZXF8aW50OGdlfGludDhndHxpbnQ4aW58aW50OGluY3xpbnQ4aW5jX2FueXxpbnQ4aW5jX2Zsb2F0OF9mbG9hdDh8aW50OGxhcmdlcnxpbnQ4bGV8aW50OGx0fGludDhtaXxpbnQ4bW9kfGludDhtdWx8aW50OG5lfGludDhub3R8aW50OG9yfGludDhvdXR8aW50OHBsfGludDhwbF9pbmV0fGludDhyZWN2fGludDhzZW5kfGludDhzaGx8aW50OHNocnxpbnQ4c21hbGxlcnxpbnQ4dW18aW50OHVwfGludDh4b3J8aW50ZWdlcl9wbF9kYXRlfGludGVyX2xifGludGVyX3NifGludGVyX3NsfGludGVybmFsX2lufGludGVybmFsX291dHxpbnRlcnZhbF9hY2N1bXxpbnRlcnZhbF9hdmd8aW50ZXJ2YWxfY21wfGludGVydmFsX2RpdnxpbnRlcnZhbF9lcXxpbnRlcnZhbF9nZXxpbnRlcnZhbF9ndHxpbnRlcnZhbF9oYXNofGludGVydmFsX2lufGludGVydmFsX2xhcmdlcnxpbnRlcnZhbF9sZXxpbnRlcnZhbF9sdHxpbnRlcnZhbF9taXxpbnRlcnZhbF9tdWx8aW50ZXJ2YWxfbmV8aW50ZXJ2YWxfb3V0fGludGVydmFsX3BsfGludGVydmFsX3BsX2RhdGV8aW50ZXJ2YWxfcGxfdGltZXxpbnRlcnZhbF9wbF90aW1lc3RhbXB8aW50ZXJ2YWxfcGxfdGltZXN0YW1wdHp8aW50ZXJ2YWxfcGxfdGltZXR6fGludGVydmFsX3JlY3Z8aW50ZXJ2YWxfc2VuZHxpbnRlcnZhbF9zbWFsbGVyfGludGVydmFsX3VtfGludGVydmFsdHlwbW9kaW58aW50ZXJ2YWx0eXBtb2RvdXR8aW50aW50ZXJ2YWx8aXNjbG9zZWR8aXNmaW5pdGV8aXNob3Jpem9udGFsfGlzbzg4NTlfMV90b191dGY4fGlzbzg4NTlfdG9fdXRmOHxpc29fdG9fa29pOHJ8aXNvX3RvX21pY3xpc29fdG9fd2luMTI1MXxpc29fdG9fd2luODY2fGlzb3Blbnxpc3BhcmFsbGVsfGlzcGVycHxpc3ZlcnRpY2FsfGpvaGFiX3RvX3V0Zjh8anVzdGlmeV9kYXlzfGp1c3RpZnlfaG91cnN8anVzdGlmeV9pbnRlcnZhbHxrb2k4cl90b19pc298a29pOHJfdG9fbWljfGtvaThyX3RvX3V0Zjh8a29pOHJfdG9fd2luMTI1MXxrb2k4cl90b193aW44NjZ8a29pOHVfdG9fdXRmOHxsYWd8bGFuZ3VhZ2VfaGFuZGxlcl9pbnxsYW5ndWFnZV9oYW5kbGVyX291dHxsYXN0X3ZhbHVlfGxhc3R2YWx8bGF0aW4xX3RvX21pY3xsYXRpbjJfdG9fbWljfGxhdGluMl90b193aW4xMjUwfGxhdGluM190b19taWN8bGF0aW40X3RvX21pY3xsZWFkfGxlZnR8bGVuZ3RofGxpa2V8bGlrZV9lc2NhcGV8bGlrZWpvaW5zZWx8bGlrZXNlbHxsaW5lfGxpbmVfZGlzdGFuY2V8bGluZV9lcXxsaW5lX2hvcml6b250YWx8bGluZV9pbnxsaW5lX2ludGVycHR8bGluZV9pbnRlcnNlY3R8bGluZV9vdXR8bGluZV9wYXJhbGxlbHxsaW5lX3BlcnB8bGluZV9yZWN2fGxpbmVfc2VuZHxsaW5lX3ZlcnRpY2FsfGxufGxvX2Nsb3NlfGxvX2NyZWF0fGxvX2NyZWF0ZXxsb19leHBvcnR8bG9faW1wb3J0fGxvX2xzZWVrfGxvX29wZW58bG9fdGVsbHxsb190cnVuY2F0ZXxsb191bmxpbmt8bG9nfGxvcmVhZHxsb3dlcnxsb3dyaXRlfGxwYWR8bHNlZ3xsc2VnX2NlbnRlcnxsc2VnX2Rpc3RhbmNlfGxzZWdfZXF8bHNlZ19nZXxsc2VnX2d0fGxzZWdfaG9yaXpvbnRhbHxsc2VnX2lufGxzZWdfaW50ZXJwdHxsc2VnX2ludGVyc2VjdHxsc2VnX2xlfGxzZWdfbGVuZ3RofGxzZWdfbHR8bHNlZ19uZXxsc2VnX291dHxsc2VnX3BhcmFsbGVsfGxzZWdfcGVycHxsc2VnX3JlY3Z8bHNlZ19zZW5kfGxzZWdfdmVydGljYWx8bHRyaW18bWFjYWRkcl9jbXB8bWFjYWRkcl9lcXxtYWNhZGRyX2dlfG1hY2FkZHJfZ3R8bWFjYWRkcl9pbnxtYWNhZGRyX2xlfG1hY2FkZHJfbHR8bWFjYWRkcl9uZXxtYWNhZGRyX291dHxtYWNhZGRyX3JlY3Z8bWFjYWRkcl9zZW5kfG1ha2VhY2xpdGVtfG1hc2tsZW58bWF4fG1kNXxtaWNfdG9fYXNjaWl8bWljX3RvX2JpZzV8bWljX3RvX2V1Y19jbnxtaWNfdG9fZXVjX2pwfG1pY190b19ldWNfa3J8bWljX3RvX2V1Y190d3xtaWNfdG9faXNvfG1pY190b19rb2k4cnxtaWNfdG9fbGF0aW4xfG1pY190b19sYXRpbjJ8bWljX3RvX2xhdGluM3xtaWNfdG9fbGF0aW40fG1pY190b19zamlzfG1pY190b193aW4xMjUwfG1pY190b193aW4xMjUxfG1pY190b193aW44NjZ8bWlufG1rdGludGVydmFsfG1vZHxtb25leXxtdWxfZF9pbnRlcnZhbHxuYW1lfG5hbWVlcXxuYW1lZ2V8bmFtZWd0fG5hbWVpY2xpa2V8bmFtZWljbmxpa2V8bmFtZWljcmVnZXhlcXxuYW1laWNyZWdleG5lfG5hbWVpbnxuYW1lbGV8bmFtZWxpa2V8bmFtZWx0fG5hbWVuZXxuYW1lbmxpa2V8bmFtZW91dHxuYW1lcmVjdnxuYW1lcmVnZXhlcXxuYW1lcmVnZXhuZXxuYW1lc2VuZHxuZXFqb2luc2VsfG5lcXNlbHxuZXRtYXNrfG5ldHdvcmt8bmV0d29ya19jbXB8bmV0d29ya19lcXxuZXR3b3JrX2dlfG5ldHdvcmtfZ3R8bmV0d29ya19sZXxuZXR3b3JrX2x0fG5ldHdvcmtfbmV8bmV0d29ya19zdWJ8bmV0d29ya19zdWJlcXxuZXR3b3JrX3N1cHxuZXR3b3JrX3N1cGVxfG5leHR2YWx8bmxpa2Vqb2luc2VsfG5saWtlc2VsfG5vdGxpa2V8bm93fG5wb2ludHN8bnRoX3ZhbHVlfG50aWxlfG51bWVyaWNfYWJzfG51bWVyaWNfYWNjdW18bnVtZXJpY19hZGR8bnVtZXJpY19hdmd8bnVtZXJpY19hdmdfYWNjdW18bnVtZXJpY19jbXB8bnVtZXJpY19kaXZ8bnVtZXJpY19kaXZfdHJ1bmN8bnVtZXJpY19lcXxudW1lcmljX2V4cHxudW1lcmljX2ZhY3xudW1lcmljX2dlfG51bWVyaWNfZ3R8bnVtZXJpY19pbnxudW1lcmljX2luY3xudW1lcmljX2xhcmdlcnxudW1lcmljX2xlfG51bWVyaWNfbG58bnVtZXJpY19sb2d8bnVtZXJpY19sdHxudW1lcmljX21vZHxudW1lcmljX211bHxudW1lcmljX25lfG51bWVyaWNfb3V0fG51bWVyaWNfcG93ZXJ8bnVtZXJpY19yZWN2fG51bWVyaWNfc2VuZHxudW1lcmljX3NtYWxsZXJ8bnVtZXJpY19zcXJ0fG51bWVyaWNfc3RkZGV2X3BvcHxudW1lcmljX3N0ZGRldl9zYW1wfG51bWVyaWNfc3VifG51bWVyaWNfdW1pbnVzfG51bWVyaWNfdXBsdXN8bnVtZXJpY192YXJfcG9wfG51bWVyaWNfdmFyX3NhbXB8bnVtZXJpY3R5cG1vZGlufG51bWVyaWN0eXBtb2RvdXR8bnVtbm9kZXxvYmpfZGVzY3JpcHRpb258b2N0ZXRfbGVuZ3RofG9pZHxvaWRlcXxvaWRnZXxvaWRndHxvaWRpbnxvaWRsYXJnZXJ8b2lkbGV8b2lkbHR8b2lkbmV8b2lkb3V0fG9pZHJlY3Z8b2lkc2VuZHxvaWRzbWFsbGVyfG9pZHZlY3RvcmVxfG9pZHZlY3RvcmdlfG9pZHZlY3Rvcmd0fG9pZHZlY3RvcmlufG9pZHZlY3RvcmxlfG9pZHZlY3Rvcmx0fG9pZHZlY3Rvcm5lfG9pZHZlY3Rvcm91dHxvaWR2ZWN0b3JyZWN2fG9pZHZlY3RvcnNlbmR8b2lkdmVjdG9ydHlwZXN8b25fcGJ8b25fcGx8b25fcHBhdGh8b25fcHN8b25fc2J8b25fc2x8b3BhcXVlX2lufG9wYXF1ZV9vdXR8b3ZlcmxhcHN8b3ZlcmxheXxwYXRofHBhdGhfYWRkfHBhdGhfYWRkX3B0fHBhdGhfY2VudGVyfHBhdGhfY29udGFpbl9wdHxwYXRoX2Rpc3RhbmNlfHBhdGhfZGl2X3B0fHBhdGhfaW58cGF0aF9pbnRlcnxwYXRoX2xlbmd0aHxwYXRoX211bF9wdHxwYXRoX25fZXF8cGF0aF9uX2dlfHBhdGhfbl9ndHxwYXRoX25fbGV8cGF0aF9uX2x0fHBhdGhfbnBvaW50c3xwYXRoX291dHxwYXRoX3JlY3Z8cGF0aF9zZW5kfHBhdGhfc3ViX3B0fHBjbG9zZXxwZXJjZW50X3Jhbmt8cGdfYWR2aXNvcnlfbG9ja3xwZ19hZHZpc29yeV9sb2NrX3NoYXJlZHxwZ19hZHZpc29yeV91bmxvY2t8cGdfYWR2aXNvcnlfdW5sb2NrX2FsbHxwZ19hZHZpc29yeV91bmxvY2tfc2hhcmVkfHBnX2Fkdmlzb3J5X3hhY3RfbG9ja3xwZ19hZHZpc29yeV94YWN0X2xvY2tfc2hhcmVkfHBnX2F2YWlsYWJsZV9leHRlbnNpb25fdmVyc2lvbnN8cGdfYXZhaWxhYmxlX2V4dGVuc2lvbnN8cGdfYmFja2VuZF9waWR8cGdfY2FuY2VsX2JhY2tlbmR8cGdfY2hhcl90b19lbmNvZGluZ3xwZ19jbGllbnRfZW5jb2Rpbmd8cGdfY29sbGF0aW9uX2lzX3Zpc2libGV8cGdfY29sdW1uX3NpemV8cGdfY29uZl9sb2FkX3RpbWV8cGdfY29udmVyc2lvbl9pc192aXNpYmxlfHBnX2NyZWF0ZV9yZXN0b3JlX3BvaW50fHBnX2N1cnJlbnRfeGxvZ19pbnNlcnRfbG9jYXRpb258cGdfY3VycmVudF94bG9nX2xvY2F0aW9ufHBnX2N1cnNvcnxwZ19kYXRhYmFzZV9zaXplfHBnX2Rlc2NyaWJlX29iamVjdHxwZ19lbmNvZGluZ19tYXhfbGVuZ3RofHBnX2VuY29kaW5nX3RvX2NoYXJ8cGdfZXh0ZW5zaW9uX2NvbmZpZ19kdW1wfHBnX2V4dGVuc2lvbl91cGRhdGVfcGF0aHN8cGdfZnVuY3Rpb25faXNfdmlzaWJsZXxwZ19nZXRfY29uc3RyYWludGRlZnxwZ19nZXRfZXhwcnxwZ19nZXRfZnVuY3Rpb25fYXJndW1lbnRzfHBnX2dldF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1bWVudHN8cGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdHxwZ19nZXRfZnVuY3Rpb25kZWZ8cGdfZ2V0X2luZGV4ZGVmfHBnX2dldF9rZXl3b3Jkc3xwZ19nZXRfcnVsZWRlZnxwZ19nZXRfc2VyaWFsX3NlcXVlbmNlfHBnX2dldF90cmlnZ2VyZGVmfHBnX2dldF91c2VyYnlpZHxwZ19nZXRfdmlld2RlZnxwZ19oYXNfcm9sZXxwZ19pbmRleGVzX3NpemV8cGdfaXNfaW5fcmVjb3Zlcnl8cGdfaXNfb3RoZXJfdGVtcF9zY2hlbWF8cGdfaXNfeGxvZ19yZXBsYXlfcGF1c2VkfHBnX2xhc3RfeGFjdF9yZXBsYXlfdGltZXN0YW1wfHBnX2xhc3RfeGxvZ19yZWNlaXZlX2xvY2F0aW9ufHBnX2xhc3RfeGxvZ19yZXBsYXlfbG9jYXRpb258cGdfbGlzdGVuaW5nX2NoYW5uZWxzfHBnX2xvY2tfc3RhdHVzfHBnX2xzX2RpcnxwZ19teV90ZW1wX3NjaGVtYXxwZ19ub2RlX3RyZWVfaW58cGdfbm9kZV90cmVlX291dHxwZ19ub2RlX3RyZWVfcmVjdnxwZ19ub2RlX3RyZWVfc2VuZHxwZ19ub3RpZnl8cGdfb3BjbGFzc19pc192aXNpYmxlfHBnX29wZXJhdG9yX2lzX3Zpc2libGV8cGdfb3B0aW9uc190b190YWJsZXxwZ19wb3N0bWFzdGVyX3N0YXJ0X3RpbWV8cGdfcHJlcGFyZWRfc3RhdGVtZW50fHBnX3ByZXBhcmVkX3hhY3R8cGdfcmVhZF9iaW5hcnlfZmlsZXxwZ19yZWFkX2ZpbGV8cGdfcmVsYXRpb25fZmlsZW5vZGV8cGdfcmVsYXRpb25fZmlsZXBhdGh8cGdfcmVsYXRpb25fc2l6ZXxwZ19yZWxvYWRfY29uZnxwZ19yb3RhdGVfbG9nZmlsZXxwZ19zZXF1ZW5jZV9wYXJhbWV0ZXJzfHBnX3Nob3dfYWxsX3NldHRpbmdzfHBnX3NpemVfcHJldHR5fHBnX3NsZWVwfHBnX3N0YXJ0X2JhY2t1cHxwZ19zdGF0X2NsZWFyX3NuYXBzaG90fHBnX3N0YXRfZmlsZXxwZ19zdGF0X2dldF9hY3Rpdml0eXxwZ19zdGF0X2dldF9hbmFseXplX2NvdW50fHBnX3N0YXRfZ2V0X2F1dG9hbmFseXplX2NvdW50fHBnX3N0YXRfZ2V0X2F1dG92YWN1dW1fY291bnR8cGdfc3RhdF9nZXRfYmFja2VuZF9hY3Rpdml0eXxwZ19zdGF0X2dldF9iYWNrZW5kX2FjdGl2aXR5X3N0YXJ0fHBnX3N0YXRfZ2V0X2JhY2tlbmRfY2xpZW50X2FkZHJ8cGdfc3RhdF9nZXRfYmFja2VuZF9jbGllbnRfcG9ydHxwZ19zdGF0X2dldF9iYWNrZW5kX2RiaWR8cGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldHxwZ19zdGF0X2dldF9iYWNrZW5kX3BpZHxwZ19zdGF0X2dldF9iYWNrZW5kX3N0YXJ0fHBnX3N0YXRfZ2V0X2JhY2tlbmRfdXNlcmlkfHBnX3N0YXRfZ2V0X2JhY2tlbmRfd2FpdGluZ3xwZ19zdGF0X2dldF9iYWNrZW5kX3hhY3Rfc3RhcnR8cGdfc3RhdF9nZXRfYmd3cml0ZXJfYnVmX3dyaXR0ZW5fY2hlY2twb2ludHN8cGdfc3RhdF9nZXRfYmd3cml0ZXJfYnVmX3dyaXR0ZW5fY2xlYW58cGdfc3RhdF9nZXRfYmd3cml0ZXJfbWF4d3JpdHRlbl9jbGVhbnxwZ19zdGF0X2dldF9iZ3dyaXRlcl9yZXF1ZXN0ZWRfY2hlY2twb2ludHN8cGdfc3RhdF9nZXRfYmd3cml0ZXJfc3RhdF9yZXNldF90aW1lfHBnX3N0YXRfZ2V0X2Jnd3JpdGVyX3RpbWVkX2NoZWNrcG9pbnRzfHBnX3N0YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkfHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXR8cGdfc3RhdF9nZXRfYnVmX2FsbG9jfHBnX3N0YXRfZ2V0X2J1Zl9mc3luY19iYWNrZW5kfHBnX3N0YXRfZ2V0X2J1Zl93cml0dGVuX2JhY2tlbmR8cGdfc3RhdF9nZXRfZGJfYmxvY2tzX2ZldGNoZWR8cGdfc3RhdF9nZXRfZGJfYmxvY2tzX2hpdHxwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGx8cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGlufHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvY2t8cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3R8cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9ja3xwZ19zdGF0X2dldF9kYl9jb25mbGljdF90YWJsZXNwYWNlfHBnX3N0YXRfZ2V0X2RiX251bWJhY2tlbmRzfHBnX3N0YXRfZ2V0X2RiX3N0YXRfcmVzZXRfdGltZXxwZ19zdGF0X2dldF9kYl90dXBsZXNfZGVsZXRlZHxwZ19zdGF0X2dldF9kYl90dXBsZXNfZmV0Y2hlZHxwZ19zdGF0X2dldF9kYl90dXBsZXNfaW5zZXJ0ZWR8cGdfc3RhdF9nZXRfZGJfdHVwbGVzX3JldHVybmVkfHBnX3N0YXRfZ2V0X2RiX3R1cGxlc191cGRhdGVkfHBnX3N0YXRfZ2V0X2RiX3hhY3RfY29tbWl0fHBnX3N0YXRfZ2V0X2RiX3hhY3Rfcm9sbGJhY2t8cGdfc3RhdF9nZXRfZGVhZF90dXBsZXN8cGdfc3RhdF9nZXRfZnVuY3Rpb25fY2FsbHN8cGdfc3RhdF9nZXRfZnVuY3Rpb25fc2VsZl90aW1lfHBnX3N0YXRfZ2V0X2Z1bmN0aW9uX3RpbWV8cGdfc3RhdF9nZXRfbGFzdF9hbmFseXplX3RpbWV8cGdfc3RhdF9nZXRfbGFzdF9hdXRvYW5hbHl6ZV90aW1lfHBnX3N0YXRfZ2V0X2xhc3RfYXV0b3ZhY3V1bV90aW1lfHBnX3N0YXRfZ2V0X2xhc3RfdmFjdXVtX3RpbWV8cGdfc3RhdF9nZXRfbGl2ZV90dXBsZXN8cGdfc3RhdF9nZXRfbnVtc2NhbnN8cGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWR8cGdfc3RhdF9nZXRfdHVwbGVzX2ZldGNoZWR8cGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkfHBnX3N0YXRfZ2V0X3R1cGxlc19pbnNlcnRlZHxwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWR8cGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWR8cGdfc3RhdF9nZXRfdmFjdXVtX2NvdW50fHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJzfHBnX3N0YXRfZ2V0X3hhY3RfYmxvY2tzX2ZldGNoZWR8cGdfc3RhdF9nZXRfeGFjdF9ibG9ja3NfaGl0fHBnX3N0YXRfZ2V0X3hhY3RfZnVuY3Rpb25fY2FsbHN8cGdfc3RhdF9nZXRfeGFjdF9mdW5jdGlvbl9zZWxmX3RpbWV8cGdfc3RhdF9nZXRfeGFjdF9mdW5jdGlvbl90aW1lfHBnX3N0YXRfZ2V0X3hhY3RfbnVtc2NhbnN8cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfZGVsZXRlZHxwZ19zdGF0X2dldF94YWN0X3R1cGxlc19mZXRjaGVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2luc2VydGVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3JldHVybmVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWR8cGdfc3RhdF9yZXNldHxwZ19zdGF0X3Jlc2V0X3NoYXJlZHxwZ19zdGF0X3Jlc2V0X3NpbmdsZV9mdW5jdGlvbl9jb3VudGVyc3xwZ19zdGF0X3Jlc2V0X3NpbmdsZV90YWJsZV9jb3VudGVyc3xwZ19zdG9wX2JhY2t1cHxwZ19zd2l0Y2hfeGxvZ3xwZ190YWJsZV9pc192aXNpYmxlfHBnX3RhYmxlX3NpemV8cGdfdGFibGVzcGFjZV9kYXRhYmFzZXN8cGdfdGFibGVzcGFjZV9zaXplfHBnX3Rlcm1pbmF0ZV9iYWNrZW5kfHBnX3RpbWV6b25lX2FiYnJldnN8cGdfdGltZXpvbmVfbmFtZXN8cGdfdG90YWxfcmVsYXRpb25fc2l6ZXxwZ190cnlfYWR2aXNvcnlfbG9ja3xwZ190cnlfYWR2aXNvcnlfbG9ja19zaGFyZWR8cGdfdHJ5X2Fkdmlzb3J5X3hhY3RfbG9ja3xwZ190cnlfYWR2aXNvcnlfeGFjdF9sb2NrX3NoYXJlZHxwZ190c19jb25maWdfaXNfdmlzaWJsZXxwZ190c19kaWN0X2lzX3Zpc2libGV8cGdfdHNfcGFyc2VyX2lzX3Zpc2libGV8cGdfdHNfdGVtcGxhdGVfaXNfdmlzaWJsZXxwZ190eXBlX2lzX3Zpc2libGV8cGdfdHlwZW9mfHBnX3hsb2dfcmVwbGF5X3BhdXNlfHBnX3hsb2dfcmVwbGF5X3Jlc3VtZXxwZ194bG9nZmlsZV9uYW1lfHBnX3hsb2dmaWxlX25hbWVfb2Zmc2V0fHBpfHBsYWludG9fdHNxdWVyeXxwbHBnc3FsX2NhbGxfaGFuZGxlcnxwbHBnc3FsX2lubGluZV9oYW5kbGVyfHBscGdzcWxfdmFsaWRhdG9yfHBvaW50fHBvaW50X2Fib3ZlfHBvaW50X2FkZHxwb2ludF9iZWxvd3xwb2ludF9kaXN0YW5jZXxwb2ludF9kaXZ8cG9pbnRfZXF8cG9pbnRfaG9yaXp8cG9pbnRfaW58cG9pbnRfbGVmdHxwb2ludF9tdWx8cG9pbnRfbmV8cG9pbnRfb3V0fHBvaW50X3JlY3Z8cG9pbnRfcmlnaHR8cG9pbnRfc2VuZHxwb2ludF9zdWJ8cG9pbnRfdmVydHxwb2x5X2Fib3ZlfHBvbHlfYmVsb3d8cG9seV9jZW50ZXJ8cG9seV9jb250YWlufHBvbHlfY29udGFpbl9wdHxwb2x5X2NvbnRhaW5lZHxwb2x5X2Rpc3RhbmNlfHBvbHlfaW58cG9seV9sZWZ0fHBvbHlfbnBvaW50c3xwb2x5X291dHxwb2x5X292ZXJhYm92ZXxwb2x5X292ZXJiZWxvd3xwb2x5X292ZXJsYXB8cG9seV9vdmVybGVmdHxwb2x5X292ZXJyaWdodHxwb2x5X3JlY3Z8cG9seV9yaWdodHxwb2x5X3NhbWV8cG9seV9zZW5kfHBvbHlnb258cG9wZW58cG9zaXRpb258cG9zaXRpb25qb2luc2VsfHBvc2l0aW9uc2VsfHBvc3RncmVzcWxfZmR3X3ZhbGlkYXRvcnxwb3d8cG93ZXJ8cHJzZF9lbmR8cHJzZF9oZWFkbGluZXxwcnNkX2xleHR5cGV8cHJzZF9uZXh0dG9rZW58cHJzZF9zdGFydHxwdF9jb250YWluZWRfY2lyY2xlfHB0X2NvbnRhaW5lZF9wb2x5fHF1ZXJ5X3RvX3htbHxxdWVyeV90b194bWxfYW5kX3htbHNjaGVtYXxxdWVyeV90b194bWxzY2hlbWF8cXVlcnl0cmVlfHF1b3RlX2lkZW50fHF1b3RlX2xpdGVyYWx8cXVvdGVfbnVsbGFibGV8cmFkaWFuc3xyYWRpdXN8cmFuZG9tfHJhbmt8cmVjb3JkX2VxfHJlY29yZF9nZXxyZWNvcmRfZ3R8cmVjb3JkX2lufHJlY29yZF9sZXxyZWNvcmRfbHR8cmVjb3JkX25lfHJlY29yZF9vdXR8cmVjb3JkX3JlY3Z8cmVjb3JkX3NlbmR8cmVnY2xhc3N8cmVnY2xhc3NpbnxyZWdjbGFzc291dHxyZWdjbGFzc3JlY3Z8cmVnY2xhc3NzZW5kfHJlZ2NvbmZpZ2lufHJlZ2NvbmZpZ291dHxyZWdjb25maWdyZWN2fHJlZ2NvbmZpZ3NlbmR8cmVnZGljdGlvbmFyeWlufHJlZ2RpY3Rpb25hcnlvdXR8cmVnZGljdGlvbmFyeXJlY3Z8cmVnZGljdGlvbmFyeXNlbmR8cmVnZXhlcWpvaW5zZWx8cmVnZXhlcXNlbHxyZWdleG5lam9pbnNlbHxyZWdleG5lc2VsfHJlZ2V4cF9tYXRjaGVzfHJlZ2V4cF9yZXBsYWNlfHJlZ2V4cF9zcGxpdF90b19hcnJheXxyZWdleHBfc3BsaXRfdG9fdGFibGV8cmVnb3BlcmF0b3JpbnxyZWdvcGVyYXRvcm91dHxyZWdvcGVyYXRvcnJlY3Z8cmVnb3BlcmF0b3JzZW5kfHJlZ29wZXJpbnxyZWdvcGVyb3V0fHJlZ29wZXJyZWN2fHJlZ29wZXJzZW5kfHJlZ3Byb2NlZHVyZWlufHJlZ3Byb2NlZHVyZW91dHxyZWdwcm9jZWR1cmVyZWN2fHJlZ3Byb2NlZHVyZXNlbmR8cmVncHJvY2lufHJlZ3Byb2NvdXR8cmVncHJvY3JlY3Z8cmVncHJvY3NlbmR8cmVncl9hdmd4fHJlZ3JfYXZneXxyZWdyX2NvdW50fHJlZ3JfaW50ZXJjZXB0fHJlZ3JfcjJ8cmVncl9zbG9wZXxyZWdyX3N4eHxyZWdyX3N4eXxyZWdyX3N5eXxyZWd0eXBlaW58cmVndHlwZW91dHxyZWd0eXBlcmVjdnxyZWd0eXBlc2VuZHxyZWx0aW1lfHJlbHRpbWVlcXxyZWx0aW1lZ2V8cmVsdGltZWd0fHJlbHRpbWVpbnxyZWx0aW1lbGV8cmVsdGltZWx0fHJlbHRpbWVuZXxyZWx0aW1lb3V0fHJlbHRpbWVyZWN2fHJlbHRpbWVzZW5kfHJlcGVhdHxyZXBsYWNlfHJldmVyc2V8cmlnaHR8cm91bmR8cm93X251bWJlcnxycGFkfHJ0cmltfHNjYWxhcmd0am9pbnNlbHxzY2FsYXJndHNlbHxzY2FsYXJsdGpvaW5zZWx8c2NhbGFybHRzZWx8c2NoZW1hX3RvX3htbHxzY2hlbWFfdG9feG1sX2FuZF94bWxzY2hlbWF8c2NoZW1hX3RvX3htbHNjaGVtYXxzZXNzaW9uX3VzZXJ8c2V0X2JpdHxzZXRfYnl0ZXxzZXRfY29uZmlnfHNldF9tYXNrbGVufHNldHNlZWR8c2V0dmFsfHNldHdlaWdodHxzaGVsbF9pbnxzaGVsbF9vdXR8c2hpZnRfamlzXzIwMDRfdG9fZXVjX2ppc18yMDA0fHNoaWZ0X2ppc18yMDA0X3RvX3V0Zjh8c2hvYmpfZGVzY3JpcHRpb258c2lnbnxzaW1pbGFyX2VzY2FwZXxzaW58c2ppc190b19ldWNfanB8c2ppc190b19taWN8c2ppc190b191dGY4fHNsb3BlfHNtZ3JlcXxzbWdyaW58c21ncm5lfHNtZ3JvdXR8c3BsaXRfcGFydHxzcXJ0fHN0YXRlbWVudF90aW1lc3RhbXB8c3RkZGV2fHN0ZGRldl9wb3B8c3RkZGV2X3NhbXB8c3RyaW5nX2FnZ3xzdHJpbmdfYWdnX2ZpbmFsZm58c3RyaW5nX2FnZ190cmFuc2ZufHN0cmluZ190b19hcnJheXxzdHJpcHxzdHJwb3N8c3Vic3RyfHN1YnN0cmluZ3xzdW18c3VwcHJlc3NfcmVkdW5kYW50X3VwZGF0ZXNfdHJpZ2dlcnx0YWJsZV90b194bWx8dGFibGVfdG9feG1sX2FuZF94bWxzY2hlbWF8dGFibGVfdG9feG1sc2NoZW1hfHRhbnx0ZXh0fHRleHRfZ2V8dGV4dF9ndHx0ZXh0X2xhcmdlcnx0ZXh0X2xlfHRleHRfbHR8dGV4dF9wYXR0ZXJuX2dlfHRleHRfcGF0dGVybl9ndHx0ZXh0X3BhdHRlcm5fbGV8dGV4dF9wYXR0ZXJuX2x0fHRleHRfc21hbGxlcnx0ZXh0YW55Y2F0fHRleHRjYXR8dGV4dGVxfHRleHRpY2xpa2V8dGV4dGljbmxpa2V8dGV4dGljcmVnZXhlcXx0ZXh0aWNyZWdleG5lfHRleHRpbnx0ZXh0bGVufHRleHRsaWtlfHRleHRuZXx0ZXh0bmxpa2V8dGV4dG91dHx0ZXh0cmVjdnx0ZXh0cmVnZXhlcXx0ZXh0cmVnZXhuZXx0ZXh0c2VuZHx0aGVzYXVydXNfaW5pdHx0aGVzYXVydXNfbGV4aXplfHRpZGVxfHRpZGdlfHRpZGd0fHRpZGlufHRpZGxhcmdlcnx0aWRsZXx0aWRsdHx0aWRuZXx0aWRvdXR8dGlkcmVjdnx0aWRzZW5kfHRpZHNtYWxsZXJ8dGltZV9jbXB8dGltZV9lcXx0aW1lX2dlfHRpbWVfZ3R8dGltZV9oYXNofHRpbWVfaW58dGltZV9sYXJnZXJ8dGltZV9sZXx0aW1lX2x0fHRpbWVfbWlfaW50ZXJ2YWx8dGltZV9taV90aW1lfHRpbWVfbmV8dGltZV9vdXR8dGltZV9wbF9pbnRlcnZhbHx0aW1lX3JlY3Z8dGltZV9zZW5kfHRpbWVfc21hbGxlcnx0aW1lZGF0ZV9wbHx0aW1lbWl8dGltZW5vd3x0aW1lb2ZkYXl8dGltZXBsfHRpbWVzdGFtcF9jbXB8dGltZXN0YW1wX2NtcF9kYXRlfHRpbWVzdGFtcF9jbXBfdGltZXN0YW1wdHp8dGltZXN0YW1wX2VxfHRpbWVzdGFtcF9lcV9kYXRlfHRpbWVzdGFtcF9lcV90aW1lc3RhbXB0enx0aW1lc3RhbXBfZ2V8dGltZXN0YW1wX2dlX2RhdGV8dGltZXN0YW1wX2dlX3RpbWVzdGFtcHR6fHRpbWVzdGFtcF9ndHx0aW1lc3RhbXBfZ3RfZGF0ZXx0aW1lc3RhbXBfZ3RfdGltZXN0YW1wdHp8dGltZXN0YW1wX2hhc2h8dGltZXN0YW1wX2lufHRpbWVzdGFtcF9sYXJnZXJ8dGltZXN0YW1wX2xlfHRpbWVzdGFtcF9sZV9kYXRlfHRpbWVzdGFtcF9sZV90aW1lc3RhbXB0enx0aW1lc3RhbXBfbHR8dGltZXN0YW1wX2x0X2RhdGV8dGltZXN0YW1wX2x0X3RpbWVzdGFtcHR6fHRpbWVzdGFtcF9taXx0aW1lc3RhbXBfbWlfaW50ZXJ2YWx8dGltZXN0YW1wX25lfHRpbWVzdGFtcF9uZV9kYXRlfHRpbWVzdGFtcF9uZV90aW1lc3RhbXB0enx0aW1lc3RhbXBfb3V0fHRpbWVzdGFtcF9wbF9pbnRlcnZhbHx0aW1lc3RhbXBfcmVjdnx0aW1lc3RhbXBfc2VuZHx0aW1lc3RhbXBfc21hbGxlcnx0aW1lc3RhbXB0eXBtb2Rpbnx0aW1lc3RhbXB0eXBtb2RvdXR8dGltZXN0YW1wdHpfY21wfHRpbWVzdGFtcHR6X2NtcF9kYXRlfHRpbWVzdGFtcHR6X2NtcF90aW1lc3RhbXB8dGltZXN0YW1wdHpfZXF8dGltZXN0YW1wdHpfZXFfZGF0ZXx0aW1lc3RhbXB0el9lcV90aW1lc3RhbXB8dGltZXN0YW1wdHpfZ2V8dGltZXN0YW1wdHpfZ2VfZGF0ZXx0aW1lc3RhbXB0el9nZV90aW1lc3RhbXB8dGltZXN0YW1wdHpfZ3R8dGltZXN0YW1wdHpfZ3RfZGF0ZXx0aW1lc3RhbXB0el9ndF90aW1lc3RhbXB8dGltZXN0YW1wdHpfaW58dGltZXN0YW1wdHpfbGFyZ2VyfHRpbWVzdGFtcHR6X2xlfHRpbWVzdGFtcHR6X2xlX2RhdGV8dGltZXN0YW1wdHpfbGVfdGltZXN0YW1wfHRpbWVzdGFtcHR6X2x0fHRpbWVzdGFtcHR6X2x0X2RhdGV8dGltZXN0YW1wdHpfbHRfdGltZXN0YW1wfHRpbWVzdGFtcHR6X21pfHRpbWVzdGFtcHR6X21pX2ludGVydmFsfHRpbWVzdGFtcHR6X25lfHRpbWVzdGFtcHR6X25lX2RhdGV8dGltZXN0YW1wdHpfbmVfdGltZXN0YW1wfHRpbWVzdGFtcHR6X291dHx0aW1lc3RhbXB0el9wbF9pbnRlcnZhbHx0aW1lc3RhbXB0el9yZWN2fHRpbWVzdGFtcHR6X3NlbmR8dGltZXN0YW1wdHpfc21hbGxlcnx0aW1lc3RhbXB0enR5cG1vZGlufHRpbWVzdGFtcHR6dHlwbW9kb3V0fHRpbWV0eXBtb2Rpbnx0aW1ldHlwbW9kb3V0fHRpbWV0el9jbXB8dGltZXR6X2VxfHRpbWV0el9nZXx0aW1ldHpfZ3R8dGltZXR6X2hhc2h8dGltZXR6X2lufHRpbWV0el9sYXJnZXJ8dGltZXR6X2xlfHRpbWV0el9sdHx0aW1ldHpfbWlfaW50ZXJ2YWx8dGltZXR6X25lfHRpbWV0el9vdXR8dGltZXR6X3BsX2ludGVydmFsfHRpbWV0el9yZWN2fHRpbWV0el9zZW5kfHRpbWV0el9zbWFsbGVyfHRpbWV0emRhdGVfcGx8dGltZXR6dHlwbW9kaW58dGltZXR6dHlwbW9kb3V0fHRpbWV6b25lfHRpbnRlcnZhbHx0aW50ZXJ2YWxjdHx0aW50ZXJ2YWxlbmR8dGludGVydmFsZXF8dGludGVydmFsZ2V8dGludGVydmFsZ3R8dGludGVydmFsaW58dGludGVydmFsbGV8dGludGVydmFsbGVuZXF8dGludGVydmFsbGVuZ2V8dGludGVydmFsbGVuZ3R8dGludGVydmFsbGVubGV8dGludGVydmFsbGVubHR8dGludGVydmFsbGVubmV8dGludGVydmFsbHR8dGludGVydmFsbmV8dGludGVydmFsb3V0fHRpbnRlcnZhbG92fHRpbnRlcnZhbHJlY3Z8dGludGVydmFscmVsfHRpbnRlcnZhbHNhbWV8dGludGVydmFsc2VuZHx0aW50ZXJ2YWxzdGFydHx0b19hc2NpaXx0b19jaGFyfHRvX2RhdGV8dG9faGV4fHRvX251bWJlcnx0b190aW1lc3RhbXB8dG9fdHNxdWVyeXx0b190c3ZlY3Rvcnx0cmFuc2FjdGlvbl90aW1lc3RhbXB8dHJhbnNsYXRlfHRyaWdnZXJfaW58dHJpZ2dlcl9vdXR8dHJ1bmN8dHNfZGVidWd8dHNfaGVhZGxpbmV8dHNfbGV4aXplfHRzX21hdGNoX3F2fHRzX21hdGNoX3RxfHRzX21hdGNoX3R0fHRzX21hdGNoX3ZxfHRzX3BhcnNlfHRzX3Jhbmt8dHNfcmFua19jZHx0c19yZXdyaXRlfHRzX3N0YXR8dHNfdG9rZW5fdHlwZXx0c190eXBhbmFseXplfHRzbWF0Y2hqb2luc2VsfHRzbWF0Y2hzZWx8dHNxX21jb250YWluZWR8dHNxX21jb250YWluc3x0c3F1ZXJ5X2FuZHx0c3F1ZXJ5X2NtcHx0c3F1ZXJ5X2VxfHRzcXVlcnlfZ2V8dHNxdWVyeV9ndHx0c3F1ZXJ5X2xlfHRzcXVlcnlfbHR8dHNxdWVyeV9uZXx0c3F1ZXJ5X25vdHx0c3F1ZXJ5X29yfHRzcXVlcnlpbnx0c3F1ZXJ5b3V0fHRzcXVlcnlyZWN2fHRzcXVlcnlzZW5kfHRzdmVjdG9yX2NtcHx0c3ZlY3Rvcl9jb25jYXR8dHN2ZWN0b3JfZXF8dHN2ZWN0b3JfZ2V8dHN2ZWN0b3JfZ3R8dHN2ZWN0b3JfbGV8dHN2ZWN0b3JfbHR8dHN2ZWN0b3JfbmV8dHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXJ8dHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXJfY29sdW1ufHRzdmVjdG9yaW58dHN2ZWN0b3JvdXR8dHN2ZWN0b3JyZWN2fHRzdmVjdG9yc2VuZHx0eGlkX2N1cnJlbnR8dHhpZF9jdXJyZW50X3NuYXBzaG90fHR4aWRfc25hcHNob3RfaW58dHhpZF9zbmFwc2hvdF9vdXR8dHhpZF9zbmFwc2hvdF9yZWN2fHR4aWRfc25hcHNob3Rfc2VuZHx0eGlkX3NuYXBzaG90X3hpcHx0eGlkX3NuYXBzaG90X3htYXh8dHhpZF9zbmFwc2hvdF94bWlufHR4aWRfdmlzaWJsZV9pbl9zbmFwc2hvdHx1aGNfdG9fdXRmOHx1bmlxdWVfa2V5X3JlY2hlY2t8dW5rbm93bmlufHVua25vd25vdXR8dW5rbm93bnJlY3Z8dW5rbm93bnNlbmR8dW5uZXN0fHVwcGVyfHV0ZjhfdG9fYXNjaWl8dXRmOF90b19iaWc1fHV0ZjhfdG9fZXVjX2NufHV0ZjhfdG9fZXVjX2ppc18yMDA0fHV0ZjhfdG9fZXVjX2pwfHV0ZjhfdG9fZXVjX2tyfHV0ZjhfdG9fZXVjX3R3fHV0ZjhfdG9fZ2IxODAzMHx1dGY4X3RvX2dia3x1dGY4X3RvX2lzbzg4NTl8dXRmOF90b19pc284ODU5XzF8dXRmOF90b19qb2hhYnx1dGY4X3RvX2tvaThyfHV0ZjhfdG9fa29pOHV8dXRmOF90b19zaGlmdF9qaXNfMjAwNHx1dGY4X3RvX3NqaXN8dXRmOF90b191aGN8dXRmOF90b193aW58dXVpZF9jbXB8dXVpZF9lcXx1dWlkX2dlfHV1aWRfZ3R8dXVpZF9oYXNofHV1aWRfaW58dXVpZF9sZXx1dWlkX2x0fHV1aWRfbmV8dXVpZF9vdXR8dXVpZF9yZWN2fHV1aWRfc2VuZHx2YXJfcG9wfHZhcl9zYW1wfHZhcmJpdF9pbnx2YXJiaXRfb3V0fHZhcmJpdF9yZWN2fHZhcmJpdF9zZW5kfHZhcmJpdGNtcHx2YXJiaXRlcXx2YXJiaXRnZXx2YXJiaXRndHx2YXJiaXRsZXx2YXJiaXRsdHx2YXJiaXRuZXx2YXJiaXR0eXBtb2Rpbnx2YXJiaXR0eXBtb2RvdXR8dmFyY2hhcmlufHZhcmNoYXJvdXR8dmFyY2hhcnJlY3Z8dmFyY2hhcnNlbmR8dmFyY2hhcnR5cG1vZGlufHZhcmNoYXJ0eXBtb2RvdXR8dmFyaWFuY2V8dmVyc2lvbnx2b2lkX2lufHZvaWRfb3V0fHZvaWRfcmVjdnx2b2lkX3NlbmR8d2lkdGh8d2lkdGhfYnVja2V0fHdpbjEyNTBfdG9fbGF0aW4yfHdpbjEyNTBfdG9fbWljfHdpbjEyNTFfdG9faXNvfHdpbjEyNTFfdG9fa29pOHJ8d2luMTI1MV90b19taWN8d2luMTI1MV90b193aW44NjZ8d2luODY2X3RvX2lzb3x3aW44NjZfdG9fa29pOHJ8d2luODY2X3RvX21pY3x3aW44NjZfdG9fd2luMTI1MXx3aW5fdG9fdXRmOHx4aWRlcXx4aWRlcWludDR8eGlkaW58eGlkb3V0fHhpZHJlY3Z8eGlkc2VuZHx4bWx8eG1sX2lufHhtbF9pc193ZWxsX2Zvcm1lZHx4bWxfaXNfd2VsbF9mb3JtZWRfY29udGVudHx4bWxfaXNfd2VsbF9mb3JtZWRfZG9jdW1lbnR8eG1sX291dHx4bWxfcmVjdnx4bWxfc2VuZHx4bWxhZ2d8eG1sY29tbWVudHx4bWxjb25jYXQyfHhtbGV4aXN0c3x4bWx2YWxpZGF0ZXx4cGF0aHx4cGF0aF9leGlzdHMiLnNwbGl0KCJ8IikpLGM9W3t0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOmZ1bmN0aW9uKGMpe3JldHVybiBjPWMudG9Mb3dlckNhc2UoKSxhLmhhc093blByb3BlcnR5KGMpPyJrZXl3b3JkIjpiLmhhc093blByb3BlcnR5KGMpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aX11bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8ISF8IX58IX5cXCp8IX5+fCF+flxcKnwjfCMjfCM8fCM8PXwjPD58Iz18Iz58Iz49fCV8XFwmfFxcJlxcJnxcXCY8fFxcJjxcXHx8XFwmPnxcXCp8XFwrfFxcLXwvfDx8PCM+fDxcXC0+fDw8fDw8PXw8PFxcfHw8PXw8Pnw8XFw/Pnw8QHw8XFxefD18Pnw+PXw+Pnw+Pj18PlxcXnxcXD8jfFxcP1xcLXxcXD9cXC1cXHx8XFw/XFx8fFxcP1xcfFxcfHxAfEBcXC1AfEA+fEBAfEBAQHxcXF58XFx8fFxcfFxcJj58XFx8L3xcXHw+PnxcXHxcXHx8XFx8XFx8L3x+fH5cXCp8fjw9fnx+PH58fj18fj49fnx+Pn58fn58fn5cXCoifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltcXChdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFwpXSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV07dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiItLS4qJCJ9LGYuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46ImtleXdvcmQuc3RhdGVtZW50QmVnaW4iLHJlZ2V4OiJeW2EtekEtWl0rIixuZXh0OiJzdGF0ZW1lbnQifSx7dG9rZW46InN1cHBvcnQuYnVpbGRpbiIscmVnZXg6Il5cXFxcW1xcU10rLiokIn1dLHN0YXRlbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLS0uKiQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnRTdGF0ZW1lbnQifSx7dG9rZW46InN0YXRlbWVudEVuZCIscmVnZXg6IjsiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRwZXJsXFwkIixuZXh0OiJwZXJsLXN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRweXRob25cXCQiLG5leHQ6InB5dGhvbi1zdGFydCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFwkW1xcd18wLTldKlxcJCQiLG5leHQ6ImRvbGxhclNxbCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFwkW1xcd18wLTldKlxcJCIsbmV4dDoiZG9sbGFyU3RhdGVtZW50U3RyaW5nIn1dLmNvbmNhdChjKSxkb2xsYXJTcWw6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii0tLiokIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50RG9sbGFyU3FsIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJeXFwkW1xcd18wLTldKlxcJCIsbmV4dDoic3RhdGVtZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRbXFx3XzAtOV0qXFwkIixuZXh0OiJkb2xsYXJTcWxTdHJpbmcifV0uY29uY2F0KGMpLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50U3RhdGVtZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXRlbWVudCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnREb2xsYXJTcWw6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoiZG9sbGFyU3FsIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sZG9sbGFyU3RhdGVtZW50U3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Ii4qP1xcJFtcXHdfMC05XSpcXCQiLG5leHQ6InN0YXRlbWVudCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0sZG9sbGFyU3FsU3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Ii4qP1xcJFtcXHdfMC05XSpcXCQiLG5leHQ6ImRvbGxhclNxbCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19LHRoaXMuZW1iZWRSdWxlcyhmLCJkb2MtIixbZi5nZXRFbmRSdWxlKCJzdGFydCIpXSksdGhpcy5lbWJlZFJ1bGVzKGgsInBlcmwtIixbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRwZXJsXFwkIixuZXh0OiJzdGF0ZW1lbnQifV0pLHRoaXMuZW1iZWRSdWxlcyhpLCJweXRob24tIixbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRweXRob25cXCQiLG5leHQ6InN0YXRlbWVudCJ9XSl9O2QuaW5oZXJpdHMoaixnKSxiLlBnc3FsSGlnaGxpZ2h0UnVsZXM9an0pLGRlZmluZSgiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGY9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJUT0RPIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlteQFxcKl0rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6Ii4ifV19fTtkLmluaGVyaXRzKGYsZSksZi5nZXRTdGFydFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKig/PVxcKikiLG5leHQ6YX19LGYuZ2V0RW5kUnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwqXFwvIixuZXh0OmF9fSxiLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcz1mfSksZGVmaW5lKCJhY2UvbW9kZS9wZXJsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYmFzZXxjb25zdGFudHxjb250aW51ZXxlbHNlfGVsc2lmfGZvcnxmb3JlYWNofGZvcm1hdHxnb3RvfGlmfGxhc3R8bG9jYWx8bXl8bmV4dHxub3xwYWNrYWdlfHBhcmVudHxyZWRvfHJlcXVpcmV8c2NhbGFyfHN1Ynx1bmxlc3N8dW50aWx8d2hpbGV8dXNlfHZhcnMiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJBUkdWfEVOVnxJTkN8U0lHIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgiZ2V0cHJvdG9ieW51bWJlcnxnZXRwcm90b2J5bmFtZXxnZXRzZXJ2YnluYW1lfGdldGhvc3RieWFkZHJ8Z2V0aG9zdGJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldG5ldGJ5YWRkcnxnZXRuZXRieW5hbWV8Z2V0c29ja25hbWV8Z2V0cGVlcm5hbWV8c2V0cHJpb3JpdHl8Z2V0cHJvdG9lbnR8c2V0cHJvdG9lbnR8Z2V0cHJpb3JpdHl8ZW5kcHJvdG9lbnR8Z2V0c2VydmVudHxzZXRzZXJ2ZW50fGVuZHNlcnZlbnR8c2V0aG9zdGVudHxzb2NrZXRwYWlyfGdldHNvY2tvcHR8Z2V0aG9zdGVudHxlbmRob3N0ZW50fHNldHNvY2tvcHR8c2V0bmV0ZW50fHF1b3RlbWV0YXxsb2NhbHRpbWV8cHJvdG90eXBlfGdldG5ldGVudHxlbmRuZXRlbnR8cmV3aW5kZGlyfHdhbnRhcnJheXxnZXRwd3VpZHxjbG9zZWRpcnxnZXRsb2dpbnxyZWFkbGlua3xlbmRncmVudHxnZXRncmdpZHxnZXRncm5hbXxzaG13cml0ZXxzaHV0ZG93bnxyZWFkbGluZXxlbmRwd2VudHxzZXRncmVudHxyZWFkcGlwZXxmb3JtbGluZXx0cnVuY2F0ZXxkYm1jbG9zZXxzeXN3cml0ZXxzZXRwd2VudHxnZXRwd25hbXxnZXRncmVudHxnZXRwd2VudHx1Y2ZpcnN0fHN5c3JlYWR8c2V0cGdycHxzaG1yZWFkfHN5c3NlZWt8c3lzb3Blbnx0ZWxsZGlyfGRlZmluZWR8b3BlbmRpcnxjb25uZWN0fGxjZmlyc3R8Z2V0cHBpZHxiaW5tb2RlfHN5c2NhbGx8c3ByaW50ZnxnZXRwZ3JwfHJlYWRkaXJ8c2Vla2Rpcnx3YWl0cGlkfHJldmVyc2V8dW5zaGlmdHxzeW1saW5rfGRibW9wZW58c2VtZ2V0fG1zZ3JjdnxyZW5hbWV8bGlzdGVufGNocm9vdHxtc2dzbmR8c2htY3RsfGFjY2VwdHx1bnBhY2t8ZXhpc3RzfGZpbGVub3xzaG1nZXR8c3lzdGVtfHVubGlua3xwcmludGZ8Z210aW1lfG1zZ2N0bHxzZW1jdGx8dmFsdWVzfHJpbmRleHxzdWJzdHJ8c3BsaWNlfGxlbmd0aHxtc2dnZXR8c2VsZWN0fHNvY2tldHxyZXR1cm58Y2FsbGVyfGRlbGV0ZXxhbGFybXxpb2N0bHxpbmRleHx1bmRlZnxsc3RhdHx0aW1lc3xzcmFuZHxjaG93bnxmY250bHxjbG9zZXx3cml0ZXx1bWFza3xybWRpcnxzdHVkeXxzbGVlcHxjaG9tcHx1bnRpZXxwcmludHx1dGltZXxta2RpcnxhdGFuMnxzcGxpdHxjcnlwdHxmbG9ja3xjaG1vZHxCRUdJTnxibGVzc3xjaGRpcnxzZW1vcHxzaGlmdHxyZXNldHxsaW5rfHN0YXR8Y2hvcHxncmVwfGZvcmt8ZHVtcHxqb2lufG9wZW58dGVsbHxwaXBlfGV4aXR8Z2xvYnx3YXJufGVhY2h8YmluZHxzb3J0fHBhY2t8ZXZhbHxwdXNofGtleXN8Z2V0Y3xraWxsfHNlZWt8c3FydHxzZW5kfHdhaXR8cmFuZHx0aWVkfHJlYWR8dGltZXxleGVjfHJlY3Z8ZW9mfGNocnxpbnR8b3JkfGV4cHxwb3N8cG9wfHNpbnxsb2d8YWJzfG9jdHxoZXh8dGllfGNvc3x2ZWN8RU5EfHJlZnxtYXB8ZGllfHVjfGxjfGRvIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OidbIl0uKlxcXFwkJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLipcXFxcJCIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjB4WzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ZnVuY3Rpb24oZCl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoZCk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoZCk/ImNvbnN0YW50Lmxhbmd1YWdlIjpjLmhhc093blByb3BlcnR5KGQpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXC5cXC5cXC58XFx8XFx8PXw+Pj18PDw9fDw9PnwmJj18PT58IX58XFxePXwmPXxcXHw9fFxcLj18eD18JT18XFwvPXxcXCo9fFxcLT18XFwrPXw9fnxcXCpcXCp8XFwtXFwtfFxcLlxcLnxcXHxcXHx8JiZ8XFwrXFwrfFxcLT58IT18PT18Pj18PD18Pj58PDx8LHw9fFxcP1xcOnxcXF58XFx8fHh8JXxcXC98XFwqfDx8JnxcXFxcfH58IXw+fFxcLnxcXC18XFwrfFxcLUN8XFwtYnxcXC1TfFxcLXV8XFwtdHxcXC1wfFxcLWx8XFwtZHxcXC1mfFxcLWd8XFwtc3xcXC16fFxcLWt8XFwtZXxcXC1PfFxcLVR8XFwtQnxcXC1NfFxcLUF8XFwtWHxcXC1XfFxcLWN8XFwtUnxcXC1vfFxcLXh8XFwtd3xcXC1yfFxcYig/OmFuZHxjbXB8ZXF8Z2V8Z3R8bGV8bHR8bmV8bm90fG9yfHhvcikifSx7dG9rZW46ImxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLlBlcmxIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9weXRob25faGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxnPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJhbmR8YXN8YXNzZXJ0fGJyZWFrfGNsYXNzfGNvbnRpbnVlfGRlZnxkZWx8ZWxpZnxlbHNlfGV4Y2VwdHxleGVjfGZpbmFsbHl8Zm9yfGZyb218Z2xvYmFsfGlmfGltcG9ydHxpbnxpc3xsYW1iZGF8bm90fG9yfHBhc3N8cHJpbnR8cmFpc2V8cmV0dXJufHRyeXx3aGlsZXx3aXRofHlpZWxkIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgiVHJ1ZXxGYWxzZXxOb25lfE5vdEltcGxlbWVudGVkfEVsbGlwc2lzfF9fZGVidWdfXyIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoImFic3xkaXZtb2R8aW5wdXR8b3BlbnxzdGF0aWNtZXRob2R8YWxsfGVudW1lcmF0ZXxpbnR8b3JkfHN0cnxhbnl8ZXZhbHxpc2luc3RhbmNlfHBvd3xzdW18YmFzZXN0cmluZ3xleGVjZmlsZXxpc3N1YmNsYXNzfHByaW50fHN1cGVyfGJpbmZpbGV8aXRlcnxwcm9wZXJ0eXx0dXBsZXxib29sfGZpbHRlcnxsZW58cmFuZ2V8dHlwZXxieXRlYXJyYXl8ZmxvYXR8bGlzdHxyYXdfaW5wdXR8dW5pY2hyfGNhbGxhYmxlfGZvcm1hdHxsb2NhbHN8cmVkdWNlfHVuaWNvZGV8Y2hyfGZyb3plbnNldHxsb25nfHJlbG9hZHx2YXJzfGNsYXNzbWV0aG9kfGdldGF0dHJ8bWFwfHJlcHJ8eHJhbmdlfGNtcHxnbG9iYWxzfG1heHxyZXZlcnNlZHx6aXB8Y29tcGlsZXxoYXNhdHRyfG1lbW9yeXZpZXd8cm91bmR8X19pbXBvcnRfX3xjb21wbGV4fGhhc2h8bWlufHNldHxhcHBseXxkZWxhdHRyfGhlbHB8bmV4dHxzZXRhdHRyfGJ1ZmZlcnxkaWN0fGhleHxvYmplY3R8c2xpY2V8Y29lcmNlfGRpcnxpZHxvY3R8c29ydGVkfGludGVybiIuc3BsaXQoInwiKSksZD1lLmFycmF5VG9NYXAoIiIuc3BsaXQoInwiKSksZj0iKD86cnx1fHVyfFJ8VXxVUnxVcnx1Uik/IixnPSIoPzooPzpbMS05XVxcZCopfCg/OjApKSIsaD0iKD86MFtvT10/WzAtN10rKSIsaT0iKD86MFt4WF1bXFxkQS1GYS1mXSspIixqPSIoPzowW2JCXVswMV0rKSIsaz0iKD86IitnKyJ8IitoKyJ8IitpKyJ8IitqKyIpIixsPSIoPzpbZUVdWystXT9cXGQrKSIsbT0iKD86XFwuXFxkKykiLG49Iig/OlxcZCspIixvPSIoPzooPzoiK24rIj8iK20rIil8KD86IituKyJcXC4pKSIscD0iKD86KD86IitvKyJ8IituKyIpIitsKyIpIixxPSIoPzoiK3ArInwiK28rIikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiIy4qJCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDpmKyciezN9KD86W15cXFxcXXxcXFxcLikqPyJ7M30nfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6ZisnInszfS4qJCcsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6ZisnIig/OlteXFxcXF18XFxcXC4pKj8iJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmYrIid7M30oPzpbXlxcXFxdfFxcXFwuKSo/J3szfSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDpmKyInezN9LiokIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmYrIicoPzpbXlxcXFxdfFxcXFwuKSo/JyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6Iig/OiIrcSsifFxcZCspW2pKXVxcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6cX0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDprKyJbbExdXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDprKyJcXGIifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoZSk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoZSk/ImNvbnN0YW50Lmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGUpPyJpbnZhbGlkLmlsbGVnYWwiOmMuaGFzT3duUHJvcGVydHkoZSk/InN1cHBvcnQuZnVuY3Rpb24iOmU9PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFwrfFxcLXxcXCp8XFwqXFwqfFxcL3xcXC9cXC98JXw8PHw+PnwmfFxcfHxcXF58fnw8fD58PD18PT58PT18IT18PD58PSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcW1xcKFxce10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF1cXClcXH1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzpbXlxcXFxdfFxcXFwuKSo/InszfScsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqPyd7M30iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLlB5dGhvbkhpZ2hsaWdodFJ1bGVzPWd9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-php.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9waHAiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvcGhwX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vcGhwX2hpZ2hsaWdodF9ydWxlcyIpLlBocEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuLi9yYW5nZSIpLlJhbmdlLGo9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGs9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgaix0aGlzLmZvbGRpbmdSdWxlcz1uZXcga307ZC5pbmhlcml0cyhsLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopIy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIiMiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQiKXt2YXIgZz1iLm1hdGNoKC9eLipbXHtcKFxbXDpdXHMqJC8pO2cmJihkKz1jKX1yZXR1cm4gZH0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudChiLGMpfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KGIsYyl9fS5jYWxsKGwucHJvdG90eXBlKSxiLk1vZGU9bH0pLGRlZmluZSgiYWNlL21vZGUvcGhwX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGc9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxoPWZ1bmN0aW9uKCl7dmFyIGE9ZixiPWUuYXJyYXlUb01hcCgiYWJzfGFjb3N8YWNvc2h8YWRkY3NsYXNoZXN8YWRkc2xhc2hlc3xhZ2dyZWdhdGV8YWdncmVnYXRlX2luZm98YWdncmVnYXRlX21ldGhvZHN8YWdncmVnYXRlX21ldGhvZHNfYnlfbGlzdHxhZ2dyZWdhdGVfbWV0aG9kc19ieV9yZWdleHB8YWdncmVnYXRlX3Byb3BlcnRpZXN8YWdncmVnYXRlX3Byb3BlcnRpZXNfYnlfbGlzdHxhZ2dyZWdhdGVfcHJvcGVydGllc19ieV9yZWdleHB8YWdncmVnYXRpb25faW5mb3xhbXFwY29ubmVjdGlvbnxhbXFwZXhjaGFuZ2V8YW1xcHF1ZXVlfGFwYWNoZV9jaGlsZF90ZXJtaW5hdGV8YXBhY2hlX2dldF9tb2R1bGVzfGFwYWNoZV9nZXRfdmVyc2lvbnxhcGFjaGVfZ2V0ZW52fGFwYWNoZV9sb29rdXBfdXJpfGFwYWNoZV9ub3RlfGFwYWNoZV9yZXF1ZXN0X2hlYWRlcnN8YXBhY2hlX3Jlc2V0X3RpbWVvdXR8YXBhY2hlX3Jlc3BvbnNlX2hlYWRlcnN8YXBhY2hlX3NldGVudnxhcGNfYWRkfGFwY19iaW5fZHVtcHxhcGNfYmluX2R1bXBmaWxlfGFwY19iaW5fbG9hZHxhcGNfYmluX2xvYWRmaWxlfGFwY19jYWNoZV9pbmZvfGFwY19jYXN8YXBjX2NsZWFyX2NhY2hlfGFwY19jb21waWxlX2ZpbGV8YXBjX2RlY3xhcGNfZGVmaW5lX2NvbnN0YW50c3xhcGNfZGVsZXRlfGFwY19kZWxldGVfZmlsZXxhcGNfZXhpc3RzfGFwY19mZXRjaHxhcGNfaW5jfGFwY19sb2FkX2NvbnN0YW50c3xhcGNfc21hX2luZm98YXBjX3N0b3JlfGFwY2l0ZXJhdG9yfGFwZF9icmVha3BvaW50fGFwZF9jYWxsc3RhY2t8YXBkX2NsdW5rfGFwZF9jb250aW51ZXxhcGRfY3JvYWt8YXBkX2R1bXBfZnVuY3Rpb25fdGFibGV8YXBkX2R1bXBfcGVyc2lzdGVudF9yZXNvdXJjZXN8YXBkX2R1bXBfcmVndWxhcl9yZXNvdXJjZXN8YXBkX2VjaG98YXBkX2dldF9hY3RpdmVfc3ltYm9sc3xhcGRfc2V0X3Bwcm9mX3RyYWNlfGFwZF9zZXRfc2Vzc2lvbnxhcGRfc2V0X3Nlc3Npb25fdHJhY2V8YXBkX3NldF9zZXNzaW9uX3RyYWNlX3NvY2tldHxhcHBlbmRpdGVyYXRvcnxhcnJheXxhcnJheV9jaGFuZ2Vfa2V5X2Nhc2V8YXJyYXlfY2h1bmt8YXJyYXlfY29tYmluZXxhcnJheV9jb3VudF92YWx1ZXN8YXJyYXlfZGlmZnxhcnJheV9kaWZmX2Fzc29jfGFycmF5X2RpZmZfa2V5fGFycmF5X2RpZmZfdWFzc29jfGFycmF5X2RpZmZfdWtleXxhcnJheV9maWxsfGFycmF5X2ZpbGxfa2V5c3xhcnJheV9maWx0ZXJ8YXJyYXlfZmxpcHxhcnJheV9pbnRlcnNlY3R8YXJyYXlfaW50ZXJzZWN0X2Fzc29jfGFycmF5X2ludGVyc2VjdF9rZXl8YXJyYXlfaW50ZXJzZWN0X3Vhc3NvY3xhcnJheV9pbnRlcnNlY3RfdWtleXxhcnJheV9rZXlfZXhpc3RzfGFycmF5X2tleXN8YXJyYXlfbWFwfGFycmF5X21lcmdlfGFycmF5X21lcmdlX3JlY3Vyc2l2ZXxhcnJheV9tdWx0aXNvcnR8YXJyYXlfcGFkfGFycmF5X3BvcHxhcnJheV9wcm9kdWN0fGFycmF5X3B1c2h8YXJyYXlfcmFuZHxhcnJheV9yZWR1Y2V8YXJyYXlfcmVwbGFjZXxhcnJheV9yZXBsYWNlX3JlY3Vyc2l2ZXxhcnJheV9yZXZlcnNlfGFycmF5X3NlYXJjaHxhcnJheV9zaGlmdHxhcnJheV9zbGljZXxhcnJheV9zcGxpY2V8YXJyYXlfc3VtfGFycmF5X3VkaWZmfGFycmF5X3VkaWZmX2Fzc29jfGFycmF5X3VkaWZmX3Vhc3NvY3xhcnJheV91aW50ZXJzZWN0fGFycmF5X3VpbnRlcnNlY3RfYXNzb2N8YXJyYXlfdWludGVyc2VjdF91YXNzb2N8YXJyYXlfdW5pcXVlfGFycmF5X3Vuc2hpZnR8YXJyYXlfdmFsdWVzfGFycmF5X3dhbGt8YXJyYXlfd2Fsa19yZWN1cnNpdmV8YXJyYXlhY2Nlc3N8YXJyYXlpdGVyYXRvcnxhcnJheW9iamVjdHxhcnNvcnR8YXNpbnxhc2luaHxhc29ydHxhc3NlcnR8YXNzZXJ0X29wdGlvbnN8YXRhbnxhdGFuMnxhdGFuaHxhdWRpb3Byb3BlcnRpZXN8YmFkZnVuY3Rpb25jYWxsZXhjZXB0aW9ufGJhZG1ldGhvZGNhbGxleGNlcHRpb258YmFzZTY0X2RlY29kZXxiYXNlNjRfZW5jb2RlfGJhc2VfY29udmVydHxiYXNlbmFtZXxiYmNvZGVfYWRkX2VsZW1lbnR8YmJjb2RlX2FkZF9zbWlsZXl8YmJjb2RlX2NyZWF0ZXxiYmNvZGVfZGVzdHJveXxiYmNvZGVfcGFyc2V8YmJjb2RlX3NldF9hcmdfcGFyc2VyfGJiY29kZV9zZXRfZmxhZ3N8YmNhZGR8YmNjb21wfGJjZGl2fGJjbW9kfGJjbXVsfGJjb21waWxlcl9sb2FkfGJjb21waWxlcl9sb2FkX2V4ZXxiY29tcGlsZXJfcGFyc2VfY2xhc3N8YmNvbXBpbGVyX3JlYWR8YmNvbXBpbGVyX3dyaXRlX2NsYXNzfGJjb21waWxlcl93cml0ZV9jb25zdGFudHxiY29tcGlsZXJfd3JpdGVfZXhlX2Zvb3RlcnxiY29tcGlsZXJfd3JpdGVfZmlsZXxiY29tcGlsZXJfd3JpdGVfZm9vdGVyfGJjb21waWxlcl93cml0ZV9mdW5jdGlvbnxiY29tcGlsZXJfd3JpdGVfZnVuY3Rpb25zX2Zyb21fZmlsZXxiY29tcGlsZXJfd3JpdGVfaGVhZGVyfGJjb21waWxlcl93cml0ZV9pbmNsdWRlZF9maWxlbmFtZXxiY3Bvd3xiY3Bvd21vZHxiY3NjYWxlfGJjc3FydHxiY3N1YnxiaW4yaGV4fGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0fGJpbmRlY3xiaW5kdGV4dGRvbWFpbnxic29uX2RlY29kZXxic29uX2VuY29kZXxidW1wVmFsdWV8YnpjbG9zZXxiemNvbXByZXNzfGJ6ZGVjb21wcmVzc3xiemVycm5vfGJ6ZXJyb3J8YnplcnJzdHJ8YnpmbHVzaHxiem9wZW58YnpyZWFkfGJ6d3JpdGV8Y2FjaGluZ2l0ZXJhdG9yfGNhaXJvfGNhaXJvX2NyZWF0ZXxjYWlyb19mb250X2ZhY2VfZ2V0X3R5cGV8Y2Fpcm9fZm9udF9mYWNlX3N0YXR1c3xjYWlyb19mb250X29wdGlvbnNfY3JlYXRlfGNhaXJvX2ZvbnRfb3B0aW9uc19lcXVhbHxjYWlyb19mb250X29wdGlvbnNfZ2V0X2FudGlhbGlhc3xjYWlyb19mb250X29wdGlvbnNfZ2V0X2hpbnRfbWV0cmljc3xjYWlyb19mb250X29wdGlvbnNfZ2V0X2hpbnRfc3R5bGV8Y2Fpcm9fZm9udF9vcHRpb25zX2dldF9zdWJwaXhlbF9vcmRlcnxjYWlyb19mb250X29wdGlvbnNfaGFzaHxjYWlyb19mb250X29wdGlvbnNfbWVyZ2V8Y2Fpcm9fZm9udF9vcHRpb25zX3NldF9hbnRpYWxpYXN8Y2Fpcm9fZm9udF9vcHRpb25zX3NldF9oaW50X21ldHJpY3N8Y2Fpcm9fZm9udF9vcHRpb25zX3NldF9oaW50X3N0eWxlfGNhaXJvX2ZvbnRfb3B0aW9uc19zZXRfc3VicGl4ZWxfb3JkZXJ8Y2Fpcm9fZm9udF9vcHRpb25zX3N0YXR1c3xjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aHxjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZXxjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YXxjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mcm9tX3BuZ3xjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhfGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdHxjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHR8Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlfGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRofGNhaXJvX21hdHJpeF9jcmVhdGVfc2NhbGV8Y2Fpcm9fbWF0cml4X2NyZWF0ZV90cmFuc2xhdGV8Y2Fpcm9fbWF0cml4X2ludmVydHxjYWlyb19tYXRyaXhfbXVsdGlwbHl8Y2Fpcm9fbWF0cml4X3JvdGF0ZXxjYWlyb19tYXRyaXhfdHJhbnNmb3JtX2Rpc3RhbmNlfGNhaXJvX21hdHJpeF90cmFuc2Zvcm1fcG9pbnR8Y2Fpcm9fbWF0cml4X3RyYW5zbGF0ZXxjYWlyb19wYXR0ZXJuX2FkZF9jb2xvcl9zdG9wX3JnYnxjYWlyb19wYXR0ZXJuX2FkZF9jb2xvcl9zdG9wX3JnYmF8Y2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2V8Y2Fpcm9fcGF0dGVybl9jcmVhdGVfbGluZWFyfGNhaXJvX3BhdHRlcm5fY3JlYXRlX3JhZGlhbHxjYWlyb19wYXR0ZXJuX2NyZWF0ZV9yZ2J8Y2Fpcm9fcGF0dGVybl9jcmVhdGVfcmdiYXxjYWlyb19wYXR0ZXJuX2dldF9jb2xvcl9zdG9wX2NvdW50fGNhaXJvX3BhdHRlcm5fZ2V0X2NvbG9yX3N0b3BfcmdiYXxjYWlyb19wYXR0ZXJuX2dldF9leHRlbmR8Y2Fpcm9fcGF0dGVybl9nZXRfZmlsdGVyfGNhaXJvX3BhdHRlcm5fZ2V0X2xpbmVhcl9wb2ludHN8Y2Fpcm9fcGF0dGVybl9nZXRfbWF0cml4fGNhaXJvX3BhdHRlcm5fZ2V0X3JhZGlhbF9jaXJjbGVzfGNhaXJvX3BhdHRlcm5fZ2V0X3JnYmF8Y2Fpcm9fcGF0dGVybl9nZXRfc3VyZmFjZXxjYWlyb19wYXR0ZXJuX2dldF90eXBlfGNhaXJvX3BhdHRlcm5fc2V0X2V4dGVuZHxjYWlyb19wYXR0ZXJuX3NldF9maWx0ZXJ8Y2Fpcm9fcGF0dGVybl9zZXRfbWF0cml4fGNhaXJvX3BhdHRlcm5fc3RhdHVzfGNhaXJvX3BkZl9zdXJmYWNlX2NyZWF0ZXxjYWlyb19wZGZfc3VyZmFjZV9zZXRfc2l6ZXxjYWlyb19wc19nZXRfbGV2ZWxzfGNhaXJvX3BzX2xldmVsX3RvX3N0cmluZ3xjYWlyb19wc19zdXJmYWNlX2NyZWF0ZXxjYWlyb19wc19zdXJmYWNlX2RzY19iZWdpbl9wYWdlX3NldHVwfGNhaXJvX3BzX3N1cmZhY2VfZHNjX2JlZ2luX3NldHVwfGNhaXJvX3BzX3N1cmZhY2VfZHNjX2NvbW1lbnR8Y2Fpcm9fcHNfc3VyZmFjZV9nZXRfZXBzfGNhaXJvX3BzX3N1cmZhY2VfcmVzdHJpY3RfdG9fbGV2ZWx8Y2Fpcm9fcHNfc3VyZmFjZV9zZXRfZXBzfGNhaXJvX3BzX3N1cmZhY2Vfc2V0X3NpemV8Y2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlfGNhaXJvX3NjYWxlZF9mb250X2V4dGVudHN8Y2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2N0bXxjYWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9mYWNlfGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X21hdHJpeHxjYWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9vcHRpb25zfGNhaXJvX3NjYWxlZF9mb250X2dldF9zY2FsZV9tYXRyaXh8Y2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X3R5cGV8Y2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0ZW50c3xjYWlyb19zY2FsZWRfZm9udF9zdGF0dXN8Y2Fpcm9fc2NhbGVkX2ZvbnRfdGV4dF9leHRlbnRzfGNhaXJvX3N1cmZhY2VfY29weV9wYWdlfGNhaXJvX3N1cmZhY2VfY3JlYXRlX3NpbWlsYXJ8Y2Fpcm9fc3VyZmFjZV9maW5pc2h8Y2Fpcm9fc3VyZmFjZV9mbHVzaHxjYWlyb19zdXJmYWNlX2dldF9jb250ZW50fGNhaXJvX3N1cmZhY2VfZ2V0X2RldmljZV9vZmZzZXR8Y2Fpcm9fc3VyZmFjZV9nZXRfZm9udF9vcHRpb25zfGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGV8Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5fGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGV8Y2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX29mZnNldHxjYWlyb19zdXJmYWNlX3NldF9mYWxsYmFja19yZXNvbHV0aW9ufGNhaXJvX3N1cmZhY2Vfc2hvd19wYWdlfGNhaXJvX3N1cmZhY2Vfc3RhdHVzfGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nfGNhaXJvX3N2Z19zdXJmYWNlX2NyZWF0ZXxjYWlyb19zdmdfc3VyZmFjZV9yZXN0cmljdF90b192ZXJzaW9ufGNhaXJvX3N2Z192ZXJzaW9uX3RvX3N0cmluZ3xjYWlyb2FudGlhbGlhc3xjYWlyb2NvbnRlbnR8Y2Fpcm9jb250ZXh0fGNhaXJvZXhjZXB0aW9ufGNhaXJvZXh0ZW5kfGNhaXJvZmlsbHJ1bGV8Y2Fpcm9maWx0ZXJ8Y2Fpcm9mb250ZmFjZXxjYWlyb2ZvbnRvcHRpb25zfGNhaXJvZm9udHNsYW50fGNhaXJvZm9udHR5cGV8Y2Fpcm9mb250d2VpZ2h0fGNhaXJvZm9ybWF0fGNhaXJvZ3JhZGllbnRwYXR0ZXJufGNhaXJvaGludG1ldHJpY3N8Y2Fpcm9oaW50c3R5bGV8Y2Fpcm9pbWFnZXN1cmZhY2V8Y2Fpcm9saW5lYXJncmFkaWVudHxjYWlyb2xpbmVjYXB8Y2Fpcm9saW5lam9pbnxjYWlyb21hdHJpeHxjYWlyb29wZXJhdG9yfGNhaXJvcGF0aHxjYWlyb3BhdHRlcm58Y2Fpcm9wYXR0ZXJudHlwZXxjYWlyb3BkZnN1cmZhY2V8Y2Fpcm9wc2xldmVsfGNhaXJvcHNzdXJmYWNlfGNhaXJvcmFkaWFsZ3JhZGllbnR8Y2Fpcm9zY2FsZWRmb250fGNhaXJvc29saWRwYXR0ZXJufGNhaXJvc3RhdHVzfGNhaXJvc3VicGl4ZWxvcmRlcnxjYWlyb3N1cmZhY2V8Y2Fpcm9zdXJmYWNlcGF0dGVybnxjYWlyb3N1cmZhY2V0eXBlfGNhaXJvc3Znc3VyZmFjZXxjYWlyb3N2Z3ZlcnNpb258Y2Fpcm90b3lmb250ZmFjZXxjYWxfZGF5c19pbl9tb250aHxjYWxfZnJvbV9qZHxjYWxfaW5mb3xjYWxfdG9famR8Y2FsY3VsX2htYWN8Y2FsY3VsaG1hY3xjYWxsX3VzZXJfZnVuY3xjYWxsX3VzZXJfZnVuY19hcnJheXxjYWxsX3VzZXJfbWV0aG9kfGNhbGxfdXNlcl9tZXRob2RfYXJyYXl8Y2FsbGJhY2tmaWx0ZXJpdGVyYXRvcnxjZWlsfGNoZGJ8Y2hkYl9jcmVhdGV8Y2hkaXJ8Y2hlY2tkYXRlfGNoZWNrZG5zcnJ8Y2hncnB8Y2htb2R8Y2hvcHxjaG93bnxjaHJ8Y2hyb290fGNodW5rX3NwbGl0fGNsYXNzX2FsaWFzfGNsYXNzX2V4aXN0c3xjbGFzc19pbXBsZW1lbnRzfGNsYXNzX3BhcmVudHN8Y2xhc3NraXRfaW1wb3J0fGNsYXNza2l0X21ldGhvZF9hZGR8Y2xhc3NraXRfbWV0aG9kX2NvcHl8Y2xhc3NraXRfbWV0aG9kX3JlZGVmaW5lfGNsYXNza2l0X21ldGhvZF9yZW1vdmV8Y2xhc3NraXRfbWV0aG9kX3JlbmFtZXxjbGVhcnN0YXRjYWNoZXxjbG9uZXxjbG9zZWRpcnxjbG9zZWxvZ3xjb2xsYXRvcnxjb218Y29tX2FkZHJlZnxjb21fY3JlYXRlX2d1aWR8Y29tX2V2ZW50X3Npbmt8Y29tX2dldHxjb21fZ2V0X2FjdGl2ZV9vYmplY3R8Y29tX2ludm9rZXxjb21faXNlbnVtfGNvbV9sb2FkfGNvbV9sb2FkX3R5cGVsaWJ8Y29tX21lc3NhZ2VfcHVtcHxjb21fcHJpbnRfdHlwZWluZm98Y29tX3Byb3BnZXR8Y29tX3Byb3BwdXR8Y29tX3Byb3BzZXR8Y29tX3JlbGVhc2V8Y29tX3NldHxjb21wYWN0fGNvbm5lY3Rpb25fYWJvcnRlZHxjb25uZWN0aW9uX3N0YXR1c3xjb25uZWN0aW9uX3RpbWVvdXR8Y29uc3RhbnR8Y29uc3RydWN0fGNvbnN0cnVjdHxjb25zdHJ1Y3R8Y29udmVydF9jeXJfc3RyaW5nfGNvbnZlcnRfdXVkZWNvZGV8Y29udmVydF91dWVuY29kZXxjb3B5fGNvc3xjb3NofGNvdW50fGNvdW50X2NoYXJzfGNvdW50YWJsZXxjb3VudGVyX2J1bXB8Y291bnRlcl9idW1wX3ZhbHVlfGNvdW50ZXJfY3JlYXRlfGNvdW50ZXJfZ2V0fGNvdW50ZXJfZ2V0X21ldGF8Y291bnRlcl9nZXRfbmFtZWR8Y291bnRlcl9nZXRfdmFsdWV8Y291bnRlcl9yZXNldHxjb3VudGVyX3Jlc2V0X3ZhbHVlfGNyYWNrX2NoZWNrfGNyYWNrX2Nsb3NlZGljdHxjcmFja19nZXRsYXN0bWVzc2FnZXxjcmFja19vcGVuZGljdHxjcmMzMnxjcmVhdGVfZnVuY3Rpb258Y3J5cHR8Y3R5cGVfYWxudW18Y3R5cGVfYWxwaGF8Y3R5cGVfY250cmx8Y3R5cGVfZGlnaXR8Y3R5cGVfZ3JhcGh8Y3R5cGVfbG93ZXJ8Y3R5cGVfcHJpbnR8Y3R5cGVfcHVuY3R8Y3R5cGVfc3BhY2V8Y3R5cGVfdXBwZXJ8Y3R5cGVfeGRpZ2l0fGN1YnJpZF9hZmZlY3RlZF9yb3dzfGN1YnJpZF9iaW5kfGN1YnJpZF9jbGllbnRfZW5jb2Rpbmd8Y3VicmlkX2Nsb3NlfGN1YnJpZF9jbG9zZV9wcmVwYXJlfGN1YnJpZF9jbG9zZV9yZXF1ZXN0fGN1YnJpZF9jb2xfZ2V0fGN1YnJpZF9jb2xfc2l6ZXxjdWJyaWRfY29sdW1uX25hbWVzfGN1YnJpZF9jb2x1bW5fdHlwZXN8Y3VicmlkX2NvbW1pdHxjdWJyaWRfY29ubmVjdHxjdWJyaWRfY29ubmVjdF93aXRoX3VybHxjdWJyaWRfY3VycmVudF9vaWR8Y3VicmlkX2RhdGFfc2Vla3xjdWJyaWRfZGJfbmFtZXxjdWJyaWRfZGlzY29ubmVjdHxjdWJyaWRfZHJvcHxjdWJyaWRfZXJybm98Y3VicmlkX2Vycm9yfGN1YnJpZF9lcnJvcl9jb2RlfGN1YnJpZF9lcnJvcl9jb2RlX2ZhY2lsaXR5fGN1YnJpZF9lcnJvcl9tc2d8Y3VicmlkX2V4ZWN1dGV8Y3VicmlkX2ZldGNofGN1YnJpZF9mZXRjaF9hcnJheXxjdWJyaWRfZmV0Y2hfYXNzb2N8Y3VicmlkX2ZldGNoX2ZpZWxkfGN1YnJpZF9mZXRjaF9sZW5ndGhzfGN1YnJpZF9mZXRjaF9vYmplY3R8Y3VicmlkX2ZldGNoX3Jvd3xjdWJyaWRfZmllbGRfZmxhZ3N8Y3VicmlkX2ZpZWxkX2xlbnxjdWJyaWRfZmllbGRfbmFtZXxjdWJyaWRfZmllbGRfc2Vla3xjdWJyaWRfZmllbGRfdGFibGV8Y3VicmlkX2ZpZWxkX3R5cGV8Y3VicmlkX2ZyZWVfcmVzdWx0fGN1YnJpZF9nZXR8Y3VicmlkX2dldF9hdXRvY29tbWl0fGN1YnJpZF9nZXRfY2hhcnNldHxjdWJyaWRfZ2V0X2NsYXNzX25hbWV8Y3VicmlkX2dldF9jbGllbnRfaW5mb3xjdWJyaWRfZ2V0X2RiX3BhcmFtZXRlcnxjdWJyaWRfZ2V0X3NlcnZlcl9pbmZvfGN1YnJpZF9pbnNlcnRfaWR8Y3VicmlkX2lzX2luc3RhbmNlfGN1YnJpZF9saXN0X2Ric3xjdWJyaWRfbG9hZF9mcm9tX2dsb3xjdWJyaWRfbG9iX2Nsb3NlfGN1YnJpZF9sb2JfZXhwb3J0fGN1YnJpZF9sb2JfZ2V0fGN1YnJpZF9sb2Jfc2VuZHxjdWJyaWRfbG9iX3NpemV8Y3VicmlkX2xvY2tfcmVhZHxjdWJyaWRfbG9ja193cml0ZXxjdWJyaWRfbW92ZV9jdXJzb3J8Y3VicmlkX25ld19nbG98Y3VicmlkX25leHRfcmVzdWx0fGN1YnJpZF9udW1fY29sc3xjdWJyaWRfbnVtX2ZpZWxkc3xjdWJyaWRfbnVtX3Jvd3N8Y3VicmlkX3Bpbmd8Y3VicmlkX3ByZXBhcmV8Y3VicmlkX3B1dHxjdWJyaWRfcXVlcnl8Y3VicmlkX3JlYWxfZXNjYXBlX3N0cmluZ3xjdWJyaWRfcmVzdWx0fGN1YnJpZF9yb2xsYmFja3xjdWJyaWRfc2F2ZV90b19nbG98Y3VicmlkX3NjaGVtYXxjdWJyaWRfc2VuZF9nbG98Y3VicmlkX3NlcV9kcm9wfGN1YnJpZF9zZXFfaW5zZXJ0fGN1YnJpZF9zZXFfcHV0fGN1YnJpZF9zZXRfYWRkfGN1YnJpZF9zZXRfYXV0b2NvbW1pdHxjdWJyaWRfc2V0X2RiX3BhcmFtZXRlcnxjdWJyaWRfc2V0X2Ryb3B8Y3VicmlkX3VuYnVmZmVyZWRfcXVlcnl8Y3VicmlkX3ZlcnNpb258Y3VybF9jbG9zZXxjdXJsX2NvcHlfaGFuZGxlfGN1cmxfZXJybm98Y3VybF9lcnJvcnxjdXJsX2V4ZWN8Y3VybF9nZXRpbmZvfGN1cmxfaW5pdHxjdXJsX211bHRpX2FkZF9oYW5kbGV8Y3VybF9tdWx0aV9jbG9zZXxjdXJsX211bHRpX2V4ZWN8Y3VybF9tdWx0aV9nZXRjb250ZW50fGN1cmxfbXVsdGlfaW5mb19yZWFkfGN1cmxfbXVsdGlfaW5pdHxjdXJsX211bHRpX3JlbW92ZV9oYW5kbGV8Y3VybF9tdWx0aV9zZWxlY3R8Y3VybF9zZXRvcHR8Y3VybF9zZXRvcHRfYXJyYXl8Y3VybF92ZXJzaW9ufGN1cnJlbnR8Y3lydXNfYXV0aGVudGljYXRlfGN5cnVzX2JpbmR8Y3lydXNfY2xvc2V8Y3lydXNfY29ubmVjdHxjeXJ1c19xdWVyeXxjeXJ1c191bmJpbmR8ZGF0ZXxkYXRlX2FkZHxkYXRlX2NyZWF0ZXxkYXRlX2NyZWF0ZV9mcm9tX2Zvcm1hdHxkYXRlX2RhdGVfc2V0fGRhdGVfZGVmYXVsdF90aW1lem9uZV9nZXR8ZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldHxkYXRlX2RpZmZ8ZGF0ZV9mb3JtYXR8ZGF0ZV9nZXRfbGFzdF9lcnJvcnN8ZGF0ZV9pbnRlcnZhbF9jcmVhdGVfZnJvbV9kYXRlX3N0cmluZ3xkYXRlX2ludGVydmFsX2Zvcm1hdHxkYXRlX2lzb2RhdGVfc2V0fGRhdGVfbW9kaWZ5fGRhdGVfb2Zmc2V0X2dldHxkYXRlX3BhcnNlfGRhdGVfcGFyc2VfZnJvbV9mb3JtYXR8ZGF0ZV9zdWJ8ZGF0ZV9zdW5faW5mb3xkYXRlX3N1bnJpc2V8ZGF0ZV9zdW5zZXR8ZGF0ZV90aW1lX3NldHxkYXRlX3RpbWVzdGFtcF9nZXR8ZGF0ZV90aW1lc3RhbXBfc2V0fGRhdGVfdGltZXpvbmVfZ2V0fGRhdGVfdGltZXpvbmVfc2V0fGRhdGVpbnRlcnZhbHxkYXRlcGVyaW9kfGRhdGV0aW1lfGRhdGV0aW1lem9uZXxkYjJfYXV0b2NvbW1pdHxkYjJfYmluZF9wYXJhbXxkYjJfY2xpZW50X2luZm98ZGIyX2Nsb3NlfGRiMl9jb2x1bW5fcHJpdmlsZWdlc3xkYjJfY29sdW1uc3xkYjJfY29tbWl0fGRiMl9jb25uX2Vycm9yfGRiMl9jb25uX2Vycm9ybXNnfGRiMl9jb25uZWN0fGRiMl9jdXJzb3JfdHlwZXxkYjJfZXNjYXBlX3N0cmluZ3xkYjJfZXhlY3xkYjJfZXhlY3V0ZXxkYjJfZmV0Y2hfYXJyYXl8ZGIyX2ZldGNoX2Fzc29jfGRiMl9mZXRjaF9ib3RofGRiMl9mZXRjaF9vYmplY3R8ZGIyX2ZldGNoX3Jvd3xkYjJfZmllbGRfZGlzcGxheV9zaXplfGRiMl9maWVsZF9uYW1lfGRiMl9maWVsZF9udW18ZGIyX2ZpZWxkX3ByZWNpc2lvbnxkYjJfZmllbGRfc2NhbGV8ZGIyX2ZpZWxkX3R5cGV8ZGIyX2ZpZWxkX3dpZHRofGRiMl9mb3JlaWduX2tleXN8ZGIyX2ZyZWVfcmVzdWx0fGRiMl9mcmVlX3N0bXR8ZGIyX2dldF9vcHRpb258ZGIyX2xhc3RfaW5zZXJ0X2lkfGRiMl9sb2JfcmVhZHxkYjJfbmV4dF9yZXN1bHR8ZGIyX251bV9maWVsZHN8ZGIyX251bV9yb3dzfGRiMl9wY2xvc2V8ZGIyX3Bjb25uZWN0fGRiMl9wcmVwYXJlfGRiMl9wcmltYXJ5X2tleXN8ZGIyX3Byb2NlZHVyZV9jb2x1bW5zfGRiMl9wcm9jZWR1cmVzfGRiMl9yZXN1bHR8ZGIyX3JvbGxiYWNrfGRiMl9zZXJ2ZXJfaW5mb3xkYjJfc2V0X29wdGlvbnxkYjJfc3BlY2lhbF9jb2x1bW5zfGRiMl9zdGF0aXN0aWNzfGRiMl9zdG10X2Vycm9yfGRiMl9zdG10X2Vycm9ybXNnfGRiMl90YWJsZV9wcml2aWxlZ2VzfGRiMl90YWJsZXN8ZGJhX2Nsb3NlfGRiYV9kZWxldGV8ZGJhX2V4aXN0c3xkYmFfZmV0Y2h8ZGJhX2ZpcnN0a2V5fGRiYV9oYW5kbGVyc3xkYmFfaW5zZXJ0fGRiYV9rZXlfc3BsaXR8ZGJhX2xpc3R8ZGJhX25leHRrZXl8ZGJhX29wZW58ZGJhX29wdGltaXplfGRiYV9wb3BlbnxkYmFfcmVwbGFjZXxkYmFfc3luY3xkYmFzZV9hZGRfcmVjb3JkfGRiYXNlX2Nsb3NlfGRiYXNlX2NyZWF0ZXxkYmFzZV9kZWxldGVfcmVjb3JkfGRiYXNlX2dldF9oZWFkZXJfaW5mb3xkYmFzZV9nZXRfcmVjb3JkfGRiYXNlX2dldF9yZWNvcmRfd2l0aF9uYW1lc3xkYmFzZV9udW1maWVsZHN8ZGJhc2VfbnVtcmVjb3Jkc3xkYmFzZV9vcGVufGRiYXNlX3BhY2t8ZGJhc2VfcmVwbGFjZV9yZWNvcmR8ZGJwbHVzX2FkZHxkYnBsdXNfYXFsfGRicGx1c19jaGRpcnxkYnBsdXNfY2xvc2V8ZGJwbHVzX2N1cnJ8ZGJwbHVzX2VycmNvZGV8ZGJwbHVzX2Vycm5vfGRicGx1c19maW5kfGRicGx1c19maXJzdHxkYnBsdXNfZmx1c2h8ZGJwbHVzX2ZyZWVhbGxsb2Nrc3xkYnBsdXNfZnJlZWxvY2t8ZGJwbHVzX2ZyZWVybG9ja3N8ZGJwbHVzX2dldGxvY2t8ZGJwbHVzX2dldHVuaXF1ZXxkYnBsdXNfaW5mb3xkYnBsdXNfbGFzdHxkYnBsdXNfbG9ja3JlbHxkYnBsdXNfbmV4dHxkYnBsdXNfb3BlbnxkYnBsdXNfcHJldnxkYnBsdXNfcmNocGVybXxkYnBsdXNfcmNyZWF0ZXxkYnBsdXNfcmNydGV4YWN0fGRicGx1c19yY3J0bGlrZXxkYnBsdXNfcmVzb2x2ZXxkYnBsdXNfcmVzdG9yZXBvc3xkYnBsdXNfcmtleXN8ZGJwbHVzX3JvcGVufGRicGx1c19ycXVlcnl8ZGJwbHVzX3JyZW5hbWV8ZGJwbHVzX3JzZWNpbmRleHxkYnBsdXNfcnVubGlua3xkYnBsdXNfcnphcHxkYnBsdXNfc2F2ZXBvc3xkYnBsdXNfc2V0aW5kZXh8ZGJwbHVzX3NldGluZGV4YnludW1iZXJ8ZGJwbHVzX3NxbHxkYnBsdXNfdGNsfGRicGx1c190cmVtb3ZlfGRicGx1c191bmRvfGRicGx1c191bmRvcHJlcGFyZXxkYnBsdXNfdW5sb2NrcmVsfGRicGx1c191bnNlbGVjdHxkYnBsdXNfdXBkYXRlfGRicGx1c194bG9ja3JlbHxkYnBsdXNfeHVubG9ja3JlbHxkYnhfY2xvc2V8ZGJ4X2NvbXBhcmV8ZGJ4X2Nvbm5lY3R8ZGJ4X2Vycm9yfGRieF9lc2NhcGVfc3RyaW5nfGRieF9mZXRjaF9yb3d8ZGJ4X3F1ZXJ5fGRieF9zb3J0fGRjZ2V0dGV4dHxkY25nZXR0ZXh0fGRlYWdncmVnYXRlfGRlYnVnX2JhY2t0cmFjZXxkZWJ1Z19wcmludF9iYWNrdHJhY2V8ZGVidWdfenZhbF9kdW1wfGRlY2JpbnxkZWNoZXh8ZGVjb2N0fGRlZmluZXxkZWZpbmVfc3lzbG9nX3ZhcmlhYmxlc3xkZWZpbmVkfGRlZzJyYWR8ZGVsZXRlfGRnZXR0ZXh0fGRpZXxkaW9fY2xvc2V8ZGlvX2ZjbnRsfGRpb19vcGVufGRpb19yZWFkfGRpb19zZWVrfGRpb19zdGF0fGRpb190Y3NldGF0dHJ8ZGlvX3RydW5jYXRlfGRpb193cml0ZXxkaXJ8ZGlyZWN0b3J5aXRlcmF0b3J8ZGlybmFtZXxkaXNrX2ZyZWVfc3BhY2V8ZGlza190b3RhbF9zcGFjZXxkaXNrZnJlZXNwYWNlfGRsfGRuZ2V0dGV4dHxkbnNfY2hlY2tfcmVjb3JkfGRuc19nZXRfbXh8ZG5zX2dldF9yZWNvcmR8ZG9tX2ltcG9ydF9zaW1wbGV4bWx8ZG9tYWluZXhjZXB0aW9ufGRvbWF0dHJ8ZG9tYXR0cmlidXRlX25hbWV8ZG9tYXR0cmlidXRlX3NldF92YWx1ZXxkb21hdHRyaWJ1dGVfc3BlY2lmaWVkfGRvbWF0dHJpYnV0ZV92YWx1ZXxkb21jaGFyYWN0ZXJkYXRhfGRvbWNvbW1lbnR8ZG9tZG9jdW1lbnR8ZG9tZG9jdW1lbnRfYWRkX3Jvb3R8ZG9tZG9jdW1lbnRfY3JlYXRlX2F0dHJpYnV0ZXxkb21kb2N1bWVudF9jcmVhdGVfY2RhdGFfc2VjdGlvbnxkb21kb2N1bWVudF9jcmVhdGVfY29tbWVudHxkb21kb2N1bWVudF9jcmVhdGVfZWxlbWVudHxkb21kb2N1bWVudF9jcmVhdGVfZWxlbWVudF9uc3xkb21kb2N1bWVudF9jcmVhdGVfZW50aXR5X3JlZmVyZW5jZXxkb21kb2N1bWVudF9jcmVhdGVfcHJvY2Vzc2luZ19pbnN0cnVjdGlvbnxkb21kb2N1bWVudF9jcmVhdGVfdGV4dF9ub2RlfGRvbWRvY3VtZW50X2RvY3R5cGV8ZG9tZG9jdW1lbnRfZG9jdW1lbnRfZWxlbWVudHxkb21kb2N1bWVudF9kdW1wX2ZpbGV8ZG9tZG9jdW1lbnRfZHVtcF9tZW18ZG9tZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWR8ZG9tZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X3RhZ25hbWV8ZG9tZG9jdW1lbnRfaHRtbF9kdW1wX21lbXxkb21kb2N1bWVudF94aW5jbHVkZXxkb21kb2N1bWVudGZyYWdtZW50fGRvbWRvY3VtZW50dHlwZXxkb21kb2N1bWVudHR5cGVfZW50aXRpZXN8ZG9tZG9jdW1lbnR0eXBlX2ludGVybmFsX3N1YnNldHxkb21kb2N1bWVudHR5cGVfbmFtZXxkb21kb2N1bWVudHR5cGVfbm90YXRpb25zfGRvbWRvY3VtZW50dHlwZV9wdWJsaWNfaWR8ZG9tZG9jdW1lbnR0eXBlX3N5c3RlbV9pZHxkb21lbGVtZW50fGRvbWVsZW1lbnRfZ2V0X2F0dHJpYnV0ZXxkb21lbGVtZW50X2dldF9hdHRyaWJ1dGVfbm9kZXxkb21lbGVtZW50X2dldF9lbGVtZW50c19ieV90YWduYW1lfGRvbWVsZW1lbnRfaGFzX2F0dHJpYnV0ZXxkb21lbGVtZW50X3JlbW92ZV9hdHRyaWJ1dGV8ZG9tZWxlbWVudF9zZXRfYXR0cmlidXRlfGRvbWVsZW1lbnRfc2V0X2F0dHJpYnV0ZV9ub2RlfGRvbWVsZW1lbnRfdGFnbmFtZXxkb21lbnRpdHl8ZG9tZW50aXR5cmVmZXJlbmNlfGRvbWV4Y2VwdGlvbnxkb21pbXBsZW1lbnRhdGlvbnxkb21uYW1lZG5vZGVtYXB8ZG9tbm9kZXxkb21ub2RlX2FkZF9uYW1lc3BhY2V8ZG9tbm9kZV9hcHBlbmRfY2hpbGR8ZG9tbm9kZV9hcHBlbmRfc2libGluZ3xkb21ub2RlX2F0dHJpYnV0ZXN8ZG9tbm9kZV9jaGlsZF9ub2Rlc3xkb21ub2RlX2Nsb25lX25vZGV8ZG9tbm9kZV9kdW1wX25vZGV8ZG9tbm9kZV9maXJzdF9jaGlsZHxkb21ub2RlX2dldF9jb250ZW50fGRvbW5vZGVfaGFzX2F0dHJpYnV0ZXN8ZG9tbm9kZV9oYXNfY2hpbGRfbm9kZXN8ZG9tbm9kZV9pbnNlcnRfYmVmb3JlfGRvbW5vZGVfaXNfYmxhbmtfbm9kZXxkb21ub2RlX2xhc3RfY2hpbGR8ZG9tbm9kZV9uZXh0X3NpYmxpbmd8ZG9tbm9kZV9ub2RlX25hbWV8ZG9tbm9kZV9ub2RlX3R5cGV8ZG9tbm9kZV9ub2RlX3ZhbHVlfGRvbW5vZGVfb3duZXJfZG9jdW1lbnR8ZG9tbm9kZV9wYXJlbnRfbm9kZXxkb21ub2RlX3ByZWZpeHxkb21ub2RlX3ByZXZpb3VzX3NpYmxpbmd8ZG9tbm9kZV9yZW1vdmVfY2hpbGR8ZG9tbm9kZV9yZXBsYWNlX2NoaWxkfGRvbW5vZGVfcmVwbGFjZV9ub2RlfGRvbW5vZGVfc2V0X2NvbnRlbnR8ZG9tbm9kZV9zZXRfbmFtZXxkb21ub2RlX3NldF9uYW1lc3BhY2V8ZG9tbm9kZV91bmxpbmtfbm9kZXxkb21ub2RlbGlzdHxkb21ub3RhdGlvbnxkb21wcm9jZXNzaW5naW5zdHJ1Y3Rpb258ZG9tcHJvY2Vzc2luZ2luc3RydWN0aW9uX2RhdGF8ZG9tcHJvY2Vzc2luZ2luc3RydWN0aW9uX3RhcmdldHxkb210ZXh0fGRvbXhtbF9uZXdfZG9jfGRvbXhtbF9vcGVuX2ZpbGV8ZG9teG1sX29wZW5fbWVtfGRvbXhtbF92ZXJzaW9ufGRvbXhtbF94bWx0cmVlfGRvbXhtbF94c2x0X3N0eWxlc2hlZXR8ZG9teG1sX3hzbHRfc3R5bGVzaGVldF9kb2N8ZG9teG1sX3hzbHRfc3R5bGVzaGVldF9maWxlfGRvbXhtbF94c2x0X3ZlcnNpb258ZG9teHBhdGh8ZG9teHNsdHN0eWxlc2hlZXRfcHJvY2Vzc3xkb214c2x0c3R5bGVzaGVldF9yZXN1bHRfZHVtcF9maWxlfGRvbXhzbHRzdHlsZXNoZWV0X3Jlc3VsdF9kdW1wX21lbXxkb3RuZXR8ZG90bmV0X2xvYWR8ZG91YmxldmFsfGVhY2h8ZWFzdGVyX2RhdGV8ZWFzdGVyX2RheXN8ZWNob3xlbXB0eXxlbXB0eWl0ZXJhdG9yfGVuY2hhbnRfYnJva2VyX2Rlc2NyaWJlfGVuY2hhbnRfYnJva2VyX2RpY3RfZXhpc3RzfGVuY2hhbnRfYnJva2VyX2ZyZWV8ZW5jaGFudF9icm9rZXJfZnJlZV9kaWN0fGVuY2hhbnRfYnJva2VyX2dldF9lcnJvcnxlbmNoYW50X2Jyb2tlcl9pbml0fGVuY2hhbnRfYnJva2VyX2xpc3RfZGljdHN8ZW5jaGFudF9icm9rZXJfcmVxdWVzdF9kaWN0fGVuY2hhbnRfYnJva2VyX3JlcXVlc3RfcHdsX2RpY3R8ZW5jaGFudF9icm9rZXJfc2V0X29yZGVyaW5nfGVuY2hhbnRfZGljdF9hZGRfdG9fcGVyc29uYWx8ZW5jaGFudF9kaWN0X2FkZF90b19zZXNzaW9ufGVuY2hhbnRfZGljdF9jaGVja3xlbmNoYW50X2RpY3RfZGVzY3JpYmV8ZW5jaGFudF9kaWN0X2dldF9lcnJvcnxlbmNoYW50X2RpY3RfaXNfaW5fc2Vzc2lvbnxlbmNoYW50X2RpY3RfcXVpY2tfY2hlY2t8ZW5jaGFudF9kaWN0X3N0b3JlX3JlcGxhY2VtZW50fGVuY2hhbnRfZGljdF9zdWdnZXN0fGVuZHxlcmVnfGVyZWdfcmVwbGFjZXxlcmVnaXxlcmVnaV9yZXBsYWNlfGVycm9yX2dldF9sYXN0fGVycm9yX2xvZ3xlcnJvcl9yZXBvcnRpbmd8ZXJyb3JleGNlcHRpb258ZXNjYXBlc2hlbGxhcmd8ZXNjYXBlc2hlbGxjbWR8ZXZhbHxldmVudF9hZGR8ZXZlbnRfYmFzZV9mcmVlfGV2ZW50X2Jhc2VfbG9vcHxldmVudF9iYXNlX2xvb3BicmVha3xldmVudF9iYXNlX2xvb3BleGl0fGV2ZW50X2Jhc2VfbmV3fGV2ZW50X2Jhc2VfcHJpb3JpdHlfaW5pdHxldmVudF9iYXNlX3NldHxldmVudF9idWZmZXJfYmFzZV9zZXR8ZXZlbnRfYnVmZmVyX2Rpc2FibGV8ZXZlbnRfYnVmZmVyX2VuYWJsZXxldmVudF9idWZmZXJfZmRfc2V0fGV2ZW50X2J1ZmZlcl9mcmVlfGV2ZW50X2J1ZmZlcl9uZXd8ZXZlbnRfYnVmZmVyX3ByaW9yaXR5X3NldHxldmVudF9idWZmZXJfcmVhZHxldmVudF9idWZmZXJfc2V0X2NhbGxiYWNrfGV2ZW50X2J1ZmZlcl90aW1lb3V0X3NldHxldmVudF9idWZmZXJfd2F0ZXJtYXJrX3NldHxldmVudF9idWZmZXJfd3JpdGV8ZXZlbnRfZGVsfGV2ZW50X2ZyZWV8ZXZlbnRfbmV3fGV2ZW50X3NldHxleGNlcHRpb258ZXhlY3xleGlmX2ltYWdldHlwZXxleGlmX3JlYWRfZGF0YXxleGlmX3RhZ25hbWV8ZXhpZl90aHVtYm5haWx8ZXhpdHxleHB8ZXhwZWN0X2V4cGVjdGx8ZXhwZWN0X3BvcGVufGV4cGxvZGV8ZXhwbTF8ZXhwb3J0fGV4cG9ydHxleHRlbnNpb25fbG9hZGVkfGV4dHJhY3R8ZXptbG1faGFzaHxmYW1fY2FuY2VsX21vbml0b3J8ZmFtX2Nsb3NlfGZhbV9tb25pdG9yX2NvbGxlY3Rpb258ZmFtX21vbml0b3JfZGlyZWN0b3J5fGZhbV9tb25pdG9yX2ZpbGV8ZmFtX25leHRfZXZlbnR8ZmFtX29wZW58ZmFtX3BlbmRpbmd8ZmFtX3Jlc3VtZV9tb25pdG9yfGZhbV9zdXNwZW5kX21vbml0b3J8ZmJzcWxfYWZmZWN0ZWRfcm93c3xmYnNxbF9hdXRvY29tbWl0fGZic3FsX2Jsb2Jfc2l6ZXxmYnNxbF9jaGFuZ2VfdXNlcnxmYnNxbF9jbG9iX3NpemV8ZmJzcWxfY2xvc2V8ZmJzcWxfY29tbWl0fGZic3FsX2Nvbm5lY3R8ZmJzcWxfY3JlYXRlX2Jsb2J8ZmJzcWxfY3JlYXRlX2Nsb2J8ZmJzcWxfY3JlYXRlX2RifGZic3FsX2RhdGFfc2Vla3xmYnNxbF9kYXRhYmFzZXxmYnNxbF9kYXRhYmFzZV9wYXNzd29yZHxmYnNxbF9kYl9xdWVyeXxmYnNxbF9kYl9zdGF0dXN8ZmJzcWxfZHJvcF9kYnxmYnNxbF9lcnJub3xmYnNxbF9lcnJvcnxmYnNxbF9mZXRjaF9hcnJheXxmYnNxbF9mZXRjaF9hc3NvY3xmYnNxbF9mZXRjaF9maWVsZHxmYnNxbF9mZXRjaF9sZW5ndGhzfGZic3FsX2ZldGNoX29iamVjdHxmYnNxbF9mZXRjaF9yb3d8ZmJzcWxfZmllbGRfZmxhZ3N8ZmJzcWxfZmllbGRfbGVufGZic3FsX2ZpZWxkX25hbWV8ZmJzcWxfZmllbGRfc2Vla3xmYnNxbF9maWVsZF90YWJsZXxmYnNxbF9maWVsZF90eXBlfGZic3FsX2ZyZWVfcmVzdWx0fGZic3FsX2dldF9hdXRvc3RhcnRfaW5mb3xmYnNxbF9ob3N0bmFtZXxmYnNxbF9pbnNlcnRfaWR8ZmJzcWxfbGlzdF9kYnN8ZmJzcWxfbGlzdF9maWVsZHN8ZmJzcWxfbGlzdF90YWJsZXN8ZmJzcWxfbmV4dF9yZXN1bHR8ZmJzcWxfbnVtX2ZpZWxkc3xmYnNxbF9udW1fcm93c3xmYnNxbF9wYXNzd29yZHxmYnNxbF9wY29ubmVjdHxmYnNxbF9xdWVyeXxmYnNxbF9yZWFkX2Jsb2J8ZmJzcWxfcmVhZF9jbG9ifGZic3FsX3Jlc3VsdHxmYnNxbF9yb2xsYmFja3xmYnNxbF9yb3dzX2ZldGNoZWR8ZmJzcWxfc2VsZWN0X2RifGZic3FsX3NldF9jaGFyYWN0ZXJzZXR8ZmJzcWxfc2V0X2xvYl9tb2RlfGZic3FsX3NldF9wYXNzd29yZHxmYnNxbF9zZXRfdHJhbnNhY3Rpb258ZmJzcWxfc3RhcnRfZGJ8ZmJzcWxfc3RvcF9kYnxmYnNxbF90YWJsZV9uYW1lfGZic3FsX3RhYmxlbmFtZXxmYnNxbF91c2VybmFtZXxmYnNxbF93YXJuaW5nc3xmY2xvc2V8ZmRmX2FkZF9kb2NfamF2YXNjcmlwdHxmZGZfYWRkX3RlbXBsYXRlfGZkZl9jbG9zZXxmZGZfY3JlYXRlfGZkZl9lbnVtX3ZhbHVlc3xmZGZfZXJybm98ZmRmX2Vycm9yfGZkZl9nZXRfYXB8ZmRmX2dldF9hdHRhY2htZW50fGZkZl9nZXRfZW5jb2Rpbmd8ZmRmX2dldF9maWxlfGZkZl9nZXRfZmxhZ3N8ZmRmX2dldF9vcHR8ZmRmX2dldF9zdGF0dXN8ZmRmX2dldF92YWx1ZXxmZGZfZ2V0X3ZlcnNpb258ZmRmX2hlYWRlcnxmZGZfbmV4dF9maWVsZF9uYW1lfGZkZl9vcGVufGZkZl9vcGVuX3N0cmluZ3xmZGZfcmVtb3ZlX2l0ZW18ZmRmX3NhdmV8ZmRmX3NhdmVfc3RyaW5nfGZkZl9zZXRfYXB8ZmRmX3NldF9lbmNvZGluZ3xmZGZfc2V0X2ZpbGV8ZmRmX3NldF9mbGFnc3xmZGZfc2V0X2phdmFzY3JpcHRfYWN0aW9ufGZkZl9zZXRfb25faW1wb3J0X2phdmFzY3JpcHR8ZmRmX3NldF9vcHR8ZmRmX3NldF9zdGF0dXN8ZmRmX3NldF9zdWJtaXRfZm9ybV9hY3Rpb258ZmRmX3NldF90YXJnZXRfZnJhbWV8ZmRmX3NldF92YWx1ZXxmZGZfc2V0X3ZlcnNpb258ZmVvZnxmZmx1c2h8ZmdldGN8ZmdldGNzdnxmZ2V0c3xmZ2V0c3N8ZmlsZXxmaWxlX2V4aXN0c3xmaWxlX2dldF9jb250ZW50c3xmaWxlX3B1dF9jb250ZW50c3xmaWxlYXRpbWV8ZmlsZWN0aW1lfGZpbGVncm91cHxmaWxlaW5vZGV8ZmlsZW10aW1lfGZpbGVvd25lcnxmaWxlcGVybXN8ZmlsZXByb3xmaWxlcHJvX2ZpZWxkY291bnR8ZmlsZXByb19maWVsZG5hbWV8ZmlsZXByb19maWVsZHR5cGV8ZmlsZXByb19maWVsZHdpZHRofGZpbGVwcm9fcmV0cmlldmV8ZmlsZXByb19yb3djb3VudHxmaWxlc2l6ZXxmaWxlc3lzdGVtaXRlcmF0b3J8ZmlsZXR5cGV8ZmlsdGVyX2hhc192YXJ8ZmlsdGVyX2lkfGZpbHRlcl9pbnB1dHxmaWx0ZXJfaW5wdXRfYXJyYXl8ZmlsdGVyX2xpc3R8ZmlsdGVyX3ZhcnxmaWx0ZXJfdmFyX2FycmF5fGZpbHRlcml0ZXJhdG9yfGZpbmZvX2J1ZmZlcnxmaW5mb19jbG9zZXxmaW5mb19maWxlfGZpbmZvX29wZW58ZmluZm9fc2V0X2ZsYWdzfGZsb2F0dmFsfGZsb2NrfGZsb29yfGZsdXNofGZtb2R8Zm5tYXRjaHxmb3Blbnxmb3J3YXJkX3N0YXRpY19jYWxsfGZvcndhcmRfc3RhdGljX2NhbGxfYXJyYXl8ZnBhc3N0aHJ1fGZwcmludGZ8ZnB1dGNzdnxmcHV0c3xmcmVhZHxmcmVuY2h0b2pkfGZyaWJpZGlfbG9nMnZpc3xmc2NhbmZ8ZnNlZWt8ZnNvY2tvcGVufGZzdGF0fGZ0ZWxsfGZ0b2t8ZnRwX2FsbG9jfGZ0cF9jZHVwfGZ0cF9jaGRpcnxmdHBfY2htb2R8ZnRwX2Nsb3NlfGZ0cF9jb25uZWN0fGZ0cF9kZWxldGV8ZnRwX2V4ZWN8ZnRwX2ZnZXR8ZnRwX2ZwdXR8ZnRwX2dldHxmdHBfZ2V0X29wdGlvbnxmdHBfbG9naW58ZnRwX21kdG18ZnRwX21rZGlyfGZ0cF9uYl9jb250aW51ZXxmdHBfbmJfZmdldHxmdHBfbmJfZnB1dHxmdHBfbmJfZ2V0fGZ0cF9uYl9wdXR8ZnRwX25saXN0fGZ0cF9wYXN2fGZ0cF9wdXR8ZnRwX3B3ZHxmdHBfcXVpdHxmdHBfcmF3fGZ0cF9yYXdsaXN0fGZ0cF9yZW5hbWV8ZnRwX3JtZGlyfGZ0cF9zZXRfb3B0aW9ufGZ0cF9zaXRlfGZ0cF9zaXplfGZ0cF9zc2xfY29ubmVjdHxmdHBfc3lzdHlwZXxmdHJ1bmNhdGV8ZnVuY19nZXRfYXJnfGZ1bmNfZ2V0X2FyZ3N8ZnVuY19udW1fYXJnc3xmdW5jdGlvbl9leGlzdHN8ZndyaXRlfGdjX2NvbGxlY3RfY3ljbGVzfGdjX2Rpc2FibGV8Z2NfZW5hYmxlfGdjX2VuYWJsZWR8Z2RfaW5mb3xnZWFybWFuY2xpZW50fGdlYXJtYW5qb2J8Z2Vhcm1hbnRhc2t8Z2Vhcm1hbndvcmtlcnxnZW9pcF9jb250aW5lbnRfY29kZV9ieV9uYW1lfGdlb2lwX2NvdW50cnlfY29kZTNfYnlfbmFtZXxnZW9pcF9jb3VudHJ5X2NvZGVfYnlfbmFtZXxnZW9pcF9jb3VudHJ5X25hbWVfYnlfbmFtZXxnZW9pcF9kYXRhYmFzZV9pbmZvfGdlb2lwX2RiX2F2YWlsfGdlb2lwX2RiX2ZpbGVuYW1lfGdlb2lwX2RiX2dldF9hbGxfaW5mb3xnZW9pcF9pZF9ieV9uYW1lfGdlb2lwX2lzcF9ieV9uYW1lfGdlb2lwX29yZ19ieV9uYW1lfGdlb2lwX3JlY29yZF9ieV9uYW1lfGdlb2lwX3JlZ2lvbl9ieV9uYW1lfGdlb2lwX3JlZ2lvbl9uYW1lX2J5X2NvZGV8Z2VvaXBfdGltZV96b25lX2J5X2NvdW50cnlfYW5kX3JlZ2lvbnxnZXRNZXRhfGdldE5hbWVkfGdldFZhbHVlfGdldF9icm93c2VyfGdldF9jYWxsZWRfY2xhc3N8Z2V0X2NmZ192YXJ8Z2V0X2NsYXNzfGdldF9jbGFzc19tZXRob2RzfGdldF9jbGFzc192YXJzfGdldF9jdXJyZW50X3VzZXJ8Z2V0X2RlY2xhcmVkX2NsYXNzZXN8Z2V0X2RlY2xhcmVkX2ludGVyZmFjZXN8Z2V0X2RlZmluZWRfY29uc3RhbnRzfGdldF9kZWZpbmVkX2Z1bmN0aW9uc3xnZXRfZGVmaW5lZF92YXJzfGdldF9leHRlbnNpb25fZnVuY3N8Z2V0X2hlYWRlcnN8Z2V0X2h0bWxfdHJhbnNsYXRpb25fdGFibGV8Z2V0X2luY2x1ZGVfcGF0aHxnZXRfaW5jbHVkZWRfZmlsZXN8Z2V0X2xvYWRlZF9leHRlbnNpb25zfGdldF9tYWdpY19xdW90ZXNfZ3BjfGdldF9tYWdpY19xdW90ZXNfcnVudGltZXxnZXRfbWV0YV90YWdzfGdldF9vYmplY3RfdmFyc3xnZXRfcGFyZW50X2NsYXNzfGdldF9yZXF1aXJlZF9maWxlc3xnZXRfcmVzb3VyY2VfdHlwZXxnZXRhbGxoZWFkZXJzfGdldGNvbnN0YW50fGdldGNvbnN0YW50c3xnZXRjb25zdHJ1Y3RvcnxnZXRjd2R8Z2V0ZGF0ZXxnZXRkZWZhdWx0cHJvcGVydGllc3xnZXRkb2Njb21tZW50fGdldGVuZGxpbmV8Z2V0ZW52fGdldGV4dGVuc2lvbnxnZXRleHRlbnNpb25uYW1lfGdldGZpbGVuYW1lfGdldGhvc3RieWFkZHJ8Z2V0aG9zdGJ5bmFtZXxnZXRob3N0YnluYW1lbHxnZXRob3N0bmFtZXxnZXRpbWFnZXNpemV8Z2V0aW50ZXJmYWNlbmFtZXN8Z2V0aW50ZXJmYWNlc3xnZXRsYXN0bW9kfGdldG1ldGhvZHxnZXRtZXRob2RzfGdldG1vZGlmaWVyc3xnZXRteHJyfGdldG15Z2lkfGdldG15aW5vZGV8Z2V0bXlwaWR8Z2V0bXl1aWR8Z2V0bmFtZXxnZXRuYW1lc3BhY2VuYW1lfGdldG9wdHxnZXRwYXJlbnRjbGFzc3xnZXRwcm9wZXJ0aWVzfGdldHByb3BlcnR5fGdldHByb3RvYnluYW1lfGdldHByb3RvYnludW1iZXJ8Z2V0cmFuZG1heHxnZXRydXNhZ2V8Z2V0c2VydmJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldHNob3J0bmFtZXxnZXRzdGFydGxpbmV8Z2V0c3RhdGljcHJvcGVydGllc3xnZXRzdGF0aWNwcm9wZXJ0eXZhbHVlfGdldHRleHR8Z2V0dGltZW9mZGF5fGdldHR5cGV8Z2xvYnxnbG9iaXRlcmF0b3J8Z21hZ2lja3xnbWFnaWNrZHJhd3xnbWFnaWNrcGl4ZWx8Z21kYXRlfGdtbWt0aW1lfGdtcF9hYnN8Z21wX2FkZHxnbXBfYW5kfGdtcF9jbHJiaXR8Z21wX2NtcHxnbXBfY29tfGdtcF9kaXZ8Z21wX2Rpdl9xfGdtcF9kaXZfcXJ8Z21wX2Rpdl9yfGdtcF9kaXZleGFjdHxnbXBfZmFjdHxnbXBfZ2NkfGdtcF9nY2RleHR8Z21wX2hhbWRpc3R8Z21wX2luaXR8Z21wX2ludHZhbHxnbXBfaW52ZXJ0fGdtcF9qYWNvYml8Z21wX2xlZ2VuZHJlfGdtcF9tb2R8Z21wX211bHxnbXBfbmVnfGdtcF9uZXh0cHJpbWV8Z21wX29yfGdtcF9wZXJmZWN0X3NxdWFyZXxnbXBfcG9wY291bnR8Z21wX3Bvd3xnbXBfcG93bXxnbXBfcHJvYl9wcmltZXxnbXBfcmFuZG9tfGdtcF9zY2FuMHxnbXBfc2NhbjF8Z21wX3NldGJpdHxnbXBfc2lnbnxnbXBfc3FydHxnbXBfc3FydHJlbXxnbXBfc3RydmFsfGdtcF9zdWJ8Z21wX3Rlc3RiaXR8Z21wX3hvcnxnbXN0cmZ0aW1lfGdudXBnX2FkZGRlY3J5cHRrZXl8Z251cGdfYWRkZW5jcnlwdGtleXxnbnVwZ19hZGRzaWdua2V5fGdudXBnX2NsZWFyZGVjcnlwdGtleXN8Z251cGdfY2xlYXJlbmNyeXB0a2V5c3xnbnVwZ19jbGVhcnNpZ25rZXlzfGdudXBnX2RlY3J5cHR8Z251cGdfZGVjcnlwdHZlcmlmeXxnbnVwZ19lbmNyeXB0fGdudXBnX2VuY3J5cHRzaWdufGdudXBnX2V4cG9ydHxnbnVwZ19nZXRlcnJvcnxnbnVwZ19nZXRwcm90b2NvbHxnbnVwZ19pbXBvcnR8Z251cGdfaW5pdHxnbnVwZ19rZXlpbmZvfGdudXBnX3NldGFybW9yfGdudXBnX3NldGVycm9ybW9kZXxnbnVwZ19zZXRzaWdubW9kZXxnbnVwZ19zaWdufGdudXBnX3ZlcmlmeXxnb3BoZXJfcGFyc2VkaXJ8Z3JhcGhlbWVfZXh0cmFjdHxncmFwaGVtZV9zdHJpcG9zfGdyYXBoZW1lX3N0cmlzdHJ8Z3JhcGhlbWVfc3RybGVufGdyYXBoZW1lX3N0cnBvc3xncmFwaGVtZV9zdHJyaXBvc3xncmFwaGVtZV9zdHJycG9zfGdyYXBoZW1lX3N0cnN0cnxncmFwaGVtZV9zdWJzdHJ8Z3JlZ29yaWFudG9qZHxndXBucF9jb250ZXh0X2dldF9ob3N0X2lwfGd1cG5wX2NvbnRleHRfZ2V0X3BvcnR8Z3VwbnBfY29udGV4dF9nZXRfc3Vic2NyaXB0aW9uX3RpbWVvdXR8Z3VwbnBfY29udGV4dF9ob3N0X3BhdGh8Z3VwbnBfY29udGV4dF9uZXd8Z3VwbnBfY29udGV4dF9zZXRfc3Vic2NyaXB0aW9uX3RpbWVvdXR8Z3VwbnBfY29udGV4dF90aW1lb3V0X2FkZHxndXBucF9jb250ZXh0X3VuaG9zdF9wYXRofGd1cG5wX2NvbnRyb2xfcG9pbnRfYnJvd3NlX3N0YXJ0fGd1cG5wX2NvbnRyb2xfcG9pbnRfYnJvd3NlX3N0b3B8Z3VwbnBfY29udHJvbF9wb2ludF9jYWxsYmFja19zZXR8Z3VwbnBfY29udHJvbF9wb2ludF9uZXd8Z3VwbnBfZGV2aWNlX2FjdGlvbl9jYWxsYmFja19zZXR8Z3VwbnBfZGV2aWNlX2luZm9fZ2V0fGd1cG5wX2RldmljZV9pbmZvX2dldF9zZXJ2aWNlfGd1cG5wX3Jvb3RfZGV2aWNlX2dldF9hdmFpbGFibGV8Z3VwbnBfcm9vdF9kZXZpY2VfZ2V0X3JlbGF0aXZlX2xvY2F0aW9ufGd1cG5wX3Jvb3RfZGV2aWNlX25ld3xndXBucF9yb290X2RldmljZV9zZXRfYXZhaWxhYmxlfGd1cG5wX3Jvb3RfZGV2aWNlX3N0YXJ0fGd1cG5wX3Jvb3RfZGV2aWNlX3N0b3B8Z3VwbnBfc2VydmljZV9hY3Rpb25fZ2V0fGd1cG5wX3NlcnZpY2VfYWN0aW9uX3JldHVybnxndXBucF9zZXJ2aWNlX2FjdGlvbl9yZXR1cm5fZXJyb3J8Z3VwbnBfc2VydmljZV9hY3Rpb25fc2V0fGd1cG5wX3NlcnZpY2VfZnJlZXplX25vdGlmeXxndXBucF9zZXJ2aWNlX2luZm9fZ2V0fGd1cG5wX3NlcnZpY2VfaW5mb19nZXRfaW50cm9zcGVjdGlvbnxndXBucF9zZXJ2aWNlX2ludHJvc3BlY3Rpb25fZ2V0X3N0YXRlX3ZhcmlhYmxlfGd1cG5wX3NlcnZpY2Vfbm90aWZ5fGd1cG5wX3NlcnZpY2VfcHJveHlfYWN0aW9uX2dldHxndXBucF9zZXJ2aWNlX3Byb3h5X2FjdGlvbl9zZXR8Z3VwbnBfc2VydmljZV9wcm94eV9hZGRfbm90aWZ5fGd1cG5wX3NlcnZpY2VfcHJveHlfY2FsbGJhY2tfc2V0fGd1cG5wX3NlcnZpY2VfcHJveHlfZ2V0X3N1YnNjcmliZWR8Z3VwbnBfc2VydmljZV9wcm94eV9yZW1vdmVfbm90aWZ5fGd1cG5wX3NlcnZpY2VfcHJveHlfc2V0X3N1YnNjcmliZWR8Z3VwbnBfc2VydmljZV90aGF3X25vdGlmeXxnemNsb3NlfGd6Y29tcHJlc3N8Z3pkZWNvZGV8Z3pkZWZsYXRlfGd6ZW5jb2RlfGd6ZW9mfGd6ZmlsZXxnemdldGN8Z3pnZXRzfGd6Z2V0c3N8Z3ppbmZsYXRlfGd6b3BlbnxnenBhc3N0aHJ1fGd6cHV0c3xnenJlYWR8Z3pyZXdpbmR8Z3pzZWVrfGd6dGVsbHxnenVuY29tcHJlc3N8Z3p3cml0ZXxoYWx0X2NvbXBpbGVyfGhhcnVhbm5vdGF0aW9ufGhhcnVhbm5vdGF0aW9uX3NldGJvcmRlcnN0eWxlfGhhcnVhbm5vdGF0aW9uX3NldGhpZ2hsaWdodG1vZGV8aGFydWFubm90YXRpb25fc2V0aWNvbnxoYXJ1YW5ub3RhdGlvbl9zZXRvcGVuZWR8aGFydWRlc3RpbmF0aW9ufGhhcnVkZXN0aW5hdGlvbl9zZXRmaXR8aGFydWRlc3RpbmF0aW9uX3NldGZpdGJ8aGFydWRlc3RpbmF0aW9uX3NldGZpdGJofGhhcnVkZXN0aW5hdGlvbl9zZXRmaXRidnxoYXJ1ZGVzdGluYXRpb25fc2V0Zml0aHxoYXJ1ZGVzdGluYXRpb25fc2V0Zml0cnxoYXJ1ZGVzdGluYXRpb25fc2V0Zml0dnxoYXJ1ZGVzdGluYXRpb25fc2V0eHl6fGhhcnVkb2N8aGFydWRvY19hZGRwYWdlfGhhcnVkb2NfYWRkcGFnZWxhYmVsfGhhcnVkb2NfY29uc3RydWN0fGhhcnVkb2NfY3JlYXRlb3V0bGluZXxoYXJ1ZG9jX2dldGN1cnJlbnRlbmNvZGVyfGhhcnVkb2NfZ2V0Y3VycmVudHBhZ2V8aGFydWRvY19nZXRlbmNvZGVyfGhhcnVkb2NfZ2V0Zm9udHxoYXJ1ZG9jX2dldGluZm9hdHRyfGhhcnVkb2NfZ2V0cGFnZWxheW91dHxoYXJ1ZG9jX2dldHBhZ2Vtb2RlfGhhcnVkb2NfZ2V0c3RyZWFtc2l6ZXxoYXJ1ZG9jX2luc2VydHBhZ2V8aGFydWRvY19sb2FkanBlZ3xoYXJ1ZG9jX2xvYWRwbmd8aGFydWRvY19sb2FkcmF3fGhhcnVkb2NfbG9hZHR0Y3xoYXJ1ZG9jX2xvYWR0dGZ8aGFydWRvY19sb2FkdHlwZTF8aGFydWRvY19vdXRwdXR8aGFydWRvY19yZWFkZnJvbXN0cmVhbXxoYXJ1ZG9jX3Jlc2V0ZXJyb3J8aGFydWRvY19yZXNldHN0cmVhbXxoYXJ1ZG9jX3NhdmV8aGFydWRvY19zYXZldG9zdHJlYW18aGFydWRvY19zZXRjb21wcmVzc2lvbm1vZGV8aGFydWRvY19zZXRjdXJyZW50ZW5jb2RlcnxoYXJ1ZG9jX3NldGVuY3J5cHRpb25tb2RlfGhhcnVkb2Nfc2V0aW5mb2F0dHJ8aGFydWRvY19zZXRpbmZvZGF0ZWF0dHJ8aGFydWRvY19zZXRvcGVuYWN0aW9ufGhhcnVkb2Nfc2V0cGFnZWxheW91dHxoYXJ1ZG9jX3NldHBhZ2Vtb2RlfGhhcnVkb2Nfc2V0cGFnZXNjb25maWd1cmF0aW9ufGhhcnVkb2Nfc2V0cGFzc3dvcmR8aGFydWRvY19zZXRwZXJtaXNzaW9ufGhhcnVkb2NfdXNlY25zZW5jb2RpbmdzfGhhcnVkb2NfdXNlY25zZm9udHN8aGFydWRvY191c2VjbnRlbmNvZGluZ3N8aGFydWRvY191c2VjbnRmb250c3xoYXJ1ZG9jX3VzZWpwZW5jb2RpbmdzfGhhcnVkb2NfdXNlanBmb250c3xoYXJ1ZG9jX3VzZWtyZW5jb2RpbmdzfGhhcnVkb2NfdXNla3Jmb250c3xoYXJ1ZW5jb2RlcnxoYXJ1ZW5jb2Rlcl9nZXRieXRldHlwZXxoYXJ1ZW5jb2Rlcl9nZXR0eXBlfGhhcnVlbmNvZGVyX2dldHVuaWNvZGV8aGFydWVuY29kZXJfZ2V0d3JpdGluZ21vZGV8aGFydWV4Y2VwdGlvbnxoYXJ1Zm9udHxoYXJ1Zm9udF9nZXRhc2NlbnR8aGFydWZvbnRfZ2V0Y2FwaGVpZ2h0fGhhcnVmb250X2dldGRlc2NlbnR8aGFydWZvbnRfZ2V0ZW5jb2RpbmduYW1lfGhhcnVmb250X2dldGZvbnRuYW1lfGhhcnVmb250X2dldHRleHR3aWR0aHxoYXJ1Zm9udF9nZXR1bmljb2Rld2lkdGh8aGFydWZvbnRfZ2V0eGhlaWdodHxoYXJ1Zm9udF9tZWFzdXJldGV4dHxoYXJ1aW1hZ2V8aGFydWltYWdlX2dldGJpdHNwZXJjb21wb25lbnR8aGFydWltYWdlX2dldGNvbG9yc3BhY2V8aGFydWltYWdlX2dldGhlaWdodHxoYXJ1aW1hZ2VfZ2V0c2l6ZXxoYXJ1aW1hZ2VfZ2V0d2lkdGh8aGFydWltYWdlX3NldGNvbG9ybWFza3xoYXJ1aW1hZ2Vfc2V0bWFza2ltYWdlfGhhcnVvdXRsaW5lfGhhcnVvdXRsaW5lX3NldGRlc3RpbmF0aW9ufGhhcnVvdXRsaW5lX3NldG9wZW5lZHxoYXJ1cGFnZXxoYXJ1cGFnZV9hcmN8aGFydXBhZ2VfYmVnaW50ZXh0fGhhcnVwYWdlX2NpcmNsZXxoYXJ1cGFnZV9jbG9zZXBhdGh8aGFydXBhZ2VfY29uY2F0fGhhcnVwYWdlX2NyZWF0ZWRlc3RpbmF0aW9ufGhhcnVwYWdlX2NyZWF0ZWxpbmthbm5vdGF0aW9ufGhhcnVwYWdlX2NyZWF0ZXRleHRhbm5vdGF0aW9ufGhhcnVwYWdlX2NyZWF0ZXVybGFubm90YXRpb258aGFydXBhZ2VfY3VydmV0b3xoYXJ1cGFnZV9jdXJ2ZXRvMnxoYXJ1cGFnZV9jdXJ2ZXRvM3xoYXJ1cGFnZV9kcmF3aW1hZ2V8aGFydXBhZ2VfZWxsaXBzZXxoYXJ1cGFnZV9lbmRwYXRofGhhcnVwYWdlX2VuZHRleHR8aGFydXBhZ2VfZW9maWxsfGhhcnVwYWdlX2VvZmlsbHN0cm9rZXxoYXJ1cGFnZV9maWxsfGhhcnVwYWdlX2ZpbGxzdHJva2V8aGFydXBhZ2VfZ2V0Y2hhcnNwYWNlfGhhcnVwYWdlX2dldGNteWtmaWxsfGhhcnVwYWdlX2dldGNteWtzdHJva2V8aGFydXBhZ2VfZ2V0Y3VycmVudGZvbnR8aGFydXBhZ2VfZ2V0Y3VycmVudGZvbnRzaXplfGhhcnVwYWdlX2dldGN1cnJlbnRwb3N8aGFydXBhZ2VfZ2V0Y3VycmVudHRleHRwb3N8aGFydXBhZ2VfZ2V0ZGFzaHxoYXJ1cGFnZV9nZXRmaWxsaW5nY29sb3JzcGFjZXxoYXJ1cGFnZV9nZXRmbGF0bmVzc3xoYXJ1cGFnZV9nZXRnbW9kZXxoYXJ1cGFnZV9nZXRncmF5ZmlsbHxoYXJ1cGFnZV9nZXRncmF5c3Ryb2tlfGhhcnVwYWdlX2dldGhlaWdodHxoYXJ1cGFnZV9nZXRob3Jpem9udGFsc2NhbGluZ3xoYXJ1cGFnZV9nZXRsaW5lY2FwfGhhcnVwYWdlX2dldGxpbmVqb2lufGhhcnVwYWdlX2dldGxpbmV3aWR0aHxoYXJ1cGFnZV9nZXRtaXRlcmxpbWl0fGhhcnVwYWdlX2dldHJnYmZpbGx8aGFydXBhZ2VfZ2V0cmdic3Ryb2tlfGhhcnVwYWdlX2dldHN0cm9raW5nY29sb3JzcGFjZXxoYXJ1cGFnZV9nZXR0ZXh0bGVhZGluZ3xoYXJ1cGFnZV9nZXR0ZXh0bWF0cml4fGhhcnVwYWdlX2dldHRleHRyZW5kZXJpbmdtb2RlfGhhcnVwYWdlX2dldHRleHRyaXNlfGhhcnVwYWdlX2dldHRleHR3aWR0aHxoYXJ1cGFnZV9nZXR0cmFuc21hdHJpeHxoYXJ1cGFnZV9nZXR3aWR0aHxoYXJ1cGFnZV9nZXR3b3Jkc3BhY2V8aGFydXBhZ2VfbGluZXRvfGhhcnVwYWdlX21lYXN1cmV0ZXh0fGhhcnVwYWdlX21vdmV0ZXh0cG9zfGhhcnVwYWdlX21vdmV0b3xoYXJ1cGFnZV9tb3ZldG9uZXh0bGluZXxoYXJ1cGFnZV9yZWN0YW5nbGV8aGFydXBhZ2Vfc2V0Y2hhcnNwYWNlfGhhcnVwYWdlX3NldGNteWtmaWxsfGhhcnVwYWdlX3NldGNteWtzdHJva2V8aGFydXBhZ2Vfc2V0ZGFzaHxoYXJ1cGFnZV9zZXRmbGF0bmVzc3xoYXJ1cGFnZV9zZXRmb250YW5kc2l6ZXxoYXJ1cGFnZV9zZXRncmF5ZmlsbHxoYXJ1cGFnZV9zZXRncmF5c3Ryb2tlfGhhcnVwYWdlX3NldGhlaWdodHxoYXJ1cGFnZV9zZXRob3Jpem9udGFsc2NhbGluZ3xoYXJ1cGFnZV9zZXRsaW5lY2FwfGhhcnVwYWdlX3NldGxpbmVqb2lufGhhcnVwYWdlX3NldGxpbmV3aWR0aHxoYXJ1cGFnZV9zZXRtaXRlcmxpbWl0fGhhcnVwYWdlX3NldHJnYmZpbGx8aGFydXBhZ2Vfc2V0cmdic3Ryb2tlfGhhcnVwYWdlX3NldHJvdGF0ZXxoYXJ1cGFnZV9zZXRzaXplfGhhcnVwYWdlX3NldHNsaWRlc2hvd3xoYXJ1cGFnZV9zZXR0ZXh0bGVhZGluZ3xoYXJ1cGFnZV9zZXR0ZXh0bWF0cml4fGhhcnVwYWdlX3NldHRleHRyZW5kZXJpbmdtb2RlfGhhcnVwYWdlX3NldHRleHRyaXNlfGhhcnVwYWdlX3NldHdpZHRofGhhcnVwYWdlX3NldHdvcmRzcGFjZXxoYXJ1cGFnZV9zaG93dGV4dHxoYXJ1cGFnZV9zaG93dGV4dG5leHRsaW5lfGhhcnVwYWdlX3N0cm9rZXxoYXJ1cGFnZV90ZXh0b3V0fGhhcnVwYWdlX3RleHRyZWN0fGhhc2NvbnN0YW50fGhhc2h8aGFzaF9hbGdvc3xoYXNoX2NvcHl8aGFzaF9maWxlfGhhc2hfZmluYWx8aGFzaF9obWFjfGhhc2hfaG1hY19maWxlfGhhc2hfaW5pdHxoYXNoX3VwZGF0ZXxoYXNoX3VwZGF0ZV9maWxlfGhhc2hfdXBkYXRlX3N0cmVhbXxoYXNtZXRob2R8aGFzcHJvcGVydHl8aGVhZGVyfGhlYWRlcl9yZWdpc3Rlcl9jYWxsYmFja3xoZWFkZXJfcmVtb3ZlfGhlYWRlcnNfbGlzdHxoZWFkZXJzX3NlbnR8aGVicmV2fGhlYnJldmN8aGV4MmJpbnxoZXhkZWN8aGlnaGxpZ2h0X2ZpbGV8aGlnaGxpZ2h0X3N0cmluZ3xodG1sX2VudGl0eV9kZWNvZGV8aHRtbGVudGl0aWVzfGh0bWxzcGVjaWFsY2hhcnN8aHRtbHNwZWNpYWxjaGFyc19kZWNvZGV8aHR0cF9idWlsZF9jb29raWV8aHR0cF9idWlsZF9xdWVyeXxodHRwX2J1aWxkX3N0cnxodHRwX2J1aWxkX3VybHxodHRwX2NhY2hlX2V0YWd8aHR0cF9jYWNoZV9sYXN0X21vZGlmaWVkfGh0dHBfY2h1bmtlZF9kZWNvZGV8aHR0cF9kYXRlfGh0dHBfZGVmbGF0ZXxodHRwX2dldHxodHRwX2dldF9yZXF1ZXN0X2JvZHl8aHR0cF9nZXRfcmVxdWVzdF9ib2R5X3N0cmVhbXxodHRwX2dldF9yZXF1ZXN0X2hlYWRlcnN8aHR0cF9oZWFkfGh0dHBfaW5mbGF0ZXxodHRwX21hdGNoX2V0YWd8aHR0cF9tYXRjaF9tb2RpZmllZHxodHRwX21hdGNoX3JlcXVlc3RfaGVhZGVyfGh0dHBfbmVnb3RpYXRlX2NoYXJzZXR8aHR0cF9uZWdvdGlhdGVfY29udGVudF90eXBlfGh0dHBfbmVnb3RpYXRlX2xhbmd1YWdlfGh0dHBfcGFyc2VfY29va2llfGh0dHBfcGFyc2VfaGVhZGVyc3xodHRwX3BhcnNlX21lc3NhZ2V8aHR0cF9wYXJzZV9wYXJhbXN8aHR0cF9wZXJzaXN0ZW50X2hhbmRsZXNfY2xlYW58aHR0cF9wZXJzaXN0ZW50X2hhbmRsZXNfY291bnR8aHR0cF9wZXJzaXN0ZW50X2hhbmRsZXNfaWRlbnR8aHR0cF9wb3N0X2RhdGF8aHR0cF9wb3N0X2ZpZWxkc3xodHRwX3B1dF9kYXRhfGh0dHBfcHV0X2ZpbGV8aHR0cF9wdXRfc3RyZWFtfGh0dHBfcmVkaXJlY3R8aHR0cF9yZXF1ZXN0fGh0dHBfcmVxdWVzdF9ib2R5X2VuY29kZXxodHRwX3JlcXVlc3RfbWV0aG9kX2V4aXN0c3xodHRwX3JlcXVlc3RfbWV0aG9kX25hbWV8aHR0cF9yZXF1ZXN0X21ldGhvZF9yZWdpc3RlcnxodHRwX3JlcXVlc3RfbWV0aG9kX3VucmVnaXN0ZXJ8aHR0cF9yZXNwb25zZV9jb2RlfGh0dHBfc2VuZF9jb250ZW50X2Rpc3Bvc2l0aW9ufGh0dHBfc2VuZF9jb250ZW50X3R5cGV8aHR0cF9zZW5kX2RhdGF8aHR0cF9zZW5kX2ZpbGV8aHR0cF9zZW5kX2xhc3RfbW9kaWZpZWR8aHR0cF9zZW5kX3N0YXR1c3xodHRwX3NlbmRfc3RyZWFtfGh0dHBfc3VwcG9ydHxodHRwX3Rocm90dGxlfGh0dHBkZWZsYXRlc3RyZWFtfGh0dHBkZWZsYXRlc3RyZWFtX2NvbnN0cnVjdHxodHRwZGVmbGF0ZXN0cmVhbV9mYWN0b3J5fGh0dHBkZWZsYXRlc3RyZWFtX2ZpbmlzaHxodHRwZGVmbGF0ZXN0cmVhbV9mbHVzaHxodHRwZGVmbGF0ZXN0cmVhbV91cGRhdGV8aHR0cGluZmxhdGVzdHJlYW18aHR0cGluZmxhdGVzdHJlYW1fY29uc3RydWN0fGh0dHBpbmZsYXRlc3RyZWFtX2ZhY3Rvcnl8aHR0cGluZmxhdGVzdHJlYW1fZmluaXNofGh0dHBpbmZsYXRlc3RyZWFtX2ZsdXNofGh0dHBpbmZsYXRlc3RyZWFtX3VwZGF0ZXxodHRwbWVzc2FnZXxodHRwbWVzc2FnZV9hZGRoZWFkZXJzfGh0dHBtZXNzYWdlX2NvbnN0cnVjdHxodHRwbWVzc2FnZV9kZXRhY2h8aHR0cG1lc3NhZ2VfZmFjdG9yeXxodHRwbWVzc2FnZV9mcm9tZW52fGh0dHBtZXNzYWdlX2Zyb21zdHJpbmd8aHR0cG1lc3NhZ2VfZ2V0Ym9keXxodHRwbWVzc2FnZV9nZXRoZWFkZXJ8aHR0cG1lc3NhZ2VfZ2V0aGVhZGVyc3xodHRwbWVzc2FnZV9nZXRodHRwdmVyc2lvbnxodHRwbWVzc2FnZV9nZXRwYXJlbnRtZXNzYWdlfGh0dHBtZXNzYWdlX2dldHJlcXVlc3RtZXRob2R8aHR0cG1lc3NhZ2VfZ2V0cmVxdWVzdHVybHxodHRwbWVzc2FnZV9nZXRyZXNwb25zZWNvZGV8aHR0cG1lc3NhZ2VfZ2V0cmVzcG9uc2VzdGF0dXN8aHR0cG1lc3NhZ2VfZ2V0dHlwZXxodHRwbWVzc2FnZV9ndWVzc2NvbnRlbnR0eXBlfGh0dHBtZXNzYWdlX3ByZXBlbmR8aHR0cG1lc3NhZ2VfcmV2ZXJzZXxodHRwbWVzc2FnZV9zZW5kfGh0dHBtZXNzYWdlX3NldGJvZHl8aHR0cG1lc3NhZ2Vfc2V0aGVhZGVyc3xodHRwbWVzc2FnZV9zZXRodHRwdmVyc2lvbnxodHRwbWVzc2FnZV9zZXRyZXF1ZXN0bWV0aG9kfGh0dHBtZXNzYWdlX3NldHJlcXVlc3R1cmx8aHR0cG1lc3NhZ2Vfc2V0cmVzcG9uc2Vjb2RlfGh0dHBtZXNzYWdlX3NldHJlc3BvbnNlc3RhdHVzfGh0dHBtZXNzYWdlX3NldHR5cGV8aHR0cG1lc3NhZ2VfdG9tZXNzYWdldHlwZW9iamVjdHxodHRwbWVzc2FnZV90b3N0cmluZ3xodHRwcXVlcnlzdHJpbmd8aHR0cHF1ZXJ5c3RyaW5nX2NvbnN0cnVjdHxodHRwcXVlcnlzdHJpbmdfZ2V0fGh0dHBxdWVyeXN0cmluZ19tb2R8aHR0cHF1ZXJ5c3RyaW5nX3NldHxodHRwcXVlcnlzdHJpbmdfc2luZ2xldG9ufGh0dHBxdWVyeXN0cmluZ190b2FycmF5fGh0dHBxdWVyeXN0cmluZ190b3N0cmluZ3xodHRwcXVlcnlzdHJpbmdfeGxhdGV8aHR0cHJlcXVlc3R8aHR0cHJlcXVlc3RfYWRkY29va2llc3xodHRwcmVxdWVzdF9hZGRoZWFkZXJzfGh0dHByZXF1ZXN0X2FkZHBvc3RmaWVsZHN8aHR0cHJlcXVlc3RfYWRkcG9zdGZpbGV8aHR0cHJlcXVlc3RfYWRkcHV0ZGF0YXxodHRwcmVxdWVzdF9hZGRxdWVyeWRhdGF8aHR0cHJlcXVlc3RfYWRkcmF3cG9zdGRhdGF8aHR0cHJlcXVlc3RfYWRkc3Nsb3B0aW9uc3xodHRwcmVxdWVzdF9jbGVhcmhpc3Rvcnl8aHR0cHJlcXVlc3RfY29uc3RydWN0fGh0dHByZXF1ZXN0X2VuYWJsZWNvb2tpZXN8aHR0cHJlcXVlc3RfZ2V0Y29udGVudHR5cGV8aHR0cHJlcXVlc3RfZ2V0Y29va2llc3xodHRwcmVxdWVzdF9nZXRoZWFkZXJzfGh0dHByZXF1ZXN0X2dldGhpc3Rvcnl8aHR0cHJlcXVlc3RfZ2V0bWV0aG9kfGh0dHByZXF1ZXN0X2dldG9wdGlvbnN8aHR0cHJlcXVlc3RfZ2V0cG9zdGZpZWxkc3xodHRwcmVxdWVzdF9nZXRwb3N0ZmlsZXN8aHR0cHJlcXVlc3RfZ2V0cHV0ZGF0YXxodHRwcmVxdWVzdF9nZXRwdXRmaWxlfGh0dHByZXF1ZXN0X2dldHF1ZXJ5ZGF0YXxodHRwcmVxdWVzdF9nZXRyYXdwb3N0ZGF0YXxodHRwcmVxdWVzdF9nZXRyYXdyZXF1ZXN0bWVzc2FnZXxodHRwcmVxdWVzdF9nZXRyYXdyZXNwb25zZW1lc3NhZ2V8aHR0cHJlcXVlc3RfZ2V0cmVxdWVzdG1lc3NhZ2V8aHR0cHJlcXVlc3RfZ2V0cmVzcG9uc2Vib2R5fGh0dHByZXF1ZXN0X2dldHJlc3BvbnNlY29kZXxodHRwcmVxdWVzdF9nZXRyZXNwb25zZWNvb2tpZXN8aHR0cHJlcXVlc3RfZ2V0cmVzcG9uc2VkYXRhfGh0dHByZXF1ZXN0X2dldHJlc3BvbnNlaGVhZGVyfGh0dHByZXF1ZXN0X2dldHJlc3BvbnNlaW5mb3xodHRwcmVxdWVzdF9nZXRyZXNwb25zZW1lc3NhZ2V8aHR0cHJlcXVlc3RfZ2V0cmVzcG9uc2VzdGF0dXN8aHR0cHJlcXVlc3RfZ2V0c3Nsb3B0aW9uc3xodHRwcmVxdWVzdF9nZXR1cmx8aHR0cHJlcXVlc3RfcmVzZXRjb29raWVzfGh0dHByZXF1ZXN0X3NlbmR8aHR0cHJlcXVlc3Rfc2V0Y29udGVudHR5cGV8aHR0cHJlcXVlc3Rfc2V0Y29va2llc3xodHRwcmVxdWVzdF9zZXRoZWFkZXJzfGh0dHByZXF1ZXN0X3NldG1ldGhvZHxodHRwcmVxdWVzdF9zZXRvcHRpb25zfGh0dHByZXF1ZXN0X3NldHBvc3RmaWVsZHN8aHR0cHJlcXVlc3Rfc2V0cG9zdGZpbGVzfGh0dHByZXF1ZXN0X3NldHB1dGRhdGF8aHR0cHJlcXVlc3Rfc2V0cHV0ZmlsZXxodHRwcmVxdWVzdF9zZXRxdWVyeWRhdGF8aHR0cHJlcXVlc3Rfc2V0cmF3cG9zdGRhdGF8aHR0cHJlcXVlc3Rfc2V0c3Nsb3B0aW9uc3xodHRwcmVxdWVzdF9zZXR1cmx8aHR0cHJlcXVlc3Rwb29sfGh0dHByZXF1ZXN0cG9vbF9hdHRhY2h8aHR0cHJlcXVlc3Rwb29sX2NvbnN0cnVjdHxodHRwcmVxdWVzdHBvb2xfZGVzdHJ1Y3R8aHR0cHJlcXVlc3Rwb29sX2RldGFjaHxodHRwcmVxdWVzdHBvb2xfZ2V0YXR0YWNoZWRyZXF1ZXN0c3xodHRwcmVxdWVzdHBvb2xfZ2V0ZmluaXNoZWRyZXF1ZXN0c3xodHRwcmVxdWVzdHBvb2xfcmVzZXR8aHR0cHJlcXVlc3Rwb29sX3NlbmR8aHR0cHJlcXVlc3Rwb29sX3NvY2tldHBlcmZvcm18aHR0cHJlcXVlc3Rwb29sX3NvY2tldHNlbGVjdHxodHRwcmVzcG9uc2V8aHR0cHJlc3BvbnNlX2NhcHR1cmV8aHR0cHJlc3BvbnNlX2dldGJ1ZmZlcnNpemV8aHR0cHJlc3BvbnNlX2dldGNhY2hlfGh0dHByZXNwb25zZV9nZXRjYWNoZWNvbnRyb2x8aHR0cHJlc3BvbnNlX2dldGNvbnRlbnRkaXNwb3NpdGlvbnxodHRwcmVzcG9uc2VfZ2V0Y29udGVudHR5cGV8aHR0cHJlc3BvbnNlX2dldGRhdGF8aHR0cHJlc3BvbnNlX2dldGV0YWd8aHR0cHJlc3BvbnNlX2dldGZpbGV8aHR0cHJlc3BvbnNlX2dldGd6aXB8aHR0cHJlc3BvbnNlX2dldGhlYWRlcnxodHRwcmVzcG9uc2VfZ2V0bGFzdG1vZGlmaWVkfGh0dHByZXNwb25zZV9nZXRyZXF1ZXN0Ym9keXxodHRwcmVzcG9uc2VfZ2V0cmVxdWVzdGJvZHlzdHJlYW18aHR0cHJlc3BvbnNlX2dldHJlcXVlc3RoZWFkZXJzfGh0dHByZXNwb25zZV9nZXRzdHJlYW18aHR0cHJlc3BvbnNlX2dldHRocm90dGxlZGVsYXl8aHR0cHJlc3BvbnNlX2d1ZXNzY29udGVudHR5cGV8aHR0cHJlc3BvbnNlX3JlZGlyZWN0fGh0dHByZXNwb25zZV9zZW5kfGh0dHByZXNwb25zZV9zZXRidWZmZXJzaXplfGh0dHByZXNwb25zZV9zZXRjYWNoZXxodHRwcmVzcG9uc2Vfc2V0Y2FjaGVjb250cm9sfGh0dHByZXNwb25zZV9zZXRjb250ZW50ZGlzcG9zaXRpb258aHR0cHJlc3BvbnNlX3NldGNvbnRlbnR0eXBlfGh0dHByZXNwb25zZV9zZXRkYXRhfGh0dHByZXNwb25zZV9zZXRldGFnfGh0dHByZXNwb25zZV9zZXRmaWxlfGh0dHByZXNwb25zZV9zZXRnemlwfGh0dHByZXNwb25zZV9zZXRoZWFkZXJ8aHR0cHJlc3BvbnNlX3NldGxhc3Rtb2RpZmllZHxodHRwcmVzcG9uc2Vfc2V0c3RyZWFtfGh0dHByZXNwb25zZV9zZXR0aHJvdHRsZWRlbGF5fGh0dHByZXNwb25zZV9zdGF0dXN8aHdfYXJyYXkyb2JqcmVjfGh3X2NoYW5nZW9iamVjdHxod19jaGlsZHJlbnxod19jaGlsZHJlbm9ianxod19jbG9zZXxod19jb25uZWN0fGh3X2Nvbm5lY3Rpb25faW5mb3xod19jcHxod19kZWxldGVvYmplY3R8aHdfZG9jYnlhbmNob3J8aHdfZG9jYnlhbmNob3JvYmp8aHdfZG9jdW1lbnRfYXR0cmlidXRlc3xod19kb2N1bWVudF9ib2R5dGFnfGh3X2RvY3VtZW50X2NvbnRlbnR8aHdfZG9jdW1lbnRfc2V0Y29udGVudHxod19kb2N1bWVudF9zaXplfGh3X2R1bW15fGh3X2VkaXR0ZXh0fGh3X2Vycm9yfGh3X2Vycm9ybXNnfGh3X2ZyZWVfZG9jdW1lbnR8aHdfZ2V0YW5jaG9yc3xod19nZXRhbmNob3Jzb2JqfGh3X2dldGFuZGxvY2t8aHdfZ2V0Y2hpbGRjb2xsfGh3X2dldGNoaWxkY29sbG9ianxod19nZXRjaGlsZGRvY2NvbGx8aHdfZ2V0Y2hpbGRkb2Njb2xsb2JqfGh3X2dldG9iamVjdHxod19nZXRvYmplY3RieXF1ZXJ5fGh3X2dldG9iamVjdGJ5cXVlcnljb2xsfGh3X2dldG9iamVjdGJ5cXVlcnljb2xsb2JqfGh3X2dldG9iamVjdGJ5cXVlcnlvYmp8aHdfZ2V0cGFyZW50c3xod19nZXRwYXJlbnRzb2JqfGh3X2dldHJlbGxpbmt8aHdfZ2V0cmVtb3RlfGh3X2dldHJlbW90ZWNoaWxkcmVufGh3X2dldHNyY2J5ZGVzdG9ianxod19nZXR0ZXh0fGh3X2dldHVzZXJuYW1lfGh3X2lkZW50aWZ5fGh3X2luY29sbGVjdGlvbnN8aHdfaW5mb3xod19pbnNjb2xsfGh3X2luc2RvY3xod19pbnNlcnRhbmNob3JzfGh3X2luc2VydGRvY3VtZW50fGh3X2luc2VydG9iamVjdHxod19tYXBpZHxod19tb2RpZnlvYmplY3R8aHdfbXZ8aHdfbmV3X2RvY3VtZW50fGh3X29ianJlYzJhcnJheXxod19vdXRwdXRfZG9jdW1lbnR8aHdfcGNvbm5lY3R8aHdfcGlwZWRvY3VtZW50fGh3X3Jvb3R8aHdfc2V0bGlua3Jvb3R8aHdfc3RhdHxod191bmxvY2t8aHdfd2hvfGh3YXBpX2F0dHJpYnV0ZXxod2FwaV9hdHRyaWJ1dGVfa2V5fGh3YXBpX2F0dHJpYnV0ZV9sYW5nZGVwdmFsdWV8aHdhcGlfYXR0cmlidXRlX3ZhbHVlfGh3YXBpX2F0dHJpYnV0ZV92YWx1ZXN8aHdhcGlfY2hlY2tpbnxod2FwaV9jaGVja291dHxod2FwaV9jaGlsZHJlbnxod2FwaV9jb250ZW50fGh3YXBpX2NvbnRlbnRfbWltZXR5cGV8aHdhcGlfY29udGVudF9yZWFkfGh3YXBpX2NvcHl8aHdhcGlfZGJzdGF0fGh3YXBpX2Rjc3RhdHxod2FwaV9kc3RhbmNob3JzfGh3YXBpX2RzdG9mc3JjYW5jaG9yfGh3YXBpX2Vycm9yX2NvdW50fGh3YXBpX2Vycm9yX3JlYXNvbnxod2FwaV9maW5kfGh3YXBpX2Z0c3RhdHxod2FwaV9oZ2NzcHxod2FwaV9od3N0YXR8aHdhcGlfaWRlbnRpZnl8aHdhcGlfaW5mb3xod2FwaV9pbnNlcnR8aHdhcGlfaW5zZXJ0YW5jaG9yfGh3YXBpX2luc2VydGNvbGxlY3Rpb258aHdhcGlfaW5zZXJ0ZG9jdW1lbnR8aHdhcGlfbGlua3xod2FwaV9sb2NrfGh3YXBpX21vdmV8aHdhcGlfbmV3X2NvbnRlbnR8aHdhcGlfb2JqZWN0fGh3YXBpX29iamVjdF9hc3NpZ258aHdhcGlfb2JqZWN0X2F0dHJlZGl0YWJsZXxod2FwaV9vYmplY3RfY291bnR8aHdhcGlfb2JqZWN0X2luc2VydHxod2FwaV9vYmplY3RfbmV3fGh3YXBpX29iamVjdF9yZW1vdmV8aHdhcGlfb2JqZWN0X3RpdGxlfGh3YXBpX29iamVjdF92YWx1ZXxod2FwaV9vYmplY3RieWFuY2hvcnxod2FwaV9wYXJlbnRzfGh3YXBpX3JlYXNvbl9kZXNjcmlwdGlvbnxod2FwaV9yZWFzb25fdHlwZXxod2FwaV9yZW1vdmV8aHdhcGlfcmVwbGFjZXxod2FwaV9zZXRjb21taXR0ZWR2ZXJzaW9ufGh3YXBpX3NyY2FuY2hvcnN8aHdhcGlfc3Jjc29mZHN0fGh3YXBpX3VubG9ja3xod2FwaV91c2VyfGh3YXBpX3VzZXJsaXN0fGh5cG90fGliYXNlX2FkZF91c2VyfGliYXNlX2FmZmVjdGVkX3Jvd3N8aWJhc2VfYmFja3VwfGliYXNlX2Jsb2JfYWRkfGliYXNlX2Jsb2JfY2FuY2VsfGliYXNlX2Jsb2JfY2xvc2V8aWJhc2VfYmxvYl9jcmVhdGV8aWJhc2VfYmxvYl9lY2hvfGliYXNlX2Jsb2JfZ2V0fGliYXNlX2Jsb2JfaW1wb3J0fGliYXNlX2Jsb2JfaW5mb3xpYmFzZV9ibG9iX29wZW58aWJhc2VfY2xvc2V8aWJhc2VfY29tbWl0fGliYXNlX2NvbW1pdF9yZXR8aWJhc2VfY29ubmVjdHxpYmFzZV9kYl9pbmZvfGliYXNlX2RlbGV0ZV91c2VyfGliYXNlX2Ryb3BfZGJ8aWJhc2VfZXJyY29kZXxpYmFzZV9lcnJtc2d8aWJhc2VfZXhlY3V0ZXxpYmFzZV9mZXRjaF9hc3NvY3xpYmFzZV9mZXRjaF9vYmplY3R8aWJhc2VfZmV0Y2hfcm93fGliYXNlX2ZpZWxkX2luZm98aWJhc2VfZnJlZV9ldmVudF9oYW5kbGVyfGliYXNlX2ZyZWVfcXVlcnl8aWJhc2VfZnJlZV9yZXN1bHR8aWJhc2VfZ2VuX2lkfGliYXNlX21haW50YWluX2RifGliYXNlX21vZGlmeV91c2VyfGliYXNlX25hbWVfcmVzdWx0fGliYXNlX251bV9maWVsZHN8aWJhc2VfbnVtX3BhcmFtc3xpYmFzZV9wYXJhbV9pbmZvfGliYXNlX3Bjb25uZWN0fGliYXNlX3ByZXBhcmV8aWJhc2VfcXVlcnl8aWJhc2VfcmVzdG9yZXxpYmFzZV9yb2xsYmFja3xpYmFzZV9yb2xsYmFja19yZXR8aWJhc2Vfc2VydmVyX2luZm98aWJhc2Vfc2VydmljZV9hdHRhY2h8aWJhc2Vfc2VydmljZV9kZXRhY2h8aWJhc2Vfc2V0X2V2ZW50X2hhbmRsZXJ8aWJhc2VfdGltZWZtdHxpYmFzZV90cmFuc3xpYmFzZV93YWl0X2V2ZW50fGljb252fGljb252X2dldF9lbmNvZGluZ3xpY29udl9taW1lX2RlY29kZXxpY29udl9taW1lX2RlY29kZV9oZWFkZXJzfGljb252X21pbWVfZW5jb2RlfGljb252X3NldF9lbmNvZGluZ3xpY29udl9zdHJsZW58aWNvbnZfc3RycG9zfGljb252X3N0cnJwb3N8aWNvbnZfc3Vic3RyfGlkM19nZXRfZnJhbWVfbG9uZ19uYW1lfGlkM19nZXRfZnJhbWVfc2hvcnRfbmFtZXxpZDNfZ2V0X2dlbnJlX2lkfGlkM19nZXRfZ2VucmVfbGlzdHxpZDNfZ2V0X2dlbnJlX25hbWV8aWQzX2dldF90YWd8aWQzX2dldF92ZXJzaW9ufGlkM19yZW1vdmVfdGFnfGlkM19zZXRfdGFnfGlkM3YyYXR0YWNoZWRwaWN0dXJlZnJhbWV8aWQzdjJmcmFtZXxpZDN2MnRhZ3xpZGF0ZXxpZG5fdG9fYXNjaWl8aWRuX3RvX3VuaWNvZGV8aWRuX3RvX3V0Zjh8aWZ4X2FmZmVjdGVkX3Jvd3N8aWZ4X2Jsb2JpbmZpbGVfbW9kZXxpZnhfYnl0ZWFzdmFyY2hhcnxpZnhfY2xvc2V8aWZ4X2Nvbm5lY3R8aWZ4X2NvcHlfYmxvYnxpZnhfY3JlYXRlX2Jsb2J8aWZ4X2NyZWF0ZV9jaGFyfGlmeF9kb3xpZnhfZXJyb3J8aWZ4X2Vycm9ybXNnfGlmeF9mZXRjaF9yb3d8aWZ4X2ZpZWxkcHJvcGVydGllc3xpZnhfZmllbGR0eXBlc3xpZnhfZnJlZV9ibG9ifGlmeF9mcmVlX2NoYXJ8aWZ4X2ZyZWVfcmVzdWx0fGlmeF9nZXRfYmxvYnxpZnhfZ2V0X2NoYXJ8aWZ4X2dldHNxbGNhfGlmeF9odG1sdGJsX3Jlc3VsdHxpZnhfbnVsbGZvcm1hdHxpZnhfbnVtX2ZpZWxkc3xpZnhfbnVtX3Jvd3N8aWZ4X3Bjb25uZWN0fGlmeF9wcmVwYXJlfGlmeF9xdWVyeXxpZnhfdGV4dGFzdmFyY2hhcnxpZnhfdXBkYXRlX2Jsb2J8aWZ4X3VwZGF0ZV9jaGFyfGlmeHVzX2Nsb3NlX3Nsb2J8aWZ4dXNfY3JlYXRlX3Nsb2J8aWZ4dXNfZnJlZV9zbG9ifGlmeHVzX29wZW5fc2xvYnxpZnh1c19yZWFkX3Nsb2J8aWZ4dXNfc2Vla19zbG9ifGlmeHVzX3RlbGxfc2xvYnxpZnh1c193cml0ZV9zbG9ifGlnbm9yZV91c2VyX2Fib3J0fGlpc19hZGRfc2VydmVyfGlpc19nZXRfZGlyX3NlY3VyaXR5fGlpc19nZXRfc2NyaXB0X21hcHxpaXNfZ2V0X3NlcnZlcl9ieV9jb21tZW50fGlpc19nZXRfc2VydmVyX2J5X3BhdGh8aWlzX2dldF9zZXJ2ZXJfcmlnaHRzfGlpc19nZXRfc2VydmljZV9zdGF0ZXxpaXNfcmVtb3ZlX3NlcnZlcnxpaXNfc2V0X2FwcF9zZXR0aW5nc3xpaXNfc2V0X2Rpcl9zZWN1cml0eXxpaXNfc2V0X3NjcmlwdF9tYXB8aWlzX3NldF9zZXJ2ZXJfcmlnaHRzfGlpc19zdGFydF9zZXJ2ZXJ8aWlzX3N0YXJ0X3NlcnZpY2V8aWlzX3N0b3Bfc2VydmVyfGlpc19zdG9wX3NlcnZpY2V8aW1hZ2Uyd2JtcHxpbWFnZV90eXBlX3RvX2V4dGVuc2lvbnxpbWFnZV90eXBlX3RvX21pbWVfdHlwZXxpbWFnZWFscGhhYmxlbmRpbmd8aW1hZ2VhbnRpYWxpYXN8aW1hZ2VhcmN8aW1hZ2VjaGFyfGltYWdlY2hhcnVwfGltYWdlY29sb3JhbGxvY2F0ZXxpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYXxpbWFnZWNvbG9yYXR8aW1hZ2Vjb2xvcmNsb3Nlc3R8aW1hZ2Vjb2xvcmNsb3Nlc3RhbHBoYXxpbWFnZWNvbG9yY2xvc2VzdGh3YnxpbWFnZWNvbG9yZGVhbGxvY2F0ZXxpbWFnZWNvbG9yZXhhY3R8aW1hZ2Vjb2xvcmV4YWN0YWxwaGF8aW1hZ2Vjb2xvcm1hdGNofGltYWdlY29sb3JyZXNvbHZlfGltYWdlY29sb3JyZXNvbHZlYWxwaGF8aW1hZ2Vjb2xvcnNldHxpbWFnZWNvbG9yc2ZvcmluZGV4fGltYWdlY29sb3JzdG90YWx8aW1hZ2Vjb2xvcnRyYW5zcGFyZW50fGltYWdlY29udm9sdXRpb258aW1hZ2Vjb3B5fGltYWdlY29weW1lcmdlfGltYWdlY29weW1lcmdlZ3JheXxpbWFnZWNvcHlyZXNhbXBsZWR8aW1hZ2Vjb3B5cmVzaXplZHxpbWFnZWNyZWF0ZXxpbWFnZWNyZWF0ZWZyb21nZHxpbWFnZWNyZWF0ZWZyb21nZDJ8aW1hZ2VjcmVhdGVmcm9tZ2QycGFydHxpbWFnZWNyZWF0ZWZyb21naWZ8aW1hZ2VjcmVhdGVmcm9tanBlZ3xpbWFnZWNyZWF0ZWZyb21wbmd8aW1hZ2VjcmVhdGVmcm9tc3RyaW5nfGltYWdlY3JlYXRlZnJvbXdibXB8aW1hZ2VjcmVhdGVmcm9teGJtfGltYWdlY3JlYXRlZnJvbXhwbXxpbWFnZWNyZWF0ZXRydWVjb2xvcnxpbWFnZWRhc2hlZGxpbmV8aW1hZ2VkZXN0cm95fGltYWdlZWxsaXBzZXxpbWFnZWZpbGx8aW1hZ2VmaWxsZWRhcmN8aW1hZ2VmaWxsZWRlbGxpcHNlfGltYWdlZmlsbGVkcG9seWdvbnxpbWFnZWZpbGxlZHJlY3RhbmdsZXxpbWFnZWZpbGx0b2JvcmRlcnxpbWFnZWZpbHRlcnxpbWFnZWZvbnRoZWlnaHR8aW1hZ2Vmb250d2lkdGh8aW1hZ2VmdGJib3h8aW1hZ2VmdHRleHR8aW1hZ2VnYW1tYWNvcnJlY3R8aW1hZ2VnZHxpbWFnZWdkMnxpbWFnZWdpZnxpbWFnZWdyYWJzY3JlZW58aW1hZ2VncmFid2luZG93fGltYWdlaW50ZXJsYWNlfGltYWdlaXN0cnVlY29sb3J8aW1hZ2VqcGVnfGltYWdlbGF5ZXJlZmZlY3R8aW1hZ2VsaW5lfGltYWdlbG9hZGZvbnR8aW1hZ2VwYWxldHRlY29weXxpbWFnZXBuZ3xpbWFnZXBvbHlnb258aW1hZ2Vwc2Jib3h8aW1hZ2Vwc2VuY29kZWZvbnR8aW1hZ2Vwc2V4dGVuZGZvbnR8aW1hZ2Vwc2ZyZWVmb250fGltYWdlcHNsb2FkZm9udHxpbWFnZXBzc2xhbnRmb250fGltYWdlcHN0ZXh0fGltYWdlcmVjdGFuZ2xlfGltYWdlcm90YXRlfGltYWdlc2F2ZWFscGhhfGltYWdlc2V0YnJ1c2h8aW1hZ2VzZXRwaXhlbHxpbWFnZXNldHN0eWxlfGltYWdlc2V0dGhpY2tuZXNzfGltYWdlc2V0dGlsZXxpbWFnZXN0cmluZ3xpbWFnZXN0cmluZ3VwfGltYWdlc3h8aW1hZ2VzeXxpbWFnZXRydWVjb2xvcnRvcGFsZXR0ZXxpbWFnZXR0ZmJib3h8aW1hZ2V0dGZ0ZXh0fGltYWdldHlwZXN8aW1hZ2V3Ym1wfGltYWdleGJtfGltYWdpY2t8aW1hZ2lja19hZGFwdGl2ZWJsdXJpbWFnZXxpbWFnaWNrX2FkYXB0aXZlcmVzaXplaW1hZ2V8aW1hZ2lja19hZGFwdGl2ZXNoYXJwZW5pbWFnZXxpbWFnaWNrX2FkYXB0aXZldGhyZXNob2xkaW1hZ2V8aW1hZ2lja19hZGRpbWFnZXxpbWFnaWNrX2FkZG5vaXNlaW1hZ2V8aW1hZ2lja19hZmZpbmV0cmFuc2Zvcm1pbWFnZXxpbWFnaWNrX2FuaW1hdGVpbWFnZXN8aW1hZ2lja19hbm5vdGF0ZWltYWdlfGltYWdpY2tfYXBwZW5kaW1hZ2VzfGltYWdpY2tfYXZlcmFnZWltYWdlc3xpbWFnaWNrX2JsYWNrdGhyZXNob2xkaW1hZ2V8aW1hZ2lja19ibHVyaW1hZ2V8aW1hZ2lja19ib3JkZXJpbWFnZXxpbWFnaWNrX2NoYXJjb2FsaW1hZ2V8aW1hZ2lja19jaG9waW1hZ2V8aW1hZ2lja19jbGVhcnxpbWFnaWNrX2NsaXBpbWFnZXxpbWFnaWNrX2NsaXBwYXRoaW1hZ2V8aW1hZ2lja19jbG9uZXxpbWFnaWNrX2NsdXRpbWFnZXxpbWFnaWNrX2NvYWxlc2NlaW1hZ2VzfGltYWdpY2tfY29sb3JmbG9vZGZpbGxpbWFnZXxpbWFnaWNrX2NvbG9yaXplaW1hZ2V8aW1hZ2lja19jb21iaW5laW1hZ2VzfGltYWdpY2tfY29tbWVudGltYWdlfGltYWdpY2tfY29tcGFyZWltYWdlY2hhbm5lbHN8aW1hZ2lja19jb21wYXJlaW1hZ2VsYXllcnN8aW1hZ2lja19jb21wYXJlaW1hZ2VzfGltYWdpY2tfY29tcG9zaXRlaW1hZ2V8aW1hZ2lja19jb25zdHJ1Y3R8aW1hZ2lja19jb250cmFzdGltYWdlfGltYWdpY2tfY29udHJhc3RzdHJldGNoaW1hZ2V8aW1hZ2lja19jb252b2x2ZWltYWdlfGltYWdpY2tfY3JvcGltYWdlfGltYWdpY2tfY3JvcHRodW1ibmFpbGltYWdlfGltYWdpY2tfY3VycmVudHxpbWFnaWNrX2N5Y2xlY29sb3JtYXBpbWFnZXxpbWFnaWNrX2RlY2lwaGVyaW1hZ2V8aW1hZ2lja19kZWNvbnN0cnVjdGltYWdlc3xpbWFnaWNrX2RlbGV0ZWltYWdlYXJ0aWZhY3R8aW1hZ2lja19kZXNwZWNrbGVpbWFnZXxpbWFnaWNrX2Rlc3Ryb3l8aW1hZ2lja19kaXNwbGF5aW1hZ2V8aW1hZ2lja19kaXNwbGF5aW1hZ2VzfGltYWdpY2tfZGlzdG9ydGltYWdlfGltYWdpY2tfZHJhd2ltYWdlfGltYWdpY2tfZWRnZWltYWdlfGltYWdpY2tfZW1ib3NzaW1hZ2V8aW1hZ2lja19lbmNpcGhlcmltYWdlfGltYWdpY2tfZW5oYW5jZWltYWdlfGltYWdpY2tfZXF1YWxpemVpbWFnZXxpbWFnaWNrX2V2YWx1YXRlaW1hZ2V8aW1hZ2lja19leHRlbnRpbWFnZXxpbWFnaWNrX2ZsYXR0ZW5pbWFnZXN8aW1hZ2lja19mbGlwaW1hZ2V8aW1hZ2lja19mbG9vZGZpbGxwYWludGltYWdlfGltYWdpY2tfZmxvcGltYWdlfGltYWdpY2tfZnJhbWVpbWFnZXxpbWFnaWNrX2Z4aW1hZ2V8aW1hZ2lja19nYW1tYWltYWdlfGltYWdpY2tfZ2F1c3NpYW5ibHVyaW1hZ2V8aW1hZ2lja19nZXRjb2xvcnNwYWNlfGltYWdpY2tfZ2V0Y29tcHJlc3Npb258aW1hZ2lja19nZXRjb21wcmVzc2lvbnF1YWxpdHl8aW1hZ2lja19nZXRjb3B5cmlnaHR8aW1hZ2lja19nZXRmaWxlbmFtZXxpbWFnaWNrX2dldGZvbnR8aW1hZ2lja19nZXRmb3JtYXR8aW1hZ2lja19nZXRncmF2aXR5fGltYWdpY2tfZ2V0aG9tZXVybHxpbWFnaWNrX2dldGltYWdlfGltYWdpY2tfZ2V0aW1hZ2VhbHBoYWNoYW5uZWx8aW1hZ2lja19nZXRpbWFnZWFydGlmYWN0fGltYWdpY2tfZ2V0aW1hZ2ViYWNrZ3JvdW5kY29sb3J8aW1hZ2lja19nZXRpbWFnZWJsb2J8aW1hZ2lja19nZXRpbWFnZWJsdWVwcmltYXJ5fGltYWdpY2tfZ2V0aW1hZ2Vib3JkZXJjb2xvcnxpbWFnaWNrX2dldGltYWdlY2hhbm5lbGRlcHRofGltYWdpY2tfZ2V0aW1hZ2VjaGFubmVsZGlzdG9ydGlvbnxpbWFnaWNrX2dldGltYWdlY2hhbm5lbGRpc3RvcnRpb25zfGltYWdpY2tfZ2V0aW1hZ2VjaGFubmVsZXh0cmVtYXxpbWFnaWNrX2dldGltYWdlY2hhbm5lbG1lYW58aW1hZ2lja19nZXRpbWFnZWNoYW5uZWxyYW5nZXxpbWFnaWNrX2dldGltYWdlY2hhbm5lbHN0YXRpc3RpY3N8aW1hZ2lja19nZXRpbWFnZWNsaXBtYXNrfGltYWdpY2tfZ2V0aW1hZ2Vjb2xvcm1hcGNvbG9yfGltYWdpY2tfZ2V0aW1hZ2Vjb2xvcnN8aW1hZ2lja19nZXRpbWFnZWNvbG9yc3BhY2V8aW1hZ2lja19nZXRpbWFnZWNvbXBvc2V8aW1hZ2lja19nZXRpbWFnZWNvbXByZXNzaW9ufGltYWdpY2tfZ2V0aW1hZ2Vjb21wcmVzc2lvbnF1YWxpdHl8aW1hZ2lja19nZXRpbWFnZWRlbGF5fGltYWdpY2tfZ2V0aW1hZ2VkZXB0aHxpbWFnaWNrX2dldGltYWdlZGlzcG9zZXxpbWFnaWNrX2dldGltYWdlZGlzdG9ydGlvbnxpbWFnaWNrX2dldGltYWdlZXh0cmVtYXxpbWFnaWNrX2dldGltYWdlZmlsZW5hbWV8aW1hZ2lja19nZXRpbWFnZWZvcm1hdHxpbWFnaWNrX2dldGltYWdlZ2FtbWF8aW1hZ2lja19nZXRpbWFnZWdlb21ldHJ5fGltYWdpY2tfZ2V0aW1hZ2VncmF2aXR5fGltYWdpY2tfZ2V0aW1hZ2VncmVlbnByaW1hcnl8aW1hZ2lja19nZXRpbWFnZWhlaWdodHxpbWFnaWNrX2dldGltYWdlaGlzdG9ncmFtfGltYWdpY2tfZ2V0aW1hZ2VpbmRleHxpbWFnaWNrX2dldGltYWdlaW50ZXJsYWNlc2NoZW1lfGltYWdpY2tfZ2V0aW1hZ2VpbnRlcnBvbGF0ZW1ldGhvZHxpbWFnaWNrX2dldGltYWdlaXRlcmF0aW9uc3xpbWFnaWNrX2dldGltYWdlbGVuZ3RofGltYWdpY2tfZ2V0aW1hZ2VtYWdpY2tsaWNlbnNlfGltYWdpY2tfZ2V0aW1hZ2VtYXR0ZXxpbWFnaWNrX2dldGltYWdlbWF0dGVjb2xvcnxpbWFnaWNrX2dldGltYWdlb3JpZW50YXRpb258aW1hZ2lja19nZXRpbWFnZXBhZ2V8aW1hZ2lja19nZXRpbWFnZXBpeGVsY29sb3J8aW1hZ2lja19nZXRpbWFnZXByb2ZpbGV8aW1hZ2lja19nZXRpbWFnZXByb2ZpbGVzfGltYWdpY2tfZ2V0aW1hZ2Vwcm9wZXJ0aWVzfGltYWdpY2tfZ2V0aW1hZ2Vwcm9wZXJ0eXxpbWFnaWNrX2dldGltYWdlcmVkcHJpbWFyeXxpbWFnaWNrX2dldGltYWdlcmVnaW9ufGltYWdpY2tfZ2V0aW1hZ2VyZW5kZXJpbmdpbnRlbnR8aW1hZ2lja19nZXRpbWFnZXJlc29sdXRpb258aW1hZ2lja19nZXRpbWFnZXNibG9ifGltYWdpY2tfZ2V0aW1hZ2VzY2VuZXxpbWFnaWNrX2dldGltYWdlc2lnbmF0dXJlfGltYWdpY2tfZ2V0aW1hZ2VzaXplfGltYWdpY2tfZ2V0aW1hZ2V0aWNrc3BlcnNlY29uZHxpbWFnaWNrX2dldGltYWdldG90YWxpbmtkZW5zaXR5fGltYWdpY2tfZ2V0aW1hZ2V0eXBlfGltYWdpY2tfZ2V0aW1hZ2V1bml0c3xpbWFnaWNrX2dldGltYWdldmlydHVhbHBpeGVsbWV0aG9kfGltYWdpY2tfZ2V0aW1hZ2V3aGl0ZXBvaW50fGltYWdpY2tfZ2V0aW1hZ2V3aWR0aHxpbWFnaWNrX2dldGludGVybGFjZXNjaGVtZXxpbWFnaWNrX2dldGl0ZXJhdG9yaW5kZXh8aW1hZ2lja19nZXRudW1iZXJpbWFnZXN8aW1hZ2lja19nZXRvcHRpb258aW1hZ2lja19nZXRwYWNrYWdlbmFtZXxpbWFnaWNrX2dldHBhZ2V8aW1hZ2lja19nZXRwaXhlbGl0ZXJhdG9yfGltYWdpY2tfZ2V0cGl4ZWxyZWdpb25pdGVyYXRvcnxpbWFnaWNrX2dldHBvaW50c2l6ZXxpbWFnaWNrX2dldHF1YW50dW1kZXB0aHxpbWFnaWNrX2dldHF1YW50dW1yYW5nZXxpbWFnaWNrX2dldHJlbGVhc2VkYXRlfGltYWdpY2tfZ2V0cmVzb3VyY2V8aW1hZ2lja19nZXRyZXNvdXJjZWxpbWl0fGltYWdpY2tfZ2V0c2FtcGxpbmdmYWN0b3JzfGltYWdpY2tfZ2V0c2l6ZXxpbWFnaWNrX2dldHNpemVvZmZzZXR8aW1hZ2lja19nZXR2ZXJzaW9ufGltYWdpY2tfaGFzbmV4dGltYWdlfGltYWdpY2tfaGFzcHJldmlvdXNpbWFnZXxpbWFnaWNrX2lkZW50aWZ5aW1hZ2V8aW1hZ2lja19pbXBsb2RlaW1hZ2V8aW1hZ2lja19sYWJlbGltYWdlfGltYWdpY2tfbGV2ZWxpbWFnZXxpbWFnaWNrX2xpbmVhcnN0cmV0Y2hpbWFnZXxpbWFnaWNrX2xpcXVpZHJlc2NhbGVpbWFnZXxpbWFnaWNrX21hZ25pZnlpbWFnZXxpbWFnaWNrX21hcGltYWdlfGltYWdpY2tfbWF0dGVmbG9vZGZpbGxpbWFnZXxpbWFnaWNrX21lZGlhbmZpbHRlcmltYWdlfGltYWdpY2tfbWVyZ2VpbWFnZWxheWVyc3xpbWFnaWNrX21pbmlmeWltYWdlfGltYWdpY2tfbW9kdWxhdGVpbWFnZXxpbWFnaWNrX21vbnRhZ2VpbWFnZXxpbWFnaWNrX21vcnBoaW1hZ2VzfGltYWdpY2tfbW9zYWljaW1hZ2VzfGltYWdpY2tfbW90aW9uYmx1cmltYWdlfGltYWdpY2tfbmVnYXRlaW1hZ2V8aW1hZ2lja19uZXdpbWFnZXxpbWFnaWNrX25ld3BzZXVkb2ltYWdlfGltYWdpY2tfbmV4dGltYWdlfGltYWdpY2tfbm9ybWFsaXplaW1hZ2V8aW1hZ2lja19vaWxwYWludGltYWdlfGltYWdpY2tfb3BhcXVlcGFpbnRpbWFnZXxpbWFnaWNrX29wdGltaXplaW1hZ2VsYXllcnN8aW1hZ2lja19vcmRlcmVkcG9zdGVyaXplaW1hZ2V8aW1hZ2lja19wYWludGZsb29kZmlsbGltYWdlfGltYWdpY2tfcGFpbnRvcGFxdWVpbWFnZXxpbWFnaWNrX3BhaW50dHJhbnNwYXJlbnRpbWFnZXxpbWFnaWNrX3BpbmdpbWFnZXxpbWFnaWNrX3BpbmdpbWFnZWJsb2J8aW1hZ2lja19waW5naW1hZ2VmaWxlfGltYWdpY2tfcG9sYXJvaWRpbWFnZXxpbWFnaWNrX3Bvc3Rlcml6ZWltYWdlfGltYWdpY2tfcHJldmlld2ltYWdlc3xpbWFnaWNrX3ByZXZpb3VzaW1hZ2V8aW1hZ2lja19wcm9maWxlaW1hZ2V8aW1hZ2lja19xdWFudGl6ZWltYWdlfGltYWdpY2tfcXVhbnRpemVpbWFnZXN8aW1hZ2lja19xdWVyeWZvbnRtZXRyaWNzfGltYWdpY2tfcXVlcnlmb250c3xpbWFnaWNrX3F1ZXJ5Zm9ybWF0c3xpbWFnaWNrX3JhZGlhbGJsdXJpbWFnZXxpbWFnaWNrX3JhaXNlaW1hZ2V8aW1hZ2lja19yYW5kb210aHJlc2hvbGRpbWFnZXxpbWFnaWNrX3JlYWRpbWFnZXxpbWFnaWNrX3JlYWRpbWFnZWJsb2J8aW1hZ2lja19yZWFkaW1hZ2VmaWxlfGltYWdpY2tfcmVjb2xvcmltYWdlfGltYWdpY2tfcmVkdWNlbm9pc2VpbWFnZXxpbWFnaWNrX3JlbW92ZWltYWdlfGltYWdpY2tfcmVtb3ZlaW1hZ2Vwcm9maWxlfGltYWdpY2tfcmVuZGVyfGltYWdpY2tfcmVzYW1wbGVpbWFnZXxpbWFnaWNrX3Jlc2V0aW1hZ2VwYWdlfGltYWdpY2tfcmVzaXplaW1hZ2V8aW1hZ2lja19yb2xsaW1hZ2V8aW1hZ2lja19yb3RhdGVpbWFnZXxpbWFnaWNrX3JvdW5kY29ybmVyc3xpbWFnaWNrX3NhbXBsZWltYWdlfGltYWdpY2tfc2NhbGVpbWFnZXxpbWFnaWNrX3NlcGFyYXRlaW1hZ2VjaGFubmVsfGltYWdpY2tfc2VwaWF0b25laW1hZ2V8aW1hZ2lja19zZXRiYWNrZ3JvdW5kY29sb3J8aW1hZ2lja19zZXRjb2xvcnNwYWNlfGltYWdpY2tfc2V0Y29tcHJlc3Npb258aW1hZ2lja19zZXRjb21wcmVzc2lvbnF1YWxpdHl8aW1hZ2lja19zZXRmaWxlbmFtZXxpbWFnaWNrX3NldGZpcnN0aXRlcmF0b3J8aW1hZ2lja19zZXRmb250fGltYWdpY2tfc2V0Zm9ybWF0fGltYWdpY2tfc2V0Z3Jhdml0eXxpbWFnaWNrX3NldGltYWdlfGltYWdpY2tfc2V0aW1hZ2VhbHBoYWNoYW5uZWx8aW1hZ2lja19zZXRpbWFnZWFydGlmYWN0fGltYWdpY2tfc2V0aW1hZ2ViYWNrZ3JvdW5kY29sb3J8aW1hZ2lja19zZXRpbWFnZWJpYXN8aW1hZ2lja19zZXRpbWFnZWJsdWVwcmltYXJ5fGltYWdpY2tfc2V0aW1hZ2Vib3JkZXJjb2xvcnxpbWFnaWNrX3NldGltYWdlY2hhbm5lbGRlcHRofGltYWdpY2tfc2V0aW1hZ2VjbGlwbWFza3xpbWFnaWNrX3NldGltYWdlY29sb3JtYXBjb2xvcnxpbWFnaWNrX3NldGltYWdlY29sb3JzcGFjZXxpbWFnaWNrX3NldGltYWdlY29tcG9zZXxpbWFnaWNrX3NldGltYWdlY29tcHJlc3Npb258aW1hZ2lja19zZXRpbWFnZWNvbXByZXNzaW9ucXVhbGl0eXxpbWFnaWNrX3NldGltYWdlZGVsYXl8aW1hZ2lja19zZXRpbWFnZWRlcHRofGltYWdpY2tfc2V0aW1hZ2VkaXNwb3NlfGltYWdpY2tfc2V0aW1hZ2VleHRlbnR8aW1hZ2lja19zZXRpbWFnZWZpbGVuYW1lfGltYWdpY2tfc2V0aW1hZ2Vmb3JtYXR8aW1hZ2lja19zZXRpbWFnZWdhbW1hfGltYWdpY2tfc2V0aW1hZ2VncmF2aXR5fGltYWdpY2tfc2V0aW1hZ2VncmVlbnByaW1hcnl8aW1hZ2lja19zZXRpbWFnZWluZGV4fGltYWdpY2tfc2V0aW1hZ2VpbnRlcmxhY2VzY2hlbWV8aW1hZ2lja19zZXRpbWFnZWludGVycG9sYXRlbWV0aG9kfGltYWdpY2tfc2V0aW1hZ2VpdGVyYXRpb25zfGltYWdpY2tfc2V0aW1hZ2VtYXR0ZXxpbWFnaWNrX3NldGltYWdlbWF0dGVjb2xvcnxpbWFnaWNrX3NldGltYWdlb3BhY2l0eXxpbWFnaWNrX3NldGltYWdlb3JpZW50YXRpb258aW1hZ2lja19zZXRpbWFnZXBhZ2V8aW1hZ2lja19zZXRpbWFnZXByb2ZpbGV8aW1hZ2lja19zZXRpbWFnZXByb3BlcnR5fGltYWdpY2tfc2V0aW1hZ2VyZWRwcmltYXJ5fGltYWdpY2tfc2V0aW1hZ2VyZW5kZXJpbmdpbnRlbnR8aW1hZ2lja19zZXRpbWFnZXJlc29sdXRpb258aW1hZ2lja19zZXRpbWFnZXNjZW5lfGltYWdpY2tfc2V0aW1hZ2V0aWNrc3BlcnNlY29uZHxpbWFnaWNrX3NldGltYWdldHlwZXxpbWFnaWNrX3NldGltYWdldW5pdHN8aW1hZ2lja19zZXRpbWFnZXZpcnR1YWxwaXhlbG1ldGhvZHxpbWFnaWNrX3NldGltYWdld2hpdGVwb2ludHxpbWFnaWNrX3NldGludGVybGFjZXNjaGVtZXxpbWFnaWNrX3NldGl0ZXJhdG9yaW5kZXh8aW1hZ2lja19zZXRsYXN0aXRlcmF0b3J8aW1hZ2lja19zZXRvcHRpb258aW1hZ2lja19zZXRwYWdlfGltYWdpY2tfc2V0cG9pbnRzaXplfGltYWdpY2tfc2V0cmVzb2x1dGlvbnxpbWFnaWNrX3NldHJlc291cmNlbGltaXR8aW1hZ2lja19zZXRzYW1wbGluZ2ZhY3RvcnN8aW1hZ2lja19zZXRzaXplfGltYWdpY2tfc2V0c2l6ZW9mZnNldHxpbWFnaWNrX3NldHR5cGV8aW1hZ2lja19zaGFkZWltYWdlfGltYWdpY2tfc2hhZG93aW1hZ2V8aW1hZ2lja19zaGFycGVuaW1hZ2V8aW1hZ2lja19zaGF2ZWltYWdlfGltYWdpY2tfc2hlYXJpbWFnZXxpbWFnaWNrX3NpZ21vaWRhbGNvbnRyYXN0aW1hZ2V8aW1hZ2lja19za2V0Y2hpbWFnZXxpbWFnaWNrX3NvbGFyaXplaW1hZ2V8aW1hZ2lja19zcGxpY2VpbWFnZXxpbWFnaWNrX3NwcmVhZGltYWdlfGltYWdpY2tfc3RlZ2Fub2ltYWdlfGltYWdpY2tfc3RlcmVvaW1hZ2V8aW1hZ2lja19zdHJpcGltYWdlfGltYWdpY2tfc3dpcmxpbWFnZXxpbWFnaWNrX3RleHR1cmVpbWFnZXxpbWFnaWNrX3RocmVzaG9sZGltYWdlfGltYWdpY2tfdGh1bWJuYWlsaW1hZ2V8aW1hZ2lja190aW50aW1hZ2V8aW1hZ2lja190cmFuc2Zvcm1pbWFnZXxpbWFnaWNrX3RyYW5zcGFyZW50cGFpbnRpbWFnZXxpbWFnaWNrX3RyYW5zcG9zZWltYWdlfGltYWdpY2tfdHJhbnN2ZXJzZWltYWdlfGltYWdpY2tfdHJpbWltYWdlfGltYWdpY2tfdW5pcXVlaW1hZ2Vjb2xvcnN8aW1hZ2lja191bnNoYXJwbWFza2ltYWdlfGltYWdpY2tfdmFsaWR8aW1hZ2lja192aWduZXR0ZWltYWdlfGltYWdpY2tfd2F2ZWltYWdlfGltYWdpY2tfd2hpdGV0aHJlc2hvbGRpbWFnZXxpbWFnaWNrX3dyaXRlaW1hZ2V8aW1hZ2lja193cml0ZWltYWdlZmlsZXxpbWFnaWNrX3dyaXRlaW1hZ2VzfGltYWdpY2tfd3JpdGVpbWFnZXNmaWxlfGltYWdpY2tkcmF3fGltYWdpY2tkcmF3X2FmZmluZXxpbWFnaWNrZHJhd19hbm5vdGF0aW9ufGltYWdpY2tkcmF3X2FyY3xpbWFnaWNrZHJhd19iZXppZXJ8aW1hZ2lja2RyYXdfY2lyY2xlfGltYWdpY2tkcmF3X2NsZWFyfGltYWdpY2tkcmF3X2Nsb25lfGltYWdpY2tkcmF3X2NvbG9yfGltYWdpY2tkcmF3X2NvbW1lbnR8aW1hZ2lja2RyYXdfY29tcG9zaXRlfGltYWdpY2tkcmF3X2NvbnN0cnVjdHxpbWFnaWNrZHJhd19kZXN0cm95fGltYWdpY2tkcmF3X2VsbGlwc2V8aW1hZ2lja2RyYXdfZ2V0Y2xpcHBhdGh8aW1hZ2lja2RyYXdfZ2V0Y2xpcHJ1bGV8aW1hZ2lja2RyYXdfZ2V0Y2xpcHVuaXRzfGltYWdpY2tkcmF3X2dldGZpbGxjb2xvcnxpbWFnaWNrZHJhd19nZXRmaWxsb3BhY2l0eXxpbWFnaWNrZHJhd19nZXRmaWxscnVsZXxpbWFnaWNrZHJhd19nZXRmb250fGltYWdpY2tkcmF3X2dldGZvbnRmYW1pbHl8aW1hZ2lja2RyYXdfZ2V0Zm9udHNpemV8aW1hZ2lja2RyYXdfZ2V0Zm9udHN0eWxlfGltYWdpY2tkcmF3X2dldGZvbnR3ZWlnaHR8aW1hZ2lja2RyYXdfZ2V0Z3Jhdml0eXxpbWFnaWNrZHJhd19nZXRzdHJva2VhbnRpYWxpYXN8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tlY29sb3J8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tlZGFzaGFycmF5fGltYWdpY2tkcmF3X2dldHN0cm9rZWRhc2hvZmZzZXR8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tlbGluZWNhcHxpbWFnaWNrZHJhd19nZXRzdHJva2VsaW5lam9pbnxpbWFnaWNrZHJhd19nZXRzdHJva2VtaXRlcmxpbWl0fGltYWdpY2tkcmF3X2dldHN0cm9rZW9wYWNpdHl8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tld2lkdGh8aW1hZ2lja2RyYXdfZ2V0dGV4dGFsaWdubWVudHxpbWFnaWNrZHJhd19nZXR0ZXh0YW50aWFsaWFzfGltYWdpY2tkcmF3X2dldHRleHRkZWNvcmF0aW9ufGltYWdpY2tkcmF3X2dldHRleHRlbmNvZGluZ3xpbWFnaWNrZHJhd19nZXR0ZXh0dW5kZXJjb2xvcnxpbWFnaWNrZHJhd19nZXR2ZWN0b3JncmFwaGljc3xpbWFnaWNrZHJhd19saW5lfGltYWdpY2tkcmF3X21hdHRlfGltYWdpY2tkcmF3X3BhdGhjbG9zZXxpbWFnaWNrZHJhd19wYXRoY3VydmV0b2Fic29sdXRlfGltYWdpY2tkcmF3X3BhdGhjdXJ2ZXRvcXVhZHJhdGljYmV6aWVyYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aGN1cnZldG9xdWFkcmF0aWNiZXppZXJyZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRoY3VydmV0b3F1YWRyYXRpY2JlemllcnNtb290aGFic29sdXRlfGltYWdpY2tkcmF3X3BhdGhjdXJ2ZXRvcXVhZHJhdGljYmV6aWVyc21vb3RocmVsYXRpdmV8aW1hZ2lja2RyYXdfcGF0aGN1cnZldG9yZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRoY3VydmV0b3Ntb290aGFic29sdXRlfGltYWdpY2tkcmF3X3BhdGhjdXJ2ZXRvc21vb3RocmVsYXRpdmV8aW1hZ2lja2RyYXdfcGF0aGVsbGlwdGljYXJjYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aGVsbGlwdGljYXJjcmVsYXRpdmV8aW1hZ2lja2RyYXdfcGF0aGZpbmlzaHxpbWFnaWNrZHJhd19wYXRobGluZXRvYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aGxpbmV0b2hvcml6b250YWxhYnNvbHV0ZXxpbWFnaWNrZHJhd19wYXRobGluZXRvaG9yaXpvbnRhbHJlbGF0aXZlfGltYWdpY2tkcmF3X3BhdGhsaW5ldG9yZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRobGluZXRvdmVydGljYWxhYnNvbHV0ZXxpbWFnaWNrZHJhd19wYXRobGluZXRvdmVydGljYWxyZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRobW92ZXRvYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aG1vdmV0b3JlbGF0aXZlfGltYWdpY2tkcmF3X3BhdGhzdGFydHxpbWFnaWNrZHJhd19wb2ludHxpbWFnaWNrZHJhd19wb2x5Z29ufGltYWdpY2tkcmF3X3BvbHlsaW5lfGltYWdpY2tkcmF3X3BvcHxpbWFnaWNrZHJhd19wb3BjbGlwcGF0aHxpbWFnaWNrZHJhd19wb3BkZWZzfGltYWdpY2tkcmF3X3BvcHBhdHRlcm58aW1hZ2lja2RyYXdfcHVzaHxpbWFnaWNrZHJhd19wdXNoY2xpcHBhdGh8aW1hZ2lja2RyYXdfcHVzaGRlZnN8aW1hZ2lja2RyYXdfcHVzaHBhdHRlcm58aW1hZ2lja2RyYXdfcmVjdGFuZ2xlfGltYWdpY2tkcmF3X3JlbmRlcnxpbWFnaWNrZHJhd19yb3RhdGV8aW1hZ2lja2RyYXdfcm91bmRyZWN0YW5nbGV8aW1hZ2lja2RyYXdfc2NhbGV8aW1hZ2lja2RyYXdfc2V0Y2xpcHBhdGh8aW1hZ2lja2RyYXdfc2V0Y2xpcHJ1bGV8aW1hZ2lja2RyYXdfc2V0Y2xpcHVuaXRzfGltYWdpY2tkcmF3X3NldGZpbGxhbHBoYXxpbWFnaWNrZHJhd19zZXRmaWxsY29sb3J8aW1hZ2lja2RyYXdfc2V0ZmlsbG9wYWNpdHl8aW1hZ2lja2RyYXdfc2V0ZmlsbHBhdHRlcm51cmx8aW1hZ2lja2RyYXdfc2V0ZmlsbHJ1bGV8aW1hZ2lja2RyYXdfc2V0Zm9udHxpbWFnaWNrZHJhd19zZXRmb250ZmFtaWx5fGltYWdpY2tkcmF3X3NldGZvbnRzaXplfGltYWdpY2tkcmF3X3NldGZvbnRzdHJldGNofGltYWdpY2tkcmF3X3NldGZvbnRzdHlsZXxpbWFnaWNrZHJhd19zZXRmb250d2VpZ2h0fGltYWdpY2tkcmF3X3NldGdyYXZpdHl8aW1hZ2lja2RyYXdfc2V0c3Ryb2tlYWxwaGF8aW1hZ2lja2RyYXdfc2V0c3Ryb2tlYW50aWFsaWFzfGltYWdpY2tkcmF3X3NldHN0cm9rZWNvbG9yfGltYWdpY2tkcmF3X3NldHN0cm9rZWRhc2hhcnJheXxpbWFnaWNrZHJhd19zZXRzdHJva2VkYXNob2Zmc2V0fGltYWdpY2tkcmF3X3NldHN0cm9rZWxpbmVjYXB8aW1hZ2lja2RyYXdfc2V0c3Ryb2tlbGluZWpvaW58aW1hZ2lja2RyYXdfc2V0c3Ryb2tlbWl0ZXJsaW1pdHxpbWFnaWNrZHJhd19zZXRzdHJva2VvcGFjaXR5fGltYWdpY2tkcmF3X3NldHN0cm9rZXBhdHRlcm51cmx8aW1hZ2lja2RyYXdfc2V0c3Ryb2tld2lkdGh8aW1hZ2lja2RyYXdfc2V0dGV4dGFsaWdubWVudHxpbWFnaWNrZHJhd19zZXR0ZXh0YW50aWFsaWFzfGltYWdpY2tkcmF3X3NldHRleHRkZWNvcmF0aW9ufGltYWdpY2tkcmF3X3NldHRleHRlbmNvZGluZ3xpbWFnaWNrZHJhd19zZXR0ZXh0dW5kZXJjb2xvcnxpbWFnaWNrZHJhd19zZXR2ZWN0b3JncmFwaGljc3xpbWFnaWNrZHJhd19zZXR2aWV3Ym94fGltYWdpY2tkcmF3X3NrZXd4fGltYWdpY2tkcmF3X3NrZXd5fGltYWdpY2tkcmF3X3RyYW5zbGF0ZXxpbWFnaWNrcGl4ZWx8aW1hZ2lja3BpeGVsX2NsZWFyfGltYWdpY2twaXhlbF9jb25zdHJ1Y3R8aW1hZ2lja3BpeGVsX2Rlc3Ryb3l8aW1hZ2lja3BpeGVsX2dldGNvbG9yfGltYWdpY2twaXhlbF9nZXRjb2xvcmFzc3RyaW5nfGltYWdpY2twaXhlbF9nZXRjb2xvcmNvdW50fGltYWdpY2twaXhlbF9nZXRjb2xvcnZhbHVlfGltYWdpY2twaXhlbF9nZXRoc2x8aW1hZ2lja3BpeGVsX2lzc2ltaWxhcnxpbWFnaWNrcGl4ZWxfc2V0Y29sb3J8aW1hZ2lja3BpeGVsX3NldGNvbG9ydmFsdWV8aW1hZ2lja3BpeGVsX3NldGhzbHxpbWFnaWNrcGl4ZWxpdGVyYXRvcnxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9jbGVhcnxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9jb25zdHJ1Y3R8aW1hZ2lja3BpeGVsaXRlcmF0b3JfZGVzdHJveXxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9nZXRjdXJyZW50aXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3JfZ2V0aXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3JfZ2V0bmV4dGl0ZXJhdG9ycm93fGltYWdpY2twaXhlbGl0ZXJhdG9yX2dldHByZXZpb3VzaXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3JfbmV3cGl4ZWxpdGVyYXRvcnxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9uZXdwaXhlbHJlZ2lvbml0ZXJhdG9yfGltYWdpY2twaXhlbGl0ZXJhdG9yX3Jlc2V0aXRlcmF0b3J8aW1hZ2lja3BpeGVsaXRlcmF0b3Jfc2V0aXRlcmF0b3JmaXJzdHJvd3xpbWFnaWNrcGl4ZWxpdGVyYXRvcl9zZXRpdGVyYXRvcmxhc3Ryb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3Jfc2V0aXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3Jfc3luY2l0ZXJhdG9yfGltYXBfOGJpdHxpbWFwX2FsZXJ0c3xpbWFwX2FwcGVuZHxpbWFwX2Jhc2U2NHxpbWFwX2JpbmFyeXxpbWFwX2JvZHl8aW1hcF9ib2R5c3RydWN0fGltYXBfY2hlY2t8aW1hcF9jbGVhcmZsYWdfZnVsbHxpbWFwX2Nsb3NlfGltYXBfY3JlYXRlfGltYXBfY3JlYXRlbWFpbGJveHxpbWFwX2RlbGV0ZXxpbWFwX2RlbGV0ZW1haWxib3h8aW1hcF9lcnJvcnN8aW1hcF9leHB1bmdlfGltYXBfZmV0Y2hfb3ZlcnZpZXd8aW1hcF9mZXRjaGJvZHl8aW1hcF9mZXRjaGhlYWRlcnxpbWFwX2ZldGNobWltZXxpbWFwX2ZldGNoc3RydWN0dXJlfGltYXBfZmV0Y2h0ZXh0fGltYXBfZ2N8aW1hcF9nZXRfcXVvdGF8aW1hcF9nZXRfcXVvdGFyb290fGltYXBfZ2V0YWNsfGltYXBfZ2V0bWFpbGJveGVzfGltYXBfZ2V0c3Vic2NyaWJlZHxpbWFwX2hlYWRlcnxpbWFwX2hlYWRlcmluZm98aW1hcF9oZWFkZXJzfGltYXBfbGFzdF9lcnJvcnxpbWFwX2xpc3R8aW1hcF9saXN0bWFpbGJveHxpbWFwX2xpc3RzY2FufGltYXBfbGlzdHN1YnNjcmliZWR8aW1hcF9sc3VifGltYXBfbWFpbHxpbWFwX21haWxfY29tcG9zZXxpbWFwX21haWxfY29weXxpbWFwX21haWxfbW92ZXxpbWFwX21haWxib3htc2dpbmZvfGltYXBfbWltZV9oZWFkZXJfZGVjb2RlfGltYXBfbXNnbm98aW1hcF9udW1fbXNnfGltYXBfbnVtX3JlY2VudHxpbWFwX29wZW58aW1hcF9waW5nfGltYXBfcXByaW50fGltYXBfcmVuYW1lfGltYXBfcmVuYW1lbWFpbGJveHxpbWFwX3Jlb3BlbnxpbWFwX3JmYzgyMl9wYXJzZV9hZHJsaXN0fGltYXBfcmZjODIyX3BhcnNlX2hlYWRlcnN8aW1hcF9yZmM4MjJfd3JpdGVfYWRkcmVzc3xpbWFwX3NhdmVib2R5fGltYXBfc2NhbnxpbWFwX3NjYW5tYWlsYm94fGltYXBfc2VhcmNofGltYXBfc2V0X3F1b3RhfGltYXBfc2V0YWNsfGltYXBfc2V0ZmxhZ19mdWxsfGltYXBfc29ydHxpbWFwX3N0YXR1c3xpbWFwX3N1YnNjcmliZXxpbWFwX3RocmVhZHxpbWFwX3RpbWVvdXR8aW1hcF91aWR8aW1hcF91bmRlbGV0ZXxpbWFwX3Vuc3Vic2NyaWJlfGltYXBfdXRmN19kZWNvZGV8aW1hcF91dGY3X2VuY29kZXxpbWFwX3V0Zjh8aW1wbGVtZW50c2ludGVyZmFjZXxpbXBsb2RlfGltcG9ydF9yZXF1ZXN0X3ZhcmlhYmxlc3xpbl9hcnJheXxpbmNsdWRlfGluY2x1ZGVfb25jZXxpbmNsdWVkX2dldF9kYXRhfGluZXRfbnRvcHxpbmV0X3B0b258aW5maW5pdGVpdGVyYXRvcnxpbmdyZXNfYXV0b2NvbW1pdHxpbmdyZXNfYXV0b2NvbW1pdF9zdGF0ZXxpbmdyZXNfY2hhcnNldHxpbmdyZXNfY2xvc2V8aW5ncmVzX2NvbW1pdHxpbmdyZXNfY29ubmVjdHxpbmdyZXNfY3Vyc29yfGluZ3Jlc19lcnJub3xpbmdyZXNfZXJyb3J8aW5ncmVzX2VycnNxbHN0YXRlfGluZ3Jlc19lc2NhcGVfc3RyaW5nfGluZ3Jlc19leGVjdXRlfGluZ3Jlc19mZXRjaF9hcnJheXxpbmdyZXNfZmV0Y2hfYXNzb2N8aW5ncmVzX2ZldGNoX29iamVjdHxpbmdyZXNfZmV0Y2hfcHJvY19yZXR1cm58aW5ncmVzX2ZldGNoX3Jvd3xpbmdyZXNfZmllbGRfbGVuZ3RofGluZ3Jlc19maWVsZF9uYW1lfGluZ3Jlc19maWVsZF9udWxsYWJsZXxpbmdyZXNfZmllbGRfcHJlY2lzaW9ufGluZ3Jlc19maWVsZF9zY2FsZXxpbmdyZXNfZmllbGRfdHlwZXxpbmdyZXNfZnJlZV9yZXN1bHR8aW5ncmVzX25leHRfZXJyb3J8aW5ncmVzX251bV9maWVsZHN8aW5ncmVzX251bV9yb3dzfGluZ3Jlc19wY29ubmVjdHxpbmdyZXNfcHJlcGFyZXxpbmdyZXNfcXVlcnl8aW5ncmVzX3Jlc3VsdF9zZWVrfGluZ3Jlc19yb2xsYmFja3xpbmdyZXNfc2V0X2Vudmlyb25tZW50fGluZ3Jlc191bmJ1ZmZlcmVkX3F1ZXJ5fGluaV9hbHRlcnxpbmlfZ2V0fGluaV9nZXRfYWxsfGluaV9yZXN0b3JlfGluaV9zZXR8aW5uYW1lc3BhY2V8aW5vdGlmeV9hZGRfd2F0Y2h8aW5vdGlmeV9pbml0fGlub3RpZnlfcXVldWVfbGVufGlub3RpZnlfcmVhZHxpbm90aWZ5X3JtX3dhdGNofGludGVyZmFjZV9leGlzdHN8aW50bF9lcnJvcl9uYW1lfGludGxfZ2V0X2Vycm9yX2NvZGV8aW50bF9nZXRfZXJyb3JfbWVzc2FnZXxpbnRsX2lzX2ZhaWx1cmV8aW50bGRhdGVmb3JtYXR0ZXJ8aW50dmFsfGludmFsaWRhcmd1bWVudGV4Y2VwdGlvbnxpbnZva2V8aW52b2tlYXJnc3xpcDJsb25nfGlwdGNlbWJlZHxpcHRjcGFyc2V8aXNfYXxpc19hcnJheXxpc19ib29sfGlzX2NhbGxhYmxlfGlzX2Rpcnxpc19kb3VibGV8aXNfZXhlY3V0YWJsZXxpc19maWxlfGlzX2Zpbml0ZXxpc19mbG9hdHxpc19pbmZpbml0ZXxpc19pbnR8aXNfaW50ZWdlcnxpc19saW5rfGlzX2xvbmd8aXNfbmFufGlzX251bGx8aXNfbnVtZXJpY3xpc19vYmplY3R8aXNfcmVhZGFibGV8aXNfcmVhbHxpc19yZXNvdXJjZXxpc19zY2FsYXJ8aXNfc29hcF9mYXVsdHxpc19zdHJpbmd8aXNfc3ViY2xhc3Nfb2Z8aXNfdXBsb2FkZWRfZmlsZXxpc193cml0YWJsZXxpc193cml0ZWFibGV8aXNhYnN0cmFjdHxpc2Nsb25lYWJsZXxpc2Rpc2FibGVkfGlzZmluYWx8aXNpbnN0YW5jZXxpc2luc3RhbnRpYWJsZXxpc2ludGVyZmFjZXxpc2ludGVybmFsfGlzaXRlcmF0ZWFibGV8aXNzZXR8aXNzdWJjbGFzc29mfGlzdXNlcmRlZmluZWR8aXRlcmF0b3J8aXRlcmF0b3JfYXBwbHl8aXRlcmF0b3JfY291bnR8aXRlcmF0b3JfdG9fYXJyYXl8aXRlcmF0b3JhZ2dyZWdhdGV8aXRlcmF0b3JpdGVyYXRvcnxqYXZhX2xhc3RfZXhjZXB0aW9uX2NsZWFyfGphdmFfbGFzdF9leGNlcHRpb25fZ2V0fGpkZGF5b2Z3ZWVrfGpkbW9udGhuYW1lfGpkdG9mcmVuY2h8amR0b2dyZWdvcmlhbnxqZHRvamV3aXNofGpkdG9qdWxpYW58amR0b3VuaXh8amV3aXNodG9qZHxqb2lufGpwZWcyd2JtcHxqc29uX2RlY29kZXxqc29uX2VuY29kZXxqc29uX2xhc3RfZXJyb3J8anNvbnNlcmlhbGl6YWJsZXxqdWR5fGp1ZHlfdHlwZXxqdWR5X3ZlcnNpb258anVsaWFudG9qZHxrYWRtNV9jaHBhc3NfcHJpbmNpcGFsfGthZG01X2NyZWF0ZV9wcmluY2lwYWx8a2FkbTVfZGVsZXRlX3ByaW5jaXBhbHxrYWRtNV9kZXN0cm95fGthZG01X2ZsdXNofGthZG01X2dldF9wb2xpY2llc3xrYWRtNV9nZXRfcHJpbmNpcGFsfGthZG01X2dldF9wcmluY2lwYWxzfGthZG01X2luaXRfd2l0aF9wYXNzd29yZHxrYWRtNV9tb2RpZnlfcHJpbmNpcGFsfGtleXxrcnNvcnR8a3NvcnR8bGNmaXJzdHxsY2dfdmFsdWV8bGNoZ3JwfGxjaG93bnxsZGFwXzg4NTlfdG9fdDYxfGxkYXBfYWRkfGxkYXBfYmluZHxsZGFwX2Nsb3NlfGxkYXBfY29tcGFyZXxsZGFwX2Nvbm5lY3R8bGRhcF9jb3VudF9lbnRyaWVzfGxkYXBfZGVsZXRlfGxkYXBfZG4ydWZufGxkYXBfZXJyMnN0cnxsZGFwX2Vycm5vfGxkYXBfZXJyb3J8bGRhcF9leHBsb2RlX2RufGxkYXBfZmlyc3RfYXR0cmlidXRlfGxkYXBfZmlyc3RfZW50cnl8bGRhcF9maXJzdF9yZWZlcmVuY2V8bGRhcF9mcmVlX3Jlc3VsdHxsZGFwX2dldF9hdHRyaWJ1dGVzfGxkYXBfZ2V0X2RufGxkYXBfZ2V0X2VudHJpZXN8bGRhcF9nZXRfb3B0aW9ufGxkYXBfZ2V0X3ZhbHVlc3xsZGFwX2dldF92YWx1ZXNfbGVufGxkYXBfbGlzdHxsZGFwX21vZF9hZGR8bGRhcF9tb2RfZGVsfGxkYXBfbW9kX3JlcGxhY2V8bGRhcF9tb2RpZnl8bGRhcF9uZXh0X2F0dHJpYnV0ZXxsZGFwX25leHRfZW50cnl8bGRhcF9uZXh0X3JlZmVyZW5jZXxsZGFwX3BhcnNlX3JlZmVyZW5jZXxsZGFwX3BhcnNlX3Jlc3VsdHxsZGFwX3JlYWR8bGRhcF9yZW5hbWV8bGRhcF9zYXNsX2JpbmR8bGRhcF9zZWFyY2h8bGRhcF9zZXRfb3B0aW9ufGxkYXBfc2V0X3JlYmluZF9wcm9jfGxkYXBfc29ydHxsZGFwX3N0YXJ0X3Rsc3xsZGFwX3Q2MV90b184ODU5fGxkYXBfdW5iaW5kfGxlbmd0aGV4Y2VwdGlvbnxsZXZlbnNodGVpbnxsaWJ4bWxfY2xlYXJfZXJyb3JzfGxpYnhtbF9kaXNhYmxlX2VudGl0eV9sb2FkZXJ8bGlieG1sX2dldF9lcnJvcnN8bGlieG1sX2dldF9sYXN0X2Vycm9yfGxpYnhtbF9zZXRfc3RyZWFtc19jb250ZXh0fGxpYnhtbF91c2VfaW50ZXJuYWxfZXJyb3JzfGxpYnhtbGVycm9yfGxpbWl0aXRlcmF0b3J8bGlua3xsaW5raW5mb3xsaXN0fGxvY2FsZXxsb2NhbGVjb252fGxvY2FsdGltZXxsb2d8bG9nMTB8bG9nMXB8bG9naWNleGNlcHRpb258bG9uZzJpcHxsc3RhdHxsdHJpbXxsemZfY29tcHJlc3N8bHpmX2RlY29tcHJlc3N8bHpmX29wdGltaXplZF9mb3J8bV9jaGVja3N0YXR1c3xtX2NvbXBsZXRlYXV0aG9yaXphdGlvbnN8bV9jb25uZWN0fG1fY29ubmVjdGlvbmVycm9yfG1fZGVsZXRldHJhbnN8bV9kZXN0cm95Y29ubnxtX2Rlc3Ryb3llbmdpbmV8bV9nZXRjZWxsfG1fZ2V0Y2VsbGJ5bnVtfG1fZ2V0Y29tbWFkZWxpbWl0ZWR8bV9nZXRoZWFkZXJ8bV9pbml0Y29ubnxtX2luaXRlbmdpbmV8bV9pc2NvbW1hZGVsaW1pdGVkfG1fbWF4Y29ubnRpbWVvdXR8bV9tb25pdG9yfG1fbnVtY29sdW1uc3xtX251bXJvd3N8bV9wYXJzZWNvbW1hZGVsaW1pdGVkfG1fcmVzcG9uc2VrZXlzfG1fcmVzcG9uc2VwYXJhbXxtX3JldHVybnN0YXR1c3xtX3NldGJsb2NraW5nfG1fc2V0ZHJvcGZpbGV8bV9zZXRpcHxtX3NldHNzbHxtX3NldHNzbF9jYWZpbGV8bV9zZXRzc2xfZmlsZXN8bV9zZXR0aW1lb3V0fG1fc3NsY2VydF9nZW5faGFzaHxtX3RyYW5zYWN0aW9uc3NlbnR8bV90cmFuc2lucXVldWV8bV90cmFuc2tleXZhbHxtX3RyYW5zbmV3fG1fdHJhbnNzZW5kfG1fdXdhaXR8bV92YWxpZGF0ZWlkZW50aWZpZXJ8bV92ZXJpZnljb25uZWN0aW9ufG1fdmVyaWZ5c3NsY2VydHxtYWdpY19xdW90ZXNfcnVudGltZXxtYWlsfG1haWxwYXJzZV9kZXRlcm1pbmVfYmVzdF94ZmVyX2VuY29kaW5nfG1haWxwYXJzZV9tc2dfY3JlYXRlfG1haWxwYXJzZV9tc2dfZXh0cmFjdF9wYXJ0fG1haWxwYXJzZV9tc2dfZXh0cmFjdF9wYXJ0X2ZpbGV8bWFpbHBhcnNlX21zZ19leHRyYWN0X3dob2xlX3BhcnRfZmlsZXxtYWlscGFyc2VfbXNnX2ZyZWV8bWFpbHBhcnNlX21zZ19nZXRfcGFydHxtYWlscGFyc2VfbXNnX2dldF9wYXJ0X2RhdGF8bWFpbHBhcnNlX21zZ19nZXRfc3RydWN0dXJlfG1haWxwYXJzZV9tc2dfcGFyc2V8bWFpbHBhcnNlX21zZ19wYXJzZV9maWxlfG1haWxwYXJzZV9yZmM4MjJfcGFyc2VfYWRkcmVzc2VzfG1haWxwYXJzZV9zdHJlYW1fZW5jb2RlfG1haWxwYXJzZV91dWRlY29kZV9hbGx8bWFpbnxtYXh8bWF4ZGJfYWZmZWN0ZWRfcm93c3xtYXhkYl9hdXRvY29tbWl0fG1heGRiX2JpbmRfcGFyYW18bWF4ZGJfYmluZF9yZXN1bHR8bWF4ZGJfY2hhbmdlX3VzZXJ8bWF4ZGJfY2hhcmFjdGVyX3NldF9uYW1lfG1heGRiX2NsaWVudF9lbmNvZGluZ3xtYXhkYl9jbG9zZXxtYXhkYl9jbG9zZV9sb25nX2RhdGF8bWF4ZGJfY29tbWl0fG1heGRiX2Nvbm5lY3R8bWF4ZGJfY29ubmVjdF9lcnJub3xtYXhkYl9jb25uZWN0X2Vycm9yfG1heGRiX2RhdGFfc2Vla3xtYXhkYl9kZWJ1Z3xtYXhkYl9kaXNhYmxlX3JlYWRzX2Zyb21fbWFzdGVyfG1heGRiX2Rpc2FibGVfcnBsX3BhcnNlfG1heGRiX2R1bXBfZGVidWdfaW5mb3xtYXhkYl9lbWJlZGRlZF9jb25uZWN0fG1heGRiX2VuYWJsZV9yZWFkc19mcm9tX21hc3RlcnxtYXhkYl9lbmFibGVfcnBsX3BhcnNlfG1heGRiX2Vycm5vfG1heGRiX2Vycm9yfG1heGRiX2VzY2FwZV9zdHJpbmd8bWF4ZGJfZXhlY3V0ZXxtYXhkYl9mZXRjaHxtYXhkYl9mZXRjaF9hcnJheXxtYXhkYl9mZXRjaF9hc3NvY3xtYXhkYl9mZXRjaF9maWVsZHxtYXhkYl9mZXRjaF9maWVsZF9kaXJlY3R8bWF4ZGJfZmV0Y2hfZmllbGRzfG1heGRiX2ZldGNoX2xlbmd0aHN8bWF4ZGJfZmV0Y2hfb2JqZWN0fG1heGRiX2ZldGNoX3Jvd3xtYXhkYl9maWVsZF9jb3VudHxtYXhkYl9maWVsZF9zZWVrfG1heGRiX2ZpZWxkX3RlbGx8bWF4ZGJfZnJlZV9yZXN1bHR8bWF4ZGJfZ2V0X2NsaWVudF9pbmZvfG1heGRiX2dldF9jbGllbnRfdmVyc2lvbnxtYXhkYl9nZXRfaG9zdF9pbmZvfG1heGRiX2dldF9tZXRhZGF0YXxtYXhkYl9nZXRfcHJvdG9faW5mb3xtYXhkYl9nZXRfc2VydmVyX2luZm98bWF4ZGJfZ2V0X3NlcnZlcl92ZXJzaW9ufG1heGRiX2luZm98bWF4ZGJfaW5pdHxtYXhkYl9pbnNlcnRfaWR8bWF4ZGJfa2lsbHxtYXhkYl9tYXN0ZXJfcXVlcnl8bWF4ZGJfbW9yZV9yZXN1bHRzfG1heGRiX211bHRpX3F1ZXJ5fG1heGRiX25leHRfcmVzdWx0fG1heGRiX251bV9maWVsZHN8bWF4ZGJfbnVtX3Jvd3N8bWF4ZGJfb3B0aW9uc3xtYXhkYl9wYXJhbV9jb3VudHxtYXhkYl9waW5nfG1heGRiX3ByZXBhcmV8bWF4ZGJfcXVlcnl8bWF4ZGJfcmVhbF9jb25uZWN0fG1heGRiX3JlYWxfZXNjYXBlX3N0cmluZ3xtYXhkYl9yZWFsX3F1ZXJ5fG1heGRiX3JlcG9ydHxtYXhkYl9yb2xsYmFja3xtYXhkYl9ycGxfcGFyc2VfZW5hYmxlZHxtYXhkYl9ycGxfcHJvYmV8bWF4ZGJfcnBsX3F1ZXJ5X3R5cGV8bWF4ZGJfc2VsZWN0X2RifG1heGRiX3NlbmRfbG9uZ19kYXRhfG1heGRiX3NlbmRfcXVlcnl8bWF4ZGJfc2VydmVyX2VuZHxtYXhkYl9zZXJ2ZXJfaW5pdHxtYXhkYl9zZXRfb3B0fG1heGRiX3NxbHN0YXRlfG1heGRiX3NzbF9zZXR8bWF4ZGJfc3RhdHxtYXhkYl9zdG10X2FmZmVjdGVkX3Jvd3N8bWF4ZGJfc3RtdF9iaW5kX3BhcmFtfG1heGRiX3N0bXRfYmluZF9yZXN1bHR8bWF4ZGJfc3RtdF9jbG9zZXxtYXhkYl9zdG10X2Nsb3NlX2xvbmdfZGF0YXxtYXhkYl9zdG10X2RhdGFfc2Vla3xtYXhkYl9zdG10X2Vycm5vfG1heGRiX3N0bXRfZXJyb3J8bWF4ZGJfc3RtdF9leGVjdXRlfG1heGRiX3N0bXRfZmV0Y2h8bWF4ZGJfc3RtdF9mcmVlX3Jlc3VsdHxtYXhkYl9zdG10X2luaXR8bWF4ZGJfc3RtdF9udW1fcm93c3xtYXhkYl9zdG10X3BhcmFtX2NvdW50fG1heGRiX3N0bXRfcHJlcGFyZXxtYXhkYl9zdG10X3Jlc2V0fG1heGRiX3N0bXRfcmVzdWx0X21ldGFkYXRhfG1heGRiX3N0bXRfc2VuZF9sb25nX2RhdGF8bWF4ZGJfc3RtdF9zcWxzdGF0ZXxtYXhkYl9zdG10X3N0b3JlX3Jlc3VsdHxtYXhkYl9zdG9yZV9yZXN1bHR8bWF4ZGJfdGhyZWFkX2lkfG1heGRiX3RocmVhZF9zYWZlfG1heGRiX3VzZV9yZXN1bHR8bWF4ZGJfd2FybmluZ19jb3VudHxtYl9jaGVja19lbmNvZGluZ3xtYl9jb252ZXJ0X2Nhc2V8bWJfY29udmVydF9lbmNvZGluZ3xtYl9jb252ZXJ0X2thbmF8bWJfY29udmVydF92YXJpYWJsZXN8bWJfZGVjb2RlX21pbWVoZWFkZXJ8bWJfZGVjb2RlX251bWVyaWNlbnRpdHl8bWJfZGV0ZWN0X2VuY29kaW5nfG1iX2RldGVjdF9vcmRlcnxtYl9lbmNvZGVfbWltZWhlYWRlcnxtYl9lbmNvZGVfbnVtZXJpY2VudGl0eXxtYl9lbmNvZGluZ19hbGlhc2VzfG1iX2VyZWd8bWJfZXJlZ19tYXRjaHxtYl9lcmVnX3JlcGxhY2V8bWJfZXJlZ19zZWFyY2h8bWJfZXJlZ19zZWFyY2hfZ2V0cG9zfG1iX2VyZWdfc2VhcmNoX2dldHJlZ3N8bWJfZXJlZ19zZWFyY2hfaW5pdHxtYl9lcmVnX3NlYXJjaF9wb3N8bWJfZXJlZ19zZWFyY2hfcmVnc3xtYl9lcmVnX3NlYXJjaF9zZXRwb3N8bWJfZXJlZ2l8bWJfZXJlZ2lfcmVwbGFjZXxtYl9nZXRfaW5mb3xtYl9odHRwX2lucHV0fG1iX2h0dHBfb3V0cHV0fG1iX2ludGVybmFsX2VuY29kaW5nfG1iX2xhbmd1YWdlfG1iX2xpc3RfZW5jb2RpbmdzfG1iX291dHB1dF9oYW5kbGVyfG1iX3BhcnNlX3N0cnxtYl9wcmVmZXJyZWRfbWltZV9uYW1lfG1iX3JlZ2V4X2VuY29kaW5nfG1iX3JlZ2V4X3NldF9vcHRpb25zfG1iX3NlbmRfbWFpbHxtYl9zcGxpdHxtYl9zdHJjdXR8bWJfc3RyaW13aWR0aHxtYl9zdHJpcG9zfG1iX3N0cmlzdHJ8bWJfc3RybGVufG1iX3N0cnBvc3xtYl9zdHJyY2hyfG1iX3N0cnJpY2hyfG1iX3N0cnJpcG9zfG1iX3N0cnJwb3N8bWJfc3Ryc3RyfG1iX3N0cnRvbG93ZXJ8bWJfc3RydG91cHBlcnxtYl9zdHJ3aWR0aHxtYl9zdWJzdGl0dXRlX2NoYXJhY3RlcnxtYl9zdWJzdHJ8bWJfc3Vic3RyX2NvdW50fG1jcnlwdF9jYmN8bWNyeXB0X2NmYnxtY3J5cHRfY3JlYXRlX2l2fG1jcnlwdF9kZWNyeXB0fG1jcnlwdF9lY2J8bWNyeXB0X2VuY19nZXRfYWxnb3JpdGhtc19uYW1lfG1jcnlwdF9lbmNfZ2V0X2Jsb2NrX3NpemV8bWNyeXB0X2VuY19nZXRfaXZfc2l6ZXxtY3J5cHRfZW5jX2dldF9rZXlfc2l6ZXxtY3J5cHRfZW5jX2dldF9tb2Rlc19uYW1lfG1jcnlwdF9lbmNfZ2V0X3N1cHBvcnRlZF9rZXlfc2l6ZXN8bWNyeXB0X2VuY19pc19ibG9ja19hbGdvcml0aG18bWNyeXB0X2VuY19pc19ibG9ja19hbGdvcml0aG1fbW9kZXxtY3J5cHRfZW5jX2lzX2Jsb2NrX21vZGV8bWNyeXB0X2VuY19zZWxmX3Rlc3R8bWNyeXB0X2VuY3J5cHR8bWNyeXB0X2dlbmVyaWN8bWNyeXB0X2dlbmVyaWNfZGVpbml0fG1jcnlwdF9nZW5lcmljX2VuZHxtY3J5cHRfZ2VuZXJpY19pbml0fG1jcnlwdF9nZXRfYmxvY2tfc2l6ZXxtY3J5cHRfZ2V0X2NpcGhlcl9uYW1lfG1jcnlwdF9nZXRfaXZfc2l6ZXxtY3J5cHRfZ2V0X2tleV9zaXplfG1jcnlwdF9saXN0X2FsZ29yaXRobXN8bWNyeXB0X2xpc3RfbW9kZXN8bWNyeXB0X21vZHVsZV9jbG9zZXxtY3J5cHRfbW9kdWxlX2dldF9hbGdvX2Jsb2NrX3NpemV8bWNyeXB0X21vZHVsZV9nZXRfYWxnb19rZXlfc2l6ZXxtY3J5cHRfbW9kdWxlX2dldF9zdXBwb3J0ZWRfa2V5X3NpemVzfG1jcnlwdF9tb2R1bGVfaXNfYmxvY2tfYWxnb3JpdGhtfG1jcnlwdF9tb2R1bGVfaXNfYmxvY2tfYWxnb3JpdGhtX21vZGV8bWNyeXB0X21vZHVsZV9pc19ibG9ja19tb2RlfG1jcnlwdF9tb2R1bGVfb3BlbnxtY3J5cHRfbW9kdWxlX3NlbGZfdGVzdHxtY3J5cHRfb2ZifG1kNXxtZDVfZmlsZXxtZGVjcnlwdF9nZW5lcmljfG1lbWNhY2hlfG1lbWNhY2hlX2RlYnVnfG1lbWNhY2hlZHxtZW1vcnlfZ2V0X3BlYWtfdXNhZ2V8bWVtb3J5X2dldF91c2FnZXxtZXNzYWdlZm9ybWF0dGVyfG1ldGFwaG9uZXxtZXRob2RfZXhpc3RzfG1oYXNofG1oYXNoX2NvdW50fG1oYXNoX2dldF9ibG9ja19zaXplfG1oYXNoX2dldF9oYXNoX25hbWV8bWhhc2hfa2V5Z2VuX3Mya3xtaWNyb3RpbWV8bWltZV9jb250ZW50X3R5cGV8bWlufG1pbmdfa2V5cHJlc3N8bWluZ19zZXRjdWJpY3RocmVzaG9sZHxtaW5nX3NldHNjYWxlfG1pbmdfc2V0c3dmY29tcHJlc3Npb258bWluZ191c2Vjb25zdGFudHN8bWluZ191c2Vzd2Z2ZXJzaW9ufG1rZGlyfG1rdGltZXxtb25leV9mb3JtYXR8bW9uZ298bW9uZ29iaW5kYXRhfG1vbmdvY29kZXxtb25nb2NvbGxlY3Rpb258bW9uZ29jb25uZWN0aW9uZXhjZXB0aW9ufG1vbmdvY3Vyc29yfG1vbmdvY3Vyc29yZXhjZXB0aW9ufG1vbmdvY3Vyc29ydGltZW91dGV4Y2VwdGlvbnxtb25nb2RhdGV8bW9uZ29kYnxtb25nb2RicmVmfG1vbmdvZXhjZXB0aW9ufG1vbmdvZ3JpZGZzfG1vbmdvZ3JpZGZzY3Vyc29yfG1vbmdvZ3JpZGZzZXhjZXB0aW9ufG1vbmdvZ3JpZGZzZmlsZXxtb25nb2lkfG1vbmdvaW50MzJ8bW9uZ29pbnQ2NHxtb25nb21heGtleXxtb25nb21pbmtleXxtb25nb3JlZ2V4fG1vbmdvdGltZXN0YW1wfG1vdmVfdXBsb2FkZWRfZmlsZXxtcGVnZmlsZXxtcXNlcmllc19iYWNrfG1xc2VyaWVzX2JlZ2lufG1xc2VyaWVzX2Nsb3NlfG1xc2VyaWVzX2NtaXR8bXFzZXJpZXNfY29ubnxtcXNlcmllc19jb25ueHxtcXNlcmllc19kaXNjfG1xc2VyaWVzX2dldHxtcXNlcmllc19pbnF8bXFzZXJpZXNfb3BlbnxtcXNlcmllc19wdXR8bXFzZXJpZXNfcHV0MXxtcXNlcmllc19zZXR8bXFzZXJpZXNfc3RyZXJyb3J8bXNlc3Npb25fY29ubmVjdHxtc2Vzc2lvbl9jb3VudHxtc2Vzc2lvbl9jcmVhdGV8bXNlc3Npb25fZGVzdHJveXxtc2Vzc2lvbl9kaXNjb25uZWN0fG1zZXNzaW9uX2ZpbmR8bXNlc3Npb25fZ2V0fG1zZXNzaW9uX2dldF9hcnJheXxtc2Vzc2lvbl9nZXRfZGF0YXxtc2Vzc2lvbl9pbmN8bXNlc3Npb25fbGlzdHxtc2Vzc2lvbl9saXN0dmFyfG1zZXNzaW9uX2xvY2t8bXNlc3Npb25fcGx1Z2lufG1zZXNzaW9uX3JhbmRzdHJ8bXNlc3Npb25fc2V0fG1zZXNzaW9uX3NldF9hcnJheXxtc2Vzc2lvbl9zZXRfZGF0YXxtc2Vzc2lvbl90aW1lb3V0fG1zZXNzaW9uX3VuaXF8bXNlc3Npb25fdW5sb2NrfG1zZ19nZXRfcXVldWV8bXNnX3F1ZXVlX2V4aXN0c3xtc2dfcmVjZWl2ZXxtc2dfcmVtb3ZlX3F1ZXVlfG1zZ19zZW5kfG1zZ19zZXRfcXVldWV8bXNnX3N0YXRfcXVldWV8bXNxbHxtc3FsX2FmZmVjdGVkX3Jvd3N8bXNxbF9jbG9zZXxtc3FsX2Nvbm5lY3R8bXNxbF9jcmVhdGVfZGJ8bXNxbF9jcmVhdGVkYnxtc3FsX2RhdGFfc2Vla3xtc3FsX2RiX3F1ZXJ5fG1zcWxfZGJuYW1lfG1zcWxfZHJvcF9kYnxtc3FsX2Vycm9yfG1zcWxfZmV0Y2hfYXJyYXl8bXNxbF9mZXRjaF9maWVsZHxtc3FsX2ZldGNoX29iamVjdHxtc3FsX2ZldGNoX3Jvd3xtc3FsX2ZpZWxkX2ZsYWdzfG1zcWxfZmllbGRfbGVufG1zcWxfZmllbGRfbmFtZXxtc3FsX2ZpZWxkX3NlZWt8bXNxbF9maWVsZF90YWJsZXxtc3FsX2ZpZWxkX3R5cGV8bXNxbF9maWVsZGZsYWdzfG1zcWxfZmllbGRsZW58bXNxbF9maWVsZG5hbWV8bXNxbF9maWVsZHRhYmxlfG1zcWxfZmllbGR0eXBlfG1zcWxfZnJlZV9yZXN1bHR8bXNxbF9saXN0X2Ric3xtc3FsX2xpc3RfZmllbGRzfG1zcWxfbGlzdF90YWJsZXN8bXNxbF9udW1fZmllbGRzfG1zcWxfbnVtX3Jvd3N8bXNxbF9udW1maWVsZHN8bXNxbF9udW1yb3dzfG1zcWxfcGNvbm5lY3R8bXNxbF9xdWVyeXxtc3FsX3JlZ2Nhc2V8bXNxbF9yZXN1bHR8bXNxbF9zZWxlY3RfZGJ8bXNxbF90YWJsZW5hbWV8bXNzcWxfYmluZHxtc3NxbF9jbG9zZXxtc3NxbF9jb25uZWN0fG1zc3FsX2RhdGFfc2Vla3xtc3NxbF9leGVjdXRlfG1zc3FsX2ZldGNoX2FycmF5fG1zc3FsX2ZldGNoX2Fzc29jfG1zc3FsX2ZldGNoX2JhdGNofG1zc3FsX2ZldGNoX2ZpZWxkfG1zc3FsX2ZldGNoX29iamVjdHxtc3NxbF9mZXRjaF9yb3d8bXNzcWxfZmllbGRfbGVuZ3RofG1zc3FsX2ZpZWxkX25hbWV8bXNzcWxfZmllbGRfc2Vla3xtc3NxbF9maWVsZF90eXBlfG1zc3FsX2ZyZWVfcmVzdWx0fG1zc3FsX2ZyZWVfc3RhdGVtZW50fG1zc3FsX2dldF9sYXN0X21lc3NhZ2V8bXNzcWxfZ3VpZF9zdHJpbmd8bXNzcWxfaW5pdHxtc3NxbF9taW5fZXJyb3Jfc2V2ZXJpdHl8bXNzcWxfbWluX21lc3NhZ2Vfc2V2ZXJpdHl8bXNzcWxfbmV4dF9yZXN1bHR8bXNzcWxfbnVtX2ZpZWxkc3xtc3NxbF9udW1fcm93c3xtc3NxbF9wY29ubmVjdHxtc3NxbF9xdWVyeXxtc3NxbF9yZXN1bHR8bXNzcWxfcm93c19hZmZlY3RlZHxtc3NxbF9zZWxlY3RfZGJ8bXRfZ2V0cmFuZG1heHxtdF9yYW5kfG10X3NyYW5kfG11bHRpcGxlaXRlcmF0b3J8bXlzcWxfYWZmZWN0ZWRfcm93c3xteXNxbF9jbGllbnRfZW5jb2Rpbmd8bXlzcWxfY2xvc2V8bXlzcWxfY29ubmVjdHxteXNxbF9jcmVhdGVfZGJ8bXlzcWxfZGF0YV9zZWVrfG15c3FsX2RiX25hbWV8bXlzcWxfZGJfcXVlcnl8bXlzcWxfZHJvcF9kYnxteXNxbF9lcnJub3xteXNxbF9lcnJvcnxteXNxbF9lc2NhcGVfc3RyaW5nfG15c3FsX2ZldGNoX2FycmF5fG15c3FsX2ZldGNoX2Fzc29jfG15c3FsX2ZldGNoX2ZpZWxkfG15c3FsX2ZldGNoX2xlbmd0aHN8bXlzcWxfZmV0Y2hfb2JqZWN0fG15c3FsX2ZldGNoX3Jvd3xteXNxbF9maWVsZF9mbGFnc3xteXNxbF9maWVsZF9sZW58bXlzcWxfZmllbGRfbmFtZXxteXNxbF9maWVsZF9zZWVrfG15c3FsX2ZpZWxkX3RhYmxlfG15c3FsX2ZpZWxkX3R5cGV8bXlzcWxfZnJlZV9yZXN1bHR8bXlzcWxfZ2V0X2NsaWVudF9pbmZvfG15c3FsX2dldF9ob3N0X2luZm98bXlzcWxfZ2V0X3Byb3RvX2luZm98bXlzcWxfZ2V0X3NlcnZlcl9pbmZvfG15c3FsX2luZm98bXlzcWxfaW5zZXJ0X2lkfG15c3FsX2xpc3RfZGJzfG15c3FsX2xpc3RfZmllbGRzfG15c3FsX2xpc3RfcHJvY2Vzc2VzfG15c3FsX2xpc3RfdGFibGVzfG15c3FsX251bV9maWVsZHN8bXlzcWxfbnVtX3Jvd3N8bXlzcWxfcGNvbm5lY3R8bXlzcWxfcGluZ3xteXNxbF9xdWVyeXxteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmd8bXlzcWxfcmVzdWx0fG15c3FsX3NlbGVjdF9kYnxteXNxbF9zZXRfY2hhcnNldHxteXNxbF9zdGF0fG15c3FsX3RhYmxlbmFtZXxteXNxbF90aHJlYWRfaWR8bXlzcWxfdW5idWZmZXJlZF9xdWVyeXxteXNxbGl8bXlzcWxpX2JpbmRfcGFyYW18bXlzcWxpX2JpbmRfcmVzdWx0fG15c3FsaV9jbGllbnRfZW5jb2Rpbmd8bXlzcWxpX2Nvbm5lY3R8bXlzcWxpX2Rpc2FibGVfcmVhZHNfZnJvbV9tYXN0ZXJ8bXlzcWxpX2Rpc2FibGVfcnBsX3BhcnNlfG15c3FsaV9kcml2ZXJ8bXlzcWxpX2VuYWJsZV9yZWFkc19mcm9tX21hc3RlcnxteXNxbGlfZW5hYmxlX3JwbF9wYXJzZXxteXNxbGlfZXNjYXBlX3N0cmluZ3xteXNxbGlfZXhlY3V0ZXxteXNxbGlfZmV0Y2h8bXlzcWxpX2dldF9tZXRhZGF0YXxteXNxbGlfbWFzdGVyX3F1ZXJ5fG15c3FsaV9wYXJhbV9jb3VudHxteXNxbGlfcmVwb3J0fG15c3FsaV9yZXN1bHR8bXlzcWxpX3JwbF9wYXJzZV9lbmFibGVkfG15c3FsaV9ycGxfcHJvYmV8bXlzcWxpX3JwbF9xdWVyeV90eXBlfG15c3FsaV9zZW5kX2xvbmdfZGF0YXxteXNxbGlfc2VuZF9xdWVyeXxteXNxbGlfc2V0X29wdHxteXNxbGlfc2xhdmVfcXVlcnl8bXlzcWxpX3N0bXR8bXlzcWxpX3dhcm5pbmd8bXlzcWxuZF9tc19nZXRfc3RhdHN8bXlzcWxuZF9tc19xdWVyeV9pc19zZWxlY3R8bXlzcWxuZF9tc19zZXRfdXNlcl9waWNrX3NlcnZlcnxteXNxbG5kX3FjX2NoYW5nZV9oYW5kbGVyfG15c3FsbmRfcWNfY2xlYXJfY2FjaGV8bXlzcWxuZF9xY19nZXRfY2FjaGVfaW5mb3xteXNxbG5kX3FjX2dldF9jb3JlX3N0YXRzfG15c3FsbmRfcWNfZ2V0X2hhbmRsZXJ8bXlzcWxuZF9xY19nZXRfcXVlcnlfdHJhY2VfbG9nfG15c3FsbmRfcWNfc2V0X3VzZXJfaGFuZGxlcnN8bmF0Y2FzZXNvcnR8bmF0c29ydHxuY3Vyc2VzX2FkZGNofG5jdXJzZXNfYWRkY2huc3RyfG5jdXJzZXNfYWRkY2hzdHJ8bmN1cnNlc19hZGRuc3RyfG5jdXJzZXNfYWRkc3RyfG5jdXJzZXNfYXNzdW1lX2RlZmF1bHRfY29sb3JzfG5jdXJzZXNfYXR0cm9mZnxuY3Vyc2VzX2F0dHJvbnxuY3Vyc2VzX2F0dHJzZXR8bmN1cnNlc19iYXVkcmF0ZXxuY3Vyc2VzX2JlZXB8bmN1cnNlc19ia2dkfG5jdXJzZXNfYmtnZHNldHxuY3Vyc2VzX2JvcmRlcnxuY3Vyc2VzX2JvdHRvbV9wYW5lbHxuY3Vyc2VzX2Nhbl9jaGFuZ2VfY29sb3J8bmN1cnNlc19jYnJlYWt8bmN1cnNlc19jbGVhcnxuY3Vyc2VzX2NscnRvYm90fG5jdXJzZXNfY2xydG9lb2x8bmN1cnNlc19jb2xvcl9jb250ZW50fG5jdXJzZXNfY29sb3Jfc2V0fG5jdXJzZXNfY3Vyc19zZXR8bmN1cnNlc19kZWZfcHJvZ19tb2RlfG5jdXJzZXNfZGVmX3NoZWxsX21vZGV8bmN1cnNlc19kZWZpbmVfa2V5fG5jdXJzZXNfZGVsX3BhbmVsfG5jdXJzZXNfZGVsYXlfb3V0cHV0fG5jdXJzZXNfZGVsY2h8bmN1cnNlc19kZWxldGVsbnxuY3Vyc2VzX2RlbHdpbnxuY3Vyc2VzX2RvdXBkYXRlfG5jdXJzZXNfZWNob3xuY3Vyc2VzX2VjaG9jaGFyfG5jdXJzZXNfZW5kfG5jdXJzZXNfZXJhc2V8bmN1cnNlc19lcmFzZWNoYXJ8bmN1cnNlc19maWx0ZXJ8bmN1cnNlc19mbGFzaHxuY3Vyc2VzX2ZsdXNoaW5wfG5jdXJzZXNfZ2V0Y2h8bmN1cnNlc19nZXRtYXh5eHxuY3Vyc2VzX2dldG1vdXNlfG5jdXJzZXNfZ2V0eXh8bmN1cnNlc19oYWxmZGVsYXl8bmN1cnNlc19oYXNfY29sb3JzfG5jdXJzZXNfaGFzX2ljfG5jdXJzZXNfaGFzX2lsfG5jdXJzZXNfaGFzX2tleXxuY3Vyc2VzX2hpZGVfcGFuZWx8bmN1cnNlc19obGluZXxuY3Vyc2VzX2luY2h8bmN1cnNlc19pbml0fG5jdXJzZXNfaW5pdF9jb2xvcnxuY3Vyc2VzX2luaXRfcGFpcnxuY3Vyc2VzX2luc2NofG5jdXJzZXNfaW5zZGVsbG58bmN1cnNlc19pbnNlcnRsbnxuY3Vyc2VzX2luc3N0cnxuY3Vyc2VzX2luc3RyfG5jdXJzZXNfaXNlbmR3aW58bmN1cnNlc19rZXlva3xuY3Vyc2VzX2tleXBhZHxuY3Vyc2VzX2tpbGxjaGFyfG5jdXJzZXNfbG9uZ25hbWV8bmN1cnNlc19tZXRhfG5jdXJzZXNfbW91c2VfdHJhZm98bmN1cnNlc19tb3VzZWludGVydmFsfG5jdXJzZXNfbW91c2VtYXNrfG5jdXJzZXNfbW92ZXxuY3Vyc2VzX21vdmVfcGFuZWx8bmN1cnNlc19tdmFkZGNofG5jdXJzZXNfbXZhZGRjaG5zdHJ8bmN1cnNlc19tdmFkZGNoc3RyfG5jdXJzZXNfbXZhZGRuc3RyfG5jdXJzZXNfbXZhZGRzdHJ8bmN1cnNlc19tdmN1cnxuY3Vyc2VzX212ZGVsY2h8bmN1cnNlc19tdmdldGNofG5jdXJzZXNfbXZobGluZXxuY3Vyc2VzX212aW5jaHxuY3Vyc2VzX212dmxpbmV8bmN1cnNlc19tdndhZGRzdHJ8bmN1cnNlc19uYXBtc3xuY3Vyc2VzX25ld19wYW5lbHxuY3Vyc2VzX25ld3BhZHxuY3Vyc2VzX25ld3dpbnxuY3Vyc2VzX25sfG5jdXJzZXNfbm9jYnJlYWt8bmN1cnNlc19ub2VjaG98bmN1cnNlc19ub25sfG5jdXJzZXNfbm9xaWZsdXNofG5jdXJzZXNfbm9yYXd8bmN1cnNlc19wYWlyX2NvbnRlbnR8bmN1cnNlc19wYW5lbF9hYm92ZXxuY3Vyc2VzX3BhbmVsX2JlbG93fG5jdXJzZXNfcGFuZWxfd2luZG93fG5jdXJzZXNfcG5vdXRyZWZyZXNofG5jdXJzZXNfcHJlZnJlc2h8bmN1cnNlc19wdXRwfG5jdXJzZXNfcWlmbHVzaHxuY3Vyc2VzX3Jhd3xuY3Vyc2VzX3JlZnJlc2h8bmN1cnNlc19yZXBsYWNlX3BhbmVsfG5jdXJzZXNfcmVzZXRfcHJvZ19tb2RlfG5jdXJzZXNfcmVzZXRfc2hlbGxfbW9kZXxuY3Vyc2VzX3Jlc2V0dHl8bmN1cnNlc19zYXZldHR5fG5jdXJzZXNfc2NyX2R1bXB8bmN1cnNlc19zY3JfaW5pdHxuY3Vyc2VzX3Njcl9yZXN0b3JlfG5jdXJzZXNfc2NyX3NldHxuY3Vyc2VzX3Njcmx8bmN1cnNlc19zaG93X3BhbmVsfG5jdXJzZXNfc2xrX2F0dHJ8bmN1cnNlc19zbGtfYXR0cm9mZnxuY3Vyc2VzX3Nsa19hdHRyb258bmN1cnNlc19zbGtfYXR0cnNldHxuY3Vyc2VzX3Nsa19jbGVhcnxuY3Vyc2VzX3Nsa19jb2xvcnxuY3Vyc2VzX3Nsa19pbml0fG5jdXJzZXNfc2xrX25vdXRyZWZyZXNofG5jdXJzZXNfc2xrX3JlZnJlc2h8bmN1cnNlc19zbGtfcmVzdG9yZXxuY3Vyc2VzX3Nsa19zZXR8bmN1cnNlc19zbGtfdG91Y2h8bmN1cnNlc19zdGFuZGVuZHxuY3Vyc2VzX3N0YW5kb3V0fG5jdXJzZXNfc3RhcnRfY29sb3J8bmN1cnNlc190ZXJtYXR0cnN8bmN1cnNlc190ZXJtbmFtZXxuY3Vyc2VzX3RpbWVvdXR8bmN1cnNlc190b3BfcGFuZWx8bmN1cnNlc190eXBlYWhlYWR8bmN1cnNlc191bmdldGNofG5jdXJzZXNfdW5nZXRtb3VzZXxuY3Vyc2VzX3VwZGF0ZV9wYW5lbHN8bmN1cnNlc191c2VfZGVmYXVsdF9jb2xvcnN8bmN1cnNlc191c2VfZW52fG5jdXJzZXNfdXNlX2V4dGVuZGVkX25hbWVzfG5jdXJzZXNfdmlkYXR0cnxuY3Vyc2VzX3ZsaW5lfG5jdXJzZXNfd2FkZGNofG5jdXJzZXNfd2FkZHN0cnxuY3Vyc2VzX3dhdHRyb2ZmfG5jdXJzZXNfd2F0dHJvbnxuY3Vyc2VzX3dhdHRyc2V0fG5jdXJzZXNfd2JvcmRlcnxuY3Vyc2VzX3djbGVhcnxuY3Vyc2VzX3djb2xvcl9zZXR8bmN1cnNlc193ZXJhc2V8bmN1cnNlc193Z2V0Y2h8bmN1cnNlc193aGxpbmV8bmN1cnNlc193bW91c2VfdHJhZm98bmN1cnNlc193bW92ZXxuY3Vyc2VzX3dub3V0cmVmcmVzaHxuY3Vyc2VzX3dyZWZyZXNofG5jdXJzZXNfd3N0YW5kZW5kfG5jdXJzZXNfd3N0YW5kb3V0fG5jdXJzZXNfd3ZsaW5lfG5ld2luc3RhbmNlfG5ld2luc3RhbmNlYXJnc3xuZXd0X2JlbGx8bmV3dF9idXR0b258bmV3dF9idXR0b25fYmFyfG5ld3RfY2VudGVyZWRfd2luZG93fG5ld3RfY2hlY2tib3h8bmV3dF9jaGVja2JveF9nZXRfdmFsdWV8bmV3dF9jaGVja2JveF9zZXRfZmxhZ3N8bmV3dF9jaGVja2JveF9zZXRfdmFsdWV8bmV3dF9jaGVja2JveF90cmVlfG5ld3RfY2hlY2tib3hfdHJlZV9hZGRfaXRlbXxuZXd0X2NoZWNrYm94X3RyZWVfZmluZF9pdGVtfG5ld3RfY2hlY2tib3hfdHJlZV9nZXRfY3VycmVudHxuZXd0X2NoZWNrYm94X3RyZWVfZ2V0X2VudHJ5X3ZhbHVlfG5ld3RfY2hlY2tib3hfdHJlZV9nZXRfbXVsdGlfc2VsZWN0aW9ufG5ld3RfY2hlY2tib3hfdHJlZV9nZXRfc2VsZWN0aW9ufG5ld3RfY2hlY2tib3hfdHJlZV9tdWx0aXxuZXd0X2NoZWNrYm94X3RyZWVfc2V0X2N1cnJlbnR8bmV3dF9jaGVja2JveF90cmVlX3NldF9lbnRyeXxuZXd0X2NoZWNrYm94X3RyZWVfc2V0X2VudHJ5X3ZhbHVlfG5ld3RfY2hlY2tib3hfdHJlZV9zZXRfd2lkdGh8bmV3dF9jbGVhcl9rZXlfYnVmZmVyfG5ld3RfY2xzfG5ld3RfY29tcGFjdF9idXR0b258bmV3dF9jb21wb25lbnRfYWRkX2NhbGxiYWNrfG5ld3RfY29tcG9uZW50X3Rha2VzX2ZvY3VzfG5ld3RfY3JlYXRlX2dyaWR8bmV3dF9jdXJzb3Jfb2ZmfG5ld3RfY3Vyc29yX29ufG5ld3RfZGVsYXl8bmV3dF9kcmF3X2Zvcm18bmV3dF9kcmF3X3Jvb3RfdGV4dHxuZXd0X2VudHJ5fG5ld3RfZW50cnlfZ2V0X3ZhbHVlfG5ld3RfZW50cnlfc2V0fG5ld3RfZW50cnlfc2V0X2ZpbHRlcnxuZXd0X2VudHJ5X3NldF9mbGFnc3xuZXd0X2ZpbmlzaGVkfG5ld3RfZm9ybXxuZXd0X2Zvcm1fYWRkX2NvbXBvbmVudHxuZXd0X2Zvcm1fYWRkX2NvbXBvbmVudHN8bmV3dF9mb3JtX2FkZF9ob3Rfa2V5fG5ld3RfZm9ybV9kZXN0cm95fG5ld3RfZm9ybV9nZXRfY3VycmVudHxuZXd0X2Zvcm1fcnVufG5ld3RfZm9ybV9zZXRfYmFja2dyb3VuZHxuZXd0X2Zvcm1fc2V0X2hlaWdodHxuZXd0X2Zvcm1fc2V0X3NpemV8bmV3dF9mb3JtX3NldF90aW1lcnxuZXd0X2Zvcm1fc2V0X3dpZHRofG5ld3RfZm9ybV93YXRjaF9mZHxuZXd0X2dldF9zY3JlZW5fc2l6ZXxuZXd0X2dyaWRfYWRkX2NvbXBvbmVudHNfdG9fZm9ybXxuZXd0X2dyaWRfYmFzaWNfd2luZG93fG5ld3RfZ3JpZF9mcmVlfG5ld3RfZ3JpZF9nZXRfc2l6ZXxuZXd0X2dyaWRfaF9jbG9zZV9zdGFja2VkfG5ld3RfZ3JpZF9oX3N0YWNrZWR8bmV3dF9ncmlkX3BsYWNlfG5ld3RfZ3JpZF9zZXRfZmllbGR8bmV3dF9ncmlkX3NpbXBsZV93aW5kb3d8bmV3dF9ncmlkX3ZfY2xvc2Vfc3RhY2tlZHxuZXd0X2dyaWRfdl9zdGFja2VkfG5ld3RfZ3JpZF93cmFwcGVkX3dpbmRvd3xuZXd0X2dyaWRfd3JhcHBlZF93aW5kb3dfYXR8bmV3dF9pbml0fG5ld3RfbGFiZWx8bmV3dF9sYWJlbF9zZXRfdGV4dHxuZXd0X2xpc3Rib3h8bmV3dF9saXN0Ym94X2FwcGVuZF9lbnRyeXxuZXd0X2xpc3Rib3hfY2xlYXJ8bmV3dF9saXN0Ym94X2NsZWFyX3NlbGVjdGlvbnxuZXd0X2xpc3Rib3hfZGVsZXRlX2VudHJ5fG5ld3RfbGlzdGJveF9nZXRfY3VycmVudHxuZXd0X2xpc3Rib3hfZ2V0X3NlbGVjdGlvbnxuZXd0X2xpc3Rib3hfaW5zZXJ0X2VudHJ5fG5ld3RfbGlzdGJveF9pdGVtX2NvdW50fG5ld3RfbGlzdGJveF9zZWxlY3RfaXRlbXxuZXd0X2xpc3Rib3hfc2V0X2N1cnJlbnR8bmV3dF9saXN0Ym94X3NldF9jdXJyZW50X2J5X2tleXxuZXd0X2xpc3Rib3hfc2V0X2RhdGF8bmV3dF9saXN0Ym94X3NldF9lbnRyeXxuZXd0X2xpc3Rib3hfc2V0X3dpZHRofG5ld3RfbGlzdGl0ZW18bmV3dF9saXN0aXRlbV9nZXRfZGF0YXxuZXd0X2xpc3RpdGVtX3NldHxuZXd0X29wZW5fd2luZG93fG5ld3RfcG9wX2hlbHBfbGluZXxuZXd0X3BvcF93aW5kb3d8bmV3dF9wdXNoX2hlbHBfbGluZXxuZXd0X3JhZGlvX2dldF9jdXJyZW50fG5ld3RfcmFkaW9idXR0b258bmV3dF9yZWRyYXdfaGVscF9saW5lfG5ld3RfcmVmbG93X3RleHR8bmV3dF9yZWZyZXNofG5ld3RfcmVzaXplX3NjcmVlbnxuZXd0X3Jlc3VtZXxuZXd0X3J1bl9mb3JtfG5ld3Rfc2NhbGV8bmV3dF9zY2FsZV9zZXR8bmV3dF9zY3JvbGxiYXJfc2V0fG5ld3Rfc2V0X2hlbHBfY2FsbGJhY2t8bmV3dF9zZXRfc3VzcGVuZF9jYWxsYmFja3xuZXd0X3N1c3BlbmR8bmV3dF90ZXh0Ym94fG5ld3RfdGV4dGJveF9nZXRfbnVtX2xpbmVzfG5ld3RfdGV4dGJveF9yZWZsb3dlZHxuZXd0X3RleHRib3hfc2V0X2hlaWdodHxuZXd0X3RleHRib3hfc2V0X3RleHR8bmV3dF92ZXJ0aWNhbF9zY3JvbGxiYXJ8bmV3dF93YWl0X2Zvcl9rZXl8bmV3dF93aW5fY2hvaWNlfG5ld3Rfd2luX2VudHJpZXN8bmV3dF93aW5fbWVudXxuZXd0X3dpbl9tZXNzYWdlfG5ld3Rfd2luX21lc3NhZ2V2fG5ld3Rfd2luX3Rlcm5hcnl8bmV4dHxuZ2V0dGV4dHxubDJicnxubF9sYW5naW5mb3xub3Jld2luZGl0ZXJhdG9yfG5vcm1hbGl6ZXJ8bm90ZXNfYm9keXxub3Rlc19jb3B5X2RifG5vdGVzX2NyZWF0ZV9kYnxub3Rlc19jcmVhdGVfbm90ZXxub3Rlc19kcm9wX2RifG5vdGVzX2ZpbmRfbm90ZXxub3Rlc19oZWFkZXJfaW5mb3xub3Rlc19saXN0X21zZ3N8bm90ZXNfbWFya19yZWFkfG5vdGVzX21hcmtfdW5yZWFkfG5vdGVzX25hdl9jcmVhdGV8bm90ZXNfc2VhcmNofG5vdGVzX3VucmVhZHxub3Rlc192ZXJzaW9ufG5zYXBpX3JlcXVlc3RfaGVhZGVyc3xuc2FwaV9yZXNwb25zZV9oZWFkZXJzfG5zYXBpX3ZpcnR1YWx8bnRobWFjfG51bWJlcl9mb3JtYXR8bnVtYmVyZm9ybWF0dGVyfG9hdXRofG9hdXRoX2dldF9zYnN8b2F1dGhfdXJsZW5jb2RlfG9hdXRoZXhjZXB0aW9ufG9hdXRocHJvdmlkZXJ8b2JfY2xlYW58b2JfZGVmbGF0ZWhhbmRsZXJ8b2JfZW5kX2NsZWFufG9iX2VuZF9mbHVzaHxvYl9ldGFnaGFuZGxlcnxvYl9mbHVzaHxvYl9nZXRfY2xlYW58b2JfZ2V0X2NvbnRlbnRzfG9iX2dldF9mbHVzaHxvYl9nZXRfbGVuZ3RofG9iX2dldF9sZXZlbHxvYl9nZXRfc3RhdHVzfG9iX2d6aGFuZGxlcnxvYl9pY29udl9oYW5kbGVyfG9iX2ltcGxpY2l0X2ZsdXNofG9iX2luZmxhdGVoYW5kbGVyfG9iX2xpc3RfaGFuZGxlcnN8b2Jfc3RhcnR8b2JfdGlkeWhhbmRsZXJ8b2NpX2JpbmRfYXJyYXlfYnlfbmFtZXxvY2lfYmluZF9ieV9uYW1lfG9jaV9jYW5jZWx8b2NpX2NsaWVudF92ZXJzaW9ufG9jaV9jbG9zZXxvY2lfY29sbGVjdGlvbl9hcHBlbmR8b2NpX2NvbGxlY3Rpb25fYXNzaWdufG9jaV9jb2xsZWN0aW9uX2VsZW1lbnRfYXNzaWdufG9jaV9jb2xsZWN0aW9uX2VsZW1lbnRfZ2V0fG9jaV9jb2xsZWN0aW9uX2ZyZWV8b2NpX2NvbGxlY3Rpb25fbWF4fG9jaV9jb2xsZWN0aW9uX3NpemV8b2NpX2NvbGxlY3Rpb25fdHJpbXxvY2lfY29tbWl0fG9jaV9jb25uZWN0fG9jaV9kZWZpbmVfYnlfbmFtZXxvY2lfZXJyb3J8b2NpX2V4ZWN1dGV8b2NpX2ZldGNofG9jaV9mZXRjaF9hbGx8b2NpX2ZldGNoX2FycmF5fG9jaV9mZXRjaF9hc3NvY3xvY2lfZmV0Y2hfb2JqZWN0fG9jaV9mZXRjaF9yb3d8b2NpX2ZpZWxkX2lzX251bGx8b2NpX2ZpZWxkX25hbWV8b2NpX2ZpZWxkX3ByZWNpc2lvbnxvY2lfZmllbGRfc2NhbGV8b2NpX2ZpZWxkX3NpemV8b2NpX2ZpZWxkX3R5cGV8b2NpX2ZpZWxkX3R5cGVfcmF3fG9jaV9mcmVlX3N0YXRlbWVudHxvY2lfaW50ZXJuYWxfZGVidWd8b2NpX2xvYl9hcHBlbmR8b2NpX2xvYl9jbG9zZXxvY2lfbG9iX2NvcHl8b2NpX2xvYl9lb2Z8b2NpX2xvYl9lcmFzZXxvY2lfbG9iX2V4cG9ydHxvY2lfbG9iX2ZsdXNofG9jaV9sb2JfZnJlZXxvY2lfbG9iX2dldGJ1ZmZlcmluZ3xvY2lfbG9iX2ltcG9ydHxvY2lfbG9iX2lzX2VxdWFsfG9jaV9sb2JfbG9hZHxvY2lfbG9iX3JlYWR8b2NpX2xvYl9yZXdpbmR8b2NpX2xvYl9zYXZlfG9jaV9sb2Jfc2F2ZWZpbGV8b2NpX2xvYl9zZWVrfG9jaV9sb2Jfc2V0YnVmZmVyaW5nfG9jaV9sb2Jfc2l6ZXxvY2lfbG9iX3RlbGx8b2NpX2xvYl90cnVuY2F0ZXxvY2lfbG9iX3dyaXRlfG9jaV9sb2Jfd3JpdGV0ZW1wb3Jhcnl8b2NpX2xvYl93cml0ZXRvZmlsZXxvY2lfbmV3X2NvbGxlY3Rpb258b2NpX25ld19jb25uZWN0fG9jaV9uZXdfY3Vyc29yfG9jaV9uZXdfZGVzY3JpcHRvcnxvY2lfbnVtX2ZpZWxkc3xvY2lfbnVtX3Jvd3N8b2NpX3BhcnNlfG9jaV9wYXNzd29yZF9jaGFuZ2V8b2NpX3Bjb25uZWN0fG9jaV9yZXN1bHR8b2NpX3JvbGxiYWNrfG9jaV9zZXJ2ZXJfdmVyc2lvbnxvY2lfc2V0X2FjdGlvbnxvY2lfc2V0X2NsaWVudF9pZGVudGlmaWVyfG9jaV9zZXRfY2xpZW50X2luZm98b2NpX3NldF9lZGl0aW9ufG9jaV9zZXRfbW9kdWxlX25hbWV8b2NpX3NldF9wcmVmZXRjaHxvY2lfc3RhdGVtZW50X3R5cGV8b2NpYmluZGJ5bmFtZXxvY2ljYW5jZWx8b2NpY2xvc2Vsb2J8b2NpY29sbGFwcGVuZHxvY2ljb2xsYXNzaWdufG9jaWNvbGxhc3NpZ25lbGVtfG9jaWNvbGxnZXRlbGVtfG9jaWNvbGxtYXh8b2NpY29sbHNpemV8b2NpY29sbHRyaW18b2NpY29sdW1uaXNudWxsfG9jaWNvbHVtbm5hbWV8b2NpY29sdW1ucHJlY2lzaW9ufG9jaWNvbHVtbnNjYWxlfG9jaWNvbHVtbnNpemV8b2NpY29sdW1udHlwZXxvY2ljb2x1bW50eXBlcmF3fG9jaWNvbW1pdHxvY2lkZWZpbmVieW5hbWV8b2NpZXJyb3J8b2NpZXhlY3V0ZXxvY2lmZXRjaHxvY2lmZXRjaGludG98b2NpZmV0Y2hzdGF0ZW1lbnR8b2NpZnJlZWNvbGxlY3Rpb258b2NpZnJlZWN1cnNvcnxvY2lmcmVlZGVzY3xvY2lmcmVlc3RhdGVtZW50fG9jaWludGVybmFsZGVidWd8b2NpbG9hZGxvYnxvY2lsb2dvZmZ8b2NpbG9nb258b2NpbmV3Y29sbGVjdGlvbnxvY2luZXdjdXJzb3J8b2NpbmV3ZGVzY3JpcHRvcnxvY2lubG9nb258b2NpbnVtY29sc3xvY2lwYXJzZXxvY2lwbG9nb258b2NpcmVzdWx0fG9jaXJvbGxiYWNrfG9jaXJvd2NvdW50fG9jaXNhdmVsb2J8b2Npc2F2ZWxvYmZpbGV8b2Npc2VydmVydmVyc2lvbnxvY2lzZXRwcmVmZXRjaHxvY2lzdGF0ZW1lbnR0eXBlfG9jaXdyaXRlbG9idG9maWxlfG9jaXdyaXRldGVtcG9yYXJ5bG9ifG9jdGRlY3xvZGJjX2F1dG9jb21taXR8b2RiY19iaW5tb2RlfG9kYmNfY2xvc2V8b2RiY19jbG9zZV9hbGx8b2RiY19jb2x1bW5wcml2aWxlZ2VzfG9kYmNfY29sdW1uc3xvZGJjX2NvbW1pdHxvZGJjX2Nvbm5lY3R8b2RiY19jdXJzb3J8b2RiY19kYXRhX3NvdXJjZXxvZGJjX2RvfG9kYmNfZXJyb3J8b2RiY19lcnJvcm1zZ3xvZGJjX2V4ZWN8b2RiY19leGVjdXRlfG9kYmNfZmV0Y2hfYXJyYXl8b2RiY19mZXRjaF9pbnRvfG9kYmNfZmV0Y2hfb2JqZWN0fG9kYmNfZmV0Y2hfcm93fG9kYmNfZmllbGRfbGVufG9kYmNfZmllbGRfbmFtZXxvZGJjX2ZpZWxkX251bXxvZGJjX2ZpZWxkX3ByZWNpc2lvbnxvZGJjX2ZpZWxkX3NjYWxlfG9kYmNfZmllbGRfdHlwZXxvZGJjX2ZvcmVpZ25rZXlzfG9kYmNfZnJlZV9yZXN1bHR8b2RiY19nZXR0eXBlaW5mb3xvZGJjX2xvbmdyZWFkbGVufG9kYmNfbmV4dF9yZXN1bHR8b2RiY19udW1fZmllbGRzfG9kYmNfbnVtX3Jvd3N8b2RiY19wY29ubmVjdHxvZGJjX3ByZXBhcmV8b2RiY19wcmltYXJ5a2V5c3xvZGJjX3Byb2NlZHVyZWNvbHVtbnN8b2RiY19wcm9jZWR1cmVzfG9kYmNfcmVzdWx0fG9kYmNfcmVzdWx0X2FsbHxvZGJjX3JvbGxiYWNrfG9kYmNfc2V0b3B0aW9ufG9kYmNfc3BlY2lhbGNvbHVtbnN8b2RiY19zdGF0aXN0aWNzfG9kYmNfdGFibGVwcml2aWxlZ2VzfG9kYmNfdGFibGVzfG9wZW5hbF9idWZmZXJfY3JlYXRlfG9wZW5hbF9idWZmZXJfZGF0YXxvcGVuYWxfYnVmZmVyX2Rlc3Ryb3l8b3BlbmFsX2J1ZmZlcl9nZXR8b3BlbmFsX2J1ZmZlcl9sb2Fkd2F2fG9wZW5hbF9jb250ZXh0X2NyZWF0ZXxvcGVuYWxfY29udGV4dF9jdXJyZW50fG9wZW5hbF9jb250ZXh0X2Rlc3Ryb3l8b3BlbmFsX2NvbnRleHRfcHJvY2Vzc3xvcGVuYWxfY29udGV4dF9zdXNwZW5kfG9wZW5hbF9kZXZpY2VfY2xvc2V8b3BlbmFsX2RldmljZV9vcGVufG9wZW5hbF9saXN0ZW5lcl9nZXR8b3BlbmFsX2xpc3RlbmVyX3NldHxvcGVuYWxfc291cmNlX2NyZWF0ZXxvcGVuYWxfc291cmNlX2Rlc3Ryb3l8b3BlbmFsX3NvdXJjZV9nZXR8b3BlbmFsX3NvdXJjZV9wYXVzZXxvcGVuYWxfc291cmNlX3BsYXl8b3BlbmFsX3NvdXJjZV9yZXdpbmR8b3BlbmFsX3NvdXJjZV9zZXR8b3BlbmFsX3NvdXJjZV9zdG9wfG9wZW5hbF9zdHJlYW18b3BlbmRpcnxvcGVubG9nfG9wZW5zc2xfY2lwaGVyX2l2X2xlbmd0aHxvcGVuc3NsX2Nzcl9leHBvcnR8b3BlbnNzbF9jc3JfZXhwb3J0X3RvX2ZpbGV8b3BlbnNzbF9jc3JfZ2V0X3B1YmxpY19rZXl8b3BlbnNzbF9jc3JfZ2V0X3N1YmplY3R8b3BlbnNzbF9jc3JfbmV3fG9wZW5zc2xfY3NyX3NpZ258b3BlbnNzbF9kZWNyeXB0fG9wZW5zc2xfZGhfY29tcHV0ZV9rZXl8b3BlbnNzbF9kaWdlc3R8b3BlbnNzbF9lbmNyeXB0fG9wZW5zc2xfZXJyb3Jfc3RyaW5nfG9wZW5zc2xfZnJlZV9rZXl8b3BlbnNzbF9nZXRfY2lwaGVyX21ldGhvZHN8b3BlbnNzbF9nZXRfbWRfbWV0aG9kc3xvcGVuc3NsX2dldF9wcml2YXRla2V5fG9wZW5zc2xfZ2V0X3B1YmxpY2tleXxvcGVuc3NsX29wZW58b3BlbnNzbF9wa2NzMTJfZXhwb3J0fG9wZW5zc2xfcGtjczEyX2V4cG9ydF90b19maWxlfG9wZW5zc2xfcGtjczEyX3JlYWR8b3BlbnNzbF9wa2NzN19kZWNyeXB0fG9wZW5zc2xfcGtjczdfZW5jcnlwdHxvcGVuc3NsX3BrY3M3X3NpZ258b3BlbnNzbF9wa2NzN192ZXJpZnl8b3BlbnNzbF9wa2V5X2V4cG9ydHxvcGVuc3NsX3BrZXlfZXhwb3J0X3RvX2ZpbGV8b3BlbnNzbF9wa2V5X2ZyZWV8b3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzfG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZXxvcGVuc3NsX3BrZXlfZ2V0X3B1YmxpY3xvcGVuc3NsX3BrZXlfbmV3fG9wZW5zc2xfcHJpdmF0ZV9kZWNyeXB0fG9wZW5zc2xfcHJpdmF0ZV9lbmNyeXB0fG9wZW5zc2xfcHVibGljX2RlY3J5cHR8b3BlbnNzbF9wdWJsaWNfZW5jcnlwdHxvcGVuc3NsX3JhbmRvbV9wc2V1ZG9fYnl0ZXN8b3BlbnNzbF9zZWFsfG9wZW5zc2xfc2lnbnxvcGVuc3NsX3ZlcmlmeXxvcGVuc3NsX3g1MDlfY2hlY2tfcHJpdmF0ZV9rZXl8b3BlbnNzbF94NTA5X2NoZWNrcHVycG9zZXxvcGVuc3NsX3g1MDlfZXhwb3J0fG9wZW5zc2xfeDUwOV9leHBvcnRfdG9fZmlsZXxvcGVuc3NsX3g1MDlfZnJlZXxvcGVuc3NsX3g1MDlfcGFyc2V8b3BlbnNzbF94NTA5X3JlYWR8b3JkfG91dGVyaXRlcmF0b3J8b3V0b2Zib3VuZHNleGNlcHRpb258b3V0b2ZyYW5nZWV4Y2VwdGlvbnxvdXRwdXRfYWRkX3Jld3JpdGVfdmFyfG91dHB1dF9yZXNldF9yZXdyaXRlX3ZhcnN8b3ZlcmZsb3dleGNlcHRpb258b3ZlcmxvYWR8b3ZlcnJpZGVfZnVuY3Rpb258b3ZyaW1vc19jbG9zZXxvdnJpbW9zX2NvbW1pdHxvdnJpbW9zX2Nvbm5lY3R8b3ZyaW1vc19jdXJzb3J8b3ZyaW1vc19leGVjfG92cmltb3NfZXhlY3V0ZXxvdnJpbW9zX2ZldGNoX2ludG98b3ZyaW1vc19mZXRjaF9yb3d8b3ZyaW1vc19maWVsZF9sZW58b3ZyaW1vc19maWVsZF9uYW1lfG92cmltb3NfZmllbGRfbnVtfG92cmltb3NfZmllbGRfdHlwZXxvdnJpbW9zX2ZyZWVfcmVzdWx0fG92cmltb3NfbG9uZ3JlYWRsZW58b3ZyaW1vc19udW1fZmllbGRzfG92cmltb3NfbnVtX3Jvd3N8b3ZyaW1vc19wcmVwYXJlfG92cmltb3NfcmVzdWx0fG92cmltb3NfcmVzdWx0X2FsbHxvdnJpbW9zX3JvbGxiYWNrfHBhY2t8cGFyZW50aXRlcmF0b3J8cGFyc2VfaW5pX2ZpbGV8cGFyc2VfaW5pX3N0cmluZ3xwYXJzZV9zdHJ8cGFyc2VfdXJsfHBhcnNla2l0X2NvbXBpbGVfZmlsZXxwYXJzZWtpdF9jb21waWxlX3N0cmluZ3xwYXJzZWtpdF9mdW5jX2FyZ2luZm98cGFzc3RocnV8cGF0aGluZm98cGNsb3NlfHBjbnRsX2FsYXJtfHBjbnRsX2V4ZWN8cGNudGxfZm9ya3xwY250bF9nZXRwcmlvcml0eXxwY250bF9zZXRwcmlvcml0eXxwY250bF9zaWduYWx8cGNudGxfc2lnbmFsX2Rpc3BhdGNofHBjbnRsX3NpZ3Byb2NtYXNrfHBjbnRsX3NpZ3RpbWVkd2FpdHxwY250bF9zaWd3YWl0aW5mb3xwY250bF93YWl0fHBjbnRsX3dhaXRwaWR8cGNudGxfd2V4aXRzdGF0dXN8cGNudGxfd2lmZXhpdGVkfHBjbnRsX3dpZnNpZ25hbGVkfHBjbnRsX3dpZnN0b3BwZWR8cGNudGxfd3N0b3BzaWd8cGNudGxfd3Rlcm1zaWd8cGRmX2FjdGl2YXRlX2l0ZW18cGRmX2FkZF9hbm5vdGF0aW9ufHBkZl9hZGRfYm9va21hcmt8cGRmX2FkZF9sYXVuY2hsaW5rfHBkZl9hZGRfbG9jYWxsaW5rfHBkZl9hZGRfbmFtZWRkZXN0fHBkZl9hZGRfbm90ZXxwZGZfYWRkX291dGxpbmV8cGRmX2FkZF9wZGZsaW5rfHBkZl9hZGRfdGFibGVfY2VsbHxwZGZfYWRkX3RleHRmbG93fHBkZl9hZGRfdGh1bWJuYWlsfHBkZl9hZGRfd2VibGlua3xwZGZfYXJjfHBkZl9hcmNufHBkZl9hdHRhY2hfZmlsZXxwZGZfYmVnaW5fZG9jdW1lbnR8cGRmX2JlZ2luX2ZvbnR8cGRmX2JlZ2luX2dseXBofHBkZl9iZWdpbl9pdGVtfHBkZl9iZWdpbl9sYXllcnxwZGZfYmVnaW5fcGFnZXxwZGZfYmVnaW5fcGFnZV9leHR8cGRmX2JlZ2luX3BhdHRlcm58cGRmX2JlZ2luX3RlbXBsYXRlfHBkZl9iZWdpbl90ZW1wbGF0ZV9leHR8cGRmX2NpcmNsZXxwZGZfY2xpcHxwZGZfY2xvc2V8cGRmX2Nsb3NlX2ltYWdlfHBkZl9jbG9zZV9wZGl8cGRmX2Nsb3NlX3BkaV9wYWdlfHBkZl9jbG9zZXBhdGh8cGRmX2Nsb3NlcGF0aF9maWxsX3N0cm9rZXxwZGZfY2xvc2VwYXRoX3N0cm9rZXxwZGZfY29uY2F0fHBkZl9jb250aW51ZV90ZXh0fHBkZl9jcmVhdGVfM2R2aWV3fHBkZl9jcmVhdGVfYWN0aW9ufHBkZl9jcmVhdGVfYW5ub3RhdGlvbnxwZGZfY3JlYXRlX2Jvb2ttYXJrfHBkZl9jcmVhdGVfZmllbGR8cGRmX2NyZWF0ZV9maWVsZGdyb3VwfHBkZl9jcmVhdGVfZ3N0YXRlfHBkZl9jcmVhdGVfcHZmfHBkZl9jcmVhdGVfdGV4dGZsb3d8cGRmX2N1cnZldG98cGRmX2RlZmluZV9sYXllcnxwZGZfZGVsZXRlfHBkZl9kZWxldGVfcHZmfHBkZl9kZWxldGVfdGFibGV8cGRmX2RlbGV0ZV90ZXh0Zmxvd3xwZGZfZW5jb2Rpbmdfc2V0X2NoYXJ8cGRmX2VuZF9kb2N1bWVudHxwZGZfZW5kX2ZvbnR8cGRmX2VuZF9nbHlwaHxwZGZfZW5kX2l0ZW18cGRmX2VuZF9sYXllcnxwZGZfZW5kX3BhZ2V8cGRmX2VuZF9wYWdlX2V4dHxwZGZfZW5kX3BhdHRlcm58cGRmX2VuZF90ZW1wbGF0ZXxwZGZfZW5kcGF0aHxwZGZfZmlsbHxwZGZfZmlsbF9pbWFnZWJsb2NrfHBkZl9maWxsX3BkZmJsb2NrfHBkZl9maWxsX3N0cm9rZXxwZGZfZmlsbF90ZXh0YmxvY2t8cGRmX2ZpbmRmb250fHBkZl9maXRfaW1hZ2V8cGRmX2ZpdF9wZGlfcGFnZXxwZGZfZml0X3RhYmxlfHBkZl9maXRfdGV4dGZsb3d8cGRmX2ZpdF90ZXh0bGluZXxwZGZfZ2V0X2FwaW5hbWV8cGRmX2dldF9idWZmZXJ8cGRmX2dldF9lcnJtc2d8cGRmX2dldF9lcnJudW18cGRmX2dldF9mb250fHBkZl9nZXRfZm9udG5hbWV8cGRmX2dldF9mb250c2l6ZXxwZGZfZ2V0X2ltYWdlX2hlaWdodHxwZGZfZ2V0X2ltYWdlX3dpZHRofHBkZl9nZXRfbWFqb3J2ZXJzaW9ufHBkZl9nZXRfbWlub3J2ZXJzaW9ufHBkZl9nZXRfcGFyYW1ldGVyfHBkZl9nZXRfcGRpX3BhcmFtZXRlcnxwZGZfZ2V0X3BkaV92YWx1ZXxwZGZfZ2V0X3ZhbHVlfHBkZl9pbmZvX2ZvbnR8cGRmX2luZm9fbWF0Y2hib3h8cGRmX2luZm9fdGFibGV8cGRmX2luZm9fdGV4dGZsb3d8cGRmX2luZm9fdGV4dGxpbmV8cGRmX2luaXRncmFwaGljc3xwZGZfbGluZXRvfHBkZl9sb2FkXzNkZGF0YXxwZGZfbG9hZF9mb250fHBkZl9sb2FkX2ljY3Byb2ZpbGV8cGRmX2xvYWRfaW1hZ2V8cGRmX21ha2VzcG90Y29sb3J8cGRmX21vdmV0b3xwZGZfbmV3fHBkZl9vcGVuX2NjaXR0fHBkZl9vcGVuX2ZpbGV8cGRmX29wZW5fZ2lmfHBkZl9vcGVuX2ltYWdlfHBkZl9vcGVuX2ltYWdlX2ZpbGV8cGRmX29wZW5fanBlZ3xwZGZfb3Blbl9tZW1vcnlfaW1hZ2V8cGRmX29wZW5fcGRpfHBkZl9vcGVuX3BkaV9kb2N1bWVudHxwZGZfb3Blbl9wZGlfcGFnZXxwZGZfb3Blbl90aWZmfHBkZl9wY29zX2dldF9udW1iZXJ8cGRmX3Bjb3NfZ2V0X3N0cmVhbXxwZGZfcGNvc19nZXRfc3RyaW5nfHBkZl9wbGFjZV9pbWFnZXxwZGZfcGxhY2VfcGRpX3BhZ2V8cGRmX3Byb2Nlc3NfcGRpfHBkZl9yZWN0fHBkZl9yZXN0b3JlfHBkZl9yZXN1bWVfcGFnZXxwZGZfcm90YXRlfHBkZl9zYXZlfHBkZl9zY2FsZXxwZGZfc2V0X2JvcmRlcl9jb2xvcnxwZGZfc2V0X2JvcmRlcl9kYXNofHBkZl9zZXRfYm9yZGVyX3N0eWxlfHBkZl9zZXRfY2hhcl9zcGFjaW5nfHBkZl9zZXRfZHVyYXRpb258cGRmX3NldF9nc3RhdGV8cGRmX3NldF9ob3Jpel9zY2FsaW5nfHBkZl9zZXRfaW5mb3xwZGZfc2V0X2luZm9fYXV0aG9yfHBkZl9zZXRfaW5mb19jcmVhdG9yfHBkZl9zZXRfaW5mb19rZXl3b3Jkc3xwZGZfc2V0X2luZm9fc3ViamVjdHxwZGZfc2V0X2luZm9fdGl0bGV8cGRmX3NldF9sYXllcl9kZXBlbmRlbmN5fHBkZl9zZXRfbGVhZGluZ3xwZGZfc2V0X3BhcmFtZXRlcnxwZGZfc2V0X3RleHRfbWF0cml4fHBkZl9zZXRfdGV4dF9wb3N8cGRmX3NldF90ZXh0X3JlbmRlcmluZ3xwZGZfc2V0X3RleHRfcmlzZXxwZGZfc2V0X3ZhbHVlfHBkZl9zZXRfd29yZF9zcGFjaW5nfHBkZl9zZXRjb2xvcnxwZGZfc2V0ZGFzaHxwZGZfc2V0ZGFzaHBhdHRlcm58cGRmX3NldGZsYXR8cGRmX3NldGZvbnR8cGRmX3NldGdyYXl8cGRmX3NldGdyYXlfZmlsbHxwZGZfc2V0Z3JheV9zdHJva2V8cGRmX3NldGxpbmVjYXB8cGRmX3NldGxpbmVqb2lufHBkZl9zZXRsaW5ld2lkdGh8cGRmX3NldG1hdHJpeHxwZGZfc2V0bWl0ZXJsaW1pdHxwZGZfc2V0cG9seWRhc2h8cGRmX3NldHJnYmNvbG9yfHBkZl9zZXRyZ2Jjb2xvcl9maWxsfHBkZl9zZXRyZ2Jjb2xvcl9zdHJva2V8cGRmX3NoYWRpbmd8cGRmX3NoYWRpbmdfcGF0dGVybnxwZGZfc2hmaWxsfHBkZl9zaG93fHBkZl9zaG93X2JveGVkfHBkZl9zaG93X3h5fHBkZl9za2V3fHBkZl9zdHJpbmd3aWR0aHxwZGZfc3Ryb2tlfHBkZl9zdXNwZW5kX3BhZ2V8cGRmX3RyYW5zbGF0ZXxwZGZfdXRmMTZfdG9fdXRmOHxwZGZfdXRmMzJfdG9fdXRmMTZ8cGRmX3V0ZjhfdG9fdXRmMTZ8cGRvfHBkb19jdWJyaWRfc2NoZW1hfHBkb19wZ3NxbGxvYmNyZWF0ZXxwZG9fcGdzcWxsb2JvcGVufHBkb19wZ3NxbGxvYnVubGlua3xwZG9fc3FsaXRlY3JlYXRlYWdncmVnYXRlfHBkb19zcWxpdGVjcmVhdGVmdW5jdGlvbnxwZG9leGNlcHRpb258cGRvc3RhdGVtZW50fHBmc29ja29wZW58cGdfYWZmZWN0ZWRfcm93c3xwZ19jYW5jZWxfcXVlcnl8cGdfY2xpZW50X2VuY29kaW5nfHBnX2Nsb3NlfHBnX2Nvbm5lY3R8cGdfY29ubmVjdGlvbl9idXN5fHBnX2Nvbm5lY3Rpb25fcmVzZXR8cGdfY29ubmVjdGlvbl9zdGF0dXN8cGdfY29udmVydHxwZ19jb3B5X2Zyb218cGdfY29weV90b3xwZ19kYm5hbWV8cGdfZGVsZXRlfHBnX2VuZF9jb3B5fHBnX2VzY2FwZV9ieXRlYXxwZ19lc2NhcGVfc3RyaW5nfHBnX2V4ZWN1dGV8cGdfZmV0Y2hfYWxsfHBnX2ZldGNoX2FsbF9jb2x1bW5zfHBnX2ZldGNoX2FycmF5fHBnX2ZldGNoX2Fzc29jfHBnX2ZldGNoX29iamVjdHxwZ19mZXRjaF9yZXN1bHR8cGdfZmV0Y2hfcm93fHBnX2ZpZWxkX2lzX251bGx8cGdfZmllbGRfbmFtZXxwZ19maWVsZF9udW18cGdfZmllbGRfcHJ0bGVufHBnX2ZpZWxkX3NpemV8cGdfZmllbGRfdGFibGV8cGdfZmllbGRfdHlwZXxwZ19maWVsZF90eXBlX29pZHxwZ19mcmVlX3Jlc3VsdHxwZ19nZXRfbm90aWZ5fHBnX2dldF9waWR8cGdfZ2V0X3Jlc3VsdHxwZ19ob3N0fHBnX2luc2VydHxwZ19sYXN0X2Vycm9yfHBnX2xhc3Rfbm90aWNlfHBnX2xhc3Rfb2lkfHBnX2xvX2Nsb3NlfHBnX2xvX2NyZWF0ZXxwZ19sb19leHBvcnR8cGdfbG9faW1wb3J0fHBnX2xvX29wZW58cGdfbG9fcmVhZHxwZ19sb19yZWFkX2FsbHxwZ19sb19zZWVrfHBnX2xvX3RlbGx8cGdfbG9fdW5saW5rfHBnX2xvX3dyaXRlfHBnX21ldGFfZGF0YXxwZ19udW1fZmllbGRzfHBnX251bV9yb3dzfHBnX29wdGlvbnN8cGdfcGFyYW1ldGVyX3N0YXR1c3xwZ19wY29ubmVjdHxwZ19waW5nfHBnX3BvcnR8cGdfcHJlcGFyZXxwZ19wdXRfbGluZXxwZ19xdWVyeXxwZ19xdWVyeV9wYXJhbXN8cGdfcmVzdWx0X2Vycm9yfHBnX3Jlc3VsdF9lcnJvcl9maWVsZHxwZ19yZXN1bHRfc2Vla3xwZ19yZXN1bHRfc3RhdHVzfHBnX3NlbGVjdHxwZ19zZW5kX2V4ZWN1dGV8cGdfc2VuZF9wcmVwYXJlfHBnX3NlbmRfcXVlcnl8cGdfc2VuZF9xdWVyeV9wYXJhbXN8cGdfc2V0X2NsaWVudF9lbmNvZGluZ3xwZ19zZXRfZXJyb3JfdmVyYm9zaXR5fHBnX3RyYWNlfHBnX3RyYW5zYWN0aW9uX3N0YXR1c3xwZ190dHl8cGdfdW5lc2NhcGVfYnl0ZWF8cGdfdW50cmFjZXxwZ191cGRhdGV8cGdfdmVyc2lvbnxwaHBfY2hlY2tfc3ludGF4fHBocF9pbmlfbG9hZGVkX2ZpbGV8cGhwX2luaV9zY2FubmVkX2ZpbGVzfHBocF9sb2dvX2d1aWR8cGhwX3NhcGlfbmFtZXxwaHBfc3RyaXBfd2hpdGVzcGFjZXxwaHBfdW5hbWV8cGhwY3JlZGl0c3xwaHBpbmZvfHBocHZlcnNpb258cGl8cG5nMndibXB8cG9wZW58cG9zfHBvc2l4X2FjY2Vzc3xwb3NpeF9jdGVybWlkfHBvc2l4X2Vycm5vfHBvc2l4X2dldF9sYXN0X2Vycm9yfHBvc2l4X2dldGN3ZHxwb3NpeF9nZXRlZ2lkfHBvc2l4X2dldGV1aWR8cG9zaXhfZ2V0Z2lkfHBvc2l4X2dldGdyZ2lkfHBvc2l4X2dldGdybmFtfHBvc2l4X2dldGdyb3Vwc3xwb3NpeF9nZXRsb2dpbnxwb3NpeF9nZXRwZ2lkfHBvc2l4X2dldHBncnB8cG9zaXhfZ2V0cGlkfHBvc2l4X2dldHBwaWR8cG9zaXhfZ2V0cHduYW18cG9zaXhfZ2V0cHd1aWR8cG9zaXhfZ2V0cmxpbWl0fHBvc2l4X2dldHNpZHxwb3NpeF9nZXR1aWR8cG9zaXhfaW5pdGdyb3Vwc3xwb3NpeF9pc2F0dHl8cG9zaXhfa2lsbHxwb3NpeF9ta2ZpZm98cG9zaXhfbWtub2R8cG9zaXhfc2V0ZWdpZHxwb3NpeF9zZXRldWlkfHBvc2l4X3NldGdpZHxwb3NpeF9zZXRwZ2lkfHBvc2l4X3NldHNpZHxwb3NpeF9zZXR1aWR8cG9zaXhfc3RyZXJyb3J8cG9zaXhfdGltZXN8cG9zaXhfdHR5bmFtZXxwb3NpeF91bmFtZXxwb3d8cHJlZ19maWx0ZXJ8cHJlZ19ncmVwfHByZWdfbGFzdF9lcnJvcnxwcmVnX21hdGNofHByZWdfbWF0Y2hfYWxsfHByZWdfcXVvdGV8cHJlZ19yZXBsYWNlfHByZWdfcmVwbGFjZV9jYWxsYmFja3xwcmVnX3NwbGl0fHByZXZ8cHJpbnR8cHJpbnRfcnxwcmludGVyX2Fib3J0fHByaW50ZXJfY2xvc2V8cHJpbnRlcl9jcmVhdGVfYnJ1c2h8cHJpbnRlcl9jcmVhdGVfZGN8cHJpbnRlcl9jcmVhdGVfZm9udHxwcmludGVyX2NyZWF0ZV9wZW58cHJpbnRlcl9kZWxldGVfYnJ1c2h8cHJpbnRlcl9kZWxldGVfZGN8cHJpbnRlcl9kZWxldGVfZm9udHxwcmludGVyX2RlbGV0ZV9wZW58cHJpbnRlcl9kcmF3X2JtcHxwcmludGVyX2RyYXdfY2hvcmR8cHJpbnRlcl9kcmF3X2VsaXBzZXxwcmludGVyX2RyYXdfbGluZXxwcmludGVyX2RyYXdfcGllfHByaW50ZXJfZHJhd19yZWN0YW5nbGV8cHJpbnRlcl9kcmF3X3JvdW5kcmVjdHxwcmludGVyX2RyYXdfdGV4dHxwcmludGVyX2VuZF9kb2N8cHJpbnRlcl9lbmRfcGFnZXxwcmludGVyX2dldF9vcHRpb258cHJpbnRlcl9saXN0fHByaW50ZXJfbG9naWNhbF9mb250aGVpZ2h0fHByaW50ZXJfb3BlbnxwcmludGVyX3NlbGVjdF9icnVzaHxwcmludGVyX3NlbGVjdF9mb250fHByaW50ZXJfc2VsZWN0X3BlbnxwcmludGVyX3NldF9vcHRpb258cHJpbnRlcl9zdGFydF9kb2N8cHJpbnRlcl9zdGFydF9wYWdlfHByaW50ZXJfd3JpdGV8cHJpbnRmfHByb2NfY2xvc2V8cHJvY19nZXRfc3RhdHVzfHByb2NfbmljZXxwcm9jX29wZW58cHJvY190ZXJtaW5hdGV8cHJvcGVydHlfZXhpc3RzfHBzX2FkZF9ib29rbWFya3xwc19hZGRfbGF1bmNobGlua3xwc19hZGRfbG9jYWxsaW5rfHBzX2FkZF9ub3RlfHBzX2FkZF9wZGZsaW5rfHBzX2FkZF93ZWJsaW5rfHBzX2FyY3xwc19hcmNufHBzX2JlZ2luX3BhZ2V8cHNfYmVnaW5fcGF0dGVybnxwc19iZWdpbl90ZW1wbGF0ZXxwc19jaXJjbGV8cHNfY2xpcHxwc19jbG9zZXxwc19jbG9zZV9pbWFnZXxwc19jbG9zZXBhdGh8cHNfY2xvc2VwYXRoX3N0cm9rZXxwc19jb250aW51ZV90ZXh0fHBzX2N1cnZldG98cHNfZGVsZXRlfHBzX2VuZF9wYWdlfHBzX2VuZF9wYXR0ZXJufHBzX2VuZF90ZW1wbGF0ZXxwc19maWxsfHBzX2ZpbGxfc3Ryb2tlfHBzX2ZpbmRmb250fHBzX2dldF9idWZmZXJ8cHNfZ2V0X3BhcmFtZXRlcnxwc19nZXRfdmFsdWV8cHNfaHlwaGVuYXRlfHBzX2luY2x1ZGVfZmlsZXxwc19saW5ldG98cHNfbWFrZXNwb3Rjb2xvcnxwc19tb3ZldG98cHNfbmV3fHBzX29wZW5fZmlsZXxwc19vcGVuX2ltYWdlfHBzX29wZW5faW1hZ2VfZmlsZXxwc19vcGVuX21lbW9yeV9pbWFnZXxwc19wbGFjZV9pbWFnZXxwc19yZWN0fHBzX3Jlc3RvcmV8cHNfcm90YXRlfHBzX3NhdmV8cHNfc2NhbGV8cHNfc2V0X2JvcmRlcl9jb2xvcnxwc19zZXRfYm9yZGVyX2Rhc2h8cHNfc2V0X2JvcmRlcl9zdHlsZXxwc19zZXRfaW5mb3xwc19zZXRfcGFyYW1ldGVyfHBzX3NldF90ZXh0X3Bvc3xwc19zZXRfdmFsdWV8cHNfc2V0Y29sb3J8cHNfc2V0ZGFzaHxwc19zZXRmbGF0fHBzX3NldGZvbnR8cHNfc2V0Z3JheXxwc19zZXRsaW5lY2FwfHBzX3NldGxpbmVqb2lufHBzX3NldGxpbmV3aWR0aHxwc19zZXRtaXRlcmxpbWl0fHBzX3NldG92ZXJwcmludG1vZGV8cHNfc2V0cG9seWRhc2h8cHNfc2hhZGluZ3xwc19zaGFkaW5nX3BhdHRlcm58cHNfc2hmaWxsfHBzX3Nob3d8cHNfc2hvdzJ8cHNfc2hvd19ib3hlZHxwc19zaG93X3h5fHBzX3Nob3dfeHkyfHBzX3N0cmluZ19nZW9tZXRyeXxwc19zdHJpbmd3aWR0aHxwc19zdHJva2V8cHNfc3ltYm9sfHBzX3N5bWJvbF9uYW1lfHBzX3N5bWJvbF93aWR0aHxwc190cmFuc2xhdGV8cHNwZWxsX2FkZF90b19wZXJzb25hbHxwc3BlbGxfYWRkX3RvX3Nlc3Npb258cHNwZWxsX2NoZWNrfHBzcGVsbF9jbGVhcl9zZXNzaW9ufHBzcGVsbF9jb25maWdfY3JlYXRlfHBzcGVsbF9jb25maWdfZGF0YV9kaXJ8cHNwZWxsX2NvbmZpZ19kaWN0X2Rpcnxwc3BlbGxfY29uZmlnX2lnbm9yZXxwc3BlbGxfY29uZmlnX21vZGV8cHNwZWxsX2NvbmZpZ19wZXJzb25hbHxwc3BlbGxfY29uZmlnX3JlcGx8cHNwZWxsX2NvbmZpZ19ydW50b2dldGhlcnxwc3BlbGxfY29uZmlnX3NhdmVfcmVwbHxwc3BlbGxfbmV3fHBzcGVsbF9uZXdfY29uZmlnfHBzcGVsbF9uZXdfcGVyc29uYWx8cHNwZWxsX3NhdmVfd29yZGxpc3R8cHNwZWxsX3N0b3JlX3JlcGxhY2VtZW50fHBzcGVsbF9zdWdnZXN0fHB1dGVudnxweF9jbG9zZXxweF9jcmVhdGVfZnB8cHhfZGF0ZTJzdHJpbmd8cHhfZGVsZXRlfHB4X2RlbGV0ZV9yZWNvcmR8cHhfZ2V0X2ZpZWxkfHB4X2dldF9pbmZvfHB4X2dldF9wYXJhbWV0ZXJ8cHhfZ2V0X3JlY29yZHxweF9nZXRfc2NoZW1hfHB4X2dldF92YWx1ZXxweF9pbnNlcnRfcmVjb3JkfHB4X25ld3xweF9udW1maWVsZHN8cHhfbnVtcmVjb3Jkc3xweF9vcGVuX2ZwfHB4X3B1dF9yZWNvcmR8cHhfcmV0cmlldmVfcmVjb3JkfHB4X3NldF9ibG9iX2ZpbGV8cHhfc2V0X3BhcmFtZXRlcnxweF9zZXRfdGFibGVuYW1lfHB4X3NldF90YXJnZXRlbmNvZGluZ3xweF9zZXRfdmFsdWV8cHhfdGltZXN0YW1wMnN0cmluZ3xweF91cGRhdGVfcmVjb3JkfHFkb21fZXJyb3J8cWRvbV90cmVlfHF1b3RlZF9wcmludGFibGVfZGVjb2RlfHF1b3RlZF9wcmludGFibGVfZW5jb2RlfHF1b3RlbWV0YXxyYWQyZGVnfHJhZGl1c19hY2N0X29wZW58cmFkaXVzX2FkZF9zZXJ2ZXJ8cmFkaXVzX2F1dGhfb3BlbnxyYWRpdXNfY2xvc2V8cmFkaXVzX2NvbmZpZ3xyYWRpdXNfY3JlYXRlX3JlcXVlc3R8cmFkaXVzX2N2dF9hZGRyfHJhZGl1c19jdnRfaW50fHJhZGl1c19jdnRfc3RyaW5nfHJhZGl1c19kZW1hbmdsZXxyYWRpdXNfZGVtYW5nbGVfbXBwZV9rZXl8cmFkaXVzX2dldF9hdHRyfHJhZGl1c19nZXRfdmVuZG9yX2F0dHJ8cmFkaXVzX3B1dF9hZGRyfHJhZGl1c19wdXRfYXR0cnxyYWRpdXNfcHV0X2ludHxyYWRpdXNfcHV0X3N0cmluZ3xyYWRpdXNfcHV0X3ZlbmRvcl9hZGRyfHJhZGl1c19wdXRfdmVuZG9yX2F0dHJ8cmFkaXVzX3B1dF92ZW5kb3JfaW50fHJhZGl1c19wdXRfdmVuZG9yX3N0cmluZ3xyYWRpdXNfcmVxdWVzdF9hdXRoZW50aWNhdG9yfHJhZGl1c19zZW5kX3JlcXVlc3R8cmFkaXVzX3NlcnZlcl9zZWNyZXR8cmFkaXVzX3N0cmVycm9yfHJhbmR8cmFuZ2V8cmFuZ2VleGNlcHRpb258cmFyX3dyYXBwZXJfY2FjaGVfc3RhdHN8cmFyYXJjaGl2ZXxyYXJlbnRyeXxyYXJleGNlcHRpb258cmF3dXJsZGVjb2RlfHJhd3VybGVuY29kZXxyZWFkX2V4aWZfZGF0YXxyZWFkZGlyfHJlYWRmaWxlfHJlYWRnemZpbGV8cmVhZGxpbmV8cmVhZGxpbmVfYWRkX2hpc3Rvcnl8cmVhZGxpbmVfY2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsfHJlYWRsaW5lX2NhbGxiYWNrX2hhbmRsZXJfcmVtb3ZlfHJlYWRsaW5lX2NhbGxiYWNrX3JlYWRfY2hhcnxyZWFkbGluZV9jbGVhcl9oaXN0b3J5fHJlYWRsaW5lX2NvbXBsZXRpb25fZnVuY3Rpb258cmVhZGxpbmVfaW5mb3xyZWFkbGluZV9saXN0X2hpc3Rvcnl8cmVhZGxpbmVfb25fbmV3X2xpbmV8cmVhZGxpbmVfcmVhZF9oaXN0b3J5fHJlYWRsaW5lX3JlZGlzcGxheXxyZWFkbGluZV93cml0ZV9oaXN0b3J5fHJlYWRsaW5rfHJlYWxwYXRofHJlYWxwYXRoX2NhY2hlX2dldHxyZWFscGF0aF9jYWNoZV9zaXplfHJlY29kZXxyZWNvZGVfZmlsZXxyZWNvZGVfc3RyaW5nfHJlY3Vyc2l2ZWFycmF5aXRlcmF0b3J8cmVjdXJzaXZlY2FjaGluZ2l0ZXJhdG9yfHJlY3Vyc2l2ZWNhbGxiYWNrZmlsdGVyaXRlcmF0b3J8cmVjdXJzaXZlZGlyZWN0b3J5aXRlcmF0b3J8cmVjdXJzaXZlZmlsdGVyaXRlcmF0b3J8cmVjdXJzaXZlaXRlcmF0b3J8cmVjdXJzaXZlaXRlcmF0b3JpdGVyYXRvcnxyZWN1cnNpdmVyZWdleGl0ZXJhdG9yfHJlY3Vyc2l2ZXRyZWVpdGVyYXRvcnxyZWZsZWN0aW9ufHJlZmxlY3Rpb25jbGFzc3xyZWZsZWN0aW9uZXhjZXB0aW9ufHJlZmxlY3Rpb25leHRlbnNpb258cmVmbGVjdGlvbmZ1bmN0aW9ufHJlZmxlY3Rpb25mdW5jdGlvbmFic3RyYWN0fHJlZmxlY3Rpb25tZXRob2R8cmVmbGVjdGlvbm9iamVjdHxyZWZsZWN0aW9ucGFyYW1ldGVyfHJlZmxlY3Rpb25wcm9wZXJ0eXxyZWZsZWN0b3J8cmVnZXhpdGVyYXRvcnxyZWdpc3Rlcl9zaHV0ZG93bl9mdW5jdGlvbnxyZWdpc3Rlcl90aWNrX2Z1bmN0aW9ufHJlbmFtZXxyZW5hbWVfZnVuY3Rpb258cmVxdWlyZXxyZXF1aXJlX29uY2V8cmVzZXR8cmVzZXRWYWx1ZXxyZXNvdXJjZWJ1bmRsZXxyZXN0b3JlX2Vycm9yX2hhbmRsZXJ8cmVzdG9yZV9leGNlcHRpb25faGFuZGxlcnxyZXN0b3JlX2luY2x1ZGVfcGF0aHxyZXR1cm58cmV3aW5kfHJld2luZGRpcnxybWRpcnxyb3VuZHxycG1fY2xvc2V8cnBtX2dldF90YWd8cnBtX2lzX3ZhbGlkfHJwbV9vcGVufHJwbV92ZXJzaW9ufHJyZF9jcmVhdGV8cnJkX2Vycm9yfHJyZF9mZXRjaHxycmRfZmlyc3R8cnJkX2dyYXBofHJyZF9pbmZvfHJyZF9sYXN0fHJyZF9sYXN0dXBkYXRlfHJyZF9yZXN0b3JlfHJyZF90dW5lfHJyZF91cGRhdGV8cnJkX3hwb3J0fHJyZGNyZWF0b3J8cnJkZ3JhcGh8cnJkdXBkYXRlcnxyc29ydHxydHJpbXxydW5raXRfY2xhc3NfYWRvcHR8cnVua2l0X2NsYXNzX2VtYW5jaXBhdGV8cnVua2l0X2NvbnN0YW50X2FkZHxydW5raXRfY29uc3RhbnRfcmVkZWZpbmV8cnVua2l0X2NvbnN0YW50X3JlbW92ZXxydW5raXRfZnVuY3Rpb25fYWRkfHJ1bmtpdF9mdW5jdGlvbl9jb3B5fHJ1bmtpdF9mdW5jdGlvbl9yZWRlZmluZXxydW5raXRfZnVuY3Rpb25fcmVtb3ZlfHJ1bmtpdF9mdW5jdGlvbl9yZW5hbWV8cnVua2l0X2ltcG9ydHxydW5raXRfbGludHxydW5raXRfbGludF9maWxlfHJ1bmtpdF9tZXRob2RfYWRkfHJ1bmtpdF9tZXRob2RfY29weXxydW5raXRfbWV0aG9kX3JlZGVmaW5lfHJ1bmtpdF9tZXRob2RfcmVtb3ZlfHJ1bmtpdF9tZXRob2RfcmVuYW1lfHJ1bmtpdF9yZXR1cm5fdmFsdWVfdXNlZHxydW5raXRfc2FuZGJveF9vdXRwdXRfaGFuZGxlcnxydW5raXRfc3VwZXJnbG9iYWxzfHJ1bnRpbWVleGNlcHRpb258c2FtY29ubmVjdGlvbl9jb21taXR8c2FtY29ubmVjdGlvbl9jb25uZWN0fHNhbWNvbm5lY3Rpb25fY29uc3RydWN0b3J8c2FtY29ubmVjdGlvbl9kaXNjb25uZWN0fHNhbWNvbm5lY3Rpb25fZXJybm98c2FtY29ubmVjdGlvbl9lcnJvcnxzYW1jb25uZWN0aW9uX2lzY29ubmVjdGVkfHNhbWNvbm5lY3Rpb25fcGVla3xzYW1jb25uZWN0aW9uX3BlZWthbGx8c2FtY29ubmVjdGlvbl9yZWNlaXZlfHNhbWNvbm5lY3Rpb25fcmVtb3ZlfHNhbWNvbm5lY3Rpb25fcm9sbGJhY2t8c2FtY29ubmVjdGlvbl9zZW5kfHNhbWNvbm5lY3Rpb25fc2V0RGVidWd8c2FtY29ubmVjdGlvbl9zdWJzY3JpYmV8c2FtY29ubmVjdGlvbl91bnN1YnNjcmliZXxzYW1tZXNzYWdlX2JvZHl8c2FtbWVzc2FnZV9jb25zdHJ1Y3RvcnxzYW1tZXNzYWdlX2hlYWRlcnxzY2FfY3JlYXRlZGF0YW9iamVjdHxzY2FfZ2V0c2VydmljZXxzY2FfbG9jYWxwcm94eV9jcmVhdGVkYXRhb2JqZWN0fHNjYV9zb2FwcHJveHlfY3JlYXRlZGF0YW9iamVjdHxzY2FuZGlyfHNkb19kYXNfY2hhbmdlc3VtbWFyeV9iZWdpbmxvZ2dpbmd8c2RvX2Rhc19jaGFuZ2VzdW1tYXJ5X2VuZGxvZ2dpbmd8c2RvX2Rhc19jaGFuZ2VzdW1tYXJ5X2dldGNoYW5nZWRkYXRhb2JqZWN0c3xzZG9fZGFzX2NoYW5nZXN1bW1hcnlfZ2V0Y2hhbmdldHlwZXxzZG9fZGFzX2NoYW5nZXN1bW1hcnlfZ2V0b2xkY29udGFpbmVyfHNkb19kYXNfY2hhbmdlc3VtbWFyeV9nZXRvbGR2YWx1ZXN8c2RvX2Rhc19jaGFuZ2VzdW1tYXJ5X2lzbG9nZ2luZ3xzZG9fZGFzX2RhdGFmYWN0b3J5X2FkZHByb3BlcnR5dG90eXBlfHNkb19kYXNfZGF0YWZhY3RvcnlfYWRkdHlwZXxzZG9fZGFzX2RhdGFmYWN0b3J5X2dldGRhdGFmYWN0b3J5fHNkb19kYXNfZGF0YW9iamVjdF9nZXRjaGFuZ2VzdW1tYXJ5fHNkb19kYXNfcmVsYXRpb25hbF9hcHBseWNoYW5nZXN8c2RvX2Rhc19yZWxhdGlvbmFsX2NvbnN0cnVjdHxzZG9fZGFzX3JlbGF0aW9uYWxfY3JlYXRlcm9vdGRhdGFvYmplY3R8c2RvX2Rhc19yZWxhdGlvbmFsX2V4ZWN1dGVwcmVwYXJlZHF1ZXJ5fHNkb19kYXNfcmVsYXRpb25hbF9leGVjdXRlcXVlcnl8c2RvX2Rhc19zZXR0aW5nX2dldGxpc3RpbmRleHxzZG9fZGFzX3NldHRpbmdfZ2V0cHJvcGVydHlpbmRleHxzZG9fZGFzX3NldHRpbmdfZ2V0cHJvcGVydHluYW1lfHNkb19kYXNfc2V0dGluZ19nZXR2YWx1ZXxzZG9fZGFzX3NldHRpbmdfaXNzZXR8c2RvX2Rhc194bWxfYWRkdHlwZXN8c2RvX2Rhc194bWxfY3JlYXRlfHNkb19kYXNfeG1sX2NyZWF0ZWRhdGFvYmplY3R8c2RvX2Rhc194bWxfY3JlYXRlZG9jdW1lbnR8c2RvX2Rhc194bWxfZG9jdW1lbnRfZ2V0cm9vdGRhdGFvYmplY3R8c2RvX2Rhc194bWxfZG9jdW1lbnRfZ2V0cm9vdGVsZW1lbnRuYW1lfHNkb19kYXNfeG1sX2RvY3VtZW50X2dldHJvb3RlbGVtZW50dXJpfHNkb19kYXNfeG1sX2RvY3VtZW50X3NldGVuY29kaW5nfHNkb19kYXNfeG1sX2RvY3VtZW50X3NldHhtbGRlY2xhcmF0aW9ufHNkb19kYXNfeG1sX2RvY3VtZW50X3NldHhtbHZlcnNpb258c2RvX2Rhc194bWxfbG9hZGZpbGV8c2RvX2Rhc194bWxfbG9hZHN0cmluZ3xzZG9fZGFzX3htbF9zYXZlZmlsZXxzZG9fZGFzX3htbF9zYXZlc3RyaW5nfHNkb19kYXRhZmFjdG9yeV9jcmVhdGV8c2RvX2RhdGFvYmplY3RfY2xlYXJ8c2RvX2RhdGFvYmplY3RfY3JlYXRlZGF0YW9iamVjdHxzZG9fZGF0YW9iamVjdF9nZXRjb250YWluZXJ8c2RvX2RhdGFvYmplY3RfZ2V0c2VxdWVuY2V8c2RvX2RhdGFvYmplY3RfZ2V0dHlwZW5hbWV8c2RvX2RhdGFvYmplY3RfZ2V0dHlwZW5hbWVzcGFjZXVyaXxzZG9fZXhjZXB0aW9uX2dldGNhdXNlfHNkb19saXN0X2luc2VydHxzZG9fbW9kZWxfcHJvcGVydHlfZ2V0Y29udGFpbmluZ3R5cGV8c2RvX21vZGVsX3Byb3BlcnR5X2dldGRlZmF1bHR8c2RvX21vZGVsX3Byb3BlcnR5X2dldG5hbWV8c2RvX21vZGVsX3Byb3BlcnR5X2dldHR5cGV8c2RvX21vZGVsX3Byb3BlcnR5X2lzY29udGFpbm1lbnR8c2RvX21vZGVsX3Byb3BlcnR5X2lzbWFueXxzZG9fbW9kZWxfcmVmbGVjdGlvbmRhdGFvYmplY3RfY29uc3RydWN0fHNkb19tb2RlbF9yZWZsZWN0aW9uZGF0YW9iamVjdF9leHBvcnR8c2RvX21vZGVsX3JlZmxlY3Rpb25kYXRhb2JqZWN0X2dldGNvbnRhaW5tZW50cHJvcGVydHl8c2RvX21vZGVsX3JlZmxlY3Rpb25kYXRhb2JqZWN0X2dldGluc3RhbmNlcHJvcGVydGllc3xzZG9fbW9kZWxfcmVmbGVjdGlvbmRhdGFvYmplY3RfZ2V0dHlwZXxzZG9fbW9kZWxfdHlwZV9nZXRiYXNldHlwZXxzZG9fbW9kZWxfdHlwZV9nZXRuYW1lfHNkb19tb2RlbF90eXBlX2dldG5hbWVzcGFjZXVyaXxzZG9fbW9kZWxfdHlwZV9nZXRwcm9wZXJ0aWVzfHNkb19tb2RlbF90eXBlX2dldHByb3BlcnR5fHNkb19tb2RlbF90eXBlX2lzYWJzdHJhY3R0eXBlfHNkb19tb2RlbF90eXBlX2lzZGF0YXR5cGV8c2RvX21vZGVsX3R5cGVfaXNpbnN0YW5jZXxzZG9fbW9kZWxfdHlwZV9pc29wZW50eXBlfHNkb19tb2RlbF90eXBlX2lzc2VxdWVuY2VkdHlwZXxzZG9fc2VxdWVuY2VfZ2V0cHJvcGVydHl8c2RvX3NlcXVlbmNlX2luc2VydHxzZG9fc2VxdWVuY2VfbW92ZXxzZWVrYWJsZWl0ZXJhdG9yfHNlbV9hY3F1aXJlfHNlbV9nZXR8c2VtX3JlbGVhc2V8c2VtX3JlbW92ZXxzZXJpYWxpemFibGV8c2VyaWFsaXplfHNlc3Npb25fY2FjaGVfZXhwaXJlfHNlc3Npb25fY2FjaGVfbGltaXRlcnxzZXNzaW9uX2NvbW1pdHxzZXNzaW9uX2RlY29kZXxzZXNzaW9uX2Rlc3Ryb3l8c2Vzc2lvbl9lbmNvZGV8c2Vzc2lvbl9nZXRfY29va2llX3BhcmFtc3xzZXNzaW9uX2lkfHNlc3Npb25faXNfcmVnaXN0ZXJlZHxzZXNzaW9uX21vZHVsZV9uYW1lfHNlc3Npb25fbmFtZXxzZXNzaW9uX3Bnc3FsX2FkZF9lcnJvcnxzZXNzaW9uX3Bnc3FsX2dldF9lcnJvcnxzZXNzaW9uX3Bnc3FsX2dldF9maWVsZHxzZXNzaW9uX3Bnc3FsX3Jlc2V0fHNlc3Npb25fcGdzcWxfc2V0X2ZpZWxkfHNlc3Npb25fcGdzcWxfc3RhdHVzfHNlc3Npb25fcmVnZW5lcmF0ZV9pZHxzZXNzaW9uX3JlZ2lzdGVyfHNlc3Npb25fc2F2ZV9wYXRofHNlc3Npb25fc2V0X2Nvb2tpZV9wYXJhbXN8c2Vzc2lvbl9zZXRfc2F2ZV9oYW5kbGVyfHNlc3Npb25fc3RhcnR8c2Vzc2lvbl91bnJlZ2lzdGVyfHNlc3Npb25fdW5zZXR8c2Vzc2lvbl93cml0ZV9jbG9zZXxzZXRDb3VudGVyQ2xhc3N8c2V0X2Vycm9yX2hhbmRsZXJ8c2V0X2V4Y2VwdGlvbl9oYW5kbGVyfHNldF9maWxlX2J1ZmZlcnxzZXRfaW5jbHVkZV9wYXRofHNldF9tYWdpY19xdW90ZXNfcnVudGltZXxzZXRfc29ja2V0X2Jsb2NraW5nfHNldF90aW1lX2xpbWl0fHNldGNvb2tpZXxzZXRsb2NhbGV8c2V0cHJvY3RpdGxlfHNldHJhd2Nvb2tpZXxzZXRzdGF0aWNwcm9wZXJ0eXZhbHVlfHNldHRocmVhZHRpdGxlfHNldHR5cGV8c2hhMXxzaGExX2ZpbGV8c2hlbGxfZXhlY3xzaG1fYXR0YWNofHNobV9kZXRhY2h8c2htX2dldF92YXJ8c2htX2hhc192YXJ8c2htX3B1dF92YXJ8c2htX3JlbW92ZXxzaG1fcmVtb3ZlX3ZhcnxzaG1vcF9jbG9zZXxzaG1vcF9kZWxldGV8c2htb3Bfb3BlbnxzaG1vcF9yZWFkfHNobW9wX3NpemV8c2htb3Bfd3JpdGV8c2hvd19zb3VyY2V8c2h1ZmZsZXxzaWduZXVybHBhaWVtZW50fHNpbWlsYXJfdGV4dHxzaW1wbGV4bWxfaW1wb3J0X2RvbXxzaW1wbGV4bWxfbG9hZF9maWxlfHNpbXBsZXhtbF9sb2FkX3N0cmluZ3xzaW1wbGV4bWxlbGVtZW50fHNpbXBsZXhtbGl0ZXJhdG9yfHNpbnxzaW5ofHNpemVvZnxzbGVlcHxzbm1wfHNubXAyX2dldHxzbm1wMl9nZXRuZXh0fHNubXAyX3JlYWxfd2Fsa3xzbm1wMl9zZXR8c25tcDJfd2Fsa3xzbm1wM19nZXR8c25tcDNfZ2V0bmV4dHxzbm1wM19yZWFsX3dhbGt8c25tcDNfc2V0fHNubXAzX3dhbGt8c25tcF9nZXRfcXVpY2tfcHJpbnR8c25tcF9nZXRfdmFsdWVyZXRyaWV2YWx8c25tcF9yZWFkX21pYnxzbm1wX3NldF9lbnVtX3ByaW50fHNubXBfc2V0X29pZF9udW1lcmljX3ByaW50fHNubXBfc2V0X29pZF9vdXRwdXRfZm9ybWF0fHNubXBfc2V0X3F1aWNrX3ByaW50fHNubXBfc2V0X3ZhbHVlcmV0cmlldmFsfHNubXBnZXR8c25tcGdldG5leHR8c25tcHJlYWx3YWxrfHNubXBzZXR8c25tcHdhbGt8c25tcHdhbGtvaWR8c29hcGNsaWVudHxzb2FwZmF1bHR8c29hcGhlYWRlcnxzb2FwcGFyYW18c29hcHNlcnZlcnxzb2FwdmFyfHNvY2tldF9hY2NlcHR8c29ja2V0X2JpbmR8c29ja2V0X2NsZWFyX2Vycm9yfHNvY2tldF9jbG9zZXxzb2NrZXRfY29ubmVjdHxzb2NrZXRfY3JlYXRlfHNvY2tldF9jcmVhdGVfbGlzdGVufHNvY2tldF9jcmVhdGVfcGFpcnxzb2NrZXRfZ2V0X29wdGlvbnxzb2NrZXRfZ2V0X3N0YXR1c3xzb2NrZXRfZ2V0cGVlcm5hbWV8c29ja2V0X2dldHNvY2tuYW1lfHNvY2tldF9sYXN0X2Vycm9yfHNvY2tldF9saXN0ZW58c29ja2V0X3JlYWR8c29ja2V0X3JlY3Z8c29ja2V0X3JlY3Zmcm9tfHNvY2tldF9zZWxlY3R8c29ja2V0X3NlbmR8c29ja2V0X3NlbmR0b3xzb2NrZXRfc2V0X2Jsb2NrfHNvY2tldF9zZXRfYmxvY2tpbmd8c29ja2V0X3NldF9ub25ibG9ja3xzb2NrZXRfc2V0X29wdGlvbnxzb2NrZXRfc2V0X3RpbWVvdXR8c29ja2V0X3NodXRkb3dufHNvY2tldF9zdHJlcnJvcnxzb2NrZXRfd3JpdGV8c29scl9nZXRfdmVyc2lvbnxzb2xyY2xpZW50fHNvbHJjbGllbnRleGNlcHRpb258c29scmRvY3VtZW50fHNvbHJkb2N1bWVudGZpZWxkfHNvbHJleGNlcHRpb258c29scmdlbmVyaWNyZXNwb25zZXxzb2xyaWxsZWdhbGFyZ3VtZW50ZXhjZXB0aW9ufHNvbHJpbGxlZ2Fsb3BlcmF0aW9uZXhjZXB0aW9ufHNvbHJpbnB1dGRvY3VtZW50fHNvbHJtb2RpZmlhYmxlcGFyYW1zfHNvbHJvYmplY3R8c29scnBhcmFtc3xzb2xycGluZ3Jlc3BvbnNlfHNvbHJxdWVyeXxzb2xycXVlcnlyZXNwb25zZXxzb2xycmVzcG9uc2V8c29scnVwZGF0ZXJlc3BvbnNlfHNvbHJ1dGlsc3xzb3J0fHNvdW5kZXh8c3BoaW54Y2xpZW50fHNwbF9hdXRvbG9hZHxzcGxfYXV0b2xvYWRfY2FsbHxzcGxfYXV0b2xvYWRfZXh0ZW5zaW9uc3xzcGxfYXV0b2xvYWRfZnVuY3Rpb25zfHNwbF9hdXRvbG9hZF9yZWdpc3RlcnxzcGxfYXV0b2xvYWRfdW5yZWdpc3RlcnxzcGxfY2xhc3Nlc3xzcGxfb2JqZWN0X2hhc2h8c3BsYm9vbHxzcGxkb3VibHlsaW5rZWRsaXN0fHNwbGVudW18c3BsZmlsZWluZm98c3BsZmlsZW9iamVjdHxzcGxmaXhlZGFycmF5fHNwbGZsb2F0fHNwbGhlYXB8c3BsaW50fHNwbGl0fHNwbGl0aXxzcGxtYXhoZWFwfHNwbG1pbmhlYXB8c3Bsb2JqZWN0c3RvcmFnZXxzcGxvYnNlcnZlcnxzcGxwcmlvcml0eXF1ZXVlfHNwbHF1ZXVlfHNwbHN0YWNrfHNwbHN0cmluZ3xzcGxzdWJqZWN0fHNwbHRlbXBmaWxlb2JqZWN0fHNwb29mY2hlY2tlcnxzcHJpbnRmfHNxbF9yZWdjYXNlfHNxbGl0ZTN8c3FsaXRlM3Jlc3VsdHxzcWxpdGUzc3RtdHxzcWxpdGVfYXJyYXlfcXVlcnl8c3FsaXRlX2J1c3lfdGltZW91dHxzcWxpdGVfY2hhbmdlc3xzcWxpdGVfY2xvc2V8c3FsaXRlX2NvbHVtbnxzcWxpdGVfY3JlYXRlX2FnZ3JlZ2F0ZXxzcWxpdGVfY3JlYXRlX2Z1bmN0aW9ufHNxbGl0ZV9jdXJyZW50fHNxbGl0ZV9lcnJvcl9zdHJpbmd8c3FsaXRlX2VzY2FwZV9zdHJpbmd8c3FsaXRlX2V4ZWN8c3FsaXRlX2ZhY3Rvcnl8c3FsaXRlX2ZldGNoX2FsbHxzcWxpdGVfZmV0Y2hfYXJyYXl8c3FsaXRlX2ZldGNoX2NvbHVtbl90eXBlc3xzcWxpdGVfZmV0Y2hfb2JqZWN0fHNxbGl0ZV9mZXRjaF9zaW5nbGV8c3FsaXRlX2ZldGNoX3N0cmluZ3xzcWxpdGVfZmllbGRfbmFtZXxzcWxpdGVfaGFzX21vcmV8c3FsaXRlX2hhc19wcmV2fHNxbGl0ZV9rZXl8c3FsaXRlX2xhc3RfZXJyb3J8c3FsaXRlX2xhc3RfaW5zZXJ0X3Jvd2lkfHNxbGl0ZV9saWJlbmNvZGluZ3xzcWxpdGVfbGlidmVyc2lvbnxzcWxpdGVfbmV4dHxzcWxpdGVfbnVtX2ZpZWxkc3xzcWxpdGVfbnVtX3Jvd3N8c3FsaXRlX29wZW58c3FsaXRlX3BvcGVufHNxbGl0ZV9wcmV2fHNxbGl0ZV9xdWVyeXxzcWxpdGVfcmV3aW5kfHNxbGl0ZV9zZWVrfHNxbGl0ZV9zaW5nbGVfcXVlcnl8c3FsaXRlX3VkZl9kZWNvZGVfYmluYXJ5fHNxbGl0ZV91ZGZfZW5jb2RlX2JpbmFyeXxzcWxpdGVfdW5idWZmZXJlZF9xdWVyeXxzcWxpdGVfdmFsaWR8c3FydHxzcmFuZHxzc2NhbmZ8c3NkZWVwX2Z1enp5X2NvbXBhcmV8c3NkZWVwX2Z1enp5X2hhc2h8c3NkZWVwX2Z1enp5X2hhc2hfZmlsZW5hbWV8c3NoMl9hdXRoX2hvc3RiYXNlZF9maWxlfHNzaDJfYXV0aF9ub25lfHNzaDJfYXV0aF9wYXNzd29yZHxzc2gyX2F1dGhfcHVia2V5X2ZpbGV8c3NoMl9jb25uZWN0fHNzaDJfZXhlY3xzc2gyX2ZldGNoX3N0cmVhbXxzc2gyX2ZpbmdlcnByaW50fHNzaDJfbWV0aG9kc19uZWdvdGlhdGVkfHNzaDJfcHVibGlja2V5X2FkZHxzc2gyX3B1YmxpY2tleV9pbml0fHNzaDJfcHVibGlja2V5X2xpc3R8c3NoMl9wdWJsaWNrZXlfcmVtb3ZlfHNzaDJfc2NwX3JlY3Z8c3NoMl9zY3Bfc2VuZHxzc2gyX3NmdHB8c3NoMl9zZnRwX2xzdGF0fHNzaDJfc2Z0cF9ta2Rpcnxzc2gyX3NmdHBfcmVhZGxpbmt8c3NoMl9zZnRwX3JlYWxwYXRofHNzaDJfc2Z0cF9yZW5hbWV8c3NoMl9zZnRwX3JtZGlyfHNzaDJfc2Z0cF9zdGF0fHNzaDJfc2Z0cF9zeW1saW5rfHNzaDJfc2Z0cF91bmxpbmt8c3NoMl9zaGVsbHxzc2gyX3R1bm5lbHxzdGF0fHN0YXRzX2Fic29sdXRlX2RldmlhdGlvbnxzdGF0c19jZGZfYmV0YXxzdGF0c19jZGZfYmlub21pYWx8c3RhdHNfY2RmX2NhdWNoeXxzdGF0c19jZGZfY2hpc3F1YXJlfHN0YXRzX2NkZl9leHBvbmVudGlhbHxzdGF0c19jZGZfZnxzdGF0c19jZGZfZ2FtbWF8c3RhdHNfY2RmX2xhcGxhY2V8c3RhdHNfY2RmX2xvZ2lzdGljfHN0YXRzX2NkZl9uZWdhdGl2ZV9iaW5vbWlhbHxzdGF0c19jZGZfbm9uY2VudHJhbF9jaGlzcXVhcmV8c3RhdHNfY2RmX25vbmNlbnRyYWxfZnxzdGF0c19jZGZfcG9pc3NvbnxzdGF0c19jZGZfdHxzdGF0c19jZGZfdW5pZm9ybXxzdGF0c19jZGZfd2VpYnVsbHxzdGF0c19jb3ZhcmlhbmNlfHN0YXRzX2Rlbl91bmlmb3JtfHN0YXRzX2RlbnNfYmV0YXxzdGF0c19kZW5zX2NhdWNoeXxzdGF0c19kZW5zX2NoaXNxdWFyZXxzdGF0c19kZW5zX2V4cG9uZW50aWFsfHN0YXRzX2RlbnNfZnxzdGF0c19kZW5zX2dhbW1hfHN0YXRzX2RlbnNfbGFwbGFjZXxzdGF0c19kZW5zX2xvZ2lzdGljfHN0YXRzX2RlbnNfbmVnYXRpdmVfYmlub21pYWx8c3RhdHNfZGVuc19ub3JtYWx8c3RhdHNfZGVuc19wbWZfYmlub21pYWx8c3RhdHNfZGVuc19wbWZfaHlwZXJnZW9tZXRyaWN8c3RhdHNfZGVuc19wbWZfcG9pc3NvbnxzdGF0c19kZW5zX3R8c3RhdHNfZGVuc193ZWlidWxsfHN0YXRzX2hhcm1vbmljX21lYW58c3RhdHNfa3VydG9zaXN8c3RhdHNfcmFuZF9nZW5fYmV0YXxzdGF0c19yYW5kX2dlbl9jaGlzcXVhcmV8c3RhdHNfcmFuZF9nZW5fZXhwb25lbnRpYWx8c3RhdHNfcmFuZF9nZW5fZnxzdGF0c19yYW5kX2dlbl9mdW5pZm9ybXxzdGF0c19yYW5kX2dlbl9nYW1tYXxzdGF0c19yYW5kX2dlbl9pYmlub21pYWx8c3RhdHNfcmFuZF9nZW5faWJpbm9taWFsX25lZ2F0aXZlfHN0YXRzX3JhbmRfZ2VuX2ludHxzdGF0c19yYW5kX2dlbl9pcG9pc3NvbnxzdGF0c19yYW5kX2dlbl9pdW5pZm9ybXxzdGF0c19yYW5kX2dlbl9ub25jZW5yYWxfY2hpc3F1YXJlfHN0YXRzX3JhbmRfZ2VuX25vbmNlbnRyYWxfZnxzdGF0c19yYW5kX2dlbl9ub25jZW50cmFsX3R8c3RhdHNfcmFuZF9nZW5fbm9ybWFsfHN0YXRzX3JhbmRfZ2VuX3R8c3RhdHNfcmFuZF9nZXRfc2VlZHN8c3RhdHNfcmFuZF9waHJhc2VfdG9fc2VlZHN8c3RhdHNfcmFuZF9yYW5mfHN0YXRzX3JhbmRfc2V0YWxsfHN0YXRzX3NrZXd8c3RhdHNfc3RhbmRhcmRfZGV2aWF0aW9ufHN0YXRzX3N0YXRfYmlub21pYWxfY29lZnxzdGF0c19zdGF0X2NvcnJlbGF0aW9ufHN0YXRzX3N0YXRfZ2VubmNofHN0YXRzX3N0YXRfaW5kZXBlbmRlbnRfdHxzdGF0c19zdGF0X2lubmVycHJvZHVjdHxzdGF0c19zdGF0X25vbmNlbnRyYWxfdHxzdGF0c19zdGF0X3BhaXJlZF90fHN0YXRzX3N0YXRfcGVyY2VudGlsZXxzdGF0c19zdGF0X3Bvd2Vyc3VtfHN0YXRzX3ZhcmlhbmNlfHN0b21wfHN0b21wX2Nvbm5lY3RfZXJyb3J8c3RvbXBfdmVyc2lvbnxzdG9tcGV4Y2VwdGlvbnxzdG9tcGZyYW1lfHN0cl9nZXRjc3Z8c3RyX2lyZXBsYWNlfHN0cl9wYWR8c3RyX3JlcGVhdHxzdHJfcmVwbGFjZXxzdHJfcm90MTN8c3RyX3NodWZmbGV8c3RyX3NwbGl0fHN0cl93b3JkX2NvdW50fHN0cmNhc2VjbXB8c3RyY2hyfHN0cmNtcHxzdHJjb2xsfHN0cmNzcG58c3RyZWFtX2J1Y2tldF9hcHBlbmR8c3RyZWFtX2J1Y2tldF9tYWtlX3dyaXRlYWJsZXxzdHJlYW1fYnVja2V0X25ld3xzdHJlYW1fYnVja2V0X3ByZXBlbmR8c3RyZWFtX2NvbnRleHRfY3JlYXRlfHN0cmVhbV9jb250ZXh0X2dldF9kZWZhdWx0fHN0cmVhbV9jb250ZXh0X2dldF9vcHRpb25zfHN0cmVhbV9jb250ZXh0X2dldF9wYXJhbXN8c3RyZWFtX2NvbnRleHRfc2V0X2RlZmF1bHR8c3RyZWFtX2NvbnRleHRfc2V0X29wdGlvbnxzdHJlYW1fY29udGV4dF9zZXRfcGFyYW1zfHN0cmVhbV9jb3B5X3RvX3N0cmVhbXxzdHJlYW1fZW5jb2Rpbmd8c3RyZWFtX2ZpbHRlcl9hcHBlbmR8c3RyZWFtX2ZpbHRlcl9wcmVwZW5kfHN0cmVhbV9maWx0ZXJfcmVnaXN0ZXJ8c3RyZWFtX2ZpbHRlcl9yZW1vdmV8c3RyZWFtX2dldF9jb250ZW50c3xzdHJlYW1fZ2V0X2ZpbHRlcnN8c3RyZWFtX2dldF9saW5lfHN0cmVhbV9nZXRfbWV0YV9kYXRhfHN0cmVhbV9nZXRfdHJhbnNwb3J0c3xzdHJlYW1fZ2V0X3dyYXBwZXJzfHN0cmVhbV9pc19sb2NhbHxzdHJlYW1fbm90aWZpY2F0aW9uX2NhbGxiYWNrfHN0cmVhbV9yZWdpc3Rlcl93cmFwcGVyfHN0cmVhbV9yZXNvbHZlX2luY2x1ZGVfcGF0aHxzdHJlYW1fc2VsZWN0fHN0cmVhbV9zZXRfYmxvY2tpbmd8c3RyZWFtX3NldF9yZWFkX2J1ZmZlcnxzdHJlYW1fc2V0X3RpbWVvdXR8c3RyZWFtX3NldF93cml0ZV9idWZmZXJ8c3RyZWFtX3NvY2tldF9hY2NlcHR8c3RyZWFtX3NvY2tldF9jbGllbnR8c3RyZWFtX3NvY2tldF9lbmFibGVfY3J5cHRvfHN0cmVhbV9zb2NrZXRfZ2V0X25hbWV8c3RyZWFtX3NvY2tldF9wYWlyfHN0cmVhbV9zb2NrZXRfcmVjdmZyb218c3RyZWFtX3NvY2tldF9zZW5kdG98c3RyZWFtX3NvY2tldF9zZXJ2ZXJ8c3RyZWFtX3NvY2tldF9zaHV0ZG93bnxzdHJlYW1fc3VwcG9ydHNfbG9ja3xzdHJlYW1fd3JhcHBlcl9yZWdpc3RlcnxzdHJlYW1fd3JhcHBlcl9yZXN0b3JlfHN0cmVhbV93cmFwcGVyX3VucmVnaXN0ZXJ8c3RyZWFtd3JhcHBlcnxzdHJmdGltZXxzdHJpcF90YWdzfHN0cmlwY3NsYXNoZXN8c3RyaXBvc3xzdHJpcHNsYXNoZXN8c3RyaXN0cnxzdHJsZW58c3RybmF0Y2FzZWNtcHxzdHJuYXRjbXB8c3RybmNhc2VjbXB8c3RybmNtcHxzdHJwYnJrfHN0cnBvc3xzdHJwdGltZXxzdHJyY2hyfHN0cnJldnxzdHJyaXBvc3xzdHJycG9zfHN0cnNwbnxzdHJzdHJ8c3RydG9rfHN0cnRvbG93ZXJ8c3RydG90aW1lfHN0cnRvdXBwZXJ8c3RydHJ8c3RydmFsfHN1YnN0cnxzdWJzdHJfY29tcGFyZXxzdWJzdHJfY291bnR8c3Vic3RyX3JlcGxhY2V8c3ZtfHN2bW1vZGVsfHN2bl9hZGR8c3ZuX2F1dGhfZ2V0X3BhcmFtZXRlcnxzdm5fYXV0aF9zZXRfcGFyYW1ldGVyfHN2bl9ibGFtZXxzdm5fY2F0fHN2bl9jaGVja291dHxzdm5fY2xlYW51cHxzdm5fY2xpZW50X3ZlcnNpb258c3ZuX2NvbW1pdHxzdm5fZGVsZXRlfHN2bl9kaWZmfHN2bl9leHBvcnR8c3ZuX2ZzX2Fib3J0X3R4bnxzdm5fZnNfYXBwbHlfdGV4dHxzdm5fZnNfYmVnaW5fdHhuMnxzdm5fZnNfY2hhbmdlX25vZGVfcHJvcHxzdm5fZnNfY2hlY2tfcGF0aHxzdm5fZnNfY29udGVudHNfY2hhbmdlZHxzdm5fZnNfY29weXxzdm5fZnNfZGVsZXRlfHN2bl9mc19kaXJfZW50cmllc3xzdm5fZnNfZmlsZV9jb250ZW50c3xzdm5fZnNfZmlsZV9sZW5ndGh8c3ZuX2ZzX2lzX2Rpcnxzdm5fZnNfaXNfZmlsZXxzdm5fZnNfbWFrZV9kaXJ8c3ZuX2ZzX21ha2VfZmlsZXxzdm5fZnNfbm9kZV9jcmVhdGVkX3Jldnxzdm5fZnNfbm9kZV9wcm9wfHN2bl9mc19wcm9wc19jaGFuZ2VkfHN2bl9mc19yZXZpc2lvbl9wcm9wfHN2bl9mc19yZXZpc2lvbl9yb290fHN2bl9mc190eG5fcm9vdHxzdm5fZnNfeW91bmdlc3RfcmV2fHN2bl9pbXBvcnR8c3ZuX2xvZ3xzdm5fbHN8c3ZuX21rZGlyfHN2bl9yZXBvc19jcmVhdGV8c3ZuX3JlcG9zX2ZzfHN2bl9yZXBvc19mc19iZWdpbl90eG5fZm9yX2NvbW1pdHxzdm5fcmVwb3NfZnNfY29tbWl0X3R4bnxzdm5fcmVwb3NfaG90Y29weXxzdm5fcmVwb3Nfb3Blbnxzdm5fcmVwb3NfcmVjb3Zlcnxzdm5fcmV2ZXJ0fHN2bl9zdGF0dXN8c3ZuX3VwZGF0ZXxzd2ZfYWN0aW9uZ2V0dXJsfHN3Zl9hY3Rpb25nb3RvZnJhbWV8c3dmX2FjdGlvbmdvdG9sYWJlbHxzd2ZfYWN0aW9ubmV4dGZyYW1lfHN3Zl9hY3Rpb25wbGF5fHN3Zl9hY3Rpb25wcmV2ZnJhbWV8c3dmX2FjdGlvbnNldHRhcmdldHxzd2ZfYWN0aW9uc3RvcHxzd2ZfYWN0aW9udG9nZ2xlcXVhbGl0eXxzd2ZfYWN0aW9ud2FpdGZvcmZyYW1lfHN3Zl9hZGRidXR0b25yZWNvcmR8c3dmX2FkZGNvbG9yfHN3Zl9jbG9zZWZpbGV8c3dmX2RlZmluZWJpdG1hcHxzd2ZfZGVmaW5lZm9udHxzd2ZfZGVmaW5lbGluZXxzd2ZfZGVmaW5lcG9seXxzd2ZfZGVmaW5lcmVjdHxzd2ZfZGVmaW5ldGV4dHxzd2ZfZW5kYnV0dG9ufHN3Zl9lbmRkb2FjdGlvbnxzd2ZfZW5kc2hhcGV8c3dmX2VuZHN5bWJvbHxzd2ZfZm9udHNpemV8c3dmX2ZvbnRzbGFudHxzd2ZfZm9udHRyYWNraW5nfHN3Zl9nZXRiaXRtYXBpbmZvfHN3Zl9nZXRmb250aW5mb3xzd2ZfZ2V0ZnJhbWV8c3dmX2xhYmVsZnJhbWV8c3dmX2xvb2thdHxzd2ZfbW9kaWZ5b2JqZWN0fHN3Zl9tdWxjb2xvcnxzd2ZfbmV4dGlkfHN3Zl9vbmNvbmRpdGlvbnxzd2Zfb3BlbmZpbGV8c3dmX29ydGhvfHN3Zl9vcnRobzJ8c3dmX3BlcnNwZWN0aXZlfHN3Zl9wbGFjZW9iamVjdHxzd2ZfcG9sYXJ2aWV3fHN3Zl9wb3BtYXRyaXh8c3dmX3Bvc3JvdW5kfHN3Zl9wdXNobWF0cml4fHN3Zl9yZW1vdmVvYmplY3R8c3dmX3JvdGF0ZXxzd2Zfc2NhbGV8c3dmX3NldGZvbnR8c3dmX3NldGZyYW1lfHN3Zl9zaGFwZWFyY3xzd2Zfc2hhcGVjdXJ2ZXRvfHN3Zl9zaGFwZWN1cnZldG8zfHN3Zl9zaGFwZWZpbGxiaXRtYXBjbGlwfHN3Zl9zaGFwZWZpbGxiaXRtYXB0aWxlfHN3Zl9zaGFwZWZpbGxvZmZ8c3dmX3NoYXBlZmlsbHNvbGlkfHN3Zl9zaGFwZWxpbmVzb2xpZHxzd2Zfc2hhcGVsaW5ldG98c3dmX3NoYXBlbW92ZXRvfHN3Zl9zaG93ZnJhbWV8c3dmX3N0YXJ0YnV0dG9ufHN3Zl9zdGFydGRvYWN0aW9ufHN3Zl9zdGFydHNoYXBlfHN3Zl9zdGFydHN5bWJvbHxzd2ZfdGV4dHdpZHRofHN3Zl90cmFuc2xhdGV8c3dmX3ZpZXdwb3J0fHN3ZmFjdGlvbnxzd2ZiaXRtYXB8c3dmYnV0dG9ufHN3ZmRpc3BsYXlpdGVtfHN3ZmZpbGx8c3dmZm9udHxzd2Zmb250Y2hhcnxzd2ZncmFkaWVudHxzd2Ztb3JwaHxzd2Ztb3ZpZXxzd2ZwcmVidWlsdGNsaXB8c3dmc2hhcGV8c3dmc291bmR8c3dmc291bmRpbnN0YW5jZXxzd2ZzcHJpdGV8c3dmdGV4dHxzd2Z0ZXh0ZmllbGR8c3dmdmlkZW9zdHJlYW18c3dpc2hfY29uc3RydWN0fHN3aXNoX2dldG1ldGFsaXN0fHN3aXNoX2dldHByb3BlcnR5bGlzdHxzd2lzaF9wcmVwYXJlfHN3aXNoX3F1ZXJ5fHN3aXNocmVzdWx0X2dldG1ldGFsaXN0fHN3aXNocmVzdWx0X3N0ZW18c3dpc2hyZXN1bHRzX2dldHBhcnNlZHdvcmRzfHN3aXNocmVzdWx0c19nZXRyZW1vdmVkc3RvcHdvcmRzfHN3aXNocmVzdWx0c19uZXh0cmVzdWx0fHN3aXNocmVzdWx0c19zZWVrcmVzdWx0fHN3aXNoc2VhcmNoX2V4ZWN1dGV8c3dpc2hzZWFyY2hfcmVzZXRsaW1pdHxzd2lzaHNlYXJjaF9zZXRsaW1pdHxzd2lzaHNlYXJjaF9zZXRwaHJhc2VkZWxpbWl0ZXJ8c3dpc2hzZWFyY2hfc2V0c29ydHxzd2lzaHNlYXJjaF9zZXRzdHJ1Y3R1cmV8c3liYXNlX2FmZmVjdGVkX3Jvd3N8c3liYXNlX2Nsb3NlfHN5YmFzZV9jb25uZWN0fHN5YmFzZV9kYXRhX3NlZWt8c3liYXNlX2RlYWRsb2NrX3JldHJ5X2NvdW50fHN5YmFzZV9mZXRjaF9hcnJheXxzeWJhc2VfZmV0Y2hfYXNzb2N8c3liYXNlX2ZldGNoX2ZpZWxkfHN5YmFzZV9mZXRjaF9vYmplY3R8c3liYXNlX2ZldGNoX3Jvd3xzeWJhc2VfZmllbGRfc2Vla3xzeWJhc2VfZnJlZV9yZXN1bHR8c3liYXNlX2dldF9sYXN0X21lc3NhZ2V8c3liYXNlX21pbl9jbGllbnRfc2V2ZXJpdHl8c3liYXNlX21pbl9lcnJvcl9zZXZlcml0eXxzeWJhc2VfbWluX21lc3NhZ2Vfc2V2ZXJpdHl8c3liYXNlX21pbl9zZXJ2ZXJfc2V2ZXJpdHl8c3liYXNlX251bV9maWVsZHN8c3liYXNlX251bV9yb3dzfHN5YmFzZV9wY29ubmVjdHxzeWJhc2VfcXVlcnl8c3liYXNlX3Jlc3VsdHxzeWJhc2Vfc2VsZWN0X2RifHN5YmFzZV9zZXRfbWVzc2FnZV9oYW5kbGVyfHN5YmFzZV91bmJ1ZmZlcmVkX3F1ZXJ5fHN5bWxpbmt8c3lzX2dldF90ZW1wX2RpcnxzeXNfZ2V0bG9hZGF2Z3xzeXNsb2d8c3lzdGVtfHRhZ3x0YW58dGFuaHx0Y3B3cmFwX2NoZWNrfHRlbXBuYW18dGV4dGRvbWFpbnx0aWR5fHRpZHlfYWNjZXNzX2NvdW50fHRpZHlfY29uZmlnX2NvdW50fHRpZHlfZGlhZ25vc2V8dGlkeV9lcnJvcl9jb3VudHx0aWR5X2dldF9lcnJvcl9idWZmZXJ8dGlkeV9nZXRfb3V0cHV0fHRpZHlfbG9hZF9jb25maWd8dGlkeV9yZXNldF9jb25maWd8dGlkeV9zYXZlX2NvbmZpZ3x0aWR5X3NldF9lbmNvZGluZ3x0aWR5X3NldG9wdHx0aWR5X3dhcm5pbmdfY291bnR8dGlkeW5vZGV8dGltZXx0aW1lX25hbm9zbGVlcHx0aW1lX3NsZWVwX3VudGlsfHRpbWV6b25lX2FiYnJldmlhdGlvbnNfbGlzdHx0aW1lem9uZV9pZGVudGlmaWVyc19saXN0fHRpbWV6b25lX2xvY2F0aW9uX2dldHx0aW1lem9uZV9uYW1lX2Zyb21fYWJicnx0aW1lem9uZV9uYW1lX2dldHx0aW1lem9uZV9vZmZzZXRfZ2V0fHRpbWV6b25lX29wZW58dGltZXpvbmVfdHJhbnNpdGlvbnNfZ2V0fHRpbWV6b25lX3ZlcnNpb25fZ2V0fHRtcGZpbGV8dG9rZW5fZ2V0X2FsbHx0b2tlbl9uYW1lfHRva3lvdHlyYW50fHRva3lvdHlyYW50cXVlcnl8dG9reW90eXJhbnR0YWJsZXx0b3N0cmluZ3x0b3N0cmluZ3x0b3VjaHx0cmFuc2xpdGVyYXRvcnx0cmF2ZXJzYWJsZXx0cmlnZ2VyX2Vycm9yfHRyaW18dWFzb3J0fHVjZmlyc3R8dWN3b3Jkc3x1ZG1fYWRkX3NlYXJjaF9saW1pdHx1ZG1fYWxsb2NfYWdlbnR8dWRtX2FsbG9jX2FnZW50X2FycmF5fHVkbV9hcGlfdmVyc2lvbnx1ZG1fY2F0X2xpc3R8dWRtX2NhdF9wYXRofHVkbV9jaGVja19jaGFyc2V0fHVkbV9jaGVja19zdG9yZWR8dWRtX2NsZWFyX3NlYXJjaF9saW1pdHN8dWRtX2Nsb3NlX3N0b3JlZHx1ZG1fY3JjMzJ8dWRtX2Vycm5vfHVkbV9lcnJvcnx1ZG1fZmluZHx1ZG1fZnJlZV9hZ2VudHx1ZG1fZnJlZV9pc3BlbGxfZGF0YXx1ZG1fZnJlZV9yZXN8dWRtX2dldF9kb2NfY291bnR8dWRtX2dldF9yZXNfZmllbGR8dWRtX2dldF9yZXNfcGFyYW18dWRtX2hhc2gzMnx1ZG1fbG9hZF9pc3BlbGxfZGF0YXx1ZG1fb3Blbl9zdG9yZWR8dWRtX3NldF9hZ2VudF9wYXJhbXx1a3NvcnR8dW1hc2t8dW5kZXJmbG93ZXhjZXB0aW9ufHVuZXhwZWN0ZWR2YWx1ZWV4Y2VwdGlvbnx1bmlxaWR8dW5peHRvamR8dW5saW5rfHVucGFja3x1bnJlZ2lzdGVyX3RpY2tfZnVuY3Rpb258dW5zZXJpYWxpemV8dW5zZXR8dXJsZGVjb2RlfHVybGVuY29kZXx1c2Vfc29hcF9lcnJvcl9oYW5kbGVyfHVzZXJfZXJyb3J8dXNsZWVwfHVzb3J0fHV0ZjhfZGVjb2RlfHV0ZjhfZW5jb2RlfHY4anN8djhqc2V4Y2VwdGlvbnx2YXJfZHVtcHx2YXJfZXhwb3J0fHZhcmlhbnR8dmFyaWFudF9hYnN8dmFyaWFudF9hZGR8dmFyaWFudF9hbmR8dmFyaWFudF9jYXN0fHZhcmlhbnRfY2F0fHZhcmlhbnRfY21wfHZhcmlhbnRfZGF0ZV9mcm9tX3RpbWVzdGFtcHx2YXJpYW50X2RhdGVfdG9fdGltZXN0YW1wfHZhcmlhbnRfZGl2fHZhcmlhbnRfZXF2fHZhcmlhbnRfZml4fHZhcmlhbnRfZ2V0X3R5cGV8dmFyaWFudF9pZGl2fHZhcmlhbnRfaW1wfHZhcmlhbnRfaW50fHZhcmlhbnRfbW9kfHZhcmlhbnRfbXVsfHZhcmlhbnRfbmVnfHZhcmlhbnRfbm90fHZhcmlhbnRfb3J8dmFyaWFudF9wb3d8dmFyaWFudF9yb3VuZHx2YXJpYW50X3NldHx2YXJpYW50X3NldF90eXBlfHZhcmlhbnRfc3VifHZhcmlhbnRfeG9yfHZlcnNpb25fY29tcGFyZXx2ZnByaW50Znx2aXJ0dWFsfHZwb3BtYWlsX2FkZF9hbGlhc19kb21haW58dnBvcG1haWxfYWRkX2FsaWFzX2RvbWFpbl9leHx2cG9wbWFpbF9hZGRfZG9tYWlufHZwb3BtYWlsX2FkZF9kb21haW5fZXh8dnBvcG1haWxfYWRkX3VzZXJ8dnBvcG1haWxfYWxpYXNfYWRkfHZwb3BtYWlsX2FsaWFzX2RlbHx2cG9wbWFpbF9hbGlhc19kZWxfZG9tYWlufHZwb3BtYWlsX2FsaWFzX2dldHx2cG9wbWFpbF9hbGlhc19nZXRfYWxsfHZwb3BtYWlsX2F1dGhfdXNlcnx2cG9wbWFpbF9kZWxfZG9tYWlufHZwb3BtYWlsX2RlbF9kb21haW5fZXh8dnBvcG1haWxfZGVsX3VzZXJ8dnBvcG1haWxfZXJyb3J8dnBvcG1haWxfcGFzc3dkfHZwb3BtYWlsX3NldF91c2VyX3F1b3RhfHZwcmludGZ8dnNwcmludGZ8dzMyYXBpX2RlZnR5cGV8dzMyYXBpX2luaXRfZHR5cGV8dzMyYXBpX2ludm9rZV9mdW5jdGlvbnx3MzJhcGlfcmVnaXN0ZXJfZnVuY3Rpb258dzMyYXBpX3NldF9jYWxsX21ldGhvZHx3ZGR4X2FkZF92YXJzfHdkZHhfZGVzZXJpYWxpemV8d2RkeF9wYWNrZXRfZW5kfHdkZHhfcGFja2V0X3N0YXJ0fHdkZHhfc2VyaWFsaXplX3ZhbHVlfHdkZHhfc2VyaWFsaXplX3ZhcnN8d2luMzJfY29udGludWVfc2VydmljZXx3aW4zMl9jcmVhdGVfc2VydmljZXx3aW4zMl9kZWxldGVfc2VydmljZXx3aW4zMl9nZXRfbGFzdF9jb250cm9sX21lc3NhZ2V8d2luMzJfcGF1c2Vfc2VydmljZXx3aW4zMl9wc19saXN0X3Byb2NzfHdpbjMyX3BzX3N0YXRfbWVtfHdpbjMyX3BzX3N0YXRfcHJvY3x3aW4zMl9xdWVyeV9zZXJ2aWNlX3N0YXR1c3x3aW4zMl9zZXRfc2VydmljZV9zdGF0dXN8d2luMzJfc3RhcnRfc2VydmljZXx3aW4zMl9zdGFydF9zZXJ2aWNlX2N0cmxfZGlzcGF0Y2hlcnx3aW4zMl9zdG9wX3NlcnZpY2V8d2luY2FjaGVfZmNhY2hlX2ZpbGVpbmZvfHdpbmNhY2hlX2ZjYWNoZV9tZW1pbmZvfHdpbmNhY2hlX2xvY2t8d2luY2FjaGVfb2NhY2hlX2ZpbGVpbmZvfHdpbmNhY2hlX29jYWNoZV9tZW1pbmZvfHdpbmNhY2hlX3JlZnJlc2hfaWZfY2hhbmdlZHx3aW5jYWNoZV9ycGxpc3RfZmlsZWluZm98d2luY2FjaGVfcnBsaXN0X21lbWluZm98d2luY2FjaGVfc2NhY2hlX2luZm98d2luY2FjaGVfc2NhY2hlX21lbWluZm98d2luY2FjaGVfdWNhY2hlX2FkZHx3aW5jYWNoZV91Y2FjaGVfY2FzfHdpbmNhY2hlX3VjYWNoZV9jbGVhcnx3aW5jYWNoZV91Y2FjaGVfZGVjfHdpbmNhY2hlX3VjYWNoZV9kZWxldGV8d2luY2FjaGVfdWNhY2hlX2V4aXN0c3x3aW5jYWNoZV91Y2FjaGVfZ2V0fHdpbmNhY2hlX3VjYWNoZV9pbmN8d2luY2FjaGVfdWNhY2hlX2luZm98d2luY2FjaGVfdWNhY2hlX21lbWluZm98d2luY2FjaGVfdWNhY2hlX3NldHx3aW5jYWNoZV91bmxvY2t8d29yZHdyYXB8eGF0dHJfZ2V0fHhhdHRyX2xpc3R8eGF0dHJfcmVtb3ZlfHhhdHRyX3NldHx4YXR0cl9zdXBwb3J0ZWR8eGRpZmZfZmlsZV9iZGlmZnx4ZGlmZl9maWxlX2JkaWZmX3NpemV8eGRpZmZfZmlsZV9icGF0Y2h8eGRpZmZfZmlsZV9kaWZmfHhkaWZmX2ZpbGVfZGlmZl9iaW5hcnl8eGRpZmZfZmlsZV9tZXJnZTN8eGRpZmZfZmlsZV9wYXRjaHx4ZGlmZl9maWxlX3BhdGNoX2JpbmFyeXx4ZGlmZl9maWxlX3JhYmRpZmZ8eGRpZmZfc3RyaW5nX2JkaWZmfHhkaWZmX3N0cmluZ19iZGlmZl9zaXplfHhkaWZmX3N0cmluZ19icGF0Y2h8eGRpZmZfc3RyaW5nX2RpZmZ8eGRpZmZfc3RyaW5nX2RpZmZfYmluYXJ5fHhkaWZmX3N0cmluZ19tZXJnZTN8eGRpZmZfc3RyaW5nX3BhdGNofHhkaWZmX3N0cmluZ19wYXRjaF9iaW5hcnl8eGRpZmZfc3RyaW5nX3JhYmRpZmZ8eGhwcm9mX2Rpc2FibGV8eGhwcm9mX2VuYWJsZXx4aHByb2Zfc2FtcGxlX2Rpc2FibGV8eGhwcm9mX3NhbXBsZV9lbmFibGV8eG1sX2Vycm9yX3N0cmluZ3x4bWxfZ2V0X2N1cnJlbnRfYnl0ZV9pbmRleHx4bWxfZ2V0X2N1cnJlbnRfY29sdW1uX251bWJlcnx4bWxfZ2V0X2N1cnJlbnRfbGluZV9udW1iZXJ8eG1sX2dldF9lcnJvcl9jb2RlfHhtbF9wYXJzZXx4bWxfcGFyc2VfaW50b19zdHJ1Y3R8eG1sX3BhcnNlcl9jcmVhdGV8eG1sX3BhcnNlcl9jcmVhdGVfbnN8eG1sX3BhcnNlcl9mcmVlfHhtbF9wYXJzZXJfZ2V0X29wdGlvbnx4bWxfcGFyc2VyX3NldF9vcHRpb258eG1sX3NldF9jaGFyYWN0ZXJfZGF0YV9oYW5kbGVyfHhtbF9zZXRfZGVmYXVsdF9oYW5kbGVyfHhtbF9zZXRfZWxlbWVudF9oYW5kbGVyfHhtbF9zZXRfZW5kX25hbWVzcGFjZV9kZWNsX2hhbmRsZXJ8eG1sX3NldF9leHRlcm5hbF9lbnRpdHlfcmVmX2hhbmRsZXJ8eG1sX3NldF9ub3RhdGlvbl9kZWNsX2hhbmRsZXJ8eG1sX3NldF9vYmplY3R8eG1sX3NldF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX2hhbmRsZXJ8eG1sX3NldF9zdGFydF9uYW1lc3BhY2VfZGVjbF9oYW5kbGVyfHhtbF9zZXRfdW5wYXJzZWRfZW50aXR5X2RlY2xfaGFuZGxlcnx4bWxyZWFkZXJ8eG1scnBjX2RlY29kZXx4bWxycGNfZGVjb2RlX3JlcXVlc3R8eG1scnBjX2VuY29kZXx4bWxycGNfZW5jb2RlX3JlcXVlc3R8eG1scnBjX2dldF90eXBlfHhtbHJwY19pc19mYXVsdHx4bWxycGNfcGFyc2VfbWV0aG9kX2Rlc2NyaXB0aW9uc3x4bWxycGNfc2VydmVyX2FkZF9pbnRyb3NwZWN0aW9uX2RhdGF8eG1scnBjX3NlcnZlcl9jYWxsX21ldGhvZHx4bWxycGNfc2VydmVyX2NyZWF0ZXx4bWxycGNfc2VydmVyX2Rlc3Ryb3l8eG1scnBjX3NlcnZlcl9yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2NhbGxiYWNrfHhtbHJwY19zZXJ2ZXJfcmVnaXN0ZXJfbWV0aG9kfHhtbHJwY19zZXRfdHlwZXx4bWx3cml0ZXJfZW5kX2F0dHJpYnV0ZXx4bWx3cml0ZXJfZW5kX2NkYXRhfHhtbHdyaXRlcl9lbmRfY29tbWVudHx4bWx3cml0ZXJfZW5kX2RvY3VtZW50fHhtbHdyaXRlcl9lbmRfZHRkfHhtbHdyaXRlcl9lbmRfZHRkX2F0dGxpc3R8eG1sd3JpdGVyX2VuZF9kdGRfZWxlbWVudHx4bWx3cml0ZXJfZW5kX2R0ZF9lbnRpdHl8eG1sd3JpdGVyX2VuZF9lbGVtZW50fHhtbHdyaXRlcl9lbmRfcGl8eG1sd3JpdGVyX2ZsdXNofHhtbHdyaXRlcl9mdWxsX2VuZF9lbGVtZW50fHhtbHdyaXRlcl9vcGVuX21lbW9yeXx4bWx3cml0ZXJfb3Blbl91cml8eG1sd3JpdGVyX291dHB1dF9tZW1vcnl8eG1sd3JpdGVyX3NldF9pbmRlbnR8eG1sd3JpdGVyX3NldF9pbmRlbnRfc3RyaW5nfHhtbHdyaXRlcl9zdGFydF9hdHRyaWJ1dGV8eG1sd3JpdGVyX3N0YXJ0X2F0dHJpYnV0ZV9uc3x4bWx3cml0ZXJfc3RhcnRfY2RhdGF8eG1sd3JpdGVyX3N0YXJ0X2NvbW1lbnR8eG1sd3JpdGVyX3N0YXJ0X2RvY3VtZW50fHhtbHdyaXRlcl9zdGFydF9kdGR8eG1sd3JpdGVyX3N0YXJ0X2R0ZF9hdHRsaXN0fHhtbHdyaXRlcl9zdGFydF9kdGRfZWxlbWVudHx4bWx3cml0ZXJfc3RhcnRfZHRkX2VudGl0eXx4bWx3cml0ZXJfc3RhcnRfZWxlbWVudHx4bWx3cml0ZXJfc3RhcnRfZWxlbWVudF9uc3x4bWx3cml0ZXJfc3RhcnRfcGl8eG1sd3JpdGVyX3RleHR8eG1sd3JpdGVyX3dyaXRlX2F0dHJpYnV0ZXx4bWx3cml0ZXJfd3JpdGVfYXR0cmlidXRlX25zfHhtbHdyaXRlcl93cml0ZV9jZGF0YXx4bWx3cml0ZXJfd3JpdGVfY29tbWVudHx4bWx3cml0ZXJfd3JpdGVfZHRkfHhtbHdyaXRlcl93cml0ZV9kdGRfYXR0bGlzdHx4bWx3cml0ZXJfd3JpdGVfZHRkX2VsZW1lbnR8eG1sd3JpdGVyX3dyaXRlX2R0ZF9lbnRpdHl8eG1sd3JpdGVyX3dyaXRlX2VsZW1lbnR8eG1sd3JpdGVyX3dyaXRlX2VsZW1lbnRfbnN8eG1sd3JpdGVyX3dyaXRlX3BpfHhtbHdyaXRlcl93cml0ZV9yYXd8eHBhdGhfZXZhbHx4cGF0aF9ldmFsX2V4cHJlc3Npb258eHBhdGhfbmV3X2NvbnRleHR8eHBhdGhfcmVnaXN0ZXJfbnN8eHBhdGhfcmVnaXN0ZXJfbnNfYXV0b3x4cHRyX2V2YWx8eHB0cl9uZXdfY29udGV4dHx4c2x0X2JhY2tlbmRfaW5mb3x4c2x0X2JhY2tlbmRfbmFtZXx4c2x0X2JhY2tlbmRfdmVyc2lvbnx4c2x0X2NyZWF0ZXx4c2x0X2Vycm5vfHhzbHRfZXJyb3J8eHNsdF9mcmVlfHhzbHRfZ2V0b3B0fHhzbHRfcHJvY2Vzc3x4c2x0X3NldF9iYXNlfHhzbHRfc2V0X2VuY29kaW5nfHhzbHRfc2V0X2Vycm9yX2hhbmRsZXJ8eHNsdF9zZXRfbG9nfHhzbHRfc2V0X29iamVjdHx4c2x0X3NldF9zYXhfaGFuZGxlcnx4c2x0X3NldF9zYXhfaGFuZGxlcnN8eHNsdF9zZXRfc2NoZW1lX2hhbmRsZXJ8eHNsdF9zZXRfc2NoZW1lX2hhbmRsZXJzfHhzbHRfc2V0b3B0fHhzbHRwcm9jZXNzb3J8eWFtbF9lbWl0fHlhbWxfZW1pdF9maWxlfHlhbWxfcGFyc2V8eWFtbF9wYXJzZV9maWxlfHlhbWxfcGFyc2VfdXJsfHlhel9hZGRpbmZvfHlhel9jY2xfY29uZnx5YXpfY2NsX3BhcnNlfHlhel9jbG9zZXx5YXpfY29ubmVjdHx5YXpfZGF0YWJhc2V8eWF6X2VsZW1lbnR8eWF6X2Vycm5vfHlhel9lcnJvcnx5YXpfZXN8eWF6X2VzX3Jlc3VsdHx5YXpfZ2V0X29wdGlvbnx5YXpfaGl0c3x5YXpfaXRlbW9yZGVyfHlhel9wcmVzZW50fHlhel9yYW5nZXx5YXpfcmVjb3JkfHlhel9zY2FufHlhel9zY2FuX3Jlc3VsdHx5YXpfc2NoZW1hfHlhel9zZWFyY2h8eWF6X3NldF9vcHRpb258eWF6X3NvcnR8eWF6X3N5bnRheHx5YXpfd2FpdHx5cF9hbGx8eXBfY2F0fHlwX2Vycl9zdHJpbmd8eXBfZXJybm98eXBfZmlyc3R8eXBfZ2V0X2RlZmF1bHRfZG9tYWlufHlwX21hc3Rlcnx5cF9tYXRjaHx5cF9uZXh0fHlwX29yZGVyfHplbmRfbG9nb19ndWlkfHplbmRfdGhyZWFkX2lkfHplbmRfdmVyc2lvbnx6aXBfY2xvc2V8emlwX2VudHJ5X2Nsb3NlfHppcF9lbnRyeV9jb21wcmVzc2Vkc2l6ZXx6aXBfZW50cnlfY29tcHJlc3Npb25tZXRob2R8emlwX2VudHJ5X2ZpbGVzaXplfHppcF9lbnRyeV9uYW1lfHppcF9lbnRyeV9vcGVufHppcF9lbnRyeV9yZWFkfHppcF9vcGVufHppcF9yZWFkfHppcGFyY2hpdmV8emlwYXJjaGl2ZV9hZGRlbXB0eWRpcnx6aXBhcmNoaXZlX2FkZGZpbGV8emlwYXJjaGl2ZV9hZGRmcm9tc3RyaW5nfHppcGFyY2hpdmVfY2xvc2V8emlwYXJjaGl2ZV9kZWxldGVpbmRleHx6aXBhcmNoaXZlX2RlbGV0ZW5hbWV8emlwYXJjaGl2ZV9leHRyYWN0dG98emlwYXJjaGl2ZV9nZXRhcmNoaXZlY29tbWVudHx6aXBhcmNoaXZlX2dldGNvbW1lbnRpbmRleHx6aXBhcmNoaXZlX2dldGNvbW1lbnRuYW1lfHppcGFyY2hpdmVfZ2V0ZnJvbWluZGV4fHppcGFyY2hpdmVfZ2V0ZnJvbW5hbWV8emlwYXJjaGl2ZV9nZXRuYW1laW5kZXh8emlwYXJjaGl2ZV9nZXRzdGF0dXNzdHJpbmd8emlwYXJjaGl2ZV9nZXRzdHJlYW18emlwYXJjaGl2ZV9sb2NhdGVuYW1lfHppcGFyY2hpdmVfb3Blbnx6aXBhcmNoaXZlX3JlbmFtZWluZGV4fHppcGFyY2hpdmVfcmVuYW1lbmFtZXx6aXBhcmNoaXZlX3NldENvbW1lbnROYW1lfHppcGFyY2hpdmVfc2V0YXJjaGl2ZWNvbW1lbnR8emlwYXJjaGl2ZV9zZXRjb21tZW50aW5kZXh8emlwYXJjaGl2ZV9zdGF0aW5kZXh8emlwYXJjaGl2ZV9zdGF0bmFtZXx6aXBhcmNoaXZlX3VuY2hhbmdlYWxsfHppcGFyY2hpdmVfdW5jaGFuZ2VhcmNoaXZlfHppcGFyY2hpdmVfdW5jaGFuZ2VpbmRleHx6aXBhcmNoaXZlX3VuY2hhbmdlbmFtZXx6bGliX2dldF9jb2RpbmdfdHlwZSIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoImFic3RyYWN0fGFuZHxhcnJheXxhc3xicmVha3xjYXNlfGNhdGNofGNsYXNzfGNsb25lfGNvbnN0fGNvbnRpbnVlfGRlY2xhcmV8ZGVmYXVsdHxkb3xlbHNlfGVsc2VpZnxlbmRkZWNsYXJlfGVuZGZvcnxlbmRmb3JlYWNofGVuZGlmfGVuZHN3aXRjaHxlbmR3aGlsZXxleHRlbmRzfGZpbmFsfGZvcnxmb3JlYWNofGZ1bmN0aW9ufGdsb2JhbHxnb3RvfGlmfGltcGxlbWVudHN8aW50ZXJmYWNlfGluc3RhbmNlb2Z8bmFtZXNwYWNlfG5ld3xvcnxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8c3RhdGljfHN3aXRjaHx0aHJvd3x0cnl8dXNlfHZhcnx3aGlsZXx4b3IiLnNwbGl0KCJ8IikpLGQ9ZS5hcnJheVRvTWFwKCJkaWV8ZWNob3xlbXB0eXxleGl0fGV2YWx8aW5jbHVkZXxpbmNsdWRlX29uY2V8aXNzZXR8bGlzdHxyZXF1aXJlfHJlcXVpcmVfb25jZXxyZXR1cm58cHJpbnR8dW5zZXQiLnNwbGl0KCJ8IikpLGc9ZS5hcnJheVRvTWFwKCJ0cnVlfGZhbHNlfG51bGx8X19DTEFTU19ffF9fRElSX198X19GSUxFX198X19MSU5FX198X19NRVRIT0RfX3xfX0ZVTkNUSU9OX198X19OQU1FU1BBQ0VfXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoIiRHTE9CQUxTfCRfU0VSVkVSfCRfR0VUfCRfUE9TVHwkX0ZJTEVTfCRfUkVRVUVTVHwkX1NFU1NJT058JF9FTlZ8JF9DT09LSUV8JHBocF9lcnJvcm1zZ3wkSFRUUF9SQVdfUE9TVF9EQVRBfCRodHRwX3Jlc3BvbnNlX2hlYWRlcnwkYXJnY3wkYXJndiIuc3BsaXQoInwiKSksaT1lLmFycmF5VG9NYXAoImtleV9leGlzdHN8Y2Fpcm9fbWF0cml4X2NyZWF0ZV9zY2FsZXxjYWlyb19tYXRyaXhfY3JlYXRlX3RyYW5zbGF0ZXxjYWxsX3VzZXJfbWV0aG9kfGNhbGxfdXNlcl9tZXRob2RfYXJyYXl8Y29tX2FkZHJlZnxjb21fZ2V0fGNvbV9pbnZva2V8Y29tX2lzZW51bXxjb21fbG9hZHxjb21fcmVsZWFzZXxjb21fc2V0fGNvbm5lY3Rpb25fdGltZW91dHxjdWJyaWRfbG9hZF9mcm9tX2dsb3xjdWJyaWRfbmV3X2dsb3xjdWJyaWRfc2F2ZV90b19nbG98Y3VicmlkX3NlbmRfZ2xvfGRlZmluZV9zeXNsb2dfdmFyaWFibGVzfGRsfGVyZWd8ZXJlZ19yZXBsYWNlfGVyZWdpfGVyZWdpX3JlcGxhY2V8aHdfZG9jdW1lbnRhdHRyaWJ1dGVzfGh3X2RvY3VtZW50Ym9keXRhZ3xod19kb2N1bWVudHNpemV8aHdfb3V0cHV0ZG9jdW1lbnR8aW1hZ2VkYXNoZWRsaW5lfG1heGRiX2JpbmRfcGFyYW18bWF4ZGJfYmluZF9yZXN1bHR8bWF4ZGJfY2xpZW50X2VuY29kaW5nfG1heGRiX2Nsb3NlX2xvbmdfZGF0YXxtYXhkYl9leGVjdXRlfG1heGRiX2ZldGNofG1heGRiX2dldF9tZXRhZGF0YXxtYXhkYl9wYXJhbV9jb3VudHxtYXhkYl9zZW5kX2xvbmdfZGF0YXxtY3J5cHRfZWNifG1jcnlwdF9nZW5lcmljX2VuZHxtaW1lX2NvbnRlbnRfdHlwZXxteXNxbF9jcmVhdGVkYnxteXNxbF9kYm5hbWV8bXlzcWxfZGJfcXVlcnl8bXlzcWxfZHJvcF9kYnxteXNxbF9kcm9wZGJ8bXlzcWxfZXNjYXBlX3N0cmluZ3xteXNxbF9maWVsZGZsYWdzfG15c3FsX2ZpZWxkZmxhZ3N8bXlzcWxfZmllbGRuYW1lfG15c3FsX2ZpZWxkdGFibGV8bXlzcWxfZmllbGR0eXBlfG15c3FsX2ZyZWVyZXN1bHR8bXlzcWxfbGlzdGRic3xteXNxbF9saXN0X2ZpZWxkc3xteXNxbF9saXN0ZmllbGRzfG15c3FsX2xpc3RfdGFibGVzfG15c3FsX2xpc3R0YWJsZXN8bXlzcWxfbnVtZmllbGRzfG15c3FsX251bXJvd3N8bXlzcWxfc2VsZWN0ZGJ8bXlzcWxfdGFibGVuYW1lfG15c3FsaV9iaW5kX3BhcmFtfG15c3FsaV9iaW5kX3Jlc3VsdHxteXNxbGlfZGlzYWJsZV9yZWFkc19mcm9tX21hc3RlcnxteXNxbGlfZGlzYWJsZV9ycGxfcGFyc2V8bXlzcWxpX2VuYWJsZV9yZWFkc19mcm9tX21hc3RlcnxteXNxbGlfZW5hYmxlX3JwbF9wYXJzZXxteXNxbGlfZXhlY3V0ZXxteXNxbGlfZmV0Y2h8bXlzcWxpX2dldF9tZXRhZGF0YXxteXNxbGlfbWFzdGVyX3F1ZXJ5fG15c3FsaV9wYXJhbV9jb3VudHxteXNxbGlfcnBsX3BhcnNlX2VuYWJsZWR8bXlzcWxpX3JwbF9wcm9iZXxteXNxbGlfcnBsX3F1ZXJ5X3R5cGV8bXlzcWxpX3NlbmRfbG9uZ19kYXRhfG15c3FsaV9zZW5kX3F1ZXJ5fG15c3FsaV9zbGF2ZV9xdWVyeXxvY2liaW5kYnluYW1lfG9jaWNhbmNlbHxvY2ljbG9zZWxvYnxvY2ljb2xsYXBwZW5kfG9jaWNvbGxhc3NpZ258b2NpY29sbGFzc2lnbmVsZW18b2NpY29sbGdldGVsZW18b2NpY29sbG1heHxvY2ljb2xsc2l6ZXxvY2ljb2xsdHJpbXxvY2ljb2x1bW5pc251bGx8b2NpY29sdW1ubmFtZXxvY2ljb2x1bW5wcmVjaXNpb258b2NpY29sdW1uc2NhbGV8b2NpY29sdW1uc2l6ZXxvY2ljb2x1bW50eXBlfG9jaWNvbHVtbnR5cGVyYXd8b2NpY29tbWl0fG9jaWRlZmluZWJ5bmFtZXxvY2llcnJvcnxvY2lleGVjdXRlfG9jaWZldGNofG9jaWZldGNoaW50b3xvY2lmZXRjaHN0YXRlbWVudHxvY2lmcmVlY29sbGVjdGlvbnxvY2lmcmVlY3Vyc29yfG9jaWZyZWVkZXNjfG9jaWZyZWVzdGF0ZW1lbnR8b2NpaW50ZXJuYWxkZWJ1Z3xvY2lsb2FkbG9ifG9jaWxvZ29mZnxvY2lsb2dvbnxvY2luZXdjb2xsZWN0aW9ufG9jaW5ld2N1cnNvcnxvY2luZXdkZXNjcmlwdG9yfG9jaW5sb2dvbnxvY2ludW1jb2xzfG9jaXBhcnNlfG9jaXBsb2dvbnxvY2lyZXN1bHR8b2Npcm9sbGJhY2t8b2Npcm93Y291bnR8b2Npc2F2ZWxvYnxvY2lzYXZlbG9iZmlsZXxvY2lzZXJ2ZXJ2ZXJzaW9ufG9jaXNldHByZWZldGNofG9jaXN0YXRlbWVudHR5cGV8b2Npd3JpdGVsb2J0b2ZpbGV8b2Npd3JpdGV0ZW1wb3Jhcnlsb2J8UERGX2FkZF9hbm5vdGF0aW9ufFBERl9hZGRfYm9va21hcmt8UERGX2FkZF9sYXVuY2hsaW5rfFBERl9hZGRfbG9jYWxsaW5rfFBERl9hZGRfbm90ZXxQREZfYWRkX291dGxpbmV8UERGX2FkZF9wZGZsaW5rfFBERl9hZGRfd2VibGlua3xQREZfYXR0YWNoX2ZpbGV8UERGX2JlZ2luX3BhZ2V8UERGX2JlZ2luX3RlbXBsYXRlfFBERl9jbG9zZV9wZGl8UERGX2Nsb3NlfFBERl9maW5kZm9udHxQREZfZ2V0X2ZvbnR8UERGX2dldF9mb250bmFtZXxQREZfZ2V0X2ZvbnRzaXplfFBERl9nZXRfaW1hZ2VfaGVpZ2h0fFBERl9nZXRfaW1hZ2Vfd2lkdGh8UERGX2dldF9tYWpvcnZlcnNpb258UERGX2dldF9taW5vcnZlcnNpb258UERGX2dldF9wZGlfcGFyYW1ldGVyfFBERl9nZXRfcGRpX3ZhbHVlfFBERl9vcGVuX2NjaXR0fFBERl9vcGVuX2ZpbGV8UERGX29wZW5fZ2lmfFBERl9vcGVuX2ltYWdlX2ZpbGV8UERGX29wZW5faW1hZ2V8UERGX29wZW5fanBlZ3xQREZfb3Blbl9wZGl8UERGX29wZW5fdGlmZnxQREZfcGxhY2VfaW1hZ2V8UERGX3BsYWNlX3BkaV9wYWdlfFBERl9zZXRfYm9yZGVyX2NvbG9yfFBERl9zZXRfYm9yZGVyX2Rhc2h8UERGX3NldF9ib3JkZXJfc3R5bGV8UERGX3NldF9jaGFyX3NwYWNpbmd8UERGX3NldF9kdXJhdGlvbnxQREZfc2V0X2hvcml6X3NjYWxpbmd8UERGX3NldF9pbmZvX2F1dGhvcnxQREZfc2V0X2luZm9fY3JlYXRvcnxQREZfc2V0X2luZm9fa2V5d29yZHN8UERGX3NldF9pbmZvX3N1YmplY3R8UERGX3NldF9pbmZvX3RpdGxlfFBERl9zZXRfbGVhZGluZ3xQREZfc2V0X3RleHRfbWF0cml4fFBERl9zZXRfdGV4dF9yZW5kZXJpbmd8UERGX3NldF90ZXh0X3Jpc2V8UERGX3NldF93b3JkX3NwYWNpbmd8UERGX3NldGdyYXlfZmlsbHxQREZfc2V0Z3JheV9zdHJva2V8UERGX3NldGdyYXl8UERGX3NldHBvbHlkYXNofFBERl9zZXRyZ2Jjb2xvcl9maWxsfFBERl9zZXRyZ2Jjb2xvcl9zdHJva2V8UERGX3NldHJnYmNvbG9yfFBERl9zaG93X2JveGVkfHBocF9jaGVja19zeW50YXh8cHhfc2V0X3RhYmxlbmFtZXxweF9zZXRfdGFyZ2V0ZW5jb2Rpbmd8cnVua2l0X3NhbmRib3hfb3V0cHV0X2hhbmRsZXJ8c2Vzc2lvbl9pc19yZWdpc3RlcmVkfHNlc3Npb25fcmVnaXN0ZXJ8c2Vzc2lvbl91bnJlZ2lzdGVyc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lfG1hZ2ljX3F1b3Rlc19ydW50aW1lfHNldF9zb2NrZXRfYmxvY2tpbmd8c29ja2V0X3NldF9ibG9ja2luZ3xzZXRfc29ja2V0X3RpbWVvdXR8c29ja2V0X3NldF90aW1lb3V0fHNwbGl0fHNwbGl0aXxzcWxfcmVnY2FzZSIuc3BsaXQoInwiKSksaj1lLmFycmF5VG9NYXAoImNmdW5jdGlvbnxvbGRfZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGs9ZS5hcnJheVRvTWFwKFtdKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoic3VwcG9ydC5waHBfdGFnIixyZWdleDoiPFxcPyg/OnBocHxcXD0pIn0se3Rva2VuOiJzdXBwb3J0LnBocF90YWciLHJlZ2V4OiJcXD8+In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiPFxcIS0tIixuZXh0OiJodG1sY29tbWVudCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8c3R5bGUiLG5leHQ6ImNzcyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvP1stX2EtekEtWjAtOTpdKyIsbmV4dDoiaHRtbHRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8IURPQ1RZUEUuKj8+In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiIy4qJCJ9LGEuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVtnaW15XSpcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjBbeFhdWzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlIixyZWdleDoiXFxiKD86REVGQVVMVF9JTkNMVURFX1BBVEh8RV8oPzpBTEx8Q08oPzpNUElMRV8oPzpFUlJPUnxXQVJOSU5HKXxSRV8oPzpFUlJPUnxXQVJOSU5HKSl8RVJST1J8Tk9USUNFfFBBUlNFfFNUUklDVHxVU0VSXyg/OkVSUk9SfE5PVElDRXxXQVJOSU5HKXxXQVJOSU5HKXxQKD86RUFSXyg/OkVYVEVOU0lPTl9ESVJ8SU5TVEFMTF9ESVIpfEhQXyg/OkJJTkRJUnxDT05GSUdfRklMRV8oPzpQQVRIfFNDQU5fRElSKXxEQVRBRElSfEUoPzpPTHxYVEVOU0lPTl9ESVIpfElOVF8oPzpNQVh8U0laRSl8TCg/OklCRElSfE9DQUxTVEFURURJUil8Tyg/OlN8VVRQVVRfSEFORExFUl8oPzpDT05UfEVORHxTVEFSVCkpfFBSRUZJWHxTKD86QVBJfEhMSUJfU1VGRklYfFlTQ09ORkRJUil8VkVSU0lPTikpfF9fQ09NUElMRVJfSEFMVF9PRkZTRVRfXylcXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlIixyZWdleDoiXFxiKD86QSg/OkIoPzpEQVlfKD86MXwyfDN8NHw1fDZ8Nyl8TU9OXyg/OjEoPzowfDF8MnwpfDJ8M3w0fDV8Nnw3fDh8OSkpfExUX0RJR0lUU3xNX1NUUnxTU0VSVF8oPzpBQ1RJVkV8QkFJTHxDQUxMQkFDS3xRVUlFVF9FVkFMfFdBUk5JTkcpKXxDKD86QVNFXyg/OkxPV0VSfFVQUEVSKXxIQVJfTUFYfE8oPzpERVNFVHxOTkVDVElPTl8oPzpBQk9SVEVEfE5PUk1BTHxUSU1FT1VUKXxVTlRfKD86Tk9STUFMfFJFQ1VSU0lWRSkpfFIoPzpFRElUU18oPzpBTEx8RE9DU3xGVUxMUEFHRXxHKD86RU5FUkFMfFJPVVApfE1PRFVMRVN8UUF8U0FQSSl8TkNZU1RSfFlQVF8oPzpCTE9XRklTSHxFWFRfREVTfE1ENXxTKD86QUxUX0xFTkdUSHxURF9ERVMpKSl8VVJSRU5DWV9TWU1CT0wpfEQoPzpBWV8oPzoxfDJ8M3w0fDV8Nnw3KXxFQ0lNQUxfUE9JTlR8SVJFQ1RPUllfU0VQQVJBVE9SfF8oPzpGTVR8VF9GTVQpKXxFKD86TlRfKD86Q09NUEFUfE5PUVVPVEVTfFFVT1RFUyl8UkEoPzpfKD86RF8oPzpGTVR8VF9GTVQpfFRfRk1UfFlFQVIpfCl8WFRSXyg/OklGX0VYSVNUU3xPVkVSV1JJVEV8UFJFRklYXyg/OkFMTHxJKD86Rl9FWElTVFN8TlZBTElEKXxTQU1FKXxTS0lQKSl8RlJBQ19ESUdJVFN8R1JPVVBJTkd8SFRNTF8oPzpFTlRJVElFU3xTUEVDSUFMQ0hBUlMpfElOKD86Rk9fKD86QUxMfEMoPzpPTkZJR1VSQVRJT058UkVESVRTKXxFTlZJUk9OTUVOVHxHRU5FUkFMfExJQ0VOU0V8TU9EVUxFU3xWQVJJQUJMRVMpfElfKD86QUxMfFBFUkRJUnxTWVNURU18VVNFUil8VF8oPzpDVVJSX1NZTUJPTHxGUkFDX0RJR0lUUykpfEwoPzpDXyg/OkFMTHxDKD86T0xMQVRFfFRZUEUpfE0oPzpFU1NBR0VTfE9ORVRBUlkpfE5VTUVSSUN8VElNRSl8Tyg/OkNLXyg/OkVYfE5CfFNIfFVOKXxHXyg/OkEoPzpMRVJUfFVUSCg/OlBSSVZ8KSl8Qyg/Ok9OU3xSKD86SVR8T04pKXxEKD86QUVNT058RUJVRyl8RSg/Ok1FUkd8UlIpfElORk98S0VSTnxMKD86T0NBTCg/OjB8MXwyfDN8NHw1fDZ8Nyl8UFIpfE1BSUx8Tig/OkRFTEFZfEVXU3xPKD86VElDRXxXQUlUKSl8T0RFTEFZfFAoPzpFUlJPUnxJRCl8U1lTTE9HfFUoPzpTRVJ8VUNQKXxXQVJOSU5HKSkpfE0oPzpPTl8oPzoxKD86MHwxfDJ8KXwyfDN8NHw1fDZ8N3w4fDl8REVDSU1BTF9QT0lOVHxHUk9VUElOR3xUSE9VU0FORFNfU0VQKXxfKD86MV9QSXwyXyg/OlBJfFNRUlRQSSl8RXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8UEkoPzpfKD86Mnw0KXwpfFNRUlQoPzoxXzJ8MikpKXxOKD86RUdBVElWRV9TSUdOfE8oPzpFWFBSfFNUUil8Xyg/OkNTX1BSRUNFREVTfFMoPzpFUF9CWV9TUEFDRXxJR05fUE9TTikpKXxQKD86QVRIKD86SU5GT18oPzpCQVNFTkFNRXxESVJOQU1FfEVYVEVOU0lPTil8X1NFUEFSQVRPUil8TV9TVFJ8T1NJVElWRV9TSUdOfF8oPzpDU19QUkVDRURFU3xTKD86RVBfQllfU1BBQ0V8SUdOX1BPU04pKSl8UkFESVhDSEFSfFMoPzpFRUtfKD86Q1VSfEVORHxTRVQpfE9SVF8oPzpBU0N8REVTQ3xOVU1FUklDfFJFR1VMQVJ8U1RSSU5HKXxUUl9QQURfKD86Qk9USHxMRUZUfFJJR0hUKSl8VCg/OkhPVVMoPzpBTkRTX1NFUHxFUCl8X0ZNVCg/Ol9BTVBNfCkpfFlFUyg/OkVYUFJ8U1RSKXxTVEQoPzpJTnxPVVR8RVJSKSlcXGIifSx7dG9rZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGMuaGFzT3duUHJvcGVydHkoYSk/ImtleXdvcmQiOmcuaGFzT3duUHJvcGVydHkoYSk/ImNvbnN0YW50Lmxhbmd1YWdlIjpoLmhhc093blByb3BlcnR5KGEpPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ay5oYXNPd25Qcm9wZXJ0eShhKT8iaW52YWxpZC5pbGxlZ2FsIjpiLmhhc093blByb3BlcnR5KGEpPyJzdXBwb3J0LmZ1bmN0aW9uIjphPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmEubWF0Y2goL14oXCRbYS16QS1aXVthLXpBLVowLTlfXSp8c2VsZnxwYXJlbnQpJC8pPyJ2YXJpYWJsZSI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiIXxcXCR8JXwmfFxcKnxcXC1cXC18XFwtfFxcK1xcK3xcXCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJscGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6J1xcXFwoPzpbbnJ0dmVmXFxcXCIkXXxbMC03XXsxLDN9fHhbMC05QS1GYS1mXXsxLDJ9KSd9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXCRbXHdcZF0rKD86XFtbXHdcZF0rXF0pPy99LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXCRce1teIlx9XStcfT8vfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyInLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIuKz8ifV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OiJcXFxcWydcXFxcXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6Ii4rPyJ9XSxodG1sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/LS0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4rIn1dLGh0bWx0YWc6W3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlstX2EtekEtWjAtOTpdKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIuKj8iJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9XSxjc3M6W3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8L3N0eWxlPiIsbmV4dDoiaHRtbHRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI+In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiKD86bWVkaWF8dHlwZXxocmVmKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonPSIuKj8iJ30se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJ7IixuZXh0OiJjc3NkZWNsYXJhdGlvbiJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbQS1aYS16MC05LV8uXSsifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwuW0EtWmEtejAtOS1fLl0rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IltBLVphLXowLTldKyJ9XSxjc3NkZWNsYXJhdGlvbjpbe3Rva2VuOiJzdXBwb3J0LnR5cGUiLHJlZ2V4OiJbLWEtekEtWl0rIixuZXh0OiJjc3N2YWx1ZSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoifSIsbmV4dDoiY3NzIn1dLGNzc3ZhbHVlOlt7dG9rZW46InRleHQiLHJlZ2V4OiI6In0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IiNbMC05YS16QS1aXSsifSx7dG9rZW46InRleHQiLHJlZ2V4OiJbLV8wLTlhLXpBLVpcIicgLCVdKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IjsiLG5leHQ6ImNzc2RlY2xhcmF0aW9uIn1dfSx0aGlzLmVtYmVkUnVsZXMoZiwiZG9jLSIsW2YuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtkLmluaGVyaXRzKGgsZyksYi5QaHBIaWdobGlnaHRSdWxlcz1ofSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-powershell.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9wb3dlcnNoZWxsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3Bvd2Vyc2hlbGxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9wb3dlcnNoZWxsX2hpZ2hsaWdodF9ydWxlcyIpLlBvd2Vyc2hlbGxIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGo9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGs9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgaSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgan07ZC5pbmhlcml0cyhrLGUpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQiKXt2YXIgZz1iLm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtnJiYoZCs9Yyl9cmV0dXJuIGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbH19LmNhbGwoay5wcm90b3R5cGUpLGIuTW9kZT1rfSksZGVmaW5lKCJhY2UvbW9kZS9wb3dlcnNoZWxsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiZnVuY3Rpb258aWZ8ZWxzZXxlbHNlaWZ8c3dpdGNofHdoaWxlfGRlZmF1bHR8Zm9yfGRvfHVudGlsfGJyZWFrfGNvbnRpbnVlfGZvcmVhY2h8cmV0dXJufGZpbHRlcnxpbnx0cmFwfHRocm93fHBhcmFtfGJlZ2lufHByb2Nlc3N8ZW5kIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgiR2V0LUFsaWFzfEltcG9ydC1BbGlhc3xOZXctQWxpYXN8U2V0LUFsaWFzfEdldC1BdXRoZW50aWNvZGVTaWduYXR1cmV8U2V0LUF1dGhlbnRpY29kZVNpZ25hdHVyZXxTZXQtTG9jYXRpb258R2V0LUNoaWxkSXRlbXxDbGVhci1JdGVtfEdldC1Db21tYW5kfE1lYXN1cmUtQ29tbWFuZHxUcmFjZS1Db21tYW5kfEFkZC1Db21wdXRlcnxDaGVja3BvaW50LUNvbXB1dGVyfFJlbW92ZS1Db21wdXRlcnxSZXN0YXJ0LUNvbXB1dGVyfFJlc3RvcmUtQ29tcHV0ZXJ8U3RvcC1Db21wdXRlcnxSZXNldC1Db21wdXRlck1hY2hpbmVQYXNzd29yZHxUZXN0LUNvbXB1dGVyU2VjdXJlQ2hhbm5lbHxBZGQtQ29udGVudHxHZXQtQ29udGVudHxTZXQtQ29udGVudHxDbGVhci1Db250ZW50fEdldC1Db21tYW5kfEludm9rZS1Db21tYW5kfEVuYWJsZS1Db21wdXRlclJlc3RvcmV8RGlzYWJsZS1Db21wdXRlclJlc3RvcmV8R2V0LUNvbXB1dGVyUmVzdG9yZVBvaW50fFRlc3QtQ29ubmVjdGlvbnxDb252ZXJ0RnJvbS1DU1Z8Q29udmVydFRvLUNTVnxDb252ZXJ0VG8tSHRtbHxDb252ZXJ0VG8tWG1sfENvbnZlcnRGcm9tLVNlY3VyZVN0cmluZ3xDb252ZXJ0VG8tU2VjdXJlU3RyaW5nfENvcHktSXRlbXxFeHBvcnQtQ291bnRlcnxHZXQtQ291bnRlcnxJbXBvcnQtQ291bnRlcnxHZXQtQ3JlZGVudGlhbHxHZXQtQ3VsdHVyZXxHZXQtQ2hpbGRJdGVtfEdldC1EYXRlfFNldC1EYXRlfFJlbW92ZS1JdGVtfENvbXBhcmUtT2JqZWN0fEdldC1FdmVudHxHZXQtV2luRXZlbnR8TmV3LUV2ZW50fFJlbW92ZS1FdmVudHxVbnJlZ2lzdGVyLUV2ZW50fFdhaXQtRXZlbnR8Q2xlYXItRXZlbnRMb2d8R2V0LUV2ZW50bG9nfExpbWl0LUV2ZW50TG9nfE5ldy1FdmVudGxvZ3xSZW1vdmUtRXZlbnRMb2d8U2hvdy1FdmVudExvZ3xXcml0ZS1FdmVudExvZ3xHZXQtRXZlbnRTdWJzY3JpYmVyfFJlZ2lzdGVyLUVuZ2luZUV2ZW50fFJlZ2lzdGVyLU9iamVjdEV2ZW50fFJlZ2lzdGVyLVdtaUV2ZW50fEdldC1FeGVjdXRpb25Qb2xpY3l8U2V0LUV4ZWN1dGlvblBvbGljeXxFeHBvcnQtQWxpYXN8RXhwb3J0LUNsaXhtbHxFeHBvcnQtQ29uc29sZXxFeHBvcnQtQ3N2fEZvckVhY2gtT2JqZWN0fEZvcm1hdC1DdXN0b218Rm9ybWF0LUxpc3R8Rm9ybWF0LVRhYmxlfEZvcm1hdC1XaWRlfEV4cG9ydC1Gb3JtYXREYXRhfEdldC1Gb3JtYXREYXRhfEdldC1JdGVtfEdldC1DaGlsZEl0ZW18R2V0LUhlbHB8QWRkLUhpc3Rvcnl8Q2xlYXItSGlzdG9yeXxHZXQtSGlzdG9yeXxJbnZva2UtSGlzdG9yeXxHZXQtSG9zdHxSZWFkLUhvc3R8V3JpdGUtSG9zdHxHZXQtSG90Rml4fEltcG9ydC1DbGl4bWx8SW1wb3J0LUNzdnxJbnZva2UtQ29tbWFuZHxJbnZva2UtRXhwcmVzc2lvbnxHZXQtSXRlbXxJbnZva2UtSXRlbXxOZXctSXRlbXxSZW1vdmUtSXRlbXxTZXQtSXRlbXxDbGVhci1JdGVtUHJvcGVydHl8Q29weS1JdGVtUHJvcGVydHl8R2V0LUl0ZW1Qcm9wZXJ0eXxNb3ZlLUl0ZW1Qcm9wZXJ0eXxOZXctSXRlbVByb3BlcnR5fFJlbW92ZS1JdGVtUHJvcGVydHl8UmVuYW1lLUl0ZW1Qcm9wZXJ0eXxTZXQtSXRlbVByb3BlcnR5fEdldC1Kb2J8UmVjZWl2ZS1Kb2J8UmVtb3ZlLUpvYnxTdGFydC1Kb2J8U3RvcC1Kb2J8V2FpdC1Kb2J8U3RvcC1Qcm9jZXNzfFVwZGF0ZS1MaXN0fEdldC1Mb2NhdGlvbnxQb3AtTG9jYXRpb258UHVzaC1Mb2NhdGlvbnxTZXQtTG9jYXRpb258U2VuZC1NYWlsTWVzc2FnZXxBZGQtTWVtYmVyfEdldC1NZW1iZXJ8TW92ZS1JdGVtfENvbXBhcmUtT2JqZWN0fEdyb3VwLU9iamVjdHxNZWFzdXJlLU9iamVjdHxOZXctT2JqZWN0fFNlbGVjdC1PYmplY3R8U29ydC1PYmplY3R8V2hlcmUtT2JqZWN0fE91dC1EZWZhdWx0fE91dC1GaWxlfE91dC1HcmlkVmlld3xPdXQtSG9zdHxPdXQtTnVsbHxPdXQtUHJpbnRlcnxPdXQtU3RyaW5nfENvbnZlcnQtUGF0aHxKb2luLVBhdGh8UmVzb2x2ZS1QYXRofFNwbGl0LVBhdGh8VGVzdC1QYXRofEdldC1QZnhjZXJ0aWZpY2F0ZXxQb3AtTG9jYXRpb258UHVzaC1Mb2NhdGlvbnxHZXQtUHJvY2Vzc3xTdGFydC1Qcm9jZXNzfFN0b3AtUHJvY2Vzc3xXYWl0LVByb2Nlc3N8RW5hYmxlLVBTQnJlYWtwb2ludHxEaXNhYmxlLVBTQnJlYWtwb2ludHxHZXQtUFNCcmVha3BvaW50fFNldC1QU0JyZWFrcG9pbnR8UmVtb3ZlLVBTQnJlYWtwb2ludHxHZXQtUFNEcml2ZXxOZXctUFNEcml2ZXxSZW1vdmUtUFNEcml2ZXxHZXQtUFNQcm92aWRlcnxTZXQtUFNkZWJ1Z3xFbnRlci1QU1Nlc3Npb258RXhpdC1QU1Nlc3Npb258RXhwb3J0LVBTU2Vzc2lvbnxHZXQtUFNTZXNzaW9ufEltcG9ydC1QU1Nlc3Npb258TmV3LVBTU2Vzc2lvbnxSZW1vdmUtUFNTZXNzaW9ufERpc2FibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxFbmFibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxHZXQtUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxSZWdpc3Rlci1QU1Nlc3Npb25Db25maWd1cmF0aW9ufFNldC1QU1Nlc3Npb25Db25maWd1cmF0aW9ufFVucmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxOZXctUFNTZXNzaW9uT3B0aW9ufEFkZC1Qc1NuYXBJbnxHZXQtUHNTbmFwaW58UmVtb3ZlLVBTU25hcGlufEdldC1SYW5kb218UmVhZC1Ib3N0fFJlbW92ZS1JdGVtfFJlbmFtZS1JdGVtfFJlbmFtZS1JdGVtUHJvcGVydHl8U2VsZWN0LU9iamVjdHxTZWxlY3QtWE1MfFNlbmQtTWFpbE1lc3NhZ2V8R2V0LVNlcnZpY2V8TmV3LVNlcnZpY2V8UmVzdGFydC1TZXJ2aWNlfFJlc3VtZS1TZXJ2aWNlfFNldC1TZXJ2aWNlfFN0YXJ0LVNlcnZpY2V8U3RvcC1TZXJ2aWNlfFN1c3BlbmQtU2VydmljZXxTb3J0LU9iamVjdHxTdGFydC1TbGVlcHxDb252ZXJ0RnJvbS1TdHJpbmdEYXRhfFNlbGVjdC1TdHJpbmd8VGVlLU9iamVjdHxOZXctVGltZXNwYW58VHJhY2UtQ29tbWFuZHxHZXQtVHJhY2Vzb3VyY2V8U2V0LVRyYWNlc291cmNlfFN0YXJ0LVRyYW5zYWN0aW9ufENvbXBsZXRlLVRyYW5zYWN0aW9ufEdldC1UcmFuc2FjdGlvbnxVc2UtVHJhbnNhY3Rpb258VW5kby1UcmFuc2FjdGlvbnxTdGFydC1UcmFuc2NyaXB0fFN0b3AtVHJhbnNjcmlwdHxBZGQtVHlwZXxVcGRhdGUtVHlwZURhdGF8R2V0LVVpY3VsdHVyZXxHZXQtVW5pcXVlfFVwZGF0ZS1Gb3JtYXRkYXRhfFVwZGF0ZS1UeXBlZGF0YXxDbGVhci1WYXJpYWJsZXxHZXQtVmFyaWFibGV8TmV3LVZhcmlhYmxlfFJlbW92ZS1WYXJpYWJsZXxTZXQtVmFyaWFibGV8TmV3LVdlYlNlcnZpY2VQcm94eXxXaGVyZS1PYmplY3R8V3JpdGUtRGVidWd8V3JpdGUtRXJyb3J8V3JpdGUtSG9zdHxXcml0ZS1PdXRwdXR8V3JpdGUtUHJvZ3Jlc3N8V3JpdGUtVmVyYm9zZXxXcml0ZS1XYXJuaW5nfFNldC1XbWlJbnN0YW5jZXxJbnZva2UtV21pTWV0aG9kfEdldC1XbWlPYmplY3R8UmVtb3ZlLVdtaU9iamVjdHxDb25uZWN0LVdTTWFufERpc2Nvbm5lY3QtV1NNYW58VGVzdC1XU01hbnxJbnZva2UtV1NNYW5BY3Rpb258RGlzYWJsZS1XU01hbkNyZWRTU1B8RW5hYmxlLVdTTWFuQ3JlZFNTUHxHZXQtV1NNYW5DcmVkU1NQfE5ldy1XU01hbkluc3RhbmNlfEdldC1XU01hbkluc3RhbmNlfFNldC1XU01hbkluc3RhbmNlfFJlbW92ZS1XU01hbkluc3RhbmNlfFNldC1XU01hblF1aWNrQ29uZmlnfE5ldy1XU01hblNlc3Npb25PcHRpb24iLnNwbGl0KCJ8IikpLGM9ImVxfG5lfGdlfGd0fGx0fGxlfGxpa2V8bm90bGlrZXxtYXRjaHxub3RtYXRjaHxyZXBsYWNlfGNvbnRhaW5zfG5vdGNvbnRhaW5zfGllcXxpbmV8aWdlfGlndHxpbGV8aWx0fGlsaWtlfGlub3RsaWtlfGltYXRjaHxpbm90bWF0Y2h8aXJlcGxhY2V8aWNvbnRhaW5zfGlub3Rjb250YWluc3xpc3xpc25vdHxhc3xhbmR8b3J8YmFuZHxib3J8bm90Ijt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDoiWyRdKD86W1R0XXJ1ZXxbRmZdYWxzZSlcXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlIixyZWdleDoiWyRdW05uXXVsbFxcYiJ9LHt0b2tlbjoidmFyaWFibGUuaW5zdGFuY2UiLHJlZ2V4OiJbJF1bYS16QS1aXVthLXpBLVowLTlfXSpcXGIifSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoYyk/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRcXC1dKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcLSg/OiIrYysiKSJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiZ8XFwqfFxcK3xcXC18XFw9fFxcKz18XFwtPSJ9LHt0b2tlbjoibHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLlBvd2Vyc2hlbGxIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL3JhbmdlIikuUmFuZ2UsZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4vXlxzKyQvLnRlc3QoYSk/L15ccypcfS8udGVzdChiKTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0TGluZShiKSxlPWMubWF0Y2goL14oXHMqXH0pLyk7aWYoIWUpcmV0dXJuIDA7dmFyIGY9ZVsxXS5sZW5ndGgsZz1hLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpiLGNvbHVtbjpmfSk7aWYoIWd8fGcucm93PT1iKXJldHVybiAwO3ZhciBoPXRoaXMuJGdldEluZGVudChhLmdldExpbmUoZy5yb3cpKTthLnJlcGxhY2UobmV3IGQoYiwwLGIsZi0xKSxoKX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14oXHMrKS8pO3JldHVybiBiP2JbMV06IiJ9fSkuY2FsbChlLnByb3RvdHlwZSksYi5NYXRjaGluZ0JyYWNlT3V0ZGVudD1lfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLGY9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSJ7Iil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6InsiK2crIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSJ9Iil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBsPWQuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93Omgucm93LGNvbHVtbjpoLmNvbHVtbisxfSk7aWYoIWwpcmV0dXJuIG51bGw7dmFyIG09dGhpcy5nZXROZXh0TGluZUluZGVudChhLGkuc3Vic3RyaW5nKDAsaS5sZW5ndGgtMSksZC5nZXRUYWJTdHJpbmcoKSksbj10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShsLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbSsiXG4iK24sc2VsZWN0aW9uOlsxLG0ubGVuZ3RoLDEsbS5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0ieyIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5lbmQuY29sdW1uLGUuZW5kLmNvbHVtbisxKTtpZihoPT0ifSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0iKCIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiIoIitnKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0iKSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09IikiKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSIoIil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSIpIilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09JyInfHxlPT0iJyIpe3ZhciBmPWUsZz1jLmdldFNlbGVjdGlvblJhbmdlKCksaD1kLmRvYy5nZXRUZXh0UmFuZ2UoZyk7aWYoaCE9PSIiKXJldHVybnt0ZXh0OmYraCtmLHNlbGVjdGlvbjohMX07dmFyIGk9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGo9ZC5kb2MuZ2V0TGluZShpLnJvdyksaz1qLnN1YnN0cmluZyhpLmNvbHVtbi0xLGkuY29sdW1uKTtpZihrPT0iXFwiKXJldHVybiBudWxsO3ZhciBsPWQuZ2V0VG9rZW5zKGcuc3RhcnQucm93KSxtPTAsbixvPS0xO2Zvcih2YXIgcD0wO3A8bC5sZW5ndGg7cCsrKXtuPWxbcF0sbi50eXBlPT0ic3RyaW5nIj9vPS0xOm88MCYmKG89bi52YWx1ZS5pbmRleE9mKGYpKTtpZihuLnZhbHVlLmxlbmd0aCttPmcuc3RhcnQuY29sdW1uKWJyZWFrO20rPWxbcF0udmFsdWUubGVuZ3RofWlmKCFufHxvPDAmJm4udHlwZSE9PSJjb21tZW50IiYmKG4udHlwZSE9PSJzdHJpbmcifHxnLnN0YXJ0LmNvbHVtbiE9PW4udmFsdWUubGVuZ3RoK20tMSYmbi52YWx1ZS5sYXN0SW5kZXhPZihmKT09PW4udmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OmYrZixzZWxlY3Rpb246WzEsMV19O2lmKG4mJm4udHlwZT09PSJzdHJpbmciKXt2YXIgcT1qLnN1YnN0cmluZyhpLmNvbHVtbixpLmNvbHVtbisxKTtpZihxPT1mKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiYoZj09JyInfHxmPT0iJyIpKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09JyInKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pfTtkLmluaGVyaXRzKGYsZSksYi5Dc3R5bGVCZWhhdmlvdXI9Zn0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZj1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGc9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307ZC5pbmhlcml0cyhnLGYpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKSxmPWQubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXg7aWYoZlsxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGEsZlsxXSxjLGcpO3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcrZlswXS5sZW5ndGgpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH1pZihiIT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBmPWQubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleCtmWzBdLmxlbmd0aDtpZihmWzJdKXt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9dmFyIGk9e3JvdzpjLGNvbHVtbjpnfSxqPWEuJGZpbmRPcGVuaW5nQnJhY2tldChmWzFdLGkpO2lmKCFqKXJldHVybjtyZXR1cm4gai5jb2x1bW4rKyxpLmNvbHVtbi0tLGUuZnJvbVBvaW50cyhqLGkpfX19LmNhbGwoZy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGU9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyk7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3QoZCk/InN0YXJ0IjpiPT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KGQpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihhLGIsYyl7dmFyIGU9L15ccyovLGY9YixnPWIsaD1hLmdldExpbmUoYiksaT1jfHxoLmxlbmd0aCxqPWgubWF0Y2goZSlbMF0ubGVuZ3RoLGs9YS5nZXRMZW5ndGgoKTt3aGlsZSgrK2I8ayl7aD1hLmdldExpbmUoYik7dmFyIGw9aC5tYXRjaChlKVswXS5sZW5ndGg7aWYobD09aC5sZW5ndGgpY29udGludWU7aWYobDw9ailicmVhaztnPWJ9aWYoZz5mKXt2YXIgbT1hLmdldExpbmUoZykubGVuZ3RoO3JldHVybiBuZXcgZChmLGksZyxtKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihhLGIsYyxlLGYsZyl7dmFyIGg9e3JvdzpjLGNvbHVtbjplKzF9LGk9YS4kZmluZENsb3NpbmdCcmFja2V0KGIsaCxmLGcpO2lmKCFpKXJldHVybjt2YXIgaj1hLmZvbGRXaWRnZXRzW2kucm93XTtyZXR1cm4gaj09bnVsbCYmKGo9dGhpcy5nZXRGb2xkV2lkZ2V0KGEsaS5yb3cpKSxqPT0ic3RhcnQiJiYoaS5yb3ctLSxpLmNvbHVtbj1hLmdldExpbmUoaS5yb3cpLmxlbmd0aCksZC5mcm9tUG9pbnRzKGgsaSl9fSkuY2FsbChlLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-python.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9weXRob24iLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvcHl0aG9uX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2ZvbGRpbmcvcHl0aG9uaWMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vcHl0aG9uX2hpZ2hsaWdodF9ydWxlcyIpLlB5dGhvbkhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9mb2xkaW5nL3B5dGhvbmljIikuRm9sZE1vZGUsaT1hKCIuLi9yYW5nZSIpLlJhbmdlLGo9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgaCgiXFw6Iil9O2QuaW5oZXJpdHMoaixlKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSEwLGY9L14oXHMqKSMvO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKWlmKCFmLnRlc3QoYi5nZXRMaW5lKGcpKSl7ZT0hMTticmVha31pZihlKXt2YXIgaD1uZXcgaSgwLDAsMCwwKTtmb3IodmFyIGc9YztnPD1kO2crKyl7dmFyIGo9Yi5nZXRMaW5lKGcpLGs9ai5tYXRjaChmKTtoLnN0YXJ0LnJvdz1nLGguZW5kLnJvdz1nLGguZW5kLmNvbHVtbj1rWzBdLmxlbmd0aCxiLnJlcGxhY2UoaCxrWzFdKX19ZWxzZSBiLmluZGVudFJvd3MoYyxkLCIjIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucztpZihmLmxlbmd0aCYmZltmLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIGQ7aWYoYT09InN0YXJ0Iil7dmFyIGc9Yi5tYXRjaCgvXi4qW1x7XChcW1w6XVxzKiQvKTtnJiYoZCs9Yyl9cmV0dXJuIGR9O3ZhciBhPXtwYXNzOjEsInJldHVybiI6MSxyYWlzZToxLCJicmVhayI6MSwiY29udGludWUiOjF9O3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGIsYyxkKXtpZihkIT09IlxyXG4iJiZkIT09IlxyIiYmZCE9PSJcbiIpcmV0dXJuITE7dmFyIGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYy50cmltKCksYikudG9rZW5zO2lmKCFlKXJldHVybiExO2RvIHZhciBmPWUucG9wKCk7d2hpbGUoZiYmKGYudHlwZT09ImNvbW1lbnQifHxmLnR5cGU9PSJ0ZXh0IiYmZi52YWx1ZS5tYXRjaCgvXlxzKyQvKSkpO3JldHVybiBmP2YudHlwZT09ImtleXdvcmQiJiZhW2YudmFsdWVdOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtjKz0xO3ZhciBkPXRoaXMuJGdldEluZGVudChiLmdldExpbmUoYykpLGU9Yi5nZXRUYWJTdHJpbmcoKTtkLnNsaWNlKC1lLmxlbmd0aCk9PWUmJmIucmVtb3ZlKG5ldyBpKGMsZC5sZW5ndGgtZS5sZW5ndGgsYyxkLmxlbmd0aCkpfX0uY2FsbChqLnByb3RvdHlwZSksYi5Nb2RlPWp9KSxkZWZpbmUoImFjZS9tb2RlL3B5dGhvbl9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGc9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoImFuZHxhc3xhc3NlcnR8YnJlYWt8Y2xhc3N8Y29udGludWV8ZGVmfGRlbHxlbGlmfGVsc2V8ZXhjZXB0fGV4ZWN8ZmluYWxseXxmb3J8ZnJvbXxnbG9iYWx8aWZ8aW1wb3J0fGlufGlzfGxhbWJkYXxub3R8b3J8cGFzc3xwcmludHxyYWlzZXxyZXR1cm58dHJ5fHdoaWxlfHdpdGh8eWllbGQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJUcnVlfEZhbHNlfE5vbmV8Tm90SW1wbGVtZW50ZWR8RWxsaXBzaXN8X19kZWJ1Z19fIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgiYWJzfGRpdm1vZHxpbnB1dHxvcGVufHN0YXRpY21ldGhvZHxhbGx8ZW51bWVyYXRlfGludHxvcmR8c3RyfGFueXxldmFsfGlzaW5zdGFuY2V8cG93fHN1bXxiYXNlc3RyaW5nfGV4ZWNmaWxlfGlzc3ViY2xhc3N8cHJpbnR8c3VwZXJ8YmluZmlsZXxpdGVyfHByb3BlcnR5fHR1cGxlfGJvb2x8ZmlsdGVyfGxlbnxyYW5nZXx0eXBlfGJ5dGVhcnJheXxmbG9hdHxsaXN0fHJhd19pbnB1dHx1bmljaHJ8Y2FsbGFibGV8Zm9ybWF0fGxvY2Fsc3xyZWR1Y2V8dW5pY29kZXxjaHJ8ZnJvemVuc2V0fGxvbmd8cmVsb2FkfHZhcnN8Y2xhc3NtZXRob2R8Z2V0YXR0cnxtYXB8cmVwcnx4cmFuZ2V8Y21wfGdsb2JhbHN8bWF4fHJldmVyc2VkfHppcHxjb21waWxlfGhhc2F0dHJ8bWVtb3J5dmlld3xyb3VuZHxfX2ltcG9ydF9ffGNvbXBsZXh8aGFzaHxtaW58c2V0fGFwcGx5fGRlbGF0dHJ8aGVscHxuZXh0fHNldGF0dHJ8YnVmZmVyfGRpY3R8aGV4fG9iamVjdHxzbGljZXxjb2VyY2V8ZGlyfGlkfG9jdHxzb3J0ZWR8aW50ZXJuIi5zcGxpdCgifCIpKSxkPWUuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKSxmPSIoPzpyfHV8dXJ8UnxVfFVSfFVyfHVSKT8iLGc9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixoPSIoPzowW29PXT9bMC03XSspIixpPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLGo9Iig/OjBbYkJdWzAxXSspIixrPSIoPzoiK2crInwiK2grInwiK2krInwiK2orIikiLGw9Iig/OltlRV1bKy1dP1xcZCspIixtPSIoPzpcXC5cXGQrKSIsbj0iKD86XFxkKykiLG89Iig/Oig/OiIrbisiPyIrbSsiKXwoPzoiK24rIlxcLikpIixwPSIoPzooPzoiK28rInwiK24rIikiK2wrIikiLHE9Iig/OiIrcCsifCIrbysiKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIjLiokIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmYrJyJ7M30oPzpbXlxcXFxdfFxcXFwuKSo/InszfSd9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDpmKyciezN9LiokJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDpmKyciKD86W15cXFxcXXxcXFxcLikqPyInfSx7dG9rZW46InN0cmluZyIscmVnZXg6ZisiJ3szfSg/OlteXFxcXF18XFxcXC4pKj8nezN9In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OmYrIid7M30uKiQiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6ZisiJyg/OlteXFxcXF18XFxcXC4pKj8nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiKD86IitxKyJ8XFxkKylbakpdXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpxfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OmsrIltsTF1cXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OmsrIlxcYiJ9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShlKT8ia2V5d29yZCI6Yi5oYXNPd25Qcm9wZXJ0eShlKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmQuaGFzT3duUHJvcGVydHkoZSk/ImludmFsaWQuaWxsZWdhbCI6Yy5oYXNPd25Qcm9wZXJ0eShlKT8ic3VwcG9ydC5mdW5jdGlvbiI6ZT09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXCt8XFwtfFxcKnxcXCpcXCp8XFwvfFxcL1xcL3wlfDw8fD4+fCZ8XFx8fFxcXnx+fDx8Pnw8PXw9Pnw9PXwhPXw8Pnw9In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbXFxbXFwoXFx7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXVxcKVxcfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLHFxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Jyg/OlteXFxcXF18XFxcXC4pKj8iezN9JyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/J3szfSIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfX07ZC5pbmhlcml0cyhnLGYpLGIuUHl0aG9uSGlnaGxpZ2h0UnVsZXM9Z30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9weXRob25pYyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxmPWIuRm9sZE1vZGU9ZnVuY3Rpb24oYSl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bmV3IFJlZ0V4cCgiKD86KFtcXFt7XSl8KCIrYSsiKSkoPzpcXHMqKSg/OiMuKik/JCIpfTtkLmluaGVyaXRzKGYsZSksZnVuY3Rpb24oKXt0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGU9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZSlyZXR1cm4gZVsxXT90aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxlWzFdLGMsZS5pbmRleCk6ZVsyXT90aGlzLmluZGVudGF0aW9uQmxvY2soYSxjLGUuaW5kZXgrZVsyXS5sZW5ndGgpOnRoaXMuaW5kZW50YXRpb25CbG9jayhhLGMpfX0uY2FsbChmLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-ruby.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9ydWJ5IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3J1YnlfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9ydWJ5X2hpZ2hsaWdodF9ydWxlcyIpLlJ1YnlIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgaH07ZC5pbmhlcml0cyhqLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopIy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIiMiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy4kZ2V0SW5kZW50KGIpLGU9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMoYixhKSxmPWUudG9rZW5zO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQiKXt2YXIgZz1iLm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtnJiYoZCs9Yyl9cmV0dXJuIGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfX0uY2FsbChqLnByb3RvdHlwZSksYi5Nb2RlPWp9KSxkZWZpbmUoImFjZS9tb2RlL3J1YnlfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxnPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJhYm9ydHxBcnJheXxhc3NlcnR8YXNzZXJ0X2VxdWFsfGFzc2VydF9ub3RfZXF1YWx8YXNzZXJ0X3NhbWV8YXNzZXJ0X25vdF9zYW1lfGFzc2VydF9uaWx8YXNzZXJ0X25vdF9uaWx8YXNzZXJ0X21hdGNofGFzc2VydF9ub19tYXRjaHxhc3NlcnRfaW5fZGVsdGF8YXNzZXJ0X3Rocm93c3xhc3NlcnRfcmFpc2V8YXNzZXJ0X25vdGhpbmdfcmFpc2VkfGFzc2VydF9pbnN0YW5jZV9vZnxhc3NlcnRfa2luZF9vZnxhc3NlcnRfcmVzcG9uZF90b3xhc3NlcnRfb3BlcmF0b3J8YXNzZXJ0X3NlbmR8YXNzZXJ0X2RpZmZlcmVuY2V8YXNzZXJ0X25vX2RpZmZlcmVuY2V8YXNzZXJ0X3JlY29nbml6ZXN8YXNzZXJ0X2dlbmVyYXRlc3xhc3NlcnRfcmVzcG9uc2V8YXNzZXJ0X3JlZGlyZWN0ZWRfdG98YXNzZXJ0X3RlbXBsYXRlfGFzc2VydF9zZWxlY3R8YXNzZXJ0X3NlbGVjdF9lbWFpbHxhc3NlcnRfc2VsZWN0X3Jqc3xhc3NlcnRfc2VsZWN0X2VuY29kZWR8Y3NzX3NlbGVjdHxhdF9leGl0fGF0dHJ8YXR0cl93cml0ZXJ8YXR0cl9yZWFkZXJ8YXR0cl9hY2Nlc3NvcnxhdHRyX2FjY2Vzc2libGV8YXV0b2xvYWR8YmluZGluZ3xibG9ja19naXZlbj98Y2FsbGNjfGNhbGxlcnxjYXRjaHxjaG9tcHxjaG9tcCF8Y2hvcHxjaG9wIXxkZWZpbmVkP3xkZWxldGVfdmlhX3JlZGlyZWN0fGV2YWx8ZXhlY3xleGl0fGV4aXQhfGZhaWx8RmxvYXR8Zmx1bmt8Zm9sbG93X3JlZGlyZWN0IXxmb3JrfGZvcm1fZm9yfGZvcm1fdGFnfGZvcm1hdHxnZXRzfGdsb2JhbF92YXJpYWJsZXN8Z3N1Ynxnc3ViIXxnZXRfdmlhX3JlZGlyZWN0fGh8aG9zdCF8aHR0cHM/fGh0dHBzIXxpbmNsdWRlfEludGVnZXJ8bGFtYmRhfGxpbmtfdG98bGlua190b191bmxlc3NfY3VycmVudHxsaW5rX3RvX2Z1bmN0aW9ufGxpbmtfdG9fcmVtb3RlfGxvYWR8bG9jYWxfdmFyaWFibGVzfGxvb3B8b3BlbnxvcGVuX3Nlc3Npb258cHxwcmludHxwcmludGZ8cHJvY3xwdXRjfHB1dHN8cG9zdF92aWFfcmVkaXJlY3R8cHV0X3ZpYV9yZWRpcmVjdHxyYWlzZXxyYW5kfHJhd3xyZWFkbGluZXxyZWFkbGluZXN8cmVkaXJlY3Q/fHJlcXVlc3RfdmlhX3JlZGlyZWN0fHJlcXVpcmV8c2NhbnxzZWxlY3R8c2V0X3RyYWNlX2Z1bmN8c2xlZXB8c3BsaXR8c3ByaW50ZnxzcmFuZHxTdHJpbmd8c3R5bGVzaGVldF9saW5rX3RhZ3xzeXNjYWxsfHN5c3RlbXxzdWJ8c3ViIXx0ZXN0fHRocm93fHRyYWNlX3Zhcnx0cmFwfHVudHJhY2VfdmFyfGF0YW4yfGNvc3xleHB8ZnJleHB8bGRleHB8bG9nfGxvZzEwfHNpbnxzcXJ0fHRhbnxyZW5kZXJ8amF2YXNjcmlwdF9pbmNsdWRlX3RhZ3xjc3JmX21ldGFfdGFnfGxhYmVsX3RhZ3x0ZXh0X2ZpZWxkX3RhZ3xzdWJtaXRfdGFnfGNoZWNrX2JveF90YWd8Y29udGVudF90YWd8cmFkaW9fYnV0dG9uX3RhZ3x0ZXh0X2FyZWFfdGFnfHBhc3N3b3JkX2ZpZWxkX3RhZ3xoaWRkZW5fZmllbGRfdGFnfGZpZWxkc19mb3J8c2VsZWN0X3RhZ3xvcHRpb25zX2Zvcl9zZWxlY3R8b3B0aW9uc19mcm9tX2NvbGxlY3Rpb25fZm9yX3NlbGVjdHxjb2xsZWN0aW9uX3NlbGVjdHx0aW1lX3pvbmVfc2VsZWN0fHNlbGVjdF9kYXRlfHNlbGVjdF90aW1lfHNlbGVjdF9kYXRldGltZXxkYXRlX3NlbGVjdHx0aW1lX3NlbGVjdHxkYXRldGltZV9zZWxlY3R8c2VsZWN0X3llYXJ8c2VsZWN0X21vbnRofHNlbGVjdF9kYXl8c2VsZWN0X2hvdXJ8c2VsZWN0X21pbnV0ZXxzZWxlY3Rfc2Vjb25kfGZpbGVfZmllbGRfdGFnfGZpbGVfZmllbGR8cmVzcG9uZF90b3xza2lwX2JlZm9yZV9maWx0ZXJ8YXJvdW5kX2ZpbHRlcnxhZnRlcl9maWx0ZXJ8dmVyaWZ5fHByb3RlY3RfZnJvbV9mb3JnZXJ5fHJlc2N1ZV9mcm9tfGhlbHBlcl9tZXRob2R8cmVkaXJlY3RfdG98YmVmb3JlX2ZpbHRlcnxzZW5kX2RhdGF8c2VuZF9maWxlfHZhbGlkYXRlc19wcmVzZW5jZV9vZnx2YWxpZGF0ZXNfdW5pcXVlbmVzc19vZnx2YWxpZGF0ZXNfbGVuZ3RoX29mfHZhbGlkYXRlc19mb3JtYXRfb2Z8dmFsaWRhdGVzX2FjY2VwdGFuY2Vfb2Z8dmFsaWRhdGVzX2Fzc29jaWF0ZWR8dmFsaWRhdGVzX2V4Y2x1c2lvbl9vZnx2YWxpZGF0ZXNfaW5jbHVzaW9uX29mfHZhbGlkYXRlc19udW1lcmljYWxpdHlfb2Z8dmFsaWRhdGVzX3dpdGh8dmFsaWRhdGVzX2VhY2h8YXV0aGVudGljYXRlX29yX3JlcXVlc3Rfd2l0aF9odHRwX2Jhc2ljfGF1dGhlbnRpY2F0ZV9vcl9yZXF1ZXN0X3dpdGhfaHR0cF9kaWdlc3R8ZmlsdGVyX3BhcmFtZXRlcl9sb2dnaW5nfG1hdGNofGdldHxwb3N0fHJlc291cmNlc3xyZWRpcmVjdHxzY29wZXxhc3NlcnRfcm91dGluZ3x0cmFuc2xhdGV8bG9jYWxpemV8ZXh0cmFjdF9sb2NhbGVfZnJvbV90bGR8dHxsfGNhY2hlc19wYWdlfGV4cGlyZV9wYWdlfGNhY2hlc19hY3Rpb258ZXhwaXJlX2FjdGlvbnxjYWNoZXxleHBpcmVfZnJhZ21lbnR8ZXhwaXJlX2NhY2hlX2ZvcnxvYnNlcnZlfGNhY2hlX3N3ZWVwZXJ8aGFzX21hbnl8aGFzX29uZXxiZWxvbmdzX3RvfGhhc19hbmRfYmVsb25nc190b19tYW55Ii5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgiYWxpYXN8YW5kfEJFR0lOfGJlZ2lufGJyZWFrfGNhc2V8Y2xhc3N8ZGVmfGRlZmluZWR8ZG98ZWxzZXxlbHNpZnxFTkR8ZW5kfGVuc3VyZXxfX0ZJTEVfX3xmaW5hbGx5fGZvcnxnZW18aWZ8aW58X19MSU5FX198bW9kdWxlfG5leHR8bm90fG9yfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZWRvfHJlc2N1ZXxyZXRyeXxyZXR1cm58c3VwZXJ8dGhlbnx1bmRlZnx1bmxlc3N8dW50aWx8d2hlbnx3aGlsZXx5aWVsZCIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoInRydWV8VFJVRXxmYWxzZXxGQUxTRXxuaWx8TklMfEFSR0Z8QVJHVnxEQVRBfEVOVnxSVUJZX1BMQVRGT1JNfFJVQllfUkVMRUFTRV9EQVRFfFJVQllfVkVSU0lPTnxTVERFUlJ8U1RESU58U1RET1VUfFRPUExFVkVMX0JJTkRJTkciLnNwbGl0KCJ8IikpLGQ9ZS5hcnJheVRvTWFwKCIkREVCVUd8JGRlZm91dHwkRklMRU5BTUV8JExPQURfUEFUSHwkU0FGRXwkc3RkaW58JHN0ZG91dHwkc3RkZXJyfCRWRVJCT1NFfCQhfHJvb3RfdXJsfGZsYXNofHNlc3Npb258Y29va2llc3xwYXJhbXN8cmVxdWVzdHxyZXNwb25zZXxsb2dnZXIiLnNwbGl0KCJ8IikpO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiIy4qJCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Il49YmVnaW4kIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiW2BdKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1tgXSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Ijo6In0se3Rva2VuOiJ2YXJpYWJsZS5pbnN0YW5jY2UiLHJlZ2V4OiJAezEsMn0oPzpbYS16QS1aX118ZCkrIn0se3Rva2VuOiJ2YXJpYWJsZS5jbGFzcyIscmVnZXg6IltBLVpdKD86W2EtekEtWl9dfGQpKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWzpdKD86W0EtWmEtel9dfFtAJF0oPz1bYS16QS1aMC05X10pKVthLXpBLVowLTlfXSpbIT0/XT8ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdKD86WzAtOWEtZkEtRl18Xyg/PVswLTlhLWZBLUZdKSkqXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQoPzpcXGR8Xyg/PVxcZCkpKig/Oig/OlxcLlxcZCg/OlxcZHxfKD89XFxkKSkqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBlPT0ic2VsZiI/InZhcmlhYmxlLmxhbmd1YWdlIjpiLmhhc093blByb3BlcnR5KGUpPyJrZXl3b3JkIjpjLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5sYW5ndWFnZSI6ZC5oYXNPd25Qcm9wZXJ0eShlKT8idmFyaWFibGUubGFuZ3VhZ2UiOmEuaGFzT3duUHJvcGVydHkoZSk/InN1cHBvcnQuZnVuY3Rpb24iOmU9PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiIXxcXCR8JXwmfFxcKnxcXC1cXC18XFwtfFxcK1xcK3xcXCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXj1lbmQkIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfX07ZC5pbmhlcml0cyhnLGYpLGIuUnVieUhpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-scad.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zY2FkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3NjYWRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9zY2FkX2hpZ2hsaWdodF9ydWxlcyIpLnNjYWRIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWEoIi4vYmVoYXZpb3VyL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixrPWEoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxsPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgaCx0aGlzLiRiZWhhdmlvdXI9bmV3IGosdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGt9O2QuaW5oZXJpdHMobCxlKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSEwLGY9L14oXHMqKVwvXC8vO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKWlmKCFmLnRlc3QoYi5nZXRMaW5lKGcpKSl7ZT0hMTticmVha31pZihlKXt2YXIgaD1uZXcgaSgwLDAsMCwwKTtmb3IodmFyIGc9YztnPD1kO2crKyl7dmFyIGo9Yi5nZXRMaW5lKGcpLGs9ai5tYXRjaChmKTtoLnN0YXJ0LnJvdz1nLGguZW5kLnJvdz1nLGguZW5kLmNvbHVtbj1rWzBdLmxlbmd0aCxiLnJlcGxhY2UoaCxrWzFdKX19ZWxzZSBiLmluZGVudFJvd3MoYyxkLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnMsZz1lLnN0YXRlO2lmKGYubGVuZ3RoJiZmW2YubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDtpZihhPT0ic3RhcnQiKXt2YXIgaD1iLm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtoJiYoZCs9Yyl9ZWxzZSBpZihhPT0iZG9jLXN0YXJ0Iil7aWYoZz09InN0YXJ0IilyZXR1cm4iIjt2YXIgaD1iLm1hdGNoKC9eXHMqKFwvPylcKi8pO2gmJihoWzFdJiYoZCs9IiAiKSxkKz0iKiAiKX1yZXR1cm4gZH0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudChiLGMpfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYixjKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KGIsYyl9fS5jYWxsKGwucHJvdG90eXBlKSxiLk1vZGU9bH0pLGRlZmluZSgiYWNlL21vZGUvc2NhZF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxnPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsaD1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgibW9kdWxlfGlmfGVsc2V8Zm9yIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgiTlVMTCIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxmLmdldFN0YXJ0UnVsZSgic3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXS4qXFxcXCQnLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10uKlxcXFwkIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiI8W2EtekEtWjAtOS5dKz4ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzp1c2V8aW5jbHVkZSkifSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PSJ0aGlzIj8idmFyaWFibGUubGFuZ3VhZ2UiOmEuaGFzT3duUHJvcGVydHkoYyk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoYyk/ImNvbnN0YW50Lmxhbmd1YWdlIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIhfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x+fD09fD18IT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sdGhpcy5lbWJlZFJ1bGVzKGYsImRvYy0iLFtmLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ZC5pbmhlcml0cyhoLGcpLGIuc2NhZEhpZ2hsaWdodFJ1bGVzPWh9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ZC5pbmhlcml0cyhmLGUpLGYuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmF9fSxmLmdldEVuZFJ1bGU9ZnVuY3Rpb24oYSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDphfX0sYi5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0ieyIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiJ7IitnKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0ifSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGU9PSJcbiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgbD1kLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpoLnJvdyxjb2x1bW46aC5jb2x1bW4rMX0pO2lmKCFsKXJldHVybiBudWxsO3ZhciBtPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoYSxpLnN1YnN0cmluZygwLGkubGVuZ3RoLTEpLGQuZ2V0VGFiU3RyaW5nKCkpLG49dGhpcy4kZ2V0SW5kZW50KGQuZG9jLmdldExpbmUobC5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK20rIlxuIituLHNlbGVjdGlvbjpbMSxtLmxlbmd0aCwxLG0ubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09InsiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuZW5kLmNvbHVtbixlLmVuZC5jb2x1bW4rMSk7aWYoaD09In0iKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IigiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoiKCIrZysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09IikiKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSIpIil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0iKCIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0iKSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSciJ3x8ZT09IiciKXt2YXIgZj1lLGc9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGg9ZC5kb2MuZ2V0VGV4dFJhbmdlKGcpO2lmKGghPT0iIilyZXR1cm57dGV4dDpmK2grZixzZWxlY3Rpb246ITF9O3ZhciBpPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxqPWQuZG9jLmdldExpbmUoaS5yb3cpLGs9ai5zdWJzdHJpbmcoaS5jb2x1bW4tMSxpLmNvbHVtbik7aWYoaz09IlxcIilyZXR1cm4gbnVsbDt2YXIgbD1kLmdldFRva2VucyhnLnN0YXJ0LnJvdyksbT0wLG4sbz0tMTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyl7bj1sW3BdLG4udHlwZT09InN0cmluZyI/bz0tMTpvPDAmJihvPW4udmFsdWUuaW5kZXhPZihmKSk7aWYobi52YWx1ZS5sZW5ndGgrbT5nLnN0YXJ0LmNvbHVtbilicmVhazttKz1sW3BdLnZhbHVlLmxlbmd0aH1pZighbnx8bzwwJiZuLnR5cGUhPT0iY29tbWVudCImJihuLnR5cGUhPT0ic3RyaW5nInx8Zy5zdGFydC5jb2x1bW4hPT1uLnZhbHVlLmxlbmd0aCttLTEmJm4udmFsdWUubGFzdEluZGV4T2YoZik9PT1uLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpmK2Ysc2VsZWN0aW9uOlsxLDFdfTtpZihuJiZuLnR5cGU9PT0ic3RyaW5nIil7dmFyIHE9ai5zdWJzdHJpbmcoaS5jb2x1bW4saS5jb2x1bW4rMSk7aWYocT09ZilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmKGY9PSciJ3x8Zj09IiciKSl7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSciJylyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KX07ZC5pbmhlcml0cyhmLGUpLGIuQ3N0eWxlQmVoYXZpb3VyPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-scala.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zY2FsYSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvamF2YXNjcmlwdCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9zY2FsYV9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi9qYXZhc2NyaXB0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vc2NhbGFfaGlnaGxpZ2h0X3J1bGVzIikuU2NhbGFIaWdobGlnaHRSdWxlcyxoPWZ1bmN0aW9uKCl7ZS5jYWxsKHRoaXMpLHRoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpfTtkLmluaGVyaXRzKGgsZSksZnVuY3Rpb24oKXt0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbH19LmNhbGwoaC5wcm90b3R5cGUpLGIuTW9kZT1ofSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGs9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGw9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLG09ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgayx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ZC5pbmhlcml0cyhtLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopXC9cLy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucyxnPWUuc3RhdGU7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCJ8fGE9PSJyZWdleF9hbGxvd2VkIil7dmFyIGg9Yi5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTtoJiYoZCs9Yyl9ZWxzZSBpZihhPT0iZG9jLXN0YXJ0Iil7aWYoZz09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciBoPWIubWF0Y2goL15ccyooXC8/KVwqLyk7aCYmKGhbMV0mJihkKz0iICIpLGQrPSIqICIpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooWyJhY2UiXSwid29ya2VyLWphdmFzY3JpcHQuanMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigianNsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPGIuZGF0YS5sZW5ndGg7ZCsrKXt2YXIgZT1iLmRhdGFbZF07ZSYmYy5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY2hhcmFjdGVyLTEsdGV4dDplLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50OmV9KX1hLnNldEFubm90YXRpb25zKGMpfSksYi5vbigibmFyY2lzc3VzIixmdW5jdGlvbihiKXthLnNldEFubm90YXRpb25zKFtiLmRhdGFdKX0pLGIub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXthLmNsZWFyQW5ub3RhdGlvbnMoKX0pLGJ9fS5jYWxsKG0ucHJvdG90eXBlKSxiLk1vZGU9bX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4uL3VuaWNvZGUiKSxnPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksYz0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIsZD1lLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGk9ZS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGo9ZS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksaz0iWyIrZi5wYWNrYWdlcy5MKyJcXCRfXVsiK2YucGFja2FnZXMuTCtmLnBhY2thZ2VzLk1uK2YucGFja2FnZXMuTWMrZi5wYWNrYWdlcy5OZCtmLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGw9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LGcuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitrKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrYysiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/InZhcmlhYmxlLmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmguaGFzT3duUHJvcGVydHkoYyk/InN0b3JhZ2UudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmouaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuaWxsZWdhbCI6Yz09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omt9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omt9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhnLCJkb2MtIixbZy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaSxoKSxiLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvc2NhbGFfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi9saWIvbGFuZyIpLGY9YSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsZz1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGg9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoImNhc2V8ZGVmYXVsdHxkb3xlbHNlfGZvcnxpZnxtYXRjaHx3aGlsZXx0aHJvd3xyZXR1cm58dHJ5fGNhdGNofGZpbmFsbHl8eWllbGR8YWJzdHJhY3R8Y2xhc3N8ZGVmfGV4dGVuZHN8ZmluYWx8Zm9yU29tZXxpbXBsaWNpdHxpbXBsaWNpdHN8aW1wb3J0fGxhenl8bmV3fG9iamVjdHxvdmVycmlkZXxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHNlYWxlZHxzdXBlcnx0aGlzfHRyYWl0fHR5cGV8dmFsfHZhcnx3aXRoIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgidHJ1ZXxmYWxzZSIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoIkFic3RyYWN0TWV0aG9kRXJyb3J8QXNzZXJ0aW9uRXJyb3J8Q2xhc3NDaXJjdWxhcml0eUVycm9yfENsYXNzRm9ybWF0RXJyb3J8RGVwcmVjYXRlZHxFbnVtQ29uc3RhbnROb3RQcmVzZW50RXhjZXB0aW9ufEV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvcnxJbGxlZ2FsQWNjZXNzRXJyb3J8SWxsZWdhbFRocmVhZFN0YXRlRXhjZXB0aW9ufEluc3RhbnRpYXRpb25FcnJvcnxJbnRlcm5hbEVycm9yfE5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9ufE5vU3VjaEZpZWxkRXJyb3J8T3ZlcnJpZGV8UHJvY2Vzc3xQcm9jZXNzQnVpbGRlcnxTZWN1cml0eU1hbmFnZXJ8U3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxTdXBwcmVzc1dhcm5pbmdzfFR5cGVOb3RQcmVzZW50RXhjZXB0aW9ufFVua25vd25FcnJvcnxVbnNhdGlzZmllZExpbmtFcnJvcnxVbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yfFZlcmlmeUVycm9yfEluc3RhbnRpYXRpb25FeGNlcHRpb258SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb258Q2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb258Tm9TdWNoRmllbGRFeGNlcHRpb258SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9ufE51bWJlckZvcm1hdEV4Y2VwdGlvbnxTZWN1cml0eUV4Y2VwdGlvbnxWb2lkfEluaGVyaXRhYmxlVGhyZWFkTG9jYWx8SWxsZWdhbFN0YXRlRXhjZXB0aW9ufEludGVycnVwdGVkRXhjZXB0aW9ufE5vU3VjaE1ldGhvZEV4Y2VwdGlvbnxJbGxlZ2FsQWNjZXNzRXhjZXB0aW9ufFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9ufEVudW18U3RyaWN0TWF0aHxQYWNrYWdlfENvbXBpbGVyfFJlYWRhYmxlfFJ1bnRpbWV8U3RyaW5nQnVpbGRlcnxNYXRofEluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3J8Tm9TdWNoTWV0aG9kRXJyb3J8VGhyZWFkTG9jYWx8UnVudGltZVBlcm1pc3Npb258QXJpdGhtZXRpY0V4Y2VwdGlvbnxOdWxsUG9pbnRlckV4Y2VwdGlvbnxMb25nfEludGVnZXJ8U2hvcnR8Qnl0ZXxEb3VibGV8TnVtYmVyfEZsb2F0fENoYXJhY3RlcnxCb29sZWFufFN0YWNrVHJhY2VFbGVtZW50fEFwcGVuZGFibGV8U3RyaW5nQnVmZmVyfEl0ZXJhYmxlfFRocmVhZEdyb3VwfFJ1bm5hYmxlfFRocmVhZHxJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9ufFN0YWNrT3ZlcmZsb3dFcnJvcnxPdXRPZk1lbW9yeUVycm9yfFZpcnR1YWxNYWNoaW5lRXJyb3J8QXJyYXlTdG9yZUV4Y2VwdGlvbnxDbGFzc0Nhc3RFeGNlcHRpb258TGlua2FnZUVycm9yfE5vQ2xhc3NEZWZGb3VuZEVycm9yfENsYXNzTm90Rm91bmRFeGNlcHRpb258UnVudGltZUV4Y2VwdGlvbnxFeGNlcHRpb258VGhyZWFkRGVhdGh8RXJyb3J8VGhyb3dhYmxlfFN5c3RlbXxDbGFzc0xvYWRlcnxDbG9uZWFibGV8Q2xhc3N8Q2hhclNlcXVlbmNlfENvbXBhcmFibGV8U3RyaW5nfE9iamVjdHxVbml0fEFueXxBbnlWYWx8QW55UmVmfE51bGx8U2NhbGFPYmplY3R8U2luZ2xldG9ufFNlcXxJdGVyYWJsZXxMaXN0fE9wdGlvbnxBcnJheXxDaGFyfEJ5dGV8U2hvcnR8SW50fExvbmd8Tm90aGluZyIuc3BsaXQoInwiKSksZD1lLmFycmF5VG9NYXAoIiIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxmLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjBbeFhdWzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4OiIoPzp0cnVlfGZhbHNlKVxcYiJ9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gZT09InRoaXMiPyJ2YXJpYWJsZS5sYW5ndWFnZSI6YS5oYXNPd25Qcm9wZXJ0eShlKT8ia2V5d29yZCI6Yy5oYXNPd25Qcm9wZXJ0eShlKT8ic3VwcG9ydC5mdW5jdGlvbiI6ZC5oYXNPd25Qcm9wZXJ0eShlKT8ic3VwcG9ydC5mdW5jdGlvbiI6Yi5oYXNPd25Qcm9wZXJ0eShlKT8iY29uc3RhbnQubGFuZ3VhZ2UiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8XFwkfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcXHxcXHx8XFw/XFw6fFxcKj18JT18XFwrPXxcXC09fCY9fFxcXj18XFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sdGhpcy5lbWJlZFJ1bGVzKGYsImRvYy0iLFtmLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ZC5pbmhlcml0cyhoLGcpLGIuU2NhbGFIaWdobGlnaHRSdWxlcz1ofSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-scss.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zY3NzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3Njc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZz1hKCIuL3Njc3NfaGlnaGxpZ2h0X3J1bGVzIikuU2Nzc0hpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsaj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCksImkiKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBpfTtkLmluaGVyaXRzKGosZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLnRva2VucztpZihlLmxlbmd0aCYmZVtlLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIGQ7dmFyIGY9Yi5tYXRjaCgvXi4qXHtccyokLyk7cmV0dXJuIGYmJihkKz1jKSxkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX19LmNhbGwoai5wcm90b3R5cGUpLGIuTW9kZT1qfSksZGVmaW5lKCJhY2UvbW9kZS9zY3NzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcChmdW5jdGlvbigpe3ZhciBhPSItd2Via2l0LXwtbW96LXwtby18LW1zLXwtc3ZnLXwtcGllLXwta2h0bWwtIi5zcGxpdCgifCIpLGI9ImFwcGVhcmFuY2V8YmFja2dyb3VuZC1jbGlwfGJhY2tncm91bmQtaW5saW5lLXBvbGljeXxiYWNrZ3JvdW5kLW9yaWdpbnxiYWNrZ3JvdW5kLXNpemV8YmluZGluZ3xib3JkZXItYm90dG9tLWNvbG9yc3xib3JkZXItbGVmdC1jb2xvcnN8Ym9yZGVyLXJpZ2h0LWNvbG9yc3xib3JkZXItdG9wLWNvbG9yc3xib3JkZXItZW5kfGJvcmRlci1lbmQtY29sb3J8Ym9yZGVyLWVuZC1zdHlsZXxib3JkZXItZW5kLXdpZHRofGJvcmRlci1pbWFnZXxib3JkZXItc3RhcnR8Ym9yZGVyLXN0YXJ0LWNvbG9yfGJvcmRlci1zdGFydC1zdHlsZXxib3JkZXItc3RhcnQtd2lkdGh8Ym94LWFsaWdufGJveC1kaXJlY3Rpb258Ym94LWZsZXh8Ym94LWZsZXhncm91cHxib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaXppbmd8Y29sdW1uLWNvdW50fGNvbHVtbi1nYXB8Y29sdW1uLXdpZHRofGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLWNvbG9yfGZsb2F0LWVkZ2V8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGV8Zm9yY2UtYnJva2VuLWltYWdlLWljb258aW1hZ2UtcmVnaW9ufG1hcmdpbi1lbmR8bWFyZ2luLXN0YXJ0fG9wYWNpdHl8b3V0bGluZXxvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtcmFkaXVzfG91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnR8b3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHR8b3V0bGluZS1yYWRpdXMtdG9wbGVmdHxvdXRsaW5lLXJhZGl1cy10b3ByaWdodHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtd2lkdGh8cGFkZGluZy1lbmR8cGFkZGluZy1zdGFydHxzdGFjay1zaXppbmd8dGFiLXNpemV8dGV4dC1ibGlua3x0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9uLWxpbmV8dGV4dC1kZWNvcmF0aW9uLXN0eWxlfHRyYW5zZm9ybXx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zaXRpb258dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dXNlci1mb2N1c3x1c2VyLWlucHV0fHVzZXItbW9kaWZ5fHVzZXItc2VsZWN0fHdpbmRvdy1zaGFkb3d8Ym9yZGVyLXJhZGl1cyIuc3BsaXQoInwiKSxjPSJhemltdXRofGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b218Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItbGVmdHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItcmlnaHR8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci10b3B8Ym9yZGVyLXdpZHRofGJvcmRlcnxib3R0b218Ym94LXNpemluZ3xjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvcnxjb250ZW50fGNvdW50ZXItaW5jcmVtZW50fGNvdW50ZXItcmVzZXR8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxlbGV2YXRpb258ZW1wdHktY2VsbHN8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8aGVpZ2h0fGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFya2VyLW9mZnNldHxtYXJnaW58bWFya3N8bWF4LWhlaWdodHxtYXgtd2lkdGh8bWluLWhlaWdodHxtaW4td2lkdGh8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3d8b3ZlcmZsb3cteHxvdmVyZmxvdy15fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwaXRjaC1yYW5nZXxwaXRjaHxwbGF5LWR1cmluZ3xwb3NpdGlvbnxxdW90ZXN8cmljaG5lc3N8cmlnaHR8c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVlY2gtcmF0ZXxzcGVha3xzdHJlc3N8dGFibGUtbGF5b3V0fHRleHQtYWxpZ258dGV4dC1kZWNvcmF0aW9ufHRleHQtaW5kZW50fHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRvcHx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1mYW1pbHl8dm9sdW1lfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLXNwYWNpbmd8ei1pbmRleCIuc3BsaXQoInwiKSxkPVtdO2Zvcih2YXIgZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKylBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLChhW2VdK2Iuam9pbigifCIrYVtlXSkpLnNwbGl0KCJ8IikpO3JldHVybiBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGIpLEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsYyksZH0oKSksYj1lLmFycmF5VG9NYXAoImhzbHxoc2xhfHJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnN8YWJzfGFkanVzdF9jb2xvcnxhZGp1c3RfaHVlfGFscGhhfGpvaW58Ymx1ZXxjZWlsfGNoYW5nZV9jb2xvcnxjb21wYXJhYmxlfGNvbXBsZW1lbnR8ZGFya2VufGRlc2F0dXJhdGV8Zmxvb3J8Z3JheXNjYWxlfGdyZWVufGh1ZXxpZnxpbnZlcnR8am9pbnxsZW5ndGh8bGlnaHRlbnxsaWdodG5lc3N8bWl4fG50aHxvcGFjaWZ5fG9wYWNpdHl8cGVyY2VudGFnZXxxdW90ZXxyZWR8cm91bmR8c2F0dXJhdGV8c2F0dXJhdGlvbnxzY2FsZV9jb2xvcnx0cmFuc3BhcmVudGl6ZXx0eXBlX29mfHVuaXR8dW5pdGxlc3N8dW5xb3V0ZSIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoImFic29sdXRlfGFsbC1zY3JvbGx8YWx3YXlzfGFybWVuaWFufGF1dG98YmFzZWxpbmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJyZWFrLWFsbHxicmVhay13b3JkfGNhcGl0YWxpemV8Y2VudGVyfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjb2wtcmVzaXplfGNvbGxhcHNlfGNvbnRlbnQtYm94fGNyb3NzaGFpcnxkYXNoZWR8ZGVjaW1hbC1sZWFkaW5nLXplcm98ZGVjaW1hbHxkZWZhdWx0fGRpc2FibGVkfGRpc2N8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWxsaXBzaXN8Zml4ZWR8Z2VvcmdpYW58Z3Jvb3ZlfGhhbmR8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWRlb2dyYXBoLWFscGhhfGlkZW9ncmFwaC1udW1lcmljfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtc3BhY2V8aW5hY3RpdmV8aW5oZXJpdHxpbmxpbmUtYmxvY2t8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpc3QtaXRlbXxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1lZGl1bXxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWRyb3B8bm8tcmVwZWF0fG53LXJlc2l6ZXxub25lfG5vcm1hbHxub3QtYWxsb3dlZHxub3dyYXB8b2JsaXF1ZXxvdXRzZXR8b3V0c2lkZXxvdmVybGluZXxwb2ludGVyfHByb2dyZXNzfHJlbGF0aXZlfHJlcGVhdC14fHJlcGVhdC15fHJlcGVhdHxyaWdodHxyaWRnZXxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNtYWxsLWNhcHN8c29saWR8c3F1YXJlfHN0YXRpY3xzdHJpY3R8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGItcmx8dGV4dC1ib3R0b218dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8emVybyIuc3BsaXQoInwiKSksZD1lLmFycmF5VG9NYXAoImFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3ciLnNwbGl0KCJ8IikpLGY9ZS5hcnJheVRvTWFwKCJAbWl4aW58QGV4dGVuZHxAaW5jbHVkZXxAaW1wb3J0fEBtZWRpYXxAZGVidWd8QHdhcm58QGlmfEBmb3J8QGVhY2h8QHdoaWxlfEBlbHNlfEBmb250LWZhY2V8QC13ZWJraXQta2V5ZnJhbWVzfGlmfGFuZHwhZGVmYXVsdHxtb2R1bGV8ZGVmfGVuZHxkZWNsYXJlIi5zcGxpdCgifCIpKSxnPWUuYXJyYXlUb01hcCgiYXxhYmJyfGFjcm9ueW18YWRkcmVzc3xhcHBsZXR8YXJlYXxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJ8YmFzZXxiYXNlZm9udHxiZG98YmlnfGJsb2NrcXVvdGV8Ym9keXxicnxidXR0b258Y2FudmFzfGNhcHRpb258Y2VudGVyfGNpdGV8Y29kZXxjb2x8Y29sZ3JvdXB8Y29tbWFuZHxkYXRhbGlzdHxkZHxkZWx8ZGV0YWlsc3xkZm58ZGlyfGRpdnxkbHxkdHxlbXxlbWJlZHxmaWVsZHNldHxmaWdjYXB0aW9ufGZpZ3VyZXxmb250fGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGgxfGgyfGgzfGg0fGg1fGg2fGhlYWR8aGVhZGVyfGhncm91cHxocnxodG1sfGl8aWZyYW1lfGltZ3xpbnB1dHxpbnN8a2V5Z2VufGtiZHxsYWJlbHxsZWdlbmR8bGl8bGlua3xtYXB8bWFya3xtZW51fG1ldGF8bWV0ZXJ8bmF2fG5vZnJhbWVzfG5vc2NyaXB0fG9iamVjdHxvbHxvcHRncm91cHxvcHRpb258b3V0cHV0fHB8cGFyYW18cHJlfHByb2dyZXNzfHF8cnB8cnR8cnVieXxzfHNhbXB8c2NyaXB0fHNlY3Rpb258c2VsZWN0fHNtYWxsfHNvdXJjZXxzcGFufHN0cmlrZXxzdHJvbmd8c3R5bGV8c3VifHN1bW1hcnl8c3VwfHRhYmxlfHRib2R5fHRkfHRleHRhcmVhfHRmb290fHRofHRoZWFkfHRpbWV8dGl0bGV8dHJ8dHR8dXx1bHx2YXJ8dmlkZW98d2JyfHhtcCIuc3BsaXQoInwiKSksaD0iXFwtPyg/Oig/OlswLTldKyl8KD86WzAtOV0qXFwuWzAtOV0rKSkiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OidbIl0uKlxcXFwkJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLipcXFxcJCIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6aCsiKD86ZW18ZXh8cHh8Y218bW18aW58cHR8cGN8ZGVnfHJhZHxncmFkfG1zfHN8aHp8a2h6fCUpIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezZ9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezN9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpofSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjpmLmhhc093blByb3BlcnR5KGUpPyJrZXl3b3JkIjpjLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5sYW5ndWFnZSI6Yi5oYXNPd25Qcm9wZXJ0eShlKT8ic3VwcG9ydC5mdW5jdGlvbiI6ZC5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpnLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InZhcmlhYmxlLmxhbmd1YWdlIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W0BhLXpfXVtAYS16MC05X1xcLV0qIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlthLXpfXFwtJF1bYS16MC05X1xcLSRdKlxcYiJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiIjW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlLmxhbmd1YWdlIixyZWdleDoiXFwuW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlLmxhbmd1YWdlIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPHw+fDw9fD49fD09fCE9fC18JXwjfFxcK3xcXCR8XFwrfFxcKiJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLlNjc3NIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL3JhbmdlIikuUmFuZ2UsZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4vXlxzKyQvLnRlc3QoYSk/L15ccypcfS8udGVzdChiKTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0TGluZShiKSxlPWMubWF0Y2goL14oXHMqXH0pLyk7aWYoIWUpcmV0dXJuIDA7dmFyIGY9ZVsxXS5sZW5ndGgsZz1hLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpiLGNvbHVtbjpmfSk7aWYoIWd8fGcucm93PT1iKXJldHVybiAwO3ZhciBoPXRoaXMuJGdldEluZGVudChhLmdldExpbmUoZy5yb3cpKTthLnJlcGxhY2UobmV3IGQoYiwwLGIsZi0xKSxoKX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14oXHMrKS8pO3JldHVybiBiP2JbMV06IiJ9fSkuY2FsbChlLnByb3RvdHlwZSksYi5NYXRjaGluZ0JyYWNlT3V0ZGVudD1lfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-sh.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zaCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9zaF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vc2hfaGlnaGxpZ2h0X3J1bGVzIikuU2hIaWdobGlnaHRSdWxlcyxoPWEoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpfTtkLmluaGVyaXRzKGksZSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMCxmPS9eKFxzKikjLztmb3IodmFyIGc9YztnPD1kO2crKylpZighZi50ZXN0KGIuZ2V0TGluZShnKSkpe2U9ITE7YnJlYWt9aWYoZSl7dmFyIGk9bmV3IGgoMCwwLDAsMCk7Zm9yKHZhciBnPWM7Zzw9ZDtnKyspe3ZhciBqPWIuZ2V0TGluZShnKSxrPWoubWF0Y2goZik7aS5zdGFydC5yb3c9ZyxpLmVuZC5yb3c9ZyxpLmVuZC5jb2x1bW49a1swXS5sZW5ndGgsYi5yZXBsYWNlKGksa1sxXSl9fWVsc2UgYi5pbmRlbnRSb3dzKGMsZCwiIyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnM7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCIpe3ZhciBnPWIubWF0Y2goL14uKltce1woXFtcOl1ccyokLyk7ZyYmKGQrPWMpfXJldHVybiBkfTt2YXIgYT17cGFzczoxLCJyZXR1cm4iOjEscmFpc2U6MSwiYnJlYWsiOjEsImNvbnRpbnVlIjoxfTt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihiLGMsZCl7aWYoZCE9PSJcclxuIiYmZCE9PSJcciImJmQhPT0iXG4iKXJldHVybiExO3ZhciBlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGMudHJpbSgpLGIpLnRva2VucztpZighZSlyZXR1cm4hMTtkbyB2YXIgZj1lLnBvcCgpO3doaWxlKGYmJihmLnR5cGU9PSJjb21tZW50Inx8Zi50eXBlPT0idGV4dCImJmYudmFsdWUubWF0Y2goL15ccyskLykpKTtyZXR1cm4gZj9mLnR5cGU9PSJrZXl3b3JkIiYmYVtmLnZhbHVlXTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7Yys9MTt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYi5nZXRMaW5lKGMpKSxlPWIuZ2V0VGFiU3RyaW5nKCk7ZC5zbGljZSgtZS5sZW5ndGgpPT1lJiZiLnJlbW92ZShuZXcgaChjLGQubGVuZ3RoLWUubGVuZ3RoLGMsZC5sZW5ndGgpKX19LmNhbGwoaS5wcm90b3R5cGUpLGIuTW9kZT1pfSksZGVmaW5lKCJhY2UvbW9kZS9zaF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGc9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoIiF8e3x9fGNhc2V8ZG98ZG9uZXxlbGlmfGVsc2V8ZXNhY3xmaXxmb3J8aWZ8aW58dGhlbnx1bnRpbHx3aGlsZXwmfDt8ZXhwb3J0fGxvY2FsfHJlYWR8dHlwZXNldHx1bnNldHxlbGlmfHNlbGVjdHxzZXQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJbfF18YWxpYXN8Ymd8YmluZHxicmVha3xidWlsdGlufGNkfGNvbW1hbmR8Y29tcGdlbnxjb21wbGV0ZXxjb250aW51ZXxkaXJzfGRpc293bnxlY2hvfGVuYWJsZXxldmFsfGV4ZWN8ZXhpdHxmY3xmZ3xnZXRvcHRzfGhhc2h8aGVscHxoaXN0b3J5fGpvYnN8a2lsbHxsZXR8bG9nb3V0fHBvcGR8cHJpbnRmfHB1c2hkfHB3ZHxyZXR1cm58c2V0fHNoaWZ0fHNob3B0fHNvdXJjZXxzdXNwZW5kfHRlc3R8dGltZXN8dHJhcHx0eXBlfHVsaW1pdHx1bWFza3x1bmFsaWFzfHdhaXQiLnNwbGl0KCJ8IikpLGM9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixkPSIoPzpcXC5cXGQrKSIsZj0iKD86XFxkKykiLGc9Iig/Oig/OiIrZisiPyIrZCsiKXwoPzoiK2YrIlxcLikpIixoPSIoPzooPzoiK2crInwiK2YrIikiKyIpIixpPSIoPzoiK2grInwiK2crIikiLGo9Iig/OiYiK2YrIikiLGs9IlthLXpBLVpdW2EtekEtWjAtOV9dKiIsbD0iKD86KD86XFwkIitrKyIpfCg/OiIraysiPSkpIixtPSIoPzpcXCQoPzpTSExWTHxcXCR8XFwhfFxcPykpIixuPSIoPzoiK2srIlxccypcXChcXCkpIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPzpbXlxcXFxdfFxcXFwuKSo/Iid9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4Om19LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4Omx9LHt0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6bn0se3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDpqfSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPzpbXlxcXFxdfFxcXFwuKSo/JyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6aX0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpjKyJcXGIifSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoYyk/ImNvbnN0YW50Lmxhbmd1YWdlIjpjPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK3xcXC18XFwqfFxcKlxcKnxcXC98XFwvXFwvfH58PHw+fDw9fD0+fD18IT0ifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltcXFtcXChcXHtdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdXFwpXFx9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV19fTtkLmluaGVyaXRzKGcsZiksYi5TaEhpZ2hsaWdodFJ1bGVzPWd9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-sql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zcWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvc3FsX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9zcWxfaGlnaGxpZ2h0X3J1bGVzIikuU3FsSGlnaGxpZ2h0UnVsZXMsaD1hKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKX07ZC5pbmhlcml0cyhpLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj1bXSxnPS9eKFxzKiktLS87Zm9yKHZhciBpPWM7aTw9ZDtpKyspaWYoIWcudGVzdChiLmdldExpbmUoaSkpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBqPW5ldyBoKDAsMCwwLDApO2Zvcih2YXIgaT1jO2k8PWQ7aSsrKXt2YXIgaz1iLmdldExpbmUoaSksbD1rLm1hdGNoKGcpO2ouc3RhcnQucm93PWksai5lbmQucm93PWksai5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLGIucmVwbGFjZShqLGxbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIi0tIil9fS5jYWxsKGkucHJvdG90eXBlKSxiLk1vZGU9aX0pLGRlZmluZSgiYWNlL21vZGUvc3FsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgic2VsZWN0fGZyb218d2hlcmV8YW5kfG9yfGdyb3VwfGJ5fG9yZGVyfGxpbWl0fG9mZnNldHxoYXZpbmd8YXN8Y2FzZXx3aGVufGVsc2V8ZW5kfHR5cGV8bGVmdHxyaWdodHxqb2lufG9ufG91dGVyfGRlc2N8YXNjIi5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgidHJ1ZXxmYWxzZXxudWxsIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgiY291bnR8bWlufG1heHxhdmd8c3VtfHJhbmt8bm93fGNvYWxlc2NlIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii0tLiokIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLioiJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLionIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ZnVuY3Rpb24oZCl7cmV0dXJuIGQ9ZC50b0xvd2VyQ2FzZSgpLGEuaGFzT3duUHJvcGVydHkoZCk/ImtleXdvcmQiOmIuaGFzT3duUHJvcGVydHkoZCk/ImNvbnN0YW50Lmxhbmd1YWdlIjpjLmhhc093blByb3BlcnR5KGQpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXCt8XFwtfFxcL3xcXC9cXC98JXw8QD58QD58PEB8JnxcXF58fnw8fD58PD18PT58PT18IT18PD58PSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcKF0ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXCldIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XX19O2QuaW5oZXJpdHMoZyxmKSxiLlNxbEhpZ2hsaWdodFJ1bGVzPWd9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-svg.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zdmciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3htbCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvc3ZnX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4veG1sIikuTW9kZSxmPWEoIi4vamF2YXNjcmlwdCIpLk1vZGUsZz1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaD1hKCIuL3N2Z19oaWdobGlnaHRfcnVsZXMiKS5TdmdIaWdobGlnaHRSdWxlcyxpPWEoIi4vZm9sZGluZy9taXhlZCIpLkZvbGRNb2RlLGo9YSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGs9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXtlLmNhbGwodGhpcyksdGhpcy5oaWdobGlnaHRlcj1uZXcgaCx0aGlzLiR0b2tlbml6ZXI9bmV3IGcodGhpcy5oaWdobGlnaHRlci5nZXRSdWxlcygpKSx0aGlzLiRlbWJlZHM9dGhpcy5oaWdobGlnaHRlci5nZXRFbWJlZHMoKSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXMoeyJqcy0iOmZ9KSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgaShuZXcgaih7fSkseyJqcy0iOm5ldyBrfSl9O2QuaW5oZXJpdHMobCxlKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRnZXRJbmRlbnQoYil9fS5jYWxsKGwucHJvdG90eXBlKSxiLk1vZGU9bH0pLGRlZmluZSgiYWNlL21vZGUveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3htbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvZm9sZGluZy94bWwiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4veG1sX2hpZ2hsaWdodF9ydWxlcyIpLlhtbEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGk9YSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGo9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRiZWhhdmlvdXI9bmV3IGgsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGl9O2QuaW5oZXJpdHMoaixlKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRnZXRJbmRlbnQoYil9fS5jYWxsKGoucHJvdG90eXBlKSxiLk1vZGU9an0pLGRlZmluZSgiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3htbF91dGlsIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGc9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sZS50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0Iil9O2QuaW5oZXJpdHMoZyxmKSxiLlhtbEhpZ2hsaWdodFJ1bGVzPWd9KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmErIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmErIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2EsbmV4dDpifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXZhciBkPWEoIi4uL2xpYi9sYW5nIiksZT1kLmFycmF5VG9NYXAoImJ1dHRvbnxmb3JtfGlucHV0fGxhYmVsfHNlbGVjdHx0ZXh0YXJlYSIuc3BsaXQoInwiKSksZj1kLmFycmF5VG9NYXAoInRhYmxlfHRib2R5fHRkfHRmb290fHRofHRyIi5zcGxpdCgifCIpKTtiLnRhZz1mdW5jdGlvbihhLGIsYyl7YVtiXT1be3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjpmdW5jdGlvbihhKXtyZXR1cm4gYT09PSJhIj8ibWV0YS50YWcuYW5jaG9yIjphPT09ImltZyI/Im1ldGEudGFnLmltYWdlIjphPT09InNjcmlwdCI/Im1ldGEudGFnLnNjcmlwdCI6YT09PSJzdHlsZSI/Im1ldGEudGFnLnN0eWxlIjplLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/Im1ldGEudGFnLmZvcm0iOmYuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT8ibWV0YS50YWcudGFibGUiOiJtZXRhLnRhZyJ9LG1lcmdlOiEwLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsiLG5leHQ6YisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDpiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifV0sYVtiKyJfcXN0cmluZyJdPWgoIiciLGIrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGFbYisiX3Fxc3RyaW5nIl09aCgnIicsYisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksYVtiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiXT1be3Rva2VuOiJtZXRhLnRhZyIsbWVyZ2U6ITAscmVnZXg6Ii8/PiIsbmV4dDpjfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI9In0se3Rva2VuOiJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUiLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0uY29uY2F0KGcoYikpfX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1hKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixnPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KGYsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYnJhY2tldHMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IjwiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj8hMTp7dGV4dDoiPD4iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09Ij4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSI+IilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaz1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisyKTtpZihrPT0iPC8iKXt2YXIgbD10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpK2QuZ2V0VGFiU3RyaW5nKCksbT10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbCsiXG4iK20sc2VsZWN0aW9uOlsxLGwubGVuZ3RoLDEsbC5sZW5ndGhdfX19fSl9O2QuaW5oZXJpdHMoZyxlKSxiLlhtbEJlaGF2aW91cj1nfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLGY9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSJ7Iil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6InsiK2crIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSJ9Iil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0ifSIpe3ZhciBsPWQuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93Omgucm93LGNvbHVtbjpoLmNvbHVtbisxfSk7aWYoIWwpcmV0dXJuIG51bGw7dmFyIG09dGhpcy5nZXROZXh0TGluZUluZGVudChhLGkuc3Vic3RyaW5nKDAsaS5sZW5ndGgtMSksZC5nZXRUYWJTdHJpbmcoKSksbj10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShsLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbSsiXG4iK24sc2VsZWN0aW9uOlsxLG0ubGVuZ3RoLDEsbS5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0ieyIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5lbmQuY29sdW1uLGUuZW5kLmNvbHVtbisxKTtpZihoPT0ifSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0iKCIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiIoIitnKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0iKSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09IikiKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSIoIil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSIpIilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09JyInfHxlPT0iJyIpe3ZhciBmPWUsZz1jLmdldFNlbGVjdGlvblJhbmdlKCksaD1kLmRvYy5nZXRUZXh0UmFuZ2UoZyk7aWYoaCE9PSIiKXJldHVybnt0ZXh0OmYraCtmLHNlbGVjdGlvbjohMX07dmFyIGk9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGo9ZC5kb2MuZ2V0TGluZShpLnJvdyksaz1qLnN1YnN0cmluZyhpLmNvbHVtbi0xLGkuY29sdW1uKTtpZihrPT0iXFwiKXJldHVybiBudWxsO3ZhciBsPWQuZ2V0VG9rZW5zKGcuc3RhcnQucm93KSxtPTAsbixvPS0xO2Zvcih2YXIgcD0wO3A8bC5sZW5ndGg7cCsrKXtuPWxbcF0sbi50eXBlPT0ic3RyaW5nIj9vPS0xOm88MCYmKG89bi52YWx1ZS5pbmRleE9mKGYpKTtpZihuLnZhbHVlLmxlbmd0aCttPmcuc3RhcnQuY29sdW1uKWJyZWFrO20rPWxbcF0udmFsdWUubGVuZ3RofWlmKCFufHxvPDAmJm4udHlwZSE9PSJjb21tZW50IiYmKG4udHlwZSE9PSJzdHJpbmcifHxnLnN0YXJ0LmNvbHVtbiE9PW4udmFsdWUubGVuZ3RoK20tMSYmbi52YWx1ZS5sYXN0SW5kZXhPZihmKT09PW4udmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OmYrZixzZWxlY3Rpb246WzEsMV19O2lmKG4mJm4udHlwZT09PSJzdHJpbmciKXt2YXIgcT1qLnN1YnN0cmluZyhpLmNvbHVtbixpLmNvbHVtbisxKTtpZihxPT1mKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiYoZj09JyInfHxmPT0iJyIpKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09JyInKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pfTtkLmluaGVyaXRzKGYsZSksYi5Dc3R5bGVCZWhhdmlvdXI9Zn0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIiwiYWNlL3Rva2VuX2l0ZXJhdG9yIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uLy4uL2xpYi9sYW5nIiksZj1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGc9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxoPWEoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixpPWIuRm9sZE1vZGU9ZnVuY3Rpb24oYSl7Zy5jYWxsKHRoaXMpLHRoaXMudm9pZEVsZW1lbnRzPWF8fHt9fTtkLmluaGVyaXRzKGksZyksZnVuY3Rpb24oKXt0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX2dldEZpcnN0VGFnSW5MaW5lKGEsYyk7cmV0dXJuIGQuY2xvc2luZz9iPT0ibWFya2JlZ2luZW5kIj8iZW5kIjoiIjohZC50YWdOYW1lfHx0aGlzLnZvaWRFbGVtZW50c1tkLnRhZ05hbWUudG9Mb3dlckNhc2UoKV0/IiI6ZC5zZWxmQ2xvc2luZz8iIjpkLnZhbHVlLmluZGV4T2YoIi8iK2QudGFnTmFtZSkhPT0tMT8iIjoic3RhcnQifSx0aGlzLl9nZXRGaXJzdFRhZ0luTGluZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0VG9rZW5zKGIpLGQ9IiI7Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspe3ZhciBnPWNbZl07Zy50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wP2QrPWcudmFsdWU6ZCs9ZS5zdHJpbmdSZXBlYXQoIiAiLGcudmFsdWUubGVuZ3RoKX1yZXR1cm4gdGhpcy5fcGFyc2VUYWcoZCl9LHRoaXMudGFnUmU9L14oXHMqKSg8PyhcLz8pKFstX2EtekEtWjAtOTohXSopXHMqKFwvPyk+PykvLHRoaXMuX3BhcnNlVGFnPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFnUmUuZXhlYyhhKSxjPXRoaXMudGFnUmUubGFzdEluZGV4fHwwO3JldHVybiB0aGlzLnRhZ1JlLmxhc3RJbmRleD0wLHt2YWx1ZTphLG1hdGNoOmI/YlsyXToiIixjbG9zaW5nOmI/ISFiWzNdOiExLHNlbGZDbG9zaW5nOmI/ISFiWzVdfHxiWzJdPT0iLz4iOiExLHRhZ05hbWU6Yj9iWzRdOiIiLGNvbHVtbjpiWzFdP2MrYlsxXS5sZW5ndGg6Y319LHRoaXMuX3JlYWRUYWdGb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q3VycmVudFRva2VuKCk7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGM9IiIsZDtkbyBpZihiLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTApe2lmKCFkKXZhciBkPXtyb3c6YS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46YS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX07Yys9Yi52YWx1ZTtpZihjLmluZGV4T2YoIj4iKSE9PS0xKXt2YXIgZT10aGlzLl9wYXJzZVRhZyhjKTtyZXR1cm4gZS5zdGFydD1kLGUuZW5kPXtyb3c6YS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46YS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKStiLnZhbHVlLmxlbmd0aH0sYS5zdGVwRm9yd2FyZCgpLGV9fXdoaWxlKGI9YS5zdGVwRm9yd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcmVhZFRhZ0JhY2t3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q3VycmVudFRva2VuKCk7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGM9IiIsZDtkbyBpZihiLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTApe2R8fChkPXtyb3c6YS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46YS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKStiLnZhbHVlLmxlbmd0aH0pLGM9Yi52YWx1ZStjO2lmKGMuaW5kZXhPZigiPCIpIT09LTEpe3ZhciBlPXRoaXMuX3BhcnNlVGFnKGMpO3JldHVybiBlLmVuZD1kLGUuc3RhcnQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfSxhLnN0ZXBCYWNrd2FyZCgpLGV9fXdoaWxlKGI9YS5zdGVwQmFja3dhcmQoKSk7cmV0dXJuIG51bGx9LHRoaXMuX3BvcD1mdW5jdGlvbihhLGIpe3doaWxlKGEubGVuZ3RoKXt2YXIgYz1hW2EubGVuZ3RoLTFdO2lmKCFifHxjLnRhZ05hbWU9PWIudGFnTmFtZSlyZXR1cm4gYS5wb3AoKTtpZih0aGlzLnZvaWRFbGVtZW50c1tiLnRhZ05hbWVdKXJldHVybjtpZih0aGlzLnZvaWRFbGVtZW50c1tjLnRhZ05hbWVdKXthLnBvcCgpO2NvbnRpbnVlfXJldHVybiBudWxsfX0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX2dldEZpcnN0VGFnSW5MaW5lKGEsYyk7aWYoIWQubWF0Y2gpcmV0dXJuIG51bGw7dmFyIGU9ZC5jbG9zaW5nfHxkLnNlbGZDbG9zaW5nLGc9W10saTtpZighZSl7dmFyIGo9bmV3IGgoYSxjLGQuY29sdW1uKSxrPXtyb3c6Yyxjb2x1bW46ZC5jb2x1bW4rZC50YWdOYW1lLmxlbmd0aCsyfTt3aGlsZShpPXRoaXMuX3JlYWRUYWdGb3J3YXJkKGopKXtpZihpLnNlbGZDbG9zaW5nKXtpZighZy5sZW5ndGgpcmV0dXJuIGkuc3RhcnQuY29sdW1uKz1pLnRhZ05hbWUubGVuZ3RoKzIsaS5lbmQuY29sdW1uLT0yLGYuZnJvbVBvaW50cyhpLnN0YXJ0LGkuZW5kKTtjb250aW51ZX1pZihpLmNsb3Npbmcpe3RoaXMuX3BvcChnLGkpO2lmKGcubGVuZ3RoPT0wKXJldHVybiBmLmZyb21Qb2ludHMoayxpLnN0YXJ0KX1lbHNlIGcucHVzaChpKX19ZWxzZXt2YXIgaj1uZXcgaChhLGMsZC5jb2x1bW4rZC5tYXRjaC5sZW5ndGgpLGw9e3JvdzpjLGNvbHVtbjpkLmNvbHVtbn07d2hpbGUoaT10aGlzLl9yZWFkVGFnQmFja3dhcmQoaikpe2lmKGkuc2VsZkNsb3Npbmcpe2lmKCFnLmxlbmd0aClyZXR1cm4gaS5zdGFydC5jb2x1bW4rPWkudGFnTmFtZS5sZW5ndGgrMixpLmVuZC5jb2x1bW4tPTIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsaS5lbmQpO2NvbnRpbnVlfWlmKCFpLmNsb3Npbmcpe3RoaXMuX3BvcChnLGkpO2lmKGcubGVuZ3RoPT0wKXJldHVybiBpLnN0YXJ0LmNvbHVtbis9aS50YWdOYW1lLmxlbmd0aCsyLGYuZnJvbVBvaW50cyhpLnN0YXJ0LGwpfWVsc2UgZy5wdXNoKGkpfX19fS5jYWxsKGkucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxlPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KGQpPyJzdGFydCI6Yj09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChkKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPS9eXHMqLyxmPWIsZz1iLGg9YS5nZXRMaW5lKGIpLGk9Y3x8aC5sZW5ndGgsaj1oLm1hdGNoKGUpWzBdLmxlbmd0aCxrPWEuZ2V0TGVuZ3RoKCk7d2hpbGUoKytiPGspe2g9YS5nZXRMaW5lKGIpO3ZhciBsPWgubWF0Y2goZSlbMF0ubGVuZ3RoO2lmKGw9PWgubGVuZ3RoKWNvbnRpbnVlO2lmKGw8PWopYnJlYWs7Zz1ifWlmKGc+Zil7dmFyIG09YS5nZXRMaW5lKGcpLmxlbmd0aDtyZXR1cm4gbmV3IGQoZixpLGcsbSl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3ZhciBoPXtyb3c6Yyxjb2x1bW46ZSsxfSxpPWEuJGZpbmRDbG9zaW5nQnJhY2tldChiLGgsZixnKTtpZighaSlyZXR1cm47dmFyIGo9YS5mb2xkV2lkZ2V0c1tpLnJvd107cmV0dXJuIGo9PW51bGwmJihqPXRoaXMuZ2V0Rm9sZFdpZGdldChhLGkucm93KSksaj09InN0YXJ0IiYmKGkucm93LS0saS5jb2x1bW49YS5nZXRMaW5lKGkucm93KS5sZW5ndGgpLGQuZnJvbVBvaW50cyhoLGkpfX0pLmNhbGwoZS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGs9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGw9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLG09ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgayx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ZC5pbmhlcml0cyhtLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopXC9cLy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucyxnPWUuc3RhdGU7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCJ8fGE9PSJyZWdleF9hbGxvd2VkIil7dmFyIGg9Yi5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTtoJiYoZCs9Yyl9ZWxzZSBpZihhPT0iZG9jLXN0YXJ0Iil7aWYoZz09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciBoPWIubWF0Y2goL15ccyooXC8/KVwqLyk7aCYmKGhbMV0mJihkKz0iICIpLGQrPSIqICIpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooWyJhY2UiXSwid29ya2VyLWphdmFzY3JpcHQuanMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigianNsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPGIuZGF0YS5sZW5ndGg7ZCsrKXt2YXIgZT1iLmRhdGFbZF07ZSYmYy5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY2hhcmFjdGVyLTEsdGV4dDplLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50OmV9KX1hLnNldEFubm90YXRpb25zKGMpfSksYi5vbigibmFyY2lzc3VzIixmdW5jdGlvbihiKXthLnNldEFubm90YXRpb25zKFtiLmRhdGFdKX0pLGIub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXthLmNsZWFyQW5ub3RhdGlvbnMoKX0pLGJ9fS5jYWxsKG0ucHJvdG90eXBlKSxiLk1vZGU9bX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4uL3VuaWNvZGUiKSxnPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksYz0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIsZD1lLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGk9ZS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGo9ZS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksaz0iWyIrZi5wYWNrYWdlcy5MKyJcXCRfXVsiK2YucGFja2FnZXMuTCtmLnBhY2thZ2VzLk1uK2YucGFja2FnZXMuTWMrZi5wYWNrYWdlcy5OZCtmLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGw9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LGcuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitrKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrYysiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/InZhcmlhYmxlLmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmguaGFzT3duUHJvcGVydHkoYyk/InN0b3JhZ2UudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmouaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuaWxsZWdhbCI6Yz09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omt9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omt9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhnLCJkb2MtIixbZy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaSxoKSxiLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGY9YSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxnPWIuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O2QuaW5oZXJpdHMoZyxmKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyksZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4O2lmKGZbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhhLGZbMV0sYyxnKTt2YXIgaD1hLmdldENvbW1lbnRGb2xkUmFuZ2UoYyxnK2ZbMF0ubGVuZ3RoKTtyZXR1cm4gaC5lbmQuY29sdW1uLT0yLGh9aWYoYiE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgZj1kLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKGYpe3ZhciBnPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoZlsyXSl7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZyk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofXZhciBpPXtyb3c6Yyxjb2x1bW46Z30saj1hLiRmaW5kT3BlbmluZ0JyYWNrZXQoZlsxXSxpKTtpZighailyZXR1cm47cmV0dXJuIGouY29sdW1uKyssaS5jb2x1bW4tLSxlLmZyb21Qb2ludHMoaixpKX19fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvc3ZnX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUveG1sX3V0aWwiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxmPWEoIi4veG1sX2hpZ2hsaWdodF9ydWxlcyIpLlhtbEhpZ2hsaWdodFJ1bGVzLGc9YSgiLi94bWxfdXRpbCIpLGg9ZnVuY3Rpb24oKXtmLmNhbGwodGhpcyksdGhpcy4kcnVsZXMuc3RhcnQuc3BsaWNlKDMsMCx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PXMqc2NyaXB0KSIsbmV4dDoic2NyaXB0In0pLGcudGFnKHRoaXMuJHJ1bGVzLCJzY3JpcHQiLCJqcy1zdGFydCIpLHRoaXMuZW1iZWRSdWxlcyhlLCJqcy0iLFt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKig/PTxcXC9zY3JpcHQ+KSIsbmV4dDoidGFnIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8oPz1zY3JpcHQpIixuZXh0OiJ0YWcifV0pfTtkLmluaGVyaXRzKGgsZiksYi5TdmdIaWdobGlnaHRSdWxlcz1ofSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL21peGVkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGY9Yi5Gb2xkTW9kZT1mdW5jdGlvbihhLGIpe3RoaXMuZGVmYXVsdE1vZGU9YSx0aGlzLnN1Yk1vZGVzPWJ9O2QuaW5oZXJpdHMoZixlKSxmdW5jdGlvbigpe3RoaXMuJGdldE1vZGU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIHRoaXMuc3ViTW9kZXMpaWYoYS5pbmRleE9mKGIpPT09MClyZXR1cm4gdGhpcy5zdWJNb2Rlc1tiXTtyZXR1cm4gbnVsbH0sdGhpcy4kdHJ5TW9kZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLiRnZXRNb2RlKGEpO3JldHVybiBlP2UuZ2V0Rm9sZFdpZGdldChiLGMsZCk6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJHRyeU1vZGUoYS5nZXRTdGF0ZShjLTEpLGEsYixjKXx8dGhpcy4kdHJ5TW9kZShhLmdldFN0YXRlKGMpLGEsYixjKXx8dGhpcy5kZWZhdWx0TW9kZS5nZXRGb2xkV2lkZ2V0KGEsYixjKX0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldE1vZGUoYS5nZXRTdGF0ZShjLTEpKTtpZighZHx8IWQuZ2V0Rm9sZFdpZGdldChhLGIsYykpZD10aGlzLiRnZXRNb2RlKGEuZ2V0U3RhdGUoYykpO2lmKCFkfHwhZC5nZXRGb2xkV2lkZ2V0KGEsYixjKSlkPXRoaXMuZGVmYXVsdE1vZGU7cmV0dXJuIGQuZ2V0Rm9sZFdpZGdldFJhbmdlKGEsYixjKX19LmNhbGwoZi5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-text.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-textile.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS90ZXh0aWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3RleHRpbGVfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi90ZXh0aWxlX2hpZ2hsaWdodF9ydWxlcyIpLlRleHRpbGVIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBofTtkLmluaGVyaXRzKGksZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYT09ImludGFnIj9jOiIifSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX19LmNhbGwoaS5wcm90b3R5cGUpLGIuTW9kZT1pfSksZGVmaW5lKCJhY2UvbW9kZS90ZXh0aWxlX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGEubWF0Y2goL15oXGQkLyk/Im1hcmt1cC5oZWFkaW5nLiIrYS5jaGFyQXQoMSk6Im1hcmt1cC5oZWFkaW5nIn0scmVnZXg6ImgxfGgyfGgzfGg0fGg1fGg2fGJxfHB8YmN8cHJlIixuZXh0OiJibG9ja3RhZyJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCpdK3xbI10rIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiLisifV0sYmxvY2t0YWc6W3t0b2tlbjoia2V5d29yZCIscmVnZXg6IlxcLiAiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiXFwoIixuZXh0OiJibG9ja3RhZ3Byb3BlcnRpZXMifV0sYmxvY2t0YWdwcm9wZXJ0aWVzOlt7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiJcXCkiLG5leHQ6ImJsb2NrdGFnIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbYS16QS1aMC05XFwtX10rIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiIyJ9XX19O2QuaW5oZXJpdHMoZixlKSxiLlRleHRpbGVIaWdobGlnaHRSdWxlcz1mfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL3JhbmdlIikuUmFuZ2UsZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4vXlxzKyQvLnRlc3QoYSk/L15ccypcfS8udGVzdChiKTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0TGluZShiKSxlPWMubWF0Y2goL14oXHMqXH0pLyk7aWYoIWUpcmV0dXJuIDA7dmFyIGY9ZVsxXS5sZW5ndGgsZz1hLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpiLGNvbHVtbjpmfSk7aWYoIWd8fGcucm93PT1iKXJldHVybiAwO3ZhciBoPXRoaXMuJGdldEluZGVudChhLmdldExpbmUoZy5yb3cpKTthLnJlcGxhY2UobmV3IGQoYiwwLGIsZi0xKSxoKX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14oXHMrKS8pO3JldHVybiBiP2JbMV06IiJ9fSkuY2FsbChlLnByb3RvdHlwZSksYi5NYXRjaGluZ0JyYWNlT3V0ZGVudD1lfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-xml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi94bWxfaGlnaGxpZ2h0X3J1bGVzIikuWG1sSGlnaGxpZ2h0UnVsZXMsaD1hKCIuL2JlaGF2aW91ci94bWwiKS5YbWxCZWhhdmlvdXIsaT1hKCIuL2ZvbGRpbmcveG1sIikuRm9sZE1vZGUsaj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpLHRoaXMuJGJlaGF2aW91cj1uZXcgaCx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgaX07ZC5pbmhlcml0cyhqLGUpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJGdldEluZGVudChiKX19LmNhbGwoai5wcm90b3R5cGUpLGIuTW9kZT1qfSksZGVmaW5lKCJhY2UvbW9kZS94bWxfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS94bWxfdXRpbCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4veG1sX3V0aWwiKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiPFxcIVxcW0NEQVRBXFxbIixuZXh0OiJjZGF0YSJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcPy4qP1xcPz4ifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhLS0iLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXCEuKj8+In0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb25zdGFudC5jaGFyYWN0ZXIuZW50aXR5IixyZWdleDoiKD86JiNbMC05XSs7KXwoPzomI3hbMC05YS1mQS1GXSs7KXwoPzomW2EtekEtWjAtOV86XFwuLV0rOykifSx7dG9rZW46InRleHQiLHJlZ2V4OiJbXjxdKyJ9XSxjZGF0YTpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxdXFxdPiIsbmV4dDoic3RhcnQifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiKD86W15cXF1dfFxcXSg/IVxcXT4pKSsifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/LS0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSxlLnRhZyh0aGlzLiRydWxlcywidGFnIiwic3RhcnQiKX07ZC5pbmhlcml0cyhnLGYpLGIuWG1sSGlnaGxpZ2h0UnVsZXM9Z30pLGRlZmluZSgiYWNlL21vZGUveG1sX3V0aWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2xhbmciXSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZyhhKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDonWyJdLionLG5leHQ6YSsiX3Fxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLioiLG5leHQ6YSsiX3FzdHJpbmcifV19ZnVuY3Rpb24gaChhLGIpe3JldHVyblt7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4qPyIrYSxuZXh0OmJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19dmFyIGQ9YSgiLi4vbGliL2xhbmciKSxlPWQuYXJyYXlUb01hcCgiYnV0dG9ufGZvcm18aW5wdXR8bGFiZWx8c2VsZWN0fHRleHRhcmVhIi5zcGxpdCgifCIpKSxmPWQuYXJyYXlUb01hcCgidGFibGV8dGJvZHl8dGR8dGZvb3R8dGh8dHIiLnNwbGl0KCJ8IikpO2IudGFnPWZ1bmN0aW9uKGEsYixjKXthW2JdPVt7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09ImEiPyJtZXRhLnRhZy5hbmNob3IiOmE9PT0iaW1nIj8ibWV0YS50YWcuaW1hZ2UiOmE9PT0ic2NyaXB0Ij8ibWV0YS50YWcuc2NyaXB0IjphPT09InN0eWxlIj8ibWV0YS50YWcuc3R5bGUiOmUuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT8ibWV0YS50YWcuZm9ybSI6Zi5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpPyJtZXRhLnRhZy50YWJsZSI6Im1ldGEudGFnIn0sbWVyZ2U6ITAscmVnZXg6IlstX2EtekEtWjAtOTpdKyIsbmV4dDpiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OmIrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJ9XSxhW2IrIl9xc3RyaW5nIl09aCgiJyIsYisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksYVtiKyJfcXFzdHJpbmciXT1oKCciJyxiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiKSxhW2IrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJdPVt7dG9rZW46Im1ldGEudGFnIixtZXJnZTohMCxyZWdleDoiLz8+IixuZXh0OmN9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6Ij0ifSx7dG9rZW46ImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZSIscmVnZXg6IlstX2EtekEtWjAtOTpdKyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XS5jb25jYXQoZyhiKSl9fSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWEoIi4vY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGc9ZnVuY3Rpb24oKXt0aGlzLmluaGVyaXQoZixbInN0cmluZ19kcXVvdGVzIl0pLHRoaXMuYWRkKCJicmFja2V0cyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0iPCIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiPyExOnt0ZXh0OiI8PiIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0iPiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09Ij4iKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxrPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzIpO2lmKGs9PSI8LyIpe3ZhciBsPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGgucm93KSkrZC5nZXRUYWJTdHJpbmcoKSxtPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGgucm93KSk7cmV0dXJue3RleHQ6IlxuIitsKyJcbiIrbSxzZWxlY3Rpb246WzEsbC5sZW5ndGgsMSxsLmxlbmd0aF19fX19KX07ZC5pbmhlcml0cyhnLGUpLGIuWG1sQmVoYXZpb3VyPWd9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vbGliL2xhbmciKSxmPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZz1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGg9YSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGk9Yi5Gb2xkTW9kZT1mdW5jdGlvbihhKXtnLmNhbGwodGhpcyksdGhpcy52b2lkRWxlbWVudHM9YXx8e319O2QuaW5oZXJpdHMoaSxnKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoYSxjKTtyZXR1cm4gZC5jbG9zaW5nP2I9PSJtYXJrYmVnaW5lbmQiPyJlbmQiOiIiOiFkLnRhZ05hbWV8fHRoaXMudm9pZEVsZW1lbnRzW2QudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT8iIjpkLnNlbGZDbG9zaW5nPyIiOmQudmFsdWUuaW5kZXhPZigiLyIrZC50YWdOYW1lKSE9PS0xPyIiOiJzdGFydCJ9LHRoaXMuX2dldEZpcnN0VGFnSW5MaW5lPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRUb2tlbnMoYiksZD0iIjtmb3IodmFyIGY9MDtmPGMubGVuZ3RoO2YrKyl7dmFyIGc9Y1tmXTtnLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTA/ZCs9Zy52YWx1ZTpkKz1lLnN0cmluZ1JlcGVhdCgiICIsZy52YWx1ZS5sZW5ndGgpfXJldHVybiB0aGlzLl9wYXJzZVRhZyhkKX0sdGhpcy50YWdSZT0vXihccyopKDw/KFwvPykoWy1fYS16QS1aMC05OiFdKilccyooXC8/KT4/KS8sdGhpcy5fcGFyc2VUYWc9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50YWdSZS5leGVjKGEpLGM9dGhpcy50YWdSZS5sYXN0SW5kZXh8fDA7cmV0dXJuIHRoaXMudGFnUmUubGFzdEluZGV4PTAse3ZhbHVlOmEsbWF0Y2g6Yj9iWzJdOiIiLGNsb3Npbmc6Yj8hIWJbM106ITEsc2VsZkNsb3Npbmc6Yj8hIWJbNV18fGJbMl09PSIvPiI6ITEsdGFnTmFtZTpiP2JbNF06IiIsY29sdW1uOmJbMV0/YytiWzFdLmxlbmd0aDpjfX0sdGhpcy5fcmVhZFRhZ0ZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDdXJyZW50VG9rZW4oKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz0iIixkO2RvIGlmKGIudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7aWYoIWQpdmFyIGQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfTtjKz1iLnZhbHVlO2lmKGMuaW5kZXhPZigiPiIpIT09LTEpe3ZhciBlPXRoaXMuX3BhcnNlVGFnKGMpO3JldHVybiBlLnN0YXJ0PWQsZS5lbmQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2IudmFsdWUubGVuZ3RofSxhLnN0ZXBGb3J3YXJkKCksZX19d2hpbGUoYj1hLnN0ZXBGb3J3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9yZWFkVGFnQmFja3dhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDdXJyZW50VG9rZW4oKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz0iIixkO2RvIGlmKGIudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7ZHx8KGQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2IudmFsdWUubGVuZ3RofSksYz1iLnZhbHVlK2M7aWYoYy5pbmRleE9mKCI8IikhPT0tMSl7dmFyIGU9dGhpcy5fcGFyc2VUYWcoYyk7cmV0dXJuIGUuZW5kPWQsZS5zdGFydD17cm93OmEuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmEuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9LGEuc3RlcEJhY2t3YXJkKCksZX19d2hpbGUoYj1hLnN0ZXBCYWNrd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcG9wPWZ1bmN0aW9uKGEsYil7d2hpbGUoYS5sZW5ndGgpe3ZhciBjPWFbYS5sZW5ndGgtMV07aWYoIWJ8fGMudGFnTmFtZT09Yi50YWdOYW1lKXJldHVybiBhLnBvcCgpO2lmKHRoaXMudm9pZEVsZW1lbnRzW2IudGFnTmFtZV0pcmV0dXJuO2lmKHRoaXMudm9pZEVsZW1lbnRzW2MudGFnTmFtZV0pe2EucG9wKCk7Y29udGludWV9cmV0dXJuIG51bGx9fSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoYSxjKTtpZighZC5tYXRjaClyZXR1cm4gbnVsbDt2YXIgZT1kLmNsb3Npbmd8fGQuc2VsZkNsb3NpbmcsZz1bXSxpO2lmKCFlKXt2YXIgaj1uZXcgaChhLGMsZC5jb2x1bW4pLGs9e3JvdzpjLGNvbHVtbjpkLmNvbHVtbitkLnRhZ05hbWUubGVuZ3RoKzJ9O3doaWxlKGk9dGhpcy5fcmVhZFRhZ0ZvcndhcmQoaikpe2lmKGkuc2VsZkNsb3Npbmcpe2lmKCFnLmxlbmd0aClyZXR1cm4gaS5zdGFydC5jb2x1bW4rPWkudGFnTmFtZS5sZW5ndGgrMixpLmVuZC5jb2x1bW4tPTIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsaS5lbmQpO2NvbnRpbnVlfWlmKGkuY2xvc2luZyl7dGhpcy5fcG9wKGcsaSk7aWYoZy5sZW5ndGg9PTApcmV0dXJuIGYuZnJvbVBvaW50cyhrLGkuc3RhcnQpfWVsc2UgZy5wdXNoKGkpfX1lbHNle3ZhciBqPW5ldyBoKGEsYyxkLmNvbHVtbitkLm1hdGNoLmxlbmd0aCksbD17cm93OmMsY29sdW1uOmQuY29sdW1ufTt3aGlsZShpPXRoaXMuX3JlYWRUYWdCYWNrd2FyZChqKSl7aWYoaS5zZWxmQ2xvc2luZyl7aWYoIWcubGVuZ3RoKXJldHVybiBpLnN0YXJ0LmNvbHVtbis9aS50YWdOYW1lLmxlbmd0aCsyLGkuZW5kLmNvbHVtbi09MixmLmZyb21Qb2ludHMoaS5zdGFydCxpLmVuZCk7Y29udGludWV9aWYoIWkuY2xvc2luZyl7dGhpcy5fcG9wKGcsaSk7aWYoZy5sZW5ndGg9PTApcmV0dXJuIGkuc3RhcnQuY29sdW1uKz1pLnRhZ05hbWUubGVuZ3RoKzIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsbCl9ZWxzZSBnLnB1c2goaSl9fX19LmNhbGwoaS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGU9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldExpbmUoYyk7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3QoZCk/InN0YXJ0IjpiPT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KGQpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihhLGIsYyl7dmFyIGU9L15ccyovLGY9YixnPWIsaD1hLmdldExpbmUoYiksaT1jfHxoLmxlbmd0aCxqPWgubWF0Y2goZSlbMF0ubGVuZ3RoLGs9YS5nZXRMZW5ndGgoKTt3aGlsZSgrK2I8ayl7aD1hLmdldExpbmUoYik7dmFyIGw9aC5tYXRjaChlKVswXS5sZW5ndGg7aWYobD09aC5sZW5ndGgpY29udGludWU7aWYobDw9ailicmVhaztnPWJ9aWYoZz5mKXt2YXIgbT1hLmdldExpbmUoZykubGVuZ3RoO3JldHVybiBuZXcgZChmLGksZyxtKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihhLGIsYyxlLGYsZyl7dmFyIGg9e3JvdzpjLGNvbHVtbjplKzF9LGk9YS4kZmluZENsb3NpbmdCcmFja2V0KGIsaCxmLGcpO2lmKCFpKXJldHVybjt2YXIgaj1hLmZvbGRXaWRnZXRzW2kucm93XTtyZXR1cm4gaj09bnVsbCYmKGo9dGhpcy5nZXRGb2xkV2lkZ2V0KGEsaS5yb3cpKSxqPT0ic3RhcnQiJiYoaS5yb3ctLSxpLmNvbHVtbj1hLmdldExpbmUoaS5yb3cpLmxlbmd0aCksZC5mcm9tUG9pbnRzKGgsaSl9fSkuY2FsbChlLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-xquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUveHF1ZXJ5X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci94cXVlcnkiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsZT1hKCIuLi9saWIvb29wIiksZj1hKCIuL3RleHQiKS5Nb2RlLGc9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGg9YSgiLi94cXVlcnlfaGlnaGxpZ2h0X3J1bGVzIikuWFF1ZXJ5SGlnaGxpZ2h0UnVsZXMsaT1hKCIuL2JlaGF2aW91ci94cXVlcnkiKS5YUXVlcnlCZWhhdmlvdXIsaj1hKCIuLi9yYW5nZSIpLlJhbmdlLGs9ZnVuY3Rpb24oYSl7dGhpcy4kdG9rZW5pemVyPW5ldyBnKChuZXcgaCkuZ2V0UnVsZXMoKSksdGhpcy4kYmVoYXZpb3VyPW5ldyBpKGEpfTtlLmluaGVyaXRzKGssZiksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT1iLm1hdGNoKC9ccyooPzp0aGVufGVsc2V8cmV0dXJufFt7XChdfDxcdys+KVxzKiQvKTtyZXR1cm4gZSYmKGQrPWMpLGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4vXlxzKyQvLnRlc3QoYik/L15ccypbXH1cKV0vLnRlc3QoYyk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIuZ2V0TGluZShjKSxlPWQubWF0Y2goL14oXHMqW1x9XCldKS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9Yi5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yyxjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YylyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYi5nZXRMaW5lKGcucm93KSk7Yi5yZXBsYWNlKG5ldyBqKGMsMCxjLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifSx0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9ITAsaD0vXlxzKlwoOiguKik6XCkvO2ZvcihlPWM7ZTw9ZDtlKyspaWYoIWgudGVzdChiLmdldExpbmUoZSkpKXtnPSExO2JyZWFrfXZhciBpPW5ldyBqKDAsMCwwLDApO2ZvcihlPWM7ZTw9ZDtlKyspZj1iLmdldExpbmUoZSksaS5zdGFydC5yb3c9ZSxpLmVuZC5yb3c9ZSxpLmVuZC5jb2x1bW49Zi5sZW5ndGgsYi5yZXBsYWNlKGksZz9mLm1hdGNoKGgpWzFdOiIoOiIrZisiOikiKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dGhpcy4kZGVsdGFzPVtdO3ZhciBiPW5ldyBkKFsiYWNlIl0sIndvcmtlci14cXVlcnkuanMiLCJhY2UvbW9kZS94cXVlcnlfd29ya2VyIiwiWFF1ZXJ5V29ya2VyIiksYz10aGlzO3JldHVybiBhLmdldERvY3VtZW50KCkub24oImNoYW5nZSIsZnVuY3Rpb24oYSl7Yy4kZGVsdGFzLnB1c2goYS5kYXRhKX0pLGIuYXR0YWNoVG9Eb2N1bWVudChhLmdldERvY3VtZW50KCkpLGIub24oInN0YXJ0IixmdW5jdGlvbihhKXtjLiRkZWx0YXM9W119KSxiLm9uKCJlcnJvciIsZnVuY3Rpb24oYil7YS5zZXRBbm5vdGF0aW9ucyhbYi5kYXRhXSl9KSxiLm9uKCJvayIsZnVuY3Rpb24oYil7YS5jbGVhckFubm90YXRpb25zKCl9KSxiLm9uKCJoaWdobGlnaHQiLGZ1bmN0aW9uKGIpe3ZhciBkPTAsZT1hLmdldExlbmd0aCgpLTEsZj1iLmRhdGEubGluZXMsZz1iLmRhdGEuc3RhdGVzO2Zvcih2YXIgaD0wO2g8Yy4kZGVsdGFzLmxlbmd0aDtoKyspe3ZhciBpPWMuJGRlbHRhc1toXTtpZihpLmFjdGlvbj09PSJpbnNlcnRMaW5lcyIpe3ZhciBqPWkubGluZXMubGVuZ3RoO2Zvcih2YXIgaD0wO2g8ajtoKyspZi5zcGxpY2UoaS5yYW5nZS5zdGFydC5yb3craCwwLHVuZGVmaW5lZCksZy5zcGxpY2UoaS5yYW5nZS5zdGFydC5yb3craCwwLHVuZGVmaW5lZCl9ZWxzZSBpZihpLmFjdGlvbj09PSJpbnNlcnRUZXh0IilhLmdldERvY3VtZW50KCkuaXNOZXdMaW5lKGkudGV4dCk/KGYuc3BsaWNlKGkucmFuZ2UuZW5kLnJvdywwLHVuZGVmaW5lZCksZy5zcGxpY2UoaS5yYW5nZS5lbmQucm93LDAsdW5kZWZpbmVkKSk6KGZbaS5yYW5nZS5zdGFydC5yb3ddPXVuZGVmaW5lZCxnW2kucmFuZ2Uuc3RhcnQucm93XT11bmRlZmluZWQpO2Vsc2UgaWYoaS5hY3Rpb249PT0icmVtb3ZlTGluZXMiKXt2YXIgaz1pLmxpbmVzLmxlbmd0aDtmLnNwbGljZShpLnJhbmdlLnN0YXJ0LnJvdyxrKSxnLnNwbGljZShpLnJhbmdlLnN0YXJ0LnJvdyxrKX1lbHNlIGkuYWN0aW9uPT09InJlbW92ZVRleHQiJiYoYS5nZXREb2N1bWVudCgpLmlzTmV3TGluZShpLnRleHQpPyhmW2kucmFuZ2Uuc3RhcnQucm93XT11bmRlZmluZWQsZi5zcGxpY2UoaS5yYW5nZS5lbmQucm93LDEpLGdbaS5yYW5nZS5zdGFydC5yb3ddPXVuZGVmaW5lZCxnLnNwbGljZShpLnJhbmdlLmVuZC5yb3csMSkpOihmW2kucmFuZ2Uuc3RhcnQucm93XT11bmRlZmluZWQsZ1tpLnJhbmdlLnN0YXJ0LnJvd109dW5kZWZpbmVkKSl9YS5iZ1Rva2VuaXplci5saW5lcz1mLGEuYmdUb2tlbml6ZXIuc3RhdGVzPWcsYS5iZ1Rva2VuaXplci5maXJlVXBkYXRlRXZlbnQoZCxlKX0pLGJ9fS5jYWxsKGsucHJvdG90eXBlKSxiLk1vZGU9a30pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYWZ0ZXJ8YW5jZXN0b3J8YW5jZXN0b3Itb3Itc2VsZnxhbmR8YXN8YXNjZW5kaW5nfGF0dHJpYnV0ZXxiZWZvcmV8Y2FzZXxjYXN0fGNhc3RhYmxlfGNoaWxkfGNvbGxhdGlvbnxjb21tZW50fGNvcHl8Y291bnR8ZGVjbGFyZXxkZWZhdWx0fGRlbGV0ZXxkZXNjZW5kYW50fGRlc2NlbmRhbnQtb3Itc2VsZnxkZXNjZW5kaW5nfGRpdnxkb2N1bWVudHxkb2N1bWVudC1ub2RlfGVsZW1lbnR8ZWxzZXxlbXB0eXxlbXB0eS1zZXF1ZW5jZXxlbmR8ZXF8ZXZlcnl8ZXhjZXB0fGZpcnN0fGZvbGxvd2luZ3xmb2xsb3dpbmctc2libGluZ3xmb3J8ZnVuY3Rpb258Z2V8Z3JvdXB8Z3R8aWRpdnxpZnxpbXBvcnR8aW5zZXJ0fGluc3RhbmNlfGludGVyc2VjdHxpbnRvfGlzfGl0ZW18bGFzdHxsZXxsZXR8bHR8bW9kfG1vZGlmeXxtb2R1bGV8bmFtZXNwYWNlfG5hbWVzcGFjZS1ub2RlfG5lfG5vZGV8b25seXxvcnxvcmRlcnxvcmRlcmVkfHBhcmVudHxwcmVjZWRpbmd8cHJlY2VkaW5nLXNpYmxpbmd8cHJvY2Vzc2luZy1pbnN0cnVjdGlvbnxyZW5hbWV8cmVwbGFjZXxyZXR1cm58c2F0aXNmaWVzfHNjaGVtYS1hdHRyaWJ1dGV8c2NoZW1hLWVsZW1lbnR8c2VsZnxzb21lfHN0YWJsZXxzdGFydHxzd2l0Y2h8dGV4dHx0b3x0cmVhdHx0cnl8dHlwZXN3aXRjaHx1bmlvbnx1bm9yZGVyZWR8dmFsaWRhdGV8d2hlcmV8d2l0aHx4cXVlcnl8Y29udGFpbnN8cGFyYWdyYXBoc3xzZW50ZW5jZXN8dGltZXN8d29yZHN8Ynl8Y29sbGVjdGlvbnJldHVybnx2YXJpYWJsZXx2ZXJzaW9ufG9wdGlvbnx3aGVufGVuY29kaW5nfHRvc3dpdGNofGNhdGNofHR1bWJsaW5nfHNsaWRpbmd8d2luZG93fGF0fHVzaW5nfHN0ZW1taW5nfGNvbGxlY3Rpb258c2NoZW1hfHdoaWxlfG9ufG5vZGVzfGluZGV4fGV4dGVybmFsfHRoZW58aW58dXBkYXRpbmd8dmFsdWV8b2Z8Y29udGFpbnNicmVha3xsb29wfGNvbnRpbnVlfGV4aXR8cmV0dXJuaW5nIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwoOiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwkW2EtekEtWl9dW2EtekEtWjAtOV9cXC06XSpcXGIifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIuKj8iJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJcXHdbXFx3K19cXC06XSsoPz1cXCgpIn0se3Rva2VuOmZ1bmN0aW9uKGIpe3JldHVybiBhW2JdPyJrZXl3b3JkIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXCp8PXw8fD58XFwtfFxcKyJ9LHt0b2tlbjoibHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InJwYXJlbiIscmVnZXg6IltcXF0pfV0ifV0sdGFnOlt7dG9rZW46InRleHQiLHJlZ2V4OiI+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifV0sY2RhdGE6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKjpcXCkiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiLisifV19fTtkLmluaGVyaXRzKGcsZiksYi5YUXVlcnlIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIveHF1ZXJ5IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWEoIi4vY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGc9ZnVuY3Rpb24oYSl7dGhpcy5pbmhlcml0KGYsWyJicmFjZXMiLCJwYXJlbnMiLCJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLnBhcmVudD1hLHRoaXMuYWRkKCJicmFja2V0cyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0iXG4iKXt2YXIgZj1jLmdldEN1cnNvclBvc2l0aW9uKCksZz1kLmRvYy5nZXRMaW5lKGYucm93KSxoPWcuc3Vic3RyaW5nKGYuY29sdW1uLGYuY29sdW1uKzIpO2lmKGg9PSI8LyIpe3ZhciBpPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGYucm93KSkrZC5nZXRUYWJTdHJpbmcoKSxqPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGYucm93KSk7cmV0dXJue3RleHQ6IlxuIitpKyJcbiIraixzZWxlY3Rpb246WzEsaS5sZW5ndGgsMSxpLmxlbmd0aF19fX1yZXR1cm4hMX0pLHRoaXMuYWRkKCJzbGFzaCIsImluc2VydGlvbiIsZnVuY3Rpb24oYixjLGQsZSxmKXtpZihmPT0iLyIpe3ZhciBnPWQuZ2V0Q3Vyc29yUG9zaXRpb24oKSxoPWUuZG9jLmdldExpbmUoZy5yb3cpO2lmKGcuY29sdW1uPjAmJmguY2hhckF0KGcuY29sdW1uLTEpPT0iPCIpe2g9aC5zdWJzdHJpbmcoMCxnLmNvbHVtbikrIi8iK2guc3Vic3RyaW5nKGcuY29sdW1uKTt2YXIgaT1lLmRvYy5nZXRBbGxMaW5lcygpO2lbZy5yb3ddPWgsYS5leGVjKCJjbG9zZVRhZyIsaS5qb2luKGUuZG9jLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSksZy5yb3cpfX1yZXR1cm4hMX0pfTtkLmluaGVyaXRzKGcsZSksYi5YUXVlcnlCZWhhdmlvdXI9Z30pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixmPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0ieyIpe3ZhciBmPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxnPWQuZG9jLmdldFRleHRSYW5nZShmKTtyZXR1cm4gZyE9PSIiP3t0ZXh0OiJ7IitnKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihlPT0ifSIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgaz1kLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46aC5jb2x1bW4rMSxyb3c6aC5yb3d9KTtpZihrIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGU9PSJcbiIpe3ZhciBoPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxpPWQuZG9jLmdldExpbmUoaC5yb3cpLGo9aS5zdWJzdHJpbmcoaC5jb2x1bW4saC5jb2x1bW4rMSk7aWYoaj09In0iKXt2YXIgbD1kLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpoLnJvdyxjb2x1bW46aC5jb2x1bW4rMX0pO2lmKCFsKXJldHVybiBudWxsO3ZhciBtPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoYSxpLnN1YnN0cmluZygwLGkubGVuZ3RoLTEpLGQuZ2V0VGFiU3RyaW5nKCkpLG49dGhpcy4kZ2V0SW5kZW50KGQuZG9jLmdldExpbmUobC5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK20rIlxuIituLHNlbGVjdGlvbjpbMSxtLmxlbmd0aCwxLG0ubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09InsiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuZW5kLmNvbHVtbixlLmVuZC5jb2x1bW4rMSk7aWYoaD09In0iKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IigiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoiKCIrZysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09IikiKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSIpIil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWQuZG9jLmdldFRleHRSYW5nZShlKTtpZighZS5pc011bHRpTGluZSgpJiZmPT0iKCIpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0iKSIpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSciJ3x8ZT09IiciKXt2YXIgZj1lLGc9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGg9ZC5kb2MuZ2V0VGV4dFJhbmdlKGcpO2lmKGghPT0iIilyZXR1cm57dGV4dDpmK2grZixzZWxlY3Rpb246ITF9O3ZhciBpPWMuZ2V0Q3Vyc29yUG9zaXRpb24oKSxqPWQuZG9jLmdldExpbmUoaS5yb3cpLGs9ai5zdWJzdHJpbmcoaS5jb2x1bW4tMSxpLmNvbHVtbik7aWYoaz09IlxcIilyZXR1cm4gbnVsbDt2YXIgbD1kLmdldFRva2VucyhnLnN0YXJ0LnJvdyksbT0wLG4sbz0tMTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyl7bj1sW3BdLG4udHlwZT09InN0cmluZyI/bz0tMTpvPDAmJihvPW4udmFsdWUuaW5kZXhPZihmKSk7aWYobi52YWx1ZS5sZW5ndGgrbT5nLnN0YXJ0LmNvbHVtbilicmVhazttKz1sW3BdLnZhbHVlLmxlbmd0aH1pZighbnx8bzwwJiZuLnR5cGUhPT0iY29tbWVudCImJihuLnR5cGUhPT0ic3RyaW5nInx8Zy5zdGFydC5jb2x1bW4hPT1uLnZhbHVlLmxlbmd0aCttLTEmJm4udmFsdWUubGFzdEluZGV4T2YoZik9PT1uLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpmK2Ysc2VsZWN0aW9uOlsxLDFdfTtpZihuJiZuLnR5cGU9PT0ic3RyaW5nIil7dmFyIHE9ai5zdWJzdHJpbmcoaS5jb2x1bW4saS5jb2x1bW4rMSk7aWYocT09ZilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmKGY9PSciJ3x8Zj09IiciKSl7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbisxLGUuc3RhcnQuY29sdW1uKzIpO2lmKGg9PSciJylyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KX07ZC5pbmhlcml0cyhmLGUpLGIuQ3N0eWxlQmVoYXZpb3VyPWZ9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-yaml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS95YW1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3lhbWxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi95YW1sX2hpZ2hsaWdodF9ydWxlcyIpLllhbWxIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBofTtkLmluaGVyaXRzKGksZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYik7aWYoYT09InN0YXJ0Iil7dmFyIGU9Yi5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7ZSYmKGQrPWMpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX19LmNhbGwoaS5wcm90b3R5cGUpLGIuTW9kZT1pfSksZGVmaW5lKCJhY2UvbW9kZS95YW1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIjLiokIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXi0tLSJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJbJlxcKl1bYS16QS1aMC05LV9dKyJ9LHt0b2tlbjpbImlkZW50aWZpZXIiLCJ0ZXh0Il0scmVnZXg6IihcXHcrXFxzKjopKFxcdyopIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPDxcXHcqOlxcdyoifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiItXFxzKig/PVt7XSkifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IltcXHw+XVxcdyoiLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4OiIoPzp0cnVlfGZhbHNlfHllc3xubylcXGIifSx7dG9rZW46ImludmFsaWQuaWxsZWdhbCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLHFxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/PSg/Oig/OlxcXFwuKXwoPzpbXjpdKSkqPzopIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19fTtkLmluaGVyaXRzKGYsZSksYi5ZYW1sSGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9yYW5nZSIpLlJhbmdlLGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuL15ccyskLy50ZXN0KGEpPy9eXHMqXH0vLnRlc3QoYik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldExpbmUoYiksZT1jLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFlKXJldHVybiAwO3ZhciBmPWVbMV0ubGVuZ3RoLGc9YS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6Yixjb2x1bW46Zn0pO2lmKCFnfHxnLnJvdz09YilyZXR1cm4gMDt2YXIgaD10aGlzLiRnZXRJbmRlbnQoYS5nZXRMaW5lKGcucm93KSk7YS5yZXBsYWNlKG5ldyBkKGIsMCxiLGYtMSksaCl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gYj9iWzFdOiIifX0pLmNhbGwoZS5wcm90b3R5cGUpLGIuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9ZX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-chrome.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY2hyb21lIixmdW5jdGlvbihhLGIsYyl7Yi5jc3NDbGFzcz0iYWNlLWNocm9tZSIsYi5jc3NUZXh0PSIuYWNlLWNocm9tZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY2hyb21lIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNocm9tZSAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7ICBvdmVyZmxvdyA6IGhpZGRlbjt9LmFjZS1jaHJvbWUgLmFjZV9wcmludF9tYXJnaW4geyAgd2lkdGg6IDFweDsgIGJhY2tncm91bmQ6ICNlOGU4ZTg7fS5hY2UtY2hyb21lIC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7fS5hY2UtY2hyb21lIC5hY2VfY3Vyc29yIHsgIGJvcmRlci1sZWZ0OiAycHggc29saWQgYmxhY2s7fS5hY2UtY2hyb21lIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHsgIGNvbG9yOiByZ2IoODgsIDcyLCAyNDYpO30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IHJnYig4OCwgOTIsIDI0Nik7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9saWJyYXJ5IHsgIGNvbG9yOiByZ2IoNiwgMTUwLCAxNCk7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2ludmFsaWQgeyAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1MywgMCwgMCk7ICBjb2xvcjogd2hpdGU7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2ZvbGQge30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogcmdiKDYwLCA3NiwgMTE0KTt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfdHlwZSwuYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9jbGFzcyB7ICBjb2xvcjogcmdiKDEwOSwgMTIxLCAyMjIpO30uYWNlLWNocm9tZSAuYWNlX3ZhcmlhYmxlLmFjZV9wYXJhbWV0ZXIgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0ZEOTcxRjt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6IHJnYigxMDQsIDExOCwgMTM1KTt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfY29tbWVudCB7ICBjb2xvcjogIzIzNmUyNDt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHsgIGNvbG9yOiAjMjM2ZTI0O30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9jb21tZW50LmFjZV9kb2MuYWNlX3RhZyB7ICBjb2xvcjogIzIzNmUyNDt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IHJnYigwLCAwLCAyMDUpO30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjogcmdiKDQ5LCAxMzIsIDE0OSk7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX3htbF9wZSB7ICBjb2xvcjogcmdiKDEwNCwgMTA0LCA5MSk7fS5hY2UtY2hyb21lIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogIzAwMDBBMjt9LmFjZS1jaHJvbWUgLmFjZV9tYXJrdXAuYWNlX21hcmt1cGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtY2hyb21lIC5hY2VfbWFya3VwLmFjZV9oZWFkaW5nIHsgIGNvbG9yOiByZ2IoMTIsIDcsIDI1NSk7fS5hY2UtY2hyb21lIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOnJnYigxODUsIDYsIDE0NCk7fS5hY2UtY2hyb21lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYigxODEsIDIxMywgMjU1KTt9LmFjZS1jaHJvbWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigyNTIsIDI1NSwgMCk7fS5hY2UtY2hyb21lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RhY2sgeyAgYmFja2dyb3VuZDogcmdiKDE2NCwgMjI5LCAxMDEpO30uYWNlLWNocm9tZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE5MiwgMTkyLCAxOTIpO30uYWNlLWNocm9tZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wNyk7fS5hY2UtY2hyb21lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1NSk7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjAwLCAyMDAsIDI1MCk7fS5hY2UtY2hyb21lIC5hY2Vfc3RvcmFnZSwuYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkLC5hY2UtY2hyb21lIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiByZ2IoMTQ3LCAxNSwgMTI4KTt9LmFjZS1jaHJvbWUgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHsgIGNvbG9yOiByZ2IoMjU1LCAwLCAwKX0uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9zdHJpbmcsLmFjZS1jaHJvbWUgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZXsgIGNvbG9yOiAjOTk0NDA5O30iO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-clouds.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY2xvdWRzIixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITEsYi5jc3NDbGFzcz0iYWNlLWNsb3VkcyIsYi5jc3NUZXh0PSIuYWNlLWNsb3VkcyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY2xvdWRzIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNsb3VkcyAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2UtY2xvdWRzIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWNsb3VkcyAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7fS5hY2UtY2xvdWRzIC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogIzAwMDAwMDt9LmFjZS1jbG91ZHMgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDAwMDAwO30uYWNlLWNsb3VkcyAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDAwMDt9LmFjZS1jbG91ZHMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogI0JERDVGQzt9LmFjZS1jbG91ZHMubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggI0ZGRkZGRjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1jbG91ZHMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMCk7fS5hY2UtY2xvdWRzIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjQkZCRkJGO30uYWNlLWNsb3VkcyAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICNGRkZCRDE7fS5hY2UtY2xvdWRzIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjQkRENUZDO30uYWNlLWNsb3VkcyAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogI0JGQkZCRjt9LmFjZS1jbG91ZHMgLmFjZV9rZXl3b3JkLCAuYWNlLWNsb3VkcyAuYWNlX21ldGEgeyAgY29sb3I6I0FGOTU2Rjt9LmFjZS1jbG91ZHMgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjojNDg0ODQ4O30uYWNlLWNsb3VkcyAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojMzk5NDZBO30uYWNlLWNsb3VkcyAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiM0NkE2MDk7fS5hY2UtY2xvdWRzIC5hY2VfaW52YWxpZCB7ICBiYWNrZ3JvdW5kLWNvbG9yOiNGRjAwMkE7fS5hY2UtY2xvdWRzIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNBRjk1NkY7ICAgIGJvcmRlci1jb2xvcjogIzAwMDAwMDt9LmFjZS1jbG91ZHMgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojQzUyNzI3O30uYWNlLWNsb3VkcyAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0M1MjcyNzt9LmFjZS1jbG91ZHMgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzVEOTBDRDt9LmFjZS1jbG91ZHMgLmFjZV9jb21tZW50IHsgIGNvbG9yOiNCQ0M4QkE7fS5hY2UtY2xvdWRzIC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6IzYwNjA2MDt9LmFjZS1jbG91ZHMgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-clouds_midnight.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY2xvdWRzX21pZG5pZ2h0IixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITAsYi5jc3NDbGFzcz0iYWNlLWNsb3Vkcy1taWRuaWdodCIsYi5jc3NUZXh0PSIuYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMxOTE5MTk7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogIzkyOTI5Mjt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjN0RBNURDO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzdEQTVEQzt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzAwMDAwMDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzE5MTkxOTsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkICNCRkJGQkY7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgyMTUsIDIxNSwgMjE1LCAwLjAzMSk7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogI0JGQkZCRjt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9rZXl3b3JkLCAuYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX21ldGEgeyAgY29sb3I6IzkyN0M1RDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjojNEI0QjRCO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojMzk5NDZBO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiM0NkE2MDk7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfaW52YWxpZCB7ICBjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6I0U5MkUyRTt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzkyN0M1RDsgICAgYm9yZGVyLWNvbG9yOiAjOTI5MjkyO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNFOTJFMkU7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojRTkyRTJFO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX3N0cmluZyB7ICBjb2xvcjojNUQ5MENEO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2NvbW1lbnQgeyAgY29sb3I6IzNDNDAzQjt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojNjA2MDYwO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-cobalt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY29iYWx0IixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITAsYi5jc3NDbGFzcz0iYWNlLWNvYmFsdCIsYi5jc3NUZXh0PSIuYWNlLWNvYmFsdCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY29iYWx0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNvYmFsdCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2UtY29iYWx0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWNvYmFsdCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMwMDIyNDA7fS5hY2UtY29iYWx0IC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogI0ZGRkZGRjt9LmFjZS1jb2JhbHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLWNvYmFsdCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZGRkZGRjt9LmFjZS1jb2JhbHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiYSgxNzksIDEwMSwgNTcsIDAuNzUpO30uYWNlLWNvYmFsdC5tdWx0aXNlbGVjdCAuYWNlX3NlbGVjdGlvbi5zdGFydCB7ICBib3gtc2hhZG93OiAwIDAgM3B4IDBweCAjMDAyMjQwOyAgYm9yZGVyLXJhZGl1czogMnB4O30uYWNlLWNvYmFsdCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEyNywgMTExLCAxOSk7fS5hY2UtY29iYWx0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO30uYWNlLWNvYmFsdCAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zNSk7fS5hY2UtY29iYWx0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE3OSwgMTAxLCA1NywgMC43NSk7fS5hY2UtY29iYWx0IC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO30uYWNlLWNvYmFsdCAuYWNlX2tleXdvcmQsIC5hY2UtY29iYWx0IC5hY2VfbWV0YSB7ICBjb2xvcjojRkY5RDAwO30uYWNlLWNvYmFsdCAuYWNlX2NvbnN0YW50LCAuYWNlLWNvYmFsdCAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojRkY2MjhDO30uYWNlLWNvYmFsdCAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIsICB7ICBjb2xvcjojRkY2MjhDO30uYWNlLWNvYmFsdCAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIuYWNlX2VzY2FwZSwgIHsgIGNvbG9yOiNGRjYyOEM7fS5hY2UtY29iYWx0IC5hY2VfaW52YWxpZCB7ICBjb2xvcjojRjhGOEY4O2JhY2tncm91bmQtY29sb3I6IzgwMEYwMDt9LmFjZS1jb2JhbHQgLmFjZV9zdXBwb3J0IHsgIGNvbG9yOiM4MEZGQkI7fS5hY2UtY29iYWx0IC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0VCOTM5QTt9LmFjZS1jb2JhbHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGOUQwMDsgICAgYm9yZGVyLWNvbG9yOiAjRkZGRkZGO30uYWNlLWNvYmFsdCAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNGRkIwNTQ7fS5hY2UtY29iYWx0IC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojRkZFRTgwO30uYWNlLWNvYmFsdCAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiM4MEZGQzI7fS5hY2UtY29iYWx0IC5hY2VfY29tbWVudCB7ICBmb250LXN0eWxlOml0YWxpYztjb2xvcjojMDA4OEZGO30uYWNlLWNvYmFsdCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNDQ0NDQ0M7fS5hY2UtY29iYWx0IC5hY2VfdmFyaWFibGUuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNGRjgwRTE7fS5hY2UtY29iYWx0IC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiM5RUZGRkY7fS5hY2UtY29iYWx0IC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLWNvYmFsdCAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjojQzhFNEZEO2JhY2tncm91bmQtY29sb3I6IzAwMTIyMTt9LmFjZS1jb2JhbHQgLmFjZV9tYXJrdXAuYWNlX2xpc3QgeyAgYmFja2dyb3VuZC1jb2xvcjojMTMwRDI2O30iO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-crimson_editor.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY3JpbXNvbl9lZGl0b3IiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMSxiLmNzc1RleHQ9Ii5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9lZGl0b3IgeyAgYm9yZGVyOiAycHggc29saWQgcmdiKDE1OSwgMTU5LCAxNTkpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICNlOGU4ZTg7ICBjb2xvcjogIzMzMzsgIG92ZXJmbG93IDogaGlkZGVuO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfZ3V0dGVyLWxheWVyIHsgIHdpZHRoOiAxMDAlOyAgdGV4dC1hbGlnbjogcmlnaHQ7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9wcmludF9tYXJnaW4geyAgd2lkdGg6IDFweDsgIGJhY2tncm91bmQ6ICNlOGU4ZTg7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV90ZXh0LWxheWVyIHsgIGN1cnNvcjogdGV4dDsgIGNvbG9yOiByZ2IoNjQsIDY0LCA2NCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibGFjazt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfaWRlbnRpZmllciB7ICBjb2xvcjogYmxhY2s7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2Vfa2V5d29yZCB7ICBjb2xvcjogYmx1ZTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfYnVpbGRpbiB7ICBjb2xvcjogcmdiKDg4LCA3MiwgMjQ2KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IHJnYigyNTUsIDE1NiwgMCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2xpYnJhcnkgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9pbnZhbGlkIHsgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOyAgY29sb3I6IHJnYigyMjQsIDAsIDApO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX2ZvbGQge30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiByZ2IoMTkyLCAwLCAwKTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjogcmdiKDYsIDE1MCwgMTQpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX3R5cGUsLmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9jbGFzcyB7ICBjb2xvcjogcmdiKDEwOSwgMTIxLCAyMjIpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiByZ2IoNDksIDEzMiwgMTQ5KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9zdHJpbmcgeyAgY29sb3I6IHJnYigxMjgsIDAsIDEyOCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29tbWVudCB7ICBjb2xvcjogcmdiKDc2LCAxMzYsIDEwNyk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHsgIGNvbG9yOiByZ2IoMCwgMTAyLCAyNTUpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYy5hY2VfdGFnIHsgIGNvbG9yOiByZ2IoMTI4LCAxNTksIDE5MSk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IHJnYigwLCAwLCA2NCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6IHJnYigwLCA2NCwgMTI4KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV94bWxfcGUgeyAgY29sb3I6IHJnYigxMDQsIDEwNCwgOTEpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYigxODEsIDIxMywgMjU1KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDI1MiwgMjU1LCAwKTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0YWNrIHsgIGJhY2tncm91bmQ6IHJnYigxNjQsIDIyOSwgMTAxKTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE5MiwgMTkyLCAxOTIpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiKDIzMiwgMjQyLCAyNTQpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOnJnYigyOCwgMiwgMjU1KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYmFja2dyb3VuZDogcmdiKDI1MCwgMjUwLCAyNTUpOyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwMCwgMjAwLCAyNTApO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2Vfc3RyaW5nLmFjZV9yZWdleCB7ICBjb2xvcjogcmdiKDE5MiwgMCwgMTkyKTt9IixiLmNzc0NsYXNzPSJhY2UtY3JpbXNvbi1lZGl0b3IiO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-dawn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvZGF3biIsZnVuY3Rpb24oYSxiLGMpe2IuaXNEYXJrPSExLGIuY3NzQ2xhc3M9ImFjZS1kYXduIixiLmNzc1RleHQ9Ii5hY2UtZGF3biAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtZGF3biAuYWNlX2VkaXRvci5hY2VfZm9jdXMgeyAgYm9yZGVyOiAycHggc29saWQgIzMyN2ZiZDt9LmFjZS1kYXduIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICNlOGU4ZTg7ICBjb2xvcjogIzMzMzt9LmFjZS1kYXduIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWRhd24gLmFjZV9zY3JvbGxlciB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjlGOUY5O30uYWNlLWRhd24gLmFjZV90ZXh0LWxheWVyIHsgIGN1cnNvcjogdGV4dDsgIGNvbG9yOiAjMDgwODA4O30uYWNlLWRhd24gLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDAwMDAwO30uYWNlLWRhd24gLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICBib3JkZXItbGVmdDogMHB4OyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDA7fS5hY2UtZGF3biAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiByZ2JhKDM5LCA5NSwgMjU1LCAwLjMwKTt9LmFjZS1kYXduLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHsgIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4ICNGOUY5Rjk7ICBib3JkZXItcmFkaXVzOiAycHg7fS5hY2UtZGF3biAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDI1NSwgMjU1LCAwKTt9LmFjZS1kYXduIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc1LCA3NSwgMTI2LCAwLjUwKTt9LmFjZS1kYXduIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgzNiwgOTksIDE4MCwgMC4xMik7fS5hY2UtZGF3biAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzOSwgOTUsIDI1NSwgMC4zMCk7fS5hY2UtZGF3biAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogcmdiYSg3NSwgNzUsIDEyNiwgMC41MCk7fS5hY2UtZGF3biAuYWNlX2tleXdvcmQsIC5hY2UtZGF3biAuYWNlX21ldGEgeyAgY29sb3I6Izc5NDkzODt9LmFjZS1kYXduIC5hY2VfY29uc3RhbnQsIC5hY2UtZGF3biAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojODExRjI0O30uYWNlLWRhd24gLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6IzgxMUYyNDt9LmFjZS1kYXduIC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3Rlci5hY2VfZXNjYXBlLCAgeyAgY29sb3I6IzgxMUYyNDt9LmFjZS1kYXduIC5hY2VfaW52YWxpZC5hY2VfaWxsZWdhbCB7ICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2ZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiNGOEY4Rjg7YmFja2dyb3VuZC1jb2xvcjojQjUyQTFEO30uYWNlLWRhd24gLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Zm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0I1MkExRDt9LmFjZS1kYXduIC5hY2Vfc3VwcG9ydCB7ICBjb2xvcjojNjkxQzk3O30uYWNlLWRhd24gLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjojQjQzNzFGO30uYWNlLWRhd24gLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzc5NDkzODsgICAgYm9yZGVyLWNvbG9yOiAjMDgwODA4O30uYWNlLWRhd24gLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojNjkzQTE3O30uYWNlLWRhd24gLmFjZV9zdG9yYWdlIHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiNBNzFENUQ7fS5hY2UtZGF3biAuYWNlX3N0cmluZyB7ICBjb2xvcjojMEI2MTI1O30uYWNlLWRhd24gLmFjZV9zdHJpbmcuYWNlX3JlZ2V4cCB7ICBjb2xvcjojQ0Y1NjI4O30uYWNlLWRhd24gLmFjZV9jb21tZW50IHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM1QTUyNUY7fS5hY2UtZGF3biAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiMyMzRBOTc7fS5hY2UtZGF3biAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS1kYXduIC5hY2VfbWFya3VwLmFjZV9oZWFkaW5nIHsgIGNvbG9yOiMxOTM1NkQ7fS5hY2UtZGF3biAuYWNlX21hcmt1cC5hY2VfbGlzdCB7ICBjb2xvcjojNjkzQTE3O30iO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-dreamweaver.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvZHJlYW13ZWF2ZXIiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMSxiLmNzc0NsYXNzPSJhY2UtZHJlYW13ZWF2ZXIiLGIuY3NzVGV4dD0iLmFjZS1kcmVhbXdlYXZlciAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEY7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV90ZXh0LWxheWVyIHsgIGN1cnNvcjogdGV4dDt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2N1cnNvciB7ICBib3JkZXItbGVmdDogMnB4IHNvbGlkIGJsYWNrO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazt9ICAgICAgICAuYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX3N0b3JhZ2UsLmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkIHsgIGNvbG9yOiBibHVlO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHsgIGNvbG9yOiByZ2IoODgsIDcyLCAyNDYpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjogcmdiKDg4LCA5MiwgMjQ2KTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGlicmFyeSB7ICBjb2xvcjogcmdiKDYsIDE1MCwgMTQpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2ludmFsaWQgeyAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1MywgMCwgMCk7ICBjb2xvcjogd2hpdGU7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IHJnYig2MCwgNzYsIDExNCk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV90eXBlLC5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY2xhc3MgeyAgY29sb3I6ICMwMDk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfcGhwX3RhZyB7ICBjb2xvcjogI2YwMDt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjogcmdiKDEwNCwgMTE4LCAxMzUpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX3N0cmluZyB7ICBjb2xvcjogIzAwRjt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb21tZW50IHsgIGNvbG9yOiByZ2IoNzYsIDEzNiwgMTA3KTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb21tZW50LmFjZV9kb2MgeyAgY29sb3I6IHJnYigwLCAxMDIsIDI1NSk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jLmFjZV90YWcgeyAgY29sb3I6IHJnYigxMjgsIDE1OSwgMTkxKTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjogcmdiKDAsIDAsIDIwNSk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6ICMwNkZ9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV94bWxfcGUgeyAgY29sb3I6IHJnYigxMDQsIDEwNCwgOTEpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogIzAwRjt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21hcmt1cC5hY2VfbWFya3VwaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjogcmdiKDEyLCA3LCAyNTUpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOnJnYigxODUsIDYsIDE0NCk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiKDE4MSwgMjEzLCAyNTUpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUyLCAyNTUsIDApO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RhY2sgeyAgYmFja2dyb3VuZDogcmdiKDE2NCwgMjI5LCAxMDEpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTkyLCAxOTIsIDE5Mik7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDcpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1NSk7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjAwLCAyMDAsIDI1MCk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6IzAwOTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21ldGEuYWNlX3RhZy5hY2VfYW5jaG9yIHsgIGNvbG9yOiMwNjA7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcuYWNlX2Zvcm0geyAgY29sb3I6I0Y5MDt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21ldGEuYWNlX3RhZy5hY2VfaW1hZ2UgeyAgY29sb3I6IzkwOTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21ldGEuYWNlX3RhZy5hY2Vfc2NyaXB0IHsgIGNvbG9yOiM5MDA7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcuYWNlX3N0eWxlIHsgIGNvbG9yOiM5MDk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcuYWNlX3RhYmxlIHsgIGNvbG9yOiMwOTk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHsgIGNvbG9yOiByZ2IoMjU1LCAwLCAwKX0iO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-eclipse.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvZWNsaXBzZSIsZnVuY3Rpb24oYSxiLGMpe2IuaXNEYXJrPSExLGIuY3NzVGV4dD0iLmFjZS1lY2xpcHNlIC5hY2VfZWRpdG9yIHsgIGJvcmRlcjogMnB4IHNvbGlkIHJnYigxNTksIDE1OSwgMTU5KTt9LmFjZS1lY2xpcHNlIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWVjbGlwc2UgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogcmdiKDIyNywgMjI3LCAyMjcpOyAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgcmdiKDE1OSwgMTU5LCAxNTkpOyAgY29sb3I6IHJnYigxMzYsIDEzNiwgMTM2KTt9LmFjZS1lY2xpcHNlIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjYjFiNGJhO30uYWNlLWVjbGlwc2UgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDYwLCA3NiwgMTE0KTt9LmFjZS1lY2xpcHNlIC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7fS5hY2UtZWNsaXBzZSAuYWNlX2N1cnNvciB7ICBib3JkZXItbGVmdDogMnB4IHNvbGlkIGJsYWNrO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2Vfc3RvcmFnZSwuYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2Vfa2V5d29yZCwuYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6IHJnYigxMjcsIDAsIDg1KTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHsgIGNvbG9yOiByZ2IoODgsIDcyLCAyNDYpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2xpYnJhcnkgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiByZ2IoNjAsIDc2LCAxMTQpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiByZ2IoNDIsIDAsIDI1NSk7fS5hY2UtZWNsaXBzZSAuYWNlX2xpbmUgLmFjZV9jb21tZW50IHsgIGNvbG9yOiByZ2IoNjMsIDEyNywgOTUpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHsgIGNvbG9yOiByZ2IoNjMsIDk1LCAxOTEpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jLmFjZV90YWcgeyAgY29sb3I6IHJnYigxMjcsIDE1OSwgMTkxKTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX3RhZyB7ICBjb2xvcjogcmdiKDYzLCAxMjcsIDEyNyk7fS5hY2UtZWNsaXBzZSAuYWNlX2xpbmUgLmFjZV90eXBlIHsgIGNvbG9yOiByZ2IoMTI3LCAwLCAxMjcpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfeG1sX3BlIHsgIGNvbG9yOiByZ2IoMTA0LCAxMDQsIDkxKTt9LmFjZS1lY2xpcHNlIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYigxODEsIDIxMywgMjU1KTt9LmFjZS1lY2xpcHNlIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTkyLCAxOTIsIDE5Mik7fS5hY2UtZWNsaXBzZSAuYWNlX2xpbmUgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6cmdiKDYzLCAxMjcsIDEyNyk7fS5hY2UtZWNsaXBzZSAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOnJnYigxMjcsIDAsIDEyNyk7fS5hY2UtZWNsaXBzZSAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDI1NSwgMjU1LCAwKTt9LmFjZS1lY2xpcHNlIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiKDIzMiwgMjQyLCAyNTQpO30iLGIuY3NzQ2xhc3M9ImFjZS1lY2xpcHNlIjt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-idle_fingers.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvaWRsZV9maW5nZXJzIixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITAsYi5jc3NDbGFzcz0iYWNlLWlkbGUtZmluZ2VycyIsYi5jc3NUZXh0PSIuYWNlLWlkbGUtZmluZ2VycyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogI0ZGRkZGRjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjOTFGRjAwO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzkxRkYwMDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiYSg5MCwgMTAwLCAxMjYsIDAuODgpO30uYWNlLWlkbGUtZmluZ2Vycy5tdWx0aXNlbGVjdCAuYWNlX3NlbGVjdGlvbi5zdGFydCB7ICBib3gtc2hhZG93OiAwIDAgM3B4IDBweCAjMzIzMjMyOyAgYm9yZGVyLXJhZGl1czogMnB4O30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgIzQwNDA0MDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kOiAjMzUzNjM3O30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg5MCwgMTAwLCAxMjYsIDAuODgpO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzQwNDA0MDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9rZXl3b3JkLCAuYWNlLWlkbGUtZmluZ2VycyAuYWNlX21ldGEgeyAgY29sb3I6I0NDNzgzMzt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudCwgLmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6IzZDOTlCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6IzZDOTlCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojNkM5OUJCO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNGRjAwMDA7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IzZDOTlCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogI0NDNzgzMzsgICAgYm9yZGVyLWNvbG9yOiAjRkZGRkZGO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNCODM0MjY7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBmb250LXN0eWxlOml0YWxpYzt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9zdHJpbmcgeyAgY29sb3I6I0E1QzI2MTt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4cCB7ICBjb2xvcjojQ0NDQzMzO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0JDOTQ1ODt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0ZGRTVCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9lbnRpdHkuYWNlX25hbWUgeyAgY29sb3I6I0ZGQzY2RDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfY29sbGFiLmFjZV91c2VyMSB7ICBjb2xvcjojMzIzMjMyO2JhY2tncm91bmQtY29sb3I6I0ZGRjk4MDt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-kr_theme.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUva3JfdGhlbWUiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2Uta3ItdGhlbWUiLGIuY3NzVGV4dD0iLmFjZS1rci10aGVtZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2Uta3ItdGhlbWUgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2Uta3ItdGhlbWUgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLWtyLXRoZW1lIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWtyLXRoZW1lIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzBCMEEwOTt9LmFjZS1rci10aGVtZSAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICNGQ0ZGRTA7fS5hY2Uta3ItdGhlbWUgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkY5OTAwO30uYWNlLWtyLXRoZW1lIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkY5OTAwO30uYWNlLWtyLXRoZW1lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYmEoMTcwLCAwLCAyNTUsIDAuNDUpO30uYWNlLWtyLXRoZW1lLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHsgIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4ICMwQjBBMDk7ICBib3JkZXItcmFkaXVzOiAycHg7fS5hY2Uta3ItdGhlbWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1rci10aGVtZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDE3NywgMTExLCAwLjMyKTt9LmFjZS1rci10aGVtZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICMzODQwM0Q7fS5hY2Uta3ItdGhlbWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTcwLCAwLCAyNTUsIDAuNDUpO30uYWNlLWtyLXRoZW1lIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2JhKDI1NSwgMTc3LCAxMTEsIDAuMzIpO30uYWNlLWtyLXRoZW1lIC5hY2Vfa2V5d29yZCwgLmFjZS1rci10aGVtZSAuYWNlX21ldGEgeyAgY29sb3I6Izk0OUM4Qjt9LmFjZS1rci10aGVtZSAuYWNlX2NvbnN0YW50LCAuYWNlLWtyLXRoZW1lIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOnJnYmEoMjEwLCAxMTcsIDI0LCAwLjc2KTt9LmFjZS1rci10aGVtZSAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIsICB7ICBjb2xvcjpyZ2JhKDIxMCwgMTE3LCAyNCwgMC43Nik7fS5hY2Uta3ItdGhlbWUgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjpyZ2JhKDIxMCwgMTE3LCAyNCwgMC43Nik7fS5hY2Uta3ItdGhlbWUgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNGOEY4Rjg7YmFja2dyb3VuZC1jb2xvcjojQTQxMzAwO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3VwcG9ydCB7ICBjb2xvcjojOUZDMjhBO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0MyN0U2Njt9LmFjZS1rci10aGVtZSAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTQ5QzhCOyAgICBib3JkZXItY29sb3I6ICNGQ0ZGRTA7fS5hY2Uta3ItdGhlbWUgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojODU4NzNBO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojRkZFRTgwO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6cmdiYSgxMjUsIDI1NSwgMTkyLCAwLjY1KTt9LmFjZS1rci10aGVtZSAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6IzcwNkQ1Qjt9LmFjZS1rci10aGVtZSAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNEMUE3OTY7fS5hY2Uta3ItdGhlbWUgLmFjZV92YXJpYWJsZS5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0ZGODBFMTt9LmFjZS1rci10aGVtZSAuYWNlX21ldGEuYWNlX3RhZyB7ICBjb2xvcjojQkFCRDlDO30uYWNlLWtyLXRoZW1lIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLWtyLXRoZW1lIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGJhY2tncm91bmQtY29sb3I6IzBGMDA0MDt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-merbivore.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbWVyYml2b3JlIixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITAsYi5jc3NDbGFzcz0iYWNlLW1lcmJpdm9yZSIsYi5jc3NUZXh0PSIuYWNlLW1lcmJpdm9yZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbWVyYml2b3JlIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLW1lcmJpdm9yZSAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2UtbWVyYml2b3JlIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLW1lcmJpdm9yZSAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMxNjE2MTY7fS5hY2UtbWVyYml2b3JlIC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogI0U2RTFEQzt9LmFjZS1tZXJiaXZvcmUgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1lcmJpdm9yZSAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZGRkZGRjt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzQ1NDU0NTt9LmFjZS1tZXJiaXZvcmUubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzE2MTYxNjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkICM0MDQwNDA7fS5hY2UtbWVyYml2b3JlIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzMzMzQzNTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkICM0NTQ1NDU7fS5hY2UtbWVyYml2b3JlIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjNDA0MDQwO30uYWNlLW1lcmJpdm9yZSAuYWNlX2tleXdvcmQsIC5hY2UtbWVyYml2b3JlIC5hY2VfbWV0YSB7ICBjb2xvcjojRkM2RjA5O30uYWNlLW1lcmJpdm9yZSAuYWNlX2NvbnN0YW50LCAuYWNlLW1lcmJpdm9yZSAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojMUVEQUZCO30uYWNlLW1lcmJpdm9yZSAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIsICB7ICBjb2xvcjojMUVEQUZCO30uYWNlLW1lcmJpdm9yZSAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIuYWNlX2VzY2FwZSwgIHsgIGNvbG9yOiMxRURBRkI7fS5hY2UtbWVyYml2b3JlIC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNGREMyNTE7fS5hY2UtbWVyYml2b3JlIC5hY2VfY29uc3RhbnQuYWNlX2xpYnJhcnkgeyAgY29sb3I6IzhERkYwQTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojNThDNTU0O30uYWNlLW1lcmJpdm9yZSAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM5OTAwMDA7fS5hY2UtbWVyYml2b3JlIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IzhERkYwQTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDNkYwOTsgICAgYm9yZGVyLWNvbG9yOiAjRTZFMURDO30uYWNlLW1lcmJpdm9yZSAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNGQzZGMDk7fS5hY2UtbWVyYml2b3JlIC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojRkM2RjA5O30uYWNlLW1lcmJpdm9yZSAuYWNlX3N0cmluZyB7ICBjb2xvcjojOERGRjBBO30uYWNlLW1lcmJpdm9yZSAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0FEMkVBNDt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0ZDNkYwOTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojRkZGRjg5O30uYWNlLW1lcmJpdm9yZSAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-merbivore_soft.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbWVyYml2b3JlX3NvZnQiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2UtbWVyYml2b3JlLXNvZnQiLGIuY3NzVGV4dD0iLmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzFDMUMxQzt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICNFNkUxREM7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICM0OTQ5NDk7fS5hY2UtbWVyYml2b3JlLXNvZnQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzFDMUMxQzsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNDA0MDQwO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzMzMzQzNTt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzQ5NDk0OTt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzQwNDA0MDt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2tleXdvcmQsIC5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9tZXRhIHsgIGNvbG9yOiNGQzgwM0E7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jb25zdGFudCwgLmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojNjhDMUQ4O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3RlciwgIHsgIGNvbG9yOiM2OEMxRDg7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojNjhDMUQ4O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNFMUM1ODI7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jb25zdGFudC5hY2VfbGlicmFyeSB7ICBjb2xvcjojOEVDNjVGO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IzdGQzU3ODt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNGRTM4Mzg7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIGNvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1jb2xvcjojRkUzODM4O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IzhFQzY1Rjt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkM4MDNBOyAgICBib3JkZXItY29sb3I6ICNFNkUxREM7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiNGQzgwM0E7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzhFQzY1Rjt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0FDNEJCODt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX21ldGEgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0FDNEJCODt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX21ldGEuYWNlX3RhZyB7ICBjb2xvcjojRkM4MDNBO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6I0VBRjFBMzt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-monokai.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbW9ub2thaSIsZnVuY3Rpb24oYSxiLGMpe2IuaXNEYXJrPSEwLGIuY3NzQ2xhc3M9ImFjZS1tb25va2FpIixiLmNzc1RleHQ9Ii5hY2UtbW9ub2thaSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbW9ub2thaSAuYWNlX2VkaXRvci5hY2VfZm9jdXMgeyAgYm9yZGVyOiAycHggc29saWQgIzMyN2ZiZDt9LmFjZS1tb25va2FpIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICMyOTJhMjQ7ICBjb2xvcjogI2YxZjFmMTt9LmFjZS1tb25va2FpIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLW1vbm9rYWkgLmFjZV9zY3JvbGxlciB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjcyODIyO30uYWNlLW1vbm9rYWkgLmFjZV90ZXh0LWxheWVyIHsgIGN1cnNvcjogdGV4dDsgIGNvbG9yOiAjRjhGOEYyO30uYWNlLW1vbm9rYWkgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRjhGOEYwO30uYWNlLW1vbm9rYWkgLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICBib3JkZXItbGVmdDogMHB4OyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGOEY4RjA7fS5hY2UtbW9ub2thaSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiAjNDk0ODNFO30uYWNlLW1vbm9rYWkubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzI3MjgyMjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tb25va2FpIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMTAyLCA4MiwgMCk7fS5hY2UtbW9ub2thaSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgIzQ5NDgzRTt9LmFjZS1tb25va2FpIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmV7ICBiYWNrZ3JvdW5kOiAjNDk0ODNFO30uYWNlLW1vbm9rYWkgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmV7ICBiYWNrZ3JvdW5kOiAjMTkxOTE2O30uYWNlLW1vbm9rYWkgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkICM0OTQ4M0U7fS5hY2UtbW9ub2thaSAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzQ5NDgzRTt9LmFjZS1tb25va2FpIC5hY2Vfa2V5d29yZCwgLmFjZS1tb25va2FpIC5hY2VfbWV0YSB7ICBjb2xvcjojRjkyNjcyO30uYWNlLW1vbm9rYWkgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0FFODFGRjt9LmFjZS1tb25va2FpIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6I0FFODFGRjt9LmFjZS1tb25va2FpIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiNBRTgxRkY7fS5hY2UtbW9ub2thaSAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0Y4RjhGMDtiYWNrZ3JvdW5kLWNvbG9yOiNGOTI2NzI7fS5hY2UtbW9ub2thaSAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgY29sb3I6I0Y4RjhGMDtiYWNrZ3JvdW5kLWNvbG9yOiNBRTgxRkY7fS5hY2UtbW9ub2thaSAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiM2NkQ5RUY7fS5hY2UtbW9ub2thaSAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTZFMjJFOyAgICBib3JkZXItY29sb3I6ICNGOEY4RjI7fS5hY2UtbW9ub2thaSAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM2NkQ5RUY7fS5hY2UtbW9ub2thaSAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0Y5MjY3Mjt9LmFjZS1tb25va2FpIC5hY2Vfc3RvcmFnZS5hY2VfdHlwZSwgIC5hY2UtbW9ub2thaSAuYWNlX3N1cHBvcnQuYWNlX3R5cGV7ICBmb250LXN0eWxlOml0YWxpYztjb2xvcjojNjZEOUVGO30uYWNlLW1vbm9rYWkgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojQTZFMjJFO30uYWNlLW1vbm9rYWkgLmFjZV92YXJpYWJsZS5hY2VfcGFyYW1ldGVyIHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiNGRDk3MUY7fS5hY2UtbW9ub2thaSAuYWNlX3N0cmluZyB7ICBjb2xvcjojRTZEQjc0O30uYWNlLW1vbm9rYWkgLmFjZV9jb21tZW50IHsgIGNvbG9yOiM3NTcxNUU7fS5hY2UtbW9ub2thaSAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOiNBNkUyMkU7fS5hY2UtbW9ub2thaSAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0E2RTIyRTt9LmFjZS1tb25va2FpIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30iO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-mono_industrial.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbW9ub19pbmR1c3RyaWFsIixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITAsYi5jc3NDbGFzcz0iYWNlLW1vbm8taW5kdXN0cmlhbCIsYi5jc3NUZXh0PSIuYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMyMjJDMjg7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogI0ZGRkZGRjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZGRkZGRjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiYSgxNDUsIDE1MywgMTQ4LCAwLjQwKTt9LmFjZS1tb25vLWluZHVzdHJpYWwubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzIyMkMyODsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAyLCAxMDgsIDEwNCwgMC41MCk7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgxMiwgMTMsIDEyLCAwLjI1KTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ1LCAxNTMsIDE0OCwgMC40MCk7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2JhKDEwMiwgMTA4LCAxMDQsIDAuNTApO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2tleXdvcmQsIC5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfbWV0YSB7ICBjb2xvcjojQTM5RTY0O30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiNBOEIzQUI7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQsIC5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiNFOTg4MDA7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3RlciwgIHsgIGNvbG9yOiNFOTg4MDA7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3Rlci5hY2VfZXNjYXBlLCAgeyAgY29sb3I6I0U5ODgwMDt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojRTk4ODAwO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTUzLCAwLCAwLCAwLjY4KTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjojQzg3NTAwO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQThCM0FCOyAgICBib3JkZXItY29sb3I6ICNGRkZGRkY7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzU4OEU2MDt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiNDMjNCMDA7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6I0E4QjNBQjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV92YXJpYWJsZS5hY2VfcGFyYW1ldGVyIHsgIGNvbG9yOiM2NDhCRDI7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29tbWVudCB7ICBjb2xvcjojNjY2QzY4O2JhY2tncm91bmQtY29sb3I6IzE1MUMxOTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV92YXJpYWJsZS5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IzY0OEJEMjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojOTA5OTkzO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2VudGl0eS5hY2VfbmFtZSB7ICBjb2xvcjojNTc3OEI2O30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0E4QjNBQjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-pastel_on_dark.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvcGFzdGVsX29uX2RhcmsiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2UtcGFzdGVsLW9uLWRhcmsiLGIuY3NzVGV4dD0iLmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzJDMjgyODt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICM4RjkzOEY7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQTdBN0E3O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQTdBN0E3O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtcGFzdGVsLW9uLWRhcmsubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzJDMjgyODsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzMSk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9rZXl3b3JkLCAuYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWV0YSB7ICBjb2xvcjojNzU3YUQ4O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6Izc5Nzg3ODt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2NvbnN0YW50LCAuYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiM0RkI3QzU7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6IzRGQjdDNTt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIuYWNlX2VzY2FwZSwgIHsgIGNvbG9yOiM0RkI3QzU7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0RFOEUzMDt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiNDQ0NDQ0M7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNGOEY4Rjg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDg2LCA0NSwgODYsIDAuNzUpO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfaW52YWxpZC5hY2VfaWxsZWdhbCB7ICBjb2xvcjojRjhGOEY4O2JhY2tncm91bmQtY29sb3I6cmdiYSg4NiwgNDUsIDg2LCAwLjc1KTt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtmb250LXN0eWxlOml0YWxpYztjb2xvcjojRDJBOEExO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICM3NTdhRDg7ICAgIGJvcmRlci1jb2xvcjogIzhGOTM4Rjt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNBRUIyRjg7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzY2QTk2ODt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNFOUMwNjI7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jb21tZW50IHsgIGNvbG9yOiNBNkM2RkY7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojQkVCRjU1O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfdmFyaWFibGUuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNDMUMxNDQ7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV94bWxfcGUgeyAgY29sb3I6IzQ5NDk0OTt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-solarized_dark.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvc29sYXJpemVkX2RhcmsiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2Utc29sYXJpemVkLWRhcmsiLGIuY3NzVGV4dD0iLmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzA5MjIyYjsgIGNvbG9yOiAjZDBlZGY3O30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzAwMkIzNjt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICM5M0ExQTE7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRDMwMTAyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRDMwMTAyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICMwNzM2NDI7fS5hY2Utc29sYXJpemVkLWRhcmsubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzAwMkIzNjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NywgMTYxLCAxNjEsIDAuNTApO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzA3MzY0Mjt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZXsgIGJhY2tncm91bmQ6ICMwZDM0NDA7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkICMwNzM2NDI7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6IHJnYmEoMTQ3LCAxNjEsIDE2MSwgMC41MCk7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9rZXl3b3JkLCAuYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWV0YSB7ICBjb2xvcjojODU5OTAwO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNCNTg5MDA7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojRDMzNjgyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiNDQjRCMTY7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzI2OEJEMjsgICAgYm9yZGVyLWNvbG9yOiAjOTNBMUExO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzI2OEJEMjt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6IzkzQTFBMTt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzJBQTE5ODt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNEMzAxMDI7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9jb21tZW50IHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM2NTdCODM7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV92YXJpYWJsZS5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IzI2OEJEMjt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOiM5M0ExQTE7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-solarized_light.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvc29sYXJpemVkX2xpZ2h0IixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITEsYi5jc3NDbGFzcz0iYWNlLXNvbGFyaXplZC1saWdodCIsYi5jc3NUZXh0PSIuYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICNGREY2RTM7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogIzU4NkU3NTt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDAwMDAwO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDAwMDt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzA3MzY0Mjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggI0ZERjZFMzsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMCk7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NywgMTYxLCAxNjEsIDAuNTApO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICNFRUU4RDU7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjMDczNjQyO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogcmdiYSgxNDcsIDE2MSwgMTYxLCAwLjUwKTt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9rZXl3b3JkLCAuYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX21ldGEgeyAgY29sb3I6Izg1OTkwMDt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0I1ODkwMDt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojRDMzNjgyO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojQ0I0QjE2O30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjY4QkQyOyAgICBib3JkZXItY29sb3I6ICM1ODZFNzU7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzI2OEJEMjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiMwNzM2NDI7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfdmFyaWFibGUgeyAgY29sb3I6IzI2OEJEMjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzJBQTE5ODt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4cCB7ICBjb2xvcjojRDMwMTAyO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2NvbW1lbnQgeyAgY29sb3I6IzkzQTFBMTt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV92YXJpYWJsZS5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IzI2OEJEMjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojOTNBMUExO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzI2OEJEMjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-textmate.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdGV4dG1hdGUiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMSxiLmNzc0NsYXNzPSJhY2UtdG0iLGIuY3NzVGV4dD0iLmFjZS10bSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG0gLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG0gLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLXRtIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXRtIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICM2QjcyRTY7fS5hY2UtdG0gLmFjZV90ZXh0LWxheWVyIHsgIGN1cnNvcjogdGV4dDt9LmFjZS10bSAuYWNlX2N1cnNvciB7ICBib3JkZXItbGVmdDogMnB4IHNvbGlkIGJsYWNrO30uYWNlLXRtIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazt9ICAgICAgICAuYWNlLXRtIC5hY2VfbGluZSAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N0b3JhZ2UsLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkIHsgIGNvbG9yOiBibHVlO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiByZ2IoMTk3LCA2LCAxMSk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2J1aWxkaW4geyAgY29sb3I6IHJnYig4OCwgNzIsIDI0Nik7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiByZ2IoODgsIDkyLCAyNDYpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9saWJyYXJ5IHsgIGNvbG9yOiByZ2IoNiwgMTUwLCAxNCk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfaW52YWxpZCB7ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMCwgMCwgMC4xKTsgIGNvbG9yOiByZWQ7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IHJnYig2MCwgNzYsIDExNCk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS10bSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV90eXBlLC5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY2xhc3MgeyAgY29sb3I6IHJnYigxMDksIDEyMSwgMjIyKTt9LmFjZS10bSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjogcmdiKDEwNCwgMTE4LCAxMzUpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N0cmluZyB7ICBjb2xvcjogcmdiKDMsIDEwNiwgNyk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29tbWVudCB7ICBjb2xvcjogcmdiKDc2LCAxMzYsIDEwNyk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHsgIGNvbG9yOiByZ2IoMCwgMTAyLCAyNTUpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYy5hY2VfdGFnIHsgIGNvbG9yOiByZ2IoMTI4LCAxNTksIDE5MSk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IHJnYigwLCAwLCAyMDUpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiByZ2IoNDksIDEzMiwgMTQ5KTt9LmFjZS10bSAuYWNlX2xpbmUgLmFjZV94bWxfcGUgeyAgY29sb3I6IHJnYigxMDQsIDEwNCwgOTEpO30uYWNlLXRtIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogIzAwMDBBMjt9LmFjZS10bSAuYWNlX21hcmt1cC5hY2VfbWFya3VwaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS10bSAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjogcmdiKDEyLCA3LCAyNTUpO30uYWNlLXRtIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOnJnYigxODUsIDYsIDE0NCk7fS5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiKDE4MSwgMjEzLCAyNTUpO30uYWNlLXRtLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHsgIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4IHdoaXRlOyAgYm9yZGVyLXJhZGl1czogMnB4O30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUyLCAyNTUsIDApO30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RhY2sgeyAgYmFja2dyb3VuZDogcmdiKDE2NCwgMjI5LCAxMDEpO30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTkyLCAxOTIsIDE5Mik7fS5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDcpO30uYWNlLXRtIC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5leyAgICBiYWNrZ3JvdW5kLWNvbG9yIDogI2RjZGNkYzt9LmFjZS10bSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYmFja2dyb3VuZDogcmdiKDI1MCwgMjUwLCAyNTUpOyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwMCwgMjAwLCAyNTApO30uYWNlLXRtIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOnJnYigwLCA1MCwgMTk4KTt9LmFjZS10bSAuYWNlX3N0cmluZy5hY2VfcmVnZXggeyAgY29sb3I6IHJnYigyNTUsIDAsIDApfSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3ciLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMSxiLmNzc0NsYXNzPSJhY2UtdG9tb3Jyb3ciLGIuY3NzVGV4dD0iLmFjZS10b21vcnJvdyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3cgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG9tb3Jyb3cgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLXRvbW9ycm93IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXRvbW9ycm93IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjt9LmFjZS10b21vcnJvdyAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICM0RDRENEM7fS5hY2UtdG9tb3Jyb3cgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICNENkQ2RDY7fS5hY2UtdG9tb3Jyb3cubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggI0ZGRkZGRjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdyAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDI1NSwgMjU1LCAwKTt9LmFjZS10b21vcnJvdyAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgI0QxRDFEMTt9LmFjZS10b21vcnJvdyAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICNFRkVGRUY7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkICNENkQ2RDY7fS5hY2UtdG9tb3Jyb3cgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6ICNEMUQxRDE7fS5hY2UtdG9tb3Jyb3cgLmFjZV9rZXl3b3JkLCAuYWNlLXRvbW9ycm93IC5hY2VfbWV0YSB7ICBjb2xvcjojODk1OUE4O30uYWNlLXRvbW9ycm93IC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6IzNFOTk5Rjt9LmFjZS10b21vcnJvdyAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojRjU4NzFGO30uYWNlLXRvbW9ycm93IC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6I0Y1ODcxRjt9LmFjZS10b21vcnJvdyAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojNjY2OTY5O30uYWNlLXRvbW9ycm93IC5hY2VfaW52YWxpZCB7ICBjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6I0M4MjgyOTt9LmFjZS10b21vcnJvdyAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM4OTU5QTg7fS5hY2UtdG9tb3Jyb3cgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjojRjU4NzFGO30uYWNlLXRvbW9ycm93IC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICM0MjcxQUU7ICAgIGJvcmRlci1jb2xvcjogIzRENEQ0Qzt9LmFjZS10b21vcnJvdyAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM0MjcxQUU7fS5hY2UtdG9tb3Jyb3cgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiM4OTU5QTg7fS5hY2UtdG9tb3Jyb3cgLmFjZV9zdG9yYWdlLmFjZV90eXBlLCAgLmFjZS10b21vcnJvdyAuYWNlX3N1cHBvcnQuYWNlX3R5cGV7ICBjb2xvcjojODk1OUE4O30uYWNlLXRvbW9ycm93IC5hY2VfdmFyaWFibGUgeyAgY29sb3I6IzQyNzFBRTt9LmFjZS10b21vcnJvdyAuYWNlX3ZhcmlhYmxlLmFjZV9wYXJhbWV0ZXIgeyAgY29sb3I6I0Y1ODcxRjt9LmFjZS10b21vcnJvdyAuYWNlX3N0cmluZyB7ICBjb2xvcjojNzE4QzAwO30uYWNlLXRvbW9ycm93IC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6I0M4MjgyOTt9LmFjZS10b21vcnJvdyAuYWNlX2NvbW1lbnQgeyAgY29sb3I6IzhFOTA4Qzt9LmFjZS10b21vcnJvdyAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNDODI4Mjk7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0M4MjgyOTt9LmFjZS10b21vcnJvdyAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOiNDODI4Mjk7fS5hY2UtdG9tb3Jyb3cgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM0MjcxQUU7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tYXJrdXAuYWNlX2hlYWRpbmcgeyAgY29sb3I6IzcxOEMwMDt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHQiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2UtdG9tb3Jyb3ctbmlnaHQiLGIuY3NzVGV4dD0iLmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzFEMUYyMTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICNDNUM4QzY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICMzNzNCNDE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzFEMUYyMTsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNEI0RTU1O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzI4MkEyRTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzM3M0I0MTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzRCNEU1NTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2tleXdvcmQsIC5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9tZXRhIHsgIGNvbG9yOiNCMjk0QkI7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjojOEFCRUI3O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNERTkzNUY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojREU5MzVGO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiNDRUQxQ0Y7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNDRUQyQ0Y7YmFja2dyb3VuZC1jb2xvcjojREY1RjVGO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfaW52YWxpZC5hY2VfZGVwcmVjYXRlZCB7ICBjb2xvcjojQ0VEMkNGO2JhY2tncm91bmQtY29sb3I6I0I3OThCRjt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiNERTkzNUY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzgxQTJCRTsgICAgYm9yZGVyLWNvbG9yOiAjQzVDOEM2O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzgxQTJCRTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0IyOTRCQjt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX3N0b3JhZ2UuYWNlX3R5cGUsICAuYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfdHlwZXsgIGNvbG9yOiNCMjk0QkI7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojODFBMkJFO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBjb2xvcjojREU5MzVGO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiNCNUJENjg7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4cCB7ICBjb2xvcjojQ0M2NjY2O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfY29tbWVudCB7ICBjb2xvcjojOTY5ODk2O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfdmFyaWFibGUgeyAgY29sb3I6I0NDNjY2Njt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX21ldGEuYWNlX3RhZyB7ICBjb2xvcjojQ0M2NjY2O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6I0NDNjY2Njt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzgxQTJCRTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjojQjVCRDY4O30iO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night_blue.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHRfYmx1ZSIsZnVuY3Rpb24oYSxiLGMpe2IuaXNEYXJrPSEwLGIuY3NzQ2xhc3M9ImFjZS10b21vcnJvdy1uaWdodC1ibHVlIixiLmNzc1RleHQ9Ii5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2VkaXRvci5hY2VfZm9jdXMgeyAgYm9yZGVyOiAycHggc29saWQgIzMyN2ZiZDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICMwMjIzNDY7ICBjb2xvcjogIzczODhiNTt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zY3JvbGxlciB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAyNDUxO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV90ZXh0LWxheWVyIHsgIGN1cnNvcjogdGV4dDsgIGNvbG9yOiAjRkZGRkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICBib3JkZXItbGVmdDogMHB4OyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGRkZGRkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiAjMDAzRjhFO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzAwMjQ1MTsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMTI3LCAxMTEsIDE5KTt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNDA0RjdEO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZXsgIGJhY2tncm91bmQ6ICMwMDM0NkU7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZXsgIGJhY2tncm91bmQ6ICMwMjIwNDA7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzAwM0Y4RTt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjNDA0RjdEO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9rZXl3b3JkLCAuYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9tZXRhIHsgIGNvbG9yOiNFQkJCRkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiM5OUZGRkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojRkZDNThGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojRkZDNThGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0ZGRkZGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfaW52YWxpZCB7ICBjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6I0Y5OURBNTt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfaW52YWxpZC5hY2VfZGVwcmVjYXRlZCB7ICBjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6I0VCQkJGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0ZGQzU4Rjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNCQkRBRkY7ICAgIGJvcmRlci1jb2xvcjogI0ZGRkZGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0JCREFGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojRUJCQkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zdG9yYWdlLmFjZV90eXBlLCAgLmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2Vfc3VwcG9ydC5hY2VfdHlwZXsgIGNvbG9yOiNFQkJCRkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNCQkRBRkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX3ZhcmlhYmxlLmFjZV9wYXJhbWV0ZXIgeyAgY29sb3I6I0ZGQzU4Rjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiNEMUYxQTk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNGRjlEQTQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2NvbW1lbnQgeyAgY29sb3I6IzcyODVCNzt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6I0ZGOURBNDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiNGRjlEQTQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOiNGRjlEQTQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0JCREFGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9tYXJrdXAuYWNlX2hlYWRpbmcgeyAgY29sb3I6I0QxRjFBOTt9Ijt2YXIgZD1hKCIuLi9saWIvZG9tIik7ZC5pbXBvcnRDc3NTdHJpbmcoYi5jc3NUZXh0LGIuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night_bright.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHRfYnJpZ2h0IixmdW5jdGlvbihhLGIsYyl7Yi5pc0Rhcms9ITAsYi5jc3NDbGFzcz0iYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCIsYi5jc3NUZXh0PSIuYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAgY29sb3I6ICMzMzM7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfdGV4dC1sYXllciB7ICBjdXJzb3I6IHRleHQ7ICBjb2xvcjogI0RFREVERTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjOUY5RjlGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzlGOUY5Rjt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzQyNDI0Mjt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzAwMDAwMDsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkICMzNDM0MzQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzJBMkEyQTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjMzQzNDM0O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2tleXdvcmQsIC5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWV0YSB7ICBjb2xvcjojQzM5N0Q4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiM3MEMwQjE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNFNzhDNDU7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6I0U3OEM0NTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0VFRUVFRTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNDRUQyQ0Y7YmFja2dyb3VuZC1jb2xvcjojREY1RjVGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgY29sb3I6I0NFRDJDRjtiYWNrZ3JvdW5kLWNvbG9yOiNCNzk4QkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0U3OEM0NTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzdBQTZEQTsgICAgYm9yZGVyLWNvbG9yOiAjREVERURFO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM3QUE2REE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojQzM5N0Q4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N0b3JhZ2UuYWNlX3R5cGUsICAuYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N1cHBvcnQuYWNlX3R5cGV7ICBjb2xvcjojQzM5N0Q4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiM3QUE2REE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBjb2xvcjojRTc4QzQ1O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N0cmluZyB7ICBjb2xvcjojQjlDQTRBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNENTRFNTM7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfY29tbWVudCB7ICBjb2xvcjojOTY5ODk2O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNENTRFNTM7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiNENTRFNTM7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6I0Q1NEU1Mzt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM3QUE2REE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjojQjlDQTRBO30iO3ZhciBkPWEoIi4uL2xpYi9kb20iKTtkLmltcG9ydENzc1N0cmluZyhiLmNzc1RleHQsYi5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night_eighties.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMiLGIuY3NzVGV4dD0iLmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzJEMkQyRDt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICNDQ0NDQ0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQ0NDQ0NDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQ0NDQ0NDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICM1MTUxNTE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzJEMkQyRDsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNkE2QTZBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzM5MzkzOTt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzUxNTE1MTt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzZBNkE2QTt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2tleXdvcmQsIC5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9tZXRhIHsgIGNvbG9yOiNDQzk5Q0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjojNjZDQ0NDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNGOTkxNTc7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojRjk5MTU3O30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiNDQ0NDQ0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNDRENEQ0Q7YmFja2dyb3VuZC1jb2xvcjojRjI3NzdBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfaW52YWxpZC5hY2VfZGVwcmVjYXRlZCB7ICBjb2xvcjojQ0RDRENEO2JhY2tncm91bmQtY29sb3I6I0NDOTlDQzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiNGOTkxNTc7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzY2OTlDQzsgICAgYm9yZGVyLWNvbG9yOiAjQ0NDQ0NDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzY2OTlDQzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0NDOTlDQzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX3N0b3JhZ2UuYWNlX3R5cGUsICAuYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc3VwcG9ydC5hY2VfdHlwZXsgIGNvbG9yOiNDQzk5Q0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojNjY5OUNDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBjb2xvcjojRjk5MTU3O30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiM5OUNDOTk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9jb21tZW50IHsgIGNvbG9yOiM5OTk5OTk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojRjI3NzdBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiNGMjc3N0E7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojRjI3NzdBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojNjY5OUNDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya3VwLmFjZV9oZWFkaW5nIHsgIGNvbG9yOiM5OUNDOTk7fSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-twilight.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdHdpbGlnaHQiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2UtdHdpbGlnaHQiLGIuY3NzVGV4dD0iLmFjZS10d2lsaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdHdpbGlnaHQgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLXR3aWxpZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXR3aWxpZ2h0IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzE0MTQxNDt9LmFjZS10d2lsaWdodCAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICNGOEY4Rjg7fS5hY2UtdHdpbGlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQTdBN0E3O30uYWNlLXR3aWxpZ2h0IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQTdBN0E3O30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtdHdpbGlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzE0MTQxNDsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10d2lsaWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzMSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtdHdpbGlnaHQgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9rZXl3b3JkLCAuYWNlLXR3aWxpZ2h0IC5hY2VfbWV0YSB7ICBjb2xvcjojQ0RBODY5O30uYWNlLXR3aWxpZ2h0IC5hY2VfY29uc3RhbnQsIC5hY2UtdHdpbGlnaHQgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0NGNkE0Qzt9LmFjZS10d2lsaWdodCAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIsICB7ICBjb2xvcjojQ0Y2QTRDO30uYWNlLXR3aWxpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3Rlci5hY2VfZXNjYXBlLCAgeyAgY29sb3I6I0NGNkE0Qzt9LmFjZS10d2lsaWdodCAuYWNlX2ludmFsaWQuYWNlX2lsbGVnYWwgeyAgY29sb3I6I0Y4RjhGODtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoODYsIDQ1LCA4NiwgMC43NSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Zm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0QyQThBMTt9LmFjZS10d2lsaWdodCAuYWNlX3N1cHBvcnQgeyAgY29sb3I6IzlCODU5RDt9LmFjZS10d2lsaWdodCAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiNDRjZBNEM7fS5hY2UtdHdpbGlnaHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogI0FDODg1QjsgICAgYm9yZGVyLWNvbG9yOiAjRjhGOEY4O30uYWNlLXR3aWxpZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0RBRDA4NTt9LmFjZS10d2lsaWdodCAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0Y5RUU5ODt9LmFjZS10d2lsaWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNBQzg4NUI7fS5hY2UtdHdpbGlnaHQgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzhGOUQ2QTt9LmFjZS10d2lsaWdodCAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNFOUMwNjI7fS5hY2UtdHdpbGlnaHQgLmFjZV9jb21tZW50IHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM1RjVBNjA7fS5hY2UtdHdpbGlnaHQgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojNzU4N0E2O30uYWNlLXR3aWxpZ2h0IC5hY2VfeG1sX3BlIHsgIGNvbG9yOiM0OTQ5NDk7fS5hY2UtdHdpbGlnaHQgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0FDODg1Qjt9LmFjZS10d2lsaWdodCAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0FDODg1Qjt9LmFjZS10d2lsaWdodCAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS10d2lsaWdodCAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjojQ0Y2QTRDO30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOiNGOUVFOTg7fSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-vibrant_ink.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdmlicmFudF9pbmsiLGZ1bmN0aW9uKGEsYixjKXtiLmlzRGFyaz0hMCxiLmNzc0NsYXNzPSJhY2UtdmlicmFudC1pbmsiLGIuY3NzVGV4dD0iLmFjZS12aWJyYW50LWluayAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXZpYnJhbnQtaW5rIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzBGMEYwRjt9LmFjZS12aWJyYW50LWluayAuYWNlX3RleHQtbGF5ZXIgeyAgY3Vyc29yOiB0ZXh0OyAgY29sb3I6ICNGRkZGRkY7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkZGRkZGO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICM2Njk5Q0M7fS5hY2UtdmlicmFudC1pbmsubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzBGMEYwRjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS12aWJyYW50LWluayAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNDA0MDQwO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzMzMzMzMzt9LmFjZS12aWJyYW50LWluayAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzY2OTlDQzt9LmFjZS12aWJyYW50LWluayAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzQwNDA0MDt9LmFjZS12aWJyYW50LWluayAuYWNlX2tleXdvcmQsIC5hY2UtdmlicmFudC1pbmsgLmFjZV9tZXRhIHsgIGNvbG9yOiNGRjY2MDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9jb25zdGFudCwgLmFjZS12aWJyYW50LWluayAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojMzM5OTk5O30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3RlciwgIHsgIGNvbG9yOiMzMzk5OTk7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojMzM5OTk5O30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6Izk5Q0M5OTt9LmFjZS12aWJyYW50LWluayAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0NDRkYzMztiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIGNvbG9yOiNDQ0ZGMzM7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkNDMDA7ICAgIGJvcmRlci1jb2xvcjogI0ZGRkZGRjt9LmFjZS12aWJyYW50LWluayAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNGRkNDMDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojRkZDQzAwO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBmb250LXN0eWxlOml0YWxpYzt9LmFjZS12aWJyYW50LWluayAuYWNlX3N0cmluZyB7ICBjb2xvcjojNjZGRjAwO30uYWNlLXZpYnJhbnQtaW5rIC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6IzQ0QjRDQzt9LmFjZS12aWJyYW50LWluayAuYWNlX2NvbW1lbnQgeyAgY29sb3I6Izk5MzNDQzt9LmFjZS12aWJyYW50LWluayAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM5OUNDOTk7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNGRkNDMDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIGQ9YSgiLi4vbGliL2RvbSIpO2QuaW1wb3J0Q3NzU3RyaW5nKGIuY3NzVGV4dCxiLmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-coffee.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gaW5pdEJhc2VVcmxzKGEpe3JlcXVpcmUudGxucz1hfWZ1bmN0aW9uIGluaXRTZW5kZXIoKXt2YXIgYT1yZXF1aXJlKG51bGwsImFjZS9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixiPXJlcXVpcmUobnVsbCwiYWNlL2xpYi9vb3AiKSxjPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZnVuY3Rpb24oKXtiLmltcGxlbWVudCh0aGlzLGEpLHRoaXMuY2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtwb3N0TWVzc2FnZSh7dHlwZToiY2FsbCIsaWQ6YixkYXRhOmF9KX0sdGhpcy5lbWl0PWZ1bmN0aW9uKGEsYil7cG9zdE1lc3NhZ2Uoe3R5cGU6ImV2ZW50IixuYW1lOmEsZGF0YTpifSl9fS5jYWxsKGMucHJvdG90eXBlKSxuZXcgY30ibm8gdXNlIHN0cmljdCI7dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihhKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmF9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oYSxiKXtpZihiLmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgYz1iLnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShhLGNbMF0pKyIhIitub3JtYWxpemVNb2R1bGUoYSxjWzFdKX1pZihiLmNoYXJBdCgwKT09Ii4iKXt2YXIgZD1hLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGI9ZCsiLyIrYjt3aGlsZShiLmluZGV4T2YoIi4iKSE9PS0xJiZlIT1iKXZhciBlPWIsYj1iLnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiBifSxyZXF1aXJlPWZ1bmN0aW9uKGEsYil7dmFyIGI9bm9ybWFsaXplTW9kdWxlKGEsYiksYz1yZXF1aXJlLm1vZHVsZXNbYl07aWYoYylyZXR1cm4gYy5pbml0aWFsaXplZHx8KGMuZXhwb3J0cz1jLmZhY3RvcnkoKS5leHBvcnRzLGMuaW5pdGlhbGl6ZWQ9ITApLGMuZXhwb3J0czt2YXIgZD1iLnNwbGl0KCIvIik7ZFswXT1yZXF1aXJlLnRsbnNbZFswXV18fGRbMF07dmFyIGU9ZC5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9YixpbXBvcnRTY3JpcHRzKGUpLHJlcXVpcmUoYSxiKX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGEsYixjKXthcmd1bWVudHMubGVuZ3RoPT0yP2M9Yjphcmd1bWVudHMubGVuZ3RoPT0xJiYoYz1hLGE9cmVxdWlyZS5pZCk7aWYoYS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIGQ9ZnVuY3Rpb24oYixjKXtyZXR1cm4gcmVxdWlyZShhLGIsYyl9O3JlcXVpcmUubW9kdWxlc1thXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBhPXtleHBvcnRzOnt9fSxiPWMoZCxhLmV4cG9ydHMsYSk7cmV0dXJuIGImJihhLmV4cG9ydHM9YiksYX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO2lmKGIuY29tbWFuZCltYWluW2IuY29tbWFuZF0uYXBwbHkobWFpbixiLmFyZ3MpO2Vsc2UgaWYoYi5pbml0KXtpbml0QmFzZVVybHMoYi50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBjPXJlcXVpcmUobnVsbCxiLm1vZHVsZSlbYi5jbGFzc25hbWVdO21haW49bmV3IGMoc2VuZGVyKX1lbHNlIGIuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KGIuZXZlbnQsYi5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oYSxiLGMpe2EoIi4vcmVnZXhwIiksYSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBnKGEpe3JldHVybihhLmdsb2JhbD8iZyI6IiIpKyhhLmlnbm9yZUNhc2U/ImkiOiIiKSsoYS5tdWx0aWxpbmU/Im0iOiIiKSsoYS5leHRlbmRlZD8ieCI6IiIpKyhhLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIGgoYSxiLGMpe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYixjKTtmb3IodmFyIGQ9Y3x8MDtkPGEubGVuZ3RoO2QrKylpZihhW2RdPT09YilyZXR1cm4gZDtyZXR1cm4tMX12YXIgZD17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxlPWQuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQsZj1mdW5jdGlvbigpe3ZhciBhPS9eL2c7cmV0dXJuIGQudGVzdC5jYWxsKGEsIiIpLCFhLmxhc3RJbmRleH0oKTtpZihmJiZlKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjLGk7aWYodHlwZW9mIGE9PSJzdHJpbmciJiZiKXshZSYmYi5sZW5ndGg+MSYmaChiLCIiKT4tMSYmKGk9UmVnRXhwKHRoaXMuc291cmNlLGQucmVwbGFjZS5jYWxsKGcodGhpcyksImciLCIiKSksZC5yZXBsYWNlLmNhbGwoYS5zbGljZShiLmluZGV4KSxpLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTE7YTxhcmd1bWVudHMubGVuZ3RoLTI7YSsrKWFyZ3VtZW50c1thXT09PXVuZGVmaW5lZCYmKGJbYV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGo9MTtqPGIubGVuZ3RoO2orKyljPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2otMV0sYyYmKGJbY109YltqXSk7IWYmJnRoaXMuZ2xvYmFsJiYhYlswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PmIuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIGJ9LGZ8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmNhbGwodGhpcyxhKTtyZXR1cm4gYiYmdGhpcy5nbG9iYWwmJiFiWzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+Yi5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIWJ9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBwKGEpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGF9Y2F0Y2goYil7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD1nLmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGg9Yy5hcHBseShmLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIGghPT1udWxsJiZPYmplY3QoaCk9PT1oP2g6Zn1yZXR1cm4gYy5hcHBseShiLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBlfSk7dmFyIGQ9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsZT1BcnJheS5wcm90b3R5cGUsZj1PYmplY3QucHJvdG90eXBlLGc9ZS5zbGljZSxoPWQuYmluZChmLnRvU3RyaW5nKSxpPWQuYmluZChmLmhhc093blByb3BlcnR5KSxqLGssbCxtLG47aWYobj1pKGYsIl9fZGVmaW5lR2V0dGVyX18iKSlqPWQuYmluZChmLl9fZGVmaW5lR2V0dGVyX18pLGs9ZC5iaW5kKGYuX19kZWZpbmVTZXR0ZXJfXyksbD1kLmJpbmQoZi5fX2xvb2t1cEdldHRlcl9fKSxtPWQuYmluZChmLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGIpe3JldHVybiBoKGIpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9YXJndW1lbnRzWzFdLGU9MCxmPWMubGVuZ3RoPj4+MDtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoZTxmKWUgaW4gYyYmYi5jYWxsKGQsY1tlXSxlLGMpLGUrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjAsZT1BcnJheShkKSxmPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBnPTA7ZzxkO2crKylnIGluIGMmJihlW2ddPWIuY2FsbChmLGNbZ10sZyxjKSk7cmV0dXJuIGV9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9W10sZj1hcmd1bWVudHNbMV07aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgZz0wO2c8ZDtnKyspZyBpbiBjJiZiLmNhbGwoZixjW2ddLGcsYykmJmUucHVzaChjW2ddKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9YXJndW1lbnRzWzFdO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIGY9MDtmPGQ7ZisrKWlmKGYgaW4gYyYmIWIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MCxlPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBmPTA7ZjxkO2YrKylpZihmIGluIGMmJmIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFkJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGU9MCxmO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZj1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihlIGluIGMpe2Y9Y1tlKytdO2JyZWFrfWlmKCsrZT49ZCl0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2U8ZDtlKyspZSBpbiBjJiYoZj1iLmNhbGwodm9pZCAwLGYsY1tlXSxlLGMpKTtyZXR1cm4gZn0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighZCYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBlLGY9ZC0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihmIGluIGMpe2U9Y1tmLS1dO2JyZWFrfWlmKC0tZjwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIGYgaW4gdGhpcyYmKGU9Yi5jYWxsKHZvaWQgMCxlLGNbZl0sZixjKSk7d2hpbGUoZi0tKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGU9RShhcmd1bWVudHNbMV0pKSxlPWU+PTA/ZTpNYXRoLm1heCgwLGQrZSk7Zm9yKDtlPGQ7ZSsrKWlmKGUgaW4gYyYmY1tlXT09PWIpcmV0dXJuIGU7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT1kLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoZT1NYXRoLm1pbihlLEUoYXJndW1lbnRzWzFdKSkpLGU9ZT49MD9lOmQtTWF0aC5hYnMoZSk7Zm9yKDtlPj0wO2UtLSlpZihlIGluIGMmJmI9PT1jW2VdKXJldHVybiBlO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGIpe3JldHVybiBiLl9fcHJvdG9fX3x8KGIuY29uc3RydWN0b3I/Yi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6Zil9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIG89Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKGIsYyl7aWYodHlwZW9mIGIhPSJvYmplY3QiJiZ0eXBlb2YgYiE9ImZ1bmN0aW9uInx8Yj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihvK2IpO2lmKCFpKGIsYykpcmV0dXJuO3ZhciBkLGUsZztkPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYobil7dmFyIGg9Yi5fX3Byb3RvX187Yi5fX3Byb3RvX189Zjt2YXIgZT1sKGIsYyksZz1tKGIsYyk7Yi5fX3Byb3RvX189aDtpZihlfHxnKXJldHVybiBlJiYoZC5nZXQ9ZSksZyYmKGQuc2V0PWcpLGR9cmV0dXJuIGQudmFsdWU9YltjXSxkfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKGIpe3JldHVybiBPYmplY3Qua2V5cyhiKX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ7aWYoYj09PW51bGwpZD17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIGIhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgYisiXSAhPSAnb2JqZWN0JyIpO3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1iLGQ9bmV3IGUsZC5fX3Byb3RvX189Yn1yZXR1cm4gYyE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxjKSxkfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgcT1wKHt9KSxyPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFxfHwhcil2YXIgcz1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8cyl7dmFyIHQ9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHU9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIix2PSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKGIsYyxkKXtpZih0eXBlb2YgYiE9Im9iamVjdCImJnR5cGVvZiBiIT0iZnVuY3Rpb24ifHxiPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHUrYik7aWYodHlwZW9mIGQhPSJvYmplY3QiJiZ0eXBlb2YgZCE9ImZ1bmN0aW9uInx8ZD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih0K2QpO2lmKHMpdHJ5e3JldHVybiBzLmNhbGwoT2JqZWN0LGIsYyxkKX1jYXRjaChlKXt9aWYoaShkLCJ2YWx1ZSIpKWlmKG4mJihsKGIsYyl8fG0oYixjKSkpe3ZhciBnPWIuX19wcm90b19fO2IuX19wcm90b19fPWYsZGVsZXRlIGJbY10sYltjXT1kLnZhbHVlLGIuX19wcm90b19fPWd9ZWxzZSBiW2NdPWQudmFsdWU7ZWxzZXtpZighbil0aHJvdyBuZXcgVHlwZUVycm9yKHYpO2koZCwiZ2V0IikmJmooYixjLGQuZ2V0KSxpKGQsInNldCIpJiZrKGIsYyxkLnNldCl9cmV0dXJuIGJ9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oYixjKXtmb3IodmFyIGQgaW4gYylpKGMsZCkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLGQsY1tkXSk7cmV0dXJuIGJ9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKGIpe3JldHVybiBifSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKHcpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgYz09ImZ1bmN0aW9uIj9jOmIoYyl9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbihiKXtpZihPYmplY3QoYik9PT1iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGM9IiI7d2hpbGUoaShiLGMpKWMrPSI/IjtiW2NdPSEwO3ZhciBkPWkoYixjKTtyZXR1cm4gZGVsZXRlIGJbY10sZH0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAseT1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLHo9eS5sZW5ndGg7Zm9yKHZhciBBIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gSChhKXtpZih0eXBlb2YgYSE9Im9iamVjdCImJnR5cGVvZiBhIT0iZnVuY3Rpb24ifHxhPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEg9W107Zm9yKHZhciBiIGluIGEpaShhLGIpJiZILnB1c2goYik7aWYoeClmb3IodmFyIGM9MCxkPXo7YzxkO2MrKyl7dmFyIGU9eVtjXTtpKGEsZSkmJkgucHVzaChlKX1yZXR1cm4gSH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciBiLGMsZCxlO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjtiPVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGU9dGhpcy5nZXRVVENGdWxsWWVhcigpLGU9KGU8MD8iLSI6ZT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoZSkpLnNsaWNlKDA8PWUmJmU8PTk5OTk/LTQ6LTYpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWQ9YltjXSxkPDEwJiYoYltjXT0iMCIrZCk7cmV0dXJuIGUrIi0iK2Iuc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK2Iuc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGIpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbiBlKGIsYyxkLGYsZyxoLGkpe3ZhciBqPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGEpe3ZhciBrPWo9PTEmJlN0cmluZyhiKT09PWI/bmV3IGEoZS5wYXJzZShiKSk6aj49Nz9uZXcgYShiLGMsZCxmLGcsaCxpKTpqPj02P25ldyBhKGIsYyxkLGYsZyxoKTpqPj01P25ldyBhKGIsYyxkLGYsZyk6aj49ND9uZXcgYShiLGMsZCxmKTpqPj0zP25ldyBhKGIsYyxkKTpqPj0yP25ldyBhKGIsYyk6aj49MT9uZXcgYShiKTpuZXcgYTtyZXR1cm4gay5jb25zdHJ1Y3Rvcj1lLGt9cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIGQgaW4gYSliW2RdPWFbZF07cmV0dXJuIGIubm93PWEubm93LGIuVVRDPWEuVVRDLGIucHJvdG90eXBlPWEucHJvdG90eXBlLGIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIsYi5wYXJzZT1mdW5jdGlvbihkKXt2YXIgZT1jLmV4ZWMoZCk7aWYoZSl7ZS5zaGlmdCgpO2Zvcih2YXIgZj0xO2Y8NztmKyspZVtmXT0rKGVbZl18fChmPDM/MTowKSksZj09MSYmZVtmXS0tO3ZhciBnPStlLnBvcCgpLGg9K2UucG9wKCksaT1lLnBvcCgpLGo9MDtpZihpKXtpZihoPjIzfHxnPjU5KXJldHVybiBOYU47aj0oaCo2MCtnKSo2ZTQqKGk9PSIrIj8tMToxKX12YXIgaz0rZVswXTtyZXR1cm4gMDw9ayYmazw9OTk/KGVbMF09ays0MDAsYS5VVEMuYXBwbHkodGhpcyxlKStqLTEyNjIyNzgwOGU1KTphLlVUQy5hcHBseSh0aGlzLGUpK2p9cmV0dXJuIGEucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxifShEYXRlKSk7dmFyIEI9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxCLnRyaW0oKSl7Qj0iWyIrQisiXSI7dmFyIEM9bmV3IFJlZ0V4cCgiXiIrQitCKyIqIiksRD1uZXcgUmVnRXhwKEIrQisiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoQywiIikucmVwbGFjZShELCIiKX19dmFyIEU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9K2EsYSE9PWE/YT0wOmEhPT0wJiZhIT09MS8wJiZhIT09LUluZmluaXR5JiYoYT0oYT4wfHwtMSkqTWF0aC5mbG9vcihNYXRoLmFicyhhKSkpLGF9LEY9ImEiWzBdIT0iYSIsRz1mdW5jdGlvbihhKXtpZihhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIEYmJnR5cGVvZiBhPT0ic3RyaW5nIiYmYT9hLnNwbGl0KCIiKTpPYmplY3QoYSl9fSksZGVmaW5lKCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307ZC5fZW1pdD1kLl9kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fSx0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdfHxbXSxkPXRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXTtpZighYy5sZW5ndGgmJiFkKXJldHVybjtiPWJ8fHt9LGIudHlwZT1hLGIuc3RvcFByb3BhZ2F0aW9ufHwoYi5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0pLGIucHJldmVudERlZmF1bHR8fChiLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfSk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe2NbZV0oYik7aWYoYi5wcm9wYWdhdGlvblN0b3BwZWQpYnJlYWt9aWYoZCYmIWIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4gZChiKX0sZC5zZXREZWZhdWx0SGFuZGxlcj1mdW5jdGlvbihhLGIpe3RoaXMuX2RlZmF1bHRIYW5kbGVycz10aGlzLl9kZWZhdWx0SGFuZGxlcnN8fHt9O2lmKHRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkZWZhdWx0IGhhbmRsZXIgZm9yICciK2ErIicgaXMgYWxyZWFkeSBzZXQiKTt0aGlzLl9kZWZhdWx0SGFuZGxlcnNbYV09Yn0sZC5vbj1kLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLl9ldmVudFJlZ2lzdHJ5PXRoaXMuX2V2ZW50UmVnaXN0cnl8fHt9O3ZhciBjPXRoaXMuX2V2ZW50UmVnaXN0cnlbYV07aWYoIWMpdmFyIGM9dGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXTtjLmluZGV4T2YoYik9PS0xJiZjLnB1c2goYil9LGQucmVtb3ZlTGlzdGVuZXI9ZC5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdO2lmKCFjKXJldHVybjt2YXIgZD1jLmluZGV4T2YoYik7ZCE9PS0xJiZjLnNwbGljZShkLDEpfSxkLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihhKXt0aGlzLl9ldmVudFJlZ2lzdHJ5JiYodGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXSl9LGIuRXZlbnRFbWl0dGVyPWR9KSxkZWZpbmUoImFjZS9saWIvb29wIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2IuaW5oZXJpdHM9ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKGIsYyl7YS5wcm90b3R5cGU9Yy5wcm90b3R5cGUsYi5zdXBlcl89Yy5wcm90b3R5cGUsYi5wcm90b3R5cGU9bmV3IGEsYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yn19KCksYi5taXhpbj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWFbY109YltjXX0sYi5pbXBsZW1lbnQ9ZnVuY3Rpb24oYSxjKXtiLm1peGluKGEsYyl9fSksZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWVfd29ya2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2Uvd29ya2VyL21pcnJvciIsImFjZS9tb2RlL2NvZmZlZS9jb2ZmZWUtc2NyaXB0Il0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL3dvcmtlci9taXJyb3IiKS5NaXJyb3IsZj1hKCIuLi9tb2RlL2NvZmZlZS9jb2ZmZWUtc2NyaXB0Iik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oKXt9O3ZhciBnPWIuV29ya2VyPWZ1bmN0aW9uKGEpe2UuY2FsbCh0aGlzLGEpLHRoaXMuc2V0VGltZW91dCgyMDApfTtkLmluaGVyaXRzKGcsZSksZnVuY3Rpb24oKXt0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kb2MuZ2V0VmFsdWUoKTt0cnl7Zi5wYXJzZShhKX1jYXRjaChiKXt2YXIgYz1iLm1lc3NhZ2UubWF0Y2goL1BhcnNlIGVycm9yIG9uIGxpbmUgKFxkKyk6ICguKikvKTtpZihjKXt0aGlzLnNlbmRlci5lbWl0KCJlcnJvciIse3JvdzpwYXJzZUludChjWzFdLDEwKS0xLGNvbHVtbjpudWxsLHRleHQ6Y1syXSx0eXBlOiJlcnJvciJ9KTtyZXR1cm59aWYoYiBpbnN0YW5jZW9mIFN5bnRheEVycm9yKXt2YXIgYz1iLm1lc3NhZ2UubWF0Y2goLyBvbiBsaW5lIChcZCspLyk7YyYmdGhpcy5zZW5kZXIuZW1pdCgiZXJyb3IiLHtyb3c6cGFyc2VJbnQoY1sxXSwxMCktMSxjb2x1bW46bnVsbCx0ZXh0OmIubWVzc2FnZS5yZXBsYWNlKGNbMF0sIiIpLHR5cGU6ImVycm9yIn0pfXJldHVybn10aGlzLnNlbmRlci5lbWl0KCJvayIpfX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS93b3JrZXIvbWlycm9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2RvY3VtZW50IiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2RvY3VtZW50IikuRG9jdW1lbnQsZT1hKCIuLi9saWIvbGFuZyIpLGY9Yi5NaXJyb3I9ZnVuY3Rpb24oYSl7dGhpcy5zZW5kZXI9YTt2YXIgYj10aGlzLmRvYz1uZXcgZCgiIiksYz10aGlzLmRlZmVycmVkVXBkYXRlPWUuZGVmZXJyZWRDYWxsKHRoaXMub25VcGRhdGUuYmluZCh0aGlzKSksZj10aGlzO2Eub24oImNoYW5nZSIsZnVuY3Rpb24oYSl7Yi5hcHBseURlbHRhcyhbYS5kYXRhXSksYy5zY2hlZHVsZShmLiR0aW1lb3V0KX0pfTsoZnVuY3Rpb24oKXt0aGlzLiR0aW1lb3V0PTUwMCx0aGlzLnNldFRpbWVvdXQ9ZnVuY3Rpb24oYSl7dGhpcy4kdGltZW91dD1hfSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGEpe3RoaXMuZG9jLnNldFZhbHVlKGEpLHRoaXMuZGVmZXJyZWRVcGRhdGUuc2NoZWR1bGUodGhpcy4kdGltZW91dCl9LHRoaXMuZ2V0VmFsdWU9ZnVuY3Rpb24oYSl7dGhpcy5zZW5kZXIuY2FsbGJhY2sodGhpcy5kb2MuZ2V0VmFsdWUoKSxhKX0sdGhpcy5vblVwZGF0ZT1mdW5jdGlvbigpe319KS5jYWxsKGYucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL2RvY3VtZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvcmFuZ2UiLCJhY2UvYW5jaG9yIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vbGliL29vcCIpLGU9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixmPWEoIi4vcmFuZ2UiKS5SYW5nZSxnPWEoIi4vYW5jaG9yIikuQW5jaG9yLGg9ZnVuY3Rpb24oYSl7dGhpcy4kbGluZXM9W10sYS5sZW5ndGg9PTA/dGhpcy4kbGluZXM9WyIiXTpBcnJheS5pc0FycmF5KGEpP3RoaXMuaW5zZXJ0TGluZXMoMCxhKTp0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGEpfTsoZnVuY3Rpb24oKXtkLmltcGxlbWVudCh0aGlzLGUpLHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRMZW5ndGgoKTt0aGlzLnJlbW92ZShuZXcgZigwLDAsYix0aGlzLmdldExpbmUoYi0xKS5sZW5ndGgpKSx0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGEpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QWxsTGluZXMoKS5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy5jcmVhdGVBbmNob3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGcodGhpcyxhLGIpfSwiYWFhIi5zcGxpdCgvYS8pLmxlbmd0aD09MD90aGlzLiRzcGxpdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cclxufFxyL2csIlxuIikuc3BsaXQoIlxuIil9OnRoaXMuJHNwbGl0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnNwbGl0KC9cclxufFxyfFxuLyl9LHRoaXMuJGRldGVjdE5ld0xpbmU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXi4qPyhcclxufFxyfFxuKS9tKTtiP3RoaXMuJGF1dG9OZXdMaW5lPWJbMV06dGhpcy4kYXV0b05ld0xpbmU9IlxuIn0sdGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuJG5ld0xpbmVNb2RlKXtjYXNlIndpbmRvd3MiOnJldHVybiJcclxuIjtjYXNlInVuaXgiOnJldHVybiJcbiI7Y2FzZSJhdXRvIjpyZXR1cm4gdGhpcy4kYXV0b05ld0xpbmV9fSx0aGlzLiRhdXRvTmV3TGluZT0iXG4iLHRoaXMuJG5ld0xpbmVNb2RlPSJhdXRvIix0aGlzLnNldE5ld0xpbmVNb2RlPWZ1bmN0aW9uKGEpe2lmKHRoaXMuJG5ld0xpbmVNb2RlPT09YSlyZXR1cm47dGhpcy4kbmV3TGluZU1vZGU9YX0sdGhpcy5nZXROZXdMaW5lTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRuZXdMaW5lTW9kZX0sdGhpcy5pc05ld0xpbmU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PSJcclxuInx8YT09IlxyInx8YT09IlxuIn0sdGhpcy5nZXRMaW5lPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLiRsaW5lc1thXXx8IiJ9LHRoaXMuZ2V0TGluZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy4kbGluZXMuc2xpY2UoYSxiKzEpfSx0aGlzLmdldEFsbExpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGluZXMoMCx0aGlzLmdldExlbmd0aCgpKX0sdGhpcy5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbGluZXMubGVuZ3RofSx0aGlzLmdldFRleHRSYW5nZT1mdW5jdGlvbihhKXtpZihhLnN0YXJ0LnJvdz09YS5lbmQucm93KXJldHVybiB0aGlzLiRsaW5lc1thLnN0YXJ0LnJvd10uc3Vic3RyaW5nKGEuc3RhcnQuY29sdW1uLGEuZW5kLmNvbHVtbik7dmFyIGI9dGhpcy5nZXRMaW5lcyhhLnN0YXJ0LnJvdysxLGEuZW5kLnJvdy0xKTtyZXR1cm4gYi51bnNoaWZ0KCh0aGlzLiRsaW5lc1thLnN0YXJ0LnJvd118fCIiKS5zdWJzdHJpbmcoYS5zdGFydC5jb2x1bW4pKSxiLnB1c2goKHRoaXMuJGxpbmVzW2EuZW5kLnJvd118fCIiKS5zdWJzdHJpbmcoMCxhLmVuZC5jb2x1bW4pKSxiLmpvaW4odGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkpfSx0aGlzLiRjbGlwUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRMZW5ndGgoKTtyZXR1cm4gYS5yb3c+PWImJihhLnJvdz1NYXRoLm1heCgwLGItMSksYS5jb2x1bW49dGhpcy5nZXRMaW5lKGItMSkubGVuZ3RoKSxhfSx0aGlzLmluc2VydD1mdW5jdGlvbihhLGIpe2lmKCFifHxiLmxlbmd0aD09PTApcmV0dXJuIGE7YT10aGlzLiRjbGlwUG9zaXRpb24oYSksdGhpcy5nZXRMZW5ndGgoKTw9MSYmdGhpcy4kZGV0ZWN0TmV3TGluZShiKTt2YXIgYz10aGlzLiRzcGxpdChiKSxkPWMuc3BsaWNlKDAsMSlbMF0sZT1jLmxlbmd0aD09MD9udWxsOmMuc3BsaWNlKGMubGVuZ3RoLTEsMSlbMF07cmV0dXJuIGE9dGhpcy5pbnNlcnRJbkxpbmUoYSxkKSxlIT09bnVsbCYmKGE9dGhpcy5pbnNlcnROZXdMaW5lKGEpLGE9dGhpcy5pbnNlcnRMaW5lcyhhLnJvdyxjKSxhPXRoaXMuaW5zZXJ0SW5MaW5lKGEsZXx8IiIpKSxhfSx0aGlzLmluc2VydExpbmVzPWZ1bmN0aW9uKGEsYil7aWYoYi5sZW5ndGg9PTApcmV0dXJue3JvdzphLGNvbHVtbjowfTt2YXIgYz1bYSwwXTtjLnB1c2guYXBwbHkoYyxiKSx0aGlzLiRsaW5lcy5zcGxpY2UuYXBwbHkodGhpcy4kbGluZXMsYyk7dmFyIGQ9bmV3IGYoYSwwLGErYi5sZW5ndGgsMCksZT17YWN0aW9uOiJpbnNlcnRMaW5lcyIscmFuZ2U6ZCxsaW5lczpifTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTplfSksZC5lbmR9LHRoaXMuaW5zZXJ0TmV3TGluZT1mdW5jdGlvbihhKXthPXRoaXMuJGNsaXBQb3NpdGlvbihhKTt2YXIgYj10aGlzLiRsaW5lc1thLnJvd118fCIiO3RoaXMuJGxpbmVzW2Eucm93XT1iLnN1YnN0cmluZygwLGEuY29sdW1uKSx0aGlzLiRsaW5lcy5zcGxpY2UoYS5yb3crMSwwLGIuc3Vic3RyaW5nKGEuY29sdW1uLGIubGVuZ3RoKSk7dmFyIGM9e3JvdzphLnJvdysxLGNvbHVtbjowfSxkPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOmYuZnJvbVBvaW50cyhhLGMpLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmR9KSxjfSx0aGlzLmluc2VydEluTGluZT1mdW5jdGlvbihhLGIpe2lmKGIubGVuZ3RoPT0wKXJldHVybiBhO3ZhciBjPXRoaXMuJGxpbmVzW2Eucm93XXx8IiI7dGhpcy4kbGluZXNbYS5yb3ddPWMuc3Vic3RyaW5nKDAsYS5jb2x1bW4pK2IrYy5zdWJzdHJpbmcoYS5jb2x1bW4pO3ZhciBkPXtyb3c6YS5yb3csY29sdW1uOmEuY29sdW1uK2IubGVuZ3RofSxlPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOmYuZnJvbVBvaW50cyhhLGQpLHRleHQ6Yn07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGR9LHRoaXMucmVtb3ZlPWZ1bmN0aW9uKGEpe2Euc3RhcnQ9dGhpcy4kY2xpcFBvc2l0aW9uKGEuc3RhcnQpLGEuZW5kPXRoaXMuJGNsaXBQb3NpdGlvbihhLmVuZCk7aWYoYS5pc0VtcHR5KCkpcmV0dXJuIGEuc3RhcnQ7dmFyIGI9YS5zdGFydC5yb3csYz1hLmVuZC5yb3c7aWYoYS5pc011bHRpTGluZSgpKXt2YXIgZD1hLnN0YXJ0LmNvbHVtbj09MD9iOmIrMSxlPWMtMTthLmVuZC5jb2x1bW4+MCYmdGhpcy5yZW1vdmVJbkxpbmUoYywwLGEuZW5kLmNvbHVtbiksZT49ZCYmdGhpcy5yZW1vdmVMaW5lcyhkLGUpLGQhPWImJih0aGlzLnJlbW92ZUluTGluZShiLGEuc3RhcnQuY29sdW1uLHRoaXMuZ2V0TGluZShiKS5sZW5ndGgpLHRoaXMucmVtb3ZlTmV3TGluZShhLnN0YXJ0LnJvdykpfWVsc2UgdGhpcy5yZW1vdmVJbkxpbmUoYixhLnN0YXJ0LmNvbHVtbixhLmVuZC5jb2x1bW4pO3JldHVybiBhLnN0YXJ0fSx0aGlzLnJlbW92ZUluTGluZT1mdW5jdGlvbihhLGIsYyl7aWYoYj09YylyZXR1cm47dmFyIGQ9bmV3IGYoYSxiLGEsYyksZT10aGlzLmdldExpbmUoYSksZz1lLnN1YnN0cmluZyhiLGMpLGg9ZS5zdWJzdHJpbmcoMCxiKStlLnN1YnN0cmluZyhjLGUubGVuZ3RoKTt0aGlzLiRsaW5lcy5zcGxpY2UoYSwxLGgpO3ZhciBpPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOmQsdGV4dDpnfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTppfSksZC5zdGFydH0sdGhpcy5yZW1vdmVMaW5lcz1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBmKGEsMCxiKzEsMCksZD10aGlzLiRsaW5lcy5zcGxpY2UoYSxiLWErMSksZT17YWN0aW9uOiJyZW1vdmVMaW5lcyIscmFuZ2U6YyxubDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSxsaW5lczpkfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTplfSksZH0sdGhpcy5yZW1vdmVOZXdMaW5lPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGluZShhKSxjPXRoaXMuZ2V0TGluZShhKzEpLGQ9bmV3IGYoYSxiLmxlbmd0aCxhKzEsMCksZT1iK2M7dGhpcy4kbGluZXMuc3BsaWNlKGEsMixlKTt2YXIgZz17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpkLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3RoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6Z30pfSx0aGlzLnJlcGxhY2U9ZnVuY3Rpb24oYSxiKXtpZihiLmxlbmd0aD09MCYmYS5pc0VtcHR5KCkpcmV0dXJuIGEuc3RhcnQ7aWYoYj09dGhpcy5nZXRUZXh0UmFuZ2UoYSkpcmV0dXJuIGEuZW5kO3RoaXMucmVtb3ZlKGEpO2lmKGIpdmFyIGM9dGhpcy5pbnNlcnQoYS5zdGFydCxiKTtlbHNlIGM9YS5zdGFydDtyZXR1cm4gY30sdGhpcy5hcHBseURlbHRhcz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9YVtiXSxkPWYuZnJvbVBvaW50cyhjLnJhbmdlLnN0YXJ0LGMucmFuZ2UuZW5kKTtjLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLmluc2VydExpbmVzKGQuc3RhcnQucm93LGMubGluZXMpOmMuYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5pbnNlcnQoZC5zdGFydCxjLnRleHQpOmMuYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMucmVtb3ZlTGluZXMoZC5zdGFydC5yb3csZC5lbmQucm93LTEpOmMuYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMucmVtb3ZlKGQpfX0sdGhpcy5yZXZlcnREZWx0YXM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEubGVuZ3RoLTE7Yj49MDtiLS0pe3ZhciBjPWFbYl0sZD1mLmZyb21Qb2ludHMoYy5yYW5nZS5zdGFydCxjLnJhbmdlLmVuZCk7Yy5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhkLnN0YXJ0LnJvdyxkLmVuZC5yb3ctMSk6Yy5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLnJlbW92ZShkKTpjLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLmluc2VydExpbmVzKGQuc3RhcnQucm93LGMubGluZXMpOmMuYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMuaW5zZXJ0KGQuc3RhcnQsYy50ZXh0KX19fSkuY2FsbChoLnByb3RvdHlwZSksYi5Eb2N1bWVudD1ofSksZGVmaW5lKCJhY2UvcmFuZ2UiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5zdGFydD17cm93OmEsY29sdW1uOmJ9LHRoaXMuZW5kPXtyb3c6Yyxjb2x1bW46ZH19OyhmdW5jdGlvbigpe3RoaXMuaXNFcXVhbD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWEuc3RhcnQucm93JiZ0aGlzLmVuZC5yb3c9PWEuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PWEuc3RhcnQuY29sdW1uJiZ0aGlzLmVuZC5jb2x1bW49PWEuZW5kLmNvbHVtbn0sdGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSYW5nZTogWyIrdGhpcy5zdGFydC5yb3crIi8iK3RoaXMuc3RhcnQuY29sdW1uKyJdIC0+IFsiK3RoaXMuZW5kLnJvdysiLyIrdGhpcy5lbmQuY29sdW1uKyJdIn0sdGhpcy5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MH0sdGhpcy5jb21wYXJlUmFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLmVuZCxkPWEuc3RhcnQ7cmV0dXJuIGI9dGhpcy5jb21wYXJlKGMucm93LGMuY29sdW1uKSxiPT0xPyhiPXRoaXMuY29tcGFyZShkLnJvdyxkLmNvbHVtbiksYj09MT8yOmI9PTA/MTowKTpiPT0tMT8tMjooYj10aGlzLmNvbXBhcmUoZC5yb3csZC5jb2x1bW4pLGI9PS0xPy0xOmI9PTE/NDI6MCl9LHRoaXMuY29tcGFyZVBvaW50PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbXBhcmUoYS5yb3csYS5jb2x1bW4pfSx0aGlzLmNvbnRhaW5zUmFuZ2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29tcGFyZVBvaW50KGEuc3RhcnQpPT0wJiZ0aGlzLmNvbXBhcmVQb2ludChhLmVuZCk9PTB9LHRoaXMuaW50ZXJzZWN0cz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbXBhcmVSYW5nZShhKTtyZXR1cm4gYj09LTF8fGI9PTB8fGI9PTF9LHRoaXMuaXNFbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lbmQucm93PT1hJiZ0aGlzLmVuZC5jb2x1bW49PWJ9LHRoaXMuaXNTdGFydD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09YSYmdGhpcy5zdGFydC5jb2x1bW49PWJ9LHRoaXMuc2V0U3RhcnQ9ZnVuY3Rpb24oYSxiKXt0eXBlb2YgYT09Im9iamVjdCI/KHRoaXMuc3RhcnQuY29sdW1uPWEuY29sdW1uLHRoaXMuc3RhcnQucm93PWEucm93KToodGhpcy5zdGFydC5yb3c9YSx0aGlzLnN0YXJ0LmNvbHVtbj1iKX0sdGhpcy5zZXRFbmQ9ZnVuY3Rpb24oYSxiKXt0eXBlb2YgYT09Im9iamVjdCI/KHRoaXMuZW5kLmNvbHVtbj1hLmNvbHVtbix0aGlzLmVuZC5yb3c9YS5yb3cpOih0aGlzLmVuZC5yb3c9YSx0aGlzLmVuZC5jb2x1bW49Yil9LHRoaXMuaW5zaWRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wP3RoaXMuaXNFbmQoYSxiKXx8dGhpcy5pc1N0YXJ0KGEsYik/ITE6ITA6ITF9LHRoaXMuaW5zaWRlU3RhcnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTA/dGhpcy5pc0VuZChhLGIpPyExOiEwOiExfSx0aGlzLmluc2lkZUVuZD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MD90aGlzLmlzU3RhcnQoYSxiKT8hMTohMDohMX0sdGhpcy5jb21wYXJlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIXRoaXMuaXNNdWx0aUxpbmUoKSYmYT09PXRoaXMuc3RhcnQucm93P2I8dGhpcy5zdGFydC5jb2x1bW4/LTE6Yj50aGlzLmVuZC5jb2x1bW4/MTowOmE8dGhpcy5zdGFydC5yb3c/LTE6YT50aGlzLmVuZC5yb3c/MTp0aGlzLnN0YXJ0LnJvdz09PWE/Yj49dGhpcy5zdGFydC5jb2x1bW4/MDotMTp0aGlzLmVuZC5yb3c9PT1hP2I8PXRoaXMuZW5kLmNvbHVtbj8wOjE6MH0sdGhpcy5jb21wYXJlU3RhcnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWEmJnRoaXMuc3RhcnQuY29sdW1uPT1iPy0xOnRoaXMuY29tcGFyZShhLGIpfSx0aGlzLmNvbXBhcmVFbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lbmQucm93PT1hJiZ0aGlzLmVuZC5jb2x1bW49PWI/MTp0aGlzLmNvbXBhcmUoYSxiKX0sdGhpcy5jb21wYXJlSW5zaWRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZW5kLnJvdz09YSYmdGhpcy5lbmQuY29sdW1uPT1iPzE6dGhpcy5zdGFydC5yb3c9PWEmJnRoaXMuc3RhcnQuY29sdW1uPT1iPy0xOnRoaXMuY29tcGFyZShhLGIpfSx0aGlzLmNsaXBSb3dzPWZ1bmN0aW9uKGEsYil7aWYodGhpcy5lbmQucm93PmIpdmFyIGM9e3JvdzpiKzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PmIpdmFyIGU9e3JvdzpiKzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PGEpdmFyIGU9e3JvdzphLGNvbHVtbjowfTtpZih0aGlzLmVuZC5yb3c8YSl2YXIgYz17cm93OmEsY29sdW1uOjB9O3JldHVybiBkLmZyb21Qb2ludHMoZXx8dGhpcy5zdGFydCxjfHx0aGlzLmVuZCl9LHRoaXMuZXh0ZW5kPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jb21wYXJlKGEsYik7aWYoYz09MClyZXR1cm4gdGhpcztpZihjPT0tMSl2YXIgZT17cm93OmEsY29sdW1uOmJ9O2Vsc2UgdmFyIGY9e3JvdzphLGNvbHVtbjpifTtyZXR1cm4gZC5mcm9tUG9pbnRzKGV8fHRoaXMuc3RhcnQsZnx8dGhpcy5lbmQpfSx0aGlzLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PXRoaXMuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PXRoaXMuZW5kLmNvbHVtbn0sdGhpcy5pc011bHRpTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdyE9PXRoaXMuZW5kLnJvd30sdGhpcy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBkLmZyb21Qb2ludHModGhpcy5zdGFydCx0aGlzLmVuZCl9LHRoaXMuY29sbGFwc2VSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kLmNvbHVtbj09MD9uZXcgZCh0aGlzLnN0YXJ0LnJvdywwLE1hdGgubWF4KHRoaXMuc3RhcnQucm93LHRoaXMuZW5kLnJvdy0xKSwwKTpuZXcgZCh0aGlzLnN0YXJ0LnJvdywwLHRoaXMuZW5kLnJvdywwKX0sdGhpcy50b1NjcmVlblJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuc3RhcnQpLGM9YS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5lbmQpO3JldHVybiBuZXcgZChiLnJvdyxiLmNvbHVtbixjLnJvdyxjLmNvbHVtbil9fSkuY2FsbChkLnByb3RvdHlwZSksZC5mcm9tUG9pbnRzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkKGEucm93LGEuY29sdW1uLGIucm93LGIuY29sdW1uKX0sYi5SYW5nZT1kfSksZGVmaW5lKCJhY2UvYW5jaG9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9saWIvb29wIiksZT1hKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGY9Yi5BbmNob3I9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZG9jdW1lbnQ9YSx0eXBlb2YgYz09InVuZGVmaW5lZCI/dGhpcy5zZXRQb3NpdGlvbihiLnJvdyxiLmNvbHVtbik6dGhpcy5zZXRQb3NpdGlvbihiLGMpLHRoaXMuJG9uQ2hhbmdlPXRoaXMub25DaGFuZ2UuYmluZCh0aGlzKSxhLm9uKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQodGhpcy5yb3csdGhpcy5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnR9LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhLGM9Yi5yYW5nZTtpZihjLnN0YXJ0LnJvdz09Yy5lbmQucm93JiZjLnN0YXJ0LnJvdyE9dGhpcy5yb3cpcmV0dXJuO2lmKGMuc3RhcnQucm93PnRoaXMucm93KXJldHVybjtpZihjLnN0YXJ0LnJvdz09dGhpcy5yb3cmJmMuc3RhcnQuY29sdW1uPnRoaXMuY29sdW1uKXJldHVybjt2YXIgZD10aGlzLnJvdyxlPXRoaXMuY29sdW1uO2IuYWN0aW9uPT09Imluc2VydFRleHQiP2Muc3RhcnQucm93PT09ZCYmYy5zdGFydC5jb2x1bW48PWU/Yy5zdGFydC5yb3c9PT1jLmVuZC5yb3c/ZSs9Yy5lbmQuY29sdW1uLWMuc3RhcnQuY29sdW1uOihlLT1jLnN0YXJ0LmNvbHVtbixkKz1jLmVuZC5yb3ctYy5zdGFydC5yb3cpOmMuc3RhcnQucm93IT09Yy5lbmQucm93JiZjLnN0YXJ0LnJvdzxkJiYoZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpiLmFjdGlvbj09PSJpbnNlcnRMaW5lcyI/Yy5zdGFydC5yb3c8PWQmJihkKz1jLmVuZC5yb3ctYy5zdGFydC5yb3cpOmIuYWN0aW9uPT0icmVtb3ZlVGV4dCI/Yy5zdGFydC5yb3c9PWQmJmMuc3RhcnQuY29sdW1uPGU/Yy5lbmQuY29sdW1uPj1lP2U9Yy5zdGFydC5jb2x1bW46ZT1NYXRoLm1heCgwLGUtKGMuZW5kLmNvbHVtbi1jLnN0YXJ0LmNvbHVtbikpOmMuc3RhcnQucm93IT09Yy5lbmQucm93JiZjLnN0YXJ0LnJvdzxkPyhjLmVuZC5yb3c9PWQmJihlPU1hdGgubWF4KDAsZS1jLmVuZC5jb2x1bW4pK2Muc3RhcnQuY29sdW1uKSxkLT1jLmVuZC5yb3ctYy5zdGFydC5yb3cpOmMuZW5kLnJvdz09ZCYmKGQtPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyxlPU1hdGgubWF4KDAsZS1jLmVuZC5jb2x1bW4pK2Muc3RhcnQuY29sdW1uKTpiLmFjdGlvbj09InJlbW92ZUxpbmVzIiYmYy5zdGFydC5yb3c8PWQmJihjLmVuZC5yb3c8PWQ/ZC09Yy5lbmQucm93LWMuc3RhcnQucm93OihkPWMuc3RhcnQucm93LGU9MCkpLHRoaXMuc2V0UG9zaXRpb24oZCxlLCEwKX0sdGhpcy5zZXRQb3NpdGlvbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yz9kPXtyb3c6YSxjb2x1bW46Yn06ZD10aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KGEsYik7aWYodGhpcy5yb3c9PWQucm93JiZ0aGlzLmNvbHVtbj09ZC5jb2x1bW4pcmV0dXJuO3ZhciBlPXtyb3c6dGhpcy5yb3csY29sdW1uOnRoaXMuY29sdW1ufTt0aGlzLnJvdz1kLnJvdyx0aGlzLmNvbHVtbj1kLmNvbHVtbix0aGlzLl9lbWl0KCJjaGFuZ2UiLHtvbGQ6ZSx2YWx1ZTpkfSl9LHRoaXMuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX0sdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudD1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O3JldHVybiBhPj10aGlzLmRvY3VtZW50LmdldExlbmd0aCgpPyhjLnJvdz1NYXRoLm1heCgwLHRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCktMSksYy5jb2x1bW49dGhpcy5kb2N1bWVudC5nZXRMaW5lKGMucm93KS5sZW5ndGgpOmE8MD8oYy5yb3c9MCxjLmNvbHVtbj0wKTooYy5yb3c9YSxjLmNvbHVtbj1NYXRoLm1pbih0aGlzLmRvY3VtZW50LmdldExpbmUoYy5yb3cpLmxlbmd0aCxNYXRoLm1heCgwLGIpKSksYjwwJiYoYy5jb2x1bW49MCksY319KS5jYWxsKGYucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL2xpYi9sYW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2Iuc3RyaW5nUmV2ZXJzZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSxiLnN0cmluZ1JlcGVhdD1mdW5jdGlvbihhLGIpe3JldHVybihuZXcgQXJyYXkoYisxKSkuam9pbihhKX07dmFyIGQ9L15cc1xzKi8sZT0vXHNccyokLztiLnN0cmluZ1RyaW1MZWZ0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoZCwiIil9LGIuc3RyaW5nVHJpbVJpZ2h0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoZSwiIil9LGIuY29weU9iamVjdD1mdW5jdGlvbihhKXt2YXIgYj17fTtmb3IodmFyIGMgaW4gYSliW2NdPWFbY107cmV0dXJuIGJ9LGIuY29weUFycmF5PWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylhW2NdJiZ0eXBlb2YgYVtjXT09Im9iamVjdCI/YltjXT10aGlzLmNvcHlPYmplY3QoYVtjXSk6YltjXT1hW2NdO3JldHVybiBifSxiLmRlZXBDb3B5PWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT0ib2JqZWN0IilyZXR1cm4gYTt2YXIgYj1hLmNvbnN0cnVjdG9yKCk7Zm9yKHZhciBjIGluIGEpdHlwZW9mIGFbY109PSJvYmplY3QiP2JbY109dGhpcy5kZWVwQ29weShhW2NdKTpiW2NdPWFbY107cmV0dXJuIGJ9LGIuYXJyYXlUb01hcD1mdW5jdGlvbihhKXt2YXIgYj17fTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyliW2FbY11dPTE7cmV0dXJuIGJ9LGIuYXJyYXlSZW1vdmU9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPD1hLmxlbmd0aDtjKyspYj09PWFbY10mJmEuc3BsaWNlKGMsMSl9LGIuZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoLyhbLiorP14ke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfSxiLmRlZmVycmVkQ2FsbD1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9ZnVuY3Rpb24oKXtiPW51bGwsYSgpfSxkPWZ1bmN0aW9uKGEpe3JldHVybiBkLmNhbmNlbCgpLGI9c2V0VGltZW91dChjLGF8fDApLGR9O3JldHVybiBkLnNjaGVkdWxlPWQsZC5jYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuY2VsKCksYSgpLGR9LGQuY2FuY2VsPWZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dChiKSxiPW51bGwsZH0sZH19KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZS9jb2ZmZWUtc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL21vZGUvY29mZmVlL2xleGVyIiwiYWNlL21vZGUvY29mZmVlL3BhcnNlciIsImFjZS9tb2RlL2NvZmZlZS9ub2RlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2xleGVyIikuTGV4ZXIsZT1hKCIuL3BhcnNlciIpLGY9bmV3IGQ7ZS5sZXhlcj17bGV4OmZ1bmN0aW9uKCl7dmFyIGEsYjtyZXR1cm4gYj10aGlzLnRva2Vuc1t0aGlzLnBvcysrXXx8WyIiXSxhPWJbMF0sdGhpcy55eXRleHQ9YlsxXSx0aGlzLnl5bGluZW5vPWJbMl0sYX0sc2V0SW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudG9rZW5zPWEsdGhpcy5wb3M9MH0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3JldHVybiIifX0sZS55eT1hKCIuL25vZGVzIiksYi5wYXJzZT1mdW5jdGlvbihhKXtyZXR1cm4gZS5wYXJzZShmLnRva2VuaXplKGEpKX19KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZS9sZXhlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL2NvZmZlZS9yZXdyaXRlciIsImFjZS9tb2RlL2NvZmZlZS9oZWxwZXJzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcseCx5LHosQSxCLEMsRCxFLEYsRyxILEksSixLLEwsTSxOLE8sUCxRLFIsUyxULFUsVixXLFgsWSxaPVtdLmluZGV4T2Z8fGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9dGhpcy5sZW5ndGg7YjxjO2IrKylpZihiIGluIHRoaXMmJnRoaXNbYl09PT1hKXJldHVybiBiO3JldHVybi0xfTtYPWEoIi4vcmV3cml0ZXIiKSxMPVguUmV3cml0ZXIsdD1YLklOVkVSU0VTLFk9YSgiLi9oZWxwZXJzIiksVD1ZLmNvdW50LFc9WS5zdGFydHMsUz1ZLmNvbXBhY3QsVj1ZLmxhc3QsYi5MZXhlcj1BPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe31yZXR1cm4gYS5uYW1lPSJMZXhlciIsYS5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO2I9PW51bGwmJihiPXt9KSxSLnRlc3QoYSkmJihhPSJcbiIrYSksYT1hLnJlcGxhY2UoL1xyL2csIiIpLnJlcGxhY2UoUCwiIiksdGhpcy5jb2RlPWEsdGhpcy5saW5lPWIubGluZXx8MCx0aGlzLmluZGVudD0wLHRoaXMuaW5kZWJ0PTAsdGhpcy5vdXRkZWJ0PTAsdGhpcy5pbmRlbnRzPVtdLHRoaXMuZW5kcz1bXSx0aGlzLnRva2Vucz1bXSxjPTA7d2hpbGUodGhpcy5jaHVuaz1hLnNsaWNlKGMpKWMrPXRoaXMuaWRlbnRpZmllclRva2VuKCl8fHRoaXMuY29tbWVudFRva2VuKCl8fHRoaXMud2hpdGVzcGFjZVRva2VuKCl8fHRoaXMubGluZVRva2VuKCl8fHRoaXMuaGVyZWRvY1Rva2VuKCl8fHRoaXMuc3RyaW5nVG9rZW4oKXx8dGhpcy5udW1iZXJUb2tlbigpfHx0aGlzLnJlZ2V4VG9rZW4oKXx8dGhpcy5qc1Rva2VuKCl8fHRoaXMubGl0ZXJhbFRva2VuKCk7cmV0dXJuIHRoaXMuY2xvc2VJbmRlbnRhdGlvbigpLChkPXRoaXMuZW5kcy5wb3AoKSkmJnRoaXMuZXJyb3IoIm1pc3NpbmcgIitkKSxiLnJld3JpdGU9PT0hMT90aGlzLnRva2VuczoobmV3IEwpLnJld3JpdGUodGhpcy50b2tlbnMpfSxhLnByb3RvdHlwZS5pZGVudGlmaWVyVG9rZW49ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsaixrLGw7cmV0dXJuKGU9ci5leGVjKHRoaXMuY2h1bmspKT8oZD1lWzBdLGM9ZVsxXSxhPWVbMl0sYz09PSJvd24iJiZ0aGlzLnRhZygpPT09IkZPUiI/KHRoaXMudG9rZW4oIk9XTiIsYyksYy5sZW5ndGgpOihiPWF8fChmPVYodGhpcy50b2tlbnMpKSYmKChrPWZbMF0pPT09Ii4ifHxrPT09Ij8uInx8az09PSI6OiJ8fCFmLnNwYWNlZCYmZlswXT09PSJAIiksaj0iSURFTlRJRklFUiIsIWImJihaLmNhbGwodyxjKT49MHx8Wi5jYWxsKGksYyk+PTApJiYoaj1jLnRvVXBwZXJDYXNlKCksaj09PSJXSEVOIiYmKGw9dGhpcy50YWcoKSxaLmNhbGwoeCxsKT49MCk/aj0iTEVBRElOR19XSEVOIjpqPT09IkZPUiI/dGhpcy5zZWVuRm9yPSEwOmo9PT0iVU5MRVNTIj9qPSJJRiI6Wi5jYWxsKFEsaik+PTA/aj0iVU5BUlkiOlouY2FsbChKLGopPj0wJiYoaiE9PSJJTlNUQU5DRU9GIiYmdGhpcy5zZWVuRm9yPyhqPSJGT1IiK2osdGhpcy5zZWVuRm9yPSExKTooaj0iUkVMQVRJT04iLHRoaXMudmFsdWUoKT09PSIhIiYmKHRoaXMudG9rZW5zLnBvcCgpLGM9IiEiK2MpKSkpLFouY2FsbCh2LGMpPj0wJiYoYj8oaj0iSURFTlRJRklFUiIsYz1uZXcgU3RyaW5nKGMpLGMucmVzZXJ2ZWQ9ITApOlouY2FsbChLLGMpPj0wJiZ0aGlzLmVycm9yKCdyZXNlcnZlZCB3b3JkICInK2MrJyInKSksYnx8KFouY2FsbChnLGMpPj0wJiYoYz1oW2NdKSxqPWZ1bmN0aW9uKCl7c3dpdGNoKGMpe2Nhc2UiISI6cmV0dXJuIlVOQVJZIjtjYXNlIj09IjpjYXNlIiE9IjpyZXR1cm4iQ09NUEFSRSI7Y2FzZSImJiI6Y2FzZSJ8fCI6cmV0dXJuIkxPR0lDIjtjYXNlInRydWUiOmNhc2UiZmFsc2UiOmNhc2UibnVsbCI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiJCT09MIjtjYXNlImJyZWFrIjpjYXNlImNvbnRpbnVlIjpyZXR1cm4iU1RBVEVNRU5UIjtkZWZhdWx0OnJldHVybiBqfX0oKSksdGhpcy50b2tlbihqLGMpLGEmJnRoaXMudG9rZW4oIjoiLCI6IiksZC5sZW5ndGgpKTowfSxhLnByb3RvdHlwZS5udW1iZXJUb2tlbj1mdW5jdGlvbigpe3ZhciBhLGIsYyxkLGU7aWYoIShjPUcuZXhlYyh0aGlzLmNodW5rKSkpcmV0dXJuIDA7ZD1jWzBdLC9FLy50ZXN0KGQpP3RoaXMuZXJyb3IoImV4cG9uZW50aWFsIG5vdGF0aW9uICciK2QrIicgbXVzdCBiZSBpbmRpY2F0ZWQgd2l0aCBhIGxvd2VyY2FzZSAnZSciKTovW0JPWF0vLnRlc3QoZCk/dGhpcy5lcnJvcigicmFkaXggcHJlZml4ICciK2QrIicgbXVzdCBiZSBsb3dlcmNhc2UiKTovXjBbODldLy50ZXN0KGQpP3RoaXMuZXJyb3IoImRlY2ltYWwgbGl0ZXJhbCAnIitkKyInIG11c3Qgbm90IGJlIHByZWZpeGVkIHdpdGggJzAnIik6L14wWzAtN10vLnRlc3QoZCkmJnRoaXMuZXJyb3IoIm9jdGFsIGxpdGVyYWwgJyIrZCsiJyBtdXN0IGJlIHByZWZpeGVkIHdpdGggJzBvJyIpLGI9ZC5sZW5ndGg7aWYoZT0vMG8oWzAtN10rKS8uZXhlYyhkKSlkPXBhcnNlSW50KGVbMV0sOCkudG9TdHJpbmcoKTtpZihhPS8wYihbMDFdKykvLmV4ZWMoZCkpZD1wYXJzZUludChhWzFdLDIpLnRvU3RyaW5nKCk7cmV0dXJuIHRoaXMudG9rZW4oIk5VTUJFUiIsZCksYn0sYS5wcm90b3R5cGUuc3RyaW5nVG9rZW49ZnVuY3Rpb24oKXt2YXIgYSxiLGM7c3dpdGNoKHRoaXMuY2h1bmsuY2hhckF0KDApKXtjYXNlIiciOmlmKCEoYT1OLmV4ZWModGhpcy5jaHVuaykpKXJldHVybiAwO3RoaXMudG9rZW4oIlNUUklORyIsKGM9YVswXSkucmVwbGFjZShDLCJcXFxuIikpO2JyZWFrO2Nhc2UnIic6aWYoIShjPXRoaXMuYmFsYW5jZWRTdHJpbmcodGhpcy5jaHVuaywnIicpKSlyZXR1cm4gMDswPGMuaW5kZXhPZigiI3siLDEpP3RoaXMuaW50ZXJwb2xhdGVTdHJpbmcoYy5zbGljZSgxLC0xKSk6dGhpcy50b2tlbigiU1RSSU5HIix0aGlzLmVzY2FwZUxpbmVzKGMpKTticmVhaztkZWZhdWx0OnJldHVybiAwfXJldHVybihiPS9eKD86XFwufFteXFxdKSpcXFswLTddLy50ZXN0KGMpKSYmdGhpcy5lcnJvcigib2N0YWwgZXNjYXBlIHNlcXVlbmNlcyAiK2MrIiBhcmUgbm90IGFsbG93ZWQiKSx0aGlzLmxpbmUrPVQoYywiXG4iKSxjLmxlbmd0aH0sYS5wcm90b3R5cGUuaGVyZWRvY1Rva2VuPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQ7cmV0dXJuKGM9bS5leGVjKHRoaXMuY2h1bmspKT8oYj1jWzBdLGQ9Yi5jaGFyQXQoMCksYT10aGlzLnNhbml0aXplSGVyZWRvYyhjWzJdLHtxdW90ZTpkLGluZGVudDpudWxsfSksZD09PSciJyYmMDw9YS5pbmRleE9mKCIjeyIpP3RoaXMuaW50ZXJwb2xhdGVTdHJpbmcoYSx7aGVyZWRvYzohMH0pOnRoaXMudG9rZW4oIlNUUklORyIsdGhpcy5tYWtlU3RyaW5nKGEsZCwhMCkpLHRoaXMubGluZSs9VChiLCJcbiIpLGIubGVuZ3RoKTowfSxhLnByb3RvdHlwZS5jb21tZW50VG9rZW49ZnVuY3Rpb24oKXt2YXIgYSxiLGM7cmV0dXJuKGM9dGhpcy5jaHVuay5tYXRjaChqKSk/KGE9Y1swXSxiPWNbMV0sYiYmdGhpcy50b2tlbigiSEVSRUNPTU1FTlQiLHRoaXMuc2FuaXRpemVIZXJlZG9jKGIse2hlcmVjb21tZW50OiEwLGluZGVudDpBcnJheSh0aGlzLmluZGVudCsxKS5qb2luKCIgIil9KSksdGhpcy5saW5lKz1UKGEsIlxuIiksYS5sZW5ndGgpOjB9LGEucHJvdG90eXBlLmpzVG9rZW49ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybiB0aGlzLmNodW5rLmNoYXJBdCgwKSE9PSJgInx8IShhPXUuZXhlYyh0aGlzLmNodW5rKSk/MDoodGhpcy50b2tlbigiSlMiLChiPWFbMF0pLnNsaWNlKDEsLTEpKSxiLmxlbmd0aCl9LGEucHJvdG90eXBlLnJlZ2V4VG9rZW49ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZztyZXR1cm4gdGhpcy5jaHVuay5jaGFyQXQoMCkhPT0iLyI/MDooYz1wLmV4ZWModGhpcy5jaHVuaykpPyhiPXRoaXMuaGVyZWdleFRva2VuKGMpLHRoaXMubGluZSs9VChjWzBdLCJcbiIpLGIpOihkPVYodGhpcy50b2tlbnMpLGQmJihmPWRbMF0sWi5jYWxsKGQuc3BhY2VkP0U6RixmKT49MCk/MDooYz1JLmV4ZWModGhpcy5jaHVuaykpPyhnPWMsYz1nWzBdLGU9Z1sxXSxhPWdbMl0sZS5zbGljZSgwLDIpPT09Ii8qIiYmdGhpcy5lcnJvcigicmVndWxhciBleHByZXNzaW9ucyBjYW5ub3QgYmVnaW4gd2l0aCBgKmAiKSxlPT09Ii8vIiYmKGU9Ii8oPzopLyIpLHRoaXMudG9rZW4oIlJFR0VYIiwiIitlK2EpLGMubGVuZ3RoKTowKX0sYS5wcm90b3R5cGUuaGVyZWdleFRva2VuPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuO2Q9YVswXSxiPWFbMV0sYz1hWzJdO2lmKDA+Yi5pbmRleE9mKCIjeyIpKXJldHVybiBlPWIucmVwbGFjZShxLCIiKS5yZXBsYWNlKC9cLy9nLCJcXC8iKSxlLm1hdGNoKC9eXCovKSYmdGhpcy5lcnJvcigicmVndWxhciBleHByZXNzaW9ucyBjYW5ub3QgYmVnaW4gd2l0aCBgKmAiKSx0aGlzLnRva2VuKCJSRUdFWCIsIi8iKyhlfHwiKD86KSIpKyIvIitjKSxkLmxlbmd0aDt0aGlzLnRva2VuKCJJREVOVElGSUVSIiwiUmVnRXhwIiksdGhpcy50b2tlbnMucHVzaChbIkNBTExfU1RBUlQiLCIoIl0pLGc9W10saz10aGlzLmludGVycG9sYXRlU3RyaW5nKGIse3JlZ2V4OiEwfSk7Zm9yKGk9MCxqPWsubGVuZ3RoO2k8ajtpKyspe2w9a1tpXSxmPWxbMF0saD1sWzFdO2lmKGY9PT0iVE9LRU5TIilnLnB1c2guYXBwbHkoZyxoKTtlbHNle2lmKCEoaD1oLnJlcGxhY2UocSwiIikpKWNvbnRpbnVlO2g9aC5yZXBsYWNlKC9cXC9nLCJcXFxcIiksZy5wdXNoKFsiU1RSSU5HIix0aGlzLm1ha2VTdHJpbmcoaCwnIicsITApXSl9Zy5wdXNoKFsiKyIsIisiXSl9cmV0dXJuIGcucG9wKCksKChtPWdbMF0pIT1udWxsP21bMF06dm9pZCAwKSE9PSJTVFJJTkciJiZ0aGlzLnRva2Vucy5wdXNoKFsiU1RSSU5HIiwnIiInXSxbIisiLCIrIl0pLChuPXRoaXMudG9rZW5zKS5wdXNoLmFwcGx5KG4sZyksYyYmdGhpcy50b2tlbnMucHVzaChbIiwiLCIsIl0sWyJTVFJJTkciLCciJytjKyciJ10pLHRoaXMudG9rZW4oIikiLCIpIiksZC5sZW5ndGh9LGEucHJvdG90eXBlLmxpbmVUb2tlbj1mdW5jdGlvbigpe3ZhciBhLGIsYyxkLGUsZjtpZighKGM9RC5leGVjKHRoaXMuY2h1bmspKSlyZXR1cm4gMDtiPWNbMF0sdGhpcy5saW5lKz1UKGIsIlxuIiksdGhpcy5zZWVuRm9yPSExLGU9Vih0aGlzLnRva2VucywxKSxmPWIubGVuZ3RoLTEtYi5sYXN0SW5kZXhPZigiXG4iKSxkPXRoaXMudW5maW5pc2hlZCgpO2lmKGYtdGhpcy5pbmRlYnQ9PT10aGlzLmluZGVudClyZXR1cm4gZD90aGlzLnN1cHByZXNzTmV3bGluZXMoKTp0aGlzLm5ld2xpbmVUb2tlbigpLGIubGVuZ3RoO2lmKGY+dGhpcy5pbmRlbnQpe2lmKGQpcmV0dXJuIHRoaXMuaW5kZWJ0PWYtdGhpcy5pbmRlbnQsdGhpcy5zdXBwcmVzc05ld2xpbmVzKCksYi5sZW5ndGg7YT1mLXRoaXMuaW5kZW50K3RoaXMub3V0ZGVidCx0aGlzLnRva2VuKCJJTkRFTlQiLGEpLHRoaXMuaW5kZW50cy5wdXNoKGEpLHRoaXMuZW5kcy5wdXNoKCJPVVRERU5UIiksdGhpcy5vdXRkZWJ0PXRoaXMuaW5kZWJ0PTB9ZWxzZSB0aGlzLmluZGVidD0wLHRoaXMub3V0ZGVudFRva2VuKHRoaXMuaW5kZW50LWYsZCk7cmV0dXJuIHRoaXMuaW5kZW50PWYsYi5sZW5ndGh9LGEucHJvdG90eXBlLm91dGRlbnRUb2tlbj1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7d2hpbGUoYT4wKWQ9dGhpcy5pbmRlbnRzLmxlbmd0aC0xLHRoaXMuaW5kZW50c1tkXT09PXZvaWQgMD9hPTA6dGhpcy5pbmRlbnRzW2RdPT09dGhpcy5vdXRkZWJ0PyhhLT10aGlzLm91dGRlYnQsdGhpcy5vdXRkZWJ0PTApOnRoaXMuaW5kZW50c1tkXTx0aGlzLm91dGRlYnQ/KHRoaXMub3V0ZGVidC09dGhpcy5pbmRlbnRzW2RdLGEtPXRoaXMuaW5kZW50c1tkXSk6KGM9dGhpcy5pbmRlbnRzLnBvcCgpLXRoaXMub3V0ZGVidCxhLT1jLHRoaXMub3V0ZGVidD0wLHRoaXMucGFpcigiT1VUREVOVCIpLHRoaXMudG9rZW4oIk9VVERFTlQiLGMpKTtjJiYodGhpcy5vdXRkZWJ0LT1hKTt3aGlsZSh0aGlzLnZhbHVlKCk9PT0iOyIpdGhpcy50b2tlbnMucG9wKCk7cmV0dXJuIHRoaXMudGFnKCkhPT0iVEVSTUlOQVRPUiImJiFiJiZ0aGlzLnRva2VuKCJURVJNSU5BVE9SIiwiXG4iKSx0aGlzfSxhLnByb3RvdHlwZS53aGl0ZXNwYWNlVG9rZW49ZnVuY3Rpb24oKXt2YXIgYSxiLGM7cmV0dXJuIShhPVIuZXhlYyh0aGlzLmNodW5rKSkmJiEoYj10aGlzLmNodW5rLmNoYXJBdCgwKT09PSJcbiIpPzA6KGM9Vih0aGlzLnRva2VucyksYyYmKGNbYT8ic3BhY2VkIjoibmV3TGluZSJdPSEwKSxhP2FbMF0ubGVuZ3RoOjApfSxhLnByb3RvdHlwZS5uZXdsaW5lVG9rZW49ZnVuY3Rpb24oKXt3aGlsZSh0aGlzLnZhbHVlKCk9PT0iOyIpdGhpcy50b2tlbnMucG9wKCk7cmV0dXJuIHRoaXMudGFnKCkhPT0iVEVSTUlOQVRPUiImJnRoaXMudG9rZW4oIlRFUk1JTkFUT1IiLCJcbiIpLHRoaXN9LGEucHJvdG90eXBlLnN1cHByZXNzTmV3bGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZSgpPT09IlxcIiYmdGhpcy50b2tlbnMucG9wKCksdGhpc30sYS5wcm90b3R5cGUubGl0ZXJhbFRva2VuPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZyxoLGksajsoYT1ILmV4ZWModGhpcy5jaHVuaykpPyhkPWFbMF0sZi50ZXN0KGQpJiZ0aGlzLnRhZ1BhcmFtZXRlcnMoKSk6ZD10aGlzLmNodW5rLmNoYXJBdCgwKSxjPWQsYj1WKHRoaXMudG9rZW5zKTtpZihkPT09Ij0iJiZiKXshYlsxXS5yZXNlcnZlZCYmKGc9YlsxXSxaLmNhbGwodixnKT49MCkmJnRoaXMuZXJyb3IoJ3Jlc2VydmVkIHdvcmQgIicrdGhpcy52YWx1ZSgpKyJcIiBjYW4ndCBiZSBhc3NpZ25lZCIpO2lmKChoPWJbMV0pPT09Inx8Inx8aD09PSImJiIpcmV0dXJuIGJbMF09IkNPTVBPVU5EX0FTU0lHTiIsYlsxXSs9Ij0iLGQubGVuZ3RofWlmKGQ9PT0iOyIpdGhpcy5zZWVuRm9yPSExLGM9IlRFUk1JTkFUT1IiO2Vsc2UgaWYoWi5jYWxsKEIsZCk+PTApYz0iTUFUSCI7ZWxzZSBpZihaLmNhbGwoayxkKT49MCljPSJDT01QQVJFIjtlbHNlIGlmKFouY2FsbChsLGQpPj0wKWM9IkNPTVBPVU5EX0FTU0lHTiI7ZWxzZSBpZihaLmNhbGwoUSxkKT49MCljPSJVTkFSWSI7ZWxzZSBpZihaLmNhbGwoTSxkKT49MCljPSJTSElGVCI7ZWxzZSBpZihaLmNhbGwoeixkKT49MHx8ZD09PSI/IiYmKGIhPW51bGw/Yi5zcGFjZWQ6dm9pZCAwKSljPSJMT0dJQyI7ZWxzZSBpZihiJiYhYi5zcGFjZWQpaWYoZD09PSIoIiYmKGk9YlswXSxaLmNhbGwoZSxpKT49MCkpYlswXT09PSI/IiYmKGJbMF09IkZVTkNfRVhJU1QiKSxjPSJDQUxMX1NUQVJUIjtlbHNlIGlmKGQ9PT0iWyImJihqPWJbMF0sWi5jYWxsKHMsaik+PTApKXtjPSJJTkRFWF9TVEFSVCI7c3dpdGNoKGJbMF0pe2Nhc2UiPyI6YlswXT0iSU5ERVhfU09BSyJ9fXN3aXRjaChkKXtjYXNlIigiOmNhc2UieyI6Y2FzZSJbIjp0aGlzLmVuZHMucHVzaCh0W2RdKTticmVhaztjYXNlIikiOmNhc2UifSI6Y2FzZSJdIjp0aGlzLnBhaXIoZCl9cmV0dXJuIHRoaXMudG9rZW4oYyxkKSxkLmxlbmd0aH0sYS5wcm90b3R5cGUuc2FuaXRpemVIZXJlZG9jPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZztlPWIuaW5kZW50LGQ9Yi5oZXJlY29tbWVudDtpZihkKXtuLnRlc3QoYSkmJnRoaXMuZXJyb3IoJ2Jsb2NrIGNvbW1lbnQgY2Fubm90IGNvbnRhaW4gIiovIiwgc3RhcnRpbmcnKTtpZihhLmluZGV4T2YoIlxuIik8PTApcmV0dXJuIGF9ZWxzZSB3aGlsZShmPW8uZXhlYyhhKSl7Yz1mWzFdO2lmKGU9PT1udWxsfHwwPChnPWMubGVuZ3RoKSYmZzxlLmxlbmd0aCllPWN9cmV0dXJuIGUmJihhPWEucmVwbGFjZShSZWdFeHAoIlxcbiIrZSwiZyIpLCJcbiIpKSxkfHwoYT1hLnJlcGxhY2UoL15cbi8sIiIpKSxhfSxhLnByb3RvdHlwZS50YWdQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQ7aWYodGhpcy50YWcoKSE9PSIpIilyZXR1cm4gdGhpcztiPVtdLGQ9dGhpcy50b2tlbnMsYT1kLmxlbmd0aCxkWy0tYV1bMF09IlBBUkFNX0VORCI7d2hpbGUoYz1kWy0tYV0pc3dpdGNoKGNbMF0pe2Nhc2UiKSI6Yi5wdXNoKGMpO2JyZWFrO2Nhc2UiKCI6Y2FzZSJDQUxMX1NUQVJUIjppZighYi5sZW5ndGgpcmV0dXJuIGNbMF09PT0iKCI/KGNbMF09IlBBUkFNX1NUQVJUIix0aGlzKTp0aGlzO2IucG9wKCl9cmV0dXJuIHRoaXN9LGEucHJvdG90eXBlLmNsb3NlSW5kZW50YXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vdXRkZW50VG9rZW4odGhpcy5pbmRlbnQpfSxhLnByb3RvdHlwZS5iYWxhbmNlZFN0cmluZz1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7Yz0wLGg9W2JdO2ZvcihkPWk9MSxqPWEubGVuZ3RoOzE8PWo/aTxqOmk+ajtkPTE8PWo/KytpOi0taSl7aWYoYyl7LS1jO2NvbnRpbnVlfXN3aXRjaChlPWEuY2hhckF0KGQpKXtjYXNlIlxcIjorK2M7Y29udGludWU7Y2FzZSBiOmgucG9wKCk7aWYoIWgubGVuZ3RoKXJldHVybiBhLnNsaWNlKDAsZCsxfHw5ZTkpO2I9aFtoLmxlbmd0aC0xXTtjb250aW51ZX1iIT09In0ifHxlIT09JyInJiZlIT09IiciP2I9PT0ifSImJmU9PT0iLyImJihmPXAuZXhlYyhhLnNsaWNlKGQpKXx8SS5leGVjKGEuc2xpY2UoZCkpKT9jKz1mWzBdLmxlbmd0aC0xOmI9PT0ifSImJmU9PT0ieyI/aC5wdXNoKGI9In0iKTpiPT09JyInJiZnPT09IiMiJiZlPT09InsiJiZoLnB1c2goYj0ifSIpOmgucHVzaChiPWUpLGc9ZX1yZXR1cm4gdGhpcy5lcnJvcigibWlzc2luZyAiK2gucG9wKCkrIiwgc3RhcnRpbmciKX0sYS5wcm90b3R5cGUuaW50ZXJwb2xhdGVTdHJpbmc9ZnVuY3Rpb24oYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7Yz09bnVsbCYmKGM9e30pLGU9Yy5oZXJlZG9jLG09Yy5yZWdleCxvPVtdLGw9MCxmPS0xO3doaWxlKGo9Yi5jaGFyQXQoZis9MSkpe2lmKGo9PT0iXFwiKXtmKz0xO2NvbnRpbnVlfWlmKGohPT0iIyJ8fGIuY2hhckF0KGYrMSkhPT0ieyJ8fCEoZD10aGlzLmJhbGFuY2VkU3RyaW5nKGIuc2xpY2UoZisxKSwifSIpKSljb250aW51ZTtsPGYmJm8ucHVzaChbIk5FT1NUUklORyIsYi5zbGljZShsLGYpXSksZz1kLnNsaWNlKDEsLTEpO2lmKGcubGVuZ3RoKXtrPShuZXcgYSkudG9rZW5pemUoZyx7bGluZTp0aGlzLmxpbmUscmV3cml0ZTohMX0pLGsucG9wKCksKChzPWtbMF0pIT1udWxsP3NbMF06dm9pZCAwKT09PSJURVJNSU5BVE9SIiYmay5zaGlmdCgpO2lmKGk9ay5sZW5ndGgpaT4xJiYoay51bnNoaWZ0KFsiKCIsIigiLHRoaXMubGluZV0pLGsucHVzaChbIikiLCIpIix0aGlzLmxpbmVdKSksby5wdXNoKFsiVE9LRU5TIixrXSl9Zis9ZC5sZW5ndGgsbD1mKzF9Zj5sJiZsPGIubGVuZ3RoJiZvLnB1c2goWyJORU9TVFJJTkciLGIuc2xpY2UobCldKTtpZihtKXJldHVybiBvO2lmKCFvLmxlbmd0aClyZXR1cm4gdGhpcy50b2tlbigiU1RSSU5HIiwnIiInKTtvWzBdWzBdIT09Ik5FT1NUUklORyImJm8udW5zaGlmdChbIiIsIiJdKSwoaD1vLmxlbmd0aD4xKSYmdGhpcy50b2tlbigiKCIsIigiKTtmb3IoZj1xPTAscj1vLmxlbmd0aDtxPHI7Zj0rK3EpdD1vW2ZdLG49dFswXSxwPXRbMV0sZiYmdGhpcy50b2tlbigiKyIsIisiKSxuPT09IlRPS0VOUyI/KHU9dGhpcy50b2tlbnMpLnB1c2guYXBwbHkodSxwKTp0aGlzLnRva2VuKCJTVFJJTkciLHRoaXMubWFrZVN0cmluZyhwLCciJyxlKSk7cmV0dXJuIGgmJnRoaXMudG9rZW4oIikiLCIpIiksb30sYS5wcm90b3R5cGUucGFpcj1mdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiBhIT09KGM9Vih0aGlzLmVuZHMpKT8oIk9VVERFTlQiIT09YyYmdGhpcy5lcnJvcigidW5tYXRjaGVkICIrYSksdGhpcy5pbmRlbnQtPWI9Vih0aGlzLmluZGVudHMpLHRoaXMub3V0ZGVudFRva2VuKGIsITApLHRoaXMucGFpcihhKSk6dGhpcy5lbmRzLnBvcCgpfSxhLnByb3RvdHlwZS50b2tlbj1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnRva2Vucy5wdXNoKFthLGIsdGhpcy5saW5lXSl9LGEucHJvdG90eXBlLnRhZz1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybihjPVYodGhpcy50b2tlbnMsYSkpJiYoYj9jWzBdPWI6Y1swXSl9LGEucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuKGM9Vih0aGlzLnRva2VucyxhKSkmJihiP2NbMV09YjpjWzFdKX0sYS5wcm90b3R5cGUudW5maW5pc2hlZD1mdW5jdGlvbigpe3ZhciBhO3JldHVybiB5LnRlc3QodGhpcy5jaHVuayl8fChhPXRoaXMudGFnKCkpPT09IlxcInx8YT09PSIuInx8YT09PSI/LiJ8fGE9PT0iVU5BUlkifHxhPT09Ik1BVEgifHxhPT09IisifHxhPT09Ii0ifHxhPT09IlNISUZUInx8YT09PSJSRUxBVElPTiJ8fGE9PT0iQ09NUEFSRSJ8fGE9PT0iTE9HSUMifHxhPT09IlRIUk9XInx8YT09PSJFWFRFTkRTIn0sYS5wcm90b3R5cGUuZXNjYXBlTGluZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yZXBsYWNlKEMsYj8iXFxuIjoiIil9LGEucHJvdG90eXBlLm1ha2VTdHJpbmc9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhPyhhPWEucmVwbGFjZSgvXFwoW1xzXFNdKS9nLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM9PT0iXG4ifHxjPT09Yj9jOmF9KSxhPWEucmVwbGFjZShSZWdFeHAoIiIrYiwiZyIpLCJcXCQmIiksYit0aGlzLmVzY2FwZUxpbmVzKGEsYykrYik6YitifSxhLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBTeW50YXhFcnJvcigiIithKyIgb24gbGluZSAiKyh0aGlzLmxpbmUrMSkpfSxhfSgpLHc9WyJ0cnVlIiwiZmFsc2UiLCJudWxsIiwidGhpcyIsIm5ldyIsImRlbGV0ZSIsInR5cGVvZiIsImluIiwiaW5zdGFuY2VvZiIsInJldHVybiIsInRocm93IiwiYnJlYWsiLCJjb250aW51ZSIsImRlYnVnZ2VyIiwiaWYiLCJlbHNlIiwic3dpdGNoIiwiZm9yIiwid2hpbGUiLCJkbyIsInRyeSIsImNhdGNoIiwiZmluYWxseSIsImNsYXNzIiwiZXh0ZW5kcyIsInN1cGVyIl0saT1bInVuZGVmaW5lZCIsInRoZW4iLCJ1bmxlc3MiLCJ1bnRpbCIsImxvb3AiLCJvZiIsImJ5Iiwid2hlbiJdLGg9e2FuZDoiJiYiLG9yOiJ8fCIsaXM6Ij09Iixpc250OiIhPSIsbm90OiIhIix5ZXM6InRydWUiLG5vOiJmYWxzZSIsb246InRydWUiLG9mZjoiZmFsc2UifSxnPWZ1bmN0aW9uKCl7dmFyIGE7YT1bXTtmb3IoVSBpbiBoKWEucHVzaChVKTtyZXR1cm4gYX0oKSxpPWkuY29uY2F0KGcpLEs9WyJjYXNlIiwiZGVmYXVsdCIsImZ1bmN0aW9uIiwidmFyIiwidm9pZCIsIndpdGgiLCJjb25zdCIsImxldCIsImVudW0iLCJleHBvcnQiLCJpbXBvcnQiLCJuYXRpdmUiLCJfX2hhc1Byb3AiLCJfX2V4dGVuZHMiLCJfX3NsaWNlIiwiX19iaW5kIiwiX19pbmRleE9mIiwiaW1wbGVtZW50cyIsImludGVyZmFjZSIsImxldCIsInBhY2thZ2UiLCJwcml2YXRlIiwicHJvdGVjdGVkIiwicHVibGljIiwic3RhdGljIiwieWllbGQiXSxPPVsiYXJndW1lbnRzIiwiZXZhbCJdLHY9dy5jb25jYXQoSykuY29uY2F0KE8pLGIuUkVTRVJWRUQ9Sy5jb25jYXQodykuY29uY2F0KGkpLmNvbmNhdChPKSxiLlNUUklDVF9QUk9TQ1JJQkVEPU8scj0vXihbJEEtWmEtel9ceDdmLVx1ZmZmZl1bJFx3XHg3Zi1cdWZmZmZdKikoW15cblxTXSo6KD8hOikpPy8sRz0vXjBiWzAxXSt8XjBvWzAtN10rfF4weFtcZGEtZl0rfF5cZCpcLj9cZCsoPzplWystXT9cZCspPy9pLG09L14oIiIifCcnJykoW1xzXFNdKj8pKD86XG5bXlxuXFNdKik/XDEvLEg9L14oPzpbLT1dPnxbLSsqXC8lPD4mfF4hPz1dPXw+Pj49P3woWy0rOl0pXDF8KFsmfDw+XSlcMj0/fFw/XC58XC57MiwzfSkvLFI9L15bXlxuXFNdKy8saj0vXiMjIyhbXiNdW1xzXFNdKj8pKD86IyMjW15cblxTXSp8KD86IyMjKT8kKXxeKD86XHMqIyg/ISMjW14jXSkuKikrLyxmPS9eWy09XT4vLEQ9L14oPzpcblteXG5cU10qKSsvLE49L14nW15cXCddKig/OlxcLlteXFwnXSopKicvLHU9L15gW15cXGBdKig/OlxcLlteXFxgXSopKmAvLEk9L14oXC8oPyFbXHM9XSlbXltcL1xuXFxdKig/Oig/OlxcW1xzXFNdfFxbW15cXVxuXFxdKig/OlxcW1xzXFNdW15cXVxuXFxdKikqXSlbXltcL1xuXFxdKikqXC8pKFtpbWd5XXswLDR9KSg/IVx3KS8scD0vXlwvezN9KFtcc1xTXSs/KVwvezN9KFtpbWd5XXswLDR9KSg/IVx3KS8scT0vXHMrKD86Iy4qKT8vZyxDPS9cbi9nLG89L1xuKyhbXlxuXFNdKikvZyxuPS9cKlwvLyx5PS9eXHMqKD86LHxcPz9cLig/IVsuXGRdKXw6OikvLFA9L1xzKyQvLGw9WyItPSIsIis9IiwiLz0iLCIqPSIsIiU9IiwifHw9IiwiJiY9IiwiPz0iLCI8PD0iLCI+Pj0iLCI+Pj49IiwiJj0iLCJePSIsInw9Il0sUT1bIiEiLCJ+IiwiTkVXIiwiVFlQRU9GIiwiREVMRVRFIiwiRE8iXSx6PVsiJiYiLCJ8fCIsIiYiLCJ8IiwiXiJdLE09WyI8PCIsIj4+IiwiPj4+Il0saz1bIj09IiwiIT0iLCI8IiwiPiIsIjw9IiwiPj0iXSxCPVsiKiIsIi8iLCIlIl0sSj1bIklOIiwiT0YiLCJJTlNUQU5DRU9GIl0sZD1bIlRSVUUiLCJGQUxTRSIsIk5VTEwiLCJVTkRFRklORUQiXSxFPVsiTlVNQkVSIiwiUkVHRVgiLCJCT09MIiwiKysiLCItLSIsIl0iXSxGPUUuY29uY2F0KCIpIiwifSIsIlRISVMiLCJJREVOVElGSUVSIiwiU1RSSU5HIiksZT1bIklERU5USUZJRVIiLCJTVFJJTkciLCJSRUdFWCIsIikiLCJdIiwifSIsIj8iLCI6OiIsIkAiLCJUSElTIiwiU1VQRVIiXSxzPWUuY29uY2F0KCJOVU1CRVIiLCJCT09MIikseD1bIklOREVOVCIsIk9VVERFTlQiLCJURVJNSU5BVE9SIl19KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZS9yZXdyaXRlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdj1bXS5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2I8YztiKyspaWYoYiBpbiB0aGlzJiZ0aGlzW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX0sdz1bXS5zbGljZTtiLlJld3JpdGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe31yZXR1cm4gYS5uYW1lPSJSZXdyaXRlciIsYS5wcm90b3R5cGUucmV3cml0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50b2tlbnM9YSx0aGlzLnJlbW92ZUxlYWRpbmdOZXdsaW5lcygpLHRoaXMucmVtb3ZlTWlkRXhwcmVzc2lvbk5ld2xpbmVzKCksdGhpcy5jbG9zZU9wZW5DYWxscygpLHRoaXMuY2xvc2VPcGVuSW5kZXhlcygpLHRoaXMuYWRkSW1wbGljaXRJbmRlbnRhdGlvbigpLHRoaXMudGFnUG9zdGZpeENvbmRpdGlvbmFscygpLHRoaXMuYWRkSW1wbGljaXRCcmFjZXMoKSx0aGlzLmFkZEltcGxpY2l0UGFyZW50aGVzZXMoKSx0aGlzLnRva2Vuc30sYS5wcm90b3R5cGUuc2NhblRva2Vucz1mdW5jdGlvbihhKXt2YXIgYixjLGQ7ZD10aGlzLnRva2VucyxiPTA7d2hpbGUoYz1kW2JdKWIrPWEuY2FsbCh0aGlzLGMsYixkKTtyZXR1cm4hMH0sYS5wcm90b3R5cGUuZGV0ZWN0RW5kPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGgsaSxqO2g9dGhpcy50b2tlbnMsZD0wO3doaWxlKGU9aFthXSl7aWYoZD09PTAmJmIuY2FsbCh0aGlzLGUsYSkpcmV0dXJuIGMuY2FsbCh0aGlzLGUsYSk7aWYoIWV8fGQ8MClyZXR1cm4gYy5jYWxsKHRoaXMsZSxhLTEpO2lmKGk9ZVswXSx2LmNhbGwoZyxpKT49MClkKz0xO2Vsc2UgaWYoaj1lWzBdLHYuY2FsbChmLGopPj0wKWQtPTE7YSs9MX1yZXR1cm4gYS0xfSxhLnByb3RvdHlwZS5yZW1vdmVMZWFkaW5nTmV3bGluZXM9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlO2U9dGhpcy50b2tlbnM7Zm9yKGE9Yz0wLGQ9ZS5sZW5ndGg7YzxkO2E9KytjKXtiPWVbYV1bMF07aWYoYiE9PSJURVJNSU5BVE9SIilicmVha31pZihhKXJldHVybiB0aGlzLnRva2Vucy5zcGxpY2UoMCxhKX0sYS5wcm90b3R5cGUucmVtb3ZlTWlkRXhwcmVzc2lvbk5ld2xpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2NhblRva2VucyhmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGFbMF09PT0iVEVSTUlOQVRPUiImJihkPXRoaXMudGFnKGIrMSksdi5jYWxsKGUsZCk+PTApPyhjLnNwbGljZShiLDEpLDApOjF9KX0sYS5wcm90b3R5cGUuY2xvc2VPcGVuQ2FsbHM9ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybiBiPWZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuKGM9YVswXSk9PT0iKSJ8fGM9PT0iQ0FMTF9FTkQifHxhWzBdPT09Ik9VVERFTlQiJiZ0aGlzLnRhZyhiLTEpPT09IikifSxhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMudG9rZW5zW2FbMF09PT0iT1VUREVOVCI/Yi0xOmJdWzBdPSJDQUxMX0VORCJ9LHRoaXMuc2NhblRva2VucyhmdW5jdGlvbihjLGQpe3JldHVybiBjWzBdPT09IkNBTExfU1RBUlQiJiZ0aGlzLmRldGVjdEVuZChkKzEsYixhKSwxfSl9LGEucHJvdG90eXBlLmNsb3NlT3BlbkluZGV4ZXM9ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybiBiPWZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuKGM9YVswXSk9PT0iXSJ8fGM9PT0iSU5ERVhfRU5EIn0sYT1mdW5jdGlvbihhLGIpe3JldHVybiBhWzBdPSJJTkRFWF9FTkQifSx0aGlzLnNjYW5Ub2tlbnMoZnVuY3Rpb24oYyxkKXtyZXR1cm4gY1swXT09PSJJTkRFWF9TVEFSVCImJnRoaXMuZGV0ZWN0RW5kKGQrMSxiLGEpLDF9KX0sYS5wcm90b3R5cGUuYWRkSW1wbGljaXRCcmFjZXM9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGgsaTtyZXR1cm4gZD1bXSxlPW51bGwsaT1udWxsLGM9ITAsaD0wLGI9ZnVuY3Rpb24oYSxiKXt2YXIgZCxlLGYsZyxoLGs7cmV0dXJuIGg9dGhpcy50b2tlbnMuc2xpY2UoYisxLGIrMysxfHw5ZTkpLGQ9aFswXSxnPWhbMV0sZj1oWzJdLCJIRVJFQ09NTUVOVCI9PT0oZCE9bnVsbD9kWzBdOnZvaWQgMCk/ITE6KGU9YVswXSx2LmNhbGwobixlKT49MCYmKGM9ITEpLChlPT09IlRFUk1JTkFUT1IifHxlPT09Ik9VVERFTlQifHx2LmNhbGwoaixlKT49MCYmYykmJighaSYmdGhpcy50YWcoYi0xKSE9PSIsInx8KGchPW51bGw/Z1swXTp2b2lkIDApIT09IjoiJiYoKGQhPW51bGw/ZFswXTp2b2lkIDApIT09IkAifHwoZiE9bnVsbD9mWzBdOnZvaWQgMCkhPT0iOiIpKXx8ZT09PSIsIiYmZCYmKGs9ZFswXSkhPT0iSURFTlRJRklFUiImJmshPT0iTlVNQkVSIiYmayE9PSJTVFJJTkciJiZrIT09IkAiJiZrIT09IlRFUk1JTkFUT1IiJiZrIT09Ik9VVERFTlQiKX0sYT1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBjPXRoaXMuZ2VuZXJhdGUoIn0iLCJ9IixhWzJdKSx0aGlzLnRva2Vucy5zcGxpY2UoYiwwLGMpfSx0aGlzLnNjYW5Ub2tlbnMoZnVuY3Rpb24oaCxqLGspe3ZhciBsLG0sbyxwLHEscixzLHQ7aWYocz1wPWhbMF0sdi5jYWxsKGcscyk+PTApcmV0dXJuIGQucHVzaChbcD09PSJJTkRFTlQiJiZ0aGlzLnRhZyhqLTEpPT09InsiPyJ7IjpwLGpdKSwxO2lmKHYuY2FsbChmLHApPj0wKXJldHVybiBlPWQucG9wKCksMTtpZihwIT09IjoifHwobD10aGlzLnRhZyhqLTIpKSE9PSI6IiYmKCh0PWRbZC5sZW5ndGgtMV0pIT1udWxsP3RbMF06dm9pZCAwKT09PSJ7IilyZXR1cm4gMTtjPSEwLGQucHVzaChbInsiXSksbT1sPT09IkAiP2otMjpqLTE7d2hpbGUodGhpcy50YWcobS0yKT09PSJIRVJFQ09NTUVOVCIpbS09MjtyZXR1cm4gbz10aGlzLnRhZyhtLTEpLGk9IW98fHYuY2FsbChuLG8pPj0wLHI9bmV3IFN0cmluZygieyIpLHIuZ2VuZXJhdGVkPSEwLHE9dGhpcy5nZW5lcmF0ZSgieyIscixoWzJdKSxrLnNwbGljZShtLDAscSksdGhpcy5kZXRlY3RFbmQoaisyLGIsYSksMn0pfSxhLnByb3RvdHlwZS5hZGRJbXBsaWNpdFBhcmVudGhlc2VzPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtyZXR1cm4gYz1lPWQ9ITEsYj1mdW5jdGlvbihhLGIpe3ZhciBjLGYsZyxpO2Y9YVswXTtpZighZSYmYS5mcm9tVGhlbilyZXR1cm4hMDtpZihmPT09IklGInx8Zj09PSJFTFNFInx8Zj09PSJDQVRDSCJ8fGY9PT0iLT4ifHxmPT09Ij0+Inx8Zj09PSJDTEFTUyIpZT0hMDtpZihmPT09IklGInx8Zj09PSJFTFNFInx8Zj09PSJTV0lUQ0gifHxmPT09IlRSWSJ8fGY9PT0iPSIpZD0hMDtyZXR1cm4gZiE9PSIuIiYmZiE9PSI/LiImJmYhPT0iOjoifHx0aGlzLnRhZyhiLTEpIT09Ik9VVERFTlQiPyFhLmdlbmVyYXRlZCYmdGhpcy50YWcoYi0xKSE9PSIsIiYmKHYuY2FsbChqLGYpPj0wfHxmPT09IklOREVOVCImJiFkKSYmKGYhPT0iSU5ERU5UInx8KGc9dGhpcy50YWcoYi0yKSkhPT0iQ0xBU1MiJiZnIT09IkVYVEVORFMiJiYoaT10aGlzLnRhZyhiLTEpLHYuY2FsbChoLGkpPDApJiYoIShjPXRoaXMudG9rZW5zW2IrMV0pfHwhYy5nZW5lcmF0ZWR8fGNbMF0hPT0ieyIpKTohMH0sYT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnRva2Vucy5zcGxpY2UoYiwwLHRoaXMuZ2VuZXJhdGUoIkNBTExfRU5EIiwiKSIsYVsyXSkpfSx0aGlzLnNjYW5Ub2tlbnMoZnVuY3Rpb24oZixnLGgpe3ZhciBqLG0sbyxwLHEscixzLHQ7cT1mWzBdO2lmKHE9PT0iQ0xBU1MifHxxPT09IklGInx8cT09PSJGT1IifHxxPT09IldISUxFIiljPSEwO3JldHVybiByPWguc2xpY2UoZy0xLGcrMSsxfHw5ZTkpLHA9clswXSxtPXJbMV0sbz1yWzJdLGo9IWMmJnE9PT0iSU5ERU5UIiYmbyYmby5nZW5lcmF0ZWQmJm9bMF09PT0ieyImJnAmJihzPXBbMF0sdi5jYWxsKGsscyk+PTApLGU9ITEsZD0hMSx2LmNhbGwobixxKT49MCYmKGM9ITEpLHAmJiFwLnNwYWNlZCYmcT09PSI/IiYmKGYuY2FsbD0hMCksZi5mcm9tVGhlbj8xOmp8fChwIT1udWxsP3Auc3BhY2VkOnZvaWQgMCkmJihwLmNhbGx8fCh0PXBbMF0sdi5jYWxsKGssdCk+PTApKSYmKHYuY2FsbChpLHEpPj0wfHwhZi5zcGFjZWQmJiFmLm5ld0xpbmUmJnYuY2FsbChsLHEpPj0wKT8oaC5zcGxpY2UoZywwLHRoaXMuZ2VuZXJhdGUoIkNBTExfU1RBUlQiLCIoIixmWzJdKSksdGhpcy5kZXRlY3RFbmQoZysxLGIsYSkscFswXT09PSI/IiYmKHBbMF09IkZVTkNfRVhJU1QiKSwyKToxfSl9LGEucHJvdG90eXBlLmFkZEltcGxpY2l0SW5kZW50YXRpb249ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlO3JldHVybiBlPWM9ZD1udWxsLGI9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4gYVsxXSE9PSI7IiYmKGM9YVswXSx2LmNhbGwobyxjKT49MCkmJihhWzBdIT09IkVMU0UifHxlPT09IklGInx8ZT09PSJUSEVOIil9LGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy50b2tlbnMuc3BsaWNlKHRoaXMudGFnKGItMSk9PT0iLCI/Yi0xOmIsMCxkKX0sdGhpcy5zY2FuVG9rZW5zKGZ1bmN0aW9uKGYsZyxoKXt2YXIgaSxqLGs7cmV0dXJuIGk9ZlswXSxpPT09IlRFUk1JTkFUT1IiJiZ0aGlzLnRhZyhnKzEpPT09IlRIRU4iPyhoLnNwbGljZShnLDEpLDApOmk9PT0iRUxTRSImJnRoaXMudGFnKGctMSkhPT0iT1VUREVOVCI/KGguc3BsaWNlLmFwcGx5KGgsW2csMF0uY29uY2F0KHcuY2FsbCh0aGlzLmluZGVudGF0aW9uKGYpKSkpLDIpOmkhPT0iQ0FUQ0gifHwoaj10aGlzLnRhZyhnKzIpKSE9PSJPVVRERU5UIiYmaiE9PSJURVJNSU5BVE9SIiYmaiE9PSJGSU5BTExZIj92LmNhbGwocCxpKT49MCYmdGhpcy50YWcoZysxKSE9PSJJTkRFTlQiJiYoaSE9PSJFTFNFInx8dGhpcy50YWcoZysxKSE9PSJJRiIpPyhlPWksaz10aGlzLmluZGVudGF0aW9uKGYsITApLGM9a1swXSxkPWtbMV0sZT09PSJUSEVOIiYmKGMuZnJvbVRoZW49ITApLGguc3BsaWNlKGcrMSwwLGMpLHRoaXMuZGV0ZWN0RW5kKGcrMixiLGEpLGk9PT0iVEhFTiImJmguc3BsaWNlKGcsMSksMSk6MTooaC5zcGxpY2UuYXBwbHkoaCxbZysyLDBdLmNvbmNhdCh3LmNhbGwodGhpcy5pbmRlbnRhdGlvbihmKSkpKSw0KX0pfSxhLnByb3RvdHlwZS50YWdQb3N0Zml4Q29uZGl0aW9uYWxzPWZ1bmN0aW9uKCl7dmFyIGEsYixjO3JldHVybiBjPW51bGwsYj1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybihjPWFbMF0pPT09IlRFUk1JTkFUT1IifHxjPT09IklOREVOVCJ9LGE9ZnVuY3Rpb24oYSxiKXtpZihhWzBdIT09IklOREVOVCJ8fGEuZ2VuZXJhdGVkJiYhYS5mcm9tVGhlbilyZXR1cm4gY1swXT0iUE9TVF8iK2NbMF19LHRoaXMuc2NhblRva2VucyhmdW5jdGlvbihkLGUpe3JldHVybiBkWzBdIT09IklGIj8xOihjPWQsdGhpcy5kZXRlY3RFbmQoZSsxLGIsYSksMSl9KX0sYS5wcm90b3R5cGUuaW5kZW50YXRpb249ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO3JldHVybiBiPT1udWxsJiYoYj0hMSksYz1bIklOREVOVCIsMixhWzJdXSxkPVsiT1VUREVOVCIsMixhWzJdXSxiJiYoYy5nZW5lcmF0ZWQ9ZC5nZW5lcmF0ZWQ9ITApLFtjLGRdfSxhLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGQ9W2EsYixjXSxkLmdlbmVyYXRlZD0hMCxkfSxhLnByb3RvdHlwZS50YWc9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuKGI9dGhpcy50b2tlbnNbYV0pIT1udWxsP2JbMF06dm9pZCAwfSxhfSgpLGQ9W1siKCIsIikiXSxbIlsiLCJdIl0sWyJ7IiwifSJdLFsiSU5ERU5UIiwiT1VUREVOVCJdLFsiQ0FMTF9TVEFSVCIsIkNBTExfRU5EIl0sWyJQQVJBTV9TVEFSVCIsIlBBUkFNX0VORCJdLFsiSU5ERVhfU1RBUlQiLCJJTkRFWF9FTkQiXV0sYi5JTlZFUlNFUz1tPXt9LGc9W10sZj1bXTtmb3Iocz0wLHQ9ZC5sZW5ndGg7czx0O3MrKyl1PWRbc10scT11WzBdLHI9dVsxXSxnLnB1c2gobVtyXT1xKSxmLnB1c2gobVtxXT1yKTtlPVsiQ0FUQ0giLCJXSEVOIiwiRUxTRSIsIkZJTkFMTFkiXS5jb25jYXQoZiksaz1bIklERU5USUZJRVIiLCJTVVBFUiIsIikiLCJDQUxMX0VORCIsIl0iLCJJTkRFWF9FTkQiLCJAIiwiVEhJUyJdLGk9WyJJREVOVElGSUVSIiwiTlVNQkVSIiwiU1RSSU5HIiwiSlMiLCJSRUdFWCIsIk5FVyIsIlBBUkFNX1NUQVJUIiwiQ0xBU1MiLCJJRiIsIlRSWSIsIlNXSVRDSCIsIlRISVMiLCJCT09MIiwiVU5BUlkiLCJTVVBFUiIsIkAiLCItPiIsIj0+IiwiWyIsIigiLCJ7IiwiLS0iLCIrKyJdLGw9WyIrIiwiLSJdLGg9WyItPiIsIj0+IiwieyIsIlsiLCIsIl0saj1bIlBPU1RfSUYiLCJGT1IiLCJXSElMRSIsIlVOVElMIiwiV0hFTiIsIkJZIiwiTE9PUCIsIlRFUk1JTkFUT1IiXSxwPVsiRUxTRSIsIi0+IiwiPT4iLCJUUlkiLCJGSU5BTExZIiwiVEhFTiJdLG89WyJURVJNSU5BVE9SIiwiQ0FUQ0giLCJGSU5BTExZIiwiRUxTRSIsIk9VVERFTlQiLCJMRUFESU5HX1dIRU4iXSxuPVsiVEVSTUlOQVRPUiIsIklOREVOVCIsIk9VVERFTlQiXX0pLGRlZmluZSgiYWNlL21vZGUvY29mZmVlL2hlbHBlcnMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtiLnN0YXJ0cz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT1hLnN1YnN0cihjLGIubGVuZ3RoKX0sYi5lbmRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gZD1iLmxlbmd0aCxiPT09YS5zdWJzdHIoYS5sZW5ndGgtZC0oY3x8MCksZCl9LGIuY29tcGFjdD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZTtlPVtdO2ZvcihjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWI9YVtjXSxiJiZlLnB1c2goYik7cmV0dXJuIGV9LGIuY291bnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO2M9ZD0wO2lmKCFiLmxlbmd0aClyZXR1cm4gMS8wO3doaWxlKGQ9MSthLmluZGV4T2YoYixkKSljKys7cmV0dXJuIGN9LGIubWVyZ2U9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZChkKHt9LGEpLGIpfSxkPWIuZXh0ZW5kPWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtmb3IoYyBpbiBiKWQ9YltjXSxhW2NdPWQ7cmV0dXJuIGF9LGIuZmxhdHRlbj1lPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxmO2M9W107Zm9yKGQ9MCxmPWEubGVuZ3RoO2Q8ZjtkKyspYj1hW2RdLGIgaW5zdGFuY2VvZiBBcnJheT9jPWMuY29uY2F0KGUoYikpOmMucHVzaChiKTtyZXR1cm4gY30sYi5kZWw9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4gYz1hW2JdLGRlbGV0ZSBhW2JdLGN9LGIubGFzdD1mdW5jdGlvbihhLGIpe3JldHVybiBhW2EubGVuZ3RoLShifHwwKS0xXX19KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZS9wYXJzZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dW5kZWZpbmVkO3ZhciBkPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsUm9vdDozLEJvZHk6NCxCbG9jazo1LFRFUk1JTkFUT1I6NixMaW5lOjcsRXhwcmVzc2lvbjo4LFN0YXRlbWVudDo5LFJldHVybjoxMCxDb21tZW50OjExLFNUQVRFTUVOVDoxMixWYWx1ZToxMyxJbnZvY2F0aW9uOjE0LENvZGU6MTUsT3BlcmF0aW9uOjE2LEFzc2lnbjoxNyxJZjoxOCxUcnk6MTksV2hpbGU6MjAsRm9yOjIxLFN3aXRjaDoyMixDbGFzczoyMyxUaHJvdzoyNCxJTkRFTlQ6MjUsT1VUREVOVDoyNixJZGVudGlmaWVyOjI3LElERU5USUZJRVI6MjgsQWxwaGFOdW1lcmljOjI5LE5VTUJFUjozMCxTVFJJTkc6MzEsTGl0ZXJhbDozMixKUzozMyxSRUdFWDozNCxERUJVR0dFUjozNSxCT09MOjM2LEFzc2lnbmFibGU6MzcsIj0iOjM4LEFzc2lnbk9iajozOSxPYmpBc3NpZ25hYmxlOjQwLCI6Ijo0MSxUaGlzUHJvcGVydHk6NDIsUkVUVVJOOjQzLEhFUkVDT01NRU5UOjQ0LFBBUkFNX1NUQVJUOjQ1LFBhcmFtTGlzdDo0NixQQVJBTV9FTkQ6NDcsRnVuY0dseXBoOjQ4LCItPiI6NDksIj0+Ijo1MCxPcHRDb21tYTo1MSwiLCI6NTIsUGFyYW06NTMsUGFyYW1WYXI6NTQsIi4uLiI6NTUsQXJyYXk6NTYsT2JqZWN0OjU3LFNwbGF0OjU4LFNpbXBsZUFzc2lnbmFibGU6NTksQWNjZXNzb3I6NjAsUGFyZW50aGV0aWNhbDo2MSxSYW5nZTo2MixUaGlzOjYzLCIuIjo2NCwiPy4iOjY1LCI6OiI6NjYsSW5kZXg6NjcsSU5ERVhfU1RBUlQ6NjgsSW5kZXhWYWx1ZTo2OSxJTkRFWF9FTkQ6NzAsSU5ERVhfU09BSzo3MSxTbGljZTo3MiwieyI6NzMsQXNzaWduTGlzdDo3NCwifSI6NzUsQ0xBU1M6NzYsRVhURU5EUzo3NyxPcHRGdW5jRXhpc3Q6NzgsQXJndW1lbnRzOjc5LFNVUEVSOjgwLEZVTkNfRVhJU1Q6ODEsQ0FMTF9TVEFSVDo4MixDQUxMX0VORDo4MyxBcmdMaXN0Ojg0LFRISVM6ODUsIkAiOjg2LCJbIjo4NywiXSI6ODgsUmFuZ2VEb3RzOjg5LCIuLiI6OTAsQXJnOjkxLFNpbXBsZUFyZ3M6OTIsVFJZOjkzLENhdGNoOjk0LEZJTkFMTFk6OTUsQ0FUQ0g6OTYsVEhST1c6OTcsIigiOjk4LCIpIjo5OSxXaGlsZVNvdXJjZToxMDAsV0hJTEU6MTAxLFdIRU46MTAyLFVOVElMOjEwMyxMb29wOjEwNCxMT09QOjEwNSxGb3JCb2R5OjEwNixGT1I6MTA3LEZvclN0YXJ0OjEwOCxGb3JTb3VyY2U6MTA5LEZvclZhcmlhYmxlczoxMTAsT1dOOjExMSxGb3JWYWx1ZToxMTIsRk9SSU46MTEzLEZPUk9GOjExNCxCWToxMTUsU1dJVENIOjExNixXaGVuczoxMTcsRUxTRToxMTgsV2hlbjoxMTksTEVBRElOR19XSEVOOjEyMCxJZkJsb2NrOjEyMSxJRjoxMjIsUE9TVF9JRjoxMjMsVU5BUlk6MTI0LCItIjoxMjUsIisiOjEyNiwiLS0iOjEyNywiKysiOjEyOCwiPyI6MTI5LE1BVEg6MTMwLFNISUZUOjEzMSxDT01QQVJFOjEzMixMT0dJQzoxMzMsUkVMQVRJT046MTM0LENPTVBPVU5EX0FTU0lHTjoxMzUsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDY6IlRFUk1JTkFUT1IiLDEyOiJTVEFURU1FTlQiLDI1OiJJTkRFTlQiLDI2OiJPVVRERU5UIiwyODoiSURFTlRJRklFUiIsMzA6Ik5VTUJFUiIsMzE6IlNUUklORyIsMzM6IkpTIiwzNDoiUkVHRVgiLDM1OiJERUJVR0dFUiIsMzY6IkJPT0wiLDM4OiI9Iiw0MToiOiIsNDM6IlJFVFVSTiIsNDQ6IkhFUkVDT01NRU5UIiw0NToiUEFSQU1fU1RBUlQiLDQ3OiJQQVJBTV9FTkQiLDQ5OiItPiIsNTA6Ij0+Iiw1MjoiLCIsNTU6Ii4uLiIsNjQ6Ii4iLDY1OiI/LiIsNjY6Ijo6Iiw2ODoiSU5ERVhfU1RBUlQiLDcwOiJJTkRFWF9FTkQiLDcxOiJJTkRFWF9TT0FLIiw3MzoieyIsNzU6In0iLDc2OiJDTEFTUyIsNzc6IkVYVEVORFMiLDgwOiJTVVBFUiIsODE6IkZVTkNfRVhJU1QiLDgyOiJDQUxMX1NUQVJUIiw4MzoiQ0FMTF9FTkQiLDg1OiJUSElTIiw4NjoiQCIsODc6IlsiLDg4OiJdIiw5MDoiLi4iLDkzOiJUUlkiLDk1OiJGSU5BTExZIiw5NjoiQ0FUQ0giLDk3OiJUSFJPVyIsOTg6IigiLDk5OiIpIiwxMDE6IldISUxFIiwxMDI6IldIRU4iLDEwMzoiVU5USUwiLDEwNToiTE9PUCIsMTA3OiJGT1IiLDExMToiT1dOIiwxMTM6IkZPUklOIiwxMTQ6IkZPUk9GIiwxMTU6IkJZIiwxMTY6IlNXSVRDSCIsMTE4OiJFTFNFIiwxMjA6IkxFQURJTkdfV0hFTiIsMTIyOiJJRiIsMTIzOiJQT1NUX0lGIiwxMjQ6IlVOQVJZIiwxMjU6Ii0iLDEyNjoiKyIsMTI3OiItLSIsMTI4OiIrKyIsMTI5OiI/IiwxMzA6Ik1BVEgiLDEzMToiU0hJRlQiLDEzMjoiQ09NUEFSRSIsMTMzOiJMT0dJQyIsMTM0OiJSRUxBVElPTiIsMTM1OiJDT01QT1VORF9BU1NJR04ifSxwcm9kdWN0aW9uc186WzAsWzMsMF0sWzMsMV0sWzMsMl0sWzQsMV0sWzQsM10sWzQsMl0sWzcsMV0sWzcsMV0sWzksMV0sWzksMV0sWzksMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0sWzUsMl0sWzUsM10sWzI3LDFdLFsyOSwxXSxbMjksMV0sWzMyLDFdLFszMiwxXSxbMzIsMV0sWzMyLDFdLFszMiwxXSxbMTcsM10sWzE3LDRdLFsxNyw1XSxbMzksMV0sWzM5LDNdLFszOSw1XSxbMzksMV0sWzQwLDFdLFs0MCwxXSxbNDAsMV0sWzEwLDJdLFsxMCwxXSxbMTEsMV0sWzE1LDVdLFsxNSwyXSxbNDgsMV0sWzQ4LDFdLFs1MSwwXSxbNTEsMV0sWzQ2LDBdLFs0NiwxXSxbNDYsM10sWzUzLDFdLFs1MywyXSxbNTMsM10sWzU0LDFdLFs1NCwxXSxbNTQsMV0sWzU0LDFdLFs1OCwyXSxbNTksMV0sWzU5LDJdLFs1OSwyXSxbNTksMV0sWzM3LDFdLFszNywxXSxbMzcsMV0sWzEzLDFdLFsxMywxXSxbMTMsMV0sWzEzLDFdLFsxMywxXSxbNjAsMl0sWzYwLDJdLFs2MCwyXSxbNjAsMV0sWzYwLDFdLFs2NywzXSxbNjcsMl0sWzY5LDFdLFs2OSwxXSxbNTcsNF0sWzc0LDBdLFs3NCwxXSxbNzQsM10sWzc0LDRdLFs3NCw2XSxbMjMsMV0sWzIzLDJdLFsyMywzXSxbMjMsNF0sWzIzLDJdLFsyMywzXSxbMjMsNF0sWzIzLDVdLFsxNCwzXSxbMTQsM10sWzE0LDFdLFsxNCwyXSxbNzgsMF0sWzc4LDFdLFs3OSwyXSxbNzksNF0sWzYzLDFdLFs2MywxXSxbNDIsMl0sWzU2LDJdLFs1Niw0XSxbODksMV0sWzg5LDFdLFs2Miw1XSxbNzIsM10sWzcyLDJdLFs3MiwyXSxbNzIsMV0sWzg0LDFdLFs4NCwzXSxbODQsNF0sWzg0LDRdLFs4NCw2XSxbOTEsMV0sWzkxLDFdLFs5MiwxXSxbOTIsM10sWzE5LDJdLFsxOSwzXSxbMTksNF0sWzE5LDVdLFs5NCwzXSxbMjQsMl0sWzYxLDNdLFs2MSw1XSxbMTAwLDJdLFsxMDAsNF0sWzEwMCwyXSxbMTAwLDRdLFsyMCwyXSxbMjAsMl0sWzIwLDJdLFsyMCwxXSxbMTA0LDJdLFsxMDQsMl0sWzIxLDJdLFsyMSwyXSxbMjEsMl0sWzEwNiwyXSxbMTA2LDJdLFsxMDgsMl0sWzEwOCwzXSxbMTEyLDFdLFsxMTIsMV0sWzExMiwxXSxbMTEwLDFdLFsxMTAsM10sWzEwOSwyXSxbMTA5LDJdLFsxMDksNF0sWzEwOSw0XSxbMTA5LDRdLFsxMDksNl0sWzEwOSw2XSxbMjIsNV0sWzIyLDddLFsyMiw0XSxbMjIsNl0sWzExNywxXSxbMTE3LDJdLFsxMTksM10sWzExOSw0XSxbMTIxLDNdLFsxMjEsNV0sWzE4LDFdLFsxOCwzXSxbMTgsM10sWzE4LDNdLFsxNiwyXSxbMTYsMl0sWzE2LDJdLFsxNiwyXSxbMTYsMl0sWzE2LDJdLFsxNiwyXSxbMTYsMl0sWzE2LDNdLFsxNiwzXSxbMTYsM10sWzE2LDNdLFsxNiwzXSxbMTYsM10sWzE2LDNdLFsxNiwzXSxbMTYsNV0sWzE2LDNdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKGIsYyxkLGUsZixnLGgpe3ZhciBpPWcubGVuZ3RoLTE7c3dpdGNoKGYpe2Nhc2UgMTpyZXR1cm4gdGhpcy4kPW5ldyBlLkJsb2NrO2Nhc2UgMjpyZXR1cm4gdGhpcy4kPWdbaV07Y2FzZSAzOnJldHVybiB0aGlzLiQ9Z1tpLTFdO2Nhc2UgNDp0aGlzLiQ9ZS5CbG9jay53cmFwKFtnW2ldXSk7YnJlYWs7Y2FzZSA1OnRoaXMuJD1nW2ktMl0ucHVzaChnW2ldKTticmVhaztjYXNlIDY6dGhpcy4kPWdbaS0xXTticmVhaztjYXNlIDc6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSA4OnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgOTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDEwOnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMTE6dGhpcy4kPW5ldyBlLkxpdGVyYWwoZ1tpXSk7YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDEzOnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMTQ6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSAxNTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDE2OnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMTc6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSAxODp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDE5OnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMjA6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSAyMTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDIyOnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMjM6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSAyNDp0aGlzLiQ9bmV3IGUuQmxvY2s7YnJlYWs7Y2FzZSAyNTp0aGlzLiQ9Z1tpLTFdO2JyZWFrO2Nhc2UgMjY6dGhpcy4kPW5ldyBlLkxpdGVyYWwoZ1tpXSk7YnJlYWs7Y2FzZSAyNzp0aGlzLiQ9bmV3IGUuTGl0ZXJhbChnW2ldKTticmVhaztjYXNlIDI4OnRoaXMuJD1uZXcgZS5MaXRlcmFsKGdbaV0pO2JyZWFrO2Nhc2UgMjk6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSAzMDp0aGlzLiQ9bmV3IGUuTGl0ZXJhbChnW2ldKTticmVhaztjYXNlIDMxOnRoaXMuJD1uZXcgZS5MaXRlcmFsKGdbaV0pO2JyZWFrO2Nhc2UgMzI6dGhpcy4kPW5ldyBlLkxpdGVyYWwoZ1tpXSk7YnJlYWs7Y2FzZSAzMzp0aGlzLiQ9ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4gYT1uZXcgZS5MaXRlcmFsKGdbaV0pLGdbaV09PT0idW5kZWZpbmVkIiYmKGEuaXNVbmRlZmluZWQ9ITApLGF9KCk7YnJlYWs7Y2FzZSAzNDp0aGlzLiQ9bmV3IGUuQXNzaWduKGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDM1OnRoaXMuJD1uZXcgZS5Bc3NpZ24oZ1tpLTNdLGdbaV0pO2JyZWFrO2Nhc2UgMzY6dGhpcy4kPW5ldyBlLkFzc2lnbihnW2ktNF0sZ1tpLTFdKTticmVhaztjYXNlIDM3OnRoaXMuJD1uZXcgZS5WYWx1ZShnW2ldKTticmVhaztjYXNlIDM4OnRoaXMuJD1uZXcgZS5Bc3NpZ24obmV3IGUuVmFsdWUoZ1tpLTJdKSxnW2ldLCJvYmplY3QiKTticmVhaztjYXNlIDM5OnRoaXMuJD1uZXcgZS5Bc3NpZ24obmV3IGUuVmFsdWUoZ1tpLTRdKSxnW2ktMV0sIm9iamVjdCIpO2JyZWFrO2Nhc2UgNDA6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSA0MTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDQyOnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgNDM6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSA0NDp0aGlzLiQ9bmV3IGUuUmV0dXJuKGdbaV0pO2JyZWFrO2Nhc2UgNDU6dGhpcy4kPW5ldyBlLlJldHVybjticmVhaztjYXNlIDQ2OnRoaXMuJD1uZXcgZS5Db21tZW50KGdbaV0pO2JyZWFrO2Nhc2UgNDc6dGhpcy4kPW5ldyBlLkNvZGUoZ1tpLTNdLGdbaV0sZ1tpLTFdKTticmVhaztjYXNlIDQ4OnRoaXMuJD1uZXcgZS5Db2RlKFtdLGdbaV0sZ1tpLTFdKTticmVhaztjYXNlIDQ5OnRoaXMuJD0iZnVuYyI7YnJlYWs7Y2FzZSA1MDp0aGlzLiQ9ImJvdW5kZnVuYyI7YnJlYWs7Y2FzZSA1MTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDUyOnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgNTM6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNTQ6dGhpcy4kPVtnW2ldXTticmVhaztjYXNlIDU1OnRoaXMuJD1nW2ktMl0uY29uY2F0KGdbaV0pO2JyZWFrO2Nhc2UgNTY6dGhpcy4kPW5ldyBlLlBhcmFtKGdbaV0pO2JyZWFrO2Nhc2UgNTc6dGhpcy4kPW5ldyBlLlBhcmFtKGdbaS0xXSxudWxsLCEwKTticmVhaztjYXNlIDU4OnRoaXMuJD1uZXcgZS5QYXJhbShnW2ktMl0sZ1tpXSk7YnJlYWs7Y2FzZSA1OTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDYwOnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgNjE6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSA2Mjp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDYzOnRoaXMuJD1uZXcgZS5TcGxhdChnW2ktMV0pO2JyZWFrO2Nhc2UgNjQ6dGhpcy4kPW5ldyBlLlZhbHVlKGdbaV0pO2JyZWFrO2Nhc2UgNjU6dGhpcy4kPWdbaS0xXS5hZGQoZ1tpXSk7YnJlYWs7Y2FzZSA2Njp0aGlzLiQ9bmV3IGUuVmFsdWUoZ1tpLTFdLFtdLmNvbmNhdChnW2ldKSk7YnJlYWs7Y2FzZSA2Nzp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDY4OnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgNjk6dGhpcy4kPW5ldyBlLlZhbHVlKGdbaV0pO2JyZWFrO2Nhc2UgNzA6dGhpcy4kPW5ldyBlLlZhbHVlKGdbaV0pO2JyZWFrO2Nhc2UgNzE6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSA3Mjp0aGlzLiQ9bmV3IGUuVmFsdWUoZ1tpXSk7YnJlYWs7Y2FzZSA3Mzp0aGlzLiQ9bmV3IGUuVmFsdWUoZ1tpXSk7YnJlYWs7Y2FzZSA3NDp0aGlzLiQ9bmV3IGUuVmFsdWUoZ1tpXSk7YnJlYWs7Y2FzZSA3NTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDc2OnRoaXMuJD1uZXcgZS5BY2Nlc3MoZ1tpXSk7YnJlYWs7Y2FzZSA3Nzp0aGlzLiQ9bmV3IGUuQWNjZXNzKGdbaV0sInNvYWsiKTticmVhaztjYXNlIDc4OnRoaXMuJD1bbmV3IGUuQWNjZXNzKG5ldyBlLkxpdGVyYWwoInByb3RvdHlwZSIpKSxuZXcgZS5BY2Nlc3MoZ1tpXSldO2JyZWFrO2Nhc2UgNzk6dGhpcy4kPW5ldyBlLkFjY2VzcyhuZXcgZS5MaXRlcmFsKCJwcm90b3R5cGUiKSk7YnJlYWs7Y2FzZSA4MDp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDgxOnRoaXMuJD1nW2ktMV07YnJlYWs7Y2FzZSA4Mjp0aGlzLiQ9ZS5leHRlbmQoZ1tpXSx7c29hazohMH0pO2JyZWFrO2Nhc2UgODM6dGhpcy4kPW5ldyBlLkluZGV4KGdbaV0pO2JyZWFrO2Nhc2UgODQ6dGhpcy4kPW5ldyBlLlNsaWNlKGdbaV0pO2JyZWFrO2Nhc2UgODU6dGhpcy4kPW5ldyBlLk9iaihnW2ktMl0sZ1tpLTNdLmdlbmVyYXRlZCk7YnJlYWs7Y2FzZSA4Njp0aGlzLiQ9W107YnJlYWs7Y2FzZSA4Nzp0aGlzLiQ9W2dbaV1dO2JyZWFrO2Nhc2UgODg6dGhpcy4kPWdbaS0yXS5jb25jYXQoZ1tpXSk7YnJlYWs7Y2FzZSA4OTp0aGlzLiQ9Z1tpLTNdLmNvbmNhdChnW2ldKTticmVhaztjYXNlIDkwOnRoaXMuJD1nW2ktNV0uY29uY2F0KGdbaS0yXSk7YnJlYWs7Y2FzZSA5MTp0aGlzLiQ9bmV3IGUuQ2xhc3M7YnJlYWs7Y2FzZSA5Mjp0aGlzLiQ9bmV3IGUuQ2xhc3MobnVsbCxudWxsLGdbaV0pO2JyZWFrO2Nhc2UgOTM6dGhpcy4kPW5ldyBlLkNsYXNzKG51bGwsZ1tpXSk7YnJlYWs7Y2FzZSA5NDp0aGlzLiQ9bmV3IGUuQ2xhc3MobnVsbCxnW2ktMV0sZ1tpXSk7YnJlYWs7Y2FzZSA5NTp0aGlzLiQ9bmV3IGUuQ2xhc3MoZ1tpXSk7YnJlYWs7Y2FzZSA5Njp0aGlzLiQ9bmV3IGUuQ2xhc3MoZ1tpLTFdLG51bGwsZ1tpXSk7YnJlYWs7Y2FzZSA5Nzp0aGlzLiQ9bmV3IGUuQ2xhc3MoZ1tpLTJdLGdbaV0pO2JyZWFrO2Nhc2UgOTg6dGhpcy4kPW5ldyBlLkNsYXNzKGdbaS0zXSxnW2ktMV0sZ1tpXSk7YnJlYWs7Y2FzZSA5OTp0aGlzLiQ9bmV3IGUuQ2FsbChnW2ktMl0sZ1tpXSxnW2ktMV0pO2JyZWFrO2Nhc2UgMTAwOnRoaXMuJD1uZXcgZS5DYWxsKGdbaS0yXSxnW2ldLGdbaS0xXSk7YnJlYWs7Y2FzZSAxMDE6dGhpcy4kPW5ldyBlLkNhbGwoInN1cGVyIixbbmV3IGUuU3BsYXQobmV3IGUuTGl0ZXJhbCgiYXJndW1lbnRzIikpXSk7YnJlYWs7Y2FzZSAxMDI6dGhpcy4kPW5ldyBlLkNhbGwoInN1cGVyIixnW2ldKTticmVhaztjYXNlIDEwMzp0aGlzLiQ9ITE7YnJlYWs7Y2FzZSAxMDQ6dGhpcy4kPSEwO2JyZWFrO2Nhc2UgMTA1OnRoaXMuJD1bXTticmVhaztjYXNlIDEwNjp0aGlzLiQ9Z1tpLTJdO2JyZWFrO2Nhc2UgMTA3OnRoaXMuJD1uZXcgZS5WYWx1ZShuZXcgZS5MaXRlcmFsKCJ0aGlzIikpO2JyZWFrO2Nhc2UgMTA4OnRoaXMuJD1uZXcgZS5WYWx1ZShuZXcgZS5MaXRlcmFsKCJ0aGlzIikpO2JyZWFrO2Nhc2UgMTA5OnRoaXMuJD1uZXcgZS5WYWx1ZShuZXcgZS5MaXRlcmFsKCJ0aGlzIiksW25ldyBlLkFjY2VzcyhnW2ldKV0sInRoaXMiKTticmVhaztjYXNlIDExMDp0aGlzLiQ9bmV3IGUuQXJyKFtdKTticmVhaztjYXNlIDExMTp0aGlzLiQ9bmV3IGUuQXJyKGdbaS0yXSk7YnJlYWs7Y2FzZSAxMTI6dGhpcy4kPSJpbmNsdXNpdmUiO2JyZWFrO2Nhc2UgMTEzOnRoaXMuJD0iZXhjbHVzaXZlIjticmVhaztjYXNlIDExNDp0aGlzLiQ9bmV3IGUuUmFuZ2UoZ1tpLTNdLGdbaS0xXSxnW2ktMl0pO2JyZWFrO2Nhc2UgMTE1OnRoaXMuJD1uZXcgZS5SYW5nZShnW2ktMl0sZ1tpXSxnW2ktMV0pO2JyZWFrO2Nhc2UgMTE2OnRoaXMuJD1uZXcgZS5SYW5nZShnW2ktMV0sbnVsbCxnW2ldKTticmVhaztjYXNlIDExNzp0aGlzLiQ9bmV3IGUuUmFuZ2UobnVsbCxnW2ldLGdbaS0xXSk7YnJlYWs7Y2FzZSAxMTg6dGhpcy4kPW5ldyBlLlJhbmdlKG51bGwsbnVsbCxnW2ldKTticmVhaztjYXNlIDExOTp0aGlzLiQ9W2dbaV1dO2JyZWFrO2Nhc2UgMTIwOnRoaXMuJD1nW2ktMl0uY29uY2F0KGdbaV0pO2JyZWFrO2Nhc2UgMTIxOnRoaXMuJD1nW2ktM10uY29uY2F0KGdbaV0pO2JyZWFrO2Nhc2UgMTIyOnRoaXMuJD1nW2ktMl07YnJlYWs7Y2FzZSAxMjM6dGhpcy4kPWdbaS01XS5jb25jYXQoZ1tpLTJdKTticmVhaztjYXNlIDEyNDp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDEyNTp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDEyNjp0aGlzLiQ9Z1tpXTticmVhaztjYXNlIDEyNzp0aGlzLiQ9W10uY29uY2F0KGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDEyODp0aGlzLiQ9bmV3IGUuVHJ5KGdbaV0pO2JyZWFrO2Nhc2UgMTI5OnRoaXMuJD1uZXcgZS5UcnkoZ1tpLTFdLGdbaV1bMF0sZ1tpXVsxXSk7YnJlYWs7Y2FzZSAxMzA6dGhpcy4kPW5ldyBlLlRyeShnW2ktMl0sbnVsbCxudWxsLGdbaV0pO2JyZWFrO2Nhc2UgMTMxOnRoaXMuJD1uZXcgZS5UcnkoZ1tpLTNdLGdbaS0yXVswXSxnW2ktMl1bMV0sZ1tpXSk7YnJlYWs7Y2FzZSAxMzI6dGhpcy4kPVtnW2ktMV0sZ1tpXV07YnJlYWs7Y2FzZSAxMzM6dGhpcy4kPW5ldyBlLlRocm93KGdbaV0pO2JyZWFrO2Nhc2UgMTM0OnRoaXMuJD1uZXcgZS5QYXJlbnMoZ1tpLTFdKTticmVhaztjYXNlIDEzNTp0aGlzLiQ9bmV3IGUuUGFyZW5zKGdbaS0yXSk7YnJlYWs7Y2FzZSAxMzY6dGhpcy4kPW5ldyBlLldoaWxlKGdbaV0pO2JyZWFrO2Nhc2UgMTM3OnRoaXMuJD1uZXcgZS5XaGlsZShnW2ktMl0se2d1YXJkOmdbaV19KTticmVhaztjYXNlIDEzODp0aGlzLiQ9bmV3IGUuV2hpbGUoZ1tpXSx7aW52ZXJ0OiEwfSk7YnJlYWs7Y2FzZSAxMzk6dGhpcy4kPW5ldyBlLldoaWxlKGdbaS0yXSx7aW52ZXJ0OiEwLGd1YXJkOmdbaV19KTticmVhaztjYXNlIDE0MDp0aGlzLiQ9Z1tpLTFdLmFkZEJvZHkoZ1tpXSk7YnJlYWs7Y2FzZSAxNDE6dGhpcy4kPWdbaV0uYWRkQm9keShlLkJsb2NrLndyYXAoW2dbaS0xXV0pKTticmVhaztjYXNlIDE0Mjp0aGlzLiQ9Z1tpXS5hZGRCb2R5KGUuQmxvY2sud3JhcChbZ1tpLTFdXSkpO2JyZWFrO2Nhc2UgMTQzOnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMTQ0OnRoaXMuJD0obmV3IGUuV2hpbGUobmV3IGUuTGl0ZXJhbCgidHJ1ZSIpKSkuYWRkQm9keShnW2ldKTticmVhaztjYXNlIDE0NTp0aGlzLiQ9KG5ldyBlLldoaWxlKG5ldyBlLkxpdGVyYWwoInRydWUiKSkpLmFkZEJvZHkoZS5CbG9jay53cmFwKFtnW2ldXSkpO2JyZWFrO2Nhc2UgMTQ2OnRoaXMuJD1uZXcgZS5Gb3IoZ1tpLTFdLGdbaV0pO2JyZWFrO2Nhc2UgMTQ3OnRoaXMuJD1uZXcgZS5Gb3IoZ1tpLTFdLGdbaV0pO2JyZWFrO2Nhc2UgMTQ4OnRoaXMuJD1uZXcgZS5Gb3IoZ1tpXSxnW2ktMV0pO2JyZWFrO2Nhc2UgMTQ5OnRoaXMuJD17c291cmNlOm5ldyBlLlZhbHVlKGdbaV0pfTticmVhaztjYXNlIDE1MDp0aGlzLiQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ1tpXS5vd249Z1tpLTFdLm93bixnW2ldLm5hbWU9Z1tpLTFdWzBdLGdbaV0uaW5kZXg9Z1tpLTFdWzFdLGdbaV19KCk7YnJlYWs7Y2FzZSAxNTE6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSAxNTI6dGhpcy4kPWZ1bmN0aW9uKCl7cmV0dXJuIGdbaV0ub3duPSEwLGdbaV19KCk7YnJlYWs7Y2FzZSAxNTM6dGhpcy4kPWdbaV07YnJlYWs7Y2FzZSAxNTQ6dGhpcy4kPW5ldyBlLlZhbHVlKGdbaV0pO2JyZWFrO2Nhc2UgMTU1OnRoaXMuJD1uZXcgZS5WYWx1ZShnW2ldKTticmVhaztjYXNlIDE1Njp0aGlzLiQ9W2dbaV1dO2JyZWFrO2Nhc2UgMTU3OnRoaXMuJD1bZ1tpLTJdLGdbaV1dO2JyZWFrO2Nhc2UgMTU4OnRoaXMuJD17c291cmNlOmdbaV19O2JyZWFrO2Nhc2UgMTU5OnRoaXMuJD17c291cmNlOmdbaV0sb2JqZWN0OiEwfTticmVhaztjYXNlIDE2MDp0aGlzLiQ9e3NvdXJjZTpnW2ktMl0sZ3VhcmQ6Z1tpXX07YnJlYWs7Y2FzZSAxNjE6dGhpcy4kPXtzb3VyY2U6Z1tpLTJdLGd1YXJkOmdbaV0sb2JqZWN0OiEwfTticmVhaztjYXNlIDE2Mjp0aGlzLiQ9e3NvdXJjZTpnW2ktMl0sc3RlcDpnW2ldfTticmVhaztjYXNlIDE2Mzp0aGlzLiQ9e3NvdXJjZTpnW2ktNF0sZ3VhcmQ6Z1tpLTJdLHN0ZXA6Z1tpXX07YnJlYWs7Y2FzZSAxNjQ6dGhpcy4kPXtzb3VyY2U6Z1tpLTRdLHN0ZXA6Z1tpLTJdLGd1YXJkOmdbaV19O2JyZWFrO2Nhc2UgMTY1OnRoaXMuJD1uZXcgZS5Td2l0Y2goZ1tpLTNdLGdbaS0xXSk7YnJlYWs7Y2FzZSAxNjY6dGhpcy4kPW5ldyBlLlN3aXRjaChnW2ktNV0sZ1tpLTNdLGdbaS0xXSk7YnJlYWs7Y2FzZSAxNjc6dGhpcy4kPW5ldyBlLlN3aXRjaChudWxsLGdbaS0xXSk7YnJlYWs7Y2FzZSAxNjg6dGhpcy4kPW5ldyBlLlN3aXRjaChudWxsLGdbaS0zXSxnW2ktMV0pO2JyZWFrO2Nhc2UgMTY5OnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMTcwOnRoaXMuJD1nW2ktMV0uY29uY2F0KGdbaV0pO2JyZWFrO2Nhc2UgMTcxOnRoaXMuJD1bW2dbaS0xXSxnW2ldXV07YnJlYWs7Y2FzZSAxNzI6dGhpcy4kPVtbZ1tpLTJdLGdbaS0xXV1dO2JyZWFrO2Nhc2UgMTczOnRoaXMuJD1uZXcgZS5JZihnW2ktMV0sZ1tpXSx7dHlwZTpnW2ktMl19KTticmVhaztjYXNlIDE3NDp0aGlzLiQ9Z1tpLTRdLmFkZEVsc2UobmV3IGUuSWYoZ1tpLTFdLGdbaV0se3R5cGU6Z1tpLTJdfSkpO2JyZWFrO2Nhc2UgMTc1OnRoaXMuJD1nW2ldO2JyZWFrO2Nhc2UgMTc2OnRoaXMuJD1nW2ktMl0uYWRkRWxzZShnW2ldKTticmVhaztjYXNlIDE3Nzp0aGlzLiQ9bmV3IGUuSWYoZ1tpXSxlLkJsb2NrLndyYXAoW2dbaS0yXV0pLHt0eXBlOmdbaS0xXSxzdGF0ZW1lbnQ6ITB9KTticmVhaztjYXNlIDE3ODp0aGlzLiQ9bmV3IGUuSWYoZ1tpXSxlLkJsb2NrLndyYXAoW2dbaS0yXV0pLHt0eXBlOmdbaS0xXSxzdGF0ZW1lbnQ6ITB9KTticmVhaztjYXNlIDE3OTp0aGlzLiQ9bmV3IGUuT3AoZ1tpLTFdLGdbaV0pO2JyZWFrO2Nhc2UgMTgwOnRoaXMuJD1uZXcgZS5PcCgiLSIsZ1tpXSk7YnJlYWs7Y2FzZSAxODE6dGhpcy4kPW5ldyBlLk9wKCIrIixnW2ldKTticmVhaztjYXNlIDE4Mjp0aGlzLiQ9bmV3IGUuT3AoIi0tIixnW2ldKTticmVhaztjYXNlIDE4Mzp0aGlzLiQ9bmV3IGUuT3AoIisrIixnW2ldKTticmVhaztjYXNlIDE4NDp0aGlzLiQ9bmV3IGUuT3AoIi0tIixnW2ktMV0sbnVsbCwhMCk7YnJlYWs7Y2FzZSAxODU6dGhpcy4kPW5ldyBlLk9wKCIrKyIsZ1tpLTFdLG51bGwsITApO2JyZWFrO2Nhc2UgMTg2OnRoaXMuJD1uZXcgZS5FeGlzdGVuY2UoZ1tpLTFdKTticmVhaztjYXNlIDE4Nzp0aGlzLiQ9bmV3IGUuT3AoIisiLGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDE4ODp0aGlzLiQ9bmV3IGUuT3AoIi0iLGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDE4OTp0aGlzLiQ9bmV3IGUuT3AoZ1tpLTFdLGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDE5MDp0aGlzLiQ9bmV3IGUuT3AoZ1tpLTFdLGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDE5MTp0aGlzLiQ9bmV3IGUuT3AoZ1tpLTFdLGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDE5Mjp0aGlzLiQ9bmV3IGUuT3AoZ1tpLTFdLGdbaS0yXSxnW2ldKTticmVhaztjYXNlIDE5Mzp0aGlzLiQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ1tpLTFdLmNoYXJBdCgwKT09PSIhIj8obmV3IGUuT3AoZ1tpLTFdLnNsaWNlKDEpLGdbaS0yXSxnW2ldKSkuaW52ZXJ0KCk6bmV3IGUuT3AoZ1tpLTFdLGdbaS0yXSxnW2ldKX0oKTticmVhaztjYXNlIDE5NDp0aGlzLiQ9bmV3IGUuQXNzaWduKGdbaS0yXSxnW2ldLGdbaS0xXSk7YnJlYWs7Y2FzZSAxOTU6dGhpcy4kPW5ldyBlLkFzc2lnbihnW2ktNF0sZ1tpLTFdLGdbaS0zXSk7YnJlYWs7Y2FzZSAxOTY6dGhpcy4kPW5ldyBlLkV4dGVuZHMoZ1tpLTJdLGdbaV0pfX0sdGFibGU6W3sxOlsyLDFdLDM6MSw0OjIsNTozLDc6NCw4OjYsOTo3LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsNV0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlszXX0sezE6WzIsMl0sNjpbMSw3Ml19LHs2OlsxLDczXX0sezE6WzIsNF0sNjpbMiw0XSwyNjpbMiw0XSw5OTpbMiw0XX0sezQ6NzUsNzo0LDg6Niw5OjcsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNjpbMSw3NF0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDddLDY6WzIsN10sMjY6WzIsN10sOTk6WzIsN10sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDhdLDY6WzIsOF0sMjY6WzIsOF0sOTk6WzIsOF0sMTAwOjg4LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODksMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg3XX0sezE6WzIsMTJdLDY6WzIsMTJdLDI1OlsyLDEyXSwyNjpbMiwxMl0sNDc6WzIsMTJdLDUyOlsyLDEyXSw1NTpbMiwxMl0sNjA6OTEsNjQ6WzEsOTNdLDY1OlsxLDk0XSw2NjpbMSw5NV0sNjc6OTYsNjg6WzEsOTddLDcwOlsyLDEyXSw3MTpbMSw5OF0sNzU6WzIsMTJdLDc4OjkwLDgxOlsxLDkyXSw4MjpbMiwxMDNdLDgzOlsyLDEyXSw4ODpbMiwxMl0sOTA6WzIsMTJdLDk5OlsyLDEyXSwxMDE6WzIsMTJdLDEwMjpbMiwxMl0sMTAzOlsyLDEyXSwxMDc6WzIsMTJdLDExNTpbMiwxMl0sMTIzOlsyLDEyXSwxMjU6WzIsMTJdLDEyNjpbMiwxMl0sMTI5OlsyLDEyXSwxMzA6WzIsMTJdLDEzMTpbMiwxMl0sMTMyOlsyLDEyXSwxMzM6WzIsMTJdLDEzNDpbMiwxMl19LHsxOlsyLDEzXSw2OlsyLDEzXSwyNTpbMiwxM10sMjY6WzIsMTNdLDQ3OlsyLDEzXSw1MjpbMiwxM10sNTU6WzIsMTNdLDYwOjEwMCw2NDpbMSw5M10sNjU6WzEsOTRdLDY2OlsxLDk1XSw2Nzo5Niw2ODpbMSw5N10sNzA6WzIsMTNdLDcxOlsxLDk4XSw3NTpbMiwxM10sNzg6OTksODE6WzEsOTJdLDgyOlsyLDEwM10sODM6WzIsMTNdLDg4OlsyLDEzXSw5MDpbMiwxM10sOTk6WzIsMTNdLDEwMTpbMiwxM10sMTAyOlsyLDEzXSwxMDM6WzIsMTNdLDEwNzpbMiwxM10sMTE1OlsyLDEzXSwxMjM6WzIsMTNdLDEyNTpbMiwxM10sMTI2OlsyLDEzXSwxMjk6WzIsMTNdLDEzMDpbMiwxM10sMTMxOlsyLDEzXSwxMzI6WzIsMTNdLDEzMzpbMiwxM10sMTM0OlsyLDEzXX0sezE6WzIsMTRdLDY6WzIsMTRdLDI1OlsyLDE0XSwyNjpbMiwxNF0sNDc6WzIsMTRdLDUyOlsyLDE0XSw1NTpbMiwxNF0sNzA6WzIsMTRdLDc1OlsyLDE0XSw4MzpbMiwxNF0sODg6WzIsMTRdLDkwOlsyLDE0XSw5OTpbMiwxNF0sMTAxOlsyLDE0XSwxMDI6WzIsMTRdLDEwMzpbMiwxNF0sMTA3OlsyLDE0XSwxMTU6WzIsMTRdLDEyMzpbMiwxNF0sMTI1OlsyLDE0XSwxMjY6WzIsMTRdLDEyOTpbMiwxNF0sMTMwOlsyLDE0XSwxMzE6WzIsMTRdLDEzMjpbMiwxNF0sMTMzOlsyLDE0XSwxMzQ6WzIsMTRdfSx7MTpbMiwxNV0sNjpbMiwxNV0sMjU6WzIsMTVdLDI2OlsyLDE1XSw0NzpbMiwxNV0sNTI6WzIsMTVdLDU1OlsyLDE1XSw3MDpbMiwxNV0sNzU6WzIsMTVdLDgzOlsyLDE1XSw4ODpbMiwxNV0sOTA6WzIsMTVdLDk5OlsyLDE1XSwxMDE6WzIsMTVdLDEwMjpbMiwxNV0sMTAzOlsyLDE1XSwxMDc6WzIsMTVdLDExNTpbMiwxNV0sMTIzOlsyLDE1XSwxMjU6WzIsMTVdLDEyNjpbMiwxNV0sMTI5OlsyLDE1XSwxMzA6WzIsMTVdLDEzMTpbMiwxNV0sMTMyOlsyLDE1XSwxMzM6WzIsMTVdLDEzNDpbMiwxNV19LHsxOlsyLDE2XSw2OlsyLDE2XSwyNTpbMiwxNl0sMjY6WzIsMTZdLDQ3OlsyLDE2XSw1MjpbMiwxNl0sNTU6WzIsMTZdLDcwOlsyLDE2XSw3NTpbMiwxNl0sODM6WzIsMTZdLDg4OlsyLDE2XSw5MDpbMiwxNl0sOTk6WzIsMTZdLDEwMTpbMiwxNl0sMTAyOlsyLDE2XSwxMDM6WzIsMTZdLDEwNzpbMiwxNl0sMTE1OlsyLDE2XSwxMjM6WzIsMTZdLDEyNTpbMiwxNl0sMTI2OlsyLDE2XSwxMjk6WzIsMTZdLDEzMDpbMiwxNl0sMTMxOlsyLDE2XSwxMzI6WzIsMTZdLDEzMzpbMiwxNl0sMTM0OlsyLDE2XX0sezE6WzIsMTddLDY6WzIsMTddLDI1OlsyLDE3XSwyNjpbMiwxN10sNDc6WzIsMTddLDUyOlsyLDE3XSw1NTpbMiwxN10sNzA6WzIsMTddLDc1OlsyLDE3XSw4MzpbMiwxN10sODg6WzIsMTddLDkwOlsyLDE3XSw5OTpbMiwxN10sMTAxOlsyLDE3XSwxMDI6WzIsMTddLDEwMzpbMiwxN10sMTA3OlsyLDE3XSwxMTU6WzIsMTddLDEyMzpbMiwxN10sMTI1OlsyLDE3XSwxMjY6WzIsMTddLDEyOTpbMiwxN10sMTMwOlsyLDE3XSwxMzE6WzIsMTddLDEzMjpbMiwxN10sMTMzOlsyLDE3XSwxMzQ6WzIsMTddfSx7MTpbMiwxOF0sNjpbMiwxOF0sMjU6WzIsMThdLDI2OlsyLDE4XSw0NzpbMiwxOF0sNTI6WzIsMThdLDU1OlsyLDE4XSw3MDpbMiwxOF0sNzU6WzIsMThdLDgzOlsyLDE4XSw4ODpbMiwxOF0sOTA6WzIsMThdLDk5OlsyLDE4XSwxMDE6WzIsMThdLDEwMjpbMiwxOF0sMTAzOlsyLDE4XSwxMDc6WzIsMThdLDExNTpbMiwxOF0sMTIzOlsyLDE4XSwxMjU6WzIsMThdLDEyNjpbMiwxOF0sMTI5OlsyLDE4XSwxMzA6WzIsMThdLDEzMTpbMiwxOF0sMTMyOlsyLDE4XSwxMzM6WzIsMThdLDEzNDpbMiwxOF19LHsxOlsyLDE5XSw2OlsyLDE5XSwyNTpbMiwxOV0sMjY6WzIsMTldLDQ3OlsyLDE5XSw1MjpbMiwxOV0sNTU6WzIsMTldLDcwOlsyLDE5XSw3NTpbMiwxOV0sODM6WzIsMTldLDg4OlsyLDE5XSw5MDpbMiwxOV0sOTk6WzIsMTldLDEwMTpbMiwxOV0sMTAyOlsyLDE5XSwxMDM6WzIsMTldLDEwNzpbMiwxOV0sMTE1OlsyLDE5XSwxMjM6WzIsMTldLDEyNTpbMiwxOV0sMTI2OlsyLDE5XSwxMjk6WzIsMTldLDEzMDpbMiwxOV0sMTMxOlsyLDE5XSwxMzI6WzIsMTldLDEzMzpbMiwxOV0sMTM0OlsyLDE5XX0sezE6WzIsMjBdLDY6WzIsMjBdLDI1OlsyLDIwXSwyNjpbMiwyMF0sNDc6WzIsMjBdLDUyOlsyLDIwXSw1NTpbMiwyMF0sNzA6WzIsMjBdLDc1OlsyLDIwXSw4MzpbMiwyMF0sODg6WzIsMjBdLDkwOlsyLDIwXSw5OTpbMiwyMF0sMTAxOlsyLDIwXSwxMDI6WzIsMjBdLDEwMzpbMiwyMF0sMTA3OlsyLDIwXSwxMTU6WzIsMjBdLDEyMzpbMiwyMF0sMTI1OlsyLDIwXSwxMjY6WzIsMjBdLDEyOTpbMiwyMF0sMTMwOlsyLDIwXSwxMzE6WzIsMjBdLDEzMjpbMiwyMF0sMTMzOlsyLDIwXSwxMzQ6WzIsMjBdfSx7MTpbMiwyMV0sNjpbMiwyMV0sMjU6WzIsMjFdLDI2OlsyLDIxXSw0NzpbMiwyMV0sNTI6WzIsMjFdLDU1OlsyLDIxXSw3MDpbMiwyMV0sNzU6WzIsMjFdLDgzOlsyLDIxXSw4ODpbMiwyMV0sOTA6WzIsMjFdLDk5OlsyLDIxXSwxMDE6WzIsMjFdLDEwMjpbMiwyMV0sMTAzOlsyLDIxXSwxMDc6WzIsMjFdLDExNTpbMiwyMV0sMTIzOlsyLDIxXSwxMjU6WzIsMjFdLDEyNjpbMiwyMV0sMTI5OlsyLDIxXSwxMzA6WzIsMjFdLDEzMTpbMiwyMV0sMTMyOlsyLDIxXSwxMzM6WzIsMjFdLDEzNDpbMiwyMV19LHsxOlsyLDIyXSw2OlsyLDIyXSwyNTpbMiwyMl0sMjY6WzIsMjJdLDQ3OlsyLDIyXSw1MjpbMiwyMl0sNTU6WzIsMjJdLDcwOlsyLDIyXSw3NTpbMiwyMl0sODM6WzIsMjJdLDg4OlsyLDIyXSw5MDpbMiwyMl0sOTk6WzIsMjJdLDEwMTpbMiwyMl0sMTAyOlsyLDIyXSwxMDM6WzIsMjJdLDEwNzpbMiwyMl0sMTE1OlsyLDIyXSwxMjM6WzIsMjJdLDEyNTpbMiwyMl0sMTI2OlsyLDIyXSwxMjk6WzIsMjJdLDEzMDpbMiwyMl0sMTMxOlsyLDIyXSwxMzI6WzIsMjJdLDEzMzpbMiwyMl0sMTM0OlsyLDIyXX0sezE6WzIsMjNdLDY6WzIsMjNdLDI1OlsyLDIzXSwyNjpbMiwyM10sNDc6WzIsMjNdLDUyOlsyLDIzXSw1NTpbMiwyM10sNzA6WzIsMjNdLDc1OlsyLDIzXSw4MzpbMiwyM10sODg6WzIsMjNdLDkwOlsyLDIzXSw5OTpbMiwyM10sMTAxOlsyLDIzXSwxMDI6WzIsMjNdLDEwMzpbMiwyM10sMTA3OlsyLDIzXSwxMTU6WzIsMjNdLDEyMzpbMiwyM10sMTI1OlsyLDIzXSwxMjY6WzIsMjNdLDEyOTpbMiwyM10sMTMwOlsyLDIzXSwxMzE6WzIsMjNdLDEzMjpbMiwyM10sMTMzOlsyLDIzXSwxMzQ6WzIsMjNdfSx7MTpbMiw5XSw2OlsyLDldLDI2OlsyLDldLDk5OlsyLDldLDEwMTpbMiw5XSwxMDM6WzIsOV0sMTA3OlsyLDldLDEyMzpbMiw5XX0sezE6WzIsMTBdLDY6WzIsMTBdLDI2OlsyLDEwXSw5OTpbMiwxMF0sMTAxOlsyLDEwXSwxMDM6WzIsMTBdLDEwNzpbMiwxMF0sMTIzOlsyLDEwXX0sezE6WzIsMTFdLDY6WzIsMTFdLDI2OlsyLDExXSw5OTpbMiwxMV0sMTAxOlsyLDExXSwxMDM6WzIsMTFdLDEwNzpbMiwxMV0sMTIzOlsyLDExXX0sezE6WzIsNzFdLDY6WzIsNzFdLDI1OlsyLDcxXSwyNjpbMiw3MV0sMzg6WzEsMTAxXSw0NzpbMiw3MV0sNTI6WzIsNzFdLDU1OlsyLDcxXSw2NDpbMiw3MV0sNjU6WzIsNzFdLDY2OlsyLDcxXSw2ODpbMiw3MV0sNzA6WzIsNzFdLDcxOlsyLDcxXSw3NTpbMiw3MV0sODE6WzIsNzFdLDgyOlsyLDcxXSw4MzpbMiw3MV0sODg6WzIsNzFdLDkwOlsyLDcxXSw5OTpbMiw3MV0sMTAxOlsyLDcxXSwxMDI6WzIsNzFdLDEwMzpbMiw3MV0sMTA3OlsyLDcxXSwxMTU6WzIsNzFdLDEyMzpbMiw3MV0sMTI1OlsyLDcxXSwxMjY6WzIsNzFdLDEyOTpbMiw3MV0sMTMwOlsyLDcxXSwxMzE6WzIsNzFdLDEzMjpbMiw3MV0sMTMzOlsyLDcxXSwxMzQ6WzIsNzFdfSx7MTpbMiw3Ml0sNjpbMiw3Ml0sMjU6WzIsNzJdLDI2OlsyLDcyXSw0NzpbMiw3Ml0sNTI6WzIsNzJdLDU1OlsyLDcyXSw2NDpbMiw3Ml0sNjU6WzIsNzJdLDY2OlsyLDcyXSw2ODpbMiw3Ml0sNzA6WzIsNzJdLDcxOlsyLDcyXSw3NTpbMiw3Ml0sODE6WzIsNzJdLDgyOlsyLDcyXSw4MzpbMiw3Ml0sODg6WzIsNzJdLDkwOlsyLDcyXSw5OTpbMiw3Ml0sMTAxOlsyLDcyXSwxMDI6WzIsNzJdLDEwMzpbMiw3Ml0sMTA3OlsyLDcyXSwxMTU6WzIsNzJdLDEyMzpbMiw3Ml0sMTI1OlsyLDcyXSwxMjY6WzIsNzJdLDEyOTpbMiw3Ml0sMTMwOlsyLDcyXSwxMzE6WzIsNzJdLDEzMjpbMiw3Ml0sMTMzOlsyLDcyXSwxMzQ6WzIsNzJdfSx7MTpbMiw3M10sNjpbMiw3M10sMjU6WzIsNzNdLDI2OlsyLDczXSw0NzpbMiw3M10sNTI6WzIsNzNdLDU1OlsyLDczXSw2NDpbMiw3M10sNjU6WzIsNzNdLDY2OlsyLDczXSw2ODpbMiw3M10sNzA6WzIsNzNdLDcxOlsyLDczXSw3NTpbMiw3M10sODE6WzIsNzNdLDgyOlsyLDczXSw4MzpbMiw3M10sODg6WzIsNzNdLDkwOlsyLDczXSw5OTpbMiw3M10sMTAxOlsyLDczXSwxMDI6WzIsNzNdLDEwMzpbMiw3M10sMTA3OlsyLDczXSwxMTU6WzIsNzNdLDEyMzpbMiw3M10sMTI1OlsyLDczXSwxMjY6WzIsNzNdLDEyOTpbMiw3M10sMTMwOlsyLDczXSwxMzE6WzIsNzNdLDEzMjpbMiw3M10sMTMzOlsyLDczXSwxMzQ6WzIsNzNdfSx7MTpbMiw3NF0sNjpbMiw3NF0sMjU6WzIsNzRdLDI2OlsyLDc0XSw0NzpbMiw3NF0sNTI6WzIsNzRdLDU1OlsyLDc0XSw2NDpbMiw3NF0sNjU6WzIsNzRdLDY2OlsyLDc0XSw2ODpbMiw3NF0sNzA6WzIsNzRdLDcxOlsyLDc0XSw3NTpbMiw3NF0sODE6WzIsNzRdLDgyOlsyLDc0XSw4MzpbMiw3NF0sODg6WzIsNzRdLDkwOlsyLDc0XSw5OTpbMiw3NF0sMTAxOlsyLDc0XSwxMDI6WzIsNzRdLDEwMzpbMiw3NF0sMTA3OlsyLDc0XSwxMTU6WzIsNzRdLDEyMzpbMiw3NF0sMTI1OlsyLDc0XSwxMjY6WzIsNzRdLDEyOTpbMiw3NF0sMTMwOlsyLDc0XSwxMzE6WzIsNzRdLDEzMjpbMiw3NF0sMTMzOlsyLDc0XSwxMzQ6WzIsNzRdfSx7MTpbMiw3NV0sNjpbMiw3NV0sMjU6WzIsNzVdLDI2OlsyLDc1XSw0NzpbMiw3NV0sNTI6WzIsNzVdLDU1OlsyLDc1XSw2NDpbMiw3NV0sNjU6WzIsNzVdLDY2OlsyLDc1XSw2ODpbMiw3NV0sNzA6WzIsNzVdLDcxOlsyLDc1XSw3NTpbMiw3NV0sODE6WzIsNzVdLDgyOlsyLDc1XSw4MzpbMiw3NV0sODg6WzIsNzVdLDkwOlsyLDc1XSw5OTpbMiw3NV0sMTAxOlsyLDc1XSwxMDI6WzIsNzVdLDEwMzpbMiw3NV0sMTA3OlsyLDc1XSwxMTU6WzIsNzVdLDEyMzpbMiw3NV0sMTI1OlsyLDc1XSwxMjY6WzIsNzVdLDEyOTpbMiw3NV0sMTMwOlsyLDc1XSwxMzE6WzIsNzVdLDEzMjpbMiw3NV0sMTMzOlsyLDc1XSwxMzQ6WzIsNzVdfSx7MTpbMiwxMDFdLDY6WzIsMTAxXSwyNTpbMiwxMDFdLDI2OlsyLDEwMV0sNDc6WzIsMTAxXSw1MjpbMiwxMDFdLDU1OlsyLDEwMV0sNjQ6WzIsMTAxXSw2NTpbMiwxMDFdLDY2OlsyLDEwMV0sNjg6WzIsMTAxXSw3MDpbMiwxMDFdLDcxOlsyLDEwMV0sNzU6WzIsMTAxXSw3OToxMDIsODE6WzIsMTAxXSw4MjpbMSwxMDNdLDgzOlsyLDEwMV0sODg6WzIsMTAxXSw5MDpbMiwxMDFdLDk5OlsyLDEwMV0sMTAxOlsyLDEwMV0sMTAyOlsyLDEwMV0sMTAzOlsyLDEwMV0sMTA3OlsyLDEwMV0sMTE1OlsyLDEwMV0sMTIzOlsyLDEwMV0sMTI1OlsyLDEwMV0sMTI2OlsyLDEwMV0sMTI5OlsyLDEwMV0sMTMwOlsyLDEwMV0sMTMxOlsyLDEwMV0sMTMyOlsyLDEwMV0sMTMzOlsyLDEwMV0sMTM0OlsyLDEwMV19LHsyNzoxMDcsMjg6WzEsNzFdLDQyOjEwOCw0NjoxMDQsNDc6WzIsNTNdLDUyOlsyLDUzXSw1MzoxMDUsNTQ6MTA2LDU2OjEwOSw1NzoxMTAsNzM6WzEsNjhdLDg2OlsxLDExMV0sODc6WzEsMTEyXX0sezU6MTEzLDI1OlsxLDVdfSx7ODoxMTQsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTE2LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjExNyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTM6MTE5LDE0OjEyMCwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MTIxLDQyOjYxLDU2OjQ3LDU3OjQ4LDU5OjExOCw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDk4OlsxLDU0XX0sezEzOjExOSwxNDoxMjAsMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjEyMSw0Mjo2MSw1Njo0Nyw1Nzo0OCw1OToxMjIsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5ODpbMSw1NF19LHsxOlsyLDY4XSw2OlsyLDY4XSwyNTpbMiw2OF0sMjY6WzIsNjhdLDM4OlsyLDY4XSw0NzpbMiw2OF0sNTI6WzIsNjhdLDU1OlsyLDY4XSw2NDpbMiw2OF0sNjU6WzIsNjhdLDY2OlsyLDY4XSw2ODpbMiw2OF0sNzA6WzIsNjhdLDcxOlsyLDY4XSw3NTpbMiw2OF0sNzc6WzEsMTI2XSw4MTpbMiw2OF0sODI6WzIsNjhdLDgzOlsyLDY4XSw4ODpbMiw2OF0sOTA6WzIsNjhdLDk5OlsyLDY4XSwxMDE6WzIsNjhdLDEwMjpbMiw2OF0sMTAzOlsyLDY4XSwxMDc6WzIsNjhdLDExNTpbMiw2OF0sMTIzOlsyLDY4XSwxMjU6WzIsNjhdLDEyNjpbMiw2OF0sMTI3OlsxLDEyM10sMTI4OlsxLDEyNF0sMTI5OlsyLDY4XSwxMzA6WzIsNjhdLDEzMTpbMiw2OF0sMTMyOlsyLDY4XSwxMzM6WzIsNjhdLDEzNDpbMiw2OF0sMTM1OlsxLDEyNV19LHsxOlsyLDE3NV0sNjpbMiwxNzVdLDI1OlsyLDE3NV0sMjY6WzIsMTc1XSw0NzpbMiwxNzVdLDUyOlsyLDE3NV0sNTU6WzIsMTc1XSw3MDpbMiwxNzVdLDc1OlsyLDE3NV0sODM6WzIsMTc1XSw4ODpbMiwxNzVdLDkwOlsyLDE3NV0sOTk6WzIsMTc1XSwxMDE6WzIsMTc1XSwxMDI6WzIsMTc1XSwxMDM6WzIsMTc1XSwxMDc6WzIsMTc1XSwxMTU6WzIsMTc1XSwxMTg6WzEsMTI3XSwxMjM6WzIsMTc1XSwxMjU6WzIsMTc1XSwxMjY6WzIsMTc1XSwxMjk6WzIsMTc1XSwxMzA6WzIsMTc1XSwxMzE6WzIsMTc1XSwxMzI6WzIsMTc1XSwxMzM6WzIsMTc1XSwxMzQ6WzIsMTc1XX0sezU6MTI4LDI1OlsxLDVdfSx7NToxMjksMjU6WzEsNV19LHsxOlsyLDE0M10sNjpbMiwxNDNdLDI1OlsyLDE0M10sMjY6WzIsMTQzXSw0NzpbMiwxNDNdLDUyOlsyLDE0M10sNTU6WzIsMTQzXSw3MDpbMiwxNDNdLDc1OlsyLDE0M10sODM6WzIsMTQzXSw4ODpbMiwxNDNdLDkwOlsyLDE0M10sOTk6WzIsMTQzXSwxMDE6WzIsMTQzXSwxMDI6WzIsMTQzXSwxMDM6WzIsMTQzXSwxMDc6WzIsMTQzXSwxMTU6WzIsMTQzXSwxMjM6WzIsMTQzXSwxMjU6WzIsMTQzXSwxMjY6WzIsMTQzXSwxMjk6WzIsMTQzXSwxMzA6WzIsMTQzXSwxMzE6WzIsMTQzXSwxMzI6WzIsMTQzXSwxMzM6WzIsMTQzXSwxMzQ6WzIsMTQzXX0sezU6MTMwLDI1OlsxLDVdfSx7ODoxMzEsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNTpbMSwxMzJdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw5MV0sNToxMzMsNjpbMiw5MV0sMTM6MTE5LDE0OjEyMCwyNTpbMSw1XSwyNjpbMiw5MV0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjEyMSw0Mjo2MSw0NzpbMiw5MV0sNTI6WzIsOTFdLDU1OlsyLDkxXSw1Njo0Nyw1Nzo0OCw1OToxMzUsNjE6MjUsNjI6MjYsNjM6MjcsNzA6WzIsOTFdLDczOlsxLDY4XSw3NTpbMiw5MV0sNzc6WzEsMTM0XSw4MDpbMSwyOF0sODM6WzIsOTFdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDg4OlsyLDkxXSw5MDpbMiw5MV0sOTg6WzEsNTRdLDk5OlsyLDkxXSwxMDE6WzIsOTFdLDEwMjpbMiw5MV0sMTAzOlsyLDkxXSwxMDc6WzIsOTFdLDExNTpbMiw5MV0sMTIzOlsyLDkxXSwxMjU6WzIsOTFdLDEyNjpbMiw5MV0sMTI5OlsyLDkxXSwxMzA6WzIsOTFdLDEzMTpbMiw5MV0sMTMyOlsyLDkxXSwxMzM6WzIsOTFdLDEzNDpbMiw5MV19LHs4OjEzNiw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw0NV0sNjpbMiw0NV0sODoxMzcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNjpbMiw0NV0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sOTk6WzIsNDVdLDEwMDozOSwxMDE6WzIsNDVdLDEwMzpbMiw0NV0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMiw0NV0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTIzOlsyLDQ1XSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDQ2XSw2OlsyLDQ2XSwyNTpbMiw0Nl0sMjY6WzIsNDZdLDUyOlsyLDQ2XSw3NTpbMiw0Nl0sOTk6WzIsNDZdLDEwMTpbMiw0Nl0sMTAzOlsyLDQ2XSwxMDc6WzIsNDZdLDEyMzpbMiw0Nl19LHsxOlsyLDY5XSw2OlsyLDY5XSwyNTpbMiw2OV0sMjY6WzIsNjldLDM4OlsyLDY5XSw0NzpbMiw2OV0sNTI6WzIsNjldLDU1OlsyLDY5XSw2NDpbMiw2OV0sNjU6WzIsNjldLDY2OlsyLDY5XSw2ODpbMiw2OV0sNzA6WzIsNjldLDcxOlsyLDY5XSw3NTpbMiw2OV0sODE6WzIsNjldLDgyOlsyLDY5XSw4MzpbMiw2OV0sODg6WzIsNjldLDkwOlsyLDY5XSw5OTpbMiw2OV0sMTAxOlsyLDY5XSwxMDI6WzIsNjldLDEwMzpbMiw2OV0sMTA3OlsyLDY5XSwxMTU6WzIsNjldLDEyMzpbMiw2OV0sMTI1OlsyLDY5XSwxMjY6WzIsNjldLDEyOTpbMiw2OV0sMTMwOlsyLDY5XSwxMzE6WzIsNjldLDEzMjpbMiw2OV0sMTMzOlsyLDY5XSwxMzQ6WzIsNjldfSx7MTpbMiw3MF0sNjpbMiw3MF0sMjU6WzIsNzBdLDI2OlsyLDcwXSwzODpbMiw3MF0sNDc6WzIsNzBdLDUyOlsyLDcwXSw1NTpbMiw3MF0sNjQ6WzIsNzBdLDY1OlsyLDcwXSw2NjpbMiw3MF0sNjg6WzIsNzBdLDcwOlsyLDcwXSw3MTpbMiw3MF0sNzU6WzIsNzBdLDgxOlsyLDcwXSw4MjpbMiw3MF0sODM6WzIsNzBdLDg4OlsyLDcwXSw5MDpbMiw3MF0sOTk6WzIsNzBdLDEwMTpbMiw3MF0sMTAyOlsyLDcwXSwxMDM6WzIsNzBdLDEwNzpbMiw3MF0sMTE1OlsyLDcwXSwxMjM6WzIsNzBdLDEyNTpbMiw3MF0sMTI2OlsyLDcwXSwxMjk6WzIsNzBdLDEzMDpbMiw3MF0sMTMxOlsyLDcwXSwxMzI6WzIsNzBdLDEzMzpbMiw3MF0sMTM0OlsyLDcwXX0sezE6WzIsMjldLDY6WzIsMjldLDI1OlsyLDI5XSwyNjpbMiwyOV0sNDc6WzIsMjldLDUyOlsyLDI5XSw1NTpbMiwyOV0sNjQ6WzIsMjldLDY1OlsyLDI5XSw2NjpbMiwyOV0sNjg6WzIsMjldLDcwOlsyLDI5XSw3MTpbMiwyOV0sNzU6WzIsMjldLDgxOlsyLDI5XSw4MjpbMiwyOV0sODM6WzIsMjldLDg4OlsyLDI5XSw5MDpbMiwyOV0sOTk6WzIsMjldLDEwMTpbMiwyOV0sMTAyOlsyLDI5XSwxMDM6WzIsMjldLDEwNzpbMiwyOV0sMTE1OlsyLDI5XSwxMjM6WzIsMjldLDEyNTpbMiwyOV0sMTI2OlsyLDI5XSwxMjk6WzIsMjldLDEzMDpbMiwyOV0sMTMxOlsyLDI5XSwxMzI6WzIsMjldLDEzMzpbMiwyOV0sMTM0OlsyLDI5XX0sezE6WzIsMzBdLDY6WzIsMzBdLDI1OlsyLDMwXSwyNjpbMiwzMF0sNDc6WzIsMzBdLDUyOlsyLDMwXSw1NTpbMiwzMF0sNjQ6WzIsMzBdLDY1OlsyLDMwXSw2NjpbMiwzMF0sNjg6WzIsMzBdLDcwOlsyLDMwXSw3MTpbMiwzMF0sNzU6WzIsMzBdLDgxOlsyLDMwXSw4MjpbMiwzMF0sODM6WzIsMzBdLDg4OlsyLDMwXSw5MDpbMiwzMF0sOTk6WzIsMzBdLDEwMTpbMiwzMF0sMTAyOlsyLDMwXSwxMDM6WzIsMzBdLDEwNzpbMiwzMF0sMTE1OlsyLDMwXSwxMjM6WzIsMzBdLDEyNTpbMiwzMF0sMTI2OlsyLDMwXSwxMjk6WzIsMzBdLDEzMDpbMiwzMF0sMTMxOlsyLDMwXSwxMzI6WzIsMzBdLDEzMzpbMiwzMF0sMTM0OlsyLDMwXX0sezE6WzIsMzFdLDY6WzIsMzFdLDI1OlsyLDMxXSwyNjpbMiwzMV0sNDc6WzIsMzFdLDUyOlsyLDMxXSw1NTpbMiwzMV0sNjQ6WzIsMzFdLDY1OlsyLDMxXSw2NjpbMiwzMV0sNjg6WzIsMzFdLDcwOlsyLDMxXSw3MTpbMiwzMV0sNzU6WzIsMzFdLDgxOlsyLDMxXSw4MjpbMiwzMV0sODM6WzIsMzFdLDg4OlsyLDMxXSw5MDpbMiwzMV0sOTk6WzIsMzFdLDEwMTpbMiwzMV0sMTAyOlsyLDMxXSwxMDM6WzIsMzFdLDEwNzpbMiwzMV0sMTE1OlsyLDMxXSwxMjM6WzIsMzFdLDEyNTpbMiwzMV0sMTI2OlsyLDMxXSwxMjk6WzIsMzFdLDEzMDpbMiwzMV0sMTMxOlsyLDMxXSwxMzI6WzIsMzFdLDEzMzpbMiwzMV0sMTM0OlsyLDMxXX0sezE6WzIsMzJdLDY6WzIsMzJdLDI1OlsyLDMyXSwyNjpbMiwzMl0sNDc6WzIsMzJdLDUyOlsyLDMyXSw1NTpbMiwzMl0sNjQ6WzIsMzJdLDY1OlsyLDMyXSw2NjpbMiwzMl0sNjg6WzIsMzJdLDcwOlsyLDMyXSw3MTpbMiwzMl0sNzU6WzIsMzJdLDgxOlsyLDMyXSw4MjpbMiwzMl0sODM6WzIsMzJdLDg4OlsyLDMyXSw5MDpbMiwzMl0sOTk6WzIsMzJdLDEwMTpbMiwzMl0sMTAyOlsyLDMyXSwxMDM6WzIsMzJdLDEwNzpbMiwzMl0sMTE1OlsyLDMyXSwxMjM6WzIsMzJdLDEyNTpbMiwzMl0sMTI2OlsyLDMyXSwxMjk6WzIsMzJdLDEzMDpbMiwzMl0sMTMxOlsyLDMyXSwxMzI6WzIsMzJdLDEzMzpbMiwzMl0sMTM0OlsyLDMyXX0sezE6WzIsMzNdLDY6WzIsMzNdLDI1OlsyLDMzXSwyNjpbMiwzM10sNDc6WzIsMzNdLDUyOlsyLDMzXSw1NTpbMiwzM10sNjQ6WzIsMzNdLDY1OlsyLDMzXSw2NjpbMiwzM10sNjg6WzIsMzNdLDcwOlsyLDMzXSw3MTpbMiwzM10sNzU6WzIsMzNdLDgxOlsyLDMzXSw4MjpbMiwzM10sODM6WzIsMzNdLDg4OlsyLDMzXSw5MDpbMiwzM10sOTk6WzIsMzNdLDEwMTpbMiwzM10sMTAyOlsyLDMzXSwxMDM6WzIsMzNdLDEwNzpbMiwzM10sMTE1OlsyLDMzXSwxMjM6WzIsMzNdLDEyNTpbMiwzM10sMTI2OlsyLDMzXSwxMjk6WzIsMzNdLDEzMDpbMiwzM10sMTMxOlsyLDMzXSwxMzI6WzIsMzNdLDEzMzpbMiwzM10sMTM0OlsyLDMzXX0sezQ6MTM4LDc6NCw4OjYsOTo3LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMTM5XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTQwLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMTQ0XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1ODoxNDUsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODQ6MTQyLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDg4OlsxLDE0MV0sOTE6MTQzLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiwxMDddLDY6WzIsMTA3XSwyNTpbMiwxMDddLDI2OlsyLDEwN10sNDc6WzIsMTA3XSw1MjpbMiwxMDddLDU1OlsyLDEwN10sNjQ6WzIsMTA3XSw2NTpbMiwxMDddLDY2OlsyLDEwN10sNjg6WzIsMTA3XSw3MDpbMiwxMDddLDcxOlsyLDEwN10sNzU6WzIsMTA3XSw4MTpbMiwxMDddLDgyOlsyLDEwN10sODM6WzIsMTA3XSw4ODpbMiwxMDddLDkwOlsyLDEwN10sOTk6WzIsMTA3XSwxMDE6WzIsMTA3XSwxMDI6WzIsMTA3XSwxMDM6WzIsMTA3XSwxMDc6WzIsMTA3XSwxMTU6WzIsMTA3XSwxMjM6WzIsMTA3XSwxMjU6WzIsMTA3XSwxMjY6WzIsMTA3XSwxMjk6WzIsMTA3XSwxMzA6WzIsMTA3XSwxMzE6WzIsMTA3XSwxMzI6WzIsMTA3XSwxMzM6WzIsMTA3XSwxMzQ6WzIsMTA3XX0sezE6WzIsMTA4XSw2OlsyLDEwOF0sMjU6WzIsMTA4XSwyNjpbMiwxMDhdLDI3OjE0NiwyODpbMSw3MV0sNDc6WzIsMTA4XSw1MjpbMiwxMDhdLDU1OlsyLDEwOF0sNjQ6WzIsMTA4XSw2NTpbMiwxMDhdLDY2OlsyLDEwOF0sNjg6WzIsMTA4XSw3MDpbMiwxMDhdLDcxOlsyLDEwOF0sNzU6WzIsMTA4XSw4MTpbMiwxMDhdLDgyOlsyLDEwOF0sODM6WzIsMTA4XSw4ODpbMiwxMDhdLDkwOlsyLDEwOF0sOTk6WzIsMTA4XSwxMDE6WzIsMTA4XSwxMDI6WzIsMTA4XSwxMDM6WzIsMTA4XSwxMDc6WzIsMTA4XSwxMTU6WzIsMTA4XSwxMjM6WzIsMTA4XSwxMjU6WzIsMTA4XSwxMjY6WzIsMTA4XSwxMjk6WzIsMTA4XSwxMzA6WzIsMTA4XSwxMzE6WzIsMTA4XSwxMzI6WzIsMTA4XSwxMzM6WzIsMTA4XSwxMzQ6WzIsMTA4XX0sezI1OlsyLDQ5XX0sezI1OlsyLDUwXX0sezE6WzIsNjRdLDY6WzIsNjRdLDI1OlsyLDY0XSwyNjpbMiw2NF0sMzg6WzIsNjRdLDQ3OlsyLDY0XSw1MjpbMiw2NF0sNTU6WzIsNjRdLDY0OlsyLDY0XSw2NTpbMiw2NF0sNjY6WzIsNjRdLDY4OlsyLDY0XSw3MDpbMiw2NF0sNzE6WzIsNjRdLDc1OlsyLDY0XSw3NzpbMiw2NF0sODE6WzIsNjRdLDgyOlsyLDY0XSw4MzpbMiw2NF0sODg6WzIsNjRdLDkwOlsyLDY0XSw5OTpbMiw2NF0sMTAxOlsyLDY0XSwxMDI6WzIsNjRdLDEwMzpbMiw2NF0sMTA3OlsyLDY0XSwxMTU6WzIsNjRdLDEyMzpbMiw2NF0sMTI1OlsyLDY0XSwxMjY6WzIsNjRdLDEyNzpbMiw2NF0sMTI4OlsyLDY0XSwxMjk6WzIsNjRdLDEzMDpbMiw2NF0sMTMxOlsyLDY0XSwxMzI6WzIsNjRdLDEzMzpbMiw2NF0sMTM0OlsyLDY0XSwxMzU6WzIsNjRdfSx7MTpbMiw2N10sNjpbMiw2N10sMjU6WzIsNjddLDI2OlsyLDY3XSwzODpbMiw2N10sNDc6WzIsNjddLDUyOlsyLDY3XSw1NTpbMiw2N10sNjQ6WzIsNjddLDY1OlsyLDY3XSw2NjpbMiw2N10sNjg6WzIsNjddLDcwOlsyLDY3XSw3MTpbMiw2N10sNzU6WzIsNjddLDc3OlsyLDY3XSw4MTpbMiw2N10sODI6WzIsNjddLDgzOlsyLDY3XSw4ODpbMiw2N10sOTA6WzIsNjddLDk5OlsyLDY3XSwxMDE6WzIsNjddLDEwMjpbMiw2N10sMTAzOlsyLDY3XSwxMDc6WzIsNjddLDExNTpbMiw2N10sMTIzOlsyLDY3XSwxMjU6WzIsNjddLDEyNjpbMiw2N10sMTI3OlsyLDY3XSwxMjg6WzIsNjddLDEyOTpbMiw2N10sMTMwOlsyLDY3XSwxMzE6WzIsNjddLDEzMjpbMiw2N10sMTMzOlsyLDY3XSwxMzQ6WzIsNjddLDEzNTpbMiw2N119LHs4OjE0Nyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoxNDgsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTQ5LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs1OjE1MCw4OjE1MSw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDVdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7Mjc6MTU2LDI4OlsxLDcxXSw1NjoxNTcsNTc6MTU4LDYyOjE1Miw3MzpbMSw2OF0sODc6WzEsNTVdLDExMDoxNTMsMTExOlsxLDE1NF0sMTEyOjE1NX0sezEwOToxNTksMTEzOlsxLDE2MF0sMTE0OlsxLDE2MV19LHs2OlsyLDg2XSwxMToxNjUsMjU6WzIsODZdLDI3OjE2NiwyODpbMSw3MV0sMjk6MTY3LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzk6MTYzLDQwOjE2NCw0MjoxNjgsNDQ6WzEsNDZdLDUyOlsyLDg2XSw3NDoxNjIsNzU6WzIsODZdLDg2OlsxLDExMV19LHsxOlsyLDI3XSw2OlsyLDI3XSwyNTpbMiwyN10sMjY6WzIsMjddLDQxOlsyLDI3XSw0NzpbMiwyN10sNTI6WzIsMjddLDU1OlsyLDI3XSw2NDpbMiwyN10sNjU6WzIsMjddLDY2OlsyLDI3XSw2ODpbMiwyN10sNzA6WzIsMjddLDcxOlsyLDI3XSw3NTpbMiwyN10sODE6WzIsMjddLDgyOlsyLDI3XSw4MzpbMiwyN10sODg6WzIsMjddLDkwOlsyLDI3XSw5OTpbMiwyN10sMTAxOlsyLDI3XSwxMDI6WzIsMjddLDEwMzpbMiwyN10sMTA3OlsyLDI3XSwxMTU6WzIsMjddLDEyMzpbMiwyN10sMTI1OlsyLDI3XSwxMjY6WzIsMjddLDEyOTpbMiwyN10sMTMwOlsyLDI3XSwxMzE6WzIsMjddLDEzMjpbMiwyN10sMTMzOlsyLDI3XSwxMzQ6WzIsMjddfSx7MTpbMiwyOF0sNjpbMiwyOF0sMjU6WzIsMjhdLDI2OlsyLDI4XSw0MTpbMiwyOF0sNDc6WzIsMjhdLDUyOlsyLDI4XSw1NTpbMiwyOF0sNjQ6WzIsMjhdLDY1OlsyLDI4XSw2NjpbMiwyOF0sNjg6WzIsMjhdLDcwOlsyLDI4XSw3MTpbMiwyOF0sNzU6WzIsMjhdLDgxOlsyLDI4XSw4MjpbMiwyOF0sODM6WzIsMjhdLDg4OlsyLDI4XSw5MDpbMiwyOF0sOTk6WzIsMjhdLDEwMTpbMiwyOF0sMTAyOlsyLDI4XSwxMDM6WzIsMjhdLDEwNzpbMiwyOF0sMTE1OlsyLDI4XSwxMjM6WzIsMjhdLDEyNTpbMiwyOF0sMTI2OlsyLDI4XSwxMjk6WzIsMjhdLDEzMDpbMiwyOF0sMTMxOlsyLDI4XSwxMzI6WzIsMjhdLDEzMzpbMiwyOF0sMTM0OlsyLDI4XX0sezE6WzIsMjZdLDY6WzIsMjZdLDI1OlsyLDI2XSwyNjpbMiwyNl0sMzg6WzIsMjZdLDQxOlsyLDI2XSw0NzpbMiwyNl0sNTI6WzIsMjZdLDU1OlsyLDI2XSw2NDpbMiwyNl0sNjU6WzIsMjZdLDY2OlsyLDI2XSw2ODpbMiwyNl0sNzA6WzIsMjZdLDcxOlsyLDI2XSw3NTpbMiwyNl0sNzc6WzIsMjZdLDgxOlsyLDI2XSw4MjpbMiwyNl0sODM6WzIsMjZdLDg4OlsyLDI2XSw5MDpbMiwyNl0sOTk6WzIsMjZdLDEwMTpbMiwyNl0sMTAyOlsyLDI2XSwxMDM6WzIsMjZdLDEwNzpbMiwyNl0sMTEzOlsyLDI2XSwxMTQ6WzIsMjZdLDExNTpbMiwyNl0sMTIzOlsyLDI2XSwxMjU6WzIsMjZdLDEyNjpbMiwyNl0sMTI3OlsyLDI2XSwxMjg6WzIsMjZdLDEyOTpbMiwyNl0sMTMwOlsyLDI2XSwxMzE6WzIsMjZdLDEzMjpbMiwyNl0sMTMzOlsyLDI2XSwxMzQ6WzIsMjZdLDEzNTpbMiwyNl19LHsxOlsyLDZdLDY6WzIsNl0sNzoxNjksODo2LDk6NywxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI2OlsyLDZdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDk5OlsyLDZdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiwzXX0sezE6WzIsMjRdLDY6WzIsMjRdLDI1OlsyLDI0XSwyNjpbMiwyNF0sNDc6WzIsMjRdLDUyOlsyLDI0XSw1NTpbMiwyNF0sNzA6WzIsMjRdLDc1OlsyLDI0XSw4MzpbMiwyNF0sODg6WzIsMjRdLDkwOlsyLDI0XSw5NTpbMiwyNF0sOTY6WzIsMjRdLDk5OlsyLDI0XSwxMDE6WzIsMjRdLDEwMjpbMiwyNF0sMTAzOlsyLDI0XSwxMDc6WzIsMjRdLDExNTpbMiwyNF0sMTE4OlsyLDI0XSwxMjA6WzIsMjRdLDEyMzpbMiwyNF0sMTI1OlsyLDI0XSwxMjY6WzIsMjRdLDEyOTpbMiwyNF0sMTMwOlsyLDI0XSwxMzE6WzIsMjRdLDEzMjpbMiwyNF0sMTMzOlsyLDI0XSwxMzQ6WzIsMjRdfSx7NjpbMSw3Ml0sMjY6WzEsMTcwXX0sezE6WzIsMTg2XSw2OlsyLDE4Nl0sMjU6WzIsMTg2XSwyNjpbMiwxODZdLDQ3OlsyLDE4Nl0sNTI6WzIsMTg2XSw1NTpbMiwxODZdLDcwOlsyLDE4Nl0sNzU6WzIsMTg2XSw4MzpbMiwxODZdLDg4OlsyLDE4Nl0sOTA6WzIsMTg2XSw5OTpbMiwxODZdLDEwMTpbMiwxODZdLDEwMjpbMiwxODZdLDEwMzpbMiwxODZdLDEwNzpbMiwxODZdLDExNTpbMiwxODZdLDEyMzpbMiwxODZdLDEyNTpbMiwxODZdLDEyNjpbMiwxODZdLDEyOTpbMiwxODZdLDEzMDpbMiwxODZdLDEzMTpbMiwxODZdLDEzMjpbMiwxODZdLDEzMzpbMiwxODZdLDEzNDpbMiwxODZdfSx7ODoxNzEsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTcyLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE3Myw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoxNzQsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTc1LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE3Niw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoxNzcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTc4LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDE0Ml0sNjpbMiwxNDJdLDI1OlsyLDE0Ml0sMjY6WzIsMTQyXSw0NzpbMiwxNDJdLDUyOlsyLDE0Ml0sNTU6WzIsMTQyXSw3MDpbMiwxNDJdLDc1OlsyLDE0Ml0sODM6WzIsMTQyXSw4ODpbMiwxNDJdLDkwOlsyLDE0Ml0sOTk6WzIsMTQyXSwxMDE6WzIsMTQyXSwxMDI6WzIsMTQyXSwxMDM6WzIsMTQyXSwxMDc6WzIsMTQyXSwxMTU6WzIsMTQyXSwxMjM6WzIsMTQyXSwxMjU6WzIsMTQyXSwxMjY6WzIsMTQyXSwxMjk6WzIsMTQyXSwxMzA6WzIsMTQyXSwxMzE6WzIsMTQyXSwxMzI6WzIsMTQyXSwxMzM6WzIsMTQyXSwxMzQ6WzIsMTQyXX0sezE6WzIsMTQ3XSw2OlsyLDE0N10sMjU6WzIsMTQ3XSwyNjpbMiwxNDddLDQ3OlsyLDE0N10sNTI6WzIsMTQ3XSw1NTpbMiwxNDddLDcwOlsyLDE0N10sNzU6WzIsMTQ3XSw4MzpbMiwxNDddLDg4OlsyLDE0N10sOTA6WzIsMTQ3XSw5OTpbMiwxNDddLDEwMTpbMiwxNDddLDEwMjpbMiwxNDddLDEwMzpbMiwxNDddLDEwNzpbMiwxNDddLDExNTpbMiwxNDddLDEyMzpbMiwxNDddLDEyNTpbMiwxNDddLDEyNjpbMiwxNDddLDEyOTpbMiwxNDddLDEzMDpbMiwxNDddLDEzMTpbMiwxNDddLDEzMjpbMiwxNDddLDEzMzpbMiwxNDddLDEzNDpbMiwxNDddfSx7ODoxNzksOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTQxXSw2OlsyLDE0MV0sMjU6WzIsMTQxXSwyNjpbMiwxNDFdLDQ3OlsyLDE0MV0sNTI6WzIsMTQxXSw1NTpbMiwxNDFdLDcwOlsyLDE0MV0sNzU6WzIsMTQxXSw4MzpbMiwxNDFdLDg4OlsyLDE0MV0sOTA6WzIsMTQxXSw5OTpbMiwxNDFdLDEwMTpbMiwxNDFdLDEwMjpbMiwxNDFdLDEwMzpbMiwxNDFdLDEwNzpbMiwxNDFdLDExNTpbMiwxNDFdLDEyMzpbMiwxNDFdLDEyNTpbMiwxNDFdLDEyNjpbMiwxNDFdLDEyOTpbMiwxNDFdLDEzMDpbMiwxNDFdLDEzMTpbMiwxNDFdLDEzMjpbMiwxNDFdLDEzMzpbMiwxNDFdLDEzNDpbMiwxNDFdfSx7MTpbMiwxNDZdLDY6WzIsMTQ2XSwyNTpbMiwxNDZdLDI2OlsyLDE0Nl0sNDc6WzIsMTQ2XSw1MjpbMiwxNDZdLDU1OlsyLDE0Nl0sNzA6WzIsMTQ2XSw3NTpbMiwxNDZdLDgzOlsyLDE0Nl0sODg6WzIsMTQ2XSw5MDpbMiwxNDZdLDk5OlsyLDE0Nl0sMTAxOlsyLDE0Nl0sMTAyOlsyLDE0Nl0sMTAzOlsyLDE0Nl0sMTA3OlsyLDE0Nl0sMTE1OlsyLDE0Nl0sMTIzOlsyLDE0Nl0sMTI1OlsyLDE0Nl0sMTI2OlsyLDE0Nl0sMTI5OlsyLDE0Nl0sMTMwOlsyLDE0Nl0sMTMxOlsyLDE0Nl0sMTMyOlsyLDE0Nl0sMTMzOlsyLDE0Nl0sMTM0OlsyLDE0Nl19LHs3OToxODAsODI6WzEsMTAzXX0sezE6WzIsNjVdLDY6WzIsNjVdLDI1OlsyLDY1XSwyNjpbMiw2NV0sMzg6WzIsNjVdLDQ3OlsyLDY1XSw1MjpbMiw2NV0sNTU6WzIsNjVdLDY0OlsyLDY1XSw2NTpbMiw2NV0sNjY6WzIsNjVdLDY4OlsyLDY1XSw3MDpbMiw2NV0sNzE6WzIsNjVdLDc1OlsyLDY1XSw3NzpbMiw2NV0sODE6WzIsNjVdLDgyOlsyLDY1XSw4MzpbMiw2NV0sODg6WzIsNjVdLDkwOlsyLDY1XSw5OTpbMiw2NV0sMTAxOlsyLDY1XSwxMDI6WzIsNjVdLDEwMzpbMiw2NV0sMTA3OlsyLDY1XSwxMTU6WzIsNjVdLDEyMzpbMiw2NV0sMTI1OlsyLDY1XSwxMjY6WzIsNjVdLDEyNzpbMiw2NV0sMTI4OlsyLDY1XSwxMjk6WzIsNjVdLDEzMDpbMiw2NV0sMTMxOlsyLDY1XSwxMzI6WzIsNjVdLDEzMzpbMiw2NV0sMTM0OlsyLDY1XSwxMzU6WzIsNjVdfSx7ODI6WzIsMTA0XX0sezI3OjE4MSwyODpbMSw3MV19LHsyNzoxODIsMjg6WzEsNzFdfSx7MTpbMiw3OV0sNjpbMiw3OV0sMjU6WzIsNzldLDI2OlsyLDc5XSwyNzoxODMsMjg6WzEsNzFdLDM4OlsyLDc5XSw0NzpbMiw3OV0sNTI6WzIsNzldLDU1OlsyLDc5XSw2NDpbMiw3OV0sNjU6WzIsNzldLDY2OlsyLDc5XSw2ODpbMiw3OV0sNzA6WzIsNzldLDcxOlsyLDc5XSw3NTpbMiw3OV0sNzc6WzIsNzldLDgxOlsyLDc5XSw4MjpbMiw3OV0sODM6WzIsNzldLDg4OlsyLDc5XSw5MDpbMiw3OV0sOTk6WzIsNzldLDEwMTpbMiw3OV0sMTAyOlsyLDc5XSwxMDM6WzIsNzldLDEwNzpbMiw3OV0sMTE1OlsyLDc5XSwxMjM6WzIsNzldLDEyNTpbMiw3OV0sMTI2OlsyLDc5XSwxMjc6WzIsNzldLDEyODpbMiw3OV0sMTI5OlsyLDc5XSwxMzA6WzIsNzldLDEzMTpbMiw3OV0sMTMyOlsyLDc5XSwxMzM6WzIsNzldLDEzNDpbMiw3OV0sMTM1OlsyLDc5XX0sezE6WzIsODBdLDY6WzIsODBdLDI1OlsyLDgwXSwyNjpbMiw4MF0sMzg6WzIsODBdLDQ3OlsyLDgwXSw1MjpbMiw4MF0sNTU6WzIsODBdLDY0OlsyLDgwXSw2NTpbMiw4MF0sNjY6WzIsODBdLDY4OlsyLDgwXSw3MDpbMiw4MF0sNzE6WzIsODBdLDc1OlsyLDgwXSw3NzpbMiw4MF0sODE6WzIsODBdLDgyOlsyLDgwXSw4MzpbMiw4MF0sODg6WzIsODBdLDkwOlsyLDgwXSw5OTpbMiw4MF0sMTAxOlsyLDgwXSwxMDI6WzIsODBdLDEwMzpbMiw4MF0sMTA3OlsyLDgwXSwxMTU6WzIsODBdLDEyMzpbMiw4MF0sMTI1OlsyLDgwXSwxMjY6WzIsODBdLDEyNzpbMiw4MF0sMTI4OlsyLDgwXSwxMjk6WzIsODBdLDEzMDpbMiw4MF0sMTMxOlsyLDgwXSwxMzI6WzIsODBdLDEzMzpbMiw4MF0sMTM0OlsyLDgwXSwxMzU6WzIsODBdfSx7ODoxODUsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1NTpbMSwxODldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDY5OjE4NCw3MjoxODYsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sODk6MTg3LDkwOlsxLDE4OF0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs2NzoxOTAsNjg6WzEsOTddLDcxOlsxLDk4XX0sezc5OjE5MSw4MjpbMSwxMDNdfSx7MTpbMiw2Nl0sNjpbMiw2Nl0sMjU6WzIsNjZdLDI2OlsyLDY2XSwzODpbMiw2Nl0sNDc6WzIsNjZdLDUyOlsyLDY2XSw1NTpbMiw2Nl0sNjQ6WzIsNjZdLDY1OlsyLDY2XSw2NjpbMiw2Nl0sNjg6WzIsNjZdLDcwOlsyLDY2XSw3MTpbMiw2Nl0sNzU6WzIsNjZdLDc3OlsyLDY2XSw4MTpbMiw2Nl0sODI6WzIsNjZdLDgzOlsyLDY2XSw4ODpbMiw2Nl0sOTA6WzIsNjZdLDk5OlsyLDY2XSwxMDE6WzIsNjZdLDEwMjpbMiw2Nl0sMTAzOlsyLDY2XSwxMDc6WzIsNjZdLDExNTpbMiw2Nl0sMTIzOlsyLDY2XSwxMjU6WzIsNjZdLDEyNjpbMiw2Nl0sMTI3OlsyLDY2XSwxMjg6WzIsNjZdLDEyOTpbMiw2Nl0sMTMwOlsyLDY2XSwxMzE6WzIsNjZdLDEzMjpbMiw2Nl0sMTMzOlsyLDY2XSwxMzQ6WzIsNjZdLDEzNTpbMiw2Nl19LHs2OlsxLDE5M10sODoxOTIsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNTpbMSwxOTRdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiwxMDJdLDY6WzIsMTAyXSwyNTpbMiwxMDJdLDI2OlsyLDEwMl0sNDc6WzIsMTAyXSw1MjpbMiwxMDJdLDU1OlsyLDEwMl0sNjQ6WzIsMTAyXSw2NTpbMiwxMDJdLDY2OlsyLDEwMl0sNjg6WzIsMTAyXSw3MDpbMiwxMDJdLDcxOlsyLDEwMl0sNzU6WzIsMTAyXSw4MTpbMiwxMDJdLDgyOlsyLDEwMl0sODM6WzIsMTAyXSw4ODpbMiwxMDJdLDkwOlsyLDEwMl0sOTk6WzIsMTAyXSwxMDE6WzIsMTAyXSwxMDI6WzIsMTAyXSwxMDM6WzIsMTAyXSwxMDc6WzIsMTAyXSwxMTU6WzIsMTAyXSwxMjM6WzIsMTAyXSwxMjU6WzIsMTAyXSwxMjY6WzIsMTAyXSwxMjk6WzIsMTAyXSwxMzA6WzIsMTAyXSwxMzE6WzIsMTAyXSwxMzI6WzIsMTAyXSwxMzM6WzIsMTAyXSwxMzQ6WzIsMTAyXX0sezg6MTk3LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMTQ0XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1ODoxNDUsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODM6WzEsMTk1XSw4NDoxOTYsODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTE6MTQzLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NDc6WzEsMTk4XSw1MjpbMSwxOTldfSx7NDc6WzIsNTRdLDUyOlsyLDU0XX0sezM4OlsxLDIwMV0sNDc6WzIsNTZdLDUyOlsyLDU2XSw1NTpbMSwyMDBdfSx7Mzg6WzIsNTldLDQ3OlsyLDU5XSw1MjpbMiw1OV0sNTU6WzIsNTldfSx7Mzg6WzIsNjBdLDQ3OlsyLDYwXSw1MjpbMiw2MF0sNTU6WzIsNjBdfSx7Mzg6WzIsNjFdLDQ3OlsyLDYxXSw1MjpbMiw2MV0sNTU6WzIsNjFdfSx7Mzg6WzIsNjJdLDQ3OlsyLDYyXSw1MjpbMiw2Ml0sNTU6WzIsNjJdfSx7Mjc6MTQ2LDI4OlsxLDcxXX0sezg6MTk3LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMTQ0XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1ODoxNDUsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODQ6MTQyLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDg4OlsxLDE0MV0sOTE6MTQzLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw0OF0sNjpbMiw0OF0sMjU6WzIsNDhdLDI2OlsyLDQ4XSw0NzpbMiw0OF0sNTI6WzIsNDhdLDU1OlsyLDQ4XSw3MDpbMiw0OF0sNzU6WzIsNDhdLDgzOlsyLDQ4XSw4ODpbMiw0OF0sOTA6WzIsNDhdLDk5OlsyLDQ4XSwxMDE6WzIsNDhdLDEwMjpbMiw0OF0sMTAzOlsyLDQ4XSwxMDc6WzIsNDhdLDExNTpbMiw0OF0sMTIzOlsyLDQ4XSwxMjU6WzIsNDhdLDEyNjpbMiw0OF0sMTI5OlsyLDQ4XSwxMzA6WzIsNDhdLDEzMTpbMiw0OF0sMTMyOlsyLDQ4XSwxMzM6WzIsNDhdLDEzNDpbMiw0OF19LHsxOlsyLDE3OV0sNjpbMiwxNzldLDI1OlsyLDE3OV0sMjY6WzIsMTc5XSw0NzpbMiwxNzldLDUyOlsyLDE3OV0sNTU6WzIsMTc5XSw3MDpbMiwxNzldLDc1OlsyLDE3OV0sODM6WzIsMTc5XSw4ODpbMiwxNzldLDkwOlsyLDE3OV0sOTk6WzIsMTc5XSwxMDA6ODUsMTAxOlsyLDE3OV0sMTAyOlsyLDE3OV0sMTAzOlsyLDE3OV0sMTA2Ojg2LDEwNzpbMiwxNzldLDEwODo2NywxMTU6WzIsMTc5XSwxMjM6WzIsMTc5XSwxMjU6WzIsMTc5XSwxMjY6WzIsMTc5XSwxMjk6WzEsNzZdLDEzMDpbMiwxNzldLDEzMTpbMiwxNzldLDEzMjpbMiwxNzldLDEzMzpbMiwxNzldLDEzNDpbMiwxNzldfSx7MTAwOjg4LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODksMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg3XX0sezE6WzIsMTgwXSw2OlsyLDE4MF0sMjU6WzIsMTgwXSwyNjpbMiwxODBdLDQ3OlsyLDE4MF0sNTI6WzIsMTgwXSw1NTpbMiwxODBdLDcwOlsyLDE4MF0sNzU6WzIsMTgwXSw4MzpbMiwxODBdLDg4OlsyLDE4MF0sOTA6WzIsMTgwXSw5OTpbMiwxODBdLDEwMDo4NSwxMDE6WzIsMTgwXSwxMDI6WzIsMTgwXSwxMDM6WzIsMTgwXSwxMDY6ODYsMTA3OlsyLDE4MF0sMTA4OjY3LDExNTpbMiwxODBdLDEyMzpbMiwxODBdLDEyNTpbMiwxODBdLDEyNjpbMiwxODBdLDEyOTpbMSw3Nl0sMTMwOlsyLDE4MF0sMTMxOlsyLDE4MF0sMTMyOlsyLDE4MF0sMTMzOlsyLDE4MF0sMTM0OlsyLDE4MF19LHsxOlsyLDE4MV0sNjpbMiwxODFdLDI1OlsyLDE4MV0sMjY6WzIsMTgxXSw0NzpbMiwxODFdLDUyOlsyLDE4MV0sNTU6WzIsMTgxXSw3MDpbMiwxODFdLDc1OlsyLDE4MV0sODM6WzIsMTgxXSw4ODpbMiwxODFdLDkwOlsyLDE4MV0sOTk6WzIsMTgxXSwxMDA6ODUsMTAxOlsyLDE4MV0sMTAyOlsyLDE4MV0sMTAzOlsyLDE4MV0sMTA2Ojg2LDEwNzpbMiwxODFdLDEwODo2NywxMTU6WzIsMTgxXSwxMjM6WzIsMTgxXSwxMjU6WzIsMTgxXSwxMjY6WzIsMTgxXSwxMjk6WzEsNzZdLDEzMDpbMiwxODFdLDEzMTpbMiwxODFdLDEzMjpbMiwxODFdLDEzMzpbMiwxODFdLDEzNDpbMiwxODFdfSx7MTpbMiwxODJdLDY6WzIsMTgyXSwyNTpbMiwxODJdLDI2OlsyLDE4Ml0sNDc6WzIsMTgyXSw1MjpbMiwxODJdLDU1OlsyLDE4Ml0sNjQ6WzIsNjhdLDY1OlsyLDY4XSw2NjpbMiw2OF0sNjg6WzIsNjhdLDcwOlsyLDE4Ml0sNzE6WzIsNjhdLDc1OlsyLDE4Ml0sODE6WzIsNjhdLDgyOlsyLDY4XSw4MzpbMiwxODJdLDg4OlsyLDE4Ml0sOTA6WzIsMTgyXSw5OTpbMiwxODJdLDEwMTpbMiwxODJdLDEwMjpbMiwxODJdLDEwMzpbMiwxODJdLDEwNzpbMiwxODJdLDExNTpbMiwxODJdLDEyMzpbMiwxODJdLDEyNTpbMiwxODJdLDEyNjpbMiwxODJdLDEyOTpbMiwxODJdLDEzMDpbMiwxODJdLDEzMTpbMiwxODJdLDEzMjpbMiwxODJdLDEzMzpbMiwxODJdLDEzNDpbMiwxODJdfSx7NjA6OTEsNjQ6WzEsOTNdLDY1OlsxLDk0XSw2NjpbMSw5NV0sNjc6OTYsNjg6WzEsOTddLDcxOlsxLDk4XSw3ODo5MCw4MTpbMSw5Ml0sODI6WzIsMTAzXX0sezYwOjEwMCw2NDpbMSw5M10sNjU6WzEsOTRdLDY2OlsxLDk1XSw2Nzo5Niw2ODpbMSw5N10sNzE6WzEsOThdLDc4Ojk5LDgxOlsxLDkyXSw4MjpbMiwxMDNdfSx7NjQ6WzIsNzFdLDY1OlsyLDcxXSw2NjpbMiw3MV0sNjg6WzIsNzFdLDcxOlsyLDcxXSw4MTpbMiw3MV0sODI6WzIsNzFdfSx7MTpbMiwxODNdLDY6WzIsMTgzXSwyNTpbMiwxODNdLDI2OlsyLDE4M10sNDc6WzIsMTgzXSw1MjpbMiwxODNdLDU1OlsyLDE4M10sNjQ6WzIsNjhdLDY1OlsyLDY4XSw2NjpbMiw2OF0sNjg6WzIsNjhdLDcwOlsyLDE4M10sNzE6WzIsNjhdLDc1OlsyLDE4M10sODE6WzIsNjhdLDgyOlsyLDY4XSw4MzpbMiwxODNdLDg4OlsyLDE4M10sOTA6WzIsMTgzXSw5OTpbMiwxODNdLDEwMTpbMiwxODNdLDEwMjpbMiwxODNdLDEwMzpbMiwxODNdLDEwNzpbMiwxODNdLDExNTpbMiwxODNdLDEyMzpbMiwxODNdLDEyNTpbMiwxODNdLDEyNjpbMiwxODNdLDEyOTpbMiwxODNdLDEzMDpbMiwxODNdLDEzMTpbMiwxODNdLDEzMjpbMiwxODNdLDEzMzpbMiwxODNdLDEzNDpbMiwxODNdfSx7MTpbMiwxODRdLDY6WzIsMTg0XSwyNTpbMiwxODRdLDI2OlsyLDE4NF0sNDc6WzIsMTg0XSw1MjpbMiwxODRdLDU1OlsyLDE4NF0sNzA6WzIsMTg0XSw3NTpbMiwxODRdLDgzOlsyLDE4NF0sODg6WzIsMTg0XSw5MDpbMiwxODRdLDk5OlsyLDE4NF0sMTAxOlsyLDE4NF0sMTAyOlsyLDE4NF0sMTAzOlsyLDE4NF0sMTA3OlsyLDE4NF0sMTE1OlsyLDE4NF0sMTIzOlsyLDE4NF0sMTI1OlsyLDE4NF0sMTI2OlsyLDE4NF0sMTI5OlsyLDE4NF0sMTMwOlsyLDE4NF0sMTMxOlsyLDE4NF0sMTMyOlsyLDE4NF0sMTMzOlsyLDE4NF0sMTM0OlsyLDE4NF19LHsxOlsyLDE4NV0sNjpbMiwxODVdLDI1OlsyLDE4NV0sMjY6WzIsMTg1XSw0NzpbMiwxODVdLDUyOlsyLDE4NV0sNTU6WzIsMTg1XSw3MDpbMiwxODVdLDc1OlsyLDE4NV0sODM6WzIsMTg1XSw4ODpbMiwxODVdLDkwOlsyLDE4NV0sOTk6WzIsMTg1XSwxMDE6WzIsMTg1XSwxMDI6WzIsMTg1XSwxMDM6WzIsMTg1XSwxMDc6WzIsMTg1XSwxMTU6WzIsMTg1XSwxMjM6WzIsMTg1XSwxMjU6WzIsMTg1XSwxMjY6WzIsMTg1XSwxMjk6WzIsMTg1XSwxMzA6WzIsMTg1XSwxMzE6WzIsMTg1XSwxMzI6WzIsMTg1XSwxMzM6WzIsMTg1XSwxMzQ6WzIsMTg1XX0sezg6MjAyLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMjAzXSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MjA0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs1OjIwNSwyNTpbMSw1XSwxMjI6WzEsMjA2XX0sezE6WzIsMTI4XSw2OlsyLDEyOF0sMjU6WzIsMTI4XSwyNjpbMiwxMjhdLDQ3OlsyLDEyOF0sNTI6WzIsMTI4XSw1NTpbMiwxMjhdLDcwOlsyLDEyOF0sNzU6WzIsMTI4XSw4MzpbMiwxMjhdLDg4OlsyLDEyOF0sOTA6WzIsMTI4XSw5NDoyMDcsOTU6WzEsMjA4XSw5NjpbMSwyMDldLDk5OlsyLDEyOF0sMTAxOlsyLDEyOF0sMTAyOlsyLDEyOF0sMTAzOlsyLDEyOF0sMTA3OlsyLDEyOF0sMTE1OlsyLDEyOF0sMTIzOlsyLDEyOF0sMTI1OlsyLDEyOF0sMTI2OlsyLDEyOF0sMTI5OlsyLDEyOF0sMTMwOlsyLDEyOF0sMTMxOlsyLDEyOF0sMTMyOlsyLDEyOF0sMTMzOlsyLDEyOF0sMTM0OlsyLDEyOF19LHsxOlsyLDE0MF0sNjpbMiwxNDBdLDI1OlsyLDE0MF0sMjY6WzIsMTQwXSw0NzpbMiwxNDBdLDUyOlsyLDE0MF0sNTU6WzIsMTQwXSw3MDpbMiwxNDBdLDc1OlsyLDE0MF0sODM6WzIsMTQwXSw4ODpbMiwxNDBdLDkwOlsyLDE0MF0sOTk6WzIsMTQwXSwxMDE6WzIsMTQwXSwxMDI6WzIsMTQwXSwxMDM6WzIsMTQwXSwxMDc6WzIsMTQwXSwxMTU6WzIsMTQwXSwxMjM6WzIsMTQwXSwxMjU6WzIsMTQwXSwxMjY6WzIsMTQwXSwxMjk6WzIsMTQwXSwxMzA6WzIsMTQwXSwxMzE6WzIsMTQwXSwxMzI6WzIsMTQwXSwxMzM6WzIsMTQwXSwxMzQ6WzIsMTQwXX0sezE6WzIsMTQ4XSw2OlsyLDE0OF0sMjU6WzIsMTQ4XSwyNjpbMiwxNDhdLDQ3OlsyLDE0OF0sNTI6WzIsMTQ4XSw1NTpbMiwxNDhdLDcwOlsyLDE0OF0sNzU6WzIsMTQ4XSw4MzpbMiwxNDhdLDg4OlsyLDE0OF0sOTA6WzIsMTQ4XSw5OTpbMiwxNDhdLDEwMTpbMiwxNDhdLDEwMjpbMiwxNDhdLDEwMzpbMiwxNDhdLDEwNzpbMiwxNDhdLDExNTpbMiwxNDhdLDEyMzpbMiwxNDhdLDEyNTpbMiwxNDhdLDEyNjpbMiwxNDhdLDEyOTpbMiwxNDhdLDEzMDpbMiwxNDhdLDEzMTpbMiwxNDhdLDEzMjpbMiwxNDhdLDEzMzpbMiwxNDhdLDEzNDpbMiwxNDhdfSx7MjU6WzEsMjEwXSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezExNzoyMTEsMTE5OjIxMiwxMjA6WzEsMjEzXX0sezE6WzIsOTJdLDY6WzIsOTJdLDI1OlsyLDkyXSwyNjpbMiw5Ml0sNDc6WzIsOTJdLDUyOlsyLDkyXSw1NTpbMiw5Ml0sNzA6WzIsOTJdLDc1OlsyLDkyXSw4MzpbMiw5Ml0sODg6WzIsOTJdLDkwOlsyLDkyXSw5OTpbMiw5Ml0sMTAxOlsyLDkyXSwxMDI6WzIsOTJdLDEwMzpbMiw5Ml0sMTA3OlsyLDkyXSwxMTU6WzIsOTJdLDEyMzpbMiw5Ml0sMTI1OlsyLDkyXSwxMjY6WzIsOTJdLDEyOTpbMiw5Ml0sMTMwOlsyLDkyXSwxMzE6WzIsOTJdLDEzMjpbMiw5Ml0sMTMzOlsyLDkyXSwxMzQ6WzIsOTJdfSx7ODoyMTQsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsOTVdLDU6MjE1LDY6WzIsOTVdLDI1OlsxLDVdLDI2OlsyLDk1XSw0NzpbMiw5NV0sNTI6WzIsOTVdLDU1OlsyLDk1XSw2NDpbMiw2OF0sNjU6WzIsNjhdLDY2OlsyLDY4XSw2ODpbMiw2OF0sNzA6WzIsOTVdLDcxOlsyLDY4XSw3NTpbMiw5NV0sNzc6WzEsMjE2XSw4MTpbMiw2OF0sODI6WzIsNjhdLDgzOlsyLDk1XSw4ODpbMiw5NV0sOTA6WzIsOTVdLDk5OlsyLDk1XSwxMDE6WzIsOTVdLDEwMjpbMiw5NV0sMTAzOlsyLDk1XSwxMDc6WzIsOTVdLDExNTpbMiw5NV0sMTIzOlsyLDk1XSwxMjU6WzIsOTVdLDEyNjpbMiw5NV0sMTI5OlsyLDk1XSwxMzA6WzIsOTVdLDEzMTpbMiw5NV0sMTMyOlsyLDk1XSwxMzM6WzIsOTVdLDEzNDpbMiw5NV19LHsxOlsyLDEzM10sNjpbMiwxMzNdLDI1OlsyLDEzM10sMjY6WzIsMTMzXSw0NzpbMiwxMzNdLDUyOlsyLDEzM10sNTU6WzIsMTMzXSw3MDpbMiwxMzNdLDc1OlsyLDEzM10sODM6WzIsMTMzXSw4ODpbMiwxMzNdLDkwOlsyLDEzM10sOTk6WzIsMTMzXSwxMDA6ODUsMTAxOlsyLDEzM10sMTAyOlsyLDEzM10sMTAzOlsyLDEzM10sMTA2Ojg2LDEwNzpbMiwxMzNdLDEwODo2NywxMTU6WzIsMTMzXSwxMjM6WzIsMTMzXSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDQ0XSw2OlsyLDQ0XSwyNjpbMiw0NF0sOTk6WzIsNDRdLDEwMDo4NSwxMDE6WzIsNDRdLDEwMzpbMiw0NF0sMTA2Ojg2LDEwNzpbMiw0NF0sMTA4OjY3LDEyMzpbMiw0NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NjpbMSw3Ml0sOTk6WzEsMjE3XX0sezQ6MjE4LDc6NCw4OjYsOTo3LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs2OlsyLDEyNF0sMjU6WzIsMTI0XSw1MjpbMiwxMjRdLDU1OlsxLDIyMF0sODg6WzIsMTI0XSw4OToyMTksOTA6WzEsMTg4XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTEwXSw2OlsyLDExMF0sMjU6WzIsMTEwXSwyNjpbMiwxMTBdLDM4OlsyLDExMF0sNDc6WzIsMTEwXSw1MjpbMiwxMTBdLDU1OlsyLDExMF0sNjQ6WzIsMTEwXSw2NTpbMiwxMTBdLDY2OlsyLDExMF0sNjg6WzIsMTEwXSw3MDpbMiwxMTBdLDcxOlsyLDExMF0sNzU6WzIsMTEwXSw4MTpbMiwxMTBdLDgyOlsyLDExMF0sODM6WzIsMTEwXSw4ODpbMiwxMTBdLDkwOlsyLDExMF0sOTk6WzIsMTEwXSwxMDE6WzIsMTEwXSwxMDI6WzIsMTEwXSwxMDM6WzIsMTEwXSwxMDc6WzIsMTEwXSwxMTM6WzIsMTEwXSwxMTQ6WzIsMTEwXSwxMTU6WzIsMTEwXSwxMjM6WzIsMTEwXSwxMjU6WzIsMTEwXSwxMjY6WzIsMTEwXSwxMjk6WzIsMTEwXSwxMzA6WzIsMTEwXSwxMzE6WzIsMTEwXSwxMzI6WzIsMTEwXSwxMzM6WzIsMTEwXSwxMzQ6WzIsMTEwXX0sezY6WzIsNTFdLDI1OlsyLDUxXSw1MToyMjEsNTI6WzEsMjIyXSw4ODpbMiw1MV19LHs2OlsyLDExOV0sMjU6WzIsMTE5XSwyNjpbMiwxMTldLDUyOlsyLDExOV0sODM6WzIsMTE5XSw4ODpbMiwxMTldfSx7ODoxOTcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNTpbMSwxNDRdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU4OjE0NSw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NDoyMjMsODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTE6MTQzLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NjpbMiwxMjVdLDI1OlsyLDEyNV0sMjY6WzIsMTI1XSw1MjpbMiwxMjVdLDgzOlsyLDEyNV0sODg6WzIsMTI1XX0sezE6WzIsMTA5XSw2OlsyLDEwOV0sMjU6WzIsMTA5XSwyNjpbMiwxMDldLDM4OlsyLDEwOV0sNDE6WzIsMTA5XSw0NzpbMiwxMDldLDUyOlsyLDEwOV0sNTU6WzIsMTA5XSw2NDpbMiwxMDldLDY1OlsyLDEwOV0sNjY6WzIsMTA5XSw2ODpbMiwxMDldLDcwOlsyLDEwOV0sNzE6WzIsMTA5XSw3NTpbMiwxMDldLDc3OlsyLDEwOV0sODE6WzIsMTA5XSw4MjpbMiwxMDldLDgzOlsyLDEwOV0sODg6WzIsMTA5XSw5MDpbMiwxMDldLDk5OlsyLDEwOV0sMTAxOlsyLDEwOV0sMTAyOlsyLDEwOV0sMTAzOlsyLDEwOV0sMTA3OlsyLDEwOV0sMTE1OlsyLDEwOV0sMTIzOlsyLDEwOV0sMTI1OlsyLDEwOV0sMTI2OlsyLDEwOV0sMTI3OlsyLDEwOV0sMTI4OlsyLDEwOV0sMTI5OlsyLDEwOV0sMTMwOlsyLDEwOV0sMTMxOlsyLDEwOV0sMTMyOlsyLDEwOV0sMTMzOlsyLDEwOV0sMTM0OlsyLDEwOV0sMTM1OlsyLDEwOV19LHs1OjIyNCwyNTpbMSw1XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTM2XSw2OlsyLDEzNl0sMjU6WzIsMTM2XSwyNjpbMiwxMzZdLDQ3OlsyLDEzNl0sNTI6WzIsMTM2XSw1NTpbMiwxMzZdLDcwOlsyLDEzNl0sNzU6WzIsMTM2XSw4MzpbMiwxMzZdLDg4OlsyLDEzNl0sOTA6WzIsMTM2XSw5OTpbMiwxMzZdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMSwyMjVdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDExNTpbMiwxMzZdLDEyMzpbMiwxMzZdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTM4XSw2OlsyLDEzOF0sMjU6WzIsMTM4XSwyNjpbMiwxMzhdLDQ3OlsyLDEzOF0sNTI6WzIsMTM4XSw1NTpbMiwxMzhdLDcwOlsyLDEzOF0sNzU6WzIsMTM4XSw4MzpbMiwxMzhdLDg4OlsyLDEzOF0sOTA6WzIsMTM4XSw5OTpbMiwxMzhdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMSwyMjZdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDExNTpbMiwxMzhdLDEyMzpbMiwxMzhdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTQ0XSw2OlsyLDE0NF0sMjU6WzIsMTQ0XSwyNjpbMiwxNDRdLDQ3OlsyLDE0NF0sNTI6WzIsMTQ0XSw1NTpbMiwxNDRdLDcwOlsyLDE0NF0sNzU6WzIsMTQ0XSw4MzpbMiwxNDRdLDg4OlsyLDE0NF0sOTA6WzIsMTQ0XSw5OTpbMiwxNDRdLDEwMTpbMiwxNDRdLDEwMjpbMiwxNDRdLDEwMzpbMiwxNDRdLDEwNzpbMiwxNDRdLDExNTpbMiwxNDRdLDEyMzpbMiwxNDRdLDEyNTpbMiwxNDRdLDEyNjpbMiwxNDRdLDEyOTpbMiwxNDRdLDEzMDpbMiwxNDRdLDEzMTpbMiwxNDRdLDEzMjpbMiwxNDRdLDEzMzpbMiwxNDRdLDEzNDpbMiwxNDRdfSx7MTpbMiwxNDVdLDY6WzIsMTQ1XSwyNTpbMiwxNDVdLDI2OlsyLDE0NV0sNDc6WzIsMTQ1XSw1MjpbMiwxNDVdLDU1OlsyLDE0NV0sNzA6WzIsMTQ1XSw3NTpbMiwxNDVdLDgzOlsyLDE0NV0sODg6WzIsMTQ1XSw5MDpbMiwxNDVdLDk5OlsyLDE0NV0sMTAwOjg1LDEwMTpbMSw2M10sMTAyOlsyLDE0NV0sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTE1OlsyLDE0NV0sMTIzOlsyLDE0NV0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiwxNDldLDY6WzIsMTQ5XSwyNTpbMiwxNDldLDI2OlsyLDE0OV0sNDc6WzIsMTQ5XSw1MjpbMiwxNDldLDU1OlsyLDE0OV0sNzA6WzIsMTQ5XSw3NTpbMiwxNDldLDgzOlsyLDE0OV0sODg6WzIsMTQ5XSw5MDpbMiwxNDldLDk5OlsyLDE0OV0sMTAxOlsyLDE0OV0sMTAyOlsyLDE0OV0sMTAzOlsyLDE0OV0sMTA3OlsyLDE0OV0sMTE1OlsyLDE0OV0sMTIzOlsyLDE0OV0sMTI1OlsyLDE0OV0sMTI2OlsyLDE0OV0sMTI5OlsyLDE0OV0sMTMwOlsyLDE0OV0sMTMxOlsyLDE0OV0sMTMyOlsyLDE0OV0sMTMzOlsyLDE0OV0sMTM0OlsyLDE0OV19LHsxMTM6WzIsMTUxXSwxMTQ6WzIsMTUxXX0sezI3OjE1NiwyODpbMSw3MV0sNTY6MTU3LDU3OjE1OCw3MzpbMSw2OF0sODc6WzEsMTEyXSwxMTA6MjI3LDExMjoxNTV9LHs1MjpbMSwyMjhdLDExMzpbMiwxNTZdLDExNDpbMiwxNTZdfSx7NTI6WzIsMTUzXSwxMTM6WzIsMTUzXSwxMTQ6WzIsMTUzXX0sezUyOlsyLDE1NF0sMTEzOlsyLDE1NF0sMTE0OlsyLDE1NF19LHs1MjpbMiwxNTVdLDExMzpbMiwxNTVdLDExNDpbMiwxNTVdfSx7MTpbMiwxNTBdLDY6WzIsMTUwXSwyNTpbMiwxNTBdLDI2OlsyLDE1MF0sNDc6WzIsMTUwXSw1MjpbMiwxNTBdLDU1OlsyLDE1MF0sNzA6WzIsMTUwXSw3NTpbMiwxNTBdLDgzOlsyLDE1MF0sODg6WzIsMTUwXSw5MDpbMiwxNTBdLDk5OlsyLDE1MF0sMTAxOlsyLDE1MF0sMTAyOlsyLDE1MF0sMTAzOlsyLDE1MF0sMTA3OlsyLDE1MF0sMTE1OlsyLDE1MF0sMTIzOlsyLDE1MF0sMTI1OlsyLDE1MF0sMTI2OlsyLDE1MF0sMTI5OlsyLDE1MF0sMTMwOlsyLDE1MF0sMTMxOlsyLDE1MF0sMTMyOlsyLDE1MF0sMTMzOlsyLDE1MF0sMTM0OlsyLDE1MF19LHs4OjIyOSw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoyMzAsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezY6WzIsNTFdLDI1OlsyLDUxXSw1MToyMzEsNTI6WzEsMjMyXSw3NTpbMiw1MV19LHs2OlsyLDg3XSwyNTpbMiw4N10sMjY6WzIsODddLDUyOlsyLDg3XSw3NTpbMiw4N119LHs2OlsyLDM3XSwyNTpbMiwzN10sMjY6WzIsMzddLDQxOlsxLDIzM10sNTI6WzIsMzddLDc1OlsyLDM3XX0sezY6WzIsNDBdLDI1OlsyLDQwXSwyNjpbMiw0MF0sNTI6WzIsNDBdLDc1OlsyLDQwXX0sezY6WzIsNDFdLDI1OlsyLDQxXSwyNjpbMiw0MV0sNDE6WzIsNDFdLDUyOlsyLDQxXSw3NTpbMiw0MV19LHs2OlsyLDQyXSwyNTpbMiw0Ml0sMjY6WzIsNDJdLDQxOlsyLDQyXSw1MjpbMiw0Ml0sNzU6WzIsNDJdfSx7NjpbMiw0M10sMjU6WzIsNDNdLDI2OlsyLDQzXSw0MTpbMiw0M10sNTI6WzIsNDNdLDc1OlsyLDQzXX0sezE6WzIsNV0sNjpbMiw1XSwyNjpbMiw1XSw5OTpbMiw1XX0sezE6WzIsMjVdLDY6WzIsMjVdLDI1OlsyLDI1XSwyNjpbMiwyNV0sNDc6WzIsMjVdLDUyOlsyLDI1XSw1NTpbMiwyNV0sNzA6WzIsMjVdLDc1OlsyLDI1XSw4MzpbMiwyNV0sODg6WzIsMjVdLDkwOlsyLDI1XSw5NTpbMiwyNV0sOTY6WzIsMjVdLDk5OlsyLDI1XSwxMDE6WzIsMjVdLDEwMjpbMiwyNV0sMTAzOlsyLDI1XSwxMDc6WzIsMjVdLDExNTpbMiwyNV0sMTE4OlsyLDI1XSwxMjA6WzIsMjVdLDEyMzpbMiwyNV0sMTI1OlsyLDI1XSwxMjY6WzIsMjVdLDEyOTpbMiwyNV0sMTMwOlsyLDI1XSwxMzE6WzIsMjVdLDEzMjpbMiwyNV0sMTMzOlsyLDI1XSwxMzQ6WzIsMjVdfSx7MTpbMiwxODddLDY6WzIsMTg3XSwyNTpbMiwxODddLDI2OlsyLDE4N10sNDc6WzIsMTg3XSw1MjpbMiwxODddLDU1OlsyLDE4N10sNzA6WzIsMTg3XSw3NTpbMiwxODddLDgzOlsyLDE4N10sODg6WzIsMTg3XSw5MDpbMiwxODddLDk5OlsyLDE4N10sMTAwOjg1LDEwMTpbMiwxODddLDEwMjpbMiwxODddLDEwMzpbMiwxODddLDEwNjo4NiwxMDc6WzIsMTg3XSwxMDg6NjcsMTE1OlsyLDE4N10sMTIzOlsyLDE4N10sMTI1OlsyLDE4N10sMTI2OlsyLDE4N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMiwxODddLDEzMjpbMiwxODddLDEzMzpbMiwxODddLDEzNDpbMiwxODddfSx7MTpbMiwxODhdLDY6WzIsMTg4XSwyNTpbMiwxODhdLDI2OlsyLDE4OF0sNDc6WzIsMTg4XSw1MjpbMiwxODhdLDU1OlsyLDE4OF0sNzA6WzIsMTg4XSw3NTpbMiwxODhdLDgzOlsyLDE4OF0sODg6WzIsMTg4XSw5MDpbMiwxODhdLDk5OlsyLDE4OF0sMTAwOjg1LDEwMTpbMiwxODhdLDEwMjpbMiwxODhdLDEwMzpbMiwxODhdLDEwNjo4NiwxMDc6WzIsMTg4XSwxMDg6NjcsMTE1OlsyLDE4OF0sMTIzOlsyLDE4OF0sMTI1OlsyLDE4OF0sMTI2OlsyLDE4OF0sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMiwxODhdLDEzMjpbMiwxODhdLDEzMzpbMiwxODhdLDEzNDpbMiwxODhdfSx7MTpbMiwxODldLDY6WzIsMTg5XSwyNTpbMiwxODldLDI2OlsyLDE4OV0sNDc6WzIsMTg5XSw1MjpbMiwxODldLDU1OlsyLDE4OV0sNzA6WzIsMTg5XSw3NTpbMiwxODldLDgzOlsyLDE4OV0sODg6WzIsMTg5XSw5MDpbMiwxODldLDk5OlsyLDE4OV0sMTAwOjg1LDEwMTpbMiwxODldLDEwMjpbMiwxODldLDEwMzpbMiwxODldLDEwNjo4NiwxMDc6WzIsMTg5XSwxMDg6NjcsMTE1OlsyLDE4OV0sMTIzOlsyLDE4OV0sMTI1OlsyLDE4OV0sMTI2OlsyLDE4OV0sMTI5OlsxLDc2XSwxMzA6WzIsMTg5XSwxMzE6WzIsMTg5XSwxMzI6WzIsMTg5XSwxMzM6WzIsMTg5XSwxMzQ6WzIsMTg5XX0sezE6WzIsMTkwXSw2OlsyLDE5MF0sMjU6WzIsMTkwXSwyNjpbMiwxOTBdLDQ3OlsyLDE5MF0sNTI6WzIsMTkwXSw1NTpbMiwxOTBdLDcwOlsyLDE5MF0sNzU6WzIsMTkwXSw4MzpbMiwxOTBdLDg4OlsyLDE5MF0sOTA6WzIsMTkwXSw5OTpbMiwxOTBdLDEwMDo4NSwxMDE6WzIsMTkwXSwxMDI6WzIsMTkwXSwxMDM6WzIsMTkwXSwxMDY6ODYsMTA3OlsyLDE5MF0sMTA4OjY3LDExNTpbMiwxOTBdLDEyMzpbMiwxOTBdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsyLDE5MF0sMTMyOlsyLDE5MF0sMTMzOlsyLDE5MF0sMTM0OlsyLDE5MF19LHsxOlsyLDE5MV0sNjpbMiwxOTFdLDI1OlsyLDE5MV0sMjY6WzIsMTkxXSw0NzpbMiwxOTFdLDUyOlsyLDE5MV0sNTU6WzIsMTkxXSw3MDpbMiwxOTFdLDc1OlsyLDE5MV0sODM6WzIsMTkxXSw4ODpbMiwxOTFdLDkwOlsyLDE5MV0sOTk6WzIsMTkxXSwxMDA6ODUsMTAxOlsyLDE5MV0sMTAyOlsyLDE5MV0sMTAzOlsyLDE5MV0sMTA2Ojg2LDEwNzpbMiwxOTFdLDEwODo2NywxMTU6WzIsMTkxXSwxMjM6WzIsMTkxXSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsyLDE5MV0sMTMzOlsyLDE5MV0sMTM0OlsxLDgzXX0sezE6WzIsMTkyXSw2OlsyLDE5Ml0sMjU6WzIsMTkyXSwyNjpbMiwxOTJdLDQ3OlsyLDE5Ml0sNTI6WzIsMTkyXSw1NTpbMiwxOTJdLDcwOlsyLDE5Ml0sNzU6WzIsMTkyXSw4MzpbMiwxOTJdLDg4OlsyLDE5Ml0sOTA6WzIsMTkyXSw5OTpbMiwxOTJdLDEwMDo4NSwxMDE6WzIsMTkyXSwxMDI6WzIsMTkyXSwxMDM6WzIsMTkyXSwxMDY6ODYsMTA3OlsyLDE5Ml0sMTA4OjY3LDExNTpbMiwxOTJdLDEyMzpbMiwxOTJdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMiwxOTJdLDEzNDpbMSw4M119LHsxOlsyLDE5M10sNjpbMiwxOTNdLDI1OlsyLDE5M10sMjY6WzIsMTkzXSw0NzpbMiwxOTNdLDUyOlsyLDE5M10sNTU6WzIsMTkzXSw3MDpbMiwxOTNdLDc1OlsyLDE5M10sODM6WzIsMTkzXSw4ODpbMiwxOTNdLDkwOlsyLDE5M10sOTk6WzIsMTkzXSwxMDA6ODUsMTAxOlsyLDE5M10sMTAyOlsyLDE5M10sMTAzOlsyLDE5M10sMTA2Ojg2LDEwNzpbMiwxOTNdLDEwODo2NywxMTU6WzIsMTkzXSwxMjM6WzIsMTkzXSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsyLDE5M10sMTMzOlsyLDE5M10sMTM0OlsyLDE5M119LHsxOlsyLDE3OF0sNjpbMiwxNzhdLDI1OlsyLDE3OF0sMjY6WzIsMTc4XSw0NzpbMiwxNzhdLDUyOlsyLDE3OF0sNTU6WzIsMTc4XSw3MDpbMiwxNzhdLDc1OlsyLDE3OF0sODM6WzIsMTc4XSw4ODpbMiwxNzhdLDkwOlsyLDE3OF0sOTk6WzIsMTc4XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDI6WzIsMTc4XSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsMTc4XSwxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTc3XSw2OlsyLDE3N10sMjU6WzIsMTc3XSwyNjpbMiwxNzddLDQ3OlsyLDE3N10sNTI6WzIsMTc3XSw1NTpbMiwxNzddLDcwOlsyLDE3N10sNzU6WzIsMTc3XSw4MzpbMiwxNzddLDg4OlsyLDE3N10sOTA6WzIsMTc3XSw5OTpbMiwxNzddLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMiwxNzddLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDExNTpbMiwxNzddLDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiw5OV0sNjpbMiw5OV0sMjU6WzIsOTldLDI2OlsyLDk5XSw0NzpbMiw5OV0sNTI6WzIsOTldLDU1OlsyLDk5XSw2NDpbMiw5OV0sNjU6WzIsOTldLDY2OlsyLDk5XSw2ODpbMiw5OV0sNzA6WzIsOTldLDcxOlsyLDk5XSw3NTpbMiw5OV0sODE6WzIsOTldLDgyOlsyLDk5XSw4MzpbMiw5OV0sODg6WzIsOTldLDkwOlsyLDk5XSw5OTpbMiw5OV0sMTAxOlsyLDk5XSwxMDI6WzIsOTldLDEwMzpbMiw5OV0sMTA3OlsyLDk5XSwxMTU6WzIsOTldLDEyMzpbMiw5OV0sMTI1OlsyLDk5XSwxMjY6WzIsOTldLDEyOTpbMiw5OV0sMTMwOlsyLDk5XSwxMzE6WzIsOTldLDEzMjpbMiw5OV0sMTMzOlsyLDk5XSwxMzQ6WzIsOTldfSx7MTpbMiw3Nl0sNjpbMiw3Nl0sMjU6WzIsNzZdLDI2OlsyLDc2XSwzODpbMiw3Nl0sNDc6WzIsNzZdLDUyOlsyLDc2XSw1NTpbMiw3Nl0sNjQ6WzIsNzZdLDY1OlsyLDc2XSw2NjpbMiw3Nl0sNjg6WzIsNzZdLDcwOlsyLDc2XSw3MTpbMiw3Nl0sNzU6WzIsNzZdLDc3OlsyLDc2XSw4MTpbMiw3Nl0sODI6WzIsNzZdLDgzOlsyLDc2XSw4ODpbMiw3Nl0sOTA6WzIsNzZdLDk5OlsyLDc2XSwxMDE6WzIsNzZdLDEwMjpbMiw3Nl0sMTAzOlsyLDc2XSwxMDc6WzIsNzZdLDExNTpbMiw3Nl0sMTIzOlsyLDc2XSwxMjU6WzIsNzZdLDEyNjpbMiw3Nl0sMTI3OlsyLDc2XSwxMjg6WzIsNzZdLDEyOTpbMiw3Nl0sMTMwOlsyLDc2XSwxMzE6WzIsNzZdLDEzMjpbMiw3Nl0sMTMzOlsyLDc2XSwxMzQ6WzIsNzZdLDEzNTpbMiw3Nl19LHsxOlsyLDc3XSw2OlsyLDc3XSwyNTpbMiw3N10sMjY6WzIsNzddLDM4OlsyLDc3XSw0NzpbMiw3N10sNTI6WzIsNzddLDU1OlsyLDc3XSw2NDpbMiw3N10sNjU6WzIsNzddLDY2OlsyLDc3XSw2ODpbMiw3N10sNzA6WzIsNzddLDcxOlsyLDc3XSw3NTpbMiw3N10sNzc6WzIsNzddLDgxOlsyLDc3XSw4MjpbMiw3N10sODM6WzIsNzddLDg4OlsyLDc3XSw5MDpbMiw3N10sOTk6WzIsNzddLDEwMTpbMiw3N10sMTAyOlsyLDc3XSwxMDM6WzIsNzddLDEwNzpbMiw3N10sMTE1OlsyLDc3XSwxMjM6WzIsNzddLDEyNTpbMiw3N10sMTI2OlsyLDc3XSwxMjc6WzIsNzddLDEyODpbMiw3N10sMTI5OlsyLDc3XSwxMzA6WzIsNzddLDEzMTpbMiw3N10sMTMyOlsyLDc3XSwxMzM6WzIsNzddLDEzNDpbMiw3N10sMTM1OlsyLDc3XX0sezE6WzIsNzhdLDY6WzIsNzhdLDI1OlsyLDc4XSwyNjpbMiw3OF0sMzg6WzIsNzhdLDQ3OlsyLDc4XSw1MjpbMiw3OF0sNTU6WzIsNzhdLDY0OlsyLDc4XSw2NTpbMiw3OF0sNjY6WzIsNzhdLDY4OlsyLDc4XSw3MDpbMiw3OF0sNzE6WzIsNzhdLDc1OlsyLDc4XSw3NzpbMiw3OF0sODE6WzIsNzhdLDgyOlsyLDc4XSw4MzpbMiw3OF0sODg6WzIsNzhdLDkwOlsyLDc4XSw5OTpbMiw3OF0sMTAxOlsyLDc4XSwxMDI6WzIsNzhdLDEwMzpbMiw3OF0sMTA3OlsyLDc4XSwxMTU6WzIsNzhdLDEyMzpbMiw3OF0sMTI1OlsyLDc4XSwxMjY6WzIsNzhdLDEyNzpbMiw3OF0sMTI4OlsyLDc4XSwxMjk6WzIsNzhdLDEzMDpbMiw3OF0sMTMxOlsyLDc4XSwxMzI6WzIsNzhdLDEzMzpbMiw3OF0sMTM0OlsyLDc4XSwxMzU6WzIsNzhdfSx7NzA6WzEsMjM0XX0sezU1OlsxLDE4OV0sNzA6WzIsODNdLDg5OjIzNSw5MDpbMSwxODhdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NzA6WzIsODRdfSx7ODoyMzYsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MDpbMiwxMThdLDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTI6WzIsMTEyXSwyODpbMiwxMTJdLDMwOlsyLDExMl0sMzE6WzIsMTEyXSwzMzpbMiwxMTJdLDM0OlsyLDExMl0sMzU6WzIsMTEyXSwzNjpbMiwxMTJdLDQzOlsyLDExMl0sNDQ6WzIsMTEyXSw0NTpbMiwxMTJdLDQ5OlsyLDExMl0sNTA6WzIsMTEyXSw3MDpbMiwxMTJdLDczOlsyLDExMl0sNzY6WzIsMTEyXSw4MDpbMiwxMTJdLDg1OlsyLDExMl0sODY6WzIsMTEyXSw4NzpbMiwxMTJdLDkzOlsyLDExMl0sOTc6WzIsMTEyXSw5ODpbMiwxMTJdLDEwMTpbMiwxMTJdLDEwMzpbMiwxMTJdLDEwNTpbMiwxMTJdLDEwNzpbMiwxMTJdLDExNjpbMiwxMTJdLDEyMjpbMiwxMTJdLDEyNDpbMiwxMTJdLDEyNTpbMiwxMTJdLDEyNjpbMiwxMTJdLDEyNzpbMiwxMTJdLDEyODpbMiwxMTJdfSx7MTI6WzIsMTEzXSwyODpbMiwxMTNdLDMwOlsyLDExM10sMzE6WzIsMTEzXSwzMzpbMiwxMTNdLDM0OlsyLDExM10sMzU6WzIsMTEzXSwzNjpbMiwxMTNdLDQzOlsyLDExM10sNDQ6WzIsMTEzXSw0NTpbMiwxMTNdLDQ5OlsyLDExM10sNTA6WzIsMTEzXSw3MDpbMiwxMTNdLDczOlsyLDExM10sNzY6WzIsMTEzXSw4MDpbMiwxMTNdLDg1OlsyLDExM10sODY6WzIsMTEzXSw4NzpbMiwxMTNdLDkzOlsyLDExM10sOTc6WzIsMTEzXSw5ODpbMiwxMTNdLDEwMTpbMiwxMTNdLDEwMzpbMiwxMTNdLDEwNTpbMiwxMTNdLDEwNzpbMiwxMTNdLDExNjpbMiwxMTNdLDEyMjpbMiwxMTNdLDEyNDpbMiwxMTNdLDEyNTpbMiwxMTNdLDEyNjpbMiwxMTNdLDEyNzpbMiwxMTNdLDEyODpbMiwxMTNdfSx7MTpbMiw4Ml0sNjpbMiw4Ml0sMjU6WzIsODJdLDI2OlsyLDgyXSwzODpbMiw4Ml0sNDc6WzIsODJdLDUyOlsyLDgyXSw1NTpbMiw4Ml0sNjQ6WzIsODJdLDY1OlsyLDgyXSw2NjpbMiw4Ml0sNjg6WzIsODJdLDcwOlsyLDgyXSw3MTpbMiw4Ml0sNzU6WzIsODJdLDc3OlsyLDgyXSw4MTpbMiw4Ml0sODI6WzIsODJdLDgzOlsyLDgyXSw4ODpbMiw4Ml0sOTA6WzIsODJdLDk5OlsyLDgyXSwxMDE6WzIsODJdLDEwMjpbMiw4Ml0sMTAzOlsyLDgyXSwxMDc6WzIsODJdLDExNTpbMiw4Ml0sMTIzOlsyLDgyXSwxMjU6WzIsODJdLDEyNjpbMiw4Ml0sMTI3OlsyLDgyXSwxMjg6WzIsODJdLDEyOTpbMiw4Ml0sMTMwOlsyLDgyXSwxMzE6WzIsODJdLDEzMjpbMiw4Ml0sMTMzOlsyLDgyXSwxMzQ6WzIsODJdLDEzNTpbMiw4Ml19LHsxOlsyLDEwMF0sNjpbMiwxMDBdLDI1OlsyLDEwMF0sMjY6WzIsMTAwXSw0NzpbMiwxMDBdLDUyOlsyLDEwMF0sNTU6WzIsMTAwXSw2NDpbMiwxMDBdLDY1OlsyLDEwMF0sNjY6WzIsMTAwXSw2ODpbMiwxMDBdLDcwOlsyLDEwMF0sNzE6WzIsMTAwXSw3NTpbMiwxMDBdLDgxOlsyLDEwMF0sODI6WzIsMTAwXSw4MzpbMiwxMDBdLDg4OlsyLDEwMF0sOTA6WzIsMTAwXSw5OTpbMiwxMDBdLDEwMTpbMiwxMDBdLDEwMjpbMiwxMDBdLDEwMzpbMiwxMDBdLDEwNzpbMiwxMDBdLDExNTpbMiwxMDBdLDEyMzpbMiwxMDBdLDEyNTpbMiwxMDBdLDEyNjpbMiwxMDBdLDEyOTpbMiwxMDBdLDEzMDpbMiwxMDBdLDEzMTpbMiwxMDBdLDEzMjpbMiwxMDBdLDEzMzpbMiwxMDBdLDEzNDpbMiwxMDBdfSx7MTpbMiwzNF0sNjpbMiwzNF0sMjU6WzIsMzRdLDI2OlsyLDM0XSw0NzpbMiwzNF0sNTI6WzIsMzRdLDU1OlsyLDM0XSw3MDpbMiwzNF0sNzU6WzIsMzRdLDgzOlsyLDM0XSw4ODpbMiwzNF0sOTA6WzIsMzRdLDk5OlsyLDM0XSwxMDA6ODUsMTAxOlsyLDM0XSwxMDI6WzIsMzRdLDEwMzpbMiwzNF0sMTA2Ojg2LDEwNzpbMiwzNF0sMTA4OjY3LDExNTpbMiwzNF0sMTIzOlsyLDM0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHs4OjIzNyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoyMzgsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTA1XSw2OlsyLDEwNV0sMjU6WzIsMTA1XSwyNjpbMiwxMDVdLDQ3OlsyLDEwNV0sNTI6WzIsMTA1XSw1NTpbMiwxMDVdLDY0OlsyLDEwNV0sNjU6WzIsMTA1XSw2NjpbMiwxMDVdLDY4OlsyLDEwNV0sNzA6WzIsMTA1XSw3MTpbMiwxMDVdLDc1OlsyLDEwNV0sODE6WzIsMTA1XSw4MjpbMiwxMDVdLDgzOlsyLDEwNV0sODg6WzIsMTA1XSw5MDpbMiwxMDVdLDk5OlsyLDEwNV0sMTAxOlsyLDEwNV0sMTAyOlsyLDEwNV0sMTAzOlsyLDEwNV0sMTA3OlsyLDEwNV0sMTE1OlsyLDEwNV0sMTIzOlsyLDEwNV0sMTI1OlsyLDEwNV0sMTI2OlsyLDEwNV0sMTI5OlsyLDEwNV0sMTMwOlsyLDEwNV0sMTMxOlsyLDEwNV0sMTMyOlsyLDEwNV0sMTMzOlsyLDEwNV0sMTM0OlsyLDEwNV19LHs2OlsyLDUxXSwyNTpbMiw1MV0sNTE6MjM5LDUyOlsxLDIyMl0sODM6WzIsNTFdfSx7NjpbMiwxMjRdLDI1OlsyLDEyNF0sMjY6WzIsMTI0XSw1MjpbMiwxMjRdLDU1OlsxLDI0MF0sODM6WzIsMTI0XSw4ODpbMiwxMjRdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NDg6MjQxLDQ5OlsxLDU4XSw1MDpbMSw1OV19LHsyNzoxMDcsMjg6WzEsNzFdLDQyOjEwOCw1MzoyNDIsNTQ6MTA2LDU2OjEwOSw1NzoxMTAsNzM6WzEsNjhdLDg2OlsxLDExMV0sODc6WzEsMTEyXX0sezQ3OlsyLDU3XSw1MjpbMiw1N119LHs4OjI0Myw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiwxOTRdLDY6WzIsMTk0XSwyNTpbMiwxOTRdLDI2OlsyLDE5NF0sNDc6WzIsMTk0XSw1MjpbMiwxOTRdLDU1OlsyLDE5NF0sNzA6WzIsMTk0XSw3NTpbMiwxOTRdLDgzOlsyLDE5NF0sODg6WzIsMTk0XSw5MDpbMiwxOTRdLDk5OlsyLDE5NF0sMTAwOjg1LDEwMTpbMiwxOTRdLDEwMjpbMiwxOTRdLDEwMzpbMiwxOTRdLDEwNjo4NiwxMDc6WzIsMTk0XSwxMDg6NjcsMTE1OlsyLDE5NF0sMTIzOlsyLDE5NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7ODoyNDQsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTk2XSw2OlsyLDE5Nl0sMjU6WzIsMTk2XSwyNjpbMiwxOTZdLDQ3OlsyLDE5Nl0sNTI6WzIsMTk2XSw1NTpbMiwxOTZdLDcwOlsyLDE5Nl0sNzU6WzIsMTk2XSw4MzpbMiwxOTZdLDg4OlsyLDE5Nl0sOTA6WzIsMTk2XSw5OTpbMiwxOTZdLDEwMDo4NSwxMDE6WzIsMTk2XSwxMDI6WzIsMTk2XSwxMDM6WzIsMTk2XSwxMDY6ODYsMTA3OlsyLDE5Nl0sMTA4OjY3LDExNTpbMiwxOTZdLDEyMzpbMiwxOTZdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTc2XSw2OlsyLDE3Nl0sMjU6WzIsMTc2XSwyNjpbMiwxNzZdLDQ3OlsyLDE3Nl0sNTI6WzIsMTc2XSw1NTpbMiwxNzZdLDcwOlsyLDE3Nl0sNzU6WzIsMTc2XSw4MzpbMiwxNzZdLDg4OlsyLDE3Nl0sOTA6WzIsMTc2XSw5OTpbMiwxNzZdLDEwMTpbMiwxNzZdLDEwMjpbMiwxNzZdLDEwMzpbMiwxNzZdLDEwNzpbMiwxNzZdLDExNTpbMiwxNzZdLDEyMzpbMiwxNzZdLDEyNTpbMiwxNzZdLDEyNjpbMiwxNzZdLDEyOTpbMiwxNzZdLDEzMDpbMiwxNzZdLDEzMTpbMiwxNzZdLDEzMjpbMiwxNzZdLDEzMzpbMiwxNzZdLDEzNDpbMiwxNzZdfSx7ODoyNDUsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTI5XSw2OlsyLDEyOV0sMjU6WzIsMTI5XSwyNjpbMiwxMjldLDQ3OlsyLDEyOV0sNTI6WzIsMTI5XSw1NTpbMiwxMjldLDcwOlsyLDEyOV0sNzU6WzIsMTI5XSw4MzpbMiwxMjldLDg4OlsyLDEyOV0sOTA6WzIsMTI5XSw5NTpbMSwyNDZdLDk5OlsyLDEyOV0sMTAxOlsyLDEyOV0sMTAyOlsyLDEyOV0sMTAzOlsyLDEyOV0sMTA3OlsyLDEyOV0sMTE1OlsyLDEyOV0sMTIzOlsyLDEyOV0sMTI1OlsyLDEyOV0sMTI2OlsyLDEyOV0sMTI5OlsyLDEyOV0sMTMwOlsyLDEyOV0sMTMxOlsyLDEyOV0sMTMyOlsyLDEyOV0sMTMzOlsyLDEyOV0sMTM0OlsyLDEyOV19LHs1OjI0NywyNTpbMSw1XX0sezI3OjI0OCwyODpbMSw3MV19LHsxMTc6MjQ5LDExOToyMTIsMTIwOlsxLDIxM119LHsyNjpbMSwyNTBdLDExODpbMSwyNTFdLDExOToyNTIsMTIwOlsxLDIxM119LHsyNjpbMiwxNjldLDExODpbMiwxNjldLDEyMDpbMiwxNjldfSx7ODoyNTQsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MjoyNTMsOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDkzXSw1OjI1NSw2OlsyLDkzXSwyNTpbMSw1XSwyNjpbMiw5M10sNDc6WzIsOTNdLDUyOlsyLDkzXSw1NTpbMiw5M10sNzA6WzIsOTNdLDc1OlsyLDkzXSw4MzpbMiw5M10sODg6WzIsOTNdLDkwOlsyLDkzXSw5OTpbMiw5M10sMTAwOjg1LDEwMTpbMSw2M10sMTAyOlsyLDkzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsOTNdLDEyMzpbMiw5M10sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiw5Nl0sNjpbMiw5Nl0sMjU6WzIsOTZdLDI2OlsyLDk2XSw0NzpbMiw5Nl0sNTI6WzIsOTZdLDU1OlsyLDk2XSw3MDpbMiw5Nl0sNzU6WzIsOTZdLDgzOlsyLDk2XSw4ODpbMiw5Nl0sOTA6WzIsOTZdLDk5OlsyLDk2XSwxMDE6WzIsOTZdLDEwMjpbMiw5Nl0sMTAzOlsyLDk2XSwxMDc6WzIsOTZdLDExNTpbMiw5Nl0sMTIzOlsyLDk2XSwxMjU6WzIsOTZdLDEyNjpbMiw5Nl0sMTI5OlsyLDk2XSwxMzA6WzIsOTZdLDEzMTpbMiw5Nl0sMTMyOlsyLDk2XSwxMzM6WzIsOTZdLDEzNDpbMiw5Nl19LHs4OjI1Niw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiwxMzRdLDY6WzIsMTM0XSwyNTpbMiwxMzRdLDI2OlsyLDEzNF0sNDc6WzIsMTM0XSw1MjpbMiwxMzRdLDU1OlsyLDEzNF0sNjQ6WzIsMTM0XSw2NTpbMiwxMzRdLDY2OlsyLDEzNF0sNjg6WzIsMTM0XSw3MDpbMiwxMzRdLDcxOlsyLDEzNF0sNzU6WzIsMTM0XSw4MTpbMiwxMzRdLDgyOlsyLDEzNF0sODM6WzIsMTM0XSw4ODpbMiwxMzRdLDkwOlsyLDEzNF0sOTk6WzIsMTM0XSwxMDE6WzIsMTM0XSwxMDI6WzIsMTM0XSwxMDM6WzIsMTM0XSwxMDc6WzIsMTM0XSwxMTU6WzIsMTM0XSwxMjM6WzIsMTM0XSwxMjU6WzIsMTM0XSwxMjY6WzIsMTM0XSwxMjk6WzIsMTM0XSwxMzA6WzIsMTM0XSwxMzE6WzIsMTM0XSwxMzI6WzIsMTM0XSwxMzM6WzIsMTM0XSwxMzQ6WzIsMTM0XX0sezY6WzEsNzJdLDI2OlsxLDI1N119LHs4OjI1OCw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NjpbMiw2M10sMTI6WzIsMTEzXSwyNTpbMiw2M10sMjg6WzIsMTEzXSwzMDpbMiwxMTNdLDMxOlsyLDExM10sMzM6WzIsMTEzXSwzNDpbMiwxMTNdLDM1OlsyLDExM10sMzY6WzIsMTEzXSw0MzpbMiwxMTNdLDQ0OlsyLDExM10sNDU6WzIsMTEzXSw0OTpbMiwxMTNdLDUwOlsyLDExM10sNTI6WzIsNjNdLDczOlsyLDExM10sNzY6WzIsMTEzXSw4MDpbMiwxMTNdLDg1OlsyLDExM10sODY6WzIsMTEzXSw4NzpbMiwxMTNdLDg4OlsyLDYzXSw5MzpbMiwxMTNdLDk3OlsyLDExM10sOTg6WzIsMTEzXSwxMDE6WzIsMTEzXSwxMDM6WzIsMTEzXSwxMDU6WzIsMTEzXSwxMDc6WzIsMTEzXSwxMTY6WzIsMTEzXSwxMjI6WzIsMTEzXSwxMjQ6WzIsMTEzXSwxMjU6WzIsMTEzXSwxMjY6WzIsMTEzXSwxMjc6WzIsMTEzXSwxMjg6WzIsMTEzXX0sezY6WzEsMjYwXSwyNTpbMSwyNjFdLDg4OlsxLDI1OV19LHs2OlsyLDUyXSw4OjE5Nyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsyLDUyXSwyNjpbMiw1Ml0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTg6MTQ1LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDgzOlsyLDUyXSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw4ODpbMiw1Ml0sOTE6MjYyLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NjpbMiw1MV0sMjU6WzIsNTFdLDI2OlsyLDUxXSw1MToyNjMsNTI6WzEsMjIyXX0sezE6WzIsMTczXSw2OlsyLDE3M10sMjU6WzIsMTczXSwyNjpbMiwxNzNdLDQ3OlsyLDE3M10sNTI6WzIsMTczXSw1NTpbMiwxNzNdLDcwOlsyLDE3M10sNzU6WzIsMTczXSw4MzpbMiwxNzNdLDg4OlsyLDE3M10sOTA6WzIsMTczXSw5OTpbMiwxNzNdLDEwMTpbMiwxNzNdLDEwMjpbMiwxNzNdLDEwMzpbMiwxNzNdLDEwNzpbMiwxNzNdLDExNTpbMiwxNzNdLDExODpbMiwxNzNdLDEyMzpbMiwxNzNdLDEyNTpbMiwxNzNdLDEyNjpbMiwxNzNdLDEyOTpbMiwxNzNdLDEzMDpbMiwxNzNdLDEzMTpbMiwxNzNdLDEzMjpbMiwxNzNdLDEzMzpbMiwxNzNdLDEzNDpbMiwxNzNdfSx7ODoyNjQsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MjY1LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxMTM6WzIsMTUyXSwxMTQ6WzIsMTUyXX0sezI3OjE1NiwyODpbMSw3MV0sNTY6MTU3LDU3OjE1OCw3MzpbMSw2OF0sODc6WzEsMTEyXSwxMTI6MjY2fSx7MTpbMiwxNThdLDY6WzIsMTU4XSwyNTpbMiwxNThdLDI2OlsyLDE1OF0sNDc6WzIsMTU4XSw1MjpbMiwxNThdLDU1OlsyLDE1OF0sNzA6WzIsMTU4XSw3NTpbMiwxNThdLDgzOlsyLDE1OF0sODg6WzIsMTU4XSw5MDpbMiwxNThdLDk5OlsyLDE1OF0sMTAwOjg1LDEwMTpbMiwxNThdLDEwMjpbMSwyNjddLDEwMzpbMiwxNThdLDEwNjo4NiwxMDc6WzIsMTU4XSwxMDg6NjcsMTE1OlsxLDI2OF0sMTIzOlsyLDE1OF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiwxNTldLDY6WzIsMTU5XSwyNTpbMiwxNTldLDI2OlsyLDE1OV0sNDc6WzIsMTU5XSw1MjpbMiwxNTldLDU1OlsyLDE1OV0sNzA6WzIsMTU5XSw3NTpbMiwxNTldLDgzOlsyLDE1OV0sODg6WzIsMTU5XSw5MDpbMiwxNTldLDk5OlsyLDE1OV0sMTAwOjg1LDEwMTpbMiwxNTldLDEwMjpbMSwyNjldLDEwMzpbMiwxNTldLDEwNjo4NiwxMDc6WzIsMTU5XSwxMDg6NjcsMTE1OlsyLDE1OV0sMTIzOlsyLDE1OV0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NjpbMSwyNzFdLDI1OlsxLDI3Ml0sNzU6WzEsMjcwXX0sezY6WzIsNTJdLDExOjE2NSwyNTpbMiw1Ml0sMjY6WzIsNTJdLDI3OjE2NiwyODpbMSw3MV0sMjk6MTY3LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzk6MjczLDQwOjE2NCw0MjoxNjgsNDQ6WzEsNDZdLDc1OlsyLDUyXSw4NjpbMSwxMTFdfSx7ODoyNzQsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNTpbMSwyNzVdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw4MV0sNjpbMiw4MV0sMjU6WzIsODFdLDI2OlsyLDgxXSwzODpbMiw4MV0sNDc6WzIsODFdLDUyOlsyLDgxXSw1NTpbMiw4MV0sNjQ6WzIsODFdLDY1OlsyLDgxXSw2NjpbMiw4MV0sNjg6WzIsODFdLDcwOlsyLDgxXSw3MTpbMiw4MV0sNzU6WzIsODFdLDc3OlsyLDgxXSw4MTpbMiw4MV0sODI6WzIsODFdLDgzOlsyLDgxXSw4ODpbMiw4MV0sOTA6WzIsODFdLDk5OlsyLDgxXSwxMDE6WzIsODFdLDEwMjpbMiw4MV0sMTAzOlsyLDgxXSwxMDc6WzIsODFdLDExNTpbMiw4MV0sMTIzOlsyLDgxXSwxMjU6WzIsODFdLDEyNjpbMiw4MV0sMTI3OlsyLDgxXSwxMjg6WzIsODFdLDEyOTpbMiw4MV0sMTMwOlsyLDgxXSwxMzE6WzIsODFdLDEzMjpbMiw4MV0sMTMzOlsyLDgxXSwxMzQ6WzIsODFdLDEzNTpbMiw4MV19LHs4OjI3Niw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDcwOlsyLDExNl0sNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs3MDpbMiwxMTddLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiwzNV0sNjpbMiwzNV0sMjU6WzIsMzVdLDI2OlsyLDM1XSw0NzpbMiwzNV0sNTI6WzIsMzVdLDU1OlsyLDM1XSw3MDpbMiwzNV0sNzU6WzIsMzVdLDgzOlsyLDM1XSw4ODpbMiwzNV0sOTA6WzIsMzVdLDk5OlsyLDM1XSwxMDA6ODUsMTAxOlsyLDM1XSwxMDI6WzIsMzVdLDEwMzpbMiwzNV0sMTA2Ojg2LDEwNzpbMiwzNV0sMTA4OjY3LDExNTpbMiwzNV0sMTIzOlsyLDM1XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsyNjpbMSwyNzddLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NjpbMSwyNjBdLDI1OlsxLDI2MV0sODM6WzEsMjc4XX0sezY6WzIsNjNdLDI1OlsyLDYzXSwyNjpbMiw2M10sNTI6WzIsNjNdLDgzOlsyLDYzXSw4ODpbMiw2M119LHs1OjI3OSwyNTpbMSw1XX0sezQ3OlsyLDU1XSw1MjpbMiw1NV19LHs0NzpbMiw1OF0sNTI6WzIsNThdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MjY6WzEsMjgwXSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezU6MjgxLDI1OlsxLDVdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NToyODIsMjU6WzEsNV19LHsxOlsyLDEzMF0sNjpbMiwxMzBdLDI1OlsyLDEzMF0sMjY6WzIsMTMwXSw0NzpbMiwxMzBdLDUyOlsyLDEzMF0sNTU6WzIsMTMwXSw3MDpbMiwxMzBdLDc1OlsyLDEzMF0sODM6WzIsMTMwXSw4ODpbMiwxMzBdLDkwOlsyLDEzMF0sOTk6WzIsMTMwXSwxMDE6WzIsMTMwXSwxMDI6WzIsMTMwXSwxMDM6WzIsMTMwXSwxMDc6WzIsMTMwXSwxMTU6WzIsMTMwXSwxMjM6WzIsMTMwXSwxMjU6WzIsMTMwXSwxMjY6WzIsMTMwXSwxMjk6WzIsMTMwXSwxMzA6WzIsMTMwXSwxMzE6WzIsMTMwXSwxMzI6WzIsMTMwXSwxMzM6WzIsMTMwXSwxMzQ6WzIsMTMwXX0sezU6MjgzLDI1OlsxLDVdfSx7MjY6WzEsMjg0XSwxMTg6WzEsMjg1XSwxMTk6MjUyLDEyMDpbMSwyMTNdfSx7MTpbMiwxNjddLDY6WzIsMTY3XSwyNTpbMiwxNjddLDI2OlsyLDE2N10sNDc6WzIsMTY3XSw1MjpbMiwxNjddLDU1OlsyLDE2N10sNzA6WzIsMTY3XSw3NTpbMiwxNjddLDgzOlsyLDE2N10sODg6WzIsMTY3XSw5MDpbMiwxNjddLDk5OlsyLDE2N10sMTAxOlsyLDE2N10sMTAyOlsyLDE2N10sMTAzOlsyLDE2N10sMTA3OlsyLDE2N10sMTE1OlsyLDE2N10sMTIzOlsyLDE2N10sMTI1OlsyLDE2N10sMTI2OlsyLDE2N10sMTI5OlsyLDE2N10sMTMwOlsyLDE2N10sMTMxOlsyLDE2N10sMTMyOlsyLDE2N10sMTMzOlsyLDE2N10sMTM0OlsyLDE2N119LHs1OjI4NiwyNTpbMSw1XX0sezI2OlsyLDE3MF0sMTE4OlsyLDE3MF0sMTIwOlsyLDE3MF19LHs1OjI4NywyNTpbMSw1XSw1MjpbMSwyODhdfSx7MjU6WzIsMTI2XSw1MjpbMiwxMjZdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiw5NF0sNjpbMiw5NF0sMjU6WzIsOTRdLDI2OlsyLDk0XSw0NzpbMiw5NF0sNTI6WzIsOTRdLDU1OlsyLDk0XSw3MDpbMiw5NF0sNzU6WzIsOTRdLDgzOlsyLDk0XSw4ODpbMiw5NF0sOTA6WzIsOTRdLDk5OlsyLDk0XSwxMDE6WzIsOTRdLDEwMjpbMiw5NF0sMTAzOlsyLDk0XSwxMDc6WzIsOTRdLDExNTpbMiw5NF0sMTIzOlsyLDk0XSwxMjU6WzIsOTRdLDEyNjpbMiw5NF0sMTI5OlsyLDk0XSwxMzA6WzIsOTRdLDEzMTpbMiw5NF0sMTMyOlsyLDk0XSwxMzM6WzIsOTRdLDEzNDpbMiw5NF19LHsxOlsyLDk3XSw1OjI4OSw2OlsyLDk3XSwyNTpbMSw1XSwyNjpbMiw5N10sNDc6WzIsOTddLDUyOlsyLDk3XSw1NTpbMiw5N10sNzA6WzIsOTddLDc1OlsyLDk3XSw4MzpbMiw5N10sODg6WzIsOTddLDkwOlsyLDk3XSw5OTpbMiw5N10sMTAwOjg1LDEwMTpbMSw2M10sMTAyOlsyLDk3XSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsOTddLDEyMzpbMiw5N10sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7OTk6WzEsMjkwXX0sezg4OlsxLDI5MV0sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDExMV0sNjpbMiwxMTFdLDI1OlsyLDExMV0sMjY6WzIsMTExXSwzODpbMiwxMTFdLDQ3OlsyLDExMV0sNTI6WzIsMTExXSw1NTpbMiwxMTFdLDY0OlsyLDExMV0sNjU6WzIsMTExXSw2NjpbMiwxMTFdLDY4OlsyLDExMV0sNzA6WzIsMTExXSw3MTpbMiwxMTFdLDc1OlsyLDExMV0sODE6WzIsMTExXSw4MjpbMiwxMTFdLDgzOlsyLDExMV0sODg6WzIsMTExXSw5MDpbMiwxMTFdLDk5OlsyLDExMV0sMTAxOlsyLDExMV0sMTAyOlsyLDExMV0sMTAzOlsyLDExMV0sMTA3OlsyLDExMV0sMTEzOlsyLDExMV0sMTE0OlsyLDExMV0sMTE1OlsyLDExMV0sMTIzOlsyLDExMV0sMTI1OlsyLDExMV0sMTI2OlsyLDExMV0sMTI5OlsyLDExMV0sMTMwOlsyLDExMV0sMTMxOlsyLDExMV0sMTMyOlsyLDExMV0sMTMzOlsyLDExMV0sMTM0OlsyLDExMV19LHs4OjE5Nyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU4OjE0NSw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MToyOTIsOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE5Nyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDE0NF0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTg6MTQ1LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg0OjI5Myw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MToxNDMsOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs2OlsyLDEyMF0sMjU6WzIsMTIwXSwyNjpbMiwxMjBdLDUyOlsyLDEyMF0sODM6WzIsMTIwXSw4ODpbMiwxMjBdfSx7NjpbMSwyNjBdLDI1OlsxLDI2MV0sMjY6WzEsMjk0XX0sezE6WzIsMTM3XSw2OlsyLDEzN10sMjU6WzIsMTM3XSwyNjpbMiwxMzddLDQ3OlsyLDEzN10sNTI6WzIsMTM3XSw1NTpbMiwxMzddLDcwOlsyLDEzN10sNzU6WzIsMTM3XSw4MzpbMiwxMzddLDg4OlsyLDEzN10sOTA6WzIsMTM3XSw5OTpbMiwxMzddLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMiwxMzddLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDExNTpbMiwxMzddLDEyMzpbMiwxMzddLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTM5XSw2OlsyLDEzOV0sMjU6WzIsMTM5XSwyNjpbMiwxMzldLDQ3OlsyLDEzOV0sNTI6WzIsMTM5XSw1NTpbMiwxMzldLDcwOlsyLDEzOV0sNzU6WzIsMTM5XSw4MzpbMiwxMzldLDg4OlsyLDEzOV0sOTA6WzIsMTM5XSw5OTpbMiwxMzldLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMiwxMzldLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDExNTpbMiwxMzldLDEyMzpbMiwxMzldLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezExMzpbMiwxNTddLDExNDpbMiwxNTddfSx7ODoyOTUsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6Mjk2LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjI5Nyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw4NV0sNjpbMiw4NV0sMjU6WzIsODVdLDI2OlsyLDg1XSwzODpbMiw4NV0sNDc6WzIsODVdLDUyOlsyLDg1XSw1NTpbMiw4NV0sNjQ6WzIsODVdLDY1OlsyLDg1XSw2NjpbMiw4NV0sNjg6WzIsODVdLDcwOlsyLDg1XSw3MTpbMiw4NV0sNzU6WzIsODVdLDgxOlsyLDg1XSw4MjpbMiw4NV0sODM6WzIsODVdLDg4OlsyLDg1XSw5MDpbMiw4NV0sOTk6WzIsODVdLDEwMTpbMiw4NV0sMTAyOlsyLDg1XSwxMDM6WzIsODVdLDEwNzpbMiw4NV0sMTEzOlsyLDg1XSwxMTQ6WzIsODVdLDExNTpbMiw4NV0sMTIzOlsyLDg1XSwxMjU6WzIsODVdLDEyNjpbMiw4NV0sMTI5OlsyLDg1XSwxMzA6WzIsODVdLDEzMTpbMiw4NV0sMTMyOlsyLDg1XSwxMzM6WzIsODVdLDEzNDpbMiw4NV19LHsxMToxNjUsMjc6MTY2LDI4OlsxLDcxXSwyOToxNjcsMzA6WzEsNjldLDMxOlsxLDcwXSwzOToyOTgsNDA6MTY0LDQyOjE2OCw0NDpbMSw0Nl0sODY6WzEsMTExXX0sezY6WzIsODZdLDExOjE2NSwyNTpbMiw4Nl0sMjY6WzIsODZdLDI3OjE2NiwyODpbMSw3MV0sMjk6MTY3LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzk6MTYzLDQwOjE2NCw0MjoxNjgsNDQ6WzEsNDZdLDUyOlsyLDg2XSw3NDoyOTksODY6WzEsMTExXX0sezY6WzIsODhdLDI1OlsyLDg4XSwyNjpbMiw4OF0sNTI6WzIsODhdLDc1OlsyLDg4XX0sezY6WzIsMzhdLDI1OlsyLDM4XSwyNjpbMiwzOF0sNTI6WzIsMzhdLDc1OlsyLDM4XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezg6MzAwLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs3MDpbMiwxMTVdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiwzNl0sNjpbMiwzNl0sMjU6WzIsMzZdLDI2OlsyLDM2XSw0NzpbMiwzNl0sNTI6WzIsMzZdLDU1OlsyLDM2XSw3MDpbMiwzNl0sNzU6WzIsMzZdLDgzOlsyLDM2XSw4ODpbMiwzNl0sOTA6WzIsMzZdLDk5OlsyLDM2XSwxMDE6WzIsMzZdLDEwMjpbMiwzNl0sMTAzOlsyLDM2XSwxMDc6WzIsMzZdLDExNTpbMiwzNl0sMTIzOlsyLDM2XSwxMjU6WzIsMzZdLDEyNjpbMiwzNl0sMTI5OlsyLDM2XSwxMzA6WzIsMzZdLDEzMTpbMiwzNl0sMTMyOlsyLDM2XSwxMzM6WzIsMzZdLDEzNDpbMiwzNl19LHsxOlsyLDEwNl0sNjpbMiwxMDZdLDI1OlsyLDEwNl0sMjY6WzIsMTA2XSw0NzpbMiwxMDZdLDUyOlsyLDEwNl0sNTU6WzIsMTA2XSw2NDpbMiwxMDZdLDY1OlsyLDEwNl0sNjY6WzIsMTA2XSw2ODpbMiwxMDZdLDcwOlsyLDEwNl0sNzE6WzIsMTA2XSw3NTpbMiwxMDZdLDgxOlsyLDEwNl0sODI6WzIsMTA2XSw4MzpbMiwxMDZdLDg4OlsyLDEwNl0sOTA6WzIsMTA2XSw5OTpbMiwxMDZdLDEwMTpbMiwxMDZdLDEwMjpbMiwxMDZdLDEwMzpbMiwxMDZdLDEwNzpbMiwxMDZdLDExNTpbMiwxMDZdLDEyMzpbMiwxMDZdLDEyNTpbMiwxMDZdLDEyNjpbMiwxMDZdLDEyOTpbMiwxMDZdLDEzMDpbMiwxMDZdLDEzMTpbMiwxMDZdLDEzMjpbMiwxMDZdLDEzMzpbMiwxMDZdLDEzNDpbMiwxMDZdfSx7MTpbMiw0N10sNjpbMiw0N10sMjU6WzIsNDddLDI2OlsyLDQ3XSw0NzpbMiw0N10sNTI6WzIsNDddLDU1OlsyLDQ3XSw3MDpbMiw0N10sNzU6WzIsNDddLDgzOlsyLDQ3XSw4ODpbMiw0N10sOTA6WzIsNDddLDk5OlsyLDQ3XSwxMDE6WzIsNDddLDEwMjpbMiw0N10sMTAzOlsyLDQ3XSwxMDc6WzIsNDddLDExNTpbMiw0N10sMTIzOlsyLDQ3XSwxMjU6WzIsNDddLDEyNjpbMiw0N10sMTI5OlsyLDQ3XSwxMzA6WzIsNDddLDEzMTpbMiw0N10sMTMyOlsyLDQ3XSwxMzM6WzIsNDddLDEzNDpbMiw0N119LHsxOlsyLDE5NV0sNjpbMiwxOTVdLDI1OlsyLDE5NV0sMjY6WzIsMTk1XSw0NzpbMiwxOTVdLDUyOlsyLDE5NV0sNTU6WzIsMTk1XSw3MDpbMiwxOTVdLDc1OlsyLDE5NV0sODM6WzIsMTk1XSw4ODpbMiwxOTVdLDkwOlsyLDE5NV0sOTk6WzIsMTk1XSwxMDE6WzIsMTk1XSwxMDI6WzIsMTk1XSwxMDM6WzIsMTk1XSwxMDc6WzIsMTk1XSwxMTU6WzIsMTk1XSwxMjM6WzIsMTk1XSwxMjU6WzIsMTk1XSwxMjY6WzIsMTk1XSwxMjk6WzIsMTk1XSwxMzA6WzIsMTk1XSwxMzE6WzIsMTk1XSwxMzI6WzIsMTk1XSwxMzM6WzIsMTk1XSwxMzQ6WzIsMTk1XX0sezE6WzIsMTc0XSw2OlsyLDE3NF0sMjU6WzIsMTc0XSwyNjpbMiwxNzRdLDQ3OlsyLDE3NF0sNTI6WzIsMTc0XSw1NTpbMiwxNzRdLDcwOlsyLDE3NF0sNzU6WzIsMTc0XSw4MzpbMiwxNzRdLDg4OlsyLDE3NF0sOTA6WzIsMTc0XSw5OTpbMiwxNzRdLDEwMTpbMiwxNzRdLDEwMjpbMiwxNzRdLDEwMzpbMiwxNzRdLDEwNzpbMiwxNzRdLDExNTpbMiwxNzRdLDExODpbMiwxNzRdLDEyMzpbMiwxNzRdLDEyNTpbMiwxNzRdLDEyNjpbMiwxNzRdLDEyOTpbMiwxNzRdLDEzMDpbMiwxNzRdLDEzMTpbMiwxNzRdLDEzMjpbMiwxNzRdLDEzMzpbMiwxNzRdLDEzNDpbMiwxNzRdfSx7MTpbMiwxMzFdLDY6WzIsMTMxXSwyNTpbMiwxMzFdLDI2OlsyLDEzMV0sNDc6WzIsMTMxXSw1MjpbMiwxMzFdLDU1OlsyLDEzMV0sNzA6WzIsMTMxXSw3NTpbMiwxMzFdLDgzOlsyLDEzMV0sODg6WzIsMTMxXSw5MDpbMiwxMzFdLDk5OlsyLDEzMV0sMTAxOlsyLDEzMV0sMTAyOlsyLDEzMV0sMTAzOlsyLDEzMV0sMTA3OlsyLDEzMV0sMTE1OlsyLDEzMV0sMTIzOlsyLDEzMV0sMTI1OlsyLDEzMV0sMTI2OlsyLDEzMV0sMTI5OlsyLDEzMV0sMTMwOlsyLDEzMV0sMTMxOlsyLDEzMV0sMTMyOlsyLDEzMV0sMTMzOlsyLDEzMV0sMTM0OlsyLDEzMV19LHsxOlsyLDEzMl0sNjpbMiwxMzJdLDI1OlsyLDEzMl0sMjY6WzIsMTMyXSw0NzpbMiwxMzJdLDUyOlsyLDEzMl0sNTU6WzIsMTMyXSw3MDpbMiwxMzJdLDc1OlsyLDEzMl0sODM6WzIsMTMyXSw4ODpbMiwxMzJdLDkwOlsyLDEzMl0sOTU6WzIsMTMyXSw5OTpbMiwxMzJdLDEwMTpbMiwxMzJdLDEwMjpbMiwxMzJdLDEwMzpbMiwxMzJdLDEwNzpbMiwxMzJdLDExNTpbMiwxMzJdLDEyMzpbMiwxMzJdLDEyNTpbMiwxMzJdLDEyNjpbMiwxMzJdLDEyOTpbMiwxMzJdLDEzMDpbMiwxMzJdLDEzMTpbMiwxMzJdLDEzMjpbMiwxMzJdLDEzMzpbMiwxMzJdLDEzNDpbMiwxMzJdfSx7MTpbMiwxNjVdLDY6WzIsMTY1XSwyNTpbMiwxNjVdLDI2OlsyLDE2NV0sNDc6WzIsMTY1XSw1MjpbMiwxNjVdLDU1OlsyLDE2NV0sNzA6WzIsMTY1XSw3NTpbMiwxNjVdLDgzOlsyLDE2NV0sODg6WzIsMTY1XSw5MDpbMiwxNjVdLDk5OlsyLDE2NV0sMTAxOlsyLDE2NV0sMTAyOlsyLDE2NV0sMTAzOlsyLDE2NV0sMTA3OlsyLDE2NV0sMTE1OlsyLDE2NV0sMTIzOlsyLDE2NV0sMTI1OlsyLDE2NV0sMTI2OlsyLDE2NV0sMTI5OlsyLDE2NV0sMTMwOlsyLDE2NV0sMTMxOlsyLDE2NV0sMTMyOlsyLDE2NV0sMTMzOlsyLDE2NV0sMTM0OlsyLDE2NV19LHs1OjMwMSwyNTpbMSw1XX0sezI2OlsxLDMwMl19LHs2OlsxLDMwM10sMjY6WzIsMTcxXSwxMTg6WzIsMTcxXSwxMjA6WzIsMTcxXX0sezg6MzA0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDk4XSw2OlsyLDk4XSwyNTpbMiw5OF0sMjY6WzIsOThdLDQ3OlsyLDk4XSw1MjpbMiw5OF0sNTU6WzIsOThdLDcwOlsyLDk4XSw3NTpbMiw5OF0sODM6WzIsOThdLDg4OlsyLDk4XSw5MDpbMiw5OF0sOTk6WzIsOThdLDEwMTpbMiw5OF0sMTAyOlsyLDk4XSwxMDM6WzIsOThdLDEwNzpbMiw5OF0sMTE1OlsyLDk4XSwxMjM6WzIsOThdLDEyNTpbMiw5OF0sMTI2OlsyLDk4XSwxMjk6WzIsOThdLDEzMDpbMiw5OF0sMTMxOlsyLDk4XSwxMzI6WzIsOThdLDEzMzpbMiw5OF0sMTM0OlsyLDk4XX0sezE6WzIsMTM1XSw2OlsyLDEzNV0sMjU6WzIsMTM1XSwyNjpbMiwxMzVdLDQ3OlsyLDEzNV0sNTI6WzIsMTM1XSw1NTpbMiwxMzVdLDY0OlsyLDEzNV0sNjU6WzIsMTM1XSw2NjpbMiwxMzVdLDY4OlsyLDEzNV0sNzA6WzIsMTM1XSw3MTpbMiwxMzVdLDc1OlsyLDEzNV0sODE6WzIsMTM1XSw4MjpbMiwxMzVdLDgzOlsyLDEzNV0sODg6WzIsMTM1XSw5MDpbMiwxMzVdLDk5OlsyLDEzNV0sMTAxOlsyLDEzNV0sMTAyOlsyLDEzNV0sMTAzOlsyLDEzNV0sMTA3OlsyLDEzNV0sMTE1OlsyLDEzNV0sMTIzOlsyLDEzNV0sMTI1OlsyLDEzNV0sMTI2OlsyLDEzNV0sMTI5OlsyLDEzNV0sMTMwOlsyLDEzNV0sMTMxOlsyLDEzNV0sMTMyOlsyLDEzNV0sMTMzOlsyLDEzNV0sMTM0OlsyLDEzNV19LHsxOlsyLDExNF0sNjpbMiwxMTRdLDI1OlsyLDExNF0sMjY6WzIsMTE0XSw0NzpbMiwxMTRdLDUyOlsyLDExNF0sNTU6WzIsMTE0XSw2NDpbMiwxMTRdLDY1OlsyLDExNF0sNjY6WzIsMTE0XSw2ODpbMiwxMTRdLDcwOlsyLDExNF0sNzE6WzIsMTE0XSw3NTpbMiwxMTRdLDgxOlsyLDExNF0sODI6WzIsMTE0XSw4MzpbMiwxMTRdLDg4OlsyLDExNF0sOTA6WzIsMTE0XSw5OTpbMiwxMTRdLDEwMTpbMiwxMTRdLDEwMjpbMiwxMTRdLDEwMzpbMiwxMTRdLDEwNzpbMiwxMTRdLDExNTpbMiwxMTRdLDEyMzpbMiwxMTRdLDEyNTpbMiwxMTRdLDEyNjpbMiwxMTRdLDEyOTpbMiwxMTRdLDEzMDpbMiwxMTRdLDEzMTpbMiwxMTRdLDEzMjpbMiwxMTRdLDEzMzpbMiwxMTRdLDEzNDpbMiwxMTRdfSx7NjpbMiwxMjFdLDI1OlsyLDEyMV0sMjY6WzIsMTIxXSw1MjpbMiwxMjFdLDgzOlsyLDEyMV0sODg6WzIsMTIxXX0sezY6WzIsNTFdLDI1OlsyLDUxXSwyNjpbMiw1MV0sNTE6MzA1LDUyOlsxLDIyMl19LHs2OlsyLDEyMl0sMjU6WzIsMTIyXSwyNjpbMiwxMjJdLDUyOlsyLDEyMl0sODM6WzIsMTIyXSw4ODpbMiwxMjJdfSx7MTpbMiwxNjBdLDY6WzIsMTYwXSwyNTpbMiwxNjBdLDI2OlsyLDE2MF0sNDc6WzIsMTYwXSw1MjpbMiwxNjBdLDU1OlsyLDE2MF0sNzA6WzIsMTYwXSw3NTpbMiwxNjBdLDgzOlsyLDE2MF0sODg6WzIsMTYwXSw5MDpbMiwxNjBdLDk5OlsyLDE2MF0sMTAwOjg1LDEwMTpbMiwxNjBdLDEwMjpbMiwxNjBdLDEwMzpbMiwxNjBdLDEwNjo4NiwxMDc6WzIsMTYwXSwxMDg6NjcsMTE1OlsxLDMwNl0sMTIzOlsyLDE2MF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiwxNjJdLDY6WzIsMTYyXSwyNTpbMiwxNjJdLDI2OlsyLDE2Ml0sNDc6WzIsMTYyXSw1MjpbMiwxNjJdLDU1OlsyLDE2Ml0sNzA6WzIsMTYyXSw3NTpbMiwxNjJdLDgzOlsyLDE2Ml0sODg6WzIsMTYyXSw5MDpbMiwxNjJdLDk5OlsyLDE2Ml0sMTAwOjg1LDEwMTpbMiwxNjJdLDEwMjpbMSwzMDddLDEwMzpbMiwxNjJdLDEwNjo4NiwxMDc6WzIsMTYyXSwxMDg6NjcsMTE1OlsyLDE2Ml0sMTIzOlsyLDE2Ml0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiwxNjFdLDY6WzIsMTYxXSwyNTpbMiwxNjFdLDI2OlsyLDE2MV0sNDc6WzIsMTYxXSw1MjpbMiwxNjFdLDU1OlsyLDE2MV0sNzA6WzIsMTYxXSw3NTpbMiwxNjFdLDgzOlsyLDE2MV0sODg6WzIsMTYxXSw5MDpbMiwxNjFdLDk5OlsyLDE2MV0sMTAwOjg1LDEwMTpbMiwxNjFdLDEwMjpbMiwxNjFdLDEwMzpbMiwxNjFdLDEwNjo4NiwxMDc6WzIsMTYxXSwxMDg6NjcsMTE1OlsyLDE2MV0sMTIzOlsyLDE2MV0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NjpbMiw4OV0sMjU6WzIsODldLDI2OlsyLDg5XSw1MjpbMiw4OV0sNzU6WzIsODldfSx7NjpbMiw1MV0sMjU6WzIsNTFdLDI2OlsyLDUxXSw1MTozMDgsNTI6WzEsMjMyXX0sezI2OlsxLDMwOV0sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsyNjpbMSwzMTBdfSx7MTpbMiwxNjhdLDY6WzIsMTY4XSwyNTpbMiwxNjhdLDI2OlsyLDE2OF0sNDc6WzIsMTY4XSw1MjpbMiwxNjhdLDU1OlsyLDE2OF0sNzA6WzIsMTY4XSw3NTpbMiwxNjhdLDgzOlsyLDE2OF0sODg6WzIsMTY4XSw5MDpbMiwxNjhdLDk5OlsyLDE2OF0sMTAxOlsyLDE2OF0sMTAyOlsyLDE2OF0sMTAzOlsyLDE2OF0sMTA3OlsyLDE2OF0sMTE1OlsyLDE2OF0sMTIzOlsyLDE2OF0sMTI1OlsyLDE2OF0sMTI2OlsyLDE2OF0sMTI5OlsyLDE2OF0sMTMwOlsyLDE2OF0sMTMxOlsyLDE2OF0sMTMyOlsyLDE2OF0sMTMzOlsyLDE2OF0sMTM0OlsyLDE2OF19LHsyNjpbMiwxNzJdLDExODpbMiwxNzJdLDEyMDpbMiwxNzJdfSx7MjU6WzIsMTI3XSw1MjpbMiwxMjddLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7NjpbMSwyNjBdLDI1OlsxLDI2MV0sMjY6WzEsMzExXX0sezg6MzEyLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjMxMyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NjpbMSwyNzFdLDI1OlsxLDI3Ml0sMjY6WzEsMzE0XX0sezY6WzIsMzldLDI1OlsyLDM5XSwyNjpbMiwzOV0sNTI6WzIsMzldLDc1OlsyLDM5XX0sezE6WzIsMTY2XSw2OlsyLDE2Nl0sMjU6WzIsMTY2XSwyNjpbMiwxNjZdLDQ3OlsyLDE2Nl0sNTI6WzIsMTY2XSw1NTpbMiwxNjZdLDcwOlsyLDE2Nl0sNzU6WzIsMTY2XSw4MzpbMiwxNjZdLDg4OlsyLDE2Nl0sOTA6WzIsMTY2XSw5OTpbMiwxNjZdLDEwMTpbMiwxNjZdLDEwMjpbMiwxNjZdLDEwMzpbMiwxNjZdLDEwNzpbMiwxNjZdLDExNTpbMiwxNjZdLDEyMzpbMiwxNjZdLDEyNTpbMiwxNjZdLDEyNjpbMiwxNjZdLDEyOTpbMiwxNjZdLDEzMDpbMiwxNjZdLDEzMTpbMiwxNjZdLDEzMjpbMiwxNjZdLDEzMzpbMiwxNjZdLDEzNDpbMiwxNjZdfSx7NjpbMiwxMjNdLDI1OlsyLDEyM10sMjY6WzIsMTIzXSw1MjpbMiwxMjNdLDgzOlsyLDEyM10sODg6WzIsMTIzXX0sezE6WzIsMTYzXSw2OlsyLDE2M10sMjU6WzIsMTYzXSwyNjpbMiwxNjNdLDQ3OlsyLDE2M10sNTI6WzIsMTYzXSw1NTpbMiwxNjNdLDcwOlsyLDE2M10sNzU6WzIsMTYzXSw4MzpbMiwxNjNdLDg4OlsyLDE2M10sOTA6WzIsMTYzXSw5OTpbMiwxNjNdLDEwMDo4NSwxMDE6WzIsMTYzXSwxMDI6WzIsMTYzXSwxMDM6WzIsMTYzXSwxMDY6ODYsMTA3OlsyLDE2M10sMTA4OjY3LDExNTpbMiwxNjNdLDEyMzpbMiwxNjNdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTY0XSw2OlsyLDE2NF0sMjU6WzIsMTY0XSwyNjpbMiwxNjRdLDQ3OlsyLDE2NF0sNTI6WzIsMTY0XSw1NTpbMiwxNjRdLDcwOlsyLDE2NF0sNzU6WzIsMTY0XSw4MzpbMiwxNjRdLDg4OlsyLDE2NF0sOTA6WzIsMTY0XSw5OTpbMiwxNjRdLDEwMDo4NSwxMDE6WzIsMTY0XSwxMDI6WzIsMTY0XSwxMDM6WzIsMTY0XSwxMDY6ODYsMTA3OlsyLDE2NF0sMTA4OjY3LDExNTpbMiwxNjRdLDEyMzpbMiwxNjRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezY6WzIsOTBdLDI1OlsyLDkwXSwyNjpbMiw5MF0sNTI6WzIsOTBdLDc1OlsyLDkwXX1dLGRlZmF1bHRBY3Rpb25zOns1ODpbMiw0OV0sNTk6WzIsNTBdLDczOlsyLDNdLDkyOlsyLDEwNF0sMTg2OlsyLDg0XX0scGFyc2VFcnJvcjpmdW5jdGlvbihiLGMpe3Rocm93IG5ldyBFcnJvcihiKX0scGFyc2U6ZnVuY3Rpb24oYil7ZnVuY3Rpb24gbyhhKXtkLmxlbmd0aD1kLmxlbmd0aC0yKmEsZS5sZW5ndGg9ZS5sZW5ndGgtYSxmLmxlbmd0aD1mLmxlbmd0aC1hfWZ1bmN0aW9uIHAoKXt2YXIgYTtyZXR1cm4gYT1jLmxleGVyLmxleCgpfHwxLHR5cGVvZiBhIT0ibnVtYmVyIiYmKGE9Yy5zeW1ib2xzX1thXXx8YSksYX12YXIgYz10aGlzLGQ9WzBdLGU9W251bGxdLGY9W10sZz10aGlzLnRhYmxlLGg9IiIsaT0wLGo9MCxrPTAsbD0yLG09MTt0aGlzLmxleGVyLnNldElucHV0KGIpLHRoaXMubGV4ZXIueXk9dGhpcy55eSx0aGlzLnl5LmxleGVyPXRoaXMubGV4ZXIsdHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jPT0idW5kZWZpbmVkIiYmKHRoaXMubGV4ZXIueXlsbG9jPXt9KTt2YXIgbj10aGlzLmxleGVyLnl5bGxvYztmLnB1c2gobiksdHlwZW9mIHRoaXMueXkucGFyc2VFcnJvcj09ImZ1bmN0aW9uIiYmKHRoaXMucGFyc2VFcnJvcj10aGlzLnl5LnBhcnNlRXJyb3IpO3ZhciBxLHIscyx0LHUsdix3PXt9LHgseSx6LEE7Zm9yKDs7KXtzPWRbZC5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1tzXT90PXRoaXMuZGVmYXVsdEFjdGlvbnNbc106KHE9PW51bGwmJihxPXAoKSksdD1nW3NdJiZnW3NdW3FdKTtpZih0eXBlb2YgdD09InVuZGVmaW5lZCJ8fCF0Lmxlbmd0aHx8IXRbMF0paWYoIWspe0E9W107Zm9yKHggaW4gZ1tzXSl0aGlzLnRlcm1pbmFsc19beF0mJng+MiYmQS5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19beF0rIiciKTt2YXIgQj0iIjt0aGlzLmxleGVyLnNob3dQb3NpdGlvbj9CPSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGkrMSkrIjpcbiIrdGhpcy5sZXhlci5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitBLmpvaW4oIiwgIikrIiwgZ290ICciK3RoaXMudGVybWluYWxzX1txXSsiJyI6Qj0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhpKzEpKyI6IFVuZXhwZWN0ZWQgIisocT09MT8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1txXXx8cSkrIiciKSx0aGlzLnBhcnNlRXJyb3IoQix7dGV4dDp0aGlzLmxleGVyLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1txXXx8cSxsaW5lOnRoaXMubGV4ZXIueXlsaW5lbm8sbG9jOm4sZXhwZWN0ZWQ6QX0pfWlmKHRbMF1pbnN0YW5jZW9mIEFycmF5JiZ0Lmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrcysiLCB0b2tlbjogIitxKTtzd2l0Y2godFswXSl7Y2FzZSAxOmQucHVzaChxKSxlLnB1c2godGhpcy5sZXhlci55eXRleHQpLGYucHVzaCh0aGlzLmxleGVyLnl5bGxvYyksZC5wdXNoKHRbMV0pLHE9bnVsbCxyPyhxPXIscj1udWxsKTooaj10aGlzLmxleGVyLnl5bGVuZyxoPXRoaXMubGV4ZXIueXl0ZXh0LGk9dGhpcy5sZXhlci55eWxpbmVubyxuPXRoaXMubGV4ZXIueXlsbG9jLGs+MCYmay0tKTticmVhaztjYXNlIDI6eT10aGlzLnByb2R1Y3Rpb25zX1t0WzFdXVsxXSx3LiQ9ZVtlLmxlbmd0aC15XSx3Ll8kPXtmaXJzdF9saW5lOmZbZi5sZW5ndGgtKHl8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTpmW2YubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46ZltmLmxlbmd0aC0oeXx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpmW2YubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2PXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHcsaCxqLGksdGhpcy55eSx0WzFdLGUsZik7aWYodHlwZW9mIHYhPSJ1bmRlZmluZWQiKXJldHVybiB2O3kmJihkPWQuc2xpY2UoMCwtMSp5KjIpLGU9ZS5zbGljZSgwLC0xKnkpLGY9Zi5zbGljZSgwLC0xKnkpKSxkLnB1c2godGhpcy5wcm9kdWN0aW9uc19bdFsxXV1bMF0pLGUucHVzaCh3LiQpLGYucHVzaCh3Ll8kKSx6PWdbZFtkLmxlbmd0aC0yXV1bZFtkLmxlbmd0aC0xXV0sZC5wdXNoKHopO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fTtjLmV4cG9ydHM9ZH0pLGRlZmluZSgiYWNlL21vZGUvY29mZmVlL25vZGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL21vZGUvY29mZmVlL3Njb3BlIiwiYWNlL21vZGUvY29mZmVlL2xleGVyIiwiYWNlL21vZGUvY29mZmVlL2hlbHBlcnMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyx4LHkseixBLEIsQyxELEUsRixHLEgsSSxKLEssTCxNLE4sTyxQLFEsUixTLFQsVSxWLFcsWCxZLFosJCxfLGFiLGJiLGNiLGRiLGViLGZiLGdiLGhiLGliLGpiLGtiLGxiLG1iPXt9Lmhhc093blByb3BlcnR5LG5iPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZCgpe3RoaXMuY29uc3RydWN0b3I9YX1mb3IodmFyIGMgaW4gYiltYi5jYWxsKGIsYykmJihhW2NdPWJbY10pO3JldHVybiBkLnByb3RvdHlwZT1iLnByb3RvdHlwZSxhLnByb3RvdHlwZT1uZXcgZCxhLl9fc3VwZXJfXz1iLnByb3RvdHlwZSxhfSxvYj1bXS5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2I8YztiKyspaWYoYiBpbiB0aGlzJiZ0aGlzW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX07UD1hKCIuL3Njb3BlIikuU2NvcGUsa2I9YSgiLi9sZXhlciIpLEs9a2IuUkVTRVJWRUQsTz1rYi5TVFJJQ1RfUFJPU0NSSUJFRCxsYj1hKCIuL2hlbHBlcnMiKSxfPWxiLmNvbXBhY3QsZGI9bGIuZmxhdHRlbixjYj1sYi5leHRlbmQsZmI9bGIubWVyZ2UsYWI9bGIuZGVsLGhiPWxiLnN0YXJ0cyxiYj1sYi5lbmRzLGViPWxiLmxhc3QsYi5leHRlbmQ9Y2IsJD1mdW5jdGlvbigpe3JldHVybiEwfSxGPWZ1bmN0aW9uKCl7cmV0dXJuITF9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sRT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0ZWQ9IXRoaXMubmVnYXRlZCx0aGlzfSxiLkJhc2U9Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9cmV0dXJuIGEubmFtZT0iQmFzZSIsYS5wcm90b3R5cGUuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBhPWNiKHt9LGEpLGImJihhLmxldmVsPWIpLGM9dGhpcy51bmZvbGRTb2FrKGEpfHx0aGlzLGMudGFiPWEuaW5kZW50LGEubGV2ZWw9PT1CfHwhYy5pc1N0YXRlbWVudChhKT9jLmNvbXBpbGVOb2RlKGEpOmMuY29tcGlsZUNsb3N1cmUoYSl9LGEucHJvdG90eXBlLmNvbXBpbGVDbG9zdXJlPWZ1bmN0aW9uKGEpe2lmKHRoaXMuanVtcHMoKSl0aHJvdyBTeW50YXhFcnJvcigiY2Fubm90IHVzZSBhIHB1cmUgc3RhdGVtZW50IGluIGFuIGV4cHJlc3Npb24uIik7cmV0dXJuIGEuc2hhcmVkU2NvcGU9ITAsay53cmFwKHRoaXMpLmNvbXBpbGVOb2RlKGEpfSxhLnByb3RvdHlwZS5jYWNoZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtyZXR1cm4gdGhpcy5pc0NvbXBsZXgoKT8oZD1uZXcgQyhjfHxhLnNjb3BlLmZyZWVWYXJpYWJsZSgicmVmIikpLGU9bmV3IGYoZCx0aGlzKSxiP1tlLmNvbXBpbGUoYSxiKSxkLnZhbHVlXTpbZSxkXSk6KGQ9Yj90aGlzLmNvbXBpbGUoYSxiKTp0aGlzLFtkLGRdKX0sYS5wcm90b3R5cGUuY29tcGlsZUxvb3BSZWZlcmVuY2U9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO3JldHVybiBjPWQ9dGhpcy5jb21waWxlKGEseSksLUluZmluaXR5PCtjJiYrYzxJbmZpbml0eXx8cS50ZXN0KGMpJiZhLnNjb3BlLmNoZWNrKGMsITApfHwoYz0iIisoZD1hLnNjb3BlLmZyZWVWYXJpYWJsZShiKSkrIiA9ICIrYyksW2MsZF19LGEucHJvdG90eXBlLm1ha2VSZXR1cm49ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIGI9dGhpcy51bndyYXBBbGwoKSxhP25ldyBpKG5ldyBDKCIiK2ErIi5wdXNoIiksW2JdKTpuZXcgTShiKX0sYS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIGI9ITEsdGhpcy50cmF2ZXJzZUNoaWxkcmVuKCExLGZ1bmN0aW9uKGMpe2lmKGEoYykpcmV0dXJuIGI9ITAsITF9KSxifSxhLnByb3RvdHlwZS5jb250YWluc1R5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhfHx0aGlzLmNvbnRhaW5zKGZ1bmN0aW9uKGIpe3JldHVybiBiIGluc3RhbmNlb2YgYX0pfSxhLnByb3RvdHlwZS5sYXN0Tm9uQ29tbWVudD1mdW5jdGlvbihhKXt2YXIgYjtiPWEubGVuZ3RoO3doaWxlKGItLSlpZighKGFbYl1pbnN0YW5jZW9mIG0pKXJldHVybiBhW2JdO3JldHVybiBudWxsfSxhLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBhPT1udWxsJiYoYT0iIiksYj09bnVsbCYmKGI9dGhpcy5jb25zdHJ1Y3Rvci5uYW1lKSxjPSJcbiIrYStiLHRoaXMuc29hayYmKGMrPSI/IiksdGhpcy5lYWNoQ2hpbGQoZnVuY3Rpb24oYil7cmV0dXJuIGMrPWIudG9TdHJpbmcoYStUKX0pLGN9LGEucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2lmKCF0aGlzLmNoaWxkcmVuKXJldHVybiB0aGlzO2g9dGhpcy5jaGlsZHJlbjtmb3IoZD0wLGY9aC5sZW5ndGg7ZDxmO2QrKyl7Yj1oW2RdO2lmKHRoaXNbYl0pe2k9ZGIoW3RoaXNbYl1dKTtmb3IoZT0wLGc9aS5sZW5ndGg7ZTxnO2UrKyl7Yz1pW2VdO2lmKGEoYyk9PT0hMSlyZXR1cm4gdGhpc319fXJldHVybiB0aGlzfSxhLnByb3RvdHlwZS50cmF2ZXJzZUNoaWxkcmVuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaENoaWxkKGZ1bmN0aW9uKGMpe3JldHVybiBiKGMpPT09ITE/ITE6Yy50cmF2ZXJzZUNoaWxkcmVuKGEsYil9KX0sYS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBIKCIhIix0aGlzKX0sYS5wcm90b3R5cGUudW53cmFwQWxsPWZ1bmN0aW9uKCl7dmFyIGE7YT10aGlzO3doaWxlKGEhPT0oYT1hLnVud3JhcCgpKSljb250aW51ZTtyZXR1cm4gYX0sYS5wcm90b3R5cGUuY2hpbGRyZW49W10sYS5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9RixhLnByb3RvdHlwZS5qdW1wcz1GLGEucHJvdG90eXBlLmlzQ29tcGxleD0kLGEucHJvdG90eXBlLmlzQ2hhaW5hYmxlPUYsYS5wcm90b3R5cGUuaXNBc3NpZ25hYmxlPUYsYS5wcm90b3R5cGUudW53cmFwPVUsYS5wcm90b3R5cGUudW5mb2xkU29haz1GLGEucHJvdG90eXBlLmFzc2lnbnM9RixhfSgpLGIuQmxvY2s9aD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3RoaXMuZXhwcmVzc2lvbnM9XyhkYihhfHxbXSkpfXJldHVybiBuYihiLGEpLGIubmFtZT0iQmxvY2siLGIucHJvdG90eXBlLmNoaWxkcmVuPVsiZXhwcmVzc2lvbnMiXSxiLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmV4cHJlc3Npb25zLnB1c2goYSksdGhpc30sYi5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhwcmVzc2lvbnMucG9wKCl9LGIucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZXhwcmVzc2lvbnMudW5zaGlmdChhKSx0aGlzfSxiLnByb3RvdHlwZS51bndyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5leHByZXNzaW9ucy5sZW5ndGg9PT0xP3RoaXMuZXhwcmVzc2lvbnNbMF06dGhpc30sYi5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cHJlc3Npb25zLmxlbmd0aH0sYi5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7ZT10aGlzLmV4cHJlc3Npb25zO2ZvcihjPTAsZD1lLmxlbmd0aDtjPGQ7YysrKXtiPWVbY107aWYoYi5pc1N0YXRlbWVudChhKSlyZXR1cm4hMH1yZXR1cm4hMX0sYi5wcm90b3R5cGUuanVtcHM9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7ZT10aGlzLmV4cHJlc3Npb25zO2ZvcihjPTAsZD1lLmxlbmd0aDtjPGQ7YysrKXtiPWVbY107aWYoYi5qdW1wcyhhKSlyZXR1cm4gYn19LGIucHJvdG90eXBlLm1ha2VSZXR1cm49ZnVuY3Rpb24oYSl7dmFyIGIsYztjPXRoaXMuZXhwcmVzc2lvbnMubGVuZ3RoO3doaWxlKGMtLSl7Yj10aGlzLmV4cHJlc3Npb25zW2NdO2lmKCEoYiBpbnN0YW5jZW9mIG0pKXt0aGlzLmV4cHJlc3Npb25zW2NdPWIubWFrZVJldHVybihhKSxiIGluc3RhbmNlb2YgTSYmIWIuZXhwcmVzc2lvbiYmdGhpcy5leHByZXNzaW9ucy5zcGxpY2UoYywxKTticmVha319cmV0dXJuIHRoaXN9LGIucHJvdG90eXBlLmNvbXBpbGU9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYT09bnVsbCYmKGE9e30pLGEuc2NvcGU/Yi5fX3N1cGVyX18uY29tcGlsZS5jYWxsKHRoaXMsYSxjKTp0aGlzLmNvbXBpbGVSb290KGEpfSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYyxkLGUsZixnLGgsaTt0aGlzLnRhYj1hLmluZGVudCxmPWEubGV2ZWw9PT1CLGQ9W10saT10aGlzLmV4cHJlc3Npb25zO2ZvcihnPTAsaD1pLmxlbmd0aDtnPGg7ZysrKWU9aVtnXSxlPWUudW53cmFwQWxsKCksZT1lLnVuZm9sZFNvYWsoYSl8fGUsZSBpbnN0YW5jZW9mIGI/ZC5wdXNoKGUuY29tcGlsZU5vZGUoYSkpOmY/KGUuZnJvbnQ9ITAsYz1lLmNvbXBpbGUoYSksZS5pc1N0YXRlbWVudChhKXx8KGM9IiIrdGhpcy50YWIrYysiOyIsZSBpbnN0YW5jZW9mIEMmJihjPSIiK2MrIlxuIikpLGQucHVzaChjKSk6ZC5wdXNoKGUuY29tcGlsZShhLHkpKTtyZXR1cm4gZj90aGlzLnNwYWNlZD8iXG4iK2Quam9pbigiXG5cbiIpKyJcbiI6ZC5qb2luKCJcbiIpOihjPWQuam9pbigiLCAiKXx8InZvaWQgMCIsZC5sZW5ndGg+MSYmYS5sZXZlbD49eT8iKCIrYysiKSI6Yyl9LGIucHJvdG90eXBlLmNvbXBpbGVSb290PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZztyZXR1cm4gYS5pbmRlbnQ9YS5iYXJlPyIiOlQsYS5zY29wZT1uZXcgUChudWxsLHRoaXMsbnVsbCksYS5sZXZlbD1CLHRoaXMuc3BhY2VkPSEwLGU9IiIsYS5iYXJlfHwoZj1mdW5jdGlvbigpe3ZhciBhLGIsZSxmO2U9dGhpcy5leHByZXNzaW9ucyxmPVtdO2ZvcihkPWE9MCxiPWUubGVuZ3RoO2E8YjtkPSsrYSl7Yz1lW2RdO2lmKCEoYy51bndyYXAoKWluc3RhbmNlb2YgbSkpYnJlYWs7Zi5wdXNoKGMpfXJldHVybiBmfS5jYWxsKHRoaXMpLGc9dGhpcy5leHByZXNzaW9ucy5zbGljZShmLmxlbmd0aCksdGhpcy5leHByZXNzaW9ucz1mLGYubGVuZ3RoJiYoZT0iIit0aGlzLmNvbXBpbGVOb2RlKGZiKGEse2luZGVudDoiIn0pKSsiXG4iKSx0aGlzLmV4cHJlc3Npb25zPWcpLGI9dGhpcy5jb21waWxlV2l0aERlY2xhcmF0aW9ucyhhKSxhLmJhcmU/YjoiIitlKyIoZnVuY3Rpb24oKSB7XG4iK2IrIlxufSkuY2FsbCh0aGlzKTtcbiJ9LGIucHJvdG90eXBlLmNvbXBpbGVXaXRoRGVjbGFyYXRpb25zPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbixvLHA7Yz1nPSIiLG49dGhpcy5leHByZXNzaW9ucztmb3IoZj1rPTAsbD1uLmxlbmd0aDtrPGw7Zj0rK2spe2U9bltmXSxlPWUudW53cmFwKCk7aWYoIShlIGluc3RhbmNlb2YgbXx8ZSBpbnN0YW5jZW9mIEMpKWJyZWFrfWE9ZmIoYSx7bGV2ZWw6Qn0pLGYmJihoPXRoaXMuZXhwcmVzc2lvbnMuc3BsaWNlKGYsOWU5KSxvPVt0aGlzLnNwYWNlZCwhMV0saj1vWzBdLHRoaXMuc3BhY2VkPW9bMV0scD1bdGhpcy5jb21waWxlTm9kZShhKSxqXSxjPXBbMF0sdGhpcy5zcGFjZWQ9cFsxXSx0aGlzLmV4cHJlc3Npb25zPWgpLGc9dGhpcy5jb21waWxlTm9kZShhKSxpPWEuc2NvcGU7aWYoaS5leHByZXNzaW9ucz09PXRoaXMpe2Q9YS5zY29wZS5oYXNEZWNsYXJhdGlvbnMoKSxiPWkuaGFzQXNzaWdubWVudHM7aWYoZHx8YilmJiYoYys9IlxuIiksYys9IiIrdGhpcy50YWIrInZhciAiLGQmJihjKz1pLmRlY2xhcmVkVmFyaWFibGVzKCkuam9pbigiLCAiKSksYiYmKGQmJihjKz0iLFxuIisodGhpcy50YWIrVCkpLGMrPWkuYXNzaWduZWRWYXJpYWJsZXMoKS5qb2luKCIsXG4iKyh0aGlzLnRhYitUKSkpLGMrPSI7XG4ifXJldHVybiBjK2d9LGIud3JhcD1mdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGg9PT0xJiZhWzBdaW5zdGFuY2VvZiBiP2FbMF06bmV3IGIoYSl9LGJ9KGcpLGIuTGl0ZXJhbD1DPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dGhpcy52YWx1ZT1hfXJldHVybiBuYihiLGEpLGIubmFtZT0iTGl0ZXJhbCIsYi5wcm90b3R5cGUubWFrZVJldHVybj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzU3RhdGVtZW50KCk/dGhpczpiLl9fc3VwZXJfXy5tYWtlUmV0dXJuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYi5wcm90b3R5cGUuaXNBc3NpZ25hYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHEudGVzdCh0aGlzLnZhbHVlKX0sYi5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4oYT10aGlzLnZhbHVlKT09PSJicmVhayJ8fGE9PT0iY29udGludWUifHxhPT09ImRlYnVnZ2VyIn0sYi5wcm90b3R5cGUuaXNDb21wbGV4PUYsYi5wcm90b3R5cGUuYXNzaWducz1mdW5jdGlvbihhKXtyZXR1cm4gYT09PXRoaXMudmFsdWV9LGIucHJvdG90eXBlLmp1bXBzPWZ1bmN0aW9uKGEpe2lmKHRoaXMudmFsdWU9PT0iYnJlYWsiJiYhKChhIT1udWxsP2EubG9vcDp2b2lkIDApfHwoYSE9bnVsbD9hLmJsb2NrOnZvaWQgMCkpKXJldHVybiB0aGlzO2lmKHRoaXMudmFsdWU9PT0iY29udGludWUiJiYoYSE9bnVsbD8hYS5sb29wOiF2b2lkIDApKXJldHVybiB0aGlzfSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiBiPXRoaXMuaXNVbmRlZmluZWQ/YS5sZXZlbD49dz8iKHZvaWQgMCkiOiJ2b2lkIDAiOnRoaXMudmFsdWU9PT0idGhpcyI/KChjPWEuc2NvcGUubWV0aG9kKSE9bnVsbD9jLmJvdW5kOnZvaWQgMCk/YS5zY29wZS5tZXRob2QuY29udGV4dDp0aGlzLnZhbHVlOnRoaXMudmFsdWUucmVzZXJ2ZWQ/JyInK3RoaXMudmFsdWUrJyInOnRoaXMudmFsdWUsdGhpcy5pc1N0YXRlbWVudCgpPyIiK3RoaXMudGFiK2IrIjsiOmJ9LGIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuJyAiJyt0aGlzLnZhbHVlKyciJ30sYn0oZyksYi5SZXR1cm49TT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe2EmJiFhLnVud3JhcCgpLmlzVW5kZWZpbmVkJiYodGhpcy5leHByZXNzaW9uPWEpfXJldHVybiBuYihiLGEpLGIubmFtZT0iUmV0dXJuIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImV4cHJlc3Npb24iXSxiLnByb3RvdHlwZS5pc1N0YXRlbWVudD0kLGIucHJvdG90eXBlLm1ha2VSZXR1cm49VSxiLnByb3RvdHlwZS5qdW1wcz1VLGIucHJvdG90eXBlLmNvbXBpbGU9ZnVuY3Rpb24oYSxjKXt2YXIgZCxlO3JldHVybiBkPShlPXRoaXMuZXhwcmVzc2lvbikhPW51bGw/ZS5tYWtlUmV0dXJuKCk6dm9pZCAwLCFkfHxkIGluc3RhbmNlb2YgYj9iLl9fc3VwZXJfXy5jb21waWxlLmNhbGwodGhpcyxhLGMpOmQuY29tcGlsZShhLGMpfSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50YWIrKCJyZXR1cm4iK1t0aGlzLmV4cHJlc3Npb24/IiAiK3RoaXMuZXhwcmVzc2lvbi5jb21waWxlKGEsQSk6dm9pZCAwXSsiOyIpfSxifShnKSxiLlZhbHVlPVk9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGMsZCl7cmV0dXJuIWMmJmEgaW5zdGFuY2VvZiBiP2E6KHRoaXMuYmFzZT1hLHRoaXMucHJvcGVydGllcz1jfHxbXSxkJiYodGhpc1tkXT0hMCksdGhpcyl9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJWYWx1ZSIsYi5wcm90b3R5cGUuY2hpbGRyZW49WyJiYXNlIiwicHJvcGVydGllcyJdLGIucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wcm9wZXJ0aWVzPXRoaXMucHJvcGVydGllcy5jb25jYXQoYSksdGhpc30sYi5wcm90b3R5cGUuaGFzUHJvcGVydGllcz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aH0sYi5wcm90b3R5cGUuaXNBcnJheT1mdW5jdGlvbigpe3JldHVybiF0aGlzLnByb3BlcnRpZXMubGVuZ3RoJiZ0aGlzLmJhc2UgaW5zdGFuY2VvZiBlfSxiLnByb3RvdHlwZS5pc0NvbXBsZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNQcm9wZXJ0aWVzKCl8fHRoaXMuYmFzZS5pc0NvbXBsZXgoKX0sYi5wcm90b3R5cGUuaXNBc3NpZ25hYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzUHJvcGVydGllcygpfHx0aGlzLmJhc2UuaXNBc3NpZ25hYmxlKCl9LGIucHJvdG90eXBlLmlzU2ltcGxlTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmFzZSBpbnN0YW5jZW9mIEMmJk4udGVzdCh0aGlzLmJhc2UudmFsdWUpfSxiLnByb3RvdHlwZS5pc1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhc2UgaW5zdGFuY2VvZiBDJiZzLnRlc3QodGhpcy5iYXNlLnZhbHVlKX0sYi5wcm90b3R5cGUuaXNBdG9taWM9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZDtkPXRoaXMucHJvcGVydGllcy5jb25jYXQodGhpcy5iYXNlKTtmb3IoYj0wLGM9ZC5sZW5ndGg7YjxjO2IrKyl7YT1kW2JdO2lmKGEuc29ha3x8YSBpbnN0YW5jZW9mIGkpcmV0dXJuITF9cmV0dXJuITB9LGIucHJvdG90eXBlLmlzU3RhdGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiF0aGlzLnByb3BlcnRpZXMubGVuZ3RoJiZ0aGlzLmJhc2UuaXNTdGF0ZW1lbnQoYSl9LGIucHJvdG90eXBlLmFzc2lnbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIXRoaXMucHJvcGVydGllcy5sZW5ndGgmJnRoaXMuYmFzZS5hc3NpZ25zKGEpfSxiLnByb3RvdHlwZS5qdW1wcz1mdW5jdGlvbihhKXtyZXR1cm4hdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aCYmdGhpcy5iYXNlLmp1bXBzKGEpfSxiLnByb3RvdHlwZS5pc09iamVjdD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aD8hMTp0aGlzLmJhc2UgaW5zdGFuY2VvZiBHJiYoIWF8fHRoaXMuYmFzZS5nZW5lcmF0ZWQpfSxiLnByb3RvdHlwZS5pc1NwbGljZT1mdW5jdGlvbigpe3JldHVybiBlYih0aGlzLnByb3BlcnRpZXMpaW5zdGFuY2VvZiBRfSxiLnByb3RvdHlwZS51bndyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aD90aGlzOnRoaXMuYmFzZX0sYi5wcm90b3R5cGUuY2FjaGVSZWZlcmVuY2U9ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGc7cmV0dXJuIGU9ZWIodGhpcy5wcm9wZXJ0aWVzKSx0aGlzLnByb3BlcnRpZXMubGVuZ3RoPDImJiF0aGlzLmJhc2UuaXNDb21wbGV4KCkmJihlIT1udWxsPyFlLmlzQ29tcGxleCgpOiF2b2lkIDApP1t0aGlzLHRoaXNdOihjPW5ldyBiKHRoaXMuYmFzZSx0aGlzLnByb3BlcnRpZXMuc2xpY2UoMCwtMSkpLGMuaXNDb21wbGV4KCkmJihkPW5ldyBDKGEuc2NvcGUuZnJlZVZhcmlhYmxlKCJiYXNlIikpLGM9bmV3IGIobmV3IEoobmV3IGYoZCxjKSkpKSxlPyhlLmlzQ29tcGxleCgpJiYoZz1uZXcgQyhhLnNjb3BlLmZyZWVWYXJpYWJsZSgibmFtZSIpKSxlPW5ldyB2KG5ldyBmKGcsZS5pbmRleCkpLGc9bmV3IHYoZykpLFtjLmFkZChlKSxuZXcgYihkfHxjLmJhc2UsW2d8fGVdKV0pOltjLGRdKX0sYi5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZjt0aGlzLmJhc2UuZnJvbnQ9dGhpcy5mcm9udCxkPXRoaXMucHJvcGVydGllcyxiPXRoaXMuYmFzZS5jb21waWxlKGEsZC5sZW5ndGg/dzpudWxsKSwodGhpcy5iYXNlIGluc3RhbmNlb2YgSnx8ZC5sZW5ndGgpJiZOLnRlc3QoYikmJihiPSIiK2IrIi4iKTtmb3IoZT0wLGY9ZC5sZW5ndGg7ZTxmO2UrKyljPWRbZV0sYis9Yy5jb21waWxlKGEpO3JldHVybiBifSxiLnByb3RvdHlwZS51bmZvbGRTb2FrPWZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcztyZXR1cm4gdGhpcy51bmZvbGRlZFNvYWshPW51bGw/dGhpcy51bmZvbGRlZFNvYWs6KGM9ZnVuY3Rpb24oKXt2YXIgYyxlLGcsaCxpLGosayxsLG07aWYoZz1kLmJhc2UudW5mb2xkU29hayhhKSlyZXR1cm4gQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZy5ib2R5LnByb3BlcnRpZXMsZC5wcm9wZXJ0aWVzKSxnO209ZC5wcm9wZXJ0aWVzO2ZvcihlPWs9MCxsPW0ubGVuZ3RoO2s8bDtlPSsrayl7aD1tW2VdO2lmKCFoLnNvYWspY29udGludWU7cmV0dXJuIGguc29haz0hMSxjPW5ldyBiKGQuYmFzZSxkLnByb3BlcnRpZXMuc2xpY2UoMCxlKSksaj1uZXcgYihkLmJhc2UsZC5wcm9wZXJ0aWVzLnNsaWNlKGUpKSxjLmlzQ29tcGxleCgpJiYoaT1uZXcgQyhhLnNjb3BlLmZyZWVWYXJpYWJsZSgicmVmIikpLGM9bmV3IEoobmV3IGYoaSxjKSksai5iYXNlPWkpLG5ldyB0KG5ldyBuKGMpLGose3NvYWs6ITB9KX1yZXR1cm4gbnVsbH0oKSx0aGlzLnVuZm9sZGVkU29haz1jfHwhMSl9LGJ9KGcpLGIuQ29tbWVudD1tPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dGhpcy5jb21tZW50PWF9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJDb21tZW50IixiLnByb3RvdHlwZS5pc1N0YXRlbWVudD0kLGIucHJvdG90eXBlLm1ha2VSZXR1cm49VSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBjPSIvKiIrZ2IodGhpcy5jb21tZW50LHRoaXMudGFiKSsoIlxuIit0aGlzLnRhYisiKi9cbiIpLChifHxhLmxldmVsKT09PUImJihjPWEuaW5kZW50K2MpLGN9LGJ9KGcpLGIuQ2FsbD1pPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiLGMpe3RoaXMuYXJncz1iIT1udWxsP2I6W10sdGhpcy5zb2FrPWMsdGhpcy5pc05ldz0hMSx0aGlzLmlzU3VwZXI9YT09PSJzdXBlciIsdGhpcy52YXJpYWJsZT10aGlzLmlzU3VwZXI/bnVsbDphfXJldHVybiBuYihiLGEpLGIubmFtZT0iQ2FsbCIsYi5wcm90b3R5cGUuY2hpbGRyZW49WyJ2YXJpYWJsZSIsImFyZ3MiXSxiLnByb3RvdHlwZS5uZXdJbnN0YW5jZT1mdW5jdGlvbigpe3ZhciBhLGM7cmV0dXJuIGE9KChjPXRoaXMudmFyaWFibGUpIT1udWxsP2MuYmFzZTp2b2lkIDApfHx0aGlzLnZhcmlhYmxlLGEgaW5zdGFuY2VvZiBiJiYhYS5pc05ldz9hLm5ld0luc3RhbmNlKCk6dGhpcy5pc05ldz0hMCx0aGlzfSxiLnByb3RvdHlwZS5zdXBlclJlZmVyZW5jZT1mdW5jdGlvbihhKXt2YXIgYixjLGU7Yz1hLnNjb3BlLm1ldGhvZDtpZighYyl0aHJvdyBTeW50YXhFcnJvcigiY2Fubm90IGNhbGwgc3VwZXIgb3V0c2lkZSBvZiBhIGZ1bmN0aW9uLiIpO2U9Yy5uYW1lO2lmKGU9PW51bGwpdGhyb3cgU3ludGF4RXJyb3IoImNhbm5vdCBjYWxsIHN1cGVyIG9uIGFuIGFub255bW91cyBmdW5jdGlvbi4iKTtyZXR1cm4gYy5rbGFzcz8oYj1bbmV3IGQobmV3IEMoIl9fc3VwZXJfXyIpKV0sY1sic3RhdGljIl0mJmIucHVzaChuZXcgZChuZXcgQygiY29uc3RydWN0b3IiKSkpLGIucHVzaChuZXcgZChuZXcgQyhlKSkpLChuZXcgWShuZXcgQyhjLmtsYXNzKSxiKSkuY29tcGlsZShhKSk6IiIrZSsiLl9fc3VwZXJfXy5jb25zdHJ1Y3RvciJ9LGIucHJvdG90eXBlLnVuZm9sZFNvYWs9ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGYsZyxoLGksaixrO2lmKHRoaXMuc29hayl7aWYodGhpcy52YXJpYWJsZSl7aWYoZD1pYihhLHRoaXMsInZhcmlhYmxlIikpcmV0dXJuIGQ7aj0obmV3IFkodGhpcy52YXJpYWJsZSkpLmNhY2hlUmVmZXJlbmNlKGEpLGU9alswXSxnPWpbMV19ZWxzZSBlPW5ldyBDKHRoaXMuc3VwZXJSZWZlcmVuY2UoYSkpLGc9bmV3IFkoZSk7cmV0dXJuIGc9bmV3IGIoZyx0aGlzLmFyZ3MpLGcuaXNOZXc9dGhpcy5pc05ldyxlPW5ldyBDKCJ0eXBlb2YgIitlLmNvbXBpbGUoYSkrJyA9PT0gImZ1bmN0aW9uIicpLG5ldyB0KGUsbmV3IFkoZykse3NvYWs6ITB9KX1jPXRoaXMsZj1bXTtmb3IoOzspe2lmKGMudmFyaWFibGUgaW5zdGFuY2VvZiBiKXtmLnB1c2goYyksYz1jLnZhcmlhYmxlO2NvbnRpbnVlfWlmKCEoYy52YXJpYWJsZSBpbnN0YW5jZW9mIFkpKWJyZWFrO2YucHVzaChjKTtpZighKChjPWMudmFyaWFibGUuYmFzZSlpbnN0YW5jZW9mIGIpKWJyZWFrfWs9Zi5yZXZlcnNlKCk7Zm9yKGg9MCxpPWsubGVuZ3RoO2g8aTtoKyspYz1rW2hdLGQmJihjLnZhcmlhYmxlIGluc3RhbmNlb2YgYj9jLnZhcmlhYmxlPWQ6Yy52YXJpYWJsZS5iYXNlPWQpLGQ9aWIoYSxjLCJ2YXJpYWJsZSIpO3JldHVybiBkfSxiLnByb3RvdHlwZS5maWx0ZXJJbXBsaWNpdE9iamVjdHM9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZyxoLGksaixrLGw7Yz1bXTtmb3IoaD0wLGo9YS5sZW5ndGg7aDxqO2grKyl7Yj1hW2hdO2lmKCEoKHR5cGVvZiBiLmlzT2JqZWN0PT0iZnVuY3Rpb24iP2IuaXNPYmplY3QoKTp2b2lkIDApJiZiLmJhc2UuZ2VuZXJhdGVkKSl7Yy5wdXNoKGIpO2NvbnRpbnVlfWQ9bnVsbCxsPWIuYmFzZS5wcm9wZXJ0aWVzO2ZvcihpPTAsaz1sLmxlbmd0aDtpPGs7aSsrKWU9bFtpXSxlIGluc3RhbmNlb2YgZnx8ZSBpbnN0YW5jZW9mIG0/KGR8fGMucHVzaChkPW5ldyBHKGc9W10sITApKSxnLnB1c2goZSkpOihjLnB1c2goZSksZD1udWxsKX1yZXR1cm4gY30sYi5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7cmV0dXJuKGU9dGhpcy52YXJpYWJsZSkhPW51bGwmJihlLmZyb250PXRoaXMuZnJvbnQpLChkPVIuY29tcGlsZVNwbGF0dGVkQXJyYXkoYSx0aGlzLmFyZ3MsITApKT90aGlzLmNvbXBpbGVTcGxhdChhLGQpOihjPXRoaXMuZmlsdGVySW1wbGljaXRPYmplY3RzKHRoaXMuYXJncyksYz1mdW5jdGlvbigpe3ZhciBkLGUsZjtmPVtdO2ZvcihkPTAsZT1jLmxlbmd0aDtkPGU7ZCsrKWI9Y1tkXSxmLnB1c2goYi5jb21waWxlKGEseSkpO3JldHVybiBmfSgpLmpvaW4oIiwgIiksdGhpcy5pc1N1cGVyP3RoaXMuc3VwZXJSZWZlcmVuY2UoYSkrKCIuY2FsbCh0aGlzIisoYyYmIiwgIitjKSsiKSIpOih0aGlzLmlzTmV3PyJuZXcgIjoiIikrdGhpcy52YXJpYWJsZS5jb21waWxlKGEsdykrKCIoIitjKyIpIikpfSxiLnByb3RvdHlwZS5jb21waWxlU3VwZXI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4iIit0aGlzLnN1cGVyUmVmZXJlbmNlKGIpKyIuY2FsbCh0aGlzIisoYS5sZW5ndGg/IiwgIjoiIikrYSsiKSJ9LGIucHJvdG90eXBlLmNvbXBpbGVTcGxhdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc7cmV0dXJuIHRoaXMuaXNTdXBlcj8iIit0aGlzLnN1cGVyUmVmZXJlbmNlKGEpKyIuYXBwbHkodGhpcywgIitiKyIpIjp0aGlzLmlzTmV3PyhlPXRoaXMudGFiK1QsIihmdW5jdGlvbihmdW5jLCBhcmdzLCBjdG9yKSB7XG4iK2UrImN0b3IucHJvdG90eXBlID0gZnVuYy5wcm90b3R5cGU7XG4iK2UrInZhciBjaGlsZCA9IG5ldyBjdG9yLCByZXN1bHQgPSBmdW5jLmFwcGx5KGNoaWxkLCBhcmdzKSwgdCA9IHR5cGVvZiByZXN1bHQ7XG4iK2UrJ3JldHVybiB0ID09ICJvYmplY3QiIHx8IHQgPT0gImZ1bmN0aW9uIiA/IHJlc3VsdCB8fCBjaGlsZCA6IGNoaWxkO1xuJyt0aGlzLnRhYisifSkoIit0aGlzLnZhcmlhYmxlLmNvbXBpbGUoYSx5KSsiLCAiK2IrIiwgZnVuY3Rpb24oKXt9KSIpOihjPW5ldyBZKHRoaXMudmFyaWFibGUpLChmPWMucHJvcGVydGllcy5wb3AoKSkmJmMuaXNDb21wbGV4KCk/KGc9YS5zY29wZS5mcmVlVmFyaWFibGUoInJlZiIpLGQ9IigiK2crIiA9ICIrYy5jb21waWxlKGEseSkrIikiK2YuY29tcGlsZShhKSk6KGQ9Yy5jb21waWxlKGEsdyksTi50ZXN0KGQpJiYoZD0iKCIrZCsiKSIpLGY/KGc9ZCxkKz1mLmNvbXBpbGUoYSkpOmc9Im51bGwiKSwiIitkKyIuYXBwbHkoIitnKyIsICIrYisiKSIpfSxifShnKSxiLkV4dGVuZHM9bz1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsYil7dGhpcy5jaGlsZD1hLHRoaXMucGFyZW50PWJ9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJFeHRlbmRzIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImNoaWxkIiwicGFyZW50Il0sYi5wcm90b3R5cGUuY29tcGlsZT1mdW5jdGlvbihhKXtyZXR1cm4obmV3IGkobmV3IFkobmV3IEMoamIoImV4dGVuZHMiKSkpLFt0aGlzLmNoaWxkLHRoaXMucGFyZW50XSkpLmNvbXBpbGUoYSl9LGJ9KGcpLGIuQWNjZXNzPWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIpe3RoaXMubmFtZT1hLHRoaXMubmFtZS5hc0tleT0hMCx0aGlzLnNvYWs9Yj09PSJzb2FrIn1yZXR1cm4gbmIoYixhKSxiLm5hbWU9IkFjY2VzcyIsYi5wcm90b3R5cGUuY2hpbGRyZW49WyJuYW1lIl0sYi5wcm90b3R5cGUuY29tcGlsZT1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gYj10aGlzLm5hbWUuY29tcGlsZShhKSxxLnRlc3QoYik/Ii4iK2I6IlsiK2IrIl0ifSxiLnByb3RvdHlwZS5pc0NvbXBsZXg9RixifShnKSxiLkluZGV4PXY9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt0aGlzLmluZGV4PWF9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJJbmRleCIsYi5wcm90b3R5cGUuY2hpbGRyZW49WyJpbmRleCJdLGIucHJvdG90eXBlLmNvbXBpbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIlsiK3RoaXMuaW5kZXguY29tcGlsZShhLEEpKyJdIn0sYi5wcm90b3R5cGUuaXNDb21wbGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXguaXNDb21wbGV4KCl9LGJ9KGcpLGIuUmFuZ2U9TD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsYixjKXt0aGlzLmZyb209YSx0aGlzLnRvPWIsdGhpcy5leGNsdXNpdmU9Yz09PSJleGNsdXNpdmUiLHRoaXMuZXF1YWxzPXRoaXMuZXhjbHVzaXZlPyIiOiI9In1yZXR1cm4gbmIoYixhKSxiLm5hbWU9IlJhbmdlIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImZyb20iLCJ0byJdLGIucHJvdG90eXBlLmNvbXBpbGVWYXJpYWJsZXM9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZjthPWZiKGEse3RvcDohMH0pLGM9dGhpcy5mcm9tLmNhY2hlKGEseSksdGhpcy5mcm9tQz1jWzBdLHRoaXMuZnJvbVZhcj1jWzFdLGQ9dGhpcy50by5jYWNoZShhLHkpLHRoaXMudG9DPWRbMF0sdGhpcy50b1Zhcj1kWzFdO2lmKGI9YWIoYSwic3RlcCIpKWU9Yi5jYWNoZShhLHkpLHRoaXMuc3RlcD1lWzBdLHRoaXMuc3RlcFZhcj1lWzFdO2Y9W3RoaXMuZnJvbVZhci5tYXRjaChOKSx0aGlzLnRvVmFyLm1hdGNoKE4pXSx0aGlzLmZyb21OdW09ZlswXSx0aGlzLnRvTnVtPWZbMV07aWYodGhpcy5zdGVwVmFyKXJldHVybiB0aGlzLnN0ZXBOdW09dGhpcy5zdGVwVmFyLm1hdGNoKE4pfSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvO3JldHVybiB0aGlzLmZyb21WYXJ8fHRoaXMuY29tcGlsZVZhcmlhYmxlcyhhKSxhLmluZGV4PyhoPXRoaXMuZnJvbU51bSYmdGhpcy50b051bSxmPWFiKGEsImluZGV4IiksZz1hYihhLCJuYW1lIiksaj1nJiZnIT09ZixtPSIiK2YrIiA9ICIrdGhpcy5mcm9tQyx0aGlzLnRvQyE9PXRoaXMudG9WYXImJihtKz0iLCAiK3RoaXMudG9DKSx0aGlzLnN0ZXAhPT10aGlzLnN0ZXBWYXImJihtKz0iLCAiK3RoaXMuc3RlcCksbj1bIiIrZisiIDwiK3RoaXMuZXF1YWxzLCIiK2YrIiA+Iit0aGlzLmVxdWFsc10saT1uWzBdLGU9blsxXSxjPXRoaXMuc3RlcE51bT8rdGhpcy5zdGVwTnVtPjA/IiIraSsiICIrdGhpcy50b1ZhcjoiIitlKyIgIit0aGlzLnRvVmFyOmg/KG89Wyt0aGlzLmZyb21OdW0sK3RoaXMudG9OdW1dLGQ9b1swXSxsPW9bMV0sbyxkPD1sPyIiK2krIiAiK2w6IiIrZSsiICIrbCk6KGI9IiIrdGhpcy5mcm9tVmFyKyIgPD0gIit0aGlzLnRvVmFyLCIiK2IrIiA/ICIraSsiICIrdGhpcy50b1ZhcisiIDogIitlKyIgIit0aGlzLnRvVmFyKSxrPXRoaXMuc3RlcFZhcj8iIitmKyIgKz0gIit0aGlzLnN0ZXBWYXI6aD9qP2Q8PWw/IisrIitmOiItLSIrZjpkPD1sPyIiK2YrIisrIjoiIitmKyItLSI6aj8iIitiKyIgPyArKyIrZisiIDogLS0iK2Y6IiIrYisiID8gIitmKyIrKyA6ICIrZisiLS0iLGomJihtPSIiK2crIiA9ICIrbSksaiYmKGs9IiIrZysiID0gIitrKSwiIittKyI7ICIrYysiOyAiK2spOnRoaXMuY29tcGlsZUFycmF5KGEpfSxiLnByb3RvdHlwZS5jb21waWxlQXJyYXk9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2lmKHRoaXMuZnJvbU51bSYmdGhpcy50b051bSYmTWF0aC5hYnModGhpcy5mcm9tTnVtLXRoaXMudG9OdW0pPD0yMClyZXR1cm4gaj1mdW5jdGlvbigpe3A9W107Zm9yKHZhciBhPW49K3RoaXMuZnJvbU51bSxiPSt0aGlzLnRvTnVtO248PWI/YTw9YjphPj1iO248PWI/YSsrOmEtLSlwLnB1c2goYSk7cmV0dXJuIHB9LmFwcGx5KHRoaXMpLHRoaXMuZXhjbHVzaXZlJiZqLnBvcCgpLCJbIitqLmpvaW4oIiwgIikrIl0iO2c9dGhpcy50YWIrVCxmPWEuc2NvcGUuZnJlZVZhcmlhYmxlKCJpIiksaz1hLnNjb3BlLmZyZWVWYXJpYWJsZSgicmVzdWx0cyIpLGk9IlxuIitnK2srIiA9IFtdOyIsdGhpcy5mcm9tTnVtJiZ0aGlzLnRvTnVtPyhhLmluZGV4PWYsYz10aGlzLmNvbXBpbGVOb2RlKGEpKToobD0iIitmKyIgPSAiK3RoaXMuZnJvbUMrKHRoaXMudG9DIT09dGhpcy50b1Zhcj8iLCAiK3RoaXMudG9DOiIiKSxkPSIiK3RoaXMuZnJvbVZhcisiIDw9ICIrdGhpcy50b1ZhcixjPSJ2YXIgIitsKyI7ICIrZCsiID8gIitmKyIgPCIrdGhpcy5lcXVhbHMrIiAiK3RoaXMudG9WYXIrIiA6ICIrZisiID4iK3RoaXMuZXF1YWxzKyIgIit0aGlzLnRvVmFyKyI7ICIrZCsiID8gIitmKyIrKyA6ICIrZisiLS0iKSxoPSJ7ICIraysiLnB1c2goIitmKyIpOyB9XG4iK2crInJldHVybiAiK2srIjtcbiIrYS5pbmRlbnQsZT1mdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbD9hLmNvbnRhaW5zKGZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQyYmYS52YWx1ZT09PSJhcmd1bWVudHMiJiYhYS5hc0tleX0pOnZvaWQgMH07aWYoZSh0aGlzLmZyb20pfHxlKHRoaXMudG8pKWI9IiwgYXJndW1lbnRzIjtyZXR1cm4iKGZ1bmN0aW9uKCkgeyIraSsiXG4iK2crImZvciAoIitjKyIpIitoKyJ9KS5hcHBseSh0aGlzIisoYiE9bnVsbD9iOiIiKSsiKSJ9LGJ9KGcpLGIuU2xpY2U9UT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3RoaXMucmFuZ2U9YSxiLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfXJldHVybiBuYihiLGEpLGIubmFtZT0iU2xpY2UiLGIucHJvdG90eXBlLmNoaWxkcmVuPVsicmFuZ2UiXSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGc7cmV0dXJuIGc9dGhpcy5yYW5nZSxlPWcudG8sYz1nLmZyb20sZD1jJiZjLmNvbXBpbGUoYSxBKXx8IjAiLGI9ZSYmZS5jb21waWxlKGEsQSksZSYmKCEhdGhpcy5yYW5nZS5leGNsdXNpdmV8fCtiIT09LTEpJiYoZj0iLCAiKyh0aGlzLnJhbmdlLmV4Y2x1c2l2ZT9iOk4udGVzdChiKT8iIisoK2IrMSk6KGI9ZS5jb21waWxlKGEsdyksIiIrYisiICsgMSB8fCA5ZTkiKSkpLCIuc2xpY2UoIitkKyhmfHwiIikrIikifSxifShnKSxiLk9iaj1HPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiKXt0aGlzLmdlbmVyYXRlZD1iIT1udWxsP2I6ITEsdGhpcy5vYmplY3RzPXRoaXMucHJvcGVydGllcz1hfHxbXX1yZXR1cm4gbmIoYixhKSxiLm5hbWU9Ik9iaiIsYi5wcm90b3R5cGUuY2hpbGRyZW49WyJwcm9wZXJ0aWVzIl0sYi5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZyxoLGksaixrLGwsbixvLHAscSxyLHM7bj10aGlzLnByb3BlcnRpZXMsbD1bXSxzPXRoaXMucHJvcGVydGllcztmb3Iobz0wLHE9cy5sZW5ndGg7bzxxO28rKyl7aj1zW29dLGouaXNDb21wbGV4KCkmJihqPWoudmFyaWFibGUpO2lmKGohPW51bGwpe2s9ai51bndyYXBBbGwoKS52YWx1ZS50b1N0cmluZygpO2lmKG9iLmNhbGwobCxrKT49MCl0aHJvdyBTeW50YXhFcnJvcignbXVsdGlwbGUgb2JqZWN0IGxpdGVyYWwgcHJvcGVydGllcyBuYW1lZCAiJytrKyciJyk7bC5wdXNoKGspfX1pZighbi5sZW5ndGgpcmV0dXJuIHRoaXMuZnJvbnQ/Iih7fSkiOiJ7fSI7aWYodGhpcy5nZW5lcmF0ZWQpZm9yKHA9MCxyPW4ubGVuZ3RoO3A8cjtwKyspe2g9bltwXTtpZihoIGluc3RhbmNlb2YgWSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBoYXZlIGFuIGltcGxpY2l0IHZhbHVlIGluIGFuIGltcGxpY2l0IG9iamVjdCIpfXJldHVybiBjPWEuaW5kZW50Kz1ULGc9dGhpcy5sYXN0Tm9uQ29tbWVudCh0aGlzLnByb3BlcnRpZXMpLG49ZnVuY3Rpb24oKXt2YXIgaCxpLGs7az1bXTtmb3IoYj1oPTAsaT1uLmxlbmd0aDtoPGk7Yj0rK2gpaj1uW2JdLGU9Yj09PW4ubGVuZ3RoLTE/IiI6aj09PWd8fGogaW5zdGFuY2VvZiBtPyJcbiI6IixcbiIsZD1qIGluc3RhbmNlb2YgbT8iIjpjLGogaW5zdGFuY2VvZiBZJiZqWyJ0aGlzIl0mJihqPW5ldyBmKGoucHJvcGVydGllc1swXS5uYW1lLGosIm9iamVjdCIpKSxqIGluc3RhbmNlb2YgbXx8KGogaW5zdGFuY2VvZiBmfHwoaj1uZXcgZihqLGosIm9iamVjdCIpKSwoai52YXJpYWJsZS5iYXNlfHxqLnZhcmlhYmxlKS5hc0tleT0hMCksay5wdXNoKGQrai5jb21waWxlKGEsQikrZSk7cmV0dXJuIGt9KCksbj1uLmpvaW4oIiIpLGk9InsiKyhuJiYiXG4iK24rIlxuIit0aGlzLnRhYikrIn0iLHRoaXMuZnJvbnQ/IigiK2krIikiOml9LGIucHJvdG90eXBlLmFzc2lnbnM9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7ZT10aGlzLnByb3BlcnRpZXM7Zm9yKGM9MCxkPWUubGVuZ3RoO2M8ZDtjKyspe2I9ZVtjXTtpZihiLmFzc2lnbnMoYSkpcmV0dXJuITB9cmV0dXJuITF9LGJ9KGcpLGIuQXJyPWU9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt0aGlzLm9iamVjdHM9YXx8W119cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJBcnIiLGIucHJvdG90eXBlLmNoaWxkcmVuPVsib2JqZWN0cyJdLGIucHJvdG90eXBlLmZpbHRlckltcGxpY2l0T2JqZWN0cz1pLnByb3RvdHlwZS5maWx0ZXJJbXBsaWNpdE9iamVjdHMsYi5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkO3JldHVybiB0aGlzLm9iamVjdHMubGVuZ3RoPyhhLmluZGVudCs9VCxkPXRoaXMuZmlsdGVySW1wbGljaXRPYmplY3RzKHRoaXMub2JqZWN0cyksKGI9Ui5jb21waWxlU3BsYXR0ZWRBcnJheShhLGQpKT9iOihiPWZ1bmN0aW9uKCl7dmFyIGIsZSxmO2Y9W107Zm9yKGI9MCxlPWQubGVuZ3RoO2I8ZTtiKyspYz1kW2JdLGYucHVzaChjLmNvbXBpbGUoYSx5KSk7cmV0dXJuIGZ9KCkuam9pbigiLCAiKSxiLmluZGV4T2YoIlxuIik+PTA/IltcbiIrYS5pbmRlbnQrYisiXG4iK3RoaXMudGFiKyJdIjoiWyIrYisiXSIpKToiW10ifSxiLnByb3RvdHlwZS5hc3NpZ25zPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO2U9dGhpcy5vYmplY3RzO2ZvcihjPTAsZD1lLmxlbmd0aDtjPGQ7YysrKXtiPWVbY107aWYoYi5hc3NpZ25zKGEpKXJldHVybiEwfXJldHVybiExfSxifShnKSxiLkNsYXNzPWo9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIsYyl7dGhpcy52YXJpYWJsZT1hLHRoaXMucGFyZW50PWIsdGhpcy5ib2R5PWMhPW51bGw/YzpuZXcgaCx0aGlzLmJvdW5kRnVuY3M9W10sdGhpcy5ib2R5LmNsYXNzQm9keT0hMH1yZXR1cm4gbmIoYixhKSxiLm5hbWU9IkNsYXNzIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bInZhcmlhYmxlIiwicGFyZW50IiwiYm9keSJdLGIucHJvdG90eXBlLmRldGVybWluZU5hbWU9ZnVuY3Rpb24oKXt2YXIgYSxiO2lmKCF0aGlzLnZhcmlhYmxlKXJldHVybiBudWxsO2E9KGI9ZWIodGhpcy52YXJpYWJsZS5wcm9wZXJ0aWVzKSk/YiBpbnN0YW5jZW9mIGQmJmIubmFtZS52YWx1ZTp0aGlzLnZhcmlhYmxlLmJhc2UudmFsdWU7aWYob2IuY2FsbChPLGEpPj0wKXRocm93IFN5bnRheEVycm9yKCJ2YXJpYWJsZSBuYW1lIG1heSBub3QgYmUgIithKTtyZXR1cm4gYSYmKGE9cS50ZXN0KGEpJiZhKX0sYi5wcm90b3R5cGUuc2V0Q29udGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ib2R5LnRyYXZlcnNlQ2hpbGRyZW4oITEsZnVuY3Rpb24oYil7aWYoYi5jbGFzc0JvZHkpcmV0dXJuITE7aWYoYiBpbnN0YW5jZW9mIEMmJmIudmFsdWU9PT0idGhpcyIpcmV0dXJuIGIudmFsdWU9YTtpZihiIGluc3RhbmNlb2YgbCl7Yi5rbGFzcz1hO2lmKGIuYm91bmQpcmV0dXJuIGIuY29udGV4dD1hfX0pfSxiLnByb3RvdHlwZS5hZGRCb3VuZEZ1bmN0aW9ucz1mdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGg7aWYodGhpcy5ib3VuZEZ1bmNzLmxlbmd0aCl7Zz10aGlzLmJvdW5kRnVuY3MsaD1bXTtmb3IoZT0wLGY9Zy5sZW5ndGg7ZTxmO2UrKyliPWdbZV0sYz0obmV3IFkobmV3IEMoInRoaXMiKSxbbmV3IGQoYildKSkuY29tcGlsZShhKSxoLnB1c2godGhpcy5jdG9yLmJvZHkudW5zaGlmdChuZXcgQygiIitjKyIgPSAiK2piKCJiaW5kIikrIigiK2MrIiwgdGhpcykiKSkpO3JldHVybiBofX0sYi5wcm90b3R5cGUuYWRkUHJvcGVydGllcz1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZyxoLGksajtyZXR1cm4gaj1hLmJhc2UucHJvcGVydGllcy5zbGljZSgwKSxoPWZ1bmN0aW9uKCl7dmFyIGE7YT1bXTt3aGlsZShlPWouc2hpZnQoKSl7aWYoZSBpbnN0YW5jZW9mIGYpe2c9ZS52YXJpYWJsZS5iYXNlLGRlbGV0ZSBlLmNvbnRleHQsaT1lLnZhbHVlO2lmKGcudmFsdWU9PT0iY29uc3RydWN0b3IiKXtpZih0aGlzLmN0b3IpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZGVmaW5lIG1vcmUgdGhhbiBvbmUgY29uc3RydWN0b3IgaW4gYSBjbGFzcyIpO2lmKGkuYm91bmQpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZGVmaW5lIGEgY29uc3RydWN0b3IgYXMgYSBib3VuZCBmdW5jdGlvbiIpO2kgaW5zdGFuY2VvZiBsP2U9dGhpcy5jdG9yPWk6KHRoaXMuZXh0ZXJuYWxDdG9yPWMuc2NvcGUuZnJlZVZhcmlhYmxlKCJjbGFzcyIpLGU9bmV3IGYobmV3IEModGhpcy5leHRlcm5hbEN0b3IpLGkpKX1lbHNlIGUudmFyaWFibGVbInRoaXMiXT8oaVsic3RhdGljIl09ITAsaS5ib3VuZCYmKGkuY29udGV4dD1iKSk6KGUudmFyaWFibGU9bmV3IFkobmV3IEMoYiksW25ldyBkKG5ldyBDKCJwcm90b3R5cGUiKSksbmV3IGQoZyldKSxpIGluc3RhbmNlb2YgbCYmaS5ib3VuZCYmKHRoaXMuYm91bmRGdW5jcy5wdXNoKGcpLGkuYm91bmQ9ITEpKX1hLnB1c2goZSl9cmV0dXJuIGF9LmNhbGwodGhpcyksXyhoKX0sYi5wcm90b3R5cGUud2Fsa0JvZHk9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzO3JldHVybiB0aGlzLnRyYXZlcnNlQ2hpbGRyZW4oITEsZnVuY3Rpb24oZSl7dmFyIGYsZyxpLGosayxsO2lmKGUgaW5zdGFuY2VvZiBiKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiBoKXtsPWY9ZS5leHByZXNzaW9ucztmb3IoZz1qPTAsaz1sLmxlbmd0aDtqPGs7Zz0rK2opaT1sW2ddLGkgaW5zdGFuY2VvZiBZJiZpLmlzT2JqZWN0KCEwKSYmKGZbZ109ZC5hZGRQcm9wZXJ0aWVzKGksYSxjKSk7cmV0dXJuIGUuZXhwcmVzc2lvbnM9Zj1kYihmKX19KX0sYi5wcm90b3R5cGUuaG9pc3REaXJlY3RpdmVQcm9sb2d1ZT1mdW5jdGlvbigpe3ZhciBhLGIsYztiPTAsYT10aGlzLmJvZHkuZXhwcmVzc2lvbnM7d2hpbGUoKGM9YVtiXSkmJmMgaW5zdGFuY2VvZiBtfHxjIGluc3RhbmNlb2YgWSYmYy5pc1N0cmluZygpKSsrYjtyZXR1cm4gdGhpcy5kaXJlY3RpdmVzPWEuc3BsaWNlKDAsYil9LGIucHJvdG90eXBlLmVuc3VyZUNvbnN0cnVjdG9yPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmN0b3J8fCh0aGlzLmN0b3I9bmV3IGwsdGhpcy5wYXJlbnQmJnRoaXMuY3Rvci5ib2R5LnB1c2gobmV3IEMoIiIrYSsiLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIikpLHRoaXMuZXh0ZXJuYWxDdG9yJiZ0aGlzLmN0b3IuYm9keS5wdXNoKG5ldyBDKCIiK3RoaXMuZXh0ZXJuYWxDdG9yKyIuYXBwbHkodGhpcywgYXJndW1lbnRzKSIpKSx0aGlzLmN0b3IuYm9keS5tYWtlUmV0dXJuKCksdGhpcy5ib2R5LmV4cHJlc3Npb25zLnVuc2hpZnQodGhpcy5jdG9yKSksdGhpcy5jdG9yLmN0b3I9dGhpcy5jdG9yLm5hbWU9YSx0aGlzLmN0b3Iua2xhc3M9bnVsbCx0aGlzLmN0b3Iubm9SZXR1cm49ITB9LGIucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxnLGgsaSxqO3JldHVybiBjPXRoaXMuZGV0ZXJtaW5lTmFtZSgpLGg9Y3x8Il9DbGFzcyIsaC5yZXNlcnZlZCYmKGg9Il8iK2gpLGc9bmV3IEMoaCksdGhpcy5ob2lzdERpcmVjdGl2ZVByb2xvZ3VlKCksdGhpcy5zZXRDb250ZXh0KGgpLHRoaXMud2Fsa0JvZHkoaCxhKSx0aGlzLmVuc3VyZUNvbnN0cnVjdG9yKGgpLHRoaXMuYm9keS5zcGFjZWQ9ITAsdGhpcy5jdG9yIGluc3RhbmNlb2YgbHx8dGhpcy5ib2R5LmV4cHJlc3Npb25zLnVuc2hpZnQodGhpcy5jdG9yKSxjJiZ0aGlzLmJvZHkuZXhwcmVzc2lvbnMudW5zaGlmdChuZXcgZihuZXcgWShuZXcgQyhoKSxbbmV3IGQobmV3IEMoIm5hbWUiKSldKSxuZXcgQygiJyIraCsiJyIpKSksdGhpcy5ib2R5LmV4cHJlc3Npb25zLnB1c2goZyksKGo9dGhpcy5ib2R5LmV4cHJlc3Npb25zKS51bnNoaWZ0LmFwcGx5KGosdGhpcy5kaXJlY3RpdmVzKSx0aGlzLmFkZEJvdW5kRnVuY3Rpb25zKGEpLGI9ay53cmFwKHRoaXMuYm9keSksdGhpcy5wYXJlbnQmJih0aGlzLnN1cGVyQ2xhc3M9bmV3IEMoYS5zY29wZS5mcmVlVmFyaWFibGUoInN1cGVyIiwhMSkpLHRoaXMuYm9keS5leHByZXNzaW9ucy51bnNoaWZ0KG5ldyBvKGcsdGhpcy5zdXBlckNsYXNzKSksYi5hcmdzLnB1c2godGhpcy5wYXJlbnQpLGk9Yi52YXJpYWJsZS5wYXJhbXN8fGIudmFyaWFibGUuYmFzZS5wYXJhbXMsaS5wdXNoKG5ldyBJKHRoaXMuc3VwZXJDbGFzcykpKSxlPW5ldyBKKGIsITApLHRoaXMudmFyaWFibGUmJihlPW5ldyBmKHRoaXMudmFyaWFibGUsZSkpLGUuY29tcGlsZShhKX0sYn0oZyksYi5Bc3NpZ249Zj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsYixjLGQpe3ZhciBlLGYsZzt0aGlzLnZhcmlhYmxlPWEsdGhpcy52YWx1ZT1iLHRoaXMuY29udGV4dD1jLHRoaXMucGFyYW09ZCYmZC5wYXJhbSx0aGlzLnN1YnBhdHRlcm49ZCYmZC5zdWJwYXR0ZXJuLGU9KGc9Zj10aGlzLnZhcmlhYmxlLnVud3JhcEFsbCgpLnZhbHVlLG9iLmNhbGwoTyxnKT49MCk7aWYoZSYmdGhpcy5jb250ZXh0IT09Im9iamVjdCIpdGhyb3cgU3ludGF4RXJyb3IoJ3ZhcmlhYmxlIG5hbWUgbWF5IG5vdCBiZSAiJytmKyciJyl9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJBc3NpZ24iLGIucHJvdG90eXBlLmNoaWxkcmVuPVsidmFyaWFibGUiLCJ2YWx1ZSJdLGIucHJvdG90eXBlLmlzU3RhdGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybihhIT1udWxsP2EubGV2ZWw6dm9pZCAwKT09PUImJnRoaXMuY29udGV4dCE9bnVsbCYmb2IuY2FsbCh0aGlzLmNvbnRleHQsIj8iKT49MH0sYi5wcm90b3R5cGUuYXNzaWducz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpc1t0aGlzLmNvbnRleHQ9PT0ib2JqZWN0Ij8idmFsdWUiOiJ2YXJpYWJsZSJdLmFzc2lnbnMoYSl9LGIucHJvdG90eXBlLnVuZm9sZFNvYWs9ZnVuY3Rpb24oYSl7cmV0dXJuIGliKGEsdGhpcywidmFyaWFibGUiKX0sYi5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqO2lmKGI9dGhpcy52YXJpYWJsZSBpbnN0YW5jZW9mIFkpe2lmKHRoaXMudmFyaWFibGUuaXNBcnJheSgpfHx0aGlzLnZhcmlhYmxlLmlzT2JqZWN0KCkpcmV0dXJuIHRoaXMuY29tcGlsZVBhdHRlcm5NYXRjaChhKTtpZih0aGlzLnZhcmlhYmxlLmlzU3BsaWNlKCkpcmV0dXJuIHRoaXMuY29tcGlsZVNwbGljZShhKTtpZigoZz10aGlzLmNvbnRleHQpPT09Inx8PSJ8fGc9PT0iJiY9Inx8Zz09PSI/PSIpcmV0dXJuIHRoaXMuY29tcGlsZUNvbmRpdGlvbmFsKGEpfWQ9dGhpcy52YXJpYWJsZS5jb21waWxlKGEseSk7aWYoIXRoaXMuY29udGV4dCl7aWYoIShmPXRoaXMudmFyaWFibGUudW53cmFwQWxsKCkpLmlzQXNzaWduYWJsZSgpKXRocm93IFN5bnRheEVycm9yKCciJyt0aGlzLnZhcmlhYmxlLmNvbXBpbGUoYSkrJyIgY2Fubm90IGJlIGFzc2lnbmVkLicpO2lmKHR5cGVvZiBmLmhhc1Byb3BlcnRpZXM9PSJmdW5jdGlvbiI/IWYuaGFzUHJvcGVydGllcygpOiF2b2lkIDApdGhpcy5wYXJhbT9hLnNjb3BlLmFkZChkLCJ2YXIiKTphLnNjb3BlLmZpbmQoZCl9cmV0dXJuIHRoaXMudmFsdWUgaW5zdGFuY2VvZiBsJiYoYz1ELmV4ZWMoZCkpJiYoY1sxXSYmKHRoaXMudmFsdWUua2xhc3M9Y1sxXSksdGhpcy52YWx1ZS5uYW1lPShoPShpPShqPWNbMl0pIT1udWxsP2o6Y1szXSkhPW51bGw/aTpjWzRdKSE9bnVsbD9oOmNbNV0pLGU9dGhpcy52YWx1ZS5jb21waWxlKGEseSksdGhpcy5jb250ZXh0PT09Im9iamVjdCI/IiIrZCsiOiAiK2U6KGU9ZCsoIiAiKyh0aGlzLmNvbnRleHR8fCI9IikrIiAiKStlLGEubGV2ZWw8PXk/ZToiKCIrZSsiKSIpfSxiLnByb3RvdHlwZS5jb21waWxlUGF0dGVybk1hdGNoPWZ1bmN0aW9uKGEpe3ZhciBjLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHIscyx0LHUsdyx4LEEsRCxFLEYsRyxILEksTDtzPWEubGV2ZWw9PT1CLHU9dGhpcy52YWx1ZSxtPXRoaXMudmFyaWFibGUuYmFzZS5vYmplY3RzO2lmKCEobj1tLmxlbmd0aCkpcmV0dXJuIGY9dS5jb21waWxlKGEpLGEubGV2ZWw+PXo/IigiK2YrIikiOmY7aT10aGlzLnZhcmlhYmxlLmlzT2JqZWN0KCk7aWYocyYmbj09PTEmJiEoKGw9bVswXSlpbnN0YW5jZW9mIFIpKXtsIGluc3RhbmNlb2YgYj8oRD1sLEU9RC52YXJpYWJsZSxoPUUuYmFzZSxsPUQudmFsdWUpOmwuYmFzZSBpbnN0YW5jZW9mIEo/KEY9KG5ldyBZKGwudW53cmFwQWxsKCkpKS5jYWNoZVJlZmVyZW5jZShhKSxsPUZbMF0saD1GWzFdKTpoPWk/bFsidGhpcyJdP2wucHJvcGVydGllc1swXS5uYW1lOmw6bmV3IEMoMCksYz1xLnRlc3QoaC51bndyYXAoKS52YWx1ZXx8MCksdT1uZXcgWSh1KSx1LnByb3BlcnRpZXMucHVzaChuZXcoYz9kOnYpKGgpKTtpZihHPWwudW53cmFwKCkudmFsdWUsb2IuY2FsbChLLEcpPj0wKXRocm93IG5ldyBTeW50YXhFcnJvcigiYXNzaWdubWVudCB0byBhIHJlc2VydmVkIHdvcmQ6ICIrbC5jb21waWxlKGEpKyIgPSAiK3UuY29tcGlsZShhKSk7cmV0dXJuKG5ldyBiKGwsdSxudWxsLHtwYXJhbTp0aGlzLnBhcmFtfSkpLmNvbXBpbGUoYSxCKX13PXUuY29tcGlsZShhLHkpLGU9W10scj0hMTtpZighcS50ZXN0KHcpfHx0aGlzLnZhcmlhYmxlLmFzc2lnbnModykpZS5wdXNoKCIiKyhvPWEuc2NvcGUuZnJlZVZhcmlhYmxlKCJyZWYiKSkrIiA9ICIrdyksdz1vO2ZvcihnPXg9MCxBPW0ubGVuZ3RoO3g8QTtnPSsreCl7bD1tW2ddLGg9ZyxpJiYobCBpbnN0YW5jZW9mIGI/KEg9bCxJPUgudmFyaWFibGUsaD1JLmJhc2UsbD1ILnZhbHVlKTpsLmJhc2UgaW5zdGFuY2VvZiBKPyhMPShuZXcgWShsLnVud3JhcEFsbCgpKSkuY2FjaGVSZWZlcmVuY2UoYSksbD1MWzBdLGg9TFsxXSk6aD1sWyJ0aGlzIl0/bC5wcm9wZXJ0aWVzWzBdLm5hbWU6bCk7aWYoIXImJmwgaW5zdGFuY2VvZiBSKWs9bC5uYW1lLnVud3JhcCgpLnZhbHVlLGw9bC51bndyYXAoKSx0PSIiK24rIiA8PSAiK3crIi5sZW5ndGggPyAiK2piKCJzbGljZSIpKyIuY2FsbCgiK3crIiwgIitnLChwPW4tZy0xKT8oaj1hLnNjb3BlLmZyZWVWYXJpYWJsZSgiaSIpLHQrPSIsICIraisiID0gIit3KyIubGVuZ3RoIC0gIitwKyIpIDogKCIraisiID0gIitnKyIsIFtdKSIpOnQrPSIpIDogW10iLHQ9bmV3IEModCkscj0iIitqKyIrKyI7ZWxzZXtrPWwudW53cmFwKCkudmFsdWU7aWYobCBpbnN0YW5jZW9mIFIpdGhyb3cgbD1sLm5hbWUuY29tcGlsZShhKSxuZXcgU3ludGF4RXJyb3IoIm11bHRpcGxlIHNwbGF0cyBhcmUgZGlzYWxsb3dlZCBpbiBhbiBhc3NpZ25tZW50OiAiK2wrIi4uLiIpO3R5cGVvZiBoPT0ibnVtYmVyIj8oaD1uZXcgQyhyfHxoKSxjPSExKTpjPWkmJnEudGVzdChoLnVud3JhcCgpLnZhbHVlfHwwKSx0PW5ldyBZKG5ldyBDKHcpLFtuZXcoYz9kOnYpKGgpXSl9aWYoayE9bnVsbCYmb2IuY2FsbChLLGspPj0wKXRocm93IG5ldyBTeW50YXhFcnJvcigiYXNzaWdubWVudCB0byBhIHJlc2VydmVkIHdvcmQ6ICIrbC5jb21waWxlKGEpKyIgPSAiK3QuY29tcGlsZShhKSk7ZS5wdXNoKChuZXcgYihsLHQsbnVsbCx7cGFyYW06dGhpcy5wYXJhbSxzdWJwYXR0ZXJuOiEwfSkpLmNvbXBpbGUoYSx5KSl9cmV0dXJuIXMmJiF0aGlzLnN1YnBhdHRlcm4mJmUucHVzaCh3KSxmPWUuam9pbigiLCAiKSxhLmxldmVsPHk/ZjoiKCIrZisiKSJ9LGIucHJvdG90eXBlLmNvbXBpbGVDb25kaXRpb25hbD1mdW5jdGlvbihhKXt2YXIgYyxkLGU7ZT10aGlzLnZhcmlhYmxlLmNhY2hlUmVmZXJlbmNlKGEpLGM9ZVswXSxkPWVbMV07aWYoYy5iYXNlIGluc3RhbmNlb2YgQyYmYy5iYXNlLnZhbHVlIT09InRoaXMiJiYhYS5zY29wZS5jaGVjayhjLmJhc2UudmFsdWUpKXRocm93IG5ldyBFcnJvcigndGhlIHZhcmlhYmxlICInK2MuYmFzZS52YWx1ZSsiXCIgY2FuJ3QgYmUgYXNzaWduZWQgd2l0aCAiK3RoaXMuY29udGV4dCsiIGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGRlZmluZWQuIik7cmV0dXJuIG9iLmNhbGwodGhpcy5jb250ZXh0LCI/Iik+PTAmJihhLmlzRXhpc3RlbnRpYWxFcXVhbHM9ITApLChuZXcgSCh0aGlzLmNvbnRleHQuc2xpY2UoMCwtMSksYyxuZXcgYihkLHRoaXMudmFsdWUsIj0iKSkpLmNvbXBpbGUoYSl9LGIucHJvdG90eXBlLmNvbXBpbGVTcGxpY2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtO3JldHVybiBrPXRoaXMudmFyaWFibGUucHJvcGVydGllcy5wb3AoKS5yYW5nZSxkPWsuZnJvbSxoPWsudG8sYz1rLmV4Y2x1c2l2ZSxnPXRoaXMudmFyaWFibGUuY29tcGlsZShhKSxsPShkIT1udWxsP2QuY2FjaGUoYSx6KTp2b2lkIDApfHxbIjAiLCIwIl0sZT1sWzBdLGY9bFsxXSxoPyhkIT1udWxsP2QuaXNTaW1wbGVOdW1iZXIoKTp2b2lkIDApJiZoLmlzU2ltcGxlTnVtYmVyKCk/KGg9K2guY29tcGlsZShhKS0gK2YsY3x8KGgrPTEpKTooaD1oLmNvbXBpbGUoYSx3KSsiIC0gIitmLGN8fChoKz0iICsgMSIpKTpoPSI5ZTkiLG09dGhpcy52YWx1ZS5jYWNoZShhLHkpLGk9bVswXSxqPW1bMV0sYj0iW10uc3BsaWNlLmFwcGx5KCIrZysiLCBbIitlKyIsICIraCsiXS5jb25jYXQoIitpKyIpKSwgIitqLGEubGV2ZWw+Qj8iKCIrYisiKSI6Yn0sYn0oZyksYi5Db2RlPWw9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIsYyl7dGhpcy5wYXJhbXM9YXx8W10sdGhpcy5ib2R5PWJ8fG5ldyBoLHRoaXMuYm91bmQ9Yz09PSJib3VuZGZ1bmMiLHRoaXMuYm91bmQmJih0aGlzLmNvbnRleHQ9Il90aGlzIil9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJDb2RlIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bInBhcmFtcyIsImJvZHkiXSxiLnByb3RvdHlwZS5pc1N0YXRlbWVudD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jdG9yfSxiLnByb3RvdHlwZS5qdW1wcz1GLGIucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHUsdix4LHkseixBLEIsRCxFLEYsRyxJLEosSyxMLE0sTjthLnNjb3BlPW5ldyBQKGEuc2NvcGUsdGhpcy5ib2R5LHRoaXMpLGEuc2NvcGUuc2hhcmVkPWFiKGEsInNoYXJlZFNjb3BlIiksYS5pbmRlbnQrPVQsZGVsZXRlIGEuYmFyZSxkZWxldGUgYS5pc0V4aXN0ZW50aWFsRXF1YWxzLGw9W10sYz1bXSxHPXRoaXMucGFyYW1OYW1lcygpO2ZvcihyPTAseD1HLmxlbmd0aDtyPHg7cisrKWk9R1tyXSxhLnNjb3BlLmNoZWNrKGkpfHxhLnNjb3BlLnBhcmFtZXRlcihpKTtJPXRoaXMucGFyYW1zO2ZvcihzPTAseT1JLmxlbmd0aDtzPHk7cysrKXtrPUlbc107aWYoIWsuc3BsYXQpY29udGludWU7Sj10aGlzLnBhcmFtcztmb3IodT0wLHo9Si5sZW5ndGg7dTx6O3UrKylqPUpbdV0sai5uYW1lLnZhbHVlJiZhLnNjb3BlLmFkZChqLm5hbWUudmFsdWUsInZhciIsITApO249bmV3IGYobmV3IFkobmV3IGUoZnVuY3Rpb24oKXt2YXIgYixjLGQsZTtkPXRoaXMucGFyYW1zLGU9W107Zm9yKGI9MCxjPWQubGVuZ3RoO2I8YztiKyspaj1kW2JdLGUucHVzaChqLmFzUmVmZXJlbmNlKGEpKTtyZXR1cm4gZX0uY2FsbCh0aGlzKSkpLG5ldyBZKG5ldyBDKCJhcmd1bWVudHMiKSkpO2JyZWFrfUs9dGhpcy5wYXJhbXM7Zm9yKHY9MCxBPUsubGVuZ3RoO3Y8QTt2Kyspaz1LW3ZdLGsuaXNDb21wbGV4KCk/KHA9bT1rLmFzUmVmZXJlbmNlKGEpLGsudmFsdWUmJihwPW5ldyBIKCI/IixtLGsudmFsdWUpKSxjLnB1c2gobmV3IGYobmV3IFkoay5uYW1lKSxwLCI9Iix7cGFyYW06ITB9KSkpOihtPWssay52YWx1ZSYmKGg9bmV3IEMobS5uYW1lLnZhbHVlKyIgPT0gbnVsbCIpLHA9bmV3IGYobmV3IFkoay5uYW1lKSxrLnZhbHVlLCI9IiksYy5wdXNoKG5ldyB0KGgscCkpKSksbnx8bC5wdXNoKG0pO3E9dGhpcy5ib2R5LmlzRW1wdHkoKSxuJiZjLnVuc2hpZnQobiksYy5sZW5ndGgmJihMPXRoaXMuYm9keS5leHByZXNzaW9ucykudW5zaGlmdC5hcHBseShMLGMpO2ZvcihkPUU9MCxCPWwubGVuZ3RoO0U8QjtkPSsrRSlqPWxbZF0sYS5zY29wZS5wYXJhbWV0ZXIobFtkXT1qLmNvbXBpbGUoYSkpO289W10sTT10aGlzLnBhcmFtTmFtZXMoKTtmb3IoRj0wLEQ9TS5sZW5ndGg7RjxEO0YrKyl7aT1NW0ZdO2lmKG9iLmNhbGwobyxpKT49MCl0aHJvdyBTeW50YXhFcnJvcigibXVsdGlwbGUgcGFyYW1ldGVycyBuYW1lZCAnIitpKyInIik7by5wdXNoKGkpfXJldHVybiFxJiYhdGhpcy5ub1JldHVybiYmdGhpcy5ib2R5Lm1ha2VSZXR1cm4oKSx0aGlzLmJvdW5kJiYoKChOPWEuc2NvcGUucGFyZW50Lm1ldGhvZCkhPW51bGw/Ti5ib3VuZDp2b2lkIDApP3RoaXMuYm91bmQ9dGhpcy5jb250ZXh0PWEuc2NvcGUucGFyZW50Lm1ldGhvZC5jb250ZXh0OnRoaXNbInN0YXRpYyJdfHxhLnNjb3BlLnBhcmVudC5hc3NpZ24oIl90aGlzIiwidGhpcyIpKSxnPWEuaW5kZW50LGI9ImZ1bmN0aW9uIix0aGlzLmN0b3ImJihiKz0iICIrdGhpcy5uYW1lKSxiKz0iKCIrbC5qb2luKCIsICIpKyIpIHsiLHRoaXMuYm9keS5pc0VtcHR5KCl8fChiKz0iXG4iK3RoaXMuYm9keS5jb21waWxlV2l0aERlY2xhcmF0aW9ucyhhKSsiXG4iK3RoaXMudGFiKSxiKz0ifSIsdGhpcy5jdG9yP3RoaXMudGFiK2I6dGhpcy5mcm9udHx8YS5sZXZlbD49dz8iKCIrYisiKSI6Yn0sYi5wcm90b3R5cGUucGFyYW1OYW1lcz1mdW5jdGlvbigpe3ZhciBhLGIsYyxkLGU7YT1bXSxlPXRoaXMucGFyYW1zO2ZvcihjPTAsZD1lLmxlbmd0aDtjPGQ7YysrKWI9ZVtjXSxhLnB1c2guYXBwbHkoYSxiLm5hbWVzKCkpO3JldHVybiBhfSxiLnByb3RvdHlwZS50cmF2ZXJzZUNoaWxkcmVuPWZ1bmN0aW9uKGEsYyl7aWYoYSlyZXR1cm4gYi5fX3N1cGVyX18udHJhdmVyc2VDaGlsZHJlbi5jYWxsKHRoaXMsYSxjKX0sYn0oZyksYi5QYXJhbT1JPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiLGMpe3ZhciBkO3RoaXMubmFtZT1hLHRoaXMudmFsdWU9Yix0aGlzLnNwbGF0PWM7aWYoZD1hPXRoaXMubmFtZS51bndyYXBBbGwoKS52YWx1ZSxvYi5jYWxsKE8sZCk+PTApdGhyb3cgU3ludGF4RXJyb3IoJ3BhcmFtZXRlciBuYW1lICInK2ErJyIgaXMgbm90IGFsbG93ZWQnKX1yZXR1cm4gbmIoYixhKSxiLm5hbWU9IlBhcmFtIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bIm5hbWUiLCJ2YWx1ZSJdLGIucHJvdG90eXBlLmNvbXBpbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubmFtZS5jb21waWxlKGEseSl9LGIucHJvdG90eXBlLmFzUmVmZXJlbmNlPWZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiB0aGlzLnJlZmVyZW5jZT90aGlzLnJlZmVyZW5jZTooYj10aGlzLm5hbWUsYlsidGhpcyJdPyhiPWIucHJvcGVydGllc1swXS5uYW1lLGIudmFsdWUucmVzZXJ2ZWQmJihiPW5ldyBDKGEuc2NvcGUuZnJlZVZhcmlhYmxlKGIudmFsdWUpKSkpOmIuaXNDb21wbGV4KCkmJihiPW5ldyBDKGEuc2NvcGUuZnJlZVZhcmlhYmxlKCJhcmciKSkpLGI9bmV3IFkoYiksdGhpcy5zcGxhdCYmKGI9bmV3IFIoYikpLHRoaXMucmVmZXJlbmNlPWIpfSxiLnByb3RvdHlwZS5pc0NvbXBsZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lLmlzQ29tcGxleCgpfSxiLnByb3RvdHlwZS5uYW1lcz1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnLGg7YT09bnVsbCYmKGE9dGhpcy5uYW1lKSxiPWZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBiPWEucHJvcGVydGllc1swXS5uYW1lLnZhbHVlLGIucmVzZXJ2ZWQ/W106W2JdfTtpZihhIGluc3RhbmNlb2YgQylyZXR1cm5bYS52YWx1ZV07aWYoYSBpbnN0YW5jZW9mIFkpcmV0dXJuIGIoYSk7Yz1bXSxoPWEub2JqZWN0cztmb3IoZT0wLGc9aC5sZW5ndGg7ZTxnO2UrKylkPWhbZV0sZCBpbnN0YW5jZW9mIGY/Yy5wdXNoKGQudmFyaWFibGUuYmFzZS52YWx1ZSk6ZC5pc0FycmF5KCl8fGQuaXNPYmplY3QoKT9jLnB1c2guYXBwbHkoYyx0aGlzLm5hbWVzKGQuYmFzZSkpOmRbInRoaXMiXT9jLnB1c2guYXBwbHkoYyxiKGQpKTpjLnB1c2goZC5iYXNlLnZhbHVlKTtyZXR1cm4gY30sYn0oZyksYi5TcGxhdD1SPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dGhpcy5uYW1lPWEuY29tcGlsZT9hOm5ldyBDKGEpfXJldHVybiBuYihiLGEpLGIubmFtZT0iU3BsYXQiLGIucHJvdG90eXBlLmNoaWxkcmVuPVsibmFtZSJdLGIucHJvdG90eXBlLmlzQXNzaWduYWJsZT0kLGIucHJvdG90eXBlLmFzc2lnbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubmFtZS5hc3NpZ25zKGEpfSxiLnByb3RvdHlwZS5jb21waWxlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmluZGV4IT1udWxsP3RoaXMuY29tcGlsZVBhcmFtKGEpOnRoaXMubmFtZS5jb21waWxlKGEpfSxiLnByb3RvdHlwZS51bndyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxiLmNvbXBpbGVTcGxhdHRlZEFycmF5PWZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsO2k9LTE7d2hpbGUoKGo9Y1srK2ldKSYmIShqIGluc3RhbmNlb2YgYikpY29udGludWU7aWYoaT49Yy5sZW5ndGgpcmV0dXJuIiI7aWYoYy5sZW5ndGg9PT0xKXJldHVybiBnPWNbMF0uY29tcGlsZShhLHkpLGQ/ZzoiIitqYigic2xpY2UiKSsiLmNhbGwoIitnKyIpIjtlPWMuc2xpY2UoaSk7Zm9yKGg9az0wLGw9ZS5sZW5ndGg7azxsO2g9KytrKWo9ZVtoXSxnPWouY29tcGlsZShhLHkpLGVbaF09aiBpbnN0YW5jZW9mIGI/IiIramIoInNsaWNlIikrIi5jYWxsKCIrZysiKSI6IlsiK2crIl0iO3JldHVybiBpPT09MD9lWzBdKygiLmNvbmNhdCgiK2Uuc2xpY2UoMSkuam9pbigiLCAiKSsiKSIpOihmPWZ1bmN0aW9uKCl7dmFyIGIsZCxlLGY7ZT1jLnNsaWNlKDAsaSksZj1bXTtmb3IoYj0wLGQ9ZS5sZW5ndGg7YjxkO2IrKylqPWVbYl0sZi5wdXNoKGouY29tcGlsZShhLHkpKTtyZXR1cm4gZn0oKSwiWyIrZi5qb2luKCIsICIpKyJdLmNvbmNhdCgiK2Uuam9pbigiLCAiKSsiKSIpfSxifShnKSxiLldoaWxlPVo9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIpe3RoaXMuY29uZGl0aW9uPShiIT1udWxsP2IuaW52ZXJ0OnZvaWQgMCk/YS5pbnZlcnQoKTphLHRoaXMuZ3VhcmQ9YiE9bnVsbD9iLmd1YXJkOnZvaWQgMH1yZXR1cm4gbmIoYixhKSxiLm5hbWU9IldoaWxlIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImNvbmRpdGlvbiIsImd1YXJkIiwiYm9keSJdLGIucHJvdG90eXBlLmlzU3RhdGVtZW50PSQsYi5wcm90b3R5cGUubWFrZVJldHVybj1mdW5jdGlvbihhKXtyZXR1cm4gYT9iLl9fc3VwZXJfXy5tYWtlUmV0dXJuLmFwcGx5KHRoaXMsYXJndW1lbnRzKToodGhpcy5yZXR1cm5zPSF0aGlzLmp1bXBzKHtsb29wOiEwfSksdGhpcyl9LGIucHJvdG90eXBlLmFkZEJvZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYm9keT1hLHRoaXN9LGIucHJvdG90eXBlLmp1bXBzPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQ7YT10aGlzLmJvZHkuZXhwcmVzc2lvbnM7aWYoIWEubGVuZ3RoKXJldHVybiExO2ZvcihjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKXtiPWFbY107aWYoYi5qdW1wcyh7bG9vcDohMH0pKXJldHVybiBifXJldHVybiExfSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZTtyZXR1cm4gYS5pbmRlbnQrPVQsZT0iIixiPXRoaXMuYm9keSxiLmlzRW1wdHkoKT9iPSIiOih0aGlzLnJldHVybnMmJihiLm1ha2VSZXR1cm4oZD1hLnNjb3BlLmZyZWVWYXJpYWJsZSgicmVzdWx0cyIpKSxlPSIiK3RoaXMudGFiK2QrIiA9IFtdO1xuIiksdGhpcy5ndWFyZCYmKGIuZXhwcmVzc2lvbnMubGVuZ3RoPjE/Yi5leHByZXNzaW9ucy51bnNoaWZ0KG5ldyB0KChuZXcgSih0aGlzLmd1YXJkKSkuaW52ZXJ0KCksbmV3IEMoImNvbnRpbnVlIikpKTp0aGlzLmd1YXJkJiYoYj1oLndyYXAoW25ldyB0KHRoaXMuZ3VhcmQsYildKSkpLGI9IlxuIitiLmNvbXBpbGUoYSxCKSsiXG4iK3RoaXMudGFiKSxjPWUrdGhpcy50YWIrKCJ3aGlsZSAoIit0aGlzLmNvbmRpdGlvbi5jb21waWxlKGEsQSkrIikgeyIrYisifSIpLHRoaXMucmV0dXJucyYmKGMrPSJcbiIrdGhpcy50YWIrInJldHVybiAiK2QrIjsiKSxjfSxifShnKSxiLk9wPUg9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZChhLGMsZCxlKXtpZihhPT09ImluIilyZXR1cm4gbmV3IHUoYyxkKTtpZihhPT09ImRvIilyZXR1cm4gdGhpcy5nZW5lcmF0ZURvKGMpO2lmKGE9PT0ibmV3Iil7aWYoYyBpbnN0YW5jZW9mIGkmJiFjWyJkbyJdJiYhYy5pc05ldylyZXR1cm4gYy5uZXdJbnN0YW5jZSgpO2lmKGMgaW5zdGFuY2VvZiBsJiZjLmJvdW5kfHxjWyJkbyJdKWM9bmV3IEooYyl9cmV0dXJuIHRoaXMub3BlcmF0b3I9YlthXXx8YSx0aGlzLmZpcnN0PWMsdGhpcy5zZWNvbmQ9ZCx0aGlzLmZsaXA9ISFlLHRoaXN9dmFyIGIsYztyZXR1cm4gbmIoZCxhKSxkLm5hbWU9Ik9wIixiPXsiPT0iOiI9PT0iLCIhPSI6IiE9PSIsb2Y6ImluIn0sYz17IiE9PSI6Ij09PSIsIj09PSI6IiE9PSJ9LGQucHJvdG90eXBlLmNoaWxkcmVuPVsiZmlyc3QiLCJzZWNvbmQiXSxkLnByb3RvdHlwZS5pc1NpbXBsZU51bWJlcj1GLGQucHJvdG90eXBlLmlzVW5hcnk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5zZWNvbmR9LGQucHJvdG90eXBlLmlzQ29tcGxleD1mdW5jdGlvbigpe3ZhciBhO3JldHVybiF0aGlzLmlzVW5hcnkoKXx8KGE9dGhpcy5vcGVyYXRvcikhPT0iKyImJmEhPT0iLSJ8fHRoaXMuZmlyc3QuaXNDb21wbGV4KCl9LGQucHJvdG90eXBlLmlzQ2hhaW5hYmxlPWZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuKGE9dGhpcy5vcGVyYXRvcik9PT0iPCJ8fGE9PT0iPiJ8fGE9PT0iPj0ifHxhPT09Ijw9Inx8YT09PSI9PT0ifHxhPT09IiE9PSJ9LGQucHJvdG90eXBlLmludmVydD1mdW5jdGlvbigpe3ZhciBhLGIsZSxmLGc7aWYodGhpcy5pc0NoYWluYWJsZSgpJiZ0aGlzLmZpcnN0LmlzQ2hhaW5hYmxlKCkpe2E9ITAsYj10aGlzO3doaWxlKGImJmIub3BlcmF0b3IpYSYmKGE9Yi5vcGVyYXRvciBpbiBjKSxiPWIuZmlyc3Q7aWYoIWEpcmV0dXJuKG5ldyBKKHRoaXMpKS5pbnZlcnQoKTtiPXRoaXM7d2hpbGUoYiYmYi5vcGVyYXRvciliLmludmVydD0hYi5pbnZlcnQsYi5vcGVyYXRvcj1jW2Iub3BlcmF0b3JdLGI9Yi5maXJzdDtyZXR1cm4gdGhpc31yZXR1cm4oZj1jW3RoaXMub3BlcmF0b3JdKT8odGhpcy5vcGVyYXRvcj1mLHRoaXMuZmlyc3QudW53cmFwKClpbnN0YW5jZW9mIGQmJnRoaXMuZmlyc3QuaW52ZXJ0KCksdGhpcyk6dGhpcy5zZWNvbmQ/KG5ldyBKKHRoaXMpKS5pbnZlcnQoKTp0aGlzLm9wZXJhdG9yPT09IiEiJiYoZT10aGlzLmZpcnN0LnVud3JhcCgpKWluc3RhbmNlb2YgZCYmKChnPWUub3BlcmF0b3IpPT09IiEifHxnPT09ImluInx8Zz09PSJpbnN0YW5jZW9mIik/ZTpuZXcgZCgiISIsdGhpcyl9LGQucHJvdG90eXBlLnVuZm9sZFNvYWs9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuKChiPXRoaXMub3BlcmF0b3IpPT09IisrInx8Yj09PSItLSJ8fGI9PT0iZGVsZXRlIikmJmliKGEsdGhpcywiZmlyc3QiKX0sZC5wcm90b3R5cGUuZ2VuZXJhdGVEbz1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnLGgsaixrO2U9W10sYz1hIGluc3RhbmNlb2YgZiYmKGc9YS52YWx1ZS51bndyYXAoKSlpbnN0YW5jZW9mIGw/ZzphLGs9Yy5wYXJhbXN8fFtdO2ZvcihoPTAsaj1rLmxlbmd0aDtoPGo7aCsrKWQ9a1toXSxkLnZhbHVlPyhlLnB1c2goZC52YWx1ZSksZGVsZXRlIGQudmFsdWUpOmUucHVzaChkKTtyZXR1cm4gYj1uZXcgaShhLGUpLGJbImRvIl09ITAsYn0sZC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7Yz10aGlzLmlzQ2hhaW5hYmxlKCkmJnRoaXMuZmlyc3QuaXNDaGFpbmFibGUoKSxjfHwodGhpcy5maXJzdC5mcm9udD10aGlzLmZyb250KTtpZih0aGlzLm9wZXJhdG9yPT09ImRlbGV0ZSImJmEuc2NvcGUuY2hlY2sodGhpcy5maXJzdC51bndyYXBBbGwoKS52YWx1ZSkpdGhyb3cgU3ludGF4RXJyb3IoImRlbGV0ZSBvcGVyYW5kIG1heSBub3QgYmUgYXJndW1lbnQgb3IgdmFyIik7aWYoKChkPXRoaXMub3BlcmF0b3IpPT09Ii0tInx8ZD09PSIrKyIpJiYoZT10aGlzLmZpcnN0LnVud3JhcEFsbCgpLnZhbHVlLG9iLmNhbGwoTyxlKT49MCkpdGhyb3cgU3ludGF4RXJyb3IoInByZWZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIik7cmV0dXJuIHRoaXMuaXNVbmFyeSgpP3RoaXMuY29tcGlsZVVuYXJ5KGEpOmM/dGhpcy5jb21waWxlQ2hhaW4oYSk6dGhpcy5vcGVyYXRvcj09PSI/Ij90aGlzLmNvbXBpbGVFeGlzdGVuY2UoYSk6KGI9dGhpcy5maXJzdC5jb21waWxlKGEseikrIiAiK3RoaXMub3BlcmF0b3IrIiAiK3RoaXMuc2Vjb25kLmNvbXBpbGUoYSx6KSxhLmxldmVsPD16P2I6IigiK2IrIikiKX0sZC5wcm90b3R5cGUuY29tcGlsZUNoYWluPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO3JldHVybiBlPXRoaXMuZmlyc3Quc2Vjb25kLmNhY2hlKGEpLHRoaXMuZmlyc3Quc2Vjb25kPWVbMF0sZD1lWzFdLGM9dGhpcy5maXJzdC5jb21waWxlKGEseiksYj0iIitjKyIgIisodGhpcy5pbnZlcnQ/IiYmIjoifHwiKSsiICIrZC5jb21waWxlKGEpKyIgIit0aGlzLm9wZXJhdG9yKyIgIit0aGlzLnNlY29uZC5jb21waWxlKGEseiksIigiK2IrIikifSxkLnByb3RvdHlwZS5jb21waWxlRXhpc3RlbmNlPWZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuIHRoaXMuZmlyc3QuaXNDb21wbGV4KCkmJmEubGV2ZWw+Qj8oYz1uZXcgQyhhLnNjb3BlLmZyZWVWYXJpYWJsZSgicmVmIikpLGI9bmV3IEoobmV3IGYoYyx0aGlzLmZpcnN0KSkpOihiPXRoaXMuZmlyc3QsYz1iKSwobmV3IHQobmV3IG4oYiksYyx7dHlwZToiaWYifSkpLmFkZEVsc2UodGhpcy5zZWNvbmQpLmNvbXBpbGUoYSl9LGQucHJvdG90eXBlLmNvbXBpbGVVbmFyeT1mdW5jdGlvbihhKXt2YXIgYixjLGU7aWYoYS5sZXZlbD49dylyZXR1cm4obmV3IEoodGhpcykpLmNvbXBpbGUoYSk7Yz1bYj10aGlzLm9wZXJhdG9yXSxlPWI9PT0iKyJ8fGI9PT0iLSIsKGI9PT0ibmV3Inx8Yj09PSJ0eXBlb2YifHxiPT09ImRlbGV0ZSJ8fGUmJnRoaXMuZmlyc3QgaW5zdGFuY2VvZiBkJiZ0aGlzLmZpcnN0Lm9wZXJhdG9yPT09YikmJmMucHVzaCgiICIpO2lmKGUmJnRoaXMuZmlyc3QgaW5zdGFuY2VvZiBkfHxiPT09Im5ldyImJnRoaXMuZmlyc3QuaXNTdGF0ZW1lbnQoYSkpdGhpcy5maXJzdD1uZXcgSih0aGlzLmZpcnN0KTtyZXR1cm4gYy5wdXNoKHRoaXMuZmlyc3QuY29tcGlsZShhLHopKSx0aGlzLmZsaXAmJmMucmV2ZXJzZSgpLGMuam9pbigiIil9LGQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybiBkLl9fc3VwZXJfXy50b1N0cmluZy5jYWxsKHRoaXMsYSx0aGlzLmNvbnN0cnVjdG9yLm5hbWUrIiAiK3RoaXMub3BlcmF0b3IpfSxkfShnKSxiLkluPXU9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIpe3RoaXMub2JqZWN0PWEsdGhpcy5hcnJheT1ifXJldHVybiBuYihiLGEpLGIubmFtZT0iSW4iLGIucHJvdG90eXBlLmNoaWxkcmVuPVsib2JqZWN0IiwiYXJyYXkiXSxiLnByb3RvdHlwZS5pbnZlcnQ9RSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmO2lmKHRoaXMuYXJyYXkgaW5zdGFuY2VvZiBZJiZ0aGlzLmFycmF5LmlzQXJyYXkoKSl7Zj10aGlzLmFycmF5LmJhc2Uub2JqZWN0cztmb3IoZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKyl7Yz1mW2RdO2lmKGMgaW5zdGFuY2VvZiBSKXtiPSEwO2JyZWFrfWNvbnRpbnVlfWlmKCFiKXJldHVybiB0aGlzLmNvbXBpbGVPclRlc3QoYSl9cmV0dXJuIHRoaXMuY29tcGlsZUxvb3BUZXN0KGEpfSxiLnByb3RvdHlwZS5jb21waWxlT3JUZXN0PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksajtyZXR1cm4gdGhpcy5hcnJheS5iYXNlLm9iamVjdHMubGVuZ3RoPT09MD8iIishIXRoaXMubmVnYXRlZDooaT10aGlzLm9iamVjdC5jYWNoZShhLHopLGc9aVswXSxmPWlbMV0saj10aGlzLm5lZ2F0ZWQ/WyIgIT09ICIsIiAmJiAiXTpbIiA9PT0gIiwiIHx8ICJdLGI9alswXSxjPWpbMV0saD1mdW5jdGlvbigpe3ZhciBjLGgsaSxqO2k9dGhpcy5hcnJheS5iYXNlLm9iamVjdHMsaj1bXTtmb3IoZD1jPTAsaD1pLmxlbmd0aDtjPGg7ZD0rK2MpZT1pW2RdLGoucHVzaCgoZD9mOmcpK2IrZS5jb21waWxlKGEsdykpO3JldHVybiBqfS5jYWxsKHRoaXMpLGg9aC5qb2luKGMpLGEubGV2ZWw8ej9oOiIoIitoKyIpIil9LGIucHJvdG90eXBlLmNvbXBpbGVMb29wVGVzdD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZTtyZXR1cm4gZT10aGlzLm9iamVjdC5jYWNoZShhLHkpLGQ9ZVswXSxjPWVbMV0sYj1qYigiaW5kZXhPZiIpKygiLmNhbGwoIit0aGlzLmFycmF5LmNvbXBpbGUoYSx5KSsiLCAiK2MrIikgIikrKHRoaXMubmVnYXRlZD8iPCAwIjoiPj0gMCIpLGQ9PT1jP2I6KGI9ZCsiLCAiK2IsYS5sZXZlbDx5P2I6IigiK2IrIikiKX0sYi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oYSl7cmV0dXJuIGIuX19zdXBlcl9fLnRvU3RyaW5nLmNhbGwodGhpcyxhLHRoaXMuY29uc3RydWN0b3IubmFtZSsodGhpcy5uZWdhdGVkPyIhIjoiIikpfSxifShnKSxiLlRyeT1XPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiLGMsZCl7dGhpcy5hdHRlbXB0PWEsdGhpcy5lcnJvcj1iLHRoaXMucmVjb3Zlcnk9Yyx0aGlzLmVuc3VyZT1kfXJldHVybiBuYihiLGEpLGIubmFtZT0iVHJ5IixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImF0dGVtcHQiLCJyZWNvdmVyeSIsImVuc3VyZSJdLGIucHJvdG90eXBlLmlzU3RhdGVtZW50PSQsYi5wcm90b3R5cGUuanVtcHM9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIHRoaXMuYXR0ZW1wdC5qdW1wcyhhKXx8KChiPXRoaXMucmVjb3ZlcnkpIT1udWxsP2IuanVtcHMoYSk6dm9pZCAwKX0sYi5wcm90b3R5cGUubWFrZVJldHVybj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hdHRlbXB0JiYodGhpcy5hdHRlbXB0PXRoaXMuYXR0ZW1wdC5tYWtlUmV0dXJuKGEpKSx0aGlzLnJlY292ZXJ5JiYodGhpcy5yZWNvdmVyeT10aGlzLnJlY292ZXJ5Lm1ha2VSZXR1cm4oYSkpLHRoaXN9LGIucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO3JldHVybiBhLmluZGVudCs9VCxkPXRoaXMuZXJyb3I/IiAoIit0aGlzLmVycm9yLmNvbXBpbGUoYSkrIikgIjoiICIsZT10aGlzLmF0dGVtcHQuY29tcGlsZShhLEIpLGI9ZnVuY3Rpb24oKXt2YXIgYjtpZih0aGlzLnJlY292ZXJ5KXtpZihiPXRoaXMuZXJyb3IudmFsdWUsb2IuY2FsbChPLGIpPj0wKXRocm93IFN5bnRheEVycm9yKCdjYXRjaCB2YXJpYWJsZSBtYXkgbm90IGJlICInK3RoaXMuZXJyb3IudmFsdWUrJyInKTtyZXR1cm4gYS5zY29wZS5jaGVjayh0aGlzLmVycm9yLnZhbHVlKXx8YS5zY29wZS5hZGQodGhpcy5lcnJvci52YWx1ZSwicGFyYW0iKSwiIGNhdGNoIitkKyJ7XG4iK3RoaXMucmVjb3ZlcnkuY29tcGlsZShhLEIpKyJcbiIrdGhpcy50YWIrIn0ifWlmKCF0aGlzLmVuc3VyZSYmIXRoaXMucmVjb3ZlcnkpcmV0dXJuIiBjYXRjaCAoX2Vycm9yKSB7fSJ9LmNhbGwodGhpcyksYz10aGlzLmVuc3VyZT8iIGZpbmFsbHkge1xuIit0aGlzLmVuc3VyZS5jb21waWxlKGEsQikrIlxuIit0aGlzLnRhYisifSI6IiIsIiIrdGhpcy50YWIrInRyeSB7XG4iK2UrIlxuIit0aGlzLnRhYisifSIrKGJ8fCIiKStjfSxifShnKSxiLlRocm93PVY9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt0aGlzLmV4cHJlc3Npb249YX1yZXR1cm4gbmIoYixhKSxiLm5hbWU9IlRocm93IixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImV4cHJlc3Npb24iXSxiLnByb3RvdHlwZS5pc1N0YXRlbWVudD0kLGIucHJvdG90eXBlLmp1bXBzPUYsYi5wcm90b3R5cGUubWFrZVJldHVybj1VLGIucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRhYisoInRocm93ICIrdGhpcy5leHByZXNzaW9uLmNvbXBpbGUoYSkrIjsiKX0sYn0oZyksYi5FeGlzdGVuY2U9bj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3RoaXMuZXhwcmVzc2lvbj1hfXJldHVybiBuYihiLGEpLGIubmFtZT0iRXhpc3RlbmNlIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImV4cHJlc3Npb24iXSxiLnByb3RvdHlwZS5pbnZlcnQ9RSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZTtyZXR1cm4gdGhpcy5leHByZXNzaW9uLmZyb250PXRoaXMuZnJvbnQsZD10aGlzLmV4cHJlc3Npb24uY29tcGlsZShhLHopLHEudGVzdChkKSYmIWEuc2NvcGUuY2hlY2soZCk/KGU9dGhpcy5uZWdhdGVkP1siPT09IiwifHwiXTpbIiE9PSIsIiYmIl0sYj1lWzBdLGM9ZVsxXSxkPSJ0eXBlb2YgIitkKyIgIitiKycgInVuZGVmaW5lZCIgJytjKyIgIitkKyIgIitiKyIgbnVsbCIpOmQ9IiIrZCsiICIrKHRoaXMubmVnYXRlZD8iPT0iOiIhPSIpKyIgbnVsbCIsYS5sZXZlbDw9eD9kOiIoIitkKyIpIn0sYn0oZyksYi5QYXJlbnM9Sj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3RoaXMuYm9keT1hfXJldHVybiBuYihiLGEpLGIubmFtZT0iUGFyZW5zIixiLnByb3RvdHlwZS5jaGlsZHJlbj1bImJvZHkiXSxiLnByb3RvdHlwZS51bndyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ib2R5fSxiLnByb3RvdHlwZS5pc0NvbXBsZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ib2R5LmlzQ29tcGxleCgpfSxiLnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihhKXt2YXIgYixjLGQ7cmV0dXJuIGQ9dGhpcy5ib2R5LnVud3JhcCgpLGQgaW5zdGFuY2VvZiBZJiZkLmlzQXRvbWljKCk/KGQuZnJvbnQ9dGhpcy5mcm9udCxkLmNvbXBpbGUoYSkpOihjPWQuY29tcGlsZShhLEEpLGI9YS5sZXZlbDx6JiYoZCBpbnN0YW5jZW9mIEh8fGQgaW5zdGFuY2VvZiBpfHxkIGluc3RhbmNlb2YgcCYmZC5yZXR1cm5zKSxiP2M6IigiK2MrIikiKX0sYn0oZyksYi5Gb3I9cD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsYil7dmFyIGM7dGhpcy5zb3VyY2U9Yi5zb3VyY2UsdGhpcy5ndWFyZD1iLmd1YXJkLHRoaXMuc3RlcD1iLnN0ZXAsdGhpcy5uYW1lPWIubmFtZSx0aGlzLmluZGV4PWIuaW5kZXgsdGhpcy5ib2R5PWgud3JhcChbYV0pLHRoaXMub3duPSEhYi5vd24sdGhpcy5vYmplY3Q9ISFiLm9iamVjdCx0aGlzLm9iamVjdCYmKGM9W3RoaXMuaW5kZXgsdGhpcy5uYW1lXSx0aGlzLm5hbWU9Y1swXSx0aGlzLmluZGV4PWNbMV0pO2lmKHRoaXMuaW5kZXggaW5zdGFuY2VvZiBZKXRocm93IFN5bnRheEVycm9yKCJpbmRleCBjYW5ub3QgYmUgYSBwYXR0ZXJuIG1hdGNoaW5nIGV4cHJlc3Npb24iKTt0aGlzLnJhbmdlPXRoaXMuc291cmNlIGluc3RhbmNlb2YgWSYmdGhpcy5zb3VyY2UuYmFzZSBpbnN0YW5jZW9mIEwmJiF0aGlzLnNvdXJjZS5wcm9wZXJ0aWVzLmxlbmd0aCx0aGlzLnBhdHRlcm49dGhpcy5uYW1lIGluc3RhbmNlb2YgWTtpZih0aGlzLnJhbmdlJiZ0aGlzLmluZGV4KXRocm93IFN5bnRheEVycm9yKCJpbmRleGVzIGRvIG5vdCBhcHBseSB0byByYW5nZSBsb29wcyIpO2lmKHRoaXMucmFuZ2UmJnRoaXMucGF0dGVybil0aHJvdyBTeW50YXhFcnJvcigiY2Fubm90IHBhdHRlcm4gbWF0Y2ggb3ZlciByYW5nZSBsb29wcyIpO3RoaXMucmV0dXJucz0hMX1yZXR1cm4gbmIoYixhKSxiLm5hbWU9IkZvciIsYi5wcm90b3R5cGUuY2hpbGRyZW49WyJib2R5Iiwic291cmNlIiwiZ3VhcmQiLCJzdGVwIl0sYi5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZyxpLGosayxsLG0sbixvLHAscixzLHUsdix3LHgsQSxELEUsRixHLEg7cmV0dXJuIGI9aC53cmFwKFt0aGlzLmJvZHldKSxuPShIPWViKGIuZXhwcmVzc2lvbnMpKSE9bnVsbD9ILmp1bXBzKCk6dm9pZCAwLG4mJm4gaW5zdGFuY2VvZiBNJiYodGhpcy5yZXR1cm5zPSExKSxBPXRoaXMucmFuZ2U/dGhpcy5zb3VyY2UuYmFzZTp0aGlzLnNvdXJjZSx4PWEuc2NvcGUscD10aGlzLm5hbWUmJnRoaXMubmFtZS5jb21waWxlKGEseSksaj10aGlzLmluZGV4JiZ0aGlzLmluZGV4LmNvbXBpbGUoYSx5KSxwJiYhdGhpcy5wYXR0ZXJuJiZ4LmZpbmQocCx7aW1tZWRpYXRlOiEwfSksaiYmeC5maW5kKGose2ltbWVkaWF0ZTohMH0pLHRoaXMucmV0dXJucyYmKHc9eC5mcmVlVmFyaWFibGUoInJlc3VsdHMiKSksaz10aGlzLm9iamVjdCYmanx8eC5mcmVlVmFyaWFibGUoImkiKSxsPXRoaXMucmFuZ2UmJnB8fGp8fGssbT1sIT09az8iIitsKyIgPSAiOiIiLHRoaXMuc3RlcCYmIXRoaXMucmFuZ2UmJihFPXguZnJlZVZhcmlhYmxlKCJzdGVwIikpLHRoaXMucGF0dGVybiYmKHA9ayksRz0iIixnPSIiLGM9IiIsaT10aGlzLnRhYitULHRoaXMucmFuZ2U/ZD1BLmNvbXBpbGUoZmIoYSx7aW5kZXg6ayxuYW1lOnAsc3RlcDp0aGlzLnN0ZXB9KSk6KEY9dGhpcy5zb3VyY2UuY29tcGlsZShhLHkpLChwfHx0aGlzLm93bikmJiFxLnRlc3QoRikmJihjPSIiK3RoaXMudGFiKyhzPXguZnJlZVZhcmlhYmxlKCJyZWYiKSkrIiA9ICIrRisiO1xuIixGPXMpLHAmJiF0aGlzLnBhdHRlcm4mJihyPSIiK3ArIiA9ICIrRisiWyIrbCsiXSIpLHRoaXMub2JqZWN0fHwobz14LmZyZWVWYXJpYWJsZSgibGVuIiksZT0iIittK2srIiA9IDAsICIrbysiID0gIitGKyIubGVuZ3RoIix0aGlzLnN0ZXAmJihlKz0iLCAiK0UrIiA9ICIrdGhpcy5zdGVwLmNvbXBpbGUoYSx6KSksRD0iIittKyh0aGlzLnN0ZXA/IiIraysiICs9ICIrRTpsIT09az8iKysiK2s6IiIraysiKysiKSxkPSIiK2UrIjsgIitrKyIgPCAiK28rIjsgIitEKSksdGhpcy5yZXR1cm5zJiYodT0iIit0aGlzLnRhYit3KyIgPSBbXTtcbiIsdj0iXG4iK3RoaXMudGFiKyJyZXR1cm4gIit3KyI7IixiLm1ha2VSZXR1cm4odykpLHRoaXMuZ3VhcmQmJihiLmV4cHJlc3Npb25zLmxlbmd0aD4xP2IuZXhwcmVzc2lvbnMudW5zaGlmdChuZXcgdCgobmV3IEoodGhpcy5ndWFyZCkpLmludmVydCgpLG5ldyBDKCJjb250aW51ZSIpKSk6dGhpcy5ndWFyZCYmKGI9aC53cmFwKFtuZXcgdCh0aGlzLmd1YXJkLGIpXSkpKSx0aGlzLnBhdHRlcm4mJmIuZXhwcmVzc2lvbnMudW5zaGlmdChuZXcgZih0aGlzLm5hbWUsbmV3IEMoIiIrRisiWyIrbCsiXSIpKSksYys9dGhpcy5wbHVja0RpcmVjdENhbGwoYSxiKSxyJiYoRz0iXG4iK2krcisiOyIpLHRoaXMub2JqZWN0JiYoZD0iIitsKyIgaW4gIitGLHRoaXMub3duJiYoZz0iXG4iK2krImlmICghIitqYigiaGFzUHJvcCIpKyIuY2FsbCgiK0YrIiwgIitsKyIpKSBjb250aW51ZTsiKSksYj1iLmNvbXBpbGUoZmIoYSx7aW5kZW50Oml9KSxCKSxiJiYoYj0iXG4iK2IrIlxuIiksIiIrYysodXx8IiIpK3RoaXMudGFiKyJmb3IgKCIrZCsiKSB7IitnK0crYit0aGlzLnRhYisifSIrKHZ8fCIiKX0sYi5wcm90b3R5cGUucGx1Y2tEaXJlY3RDYWxsPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGcsaCxqLGssbSxuLG8scCxxLHIscyx0O2Q9IiIsbz1iLmV4cHJlc3Npb25zO2ZvcihoPW09MCxuPW8ubGVuZ3RoO208bjtoPSsrbSl7ZT1vW2hdLGU9ZS51bndyYXBBbGwoKTtpZighKGUgaW5zdGFuY2VvZiBpKSljb250aW51ZTtrPWUudmFyaWFibGUudW53cmFwQWxsKCk7aWYoIShrIGluc3RhbmNlb2YgbHx8ayBpbnN0YW5jZW9mIFkmJigocD1rLmJhc2UpIT1udWxsP3AudW53cmFwQWxsKCk6dm9pZCAwKWluc3RhbmNlb2YgbCYmay5wcm9wZXJ0aWVzLmxlbmd0aD09PTEmJigocT0ocj1rLnByb3BlcnRpZXNbMF0ubmFtZSkhPW51bGw/ci52YWx1ZTp2b2lkIDApPT09ImNhbGwifHxxPT09ImFwcGx5IikpKWNvbnRpbnVlO2c9KChzPWsuYmFzZSkhPW51bGw/cy51bndyYXBBbGwoKTp2b2lkIDApfHxrLGo9bmV3IEMoYS5zY29wZS5mcmVlVmFyaWFibGUoImZuIikpLGM9bmV3IFkoaiksay5iYXNlJiYodD1bYyxrXSxrLmJhc2U9dFswXSxjPXRbMV0pLGIuZXhwcmVzc2lvbnNbaF09bmV3IGkoYyxlLmFyZ3MpLGQrPXRoaXMudGFiKyhuZXcgZihqLGcpKS5jb21waWxlKGEsQikrIjtcbiJ9cmV0dXJuIGR9LGJ9KFopLGIuU3dpdGNoPVM9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIsYyl7dGhpcy5zdWJqZWN0PWEsdGhpcy5jYXNlcz1iLHRoaXMub3RoZXJ3aXNlPWN9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJTd2l0Y2giLGIucHJvdG90eXBlLmNoaWxkcmVuPVsic3ViamVjdCIsImNhc2VzIiwib3RoZXJ3aXNlIl0sYi5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9JCxiLnByb3RvdHlwZS5qdW1wcz1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaDthPT1udWxsJiYoYT17YmxvY2s6ITB9KSxmPXRoaXMuY2FzZXM7Zm9yKGQ9MCxlPWYubGVuZ3RoO2Q8ZTtkKyspe2c9ZltkXSxjPWdbMF0sYj1nWzFdO2lmKGIuanVtcHMoYSkpcmV0dXJuIGJ9cmV0dXJuKGg9dGhpcy5vdGhlcndpc2UpIT1udWxsP2guanVtcHMoYSk6dm9pZCAwfSxiLnByb3RvdHlwZS5tYWtlUmV0dXJuPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGY7ZT10aGlzLmNhc2VzO2ZvcihjPTAsZD1lLmxlbmd0aDtjPGQ7YysrKWI9ZVtjXSxiWzFdLm1ha2VSZXR1cm4oYSk7cmV0dXJuIGEmJih0aGlzLm90aGVyd2lzZXx8KHRoaXMub3RoZXJ3aXNlPW5ldyBoKFtuZXcgQygidm9pZCAwIildKSkpLChmPXRoaXMub3RoZXJ3aXNlKSE9bnVsbCYmZi5tYWtlUmV0dXJuKGEpLHRoaXN9LGIucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHI7aT1hLmluZGVudCtULGo9YS5pbmRlbnQ9aStULGQ9dGhpcy50YWIrKCJzd2l0Y2ggKCIrKCgobz10aGlzLnN1YmplY3QpIT1udWxsP28uY29tcGlsZShhLEEpOnZvaWQgMCl8fCExKSsiKSB7XG4iKSxwPXRoaXMuY2FzZXM7Zm9yKGg9az0wLG09cC5sZW5ndGg7azxtO2g9KytrKXtxPXBbaF0sZj1xWzBdLGI9cVsxXSxyPWRiKFtmXSk7Zm9yKGw9MCxuPXIubGVuZ3RoO2w8bjtsKyspZT1yW2xdLHRoaXMuc3ViamVjdHx8KGU9ZS5pbnZlcnQoKSksZCs9aSsoImNhc2UgIitlLmNvbXBpbGUoYSxBKSsiOlxuIik7aWYoYz1iLmNvbXBpbGUoYSxCKSlkKz1jKyJcbiI7aWYoaD09PXRoaXMuY2FzZXMubGVuZ3RoLTEmJiF0aGlzLm90aGVyd2lzZSlicmVhaztnPXRoaXMubGFzdE5vbkNvbW1lbnQoYi5leHByZXNzaW9ucyk7aWYoZyBpbnN0YW5jZW9mIE18fGcgaW5zdGFuY2VvZiBDJiZnLmp1bXBzKCkmJmcudmFsdWUhPT0iZGVidWdnZXIiKWNvbnRpbnVlO2QrPWorImJyZWFrO1xuIn1yZXR1cm4gdGhpcy5vdGhlcndpc2UmJnRoaXMub3RoZXJ3aXNlLmV4cHJlc3Npb25zLmxlbmd0aCYmKGQrPWkrKCJkZWZhdWx0OlxuIit0aGlzLm90aGVyd2lzZS5jb21waWxlKGEsQikrIlxuIikpLGQrdGhpcy50YWIrIn0ifSxifShnKSxiLklmPXQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIsYyl7dGhpcy5ib2R5PWIsYz09bnVsbCYmKGM9e30pLHRoaXMuY29uZGl0aW9uPWMudHlwZT09PSJ1bmxlc3MiP2EuaW52ZXJ0KCk6YSx0aGlzLmVsc2VCb2R5PW51bGwsdGhpcy5pc0NoYWluPSExLHRoaXMuc29haz1jLnNvYWt9cmV0dXJuIG5iKGIsYSksYi5uYW1lPSJJZiIsYi5wcm90b3R5cGUuY2hpbGRyZW49WyJjb25kaXRpb24iLCJib2R5IiwiZWxzZUJvZHkiXSxiLnByb3RvdHlwZS5ib2R5Tm9kZT1mdW5jdGlvbigpe3ZhciBhO3JldHVybihhPXRoaXMuYm9keSkhPW51bGw/YS51bndyYXAoKTp2b2lkIDB9LGIucHJvdG90eXBlLmVsc2VCb2R5Tm9kZT1mdW5jdGlvbigpe3ZhciBhO3JldHVybihhPXRoaXMuZWxzZUJvZHkpIT1udWxsP2EudW53cmFwKCk6dm9pZCAwfSxiLnByb3RvdHlwZS5hZGRFbHNlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlzQ2hhaW4/dGhpcy5lbHNlQm9keU5vZGUoKS5hZGRFbHNlKGEpOih0aGlzLmlzQ2hhaW49YSBpbnN0YW5jZW9mIGIsdGhpcy5lbHNlQm9keT10aGlzLmVuc3VyZUJsb2NrKGEpKSx0aGlzfSxiLnByb3RvdHlwZS5pc1N0YXRlbWVudD1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4oYSE9bnVsbD9hLmxldmVsOnZvaWQgMCk9PT1CfHx0aGlzLmJvZHlOb2RlKCkuaXNTdGF0ZW1lbnQoYSl8fCgoYj10aGlzLmVsc2VCb2R5Tm9kZSgpKSE9bnVsbD9iLmlzU3RhdGVtZW50KGEpOnZvaWQgMCl9LGIucHJvdG90eXBlLmp1bXBzPWZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiB0aGlzLmJvZHkuanVtcHMoYSl8fCgoYj10aGlzLmVsc2VCb2R5KSE9bnVsbD9iLmp1bXBzKGEpOnZvaWQgMCl9LGIucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlzU3RhdGVtZW50KGEpP3RoaXMuY29tcGlsZVN0YXRlbWVudChhKTp0aGlzLmNvbXBpbGVFeHByZXNzaW9uKGEpfSxiLnByb3RvdHlwZS5tYWtlUmV0dXJuPWZ1bmN0aW9uKGEpe3JldHVybiBhJiYodGhpcy5lbHNlQm9keXx8KHRoaXMuZWxzZUJvZHk9bmV3IGgoW25ldyBDKCJ2b2lkIDAiKV0pKSksdGhpcy5ib2R5JiYodGhpcy5ib2R5PW5ldyBoKFt0aGlzLmJvZHkubWFrZVJldHVybihhKV0pKSx0aGlzLmVsc2VCb2R5JiYodGhpcy5lbHNlQm9keT1uZXcgaChbdGhpcy5lbHNlQm9keS5tYWtlUmV0dXJuKGEpXSkpLHRoaXN9LGIucHJvdG90eXBlLmVuc3VyZUJsb2NrPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgaD9hOm5ldyBoKFthXSl9LGIucHJvdG90eXBlLmNvbXBpbGVTdGF0ZW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGYsZyxoLGk7cmV0dXJuIGU9YWIoYSwiY2hhaW5DaGlsZCIpLGc9YWIoYSwiaXNFeGlzdGVudGlhbEVxdWFscyIpLGc/KG5ldyBiKHRoaXMuY29uZGl0aW9uLmludmVydCgpLHRoaXMuZWxzZUJvZHlOb2RlKCkse3R5cGU6ImlmIn0pKS5jb21waWxlKGEpOihmPXRoaXMuY29uZGl0aW9uLmNvbXBpbGUoYSxBKSxhLmluZGVudCs9VCxjPXRoaXMuZW5zdXJlQmxvY2sodGhpcy5ib2R5KSxkPWMuY29tcGlsZShhKSwxPT09KChpPWMuZXhwcmVzc2lvbnMpIT1udWxsP2kubGVuZ3RoOnZvaWQgMCkmJiF0aGlzLmVsc2VCb2R5JiYhZSYmZCYmZiYmLTE9PT1kLmluZGV4T2YoIlxuIikmJjgwPmYubGVuZ3RoK2QubGVuZ3RoPyIiK3RoaXMudGFiKyJpZiAoIitmKyIpICIrZC5yZXBsYWNlKC9eXHMrLywiIik6KGQmJihkPSJcbiIrZCsiXG4iK3RoaXMudGFiKSxoPSJpZiAoIitmKyIpIHsiK2QrIn0iLGV8fChoPXRoaXMudGFiK2gpLHRoaXMuZWxzZUJvZHk/aCsiIGVsc2UgIisodGhpcy5pc0NoYWluPyhhLmluZGVudD10aGlzLnRhYixhLmNoYWluQ2hpbGQ9ITAsdGhpcy5lbHNlQm9keS51bndyYXAoKS5jb21waWxlKGEsQikpOiJ7XG4iK3RoaXMuZWxzZUJvZHkuY29tcGlsZShhLEIpKyJcbiIrdGhpcy50YWIrIn0iKTpoKSl9LGIucHJvdG90eXBlLmNvbXBpbGVFeHByZXNzaW9uPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO3JldHVybiBlPXRoaXMuY29uZGl0aW9uLmNvbXBpbGUoYSx4KSxjPXRoaXMuYm9keU5vZGUoKS5jb21waWxlKGEseSksYj10aGlzLmVsc2VCb2R5Tm9kZSgpP3RoaXMuZWxzZUJvZHlOb2RlKCkuY29tcGlsZShhLHkpOiJ2b2lkIDAiLGQ9IiIrZSsiID8gIitjKyIgOiAiK2IsYS5sZXZlbD49eD8iKCIrZCsiKSI6ZH0sYi5wcm90b3R5cGUudW5mb2xkU29haz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNvYWsmJnRoaXN9LGJ9KGcpLGs9e3dyYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxqLGs7aWYoYS5qdW1wcygpKXJldHVybiBhO2c9bmV3IGwoW10saC53cmFwKFthXSkpLGU9W107aWYoKGo9YS5jb250YWlucyh0aGlzLmxpdGVyYWxBcmdzKSl8fGEuY29udGFpbnModGhpcy5saXRlcmFsVGhpcykpaz1uZXcgQyhqPyJhcHBseSI6ImNhbGwiKSxlPVtuZXcgQygidGhpcyIpXSxqJiZlLnB1c2gobmV3IEMoImFyZ3VtZW50cyIpKSxnPW5ldyBZKGcsW25ldyBkKGspXSk7cmV0dXJuIGcubm9SZXR1cm49YyxmPW5ldyBpKGcsZSksYj9oLndyYXAoW2ZdKTpmfSxsaXRlcmFsQXJnczpmdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEMmJmEudmFsdWU9PT0iYXJndW1lbnRzIiYmIWEuYXNLZXl9LGxpdGVyYWxUaGlzOmZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQyYmYS52YWx1ZT09PSJ0aGlzIiYmIWEuYXNLZXl8fGEgaW5zdGFuY2VvZiBsJiZhLmJvdW5kfX0saWI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKCEoZD1iW2NdLnVuZm9sZFNvYWsoYSkpKXJldHVybjtyZXR1cm4gYltjXT1kLmJvZHksZC5ib2R5PW5ldyBZKGIpLGR9LFg9eyJleHRlbmRzIjpmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7IGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHsgaWYgKCIramIoImhhc1Byb3AiKSsiLmNhbGwocGFyZW50LCBrZXkpKSBjaGlsZFtrZXldID0gcGFyZW50W2tleV07IH0gZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9IGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTsgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3I7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSJ9LGJpbmQ6ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24oZm4sIG1lKXsgcmV0dXJuIGZ1bmN0aW9uKCl7IHJldHVybiBmbi5hcHBseShtZSwgYXJndW1lbnRzKTsgfTsgfSJ9LGluZGV4T2Y6ZnVuY3Rpb24oKXtyZXR1cm4iW10uaW5kZXhPZiB8fCBmdW5jdGlvbihpdGVtKSB7IGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsgaWYgKGkgaW4gdGhpcyAmJiB0aGlzW2ldID09PSBpdGVtKSByZXR1cm4gaTsgfSByZXR1cm4gLTE7IH0ifSxoYXNQcm9wOmZ1bmN0aW9uKCl7cmV0dXJuInt9Lmhhc093blByb3BlcnR5In0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4iW10uc2xpY2UifX0sQj0xLEE9Mix5PTMseD00LHo9NSx3PTYsVD0iICAiLHI9IlskQS1aYS16X1xceDdmLVxcdWZmZmZdWyRcXHdcXHg3Zi1cXHVmZmZmXSoiLHE9UmVnRXhwKCJeIityKyIkIiksTj0vXlsrLV0/XGQrJC8sRD1SZWdFeHAoIl4oPzooIityKyIpXFwucHJvdG90eXBlKD86XFwuKCIrcisiKXxcXFsoXCIoPzpbXlxcXFxcIlxcclxcbl18XFxcXC4pKlwifCcoPzpbXlxcXFwnXFxyXFxuXXxcXFxcLikqJylcXF18XFxbKDB4W1xcZGEtZkEtRl0rfFxcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXF0pKXwoIityKyIpJCIpLHM9L15bJyJdLyxqYj1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gYj0iX18iK2EsUC5yb290LmFzc2lnbihiLFhbYV0oKSksYn0sZ2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1hLnJlcGxhY2UoL1xuL2csIiQmIitiKSxhLnJlcGxhY2UoL1xzKyQvLCIiKX19KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZS9zY29wZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL2NvZmZlZS9oZWxwZXJzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnO2c9YSgiLi9oZWxwZXJzIiksZT1nLmV4dGVuZCxmPWcubGFzdCxiLlNjb3BlPWQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyxkKXt0aGlzLnBhcmVudD1iLHRoaXMuZXhwcmVzc2lvbnM9Yyx0aGlzLm1ldGhvZD1kLHRoaXMudmFyaWFibGVzPVt7bmFtZToiYXJndW1lbnRzIix0eXBlOiJhcmd1bWVudHMifV0sdGhpcy5wb3NpdGlvbnM9e30sdGhpcy5wYXJlbnR8fChhLnJvb3Q9dGhpcyl9cmV0dXJuIGEubmFtZT0iU2NvcGUiLGEucm9vdD1udWxsLGEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuc2hhcmVkJiYhYz90aGlzLnBhcmVudC5hZGQoYSxiLGMpOk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnBvc2l0aW9ucyxhKT90aGlzLnZhcmlhYmxlc1t0aGlzLnBvc2l0aW9uc1thXV0udHlwZT1iOnRoaXMucG9zaXRpb25zW2FdPXRoaXMudmFyaWFibGVzLnB1c2goe25hbWU6YSx0eXBlOmJ9KS0xfSxhLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY2hlY2soYSxiKT8hMDoodGhpcy5hZGQoYSwidmFyIiksITEpfSxhLnByb3RvdHlwZS5wYXJhbWV0ZXI9ZnVuY3Rpb24oYSl7aWYodGhpcy5zaGFyZWQmJnRoaXMucGFyZW50LmNoZWNrKGEsITApKXJldHVybjtyZXR1cm4gdGhpcy5hZGQoYSwicGFyYW0iKX0sYS5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO3JldHVybiBjPSEhdGhpcy50eXBlKGEpLGN8fGI/YzooZD10aGlzLnBhcmVudCkhPW51bGw/ISFkLmNoZWNrKGEpOiEhdm9pZCAwfSxhLnByb3RvdHlwZS50ZW1wb3Jhcnk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5sZW5ndGg+MT8iXyIrYSsoYj4xP2ItMToiIik6Il8iKyhiK3BhcnNlSW50KGEsMzYpKS50b1N0cmluZygzNikucmVwbGFjZSgvXGQvZywiYSIpfSxhLnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO2U9dGhpcy52YXJpYWJsZXM7Zm9yKGM9MCxkPWUubGVuZ3RoO2M8ZDtjKyspe2I9ZVtjXTtpZihiLm5hbWU9PT1hKXJldHVybiBiLnR5cGV9cmV0dXJuIG51bGx9LGEucHJvdG90eXBlLmZyZWVWYXJpYWJsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7Yj09bnVsbCYmKGI9ITApLGM9MDt3aGlsZSh0aGlzLmNoZWNrKGQ9dGhpcy50ZW1wb3JhcnkoYSxjKSkpYysrO3JldHVybiBiJiZ0aGlzLmFkZChkLCJ2YXIiLCEwKSxkfSxhLnByb3RvdHlwZS5hc3NpZ249ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hZGQoYSx7dmFsdWU6Yixhc3NpZ25lZDohMH0sITApLHRoaXMuaGFzQXNzaWdubWVudHM9ITB9LGEucHJvdG90eXBlLmhhc0RlY2xhcmF0aW9ucz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5kZWNsYXJlZFZhcmlhYmxlcygpLmxlbmd0aH0sYS5wcm90b3R5cGUuZGVjbGFyZWRWYXJpYWJsZXM9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGY7YT1bXSxiPVtdLGY9dGhpcy52YXJpYWJsZXM7Zm9yKGQ9MCxlPWYubGVuZ3RoO2Q8ZTtkKyspYz1mW2RdLGMudHlwZT09PSJ2YXIiJiYoYy5uYW1lLmNoYXJBdCgwKT09PSJfIj9iOmEpLnB1c2goYy5uYW1lKTtyZXR1cm4gYS5zb3J0KCkuY29uY2F0KGIuc29ydCgpKX0sYS5wcm90b3R5cGUuYXNzaWduZWRWYXJpYWJsZXM9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlO2Q9dGhpcy52YXJpYWJsZXMsZT1bXTtmb3IoYj0wLGM9ZC5sZW5ndGg7YjxjO2IrKylhPWRbYl0sYS50eXBlLmFzc2lnbmVkJiZlLnB1c2goIiIrYS5uYW1lKyIgPSAiK2EudHlwZS52YWx1ZSk7cmV0dXJuIGV9LGF9KCl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-css.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gaW5pdEJhc2VVcmxzKGEpe3JlcXVpcmUudGxucz1hfWZ1bmN0aW9uIGluaXRTZW5kZXIoKXt2YXIgYT1yZXF1aXJlKG51bGwsImFjZS9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixiPXJlcXVpcmUobnVsbCwiYWNlL2xpYi9vb3AiKSxjPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZnVuY3Rpb24oKXtiLmltcGxlbWVudCh0aGlzLGEpLHRoaXMuY2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtwb3N0TWVzc2FnZSh7dHlwZToiY2FsbCIsaWQ6YixkYXRhOmF9KX0sdGhpcy5lbWl0PWZ1bmN0aW9uKGEsYil7cG9zdE1lc3NhZ2Uoe3R5cGU6ImV2ZW50IixuYW1lOmEsZGF0YTpifSl9fS5jYWxsKGMucHJvdG90eXBlKSxuZXcgY30ibm8gdXNlIHN0cmljdCI7dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihhKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmF9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oYSxiKXtpZihiLmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgYz1iLnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShhLGNbMF0pKyIhIitub3JtYWxpemVNb2R1bGUoYSxjWzFdKX1pZihiLmNoYXJBdCgwKT09Ii4iKXt2YXIgZD1hLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGI9ZCsiLyIrYjt3aGlsZShiLmluZGV4T2YoIi4iKSE9PS0xJiZlIT1iKXZhciBlPWIsYj1iLnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiBifSxyZXF1aXJlPWZ1bmN0aW9uKGEsYil7dmFyIGI9bm9ybWFsaXplTW9kdWxlKGEsYiksYz1yZXF1aXJlLm1vZHVsZXNbYl07aWYoYylyZXR1cm4gYy5pbml0aWFsaXplZHx8KGMuZXhwb3J0cz1jLmZhY3RvcnkoKS5leHBvcnRzLGMuaW5pdGlhbGl6ZWQ9ITApLGMuZXhwb3J0czt2YXIgZD1iLnNwbGl0KCIvIik7ZFswXT1yZXF1aXJlLnRsbnNbZFswXV18fGRbMF07dmFyIGU9ZC5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9YixpbXBvcnRTY3JpcHRzKGUpLHJlcXVpcmUoYSxiKX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGEsYixjKXthcmd1bWVudHMubGVuZ3RoPT0yP2M9Yjphcmd1bWVudHMubGVuZ3RoPT0xJiYoYz1hLGE9cmVxdWlyZS5pZCk7aWYoYS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIGQ9ZnVuY3Rpb24oYixjKXtyZXR1cm4gcmVxdWlyZShhLGIsYyl9O3JlcXVpcmUubW9kdWxlc1thXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBhPXtleHBvcnRzOnt9fSxiPWMoZCxhLmV4cG9ydHMsYSk7cmV0dXJuIGImJihhLmV4cG9ydHM9YiksYX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO2lmKGIuY29tbWFuZCltYWluW2IuY29tbWFuZF0uYXBwbHkobWFpbixiLmFyZ3MpO2Vsc2UgaWYoYi5pbml0KXtpbml0QmFzZVVybHMoYi50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBjPXJlcXVpcmUobnVsbCxiLm1vZHVsZSlbYi5jbGFzc25hbWVdO21haW49bmV3IGMoc2VuZGVyKX1lbHNlIGIuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KGIuZXZlbnQsYi5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oYSxiLGMpe2EoIi4vcmVnZXhwIiksYSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBnKGEpe3JldHVybihhLmdsb2JhbD8iZyI6IiIpKyhhLmlnbm9yZUNhc2U/ImkiOiIiKSsoYS5tdWx0aWxpbmU/Im0iOiIiKSsoYS5leHRlbmRlZD8ieCI6IiIpKyhhLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIGgoYSxiLGMpe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYixjKTtmb3IodmFyIGQ9Y3x8MDtkPGEubGVuZ3RoO2QrKylpZihhW2RdPT09YilyZXR1cm4gZDtyZXR1cm4tMX12YXIgZD17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxlPWQuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQsZj1mdW5jdGlvbigpe3ZhciBhPS9eL2c7cmV0dXJuIGQudGVzdC5jYWxsKGEsIiIpLCFhLmxhc3RJbmRleH0oKTtpZihmJiZlKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjLGk7aWYodHlwZW9mIGE9PSJzdHJpbmciJiZiKXshZSYmYi5sZW5ndGg+MSYmaChiLCIiKT4tMSYmKGk9UmVnRXhwKHRoaXMuc291cmNlLGQucmVwbGFjZS5jYWxsKGcodGhpcyksImciLCIiKSksZC5yZXBsYWNlLmNhbGwoYS5zbGljZShiLmluZGV4KSxpLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTE7YTxhcmd1bWVudHMubGVuZ3RoLTI7YSsrKWFyZ3VtZW50c1thXT09PXVuZGVmaW5lZCYmKGJbYV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGo9MTtqPGIubGVuZ3RoO2orKyljPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2otMV0sYyYmKGJbY109YltqXSk7IWYmJnRoaXMuZ2xvYmFsJiYhYlswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PmIuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIGJ9LGZ8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmNhbGwodGhpcyxhKTtyZXR1cm4gYiYmdGhpcy5nbG9iYWwmJiFiWzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+Yi5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIWJ9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBwKGEpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGF9Y2F0Y2goYil7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD1nLmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGg9Yy5hcHBseShmLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIGghPT1udWxsJiZPYmplY3QoaCk9PT1oP2g6Zn1yZXR1cm4gYy5hcHBseShiLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBlfSk7dmFyIGQ9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsZT1BcnJheS5wcm90b3R5cGUsZj1PYmplY3QucHJvdG90eXBlLGc9ZS5zbGljZSxoPWQuYmluZChmLnRvU3RyaW5nKSxpPWQuYmluZChmLmhhc093blByb3BlcnR5KSxqLGssbCxtLG47aWYobj1pKGYsIl9fZGVmaW5lR2V0dGVyX18iKSlqPWQuYmluZChmLl9fZGVmaW5lR2V0dGVyX18pLGs9ZC5iaW5kKGYuX19kZWZpbmVTZXR0ZXJfXyksbD1kLmJpbmQoZi5fX2xvb2t1cEdldHRlcl9fKSxtPWQuYmluZChmLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGIpe3JldHVybiBoKGIpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9YXJndW1lbnRzWzFdLGU9MCxmPWMubGVuZ3RoPj4+MDtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoZTxmKWUgaW4gYyYmYi5jYWxsKGQsY1tlXSxlLGMpLGUrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjAsZT1BcnJheShkKSxmPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBnPTA7ZzxkO2crKylnIGluIGMmJihlW2ddPWIuY2FsbChmLGNbZ10sZyxjKSk7cmV0dXJuIGV9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9W10sZj1hcmd1bWVudHNbMV07aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgZz0wO2c8ZDtnKyspZyBpbiBjJiZiLmNhbGwoZixjW2ddLGcsYykmJmUucHVzaChjW2ddKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9YXJndW1lbnRzWzFdO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIGY9MDtmPGQ7ZisrKWlmKGYgaW4gYyYmIWIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MCxlPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBmPTA7ZjxkO2YrKylpZihmIGluIGMmJmIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFkJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGU9MCxmO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZj1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihlIGluIGMpe2Y9Y1tlKytdO2JyZWFrfWlmKCsrZT49ZCl0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2U8ZDtlKyspZSBpbiBjJiYoZj1iLmNhbGwodm9pZCAwLGYsY1tlXSxlLGMpKTtyZXR1cm4gZn0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighZCYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBlLGY9ZC0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihmIGluIGMpe2U9Y1tmLS1dO2JyZWFrfWlmKC0tZjwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIGYgaW4gdGhpcyYmKGU9Yi5jYWxsKHZvaWQgMCxlLGNbZl0sZixjKSk7d2hpbGUoZi0tKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGU9RShhcmd1bWVudHNbMV0pKSxlPWU+PTA/ZTpNYXRoLm1heCgwLGQrZSk7Zm9yKDtlPGQ7ZSsrKWlmKGUgaW4gYyYmY1tlXT09PWIpcmV0dXJuIGU7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT1kLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoZT1NYXRoLm1pbihlLEUoYXJndW1lbnRzWzFdKSkpLGU9ZT49MD9lOmQtTWF0aC5hYnMoZSk7Zm9yKDtlPj0wO2UtLSlpZihlIGluIGMmJmI9PT1jW2VdKXJldHVybiBlO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGIpe3JldHVybiBiLl9fcHJvdG9fX3x8KGIuY29uc3RydWN0b3I/Yi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6Zil9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIG89Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKGIsYyl7aWYodHlwZW9mIGIhPSJvYmplY3QiJiZ0eXBlb2YgYiE9ImZ1bmN0aW9uInx8Yj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihvK2IpO2lmKCFpKGIsYykpcmV0dXJuO3ZhciBkLGUsZztkPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYobil7dmFyIGg9Yi5fX3Byb3RvX187Yi5fX3Byb3RvX189Zjt2YXIgZT1sKGIsYyksZz1tKGIsYyk7Yi5fX3Byb3RvX189aDtpZihlfHxnKXJldHVybiBlJiYoZC5nZXQ9ZSksZyYmKGQuc2V0PWcpLGR9cmV0dXJuIGQudmFsdWU9YltjXSxkfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKGIpe3JldHVybiBPYmplY3Qua2V5cyhiKX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ7aWYoYj09PW51bGwpZD17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIGIhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgYisiXSAhPSAnb2JqZWN0JyIpO3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1iLGQ9bmV3IGUsZC5fX3Byb3RvX189Yn1yZXR1cm4gYyE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxjKSxkfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgcT1wKHt9KSxyPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFxfHwhcil2YXIgcz1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8cyl7dmFyIHQ9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHU9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIix2PSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKGIsYyxkKXtpZih0eXBlb2YgYiE9Im9iamVjdCImJnR5cGVvZiBiIT0iZnVuY3Rpb24ifHxiPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHUrYik7aWYodHlwZW9mIGQhPSJvYmplY3QiJiZ0eXBlb2YgZCE9ImZ1bmN0aW9uInx8ZD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih0K2QpO2lmKHMpdHJ5e3JldHVybiBzLmNhbGwoT2JqZWN0LGIsYyxkKX1jYXRjaChlKXt9aWYoaShkLCJ2YWx1ZSIpKWlmKG4mJihsKGIsYyl8fG0oYixjKSkpe3ZhciBnPWIuX19wcm90b19fO2IuX19wcm90b19fPWYsZGVsZXRlIGJbY10sYltjXT1kLnZhbHVlLGIuX19wcm90b19fPWd9ZWxzZSBiW2NdPWQudmFsdWU7ZWxzZXtpZighbil0aHJvdyBuZXcgVHlwZUVycm9yKHYpO2koZCwiZ2V0IikmJmooYixjLGQuZ2V0KSxpKGQsInNldCIpJiZrKGIsYyxkLnNldCl9cmV0dXJuIGJ9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oYixjKXtmb3IodmFyIGQgaW4gYylpKGMsZCkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLGQsY1tkXSk7cmV0dXJuIGJ9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKGIpe3JldHVybiBifSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKHcpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgYz09ImZ1bmN0aW9uIj9jOmIoYyl9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbihiKXtpZihPYmplY3QoYik9PT1iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGM9IiI7d2hpbGUoaShiLGMpKWMrPSI/IjtiW2NdPSEwO3ZhciBkPWkoYixjKTtyZXR1cm4gZGVsZXRlIGJbY10sZH0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAseT1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLHo9eS5sZW5ndGg7Zm9yKHZhciBBIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gSChhKXtpZih0eXBlb2YgYSE9Im9iamVjdCImJnR5cGVvZiBhIT0iZnVuY3Rpb24ifHxhPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEg9W107Zm9yKHZhciBiIGluIGEpaShhLGIpJiZILnB1c2goYik7aWYoeClmb3IodmFyIGM9MCxkPXo7YzxkO2MrKyl7dmFyIGU9eVtjXTtpKGEsZSkmJkgucHVzaChlKX1yZXR1cm4gSH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciBiLGMsZCxlO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjtiPVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGU9dGhpcy5nZXRVVENGdWxsWWVhcigpLGU9KGU8MD8iLSI6ZT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoZSkpLnNsaWNlKDA8PWUmJmU8PTk5OTk/LTQ6LTYpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWQ9YltjXSxkPDEwJiYoYltjXT0iMCIrZCk7cmV0dXJuIGUrIi0iK2Iuc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK2Iuc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGIpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbiBlKGIsYyxkLGYsZyxoLGkpe3ZhciBqPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGEpe3ZhciBrPWo9PTEmJlN0cmluZyhiKT09PWI/bmV3IGEoZS5wYXJzZShiKSk6aj49Nz9uZXcgYShiLGMsZCxmLGcsaCxpKTpqPj02P25ldyBhKGIsYyxkLGYsZyxoKTpqPj01P25ldyBhKGIsYyxkLGYsZyk6aj49ND9uZXcgYShiLGMsZCxmKTpqPj0zP25ldyBhKGIsYyxkKTpqPj0yP25ldyBhKGIsYyk6aj49MT9uZXcgYShiKTpuZXcgYTtyZXR1cm4gay5jb25zdHJ1Y3Rvcj1lLGt9cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIGQgaW4gYSliW2RdPWFbZF07cmV0dXJuIGIubm93PWEubm93LGIuVVRDPWEuVVRDLGIucHJvdG90eXBlPWEucHJvdG90eXBlLGIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIsYi5wYXJzZT1mdW5jdGlvbihkKXt2YXIgZT1jLmV4ZWMoZCk7aWYoZSl7ZS5zaGlmdCgpO2Zvcih2YXIgZj0xO2Y8NztmKyspZVtmXT0rKGVbZl18fChmPDM/MTowKSksZj09MSYmZVtmXS0tO3ZhciBnPStlLnBvcCgpLGg9K2UucG9wKCksaT1lLnBvcCgpLGo9MDtpZihpKXtpZihoPjIzfHxnPjU5KXJldHVybiBOYU47aj0oaCo2MCtnKSo2ZTQqKGk9PSIrIj8tMToxKX12YXIgaz0rZVswXTtyZXR1cm4gMDw9ayYmazw9OTk/KGVbMF09ays0MDAsYS5VVEMuYXBwbHkodGhpcyxlKStqLTEyNjIyNzgwOGU1KTphLlVUQy5hcHBseSh0aGlzLGUpK2p9cmV0dXJuIGEucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxifShEYXRlKSk7dmFyIEI9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxCLnRyaW0oKSl7Qj0iWyIrQisiXSI7dmFyIEM9bmV3IFJlZ0V4cCgiXiIrQitCKyIqIiksRD1uZXcgUmVnRXhwKEIrQisiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoQywiIikucmVwbGFjZShELCIiKX19dmFyIEU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9K2EsYSE9PWE/YT0wOmEhPT0wJiZhIT09MS8wJiZhIT09LUluZmluaXR5JiYoYT0oYT4wfHwtMSkqTWF0aC5mbG9vcihNYXRoLmFicyhhKSkpLGF9LEY9ImEiWzBdIT0iYSIsRz1mdW5jdGlvbihhKXtpZihhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIEYmJnR5cGVvZiBhPT0ic3RyaW5nIiYmYT9hLnNwbGl0KCIiKTpPYmplY3QoYSl9fSksZGVmaW5lKCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307ZC5fZW1pdD1kLl9kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fSx0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdfHxbXSxkPXRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXTtpZighYy5sZW5ndGgmJiFkKXJldHVybjtiPWJ8fHt9LGIudHlwZT1hLGIuc3RvcFByb3BhZ2F0aW9ufHwoYi5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0pLGIucHJldmVudERlZmF1bHR8fChiLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfSk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe2NbZV0oYik7aWYoYi5wcm9wYWdhdGlvblN0b3BwZWQpYnJlYWt9aWYoZCYmIWIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4gZChiKX0sZC5zZXREZWZhdWx0SGFuZGxlcj1mdW5jdGlvbihhLGIpe3RoaXMuX2RlZmF1bHRIYW5kbGVycz10aGlzLl9kZWZhdWx0SGFuZGxlcnN8fHt9O2lmKHRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkZWZhdWx0IGhhbmRsZXIgZm9yICciK2ErIicgaXMgYWxyZWFkeSBzZXQiKTt0aGlzLl9kZWZhdWx0SGFuZGxlcnNbYV09Yn0sZC5vbj1kLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLl9ldmVudFJlZ2lzdHJ5PXRoaXMuX2V2ZW50UmVnaXN0cnl8fHt9O3ZhciBjPXRoaXMuX2V2ZW50UmVnaXN0cnlbYV07aWYoIWMpdmFyIGM9dGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXTtjLmluZGV4T2YoYik9PS0xJiZjLnB1c2goYil9LGQucmVtb3ZlTGlzdGVuZXI9ZC5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdO2lmKCFjKXJldHVybjt2YXIgZD1jLmluZGV4T2YoYik7ZCE9PS0xJiZjLnNwbGljZShkLDEpfSxkLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihhKXt0aGlzLl9ldmVudFJlZ2lzdHJ5JiYodGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXSl9LGIuRXZlbnRFbWl0dGVyPWR9KSxkZWZpbmUoImFjZS9saWIvb29wIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2IuaW5oZXJpdHM9ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKGIsYyl7YS5wcm90b3R5cGU9Yy5wcm90b3R5cGUsYi5zdXBlcl89Yy5wcm90b3R5cGUsYi5wcm90b3R5cGU9bmV3IGEsYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yn19KCksYi5taXhpbj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWFbY109YltjXX0sYi5pbXBsZW1lbnQ9ZnVuY3Rpb24oYSxjKXtiLm1peGluKGEsYyl9fSksZGVmaW5lKCJhY2UvbW9kZS9jc3Nfd29ya2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2Uvd29ya2VyL21pcnJvciIsImFjZS9tb2RlL2Nzcy9jc3NsaW50Il0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL3dvcmtlci9taXJyb3IiKS5NaXJyb3IsZj1hKCIuL2Nzcy9jc3NsaW50IikuQ1NTTGludCxnPWIuV29ya2VyPWZ1bmN0aW9uKGEpe2UuY2FsbCh0aGlzLGEpLHRoaXMuc2V0VGltZW91dCgyMDApfTtkLmluaGVyaXRzKGcsZSksZnVuY3Rpb24oKXt0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kb2MuZ2V0VmFsdWUoKSxiPWYudmVyaWZ5KGEpO3RoaXMuc2VuZGVyLmVtaXQoImNzc2xpbnQiLGIubWVzc2FnZXMubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBkZWxldGUgYS5ydWxlLGF9KSl9fS5jYWxsKGcucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL3dvcmtlci9taXJyb3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvZG9jdW1lbnQiLCJhY2UvbGliL2xhbmciXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vZG9jdW1lbnQiKS5Eb2N1bWVudCxlPWEoIi4uL2xpYi9sYW5nIiksZj1iLk1pcnJvcj1mdW5jdGlvbihhKXt0aGlzLnNlbmRlcj1hO3ZhciBiPXRoaXMuZG9jPW5ldyBkKCIiKSxjPXRoaXMuZGVmZXJyZWRVcGRhdGU9ZS5kZWZlcnJlZENhbGwodGhpcy5vblVwZGF0ZS5iaW5kKHRoaXMpKSxmPXRoaXM7YS5vbigiY2hhbmdlIixmdW5jdGlvbihhKXtiLmFwcGx5RGVsdGFzKFthLmRhdGFdKSxjLnNjaGVkdWxlKGYuJHRpbWVvdXQpfSl9OyhmdW5jdGlvbigpe3RoaXMuJHRpbWVvdXQ9NTAwLHRoaXMuc2V0VGltZW91dD1mdW5jdGlvbihhKXt0aGlzLiR0aW1lb3V0PWF9LHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oYSl7dGhpcy5kb2Muc2V0VmFsdWUoYSksdGhpcy5kZWZlcnJlZFVwZGF0ZS5zY2hlZHVsZSh0aGlzLiR0aW1lb3V0KX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbihhKXt0aGlzLnNlbmRlci5jYWxsYmFjayh0aGlzLmRvYy5nZXRWYWx1ZSgpLGEpfSx0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7fX0pLmNhbGwoZi5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvZG9jdW1lbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciIsImFjZS9yYW5nZSIsImFjZS9hbmNob3IiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9saWIvb29wIiksZT1hKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGY9YSgiLi9yYW5nZSIpLlJhbmdlLGc9YSgiLi9hbmNob3IiKS5BbmNob3IsaD1mdW5jdGlvbihhKXt0aGlzLiRsaW5lcz1bXSxhLmxlbmd0aD09MD90aGlzLiRsaW5lcz1bIiJdOkFycmF5LmlzQXJyYXkoYSk/dGhpcy5pbnNlcnRMaW5lcygwLGEpOnRoaXMuaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sYSl9OyhmdW5jdGlvbigpe2QuaW1wbGVtZW50KHRoaXMsZSksdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldExlbmd0aCgpO3RoaXMucmVtb3ZlKG5ldyBmKDAsMCxiLHRoaXMuZ2V0TGluZShiLTEpLmxlbmd0aCkpLHRoaXMuaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sYSl9LHRoaXMuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRBbGxMaW5lcygpLmpvaW4odGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkpfSx0aGlzLmNyZWF0ZUFuY2hvcj1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZyh0aGlzLGEsYil9LCJhYWEiLnNwbGl0KC9hLykubGVuZ3RoPT0wP3RoaXMuJHNwbGl0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xyXG58XHIvZywiXG4iKS5zcGxpdCgiXG4iKX06dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3BsaXQoL1xyXG58XHJ8XG4vKX0sdGhpcy4kZGV0ZWN0TmV3TGluZT1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9eLio/KFxyXG58XHJ8XG4pL20pO2I/dGhpcy4kYXV0b05ld0xpbmU9YlsxXTp0aGlzLiRhdXRvTmV3TGluZT0iXG4ifSx0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXI9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy4kbmV3TGluZU1vZGUpe2Nhc2Uid2luZG93cyI6cmV0dXJuIlxyXG4iO2Nhc2UidW5peCI6cmV0dXJuIlxuIjtjYXNlImF1dG8iOnJldHVybiB0aGlzLiRhdXRvTmV3TGluZX19LHRoaXMuJGF1dG9OZXdMaW5lPSJcbiIsdGhpcy4kbmV3TGluZU1vZGU9ImF1dG8iLHRoaXMuc2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oYSl7aWYodGhpcy4kbmV3TGluZU1vZGU9PT1hKXJldHVybjt0aGlzLiRuZXdMaW5lTW9kZT1hfSx0aGlzLmdldE5ld0xpbmVNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG5ld0xpbmVNb2RlfSx0aGlzLmlzTmV3TGluZT1mdW5jdGlvbihhKXtyZXR1cm4gYT09IlxyXG4ifHxhPT0iXHIifHxhPT0iXG4ifSx0aGlzLmdldExpbmU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGxpbmVzW2FdfHwiIn0sdGhpcy5nZXRMaW5lcz1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLiRsaW5lcy5zbGljZShhLGIrMSl9LHRoaXMuZ2V0QWxsTGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMaW5lcygwLHRoaXMuZ2V0TGVuZ3RoKCkpfSx0aGlzLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRsaW5lcy5sZW5ndGh9LHRoaXMuZ2V0VGV4dFJhbmdlPWZ1bmN0aW9uKGEpe2lmKGEuc3RhcnQucm93PT1hLmVuZC5yb3cpcmV0dXJuIHRoaXMuJGxpbmVzW2Euc3RhcnQucm93XS5zdWJzdHJpbmcoYS5zdGFydC5jb2x1bW4sYS5lbmQuY29sdW1uKTt2YXIgYj10aGlzLmdldExpbmVzKGEuc3RhcnQucm93KzEsYS5lbmQucm93LTEpO3JldHVybiBiLnVuc2hpZnQoKHRoaXMuJGxpbmVzW2Euc3RhcnQucm93XXx8IiIpLnN1YnN0cmluZyhhLnN0YXJ0LmNvbHVtbikpLGIucHVzaCgodGhpcy4kbGluZXNbYS5lbmQucm93XXx8IiIpLnN1YnN0cmluZygwLGEuZW5kLmNvbHVtbikpLGIuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuJGNsaXBQb3NpdGlvbj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldExlbmd0aCgpO3JldHVybiBhLnJvdz49YiYmKGEucm93PU1hdGgubWF4KDAsYi0xKSxhLmNvbHVtbj10aGlzLmdldExpbmUoYi0xKS5sZW5ndGgpLGF9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGEsYil7aWYoIWJ8fGIubGVuZ3RoPT09MClyZXR1cm4gYTthPXRoaXMuJGNsaXBQb3NpdGlvbihhKSx0aGlzLmdldExlbmd0aCgpPD0xJiZ0aGlzLiRkZXRlY3ROZXdMaW5lKGIpO3ZhciBjPXRoaXMuJHNwbGl0KGIpLGQ9Yy5zcGxpY2UoMCwxKVswXSxlPWMubGVuZ3RoPT0wP251bGw6Yy5zcGxpY2UoYy5sZW5ndGgtMSwxKVswXTtyZXR1cm4gYT10aGlzLmluc2VydEluTGluZShhLGQpLGUhPT1udWxsJiYoYT10aGlzLmluc2VydE5ld0xpbmUoYSksYT10aGlzLmluc2VydExpbmVzKGEucm93LGMpLGE9dGhpcy5pbnNlcnRJbkxpbmUoYSxlfHwiIikpLGF9LHRoaXMuaW5zZXJ0TGluZXM9ZnVuY3Rpb24oYSxiKXtpZihiLmxlbmd0aD09MClyZXR1cm57cm93OmEsY29sdW1uOjB9O3ZhciBjPVthLDBdO2MucHVzaC5hcHBseShjLGIpLHRoaXMuJGxpbmVzLnNwbGljZS5hcHBseSh0aGlzLiRsaW5lcyxjKTt2YXIgZD1uZXcgZihhLDAsYStiLmxlbmd0aCwwKSxlPXthY3Rpb246Imluc2VydExpbmVzIixyYW5nZTpkLGxpbmVzOmJ9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmV9KSxkLmVuZH0sdGhpcy5pbnNlcnROZXdMaW5lPWZ1bmN0aW9uKGEpe2E9dGhpcy4kY2xpcFBvc2l0aW9uKGEpO3ZhciBiPXRoaXMuJGxpbmVzW2Eucm93XXx8IiI7dGhpcy4kbGluZXNbYS5yb3ddPWIuc3Vic3RyaW5nKDAsYS5jb2x1bW4pLHRoaXMuJGxpbmVzLnNwbGljZShhLnJvdysxLDAsYi5zdWJzdHJpbmcoYS5jb2x1bW4sYi5sZW5ndGgpKTt2YXIgYz17cm93OmEucm93KzEsY29sdW1uOjB9LGQ9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6Zi5mcm9tUG9pbnRzKGEsYyksdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZH0pLGN9LHRoaXMuaW5zZXJ0SW5MaW5lPWZ1bmN0aW9uKGEsYil7aWYoYi5sZW5ndGg9PTApcmV0dXJuIGE7dmFyIGM9dGhpcy4kbGluZXNbYS5yb3ddfHwiIjt0aGlzLiRsaW5lc1thLnJvd109Yy5zdWJzdHJpbmcoMCxhLmNvbHVtbikrYitjLnN1YnN0cmluZyhhLmNvbHVtbik7dmFyIGQ9e3JvdzphLnJvdyxjb2x1bW46YS5jb2x1bW4rYi5sZW5ndGh9LGU9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6Zi5mcm9tUG9pbnRzKGEsZCksdGV4dDpifTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTplfSksZH0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oYSl7YS5zdGFydD10aGlzLiRjbGlwUG9zaXRpb24oYS5zdGFydCksYS5lbmQ9dGhpcy4kY2xpcFBvc2l0aW9uKGEuZW5kKTtpZihhLmlzRW1wdHkoKSlyZXR1cm4gYS5zdGFydDt2YXIgYj1hLnN0YXJ0LnJvdyxjPWEuZW5kLnJvdztpZihhLmlzTXVsdGlMaW5lKCkpe3ZhciBkPWEuc3RhcnQuY29sdW1uPT0wP2I6YisxLGU9Yy0xO2EuZW5kLmNvbHVtbj4wJiZ0aGlzLnJlbW92ZUluTGluZShjLDAsYS5lbmQuY29sdW1uKSxlPj1kJiZ0aGlzLnJlbW92ZUxpbmVzKGQsZSksZCE9YiYmKHRoaXMucmVtb3ZlSW5MaW5lKGIsYS5zdGFydC5jb2x1bW4sdGhpcy5nZXRMaW5lKGIpLmxlbmd0aCksdGhpcy5yZW1vdmVOZXdMaW5lKGEuc3RhcnQucm93KSl9ZWxzZSB0aGlzLnJlbW92ZUluTGluZShiLGEuc3RhcnQuY29sdW1uLGEuZW5kLmNvbHVtbik7cmV0dXJuIGEuc3RhcnR9LHRoaXMucmVtb3ZlSW5MaW5lPWZ1bmN0aW9uKGEsYixjKXtpZihiPT1jKXJldHVybjt2YXIgZD1uZXcgZihhLGIsYSxjKSxlPXRoaXMuZ2V0TGluZShhKSxnPWUuc3Vic3RyaW5nKGIsYyksaD1lLnN1YnN0cmluZygwLGIpK2Uuc3Vic3RyaW5nKGMsZS5sZW5ndGgpO3RoaXMuJGxpbmVzLnNwbGljZShhLDEsaCk7dmFyIGk9e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6ZCx0ZXh0Omd9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOml9KSxkLnN0YXJ0fSx0aGlzLnJlbW92ZUxpbmVzPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IGYoYSwwLGIrMSwwKSxkPXRoaXMuJGxpbmVzLnNwbGljZShhLGItYSsxKSxlPXthY3Rpb246InJlbW92ZUxpbmVzIixyYW5nZTpjLG5sOnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpLGxpbmVzOmR9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmV9KSxkfSx0aGlzLnJlbW92ZU5ld0xpbmU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRMaW5lKGEpLGM9dGhpcy5nZXRMaW5lKGErMSksZD1uZXcgZihhLGIubGVuZ3RoLGErMSwwKSxlPWIrYzt0aGlzLiRsaW5lcy5zcGxpY2UoYSwyLGUpO3ZhciBnPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOmQsdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07dGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpnfSl9LHRoaXMucmVwbGFjZT1mdW5jdGlvbihhLGIpe2lmKGIubGVuZ3RoPT0wJiZhLmlzRW1wdHkoKSlyZXR1cm4gYS5zdGFydDtpZihiPT10aGlzLmdldFRleHRSYW5nZShhKSlyZXR1cm4gYS5lbmQ7dGhpcy5yZW1vdmUoYSk7aWYoYil2YXIgYz10aGlzLmluc2VydChhLnN0YXJ0LGIpO2Vsc2UgYz1hLnN0YXJ0O3JldHVybiBjfSx0aGlzLmFwcGx5RGVsdGFzPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgYz1hW2JdLGQ9Zi5mcm9tUG9pbnRzKGMucmFuZ2Uuc3RhcnQsYy5yYW5nZS5lbmQpO2MuYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoZC5zdGFydC5yb3csYy5saW5lcyk6Yy5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLmluc2VydChkLnN0YXJ0LGMudGV4dCk6Yy5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhkLnN0YXJ0LnJvdyxkLmVuZC5yb3ctMSk6Yy5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5yZW1vdmUoZCl9fSx0aGlzLnJldmVydERlbHRhcz1mdW5jdGlvbihhKXtmb3IodmFyIGI9YS5sZW5ndGgtMTtiPj0wO2ItLSl7dmFyIGM9YVtiXSxkPWYuZnJvbVBvaW50cyhjLnJhbmdlLnN0YXJ0LGMucmFuZ2UuZW5kKTtjLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLnJlbW92ZUxpbmVzKGQuc3RhcnQucm93LGQuZW5kLnJvdy0xKTpjLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMucmVtb3ZlKGQpOmMuYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoZC5zdGFydC5yb3csYy5saW5lcyk6Yy5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5pbnNlcnQoZC5zdGFydCxjLnRleHQpfX19KS5jYWxsKGgucHJvdG90eXBlKSxiLkRvY3VtZW50PWh9KSxkZWZpbmUoImFjZS9yYW5nZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnN0YXJ0PXtyb3c6YSxjb2x1bW46Yn0sdGhpcy5lbmQ9e3JvdzpjLGNvbHVtbjpkfX07KGZ1bmN0aW9uKCl7dGhpcy5pc0VxdWFsPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09YS5zdGFydC5yb3cmJnRoaXMuZW5kLnJvdz09YS5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09YS5zdGFydC5jb2x1bW4mJnRoaXMuZW5kLmNvbHVtbj09YS5lbmQuY29sdW1ufSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlOiBbIit0aGlzLnN0YXJ0LnJvdysiLyIrdGhpcy5zdGFydC5jb2x1bW4rIl0gLT4gWyIrdGhpcy5lbmQucm93KyIvIit0aGlzLmVuZC5jb2x1bW4rIl0ifSx0aGlzLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wfSx0aGlzLmNvbXBhcmVSYW5nZT1mdW5jdGlvbihhKXt2YXIgYixjPWEuZW5kLGQ9YS5zdGFydDtyZXR1cm4gYj10aGlzLmNvbXBhcmUoYy5yb3csYy5jb2x1bW4pLGI9PTE/KGI9dGhpcy5jb21wYXJlKGQucm93LGQuY29sdW1uKSxiPT0xPzI6Yj09MD8xOjApOmI9PS0xPy0yOihiPXRoaXMuY29tcGFyZShkLnJvdyxkLmNvbHVtbiksYj09LTE/LTE6Yj09MT80MjowKX0sdGhpcy5jb21wYXJlUG9pbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29tcGFyZShhLnJvdyxhLmNvbHVtbil9LHRoaXMuY29udGFpbnNSYW5nZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jb21wYXJlUG9pbnQoYS5zdGFydCk9PTAmJnRoaXMuY29tcGFyZVBvaW50KGEuZW5kKT09MH0sdGhpcy5pbnRlcnNlY3RzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29tcGFyZVJhbmdlKGEpO3JldHVybiBiPT0tMXx8Yj09MHx8Yj09MX0sdGhpcy5pc0VuZD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVuZC5yb3c9PWEmJnRoaXMuZW5kLmNvbHVtbj09Yn0sdGhpcy5pc1N0YXJ0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1hJiZ0aGlzLnN0YXJ0LmNvbHVtbj09Yn0sdGhpcy5zZXRTdGFydD1mdW5jdGlvbihhLGIpe3R5cGVvZiBhPT0ib2JqZWN0Ij8odGhpcy5zdGFydC5jb2x1bW49YS5jb2x1bW4sdGhpcy5zdGFydC5yb3c9YS5yb3cpOih0aGlzLnN0YXJ0LnJvdz1hLHRoaXMuc3RhcnQuY29sdW1uPWIpfSx0aGlzLnNldEVuZD1mdW5jdGlvbihhLGIpe3R5cGVvZiBhPT0ib2JqZWN0Ij8odGhpcy5lbmQuY29sdW1uPWEuY29sdW1uLHRoaXMuZW5kLnJvdz1hLnJvdyk6KHRoaXMuZW5kLnJvdz1hLHRoaXMuZW5kLmNvbHVtbj1iKX0sdGhpcy5pbnNpZGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTA/dGhpcy5pc0VuZChhLGIpfHx0aGlzLmlzU3RhcnQoYSxiKT8hMTohMDohMX0sdGhpcy5pbnNpZGVTdGFydD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MD90aGlzLmlzRW5kKGEsYik/ITE6ITA6ITF9LHRoaXMuaW5zaWRlRW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wP3RoaXMuaXNTdGFydChhLGIpPyExOiEwOiExfSx0aGlzLmNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hdGhpcy5pc011bHRpTGluZSgpJiZhPT09dGhpcy5zdGFydC5yb3c/Yjx0aGlzLnN0YXJ0LmNvbHVtbj8tMTpiPnRoaXMuZW5kLmNvbHVtbj8xOjA6YTx0aGlzLnN0YXJ0LnJvdz8tMTphPnRoaXMuZW5kLnJvdz8xOnRoaXMuc3RhcnQucm93PT09YT9iPj10aGlzLnN0YXJ0LmNvbHVtbj8wOi0xOnRoaXMuZW5kLnJvdz09PWE/Yjw9dGhpcy5lbmQuY29sdW1uPzA6MTowfSx0aGlzLmNvbXBhcmVTdGFydD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09YSYmdGhpcy5zdGFydC5jb2x1bW49PWI/LTE6dGhpcy5jb21wYXJlKGEsYil9LHRoaXMuY29tcGFyZUVuZD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVuZC5yb3c9PWEmJnRoaXMuZW5kLmNvbHVtbj09Yj8xOnRoaXMuY29tcGFyZShhLGIpfSx0aGlzLmNvbXBhcmVJbnNpZGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lbmQucm93PT1hJiZ0aGlzLmVuZC5jb2x1bW49PWI/MTp0aGlzLnN0YXJ0LnJvdz09YSYmdGhpcy5zdGFydC5jb2x1bW49PWI/LTE6dGhpcy5jb21wYXJlKGEsYil9LHRoaXMuY2xpcFJvd3M9ZnVuY3Rpb24oYSxiKXtpZih0aGlzLmVuZC5yb3c+Yil2YXIgYz17cm93OmIrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c+Yil2YXIgZT17cm93OmIrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c8YSl2YXIgZT17cm93OmEsY29sdW1uOjB9O2lmKHRoaXMuZW5kLnJvdzxhKXZhciBjPXtyb3c6YSxjb2x1bW46MH07cmV0dXJuIGQuZnJvbVBvaW50cyhlfHx0aGlzLnN0YXJ0LGN8fHRoaXMuZW5kKX0sdGhpcy5leHRlbmQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNvbXBhcmUoYSxiKTtpZihjPT0wKXJldHVybiB0aGlzO2lmKGM9PS0xKXZhciBlPXtyb3c6YSxjb2x1bW46Yn07ZWxzZSB2YXIgZj17cm93OmEsY29sdW1uOmJ9O3JldHVybiBkLmZyb21Qb2ludHMoZXx8dGhpcy5zdGFydCxmfHx0aGlzLmVuZCl9LHRoaXMuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09dGhpcy5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09dGhpcy5lbmQuY29sdW1ufSx0aGlzLmlzTXVsdGlMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93IT09dGhpcy5lbmQucm93fSx0aGlzLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIGQuZnJvbVBvaW50cyh0aGlzLnN0YXJ0LHRoaXMuZW5kKX0sdGhpcy5jb2xsYXBzZVJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQuY29sdW1uPT0wP25ldyBkKHRoaXMuc3RhcnQucm93LDAsTWF0aC5tYXgodGhpcy5zdGFydC5yb3csdGhpcy5lbmQucm93LTEpLDApOm5ldyBkKHRoaXMuc3RhcnQucm93LDAsdGhpcy5lbmQucm93LDApfSx0aGlzLnRvU2NyZWVuUmFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5zdGFydCksYz1hLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLmVuZCk7cmV0dXJuIG5ldyBkKGIucm93LGIuY29sdW1uLGMucm93LGMuY29sdW1uKX19KS5jYWxsKGQucHJvdG90eXBlKSxkLmZyb21Qb2ludHM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGQoYS5yb3csYS5jb2x1bW4sYi5yb3csYi5jb2x1bW4pfSxiLlJhbmdlPWR9KSxkZWZpbmUoImFjZS9hbmNob3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2xpYi9vb3AiKSxlPWEoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsZj1iLkFuY2hvcj1mdW5jdGlvbihhLGIsYyl7dGhpcy5kb2N1bWVudD1hLHR5cGVvZiBjPT0idW5kZWZpbmVkIj90aGlzLnNldFBvc2l0aW9uKGIucm93LGIuY29sdW1uKTp0aGlzLnNldFBvc2l0aW9uKGIsYyksdGhpcy4kb25DaGFuZ2U9dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpLGEub24oImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfTsoZnVuY3Rpb24oKXtkLmltcGxlbWVudCh0aGlzLGUpLHRoaXMuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudCh0aGlzLnJvdyx0aGlzLmNvbHVtbil9LHRoaXMuZ2V0RG9jdW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2N1bWVudH0sdGhpcy5vbkNoYW5nZT1mdW5jdGlvbihhKXt2YXIgYj1hLmRhdGEsYz1iLnJhbmdlO2lmKGMuc3RhcnQucm93PT1jLmVuZC5yb3cmJmMuc3RhcnQucm93IT10aGlzLnJvdylyZXR1cm47aWYoYy5zdGFydC5yb3c+dGhpcy5yb3cpcmV0dXJuO2lmKGMuc3RhcnQucm93PT10aGlzLnJvdyYmYy5zdGFydC5jb2x1bW4+dGhpcy5jb2x1bW4pcmV0dXJuO3ZhciBkPXRoaXMucm93LGU9dGhpcy5jb2x1bW47Yi5hY3Rpb249PT0iaW5zZXJ0VGV4dCI/Yy5zdGFydC5yb3c9PT1kJiZjLnN0YXJ0LmNvbHVtbjw9ZT9jLnN0YXJ0LnJvdz09PWMuZW5kLnJvdz9lKz1jLmVuZC5jb2x1bW4tYy5zdGFydC5jb2x1bW46KGUtPWMuc3RhcnQuY29sdW1uLGQrPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyk6Yy5zdGFydC5yb3chPT1jLmVuZC5yb3cmJmMuc3RhcnQucm93PGQmJihkKz1jLmVuZC5yb3ctYy5zdGFydC5yb3cpOmIuYWN0aW9uPT09Imluc2VydExpbmVzIj9jLnN0YXJ0LnJvdzw9ZCYmKGQrPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyk6Yi5hY3Rpb249PSJyZW1vdmVUZXh0Ij9jLnN0YXJ0LnJvdz09ZCYmYy5zdGFydC5jb2x1bW48ZT9jLmVuZC5jb2x1bW4+PWU/ZT1jLnN0YXJ0LmNvbHVtbjplPU1hdGgubWF4KDAsZS0oYy5lbmQuY29sdW1uLWMuc3RhcnQuY29sdW1uKSk6Yy5zdGFydC5yb3chPT1jLmVuZC5yb3cmJmMuc3RhcnQucm93PGQ/KGMuZW5kLnJvdz09ZCYmKGU9TWF0aC5tYXgoMCxlLWMuZW5kLmNvbHVtbikrYy5zdGFydC5jb2x1bW4pLGQtPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyk6Yy5lbmQucm93PT1kJiYoZC09Yy5lbmQucm93LWMuc3RhcnQucm93LGU9TWF0aC5tYXgoMCxlLWMuZW5kLmNvbHVtbikrYy5zdGFydC5jb2x1bW4pOmIuYWN0aW9uPT0icmVtb3ZlTGluZXMiJiZjLnN0YXJ0LnJvdzw9ZCYmKGMuZW5kLnJvdzw9ZD9kLT1jLmVuZC5yb3ctYy5zdGFydC5yb3c6KGQ9Yy5zdGFydC5yb3csZT0wKSksdGhpcy5zZXRQb3NpdGlvbihkLGUsITApfSx0aGlzLnNldFBvc2l0aW9uPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtjP2Q9e3JvdzphLGNvbHVtbjpifTpkPXRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQoYSxiKTtpZih0aGlzLnJvdz09ZC5yb3cmJnRoaXMuY29sdW1uPT1kLmNvbHVtbilyZXR1cm47dmFyIGU9e3Jvdzp0aGlzLnJvdyxjb2x1bW46dGhpcy5jb2x1bW59O3RoaXMucm93PWQucm93LHRoaXMuY29sdW1uPWQuY29sdW1uLHRoaXMuX2VtaXQoImNoYW5nZSIse29sZDplLHZhbHVlOmR9KX0sdGhpcy5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfSx0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9e307cmV0dXJuIGE+PXRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCk/KGMucm93PU1hdGgubWF4KDAsdGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKS0xKSxjLmNvbHVtbj10aGlzLmRvY3VtZW50LmdldExpbmUoYy5yb3cpLmxlbmd0aCk6YTwwPyhjLnJvdz0wLGMuY29sdW1uPTApOihjLnJvdz1hLGMuY29sdW1uPU1hdGgubWluKHRoaXMuZG9jdW1lbnQuZ2V0TGluZShjLnJvdykubGVuZ3RoLE1hdGgubWF4KDAsYikpKSxiPDAmJihjLmNvbHVtbj0wKSxjfX0pLmNhbGwoZi5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbGliL2xhbmciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7Yi5zdHJpbmdSZXZlcnNlPWZ1bmN0aW9uKGEpe3JldHVybiBhLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIil9LGIuc3RyaW5nUmVwZWF0PWZ1bmN0aW9uKGEsYil7cmV0dXJuKG5ldyBBcnJheShiKzEpKS5qb2luKGEpfTt2YXIgZD0vXlxzXHMqLyxlPS9cc1xzKiQvO2Iuc3RyaW5nVHJpbUxlZnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShkLCIiKX0sYi5zdHJpbmdUcmltUmlnaHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShlLCIiKX0sYi5jb3B5T2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2Zvcih2YXIgYyBpbiBhKWJbY109YVtjXTtyZXR1cm4gYn0sYi5jb3B5QXJyYXk9ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWFbY10mJnR5cGVvZiBhW2NdPT0ib2JqZWN0Ij9iW2NdPXRoaXMuY29weU9iamVjdChhW2NdKTpiW2NdPWFbY107cmV0dXJuIGJ9LGIuZGVlcENvcHk9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPSJvYmplY3QiKXJldHVybiBhO3ZhciBiPWEuY29uc3RydWN0b3IoKTtmb3IodmFyIGMgaW4gYSl0eXBlb2YgYVtjXT09Im9iamVjdCI/YltjXT10aGlzLmRlZXBDb3B5KGFbY10pOmJbY109YVtjXTtyZXR1cm4gYn0sYi5hcnJheVRvTWFwPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWJbYVtjXV09MTtyZXR1cm4gYn0sYi5hcnJheVJlbW92ZT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8PWEubGVuZ3RoO2MrKyliPT09YVtjXSYmYS5zcGxpY2UoYywxKX0sYi5lc2NhcGVSZWdFeHA9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKFsuKis/XiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9LGIuZGVmZXJyZWRDYWxsPWZ1bmN0aW9uKGEpe3ZhciBiPW51bGwsYz1mdW5jdGlvbigpe2I9bnVsbCxhKCl9LGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuY2FuY2VsKCksYj1zZXRUaW1lb3V0KGMsYXx8MCksZH07cmV0dXJuIGQuc2NoZWR1bGU9ZCxkLmNhbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWwoKSxhKCksZH0sZC5jYW5jZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY2xlYXJUaW1lb3V0KGIpLGI9bnVsbCxkfSxkfX0pLGRlZmluZSgiYWNlL21vZGUvY3NzL2Nzc2xpbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihyZXF1aXJlLGV4cG9ydHMsbW9kdWxlKXtmdW5jdGlvbiBSZXBvcnRlcihhLGIpe3RoaXMubWVzc2FnZXM9W10sdGhpcy5zdGF0cz1bXSx0aGlzLmxpbmVzPWEsdGhpcy5ydWxlc2V0PWJ9dmFyIHBhcnNlcmxpYj17fTsoZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dGhpcy5fbGlzdGVuZXJzPXt9fWZ1bmN0aW9uIGIoYSl7dGhpcy5faW5wdXQ9YS5yZXBsYWNlKC9cblxyPy9nLCJcbiIpLHRoaXMuX2xpbmU9MSx0aGlzLl9jb2w9MSx0aGlzLl9jdXJzb3I9MH1mdW5jdGlvbiBjKGEsYixjKXt0aGlzLmNvbD1jLHRoaXMubGluZT1iLHRoaXMubWVzc2FnZT1hfWZ1bmN0aW9uIGQoYSxiLGMsZCl7dGhpcy5jb2w9Yyx0aGlzLmxpbmU9Yix0aGlzLnRleHQ9YSx0aGlzLnR5cGU9ZH1mdW5jdGlvbiBlKGEsYyl7dGhpcy5fcmVhZGVyPWE/bmV3IGIoYS50b1N0cmluZygpKTpudWxsLHRoaXMuX3Rva2VuPW51bGwsdGhpcy5fdG9rZW5EYXRhPWMsdGhpcy5fbHQ9W10sdGhpcy5fbHRJbmRleD0wLHRoaXMuX2x0SW5kZXhDYWNoZT1bXX1hLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YSxhZGRMaXN0ZW5lcjpmdW5jdGlvbihhLGIpe3RoaXMuX2xpc3RlbmVyc1thXXx8KHRoaXMuX2xpc3RlbmVyc1thXT1bXSksdGhpcy5fbGlzdGVuZXJzW2FdLnB1c2goYil9LGZpcmU6ZnVuY3Rpb24oYSl7dHlwZW9mIGE9PSJzdHJpbmciJiYoYT17dHlwZTphfSksdHlwZW9mIGEudGFyZ2V0IT0idW5kZWZpbmVkIiYmKGEudGFyZ2V0PXRoaXMpO2lmKHR5cGVvZiBhLnR5cGU9PSJ1bmRlZmluZWQiKXRocm93IG5ldyBFcnJvcigiRXZlbnQgb2JqZWN0IG1pc3NpbmcgJ3R5cGUnIHByb3BlcnR5LiIpO2lmKHRoaXMuX2xpc3RlbmVyc1thLnR5cGVdKXt2YXIgYj10aGlzLl9saXN0ZW5lcnNbYS50eXBlXS5jb25jYXQoKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspYltjXS5jYWxsKHRoaXMsYSl9fSxyZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbihhLGIpe2lmKHRoaXMuX2xpc3RlbmVyc1thXSl7dmFyIGM9dGhpcy5fbGlzdGVuZXJzW2FdO2Zvcih2YXIgZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKylpZihjW2RdPT09Yil7Yy5zcGxpY2UoZCwxKTticmVha319fX0sYi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmIsZ2V0Q29sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbH0sZ2V0TGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saW5lfSxlb2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Vyc29yPT10aGlzLl9pbnB1dC5sZW5ndGh9LHBlZWs6ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDtyZXR1cm4gYT10eXBlb2YgYT09InVuZGVmaW5lZCI/MTphLHRoaXMuX2N1cnNvcjx0aGlzLl9pbnB1dC5sZW5ndGgmJihiPXRoaXMuX2lucHV0LmNoYXJBdCh0aGlzLl9jdXJzb3IrYS0xKSksYn0scmVhZDpmdW5jdGlvbigpe3ZhciBhPW51bGw7cmV0dXJuIHRoaXMuX2N1cnNvcjx0aGlzLl9pbnB1dC5sZW5ndGgmJih0aGlzLl9pbnB1dC5jaGFyQXQodGhpcy5fY3Vyc29yKT09IlxuIj8odGhpcy5fbGluZSsrLHRoaXMuX2NvbD0xKTp0aGlzLl9jb2wrKyxhPXRoaXMuX2lucHV0LmNoYXJBdCh0aGlzLl9jdXJzb3IrKykpLGF9LG1hcms6ZnVuY3Rpb24oKXt0aGlzLl9ib29rbWFyaz17Y3Vyc29yOnRoaXMuX2N1cnNvcixsaW5lOnRoaXMuX2xpbmUsY29sOnRoaXMuX2NvbH19LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fYm9va21hcmsmJih0aGlzLl9jdXJzb3I9dGhpcy5fYm9va21hcmsuY3Vyc29yLHRoaXMuX2xpbmU9dGhpcy5fYm9va21hcmsubGluZSx0aGlzLl9jb2w9dGhpcy5fYm9va21hcmsuY29sLGRlbGV0ZSB0aGlzLl9ib29rbWFyayl9LHJlYWRUbzpmdW5jdGlvbihhKXt2YXIgYj0iIixjO3doaWxlKGIubGVuZ3RoPGEubGVuZ3RofHxiLmxhc3RJbmRleE9mKGEpIT1iLmxlbmd0aC1hLmxlbmd0aCl7Yz10aGlzLnJlYWQoKTtpZighYyl0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkICInK2ErJyIgYXQgbGluZSAnK3RoaXMuX2xpbmUrIiwgY29sICIrdGhpcy5fY29sKyIuIik7Yis9Y31yZXR1cm4gYn0scmVhZFdoaWxlOmZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM9dGhpcy5yZWFkKCk7d2hpbGUoYyE9PW51bGwmJmEoYykpYis9YyxjPXRoaXMucmVhZCgpO3JldHVybiBifSxyZWFkTWF0Y2g6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faW5wdXQuc3Vic3RyaW5nKHRoaXMuX2N1cnNvciksYz1udWxsO3JldHVybiB0eXBlb2YgYT09InN0cmluZyI/Yi5pbmRleE9mKGEpPT09MCYmKGM9dGhpcy5yZWFkQ291bnQoYS5sZW5ndGgpKTphIGluc3RhbmNlb2YgUmVnRXhwJiZhLnRlc3QoYikmJihjPXRoaXMucmVhZENvdW50KFJlZ0V4cC5sYXN0TWF0Y2gubGVuZ3RoKSksY30scmVhZENvdW50OmZ1bmN0aW9uKGEpe3ZhciBiPSIiO3doaWxlKGEtLSliKz10aGlzLnJlYWQoKTtyZXR1cm4gYn19LGMucHJvdG90eXBlPW5ldyBFcnJvcixkLmZyb21Ub2tlbj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGQoYS52YWx1ZSxhLnN0YXJ0TGluZSxhLnN0YXJ0Q29sKX0sZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQsdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dH19LGUuY3JlYXRlVG9rZW5EYXRhPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9e30sZD1hLmNvbmNhdChbXSksZT0wLGY9ZC5sZW5ndGgrMTtkLlVOS05PV049LTEsZC51bnNoaWZ0KHtuYW1lOiJFT0YifSk7Zm9yKDtlPGY7ZSsrKWIucHVzaChkW2VdLm5hbWUpLGRbZFtlXS5uYW1lXT1lLGRbZV0udGV4dCYmKGNbZFtlXS50ZXh0XT1lKTtyZXR1cm4gZC5uYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSxkLnR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19LGR9LGUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplLG1hdGNoOmZ1bmN0aW9uKGEsYil7YSBpbnN0YW5jZW9mIEFycmF5fHwoYT1bYV0pO3ZhciBjPXRoaXMuZ2V0KGIpLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGQ8ZSlpZihjPT1hW2QrK10pcmV0dXJuITA7cmV0dXJuIHRoaXMudW5nZXQoKSwhMX0sbXVzdE1hdGNoOmZ1bmN0aW9uKGEsYil7dmFyIGQ7YSBpbnN0YW5jZW9mIEFycmF5fHwoYT1bYV0pO2lmKCF0aGlzLm1hdGNoLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl0aHJvdyBkPXRoaXMuTFQoMSksbmV3IGMoIkV4cGVjdGVkICIrdGhpcy5fdG9rZW5EYXRhW2FbMF1dLm5hbWUrIiBhdCBsaW5lICIrZC5zdGFydExpbmUrIiwgY29sICIrZC5zdGFydENvbCsiLiIsZC5zdGFydExpbmUsZC5zdGFydENvbCl9LGFkdmFuY2U6ZnVuY3Rpb24oYSxiKXt3aGlsZSh0aGlzLkxBKDApIT09MCYmIXRoaXMubWF0Y2goYSxiKSl0aGlzLmdldCgpO3JldHVybiB0aGlzLkxBKDApfSxnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fdG9rZW5EYXRhLGM9dGhpcy5fcmVhZGVyLGQsZT0wLGY9Yi5sZW5ndGgsZz0hMSxoLGk7aWYodGhpcy5fbHQubGVuZ3RoJiZ0aGlzLl9sdEluZGV4Pj0wJiZ0aGlzLl9sdEluZGV4PHRoaXMuX2x0Lmxlbmd0aCl7ZSsrLHRoaXMuX3Rva2VuPXRoaXMuX2x0W3RoaXMuX2x0SW5kZXgrK10saT1iW3RoaXMuX3Rva2VuLnR5cGVdO3doaWxlKGkuY2hhbm5lbCE9PXVuZGVmaW5lZCYmYSE9PWkuY2hhbm5lbCYmdGhpcy5fbHRJbmRleDx0aGlzLl9sdC5sZW5ndGgpdGhpcy5fdG9rZW49dGhpcy5fbHRbdGhpcy5fbHRJbmRleCsrXSxpPWJbdGhpcy5fdG9rZW4udHlwZV0sZSsrO2lmKChpLmNoYW5uZWw9PT11bmRlZmluZWR8fGE9PT1pLmNoYW5uZWwpJiZ0aGlzLl9sdEluZGV4PD10aGlzLl9sdC5sZW5ndGgpcmV0dXJuIHRoaXMuX2x0SW5kZXhDYWNoZS5wdXNoKGUpLHRoaXMuX3Rva2VuLnR5cGV9cmV0dXJuIGg9dGhpcy5fZ2V0VG9rZW4oKSxoLnR5cGU+LTEmJiFiW2gudHlwZV0uaGlkZSYmKGguY2hhbm5lbD1iW2gudHlwZV0uY2hhbm5lbCx0aGlzLl90b2tlbj1oLHRoaXMuX2x0LnB1c2goaCksdGhpcy5fbHRJbmRleENhY2hlLnB1c2godGhpcy5fbHQubGVuZ3RoLXRoaXMuX2x0SW5kZXgrZSksdGhpcy5fbHQubGVuZ3RoPjUmJnRoaXMuX2x0LnNoaWZ0KCksdGhpcy5fbHRJbmRleENhY2hlLmxlbmd0aD41JiZ0aGlzLl9sdEluZGV4Q2FjaGUuc2hpZnQoKSx0aGlzLl9sdEluZGV4PXRoaXMuX2x0Lmxlbmd0aCksaT1iW2gudHlwZV0saSYmKGkuaGlkZXx8aS5jaGFubmVsIT09dW5kZWZpbmVkJiZhIT09aS5jaGFubmVsKT90aGlzLmdldChhKTpoLnR5cGV9LExBOmZ1bmN0aW9uKGEpe3ZhciBiPWEsYztpZihhPjApe2lmKGE+NSl0aHJvdyBuZXcgRXJyb3IoIlRvbyBtdWNoIGxvb2thaGVhZC4iKTt3aGlsZShiKWM9dGhpcy5nZXQoKSxiLS07d2hpbGUoYjxhKXRoaXMudW5nZXQoKSxiKyt9ZWxzZSBpZihhPDApe2lmKCF0aGlzLl9sdFt0aGlzLl9sdEluZGV4K2FdKXRocm93IG5ldyBFcnJvcigiVG9vIG11Y2ggbG9va2JlaGluZC4iKTtjPXRoaXMuX2x0W3RoaXMuX2x0SW5kZXgrYV0udHlwZX1lbHNlIGM9dGhpcy5fdG9rZW4udHlwZTtyZXR1cm4gY30sTFQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuTEEoYSksdGhpcy5fbHRbdGhpcy5fbHRJbmRleCthLTFdfSxwZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTEEoMSl9LHRva2VuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rva2VufSx0b2tlbk5hbWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE8MHx8YT50aGlzLl90b2tlbkRhdGEubGVuZ3RoPyJVTktOT1dOX1RPS0VOIjp0aGlzLl90b2tlbkRhdGFbYV0ubmFtZX0sdG9rZW5UeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl90b2tlbkRhdGFbYV18fC0xfSx1bmdldDpmdW5jdGlvbigpe2lmKCF0aGlzLl9sdEluZGV4Q2FjaGUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVG9vIG11Y2ggbG9va2FoZWFkLiIpO3RoaXMuX2x0SW5kZXgtPXRoaXMuX2x0SW5kZXhDYWNoZS5wb3AoKSx0aGlzLl90b2tlbj10aGlzLl9sdFt0aGlzLl9sdEluZGV4LTFdfX0scGFyc2VybGliLnV0aWw9e1N0cmluZ1JlYWRlcjpiLFN5bnRheEVycm9yOmMsU3ludGF4VW5pdDpkLEV2ZW50VGFyZ2V0OmEsVG9rZW5TdHJlYW1CYXNlOmV9fSkoKSxmdW5jdGlvbigpe2Z1bmN0aW9uIENvbWJpbmF0b3IoYSxiLGMpe1N5bnRheFVuaXQuY2FsbCh0aGlzLGEsYixjLFBhcnNlci5DT01CSU5BVE9SX1RZUEUpLHRoaXMudHlwZT0idW5rbm93biIsL15ccyskLy50ZXN0KGEpP3RoaXMudHlwZT0iZGVzY2VuZGFudCI6YT09Ij4iP3RoaXMudHlwZT0iY2hpbGQiOmE9PSIrIj90aGlzLnR5cGU9ImFkamFjZW50LXNpYmxpbmciOmE9PSJ+IiYmKHRoaXMudHlwZT0ic2libGluZyIpfWZ1bmN0aW9uIE1lZGlhRmVhdHVyZShhLGIpe1N5bnRheFVuaXQuY2FsbCh0aGlzLCIoIithKyhiIT09bnVsbD8iOiIrYjoiIikrIikiLGEuc3RhcnRMaW5lLGEuc3RhcnRDb2wsUGFyc2VyLk1FRElBX0ZFQVRVUkVfVFlQRSksdGhpcy5uYW1lPWEsdGhpcy52YWx1ZT1ifWZ1bmN0aW9uIE1lZGlhUXVlcnkoYSxiLGMsZCxlKXtTeW50YXhVbml0LmNhbGwodGhpcywoYT9hKyIgIjoiIikrKGI/YisiICI6IiIpK2Muam9pbigiIGFuZCAiKSxkLGUsUGFyc2VyLk1FRElBX1FVRVJZX1RZUEUpLHRoaXMubW9kaWZpZXI9YSx0aGlzLm1lZGlhVHlwZT1iLHRoaXMuZmVhdHVyZXM9Y31mdW5jdGlvbiBQYXJzZXIoYSl7RXZlbnRUYXJnZXQuY2FsbCh0aGlzKSx0aGlzLm9wdGlvbnM9YXx8e30sdGhpcy5fdG9rZW5TdHJlYW09bnVsbH1mdW5jdGlvbiBQcm9wZXJ0eU5hbWUoYSxiLGMsZCl7U3ludGF4VW5pdC5jYWxsKHRoaXMsYSxjLGQsUGFyc2VyLlBST1BFUlRZX05BTUVfVFlQRSksdGhpcy5oYWNrPWJ9ZnVuY3Rpb24gUHJvcGVydHlWYWx1ZShhLGIsYyl7U3ludGF4VW5pdC5jYWxsKHRoaXMsYS5qb2luKCIgIiksYixjLFBhcnNlci5QUk9QRVJUWV9WQUxVRV9UWVBFKSx0aGlzLnBhcnRzPWF9ZnVuY3Rpb24gUHJvcGVydHlWYWx1ZUl0ZXJhdG9yKGEpe3RoaXMuX2k9MCx0aGlzLl9wYXJ0cz1hLnBhcnRzLHRoaXMuX21hcmtzPVtdLHRoaXMudmFsdWU9YX1mdW5jdGlvbiBQcm9wZXJ0eVZhbHVlUGFydCh0ZXh0LGxpbmUsY29sKXtTeW50YXhVbml0LmNhbGwodGhpcyx0ZXh0LGxpbmUsY29sLFBhcnNlci5QUk9QRVJUWV9WQUxVRV9QQVJUX1RZUEUpLHRoaXMudHlwZT0idW5rbm93biI7dmFyIHRlbXA7aWYoL14oWytcLV0/W1xkXC5dKykoW2Etel0rKSQvaS50ZXN0KHRleHQpKXt0aGlzLnR5cGU9ImRpbWVuc2lvbiIsdGhpcy52YWx1ZT0rUmVnRXhwLiQxLHRoaXMudW5pdHM9UmVnRXhwLiQyO3N3aXRjaCh0aGlzLnVuaXRzLnRvTG93ZXJDYXNlKCkpe2Nhc2UiZW0iOmNhc2UicmVtIjpjYXNlImV4IjpjYXNlInB4IjpjYXNlImNtIjpjYXNlIm1tIjpjYXNlImluIjpjYXNlInB0IjpjYXNlInBjIjpjYXNlImNoIjp0aGlzLnR5cGU9Imxlbmd0aCI7YnJlYWs7Y2FzZSJkZWciOmNhc2UicmFkIjpjYXNlImdyYWQiOnRoaXMudHlwZT0iYW5nbGUiO2JyZWFrO2Nhc2UibXMiOmNhc2UicyI6dGhpcy50eXBlPSJ0aW1lIjticmVhaztjYXNlImh6IjpjYXNlImtoeiI6dGhpcy50eXBlPSJmcmVxdWVuY3kiO2JyZWFrO2Nhc2UiZHBpIjpjYXNlImRwY20iOnRoaXMudHlwZT0icmVzb2x1dGlvbiJ9fWVsc2UvXihbK1wtXT9bXGRcLl0rKSUkL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJwZXJjZW50YWdlIix0aGlzLnZhbHVlPStSZWdFeHAuJDEpOi9eKFsrXC1dP1tcZFwuXSspJSQvaS50ZXN0KHRleHQpPyh0aGlzLnR5cGU9InBlcmNlbnRhZ2UiLHRoaXMudmFsdWU9K1JlZ0V4cC4kMSk6L14oWytcLV0/XGQrKSQvaS50ZXN0KHRleHQpPyh0aGlzLnR5cGU9ImludGVnZXIiLHRoaXMudmFsdWU9K1JlZ0V4cC4kMSk6L14oWytcLV0/W1xkXC5dKykkL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJudW1iZXIiLHRoaXMudmFsdWU9K1JlZ0V4cC4kMSk6L14jKFthLWYwLTldezMsNn0pL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJjb2xvciIsdGVtcD1SZWdFeHAuJDEsdGVtcC5sZW5ndGg9PTM/KHRoaXMucmVkPXBhcnNlSW50KHRlbXAuY2hhckF0KDApK3RlbXAuY2hhckF0KDApLDE2KSx0aGlzLmdyZWVuPXBhcnNlSW50KHRlbXAuY2hhckF0KDEpK3RlbXAuY2hhckF0KDEpLDE2KSx0aGlzLmJsdWU9cGFyc2VJbnQodGVtcC5jaGFyQXQoMikrdGVtcC5jaGFyQXQoMiksMTYpKToodGhpcy5yZWQ9cGFyc2VJbnQodGVtcC5zdWJzdHJpbmcoMCwyKSwxNiksdGhpcy5ncmVlbj1wYXJzZUludCh0ZW1wLnN1YnN0cmluZygyLDQpLDE2KSx0aGlzLmJsdWU9cGFyc2VJbnQodGVtcC5zdWJzdHJpbmcoNCw2KSwxNikpKTovXnJnYlwoXHMqKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccypcKS9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0iY29sb3IiLHRoaXMucmVkPStSZWdFeHAuJDEsdGhpcy5ncmVlbj0rUmVnRXhwLiQyLHRoaXMuYmx1ZT0rUmVnRXhwLiQzKTovXnJnYlwoXHMqKFxkKyklXHMqLFxzKihcZCspJVxzKixccyooXGQrKSVccypcKS9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0iY29sb3IiLHRoaXMucmVkPStSZWdFeHAuJDEqMjU1LzEwMCx0aGlzLmdyZWVuPStSZWdFeHAuJDIqMjU1LzEwMCx0aGlzLmJsdWU9K1JlZ0V4cC4kMyoyNTUvMTAwKTovXnJnYmFcKFxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihbXGRcLl0rKVxzKlwpL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJjb2xvciIsdGhpcy5yZWQ9K1JlZ0V4cC4kMSx0aGlzLmdyZWVuPStSZWdFeHAuJDIsdGhpcy5ibHVlPStSZWdFeHAuJDMsdGhpcy5hbHBoYT0rUmVnRXhwLiQ0KTovXnJnYmFcKFxzKihcZCspJVxzKixccyooXGQrKSVccyosXHMqKFxkKyklXHMqLFxzKihbXGRcLl0rKVxzKlwpL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJjb2xvciIsdGhpcy5yZWQ9K1JlZ0V4cC4kMSoyNTUvMTAwLHRoaXMuZ3JlZW49K1JlZ0V4cC4kMioyNTUvMTAwLHRoaXMuYmx1ZT0rUmVnRXhwLiQzKjI1NS8xMDAsdGhpcy5hbHBoYT0rUmVnRXhwLiQ0KTovXmhzbFwoXHMqKFxkKylccyosXHMqKFxkKyklXHMqLFxzKihcZCspJVxzKlwpL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJjb2xvciIsdGhpcy5odWU9K1JlZ0V4cC4kMSx0aGlzLnNhdHVyYXRpb249K1JlZ0V4cC4kMi8xMDAsdGhpcy5saWdodG5lc3M9K1JlZ0V4cC4kMy8xMDApOi9eaHNsYVwoXHMqKFxkKylccyosXHMqKFxkKyklXHMqLFxzKihcZCspJVxzKixccyooW1xkXC5dKylccypcKS9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0iY29sb3IiLHRoaXMuaHVlPStSZWdFeHAuJDEsdGhpcy5zYXR1cmF0aW9uPStSZWdFeHAuJDIvMTAwLHRoaXMubGlnaHRuZXNzPStSZWdFeHAuJDMvMTAwLHRoaXMuYWxwaGE9K1JlZ0V4cC4kNCk6L151cmxcKFsiJ10/KFteXCkiJ10rKVsiJ10/XCkvaS50ZXN0KHRleHQpPyh0aGlzLnR5cGU9InVyaSIsdGhpcy51cmk9UmVnRXhwLiQxKTovXihbXlwoXSspXCgvaS50ZXN0KHRleHQpPyh0aGlzLnR5cGU9ImZ1bmN0aW9uIix0aGlzLm5hbWU9UmVnRXhwLiQxLHRoaXMudmFsdWU9dGV4dCk6L15bIiddW14iJ10qWyInXS8udGVzdCh0ZXh0KT8odGhpcy50eXBlPSJzdHJpbmciLHRoaXMudmFsdWU9ZXZhbCh0ZXh0KSk6Q29sb3JzW3RleHQudG9Mb3dlckNhc2UoKV0/KHRoaXMudHlwZT0iY29sb3IiLHRlbXA9Q29sb3JzW3RleHQudG9Mb3dlckNhc2UoKV0uc3Vic3RyaW5nKDEpLHRoaXMucmVkPXBhcnNlSW50KHRlbXAuc3Vic3RyaW5nKDAsMiksMTYpLHRoaXMuZ3JlZW49cGFyc2VJbnQodGVtcC5zdWJzdHJpbmcoMiw0KSwxNiksdGhpcy5ibHVlPXBhcnNlSW50KHRlbXAuc3Vic3RyaW5nKDQsNiksMTYpKTovXltcLFwvXSQvLnRlc3QodGV4dCk/KHRoaXMudHlwZT0ib3BlcmF0b3IiLHRoaXMudmFsdWU9dGV4dCk6L15bYS16XC1cdTAwODAtXHVGRkZGXVthLXowLTlcLVx1MDA4MC1cdUZGRkZdKiQvaS50ZXN0KHRleHQpJiYodGhpcy50eXBlPSJpZGVudGlmaWVyIix0aGlzLnZhbHVlPXRleHQpfWZ1bmN0aW9uIFNlbGVjdG9yKGEsYixjKXtTeW50YXhVbml0LmNhbGwodGhpcyxhLmpvaW4oIiAiKSxiLGMsUGFyc2VyLlNFTEVDVE9SX1RZUEUpLHRoaXMucGFydHM9YSx0aGlzLnNwZWNpZmljaXR5PVNwZWNpZmljaXR5LmNhbGN1bGF0ZSh0aGlzKX1mdW5jdGlvbiBTZWxlY3RvclBhcnQoYSxiLGMsZCxlKXtTeW50YXhVbml0LmNhbGwodGhpcyxjLGQsZSxQYXJzZXIuU0VMRUNUT1JfUEFSVF9UWVBFKSx0aGlzLmVsZW1lbnROYW1lPWEsdGhpcy5tb2RpZmllcnM9Yn1mdW5jdGlvbiBTZWxlY3RvclN1YlBhcnQoYSxiLGMsZCl7U3ludGF4VW5pdC5jYWxsKHRoaXMsYSxjLGQsUGFyc2VyLlNFTEVDVE9SX1NVQl9QQVJUX1RZUEUpLHRoaXMudHlwZT1iLHRoaXMuYXJncz1bXX1mdW5jdGlvbiBTcGVjaWZpY2l0eShhLGIsYyxkKXt0aGlzLmE9YSx0aGlzLmI9Yix0aGlzLmM9Yyx0aGlzLmQ9ZH1mdW5jdGlvbiBpc0hleERpZ2l0KGEpe3JldHVybiBhIT09bnVsbCYmaC50ZXN0KGEpfWZ1bmN0aW9uIGlzRGlnaXQoYSl7cmV0dXJuIGEhPT1udWxsJiYvXGQvLnRlc3QoYSl9ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGEpe3JldHVybiBhIT09bnVsbCYmL1xzLy50ZXN0KGEpfWZ1bmN0aW9uIGlzTmV3TGluZShhKXtyZXR1cm4gYSE9PW51bGwmJm5sLnRlc3QoYSl9ZnVuY3Rpb24gaXNOYW1lU3RhcnQoYSl7cmV0dXJuIGEhPT1udWxsJiYvW2Etel9cdTAwODAtXHVGRkZGXFxdL2kudGVzdChhKX1mdW5jdGlvbiBpc05hbWVDaGFyKGEpe3JldHVybiBhIT09bnVsbCYmKGlzTmFtZVN0YXJ0KGEpfHwvWzAtOVwtXFxdLy50ZXN0KGEpKX1mdW5jdGlvbiBpc0lkZW50U3RhcnQoYSl7cmV0dXJuIGEhPT1udWxsJiYoaXNOYW1lU3RhcnQoYSl8fC9cLVxcLy50ZXN0KGEpKX1mdW5jdGlvbiBtaXgoYSxiKXtmb3IodmFyIGMgaW4gYiliLmhhc093blByb3BlcnR5KGMpJiYoYVtjXT1iW2NdKTtyZXR1cm4gYX1mdW5jdGlvbiBUb2tlblN0cmVhbShhKXtUb2tlblN0cmVhbUJhc2UuY2FsbCh0aGlzLGEsVG9rZW5zKX1mdW5jdGlvbiBWYWxpZGF0aW9uRXJyb3IoYSxiLGMpe3RoaXMuY29sPWMsdGhpcy5saW5lPWIsdGhpcy5tZXNzYWdlPWF9dmFyIEV2ZW50VGFyZ2V0PXBhcnNlcmxpYi51dGlsLkV2ZW50VGFyZ2V0LFRva2VuU3RyZWFtQmFzZT1wYXJzZXJsaWIudXRpbC5Ub2tlblN0cmVhbUJhc2UsU3RyaW5nUmVhZGVyPXBhcnNlcmxpYi51dGlsLlN0cmluZ1JlYWRlcixTeW50YXhFcnJvcj1wYXJzZXJsaWIudXRpbC5TeW50YXhFcnJvcixTeW50YXhVbml0PXBhcnNlcmxpYi51dGlsLlN5bnRheFVuaXQsQ29sb3JzPXthbGljZWJsdWU6IiNmMGY4ZmYiLGFudGlxdWV3aGl0ZToiI2ZhZWJkNyIsYXF1YToiIzAwZmZmZiIsYXF1YW1hcmluZToiIzdmZmZkNCIsYXp1cmU6IiNmMGZmZmYiLGJlaWdlOiIjZjVmNWRjIixiaXNxdWU6IiNmZmU0YzQiLGJsYWNrOiIjMDAwMDAwIixibGFuY2hlZGFsbW9uZDoiI2ZmZWJjZCIsYmx1ZToiIzAwMDBmZiIsYmx1ZXZpb2xldDoiIzhhMmJlMiIsYnJvd246IiNhNTJhMmEiLGJ1cmx5d29vZDoiI2RlYjg4NyIsY2FkZXRibHVlOiIjNWY5ZWEwIixjaGFydHJldXNlOiIjN2ZmZjAwIixjaG9jb2xhdGU6IiNkMjY5MWUiLGNvcmFsOiIjZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiIzY0OTVlZCIsY29ybnNpbGs6IiNmZmY4ZGMiLGNyaW1zb246IiNkYzE0M2MiLGN5YW46IiMwMGZmZmYiLGRhcmtibHVlOiIjMDAwMDhiIixkYXJrY3lhbjoiIzAwOGI4YiIsZGFya2dvbGRlbnJvZDoiI2I4ODYwYiIsZGFya2dyYXk6IiNhOWE5YTkiLGRhcmtncmVlbjoiIzAwNjQwMCIsZGFya2toYWtpOiIjYmRiNzZiIixkYXJrbWFnZW50YToiIzhiMDA4YiIsZGFya29saXZlZ3JlZW46IiM1NTZiMmYiLGRhcmtvcmFuZ2U6IiNmZjhjMDAiLGRhcmtvcmNoaWQ6IiM5OTMyY2MiLGRhcmtyZWQ6IiM4YjAwMDAiLGRhcmtzYWxtb246IiNlOTk2N2EiLGRhcmtzZWFncmVlbjoiIzhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiIzQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiIzJmNGY0ZiIsZGFya3R1cnF1b2lzZToiIzAwY2VkMSIsZGFya3Zpb2xldDoiIzk0MDBkMyIsZGVlcHBpbms6IiNmZjE0OTMiLGRlZXBza3libHVlOiIjMDBiZmZmIixkaW1ncmF5OiIjNjk2OTY5Iixkb2RnZXJibHVlOiIjMWU5MGZmIixmaXJlYnJpY2s6IiNiMjIyMjIiLGZsb3JhbHdoaXRlOiIjZmZmYWYwIixmb3Jlc3RncmVlbjoiIzIyOGIyMiIsZnVjaHNpYToiI2ZmMDBmZiIsZ2FpbnNib3JvOiIjZGNkY2RjIixnaG9zdHdoaXRlOiIjZjhmOGZmIixnb2xkOiIjZmZkNzAwIixnb2xkZW5yb2Q6IiNkYWE1MjAiLGdyYXk6IiM4MDgwODAiLGdyZWVuOiIjMDA4MDAwIixncmVlbnllbGxvdzoiI2FkZmYyZiIsaG9uZXlkZXc6IiNmMGZmZjAiLGhvdHBpbms6IiNmZjY5YjQiLGluZGlhbnJlZDoiI2NkNWM1YyIsaW5kaWdvOiIjNGIwMDgyIixpdm9yeToiI2ZmZmZmMCIsa2hha2k6IiNmMGU2OGMiLGxhdmVuZGVyOiIjZTZlNmZhIixsYXZlbmRlcmJsdXNoOiIjZmZmMGY1IixsYXduZ3JlZW46IiM3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoiI2ZmZmFjZCIsbGlnaHRibHVlOiIjYWRkOGU2IixsaWdodGNvcmFsOiIjZjA4MDgwIixsaWdodGN5YW46IiNlMGZmZmYiLGxpZ2h0Z29sZGVucm9keWVsbG93OiIjZmFmYWQyIixsaWdodGdyYXk6IiNkM2QzZDMiLGxpZ2h0Z3JlZW46IiM5MGVlOTAiLGxpZ2h0cGluazoiI2ZmYjZjMSIsbGlnaHRzYWxtb246IiNmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IiMyMGIyYWEiLGxpZ2h0c2t5Ymx1ZToiIzg3Y2VmYSIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c3RlZWxibHVlOiIjYjBjNGRlIixsaWdodHllbGxvdzoiI2ZmZmZlMCIsbGltZToiIzAwZmYwMCIsbGltZWdyZWVuOiIjMzJjZDMyIixsaW5lbjoiI2ZhZjBlNiIsbWFnZW50YToiI2ZmMDBmZiIsbWFyb29uOiIjODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiIjNjZjZGFhIixtZWRpdW1ibHVlOiIjMDAwMGNkIixtZWRpdW1vcmNoaWQ6IiNiYTU1ZDMiLG1lZGl1bXB1cnBsZToiIzkzNzBkOCIsbWVkaXVtc2VhZ3JlZW46IiMzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiIzdiNjhlZSIsbWVkaXVtc3ByaW5nZ3JlZW46IiMwMGZhOWEiLG1lZGl1bXR1cnF1b2lzZToiIzQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiIjYzcxNTg1IixtaWRuaWdodGJsdWU6IiMxOTE5NzAiLG1pbnRjcmVhbToiI2Y1ZmZmYSIsbWlzdHlyb3NlOiIjZmZlNGUxIixtb2NjYXNpbjoiI2ZmZTRiNSIsbmF2YWpvd2hpdGU6IiNmZmRlYWQiLG5hdnk6IiMwMDAwODAiLG9sZGxhY2U6IiNmZGY1ZTYiLG9saXZlOiIjODA4MDAwIixvbGl2ZWRyYWI6IiM2YjhlMjMiLG9yYW5nZToiI2ZmYTUwMCIsb3JhbmdlcmVkOiIjZmY0NTAwIixvcmNoaWQ6IiNkYTcwZDYiLHBhbGVnb2xkZW5yb2Q6IiNlZWU4YWEiLHBhbGVncmVlbjoiIzk4ZmI5OCIscGFsZXR1cnF1b2lzZToiI2FmZWVlZSIscGFsZXZpb2xldHJlZDoiI2Q4NzA5MyIscGFwYXlhd2hpcDoiI2ZmZWZkNSIscGVhY2hwdWZmOiIjZmZkYWI5IixwZXJ1OiIjY2Q4NTNmIixwaW5rOiIjZmZjMGNiIixwbHVtOiIjZGRhMGRkIixwb3dkZXJibHVlOiIjYjBlMGU2IixwdXJwbGU6IiM4MDAwODAiLHJlZDoiI2ZmMDAwMCIscm9zeWJyb3duOiIjYmM4ZjhmIixyb3lhbGJsdWU6IiM0MTY5ZTEiLHNhZGRsZWJyb3duOiIjOGI0NTEzIixzYWxtb246IiNmYTgwNzIiLHNhbmR5YnJvd246IiNmNGE0NjAiLHNlYWdyZWVuOiIjMmU4YjU3IixzZWFzaGVsbDoiI2ZmZjVlZSIsc2llbm5hOiIjYTA1MjJkIixzaWx2ZXI6IiNjMGMwYzAiLHNreWJsdWU6IiM4N2NlZWIiLHNsYXRlYmx1ZToiIzZhNWFjZCIsc2xhdGVncmF5OiIjNzA4MDkwIixzbm93OiIjZmZmYWZhIixzcHJpbmdncmVlbjoiIzAwZmY3ZiIsc3RlZWxibHVlOiIjNDY4MmI0Iix0YW46IiNkMmI0OGMiLHRlYWw6IiMwMDgwODAiLHRoaXN0bGU6IiNkOGJmZDgiLHRvbWF0bzoiI2ZmNjM0NyIsdHVycXVvaXNlOiIjNDBlMGQwIix2aW9sZXQ6IiNlZTgyZWUiLHdoZWF0OiIjZjVkZWIzIix3aGl0ZToiI2ZmZmZmZiIsd2hpdGVzbW9rZToiI2Y1ZjVmNSIseWVsbG93OiIjZmZmZjAwIix5ZWxsb3dncmVlbjoiIzlhY2QzMiJ9O0NvbWJpbmF0b3IucHJvdG90eXBlPW5ldyBTeW50YXhVbml0LENvbWJpbmF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPUNvbWJpbmF0b3IsTWVkaWFGZWF0dXJlLnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxNZWRpYUZlYXR1cmUucHJvdG90eXBlLmNvbnN0cnVjdG9yPU1lZGlhRmVhdHVyZSxNZWRpYVF1ZXJ5LnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxNZWRpYVF1ZXJ5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1NZWRpYVF1ZXJ5LFBhcnNlci5ERUZBVUxUX1RZUEU9MCxQYXJzZXIuQ09NQklOQVRPUl9UWVBFPTEsUGFyc2VyLk1FRElBX0ZFQVRVUkVfVFlQRT0yLFBhcnNlci5NRURJQV9RVUVSWV9UWVBFPTMsUGFyc2VyLlBST1BFUlRZX05BTUVfVFlQRT00LFBhcnNlci5QUk9QRVJUWV9WQUxVRV9UWVBFPTUsUGFyc2VyLlBST1BFUlRZX1ZBTFVFX1BBUlRfVFlQRT02LFBhcnNlci5TRUxFQ1RPUl9UWVBFPTcsUGFyc2VyLlNFTEVDVE9SX1BBUlRfVFlQRT04LFBhcnNlci5TRUxFQ1RPUl9TVUJfUEFSVF9UWVBFPTksUGFyc2VyLnByb3RvdHlwZT1mdW5jdGlvbigpe3ZhciBhPW5ldyBFdmVudFRhcmdldCxiLGM9e2NvbnN0cnVjdG9yOlBhcnNlcixERUZBVUxUX1RZUEU6MCxDT01CSU5BVE9SX1RZUEU6MSxNRURJQV9GRUFUVVJFX1RZUEU6MixNRURJQV9RVUVSWV9UWVBFOjMsUFJPUEVSVFlfTkFNRV9UWVBFOjQsUFJPUEVSVFlfVkFMVUVfVFlQRTo1LFBST1BFUlRZX1ZBTFVFX1BBUlRfVFlQRTo2LFNFTEVDVE9SX1RZUEU6NyxTRUxFQ1RPUl9QQVJUX1RZUEU6OCxTRUxFQ1RPUl9TVUJfUEFSVF9UWVBFOjksX3N0eWxlc2hlZXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPW51bGwsYyxkLGU7dGhpcy5maXJlKCJzdGFydHN0eWxlc2hlZXQiKSx0aGlzLl9jaGFyc2V0KCksdGhpcy5fc2tpcENydWZ0KCk7d2hpbGUoYS5wZWVrKCk9PVRva2Vucy5JTVBPUlRfU1lNKXRoaXMuX2ltcG9ydCgpLHRoaXMuX3NraXBDcnVmdCgpO3doaWxlKGEucGVlaygpPT1Ub2tlbnMuTkFNRVNQQUNFX1NZTSl0aGlzLl9uYW1lc3BhY2UoKSx0aGlzLl9za2lwQ3J1ZnQoKTtlPWEucGVlaygpO3doaWxlKGU+VG9rZW5zLkVPRil7dHJ5e3N3aXRjaChlKXtjYXNlIFRva2Vucy5NRURJQV9TWU06dGhpcy5fbWVkaWEoKSx0aGlzLl9za2lwQ3J1ZnQoKTticmVhaztjYXNlIFRva2Vucy5QQUdFX1NZTTp0aGlzLl9wYWdlKCksdGhpcy5fc2tpcENydWZ0KCk7YnJlYWs7Y2FzZSBUb2tlbnMuRk9OVF9GQUNFX1NZTTp0aGlzLl9mb250X2ZhY2UoKSx0aGlzLl9za2lwQ3J1ZnQoKTticmVhaztjYXNlIFRva2Vucy5LRVlGUkFNRVNfU1lNOnRoaXMuX2tleWZyYW1lcygpLHRoaXMuX3NraXBDcnVmdCgpO2JyZWFrO2Nhc2UgVG9rZW5zLlVOS05PV05fU1lNOmEuZ2V0KCk7aWYoISF0aGlzLm9wdGlvbnMuc3RyaWN0KXRocm93IG5ldyBTeW50YXhFcnJvcigiVW5rbm93biBAIHJ1bGUuIixhLkxUKDApLnN0YXJ0TGluZSxhLkxUKDApLnN0YXJ0Q29sKTt0aGlzLmZpcmUoe3R5cGU6ImVycm9yIixlcnJvcjpudWxsLG1lc3NhZ2U6IlVua25vd24gQCBydWxlOiAiK2EuTFQoMCkudmFsdWUrIi4iLGxpbmU6YS5MVCgwKS5zdGFydExpbmUsY29sOmEuTFQoMCkuc3RhcnRDb2x9KSxjPTA7d2hpbGUoYS5hZHZhbmNlKFtUb2tlbnMuTEJSQUNFLFRva2Vucy5SQlJBQ0VdKT09VG9rZW5zLkxCUkFDRSljKys7d2hpbGUoYylhLmFkdmFuY2UoW1Rva2Vucy5SQlJBQ0VdKSxjLS07YnJlYWs7Y2FzZSBUb2tlbnMuUzp0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO2JyZWFrO2RlZmF1bHQ6aWYoIXRoaXMuX3J1bGVzZXQoKSlzd2l0Y2goZSl7Y2FzZSBUb2tlbnMuQ0hBUlNFVF9TWU06dGhyb3cgZD1hLkxUKDEpLHRoaXMuX2NoYXJzZXQoITEpLG5ldyBTeW50YXhFcnJvcigiQGNoYXJzZXQgbm90IGFsbG93ZWQgaGVyZS4iLGQuc3RhcnRMaW5lLGQuc3RhcnRDb2wpO2Nhc2UgVG9rZW5zLklNUE9SVF9TWU06dGhyb3cgZD1hLkxUKDEpLHRoaXMuX2ltcG9ydCghMSksbmV3IFN5bnRheEVycm9yKCJAaW1wb3J0IG5vdCBhbGxvd2VkIGhlcmUuIixkLnN0YXJ0TGluZSxkLnN0YXJ0Q29sKTtjYXNlIFRva2Vucy5OQU1FU1BBQ0VfU1lNOnRocm93IGQ9YS5MVCgxKSx0aGlzLl9uYW1lc3BhY2UoITEpLG5ldyBTeW50YXhFcnJvcigiQG5hbWVzcGFjZSBub3QgYWxsb3dlZCBoZXJlLiIsZC5zdGFydExpbmUsZC5zdGFydENvbCk7ZGVmYXVsdDphLmdldCgpLHRoaXMuX3VuZXhwZWN0ZWRUb2tlbihhLnRva2VuKCkpfX19Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2YgU3ludGF4RXJyb3ImJiF0aGlzLm9wdGlvbnMuc3RyaWN0KSl0aHJvdyBmO3RoaXMuZmlyZSh7dHlwZToiZXJyb3IiLGVycm9yOmYsbWVzc2FnZTpmLm1lc3NhZ2UsbGluZTpmLmxpbmUsY29sOmYuY29sfSl9ZT1hLnBlZWsoKX1lIT1Ub2tlbnMuRU9GJiZ0aGlzLl91bmV4cGVjdGVkVG9rZW4oYS50b2tlbigpKSx0aGlzLmZpcmUoImVuZHN0eWxlc2hlZXQiKX0sX2NoYXJzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fdG9rZW5TdHJlYW0sYyxkLGUsZjtiLm1hdGNoKFRva2Vucy5DSEFSU0VUX1NZTSkmJihlPWIudG9rZW4oKS5zdGFydExpbmUsZj1iLnRva2VuKCkuc3RhcnRDb2wsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxiLm11c3RNYXRjaChUb2tlbnMuU1RSSU5HKSxkPWIudG9rZW4oKSxjPWQudmFsdWUsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxiLm11c3RNYXRjaChUb2tlbnMuU0VNSUNPTE9OKSxhIT09ITEmJnRoaXMuZmlyZSh7dHlwZToiY2hhcnNldCIsY2hhcnNldDpjLGxpbmU6ZSxjb2w6Zn0pKX0sX2ltcG9ydDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl90b2tlblN0cmVhbSxjLGQsZSxmPVtdO2IubXVzdE1hdGNoKFRva2Vucy5JTVBPUlRfU1lNKSxlPWIudG9rZW4oKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGIubXVzdE1hdGNoKFtUb2tlbnMuU1RSSU5HLFRva2Vucy5VUkldKSxkPWIudG9rZW4oKS52YWx1ZS5yZXBsYWNlKC8oPzp1cmxcKCk/WyInXShbXiInXSspWyInXVwpPy8sIiQxIiksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxmPXRoaXMuX21lZGlhX3F1ZXJ5X2xpc3QoKSxiLm11c3RNYXRjaChUb2tlbnMuU0VNSUNPTE9OKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGEhPT0hMSYmdGhpcy5maXJlKHt0eXBlOiJpbXBvcnQiLHVyaTpkLG1lZGlhOmYsbGluZTplLnN0YXJ0TGluZSxjb2w6ZS5zdGFydENvbH0pfSxfbmFtZXNwYWNlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX3Rva2VuU3RyZWFtLGMsZCxlLGY7Yi5tdXN0TWF0Y2goVG9rZW5zLk5BTUVTUEFDRV9TWU0pLGM9Yi50b2tlbigpLnN0YXJ0TGluZSxkPWIudG9rZW4oKS5zdGFydENvbCx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGIubWF0Y2goVG9rZW5zLklERU5UKSYmKGU9Yi50b2tlbigpLnZhbHVlLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCkpLGIubXVzdE1hdGNoKFtUb2tlbnMuU1RSSU5HLFRva2Vucy5VUkldKSxmPWIudG9rZW4oKS52YWx1ZS5yZXBsYWNlKC8oPzp1cmxcKCk/WyInXShbXiInXSspWyInXVwpPy8sIiQxIiksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxiLm11c3RNYXRjaChUb2tlbnMuU0VNSUNPTE9OKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGEhPT0hMSYmdGhpcy5maXJlKHt0eXBlOiJuYW1lc3BhY2UiLHByZWZpeDplLHVyaTpmLGxpbmU6Yyxjb2w6ZH0pfSxfbWVkaWE6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiLGMsZDthLm11c3RNYXRjaChUb2tlbnMuTUVESUFfU1lNKSxiPWEudG9rZW4oKS5zdGFydExpbmUsYz1hLnRva2VuKCkuc3RhcnRDb2wsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxkPXRoaXMuX21lZGlhX3F1ZXJ5X2xpc3QoKSxhLm11c3RNYXRjaChUb2tlbnMuTEJSQUNFKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLHRoaXMuZmlyZSh7dHlwZToic3RhcnRtZWRpYSIsbWVkaWE6ZCxsaW5lOmIsY29sOmN9KTtmb3IoOzspaWYoYS5wZWVrKCk9PVRva2Vucy5QQUdFX1NZTSl0aGlzLl9wYWdlKCk7ZWxzZSBpZighdGhpcy5fcnVsZXNldCgpKWJyZWFrO2EubXVzdE1hdGNoKFRva2Vucy5SQlJBQ0UpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdGhpcy5maXJlKHt0eXBlOiJlbmRtZWRpYSIsbWVkaWE6ZCxsaW5lOmIsY29sOmN9KX0sX21lZGlhX3F1ZXJ5X2xpc3Q6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPVtdO3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCksKGEucGVlaygpPT1Ub2tlbnMuSURFTlR8fGEucGVlaygpPT1Ub2tlbnMuTFBBUkVOKSYmYi5wdXNoKHRoaXMuX21lZGlhX3F1ZXJ5KCkpO3doaWxlKGEubWF0Y2goVG9rZW5zLkNPTU1BKSl0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGIucHVzaCh0aGlzLl9tZWRpYV9xdWVyeSgpKTtyZXR1cm4gYn0sX21lZGlhX3F1ZXJ5OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1udWxsLGM9bnVsbCxkPW51bGwsZT1bXTthLm1hdGNoKFRva2Vucy5JREVOVCkmJihjPWEudG9rZW4oKS52YWx1ZS50b0xvd2VyQ2FzZSgpLGMhPSJvbmx5IiYmYyE9Im5vdCI/KGEudW5nZXQoKSxjPW51bGwpOmQ9YS50b2tlbigpKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGEucGVlaygpPT1Ub2tlbnMuSURFTlQ/KGI9dGhpcy5fbWVkaWFfdHlwZSgpLGQ9PT1udWxsJiYoZD1hLnRva2VuKCkpKTphLnBlZWsoKT09VG9rZW5zLkxQQVJFTiYmKGQ9PT1udWxsJiYoZD1hLkxUKDEpKSxlLnB1c2godGhpcy5fbWVkaWFfZXhwcmVzc2lvbigpKSk7aWYoYj09PW51bGwmJmUubGVuZ3RoPT09MClyZXR1cm4gbnVsbDt0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3doaWxlKGEubWF0Y2goVG9rZW5zLklERU5UKSlhLnRva2VuKCkudmFsdWUudG9Mb3dlckNhc2UoKSE9ImFuZCImJnRoaXMuX3VuZXhwZWN0ZWRUb2tlbihhLnRva2VuKCkpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksZS5wdXNoKHRoaXMuX21lZGlhX2V4cHJlc3Npb24oKSk7cmV0dXJuIG5ldyBNZWRpYVF1ZXJ5KGMsYixlLGQuc3RhcnRMaW5lLGQuc3RhcnRDb2wpfSxfbWVkaWFfdHlwZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZWRpYV9mZWF0dXJlKCl9LF9tZWRpYV9leHByZXNzaW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1udWxsLGMsZD1udWxsO3JldHVybiBhLm11c3RNYXRjaChUb2tlbnMuTFBBUkVOKSxiPXRoaXMuX21lZGlhX2ZlYXR1cmUoKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGEubWF0Y2goVG9rZW5zLkNPTE9OKSYmKHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksYz1hLkxUKDEpLGQ9dGhpcy5fZXhwcmVzc2lvbigpKSxhLm11c3RNYXRjaChUb2tlbnMuUlBBUkVOKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLG5ldyBNZWRpYUZlYXR1cmUoYixkP25ldyBTeW50YXhVbml0KGQsYy5zdGFydExpbmUsYy5zdGFydENvbCk6bnVsbCl9LF9tZWRpYV9mZWF0dXJlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW07cmV0dXJuIGEubXVzdE1hdGNoKFRva2Vucy5JREVOVCksU3ludGF4VW5pdC5mcm9tVG9rZW4oYS50b2tlbigpKX0sX3BhZ2U6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiLGMsZD1udWxsLGU9bnVsbDthLm11c3RNYXRjaChUb2tlbnMuUEFHRV9TWU0pLGI9YS50b2tlbigpLnN0YXJ0TGluZSxjPWEudG9rZW4oKS5zdGFydENvbCx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGEubWF0Y2goVG9rZW5zLklERU5UKSYmKGQ9YS50b2tlbigpLnZhbHVlLGQudG9Mb3dlckNhc2UoKT09PSJhdXRvIiYmdGhpcy5fdW5leHBlY3RlZFRva2VuKGEudG9rZW4oKSkpLGEucGVlaygpPT1Ub2tlbnMuQ09MT04mJihlPXRoaXMuX3BzZXVkb19wYWdlKCkpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdGhpcy5maXJlKHt0eXBlOiJzdGFydHBhZ2UiLGlkOmQscHNldWRvOmUsbGluZTpiLGNvbDpjfSksdGhpcy5fcmVhZERlY2xhcmF0aW9ucyghMCwhMCksdGhpcy5maXJlKHt0eXBlOiJlbmRwYWdlIixpZDpkLHBzZXVkbzplLGxpbmU6Yixjb2w6Y30pfSxfbWFyZ2luOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYixjLGQ9dGhpcy5fbWFyZ2luX3N5bSgpO3JldHVybiBkPyhiPWEudG9rZW4oKS5zdGFydExpbmUsYz1hLnRva2VuKCkuc3RhcnRDb2wsdGhpcy5maXJlKHt0eXBlOiJzdGFydHBhZ2VtYXJnaW4iLG1hcmdpbjpkLGxpbmU6Yixjb2w6Y30pLHRoaXMuX3JlYWREZWNsYXJhdGlvbnMoITApLHRoaXMuZmlyZSh7dHlwZToiZW5kcGFnZW1hcmdpbiIsbWFyZ2luOmQsbGluZTpiLGNvbDpjfSksITApOiExfSxfbWFyZ2luX3N5bTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtO3JldHVybiBhLm1hdGNoKFtUb2tlbnMuVE9QTEVGVENPUk5FUl9TWU0sVG9rZW5zLlRPUExFRlRfU1lNLFRva2Vucy5UT1BDRU5URVJfU1lNLFRva2Vucy5UT1BSSUdIVF9TWU0sVG9rZW5zLlRPUFJJR0hUQ09STkVSX1NZTSxUb2tlbnMuQk9UVE9NTEVGVENPUk5FUl9TWU0sVG9rZW5zLkJPVFRPTUxFRlRfU1lNLFRva2Vucy5CT1RUT01DRU5URVJfU1lNLFRva2Vucy5CT1RUT01SSUdIVF9TWU0sVG9rZW5zLkJPVFRPTVJJR0hUQ09STkVSX1NZTSxUb2tlbnMuTEVGVFRPUF9TWU0sVG9rZW5zLkxFRlRNSURETEVfU1lNLFRva2Vucy5MRUZUQk9UVE9NX1NZTSxUb2tlbnMuUklHSFRUT1BfU1lNLFRva2Vucy5SSUdIVE1JRERMRV9TWU0sVG9rZW5zLlJJR0hUQk9UVE9NX1NZTV0pP1N5bnRheFVuaXQuZnJvbVRva2VuKGEudG9rZW4oKSk6bnVsbH0sX3BzZXVkb19wYWdlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW07cmV0dXJuIGEubXVzdE1hdGNoKFRva2Vucy5DT0xPTiksYS5tdXN0TWF0Y2goVG9rZW5zLklERU5UKSxhLnRva2VuKCkudmFsdWV9LF9mb250X2ZhY2U6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiLGM7YS5tdXN0TWF0Y2goVG9rZW5zLkZPTlRfRkFDRV9TWU0pLGI9YS50b2tlbigpLnN0YXJ0TGluZSxjPWEudG9rZW4oKS5zdGFydENvbCx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLHRoaXMuZmlyZSh7dHlwZToic3RhcnRmb250ZmFjZSIsbGluZTpiLGNvbDpjfSksdGhpcy5fcmVhZERlY2xhcmF0aW9ucyghMCksdGhpcy5maXJlKHt0eXBlOiJlbmRmb250ZmFjZSIsbGluZTpiLGNvbDpjfSl9LF9vcGVyYXRvcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9bnVsbDtyZXR1cm4gYS5tYXRjaChbVG9rZW5zLlNMQVNILFRva2Vucy5DT01NQV0pJiYoYj1hLnRva2VuKCksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSksYj9Qcm9wZXJ0eVZhbHVlUGFydC5mcm9tVG9rZW4oYik6bnVsbH0sX2NvbWJpbmF0b3I6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPW51bGwsYztyZXR1cm4gYS5tYXRjaChbVG9rZW5zLlBMVVMsVG9rZW5zLkdSRUFURVIsVG9rZW5zLlRJTERFXSkmJihjPWEudG9rZW4oKSxiPW5ldyBDb21iaW5hdG9yKGMudmFsdWUsYy5zdGFydExpbmUsYy5zdGFydENvbCksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSksYn0sX3VuYXJ5X29wZXJhdG9yOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW07cmV0dXJuIGEubWF0Y2goW1Rva2Vucy5NSU5VUyxUb2tlbnMuUExVU10pP2EudG9rZW4oKS52YWx1ZTpudWxsfSxfcHJvcGVydHk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPW51bGwsYz1udWxsLGQsZSxmLGc7cmV0dXJuIGEucGVlaygpPT1Ub2tlbnMuU1RBUiYmdGhpcy5vcHRpb25zLnN0YXJIYWNrJiYoYS5nZXQoKSxlPWEudG9rZW4oKSxjPWUudmFsdWUsZj1lLnN0YXJ0TGluZSxnPWUuc3RhcnRDb2wpLGEubWF0Y2goVG9rZW5zLklERU5UKSYmKGU9YS50b2tlbigpLGQ9ZS52YWx1ZSxkLmNoYXJBdCgwKT09Il8iJiZ0aGlzLm9wdGlvbnMudW5kZXJzY29yZUhhY2smJihjPSJfIixkPWQuc3Vic3RyaW5nKDEpKSxiPW5ldyBQcm9wZXJ0eU5hbWUoZCxjLGZ8fGUuc3RhcnRMaW5lLGd8fGUuc3RhcnRDb2wpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCkpLGJ9LF9ydWxlc2V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYixjO3RyeXtjPXRoaXMuX3NlbGVjdG9yc19ncm91cCgpfWNhdGNoKGQpe2lmKGQgaW5zdGFuY2VvZiBTeW50YXhFcnJvciYmIXRoaXMub3B0aW9ucy5zdHJpY3Qpe3RoaXMuZmlyZSh7dHlwZToiZXJyb3IiLGVycm9yOmQsbWVzc2FnZTpkLm1lc3NhZ2UsbGluZTpkLmxpbmUsY29sOmQuY29sfSksYj1hLmFkdmFuY2UoW1Rva2Vucy5SQlJBQ0VdKTtpZihiIT1Ub2tlbnMuUkJSQUNFKXRocm93IGQ7cmV0dXJuITB9dGhyb3cgZH1yZXR1cm4gYyYmKHRoaXMuZmlyZSh7dHlwZToic3RhcnRydWxlIixzZWxlY3RvcnM6YyxsaW5lOmNbMF0ubGluZSxjb2w6Y1swXS5jb2x9KSx0aGlzLl9yZWFkRGVjbGFyYXRpb25zKCEwKSx0aGlzLmZpcmUoe3R5cGU6ImVuZHJ1bGUiLHNlbGVjdG9yczpjLGxpbmU6Y1swXS5saW5lLGNvbDpjWzBdLmNvbH0pKSxjfSxfc2VsZWN0b3JzX2dyb3VwOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1bXSxjO2M9dGhpcy5fc2VsZWN0b3IoKTtpZihjIT09bnVsbCl7Yi5wdXNoKGMpO3doaWxlKGEubWF0Y2goVG9rZW5zLkNPTU1BKSl0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGM9dGhpcy5fc2VsZWN0b3IoKSxjIT09bnVsbD9iLnB1c2goYyk6dGhpcy5fdW5leHBlY3RlZFRva2VuKGEuTFQoMSkpfXJldHVybiBiLmxlbmd0aD9iOm51bGx9LF9zZWxlY3RvcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9W10sYz1udWxsLGQ9bnVsbCxlPW51bGw7Yz10aGlzLl9zaW1wbGVfc2VsZWN0b3Jfc2VxdWVuY2UoKTtpZihjPT09bnVsbClyZXR1cm4gbnVsbDtiLnB1c2goYyk7ZG97ZD10aGlzLl9jb21iaW5hdG9yKCk7aWYoZCE9PW51bGwpYi5wdXNoKGQpLGM9dGhpcy5fc2ltcGxlX3NlbGVjdG9yX3NlcXVlbmNlKCksYz09PW51bGw/dGhpcy5fdW5leHBlY3RlZFRva2VuKHRoaXMuTFQoMSkpOmIucHVzaChjKTtlbHNle2lmKCF0aGlzLl9yZWFkV2hpdGVzcGFjZSgpKWJyZWFrO2U9bmV3IENvbWJpbmF0b3IoYS50b2tlbigpLnZhbHVlLGEudG9rZW4oKS5zdGFydExpbmUsYS50b2tlbigpLnN0YXJ0Q29sKSxkPXRoaXMuX2NvbWJpbmF0b3IoKSxjPXRoaXMuX3NpbXBsZV9zZWxlY3Rvcl9zZXF1ZW5jZSgpLGM9PT1udWxsP2QhPT1udWxsJiZ0aGlzLl91bmV4cGVjdGVkVG9rZW4oYS5MVCgxKSk6KGQhPT1udWxsP2IucHVzaChkKTpiLnB1c2goZSksYi5wdXNoKGMpKX19d2hpbGUoITApO3JldHVybiBuZXcgU2VsZWN0b3IoYixiWzBdLmxpbmUsYlswXS5jb2wpfSxfc2ltcGxlX3NlbGVjdG9yX3NlcXVlbmNlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1udWxsLGM9W10sZD0iIixlPVtmdW5jdGlvbigpe3JldHVybiBhLm1hdGNoKFRva2Vucy5IQVNIKT9uZXcgU2VsZWN0b3JTdWJQYXJ0KGEudG9rZW4oKS52YWx1ZSwiaWQiLGEudG9rZW4oKS5zdGFydExpbmUsYS50b2tlbigpLnN0YXJ0Q29sKTpudWxsfSx0aGlzLl9jbGFzcyx0aGlzLl9hdHRyaWIsdGhpcy5fcHNldWRvLHRoaXMuX25lZ2F0aW9uXSxmPTAsZz1lLmxlbmd0aCxoPW51bGwsaT0hMSxqLGs7aj1hLkxUKDEpLnN0YXJ0TGluZSxrPWEuTFQoMSkuc3RhcnRDb2wsYj10aGlzLl90eXBlX3NlbGVjdG9yKCksYnx8KGI9dGhpcy5fdW5pdmVyc2FsKCkpLGIhPT1udWxsJiYoZCs9Yik7Zm9yKDs7KXtpZihhLnBlZWsoKT09PVRva2Vucy5TKWJyZWFrO3doaWxlKGY8ZyYmaD09PW51bGwpaD1lW2YrK10uY2FsbCh0aGlzKTtpZihoPT09bnVsbCl7aWYoZD09PSIiKXJldHVybiBudWxsO2JyZWFrfWY9MCxjLnB1c2goaCksZCs9aC50b1N0cmluZygpLGg9bnVsbH1yZXR1cm4gZCE9PSIiP25ldyBTZWxlY3RvclBhcnQoYixjLGQsaixrKTpudWxsfSxfdHlwZV9zZWxlY3RvcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9dGhpcy5fbmFtZXNwYWNlX3ByZWZpeCgpLGM9dGhpcy5fZWxlbWVudF9uYW1lKCk7cmV0dXJuIGM/KGImJihjLnRleHQ9YitjLnRleHQsYy5jb2wtPWIubGVuZ3RoKSxjKTooYiYmKGEudW5nZXQoKSxiLmxlbmd0aD4xJiZhLnVuZ2V0KCkpLG51bGwpfSxfY2xhc3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiO3JldHVybiBhLm1hdGNoKFRva2Vucy5ET1QpPyhhLm11c3RNYXRjaChUb2tlbnMuSURFTlQpLGI9YS50b2tlbigpLG5ldyBTZWxlY3RvclN1YlBhcnQoIi4iK2IudmFsdWUsImNsYXNzIixiLnN0YXJ0TGluZSxiLnN0YXJ0Q29sLTEpKTpudWxsfSxfZWxlbWVudF9uYW1lOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYjtyZXR1cm4gYS5tYXRjaChUb2tlbnMuSURFTlQpPyhiPWEudG9rZW4oKSxuZXcgU2VsZWN0b3JTdWJQYXJ0KGIudmFsdWUsImVsZW1lbnROYW1lIixiLnN0YXJ0TGluZSxiLnN0YXJ0Q29sKSk6bnVsbH0sX25hbWVzcGFjZV9wcmVmaXg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPSIiO2lmKGEuTEEoMSk9PT1Ub2tlbnMuUElQRXx8YS5MQSgyKT09PVRva2Vucy5QSVBFKWEubWF0Y2goW1Rva2Vucy5JREVOVCxUb2tlbnMuU1RBUl0pJiYoYis9YS50b2tlbigpLnZhbHVlKSxhLm11c3RNYXRjaChUb2tlbnMuUElQRSksYis9InwiO3JldHVybiBiLmxlbmd0aD9iOm51bGx9LF91bml2ZXJzYWw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPSIiLGM7cmV0dXJuIGM9dGhpcy5fbmFtZXNwYWNlX3ByZWZpeCgpLGMmJihiKz1jKSxhLm1hdGNoKFRva2Vucy5TVEFSKSYmKGIrPSIqIiksYi5sZW5ndGg/YjpudWxsfSxfYXR0cmliOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1udWxsLGMsZDtyZXR1cm4gYS5tYXRjaChUb2tlbnMuTEJSQUNLRVQpPyhkPWEudG9rZW4oKSxiPWQudmFsdWUsYis9dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxjPXRoaXMuX25hbWVzcGFjZV9wcmVmaXgoKSxjJiYoYis9YyksYS5tdXN0TWF0Y2goVG9rZW5zLklERU5UKSxiKz1hLnRva2VuKCkudmFsdWUsYis9dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxhLm1hdGNoKFtUb2tlbnMuUFJFRklYTUFUQ0gsVG9rZW5zLlNVRkZJWE1BVENILFRva2Vucy5TVUJTVFJJTkdNQVRDSCxUb2tlbnMuRVFVQUxTLFRva2Vucy5JTkNMVURFUyxUb2tlbnMuREFTSE1BVENIXSkmJihiKz1hLnRva2VuKCkudmFsdWUsYis9dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxhLm11c3RNYXRjaChbVG9rZW5zLklERU5ULFRva2Vucy5TVFJJTkddKSxiKz1hLnRva2VuKCkudmFsdWUsYis9dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSksYS5tdXN0TWF0Y2goVG9rZW5zLlJCUkFDS0VUKSxuZXcgU2VsZWN0b3JTdWJQYXJ0KGIrIl0iLCJhdHRyaWJ1dGUiLGQuc3RhcnRMaW5lLGQuc3RhcnRDb2wpKTpudWxsfSxfcHNldWRvOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1udWxsLGM9IjoiLGQsZTtyZXR1cm4gYS5tYXRjaChUb2tlbnMuQ09MT04pJiYoYS5tYXRjaChUb2tlbnMuQ09MT04pJiYoYys9IjoiKSxhLm1hdGNoKFRva2Vucy5JREVOVCk/KGI9YS50b2tlbigpLnZhbHVlLGQ9YS50b2tlbigpLnN0YXJ0TGluZSxlPWEudG9rZW4oKS5zdGFydENvbC1jLmxlbmd0aCk6YS5wZWVrKCk9PVRva2Vucy5GVU5DVElPTiYmKGQ9YS5MVCgxKS5zdGFydExpbmUsZT1hLkxUKDEpLnN0YXJ0Q29sLWMubGVuZ3RoLGI9dGhpcy5fZnVuY3Rpb25hbF9wc2V1ZG8oKSksYiYmKGI9bmV3IFNlbGVjdG9yU3ViUGFydChjK2IsInBzZXVkbyIsZCxlKSkpLGJ9LF9mdW5jdGlvbmFsX3BzZXVkbzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9bnVsbDtyZXR1cm4gYS5tYXRjaChUb2tlbnMuRlVOQ1RJT04pJiYoYj1hLnRva2VuKCkudmFsdWUsYis9dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxiKz10aGlzLl9leHByZXNzaW9uKCksYS5tdXN0TWF0Y2goVG9rZW5zLlJQQVJFTiksYis9IikiKSxifSxfZXhwcmVzc2lvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9IiI7d2hpbGUoYS5tYXRjaChbVG9rZW5zLlBMVVMsVG9rZW5zLk1JTlVTLFRva2Vucy5ESU1FTlNJT04sVG9rZW5zLk5VTUJFUixUb2tlbnMuU1RSSU5HLFRva2Vucy5JREVOVCxUb2tlbnMuTEVOR1RILFRva2Vucy5GUkVRLFRva2Vucy5BTkdMRSxUb2tlbnMuVElNRSxUb2tlbnMuUkVTT0xVVElPTl0pKWIrPWEudG9rZW4oKS52YWx1ZSxiKz10aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3JldHVybiBiLmxlbmd0aD9iOm51bGx9LF9uZWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGIsYyxkPSIiLGUsZj1udWxsO3JldHVybiBhLm1hdGNoKFRva2Vucy5OT1QpJiYoZD1hLnRva2VuKCkudmFsdWUsYj1hLnRva2VuKCkuc3RhcnRMaW5lLGM9YS50b2tlbigpLnN0YXJ0Q29sLGQrPXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksZT10aGlzLl9uZWdhdGlvbl9hcmcoKSxkKz1lLGQrPXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksYS5tYXRjaChUb2tlbnMuUlBBUkVOKSxkKz1hLnRva2VuKCkudmFsdWUsZj1uZXcgU2VsZWN0b3JTdWJQYXJ0KGQsIm5vdCIsYixjKSxmLmFyZ3MucHVzaChlKSksZn0sX25lZ2F0aW9uX2FyZzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9W3RoaXMuX3R5cGVfc2VsZWN0b3IsdGhpcy5fdW5pdmVyc2FsLGZ1bmN0aW9uKCl7cmV0dXJuIGEubWF0Y2goVG9rZW5zLkhBU0gpP25ldyBTZWxlY3RvclN1YlBhcnQoYS50b2tlbigpLnZhbHVlLCJpZCIsYS50b2tlbigpLnN0YXJ0TGluZSxhLnRva2VuKCkuc3RhcnRDb2wpOm51bGx9LHRoaXMuX2NsYXNzLHRoaXMuX2F0dHJpYix0aGlzLl9wc2V1ZG9dLGM9bnVsbCxkPTAsZT1iLmxlbmd0aCxmLGcsaCxpO2c9YS5MVCgxKS5zdGFydExpbmUsaD1hLkxUKDEpLnN0YXJ0Q29sO3doaWxlKGQ8ZSYmYz09PW51bGwpYz1iW2RdLmNhbGwodGhpcyksZCsrO3JldHVybiBjPT09bnVsbCYmdGhpcy5fdW5leHBlY3RlZFRva2VuKGEuTFQoMSkpLGMudHlwZT09ImVsZW1lbnROYW1lIj9pPW5ldyBTZWxlY3RvclBhcnQoYyxbXSxjLnRvU3RyaW5nKCksZyxoKTppPW5ldyBTZWxlY3RvclBhcnQobnVsbCxbY10sYy50b1N0cmluZygpLGcsaCksaX0sX2RlY2xhcmF0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1udWxsLGM9bnVsbCxkPW51bGwsZT1udWxsLGY9bnVsbDtiPXRoaXMuX3Byb3BlcnR5KCk7aWYoYiE9PW51bGwpe2EubXVzdE1hdGNoKFRva2Vucy5DT0xPTiksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxjPXRoaXMuX2V4cHIoKSwoIWN8fGMubGVuZ3RoPT09MCkmJnRoaXMuX3VuZXhwZWN0ZWRUb2tlbihhLkxUKDEpKSxkPXRoaXMuX3ByaW8oKTt0cnl7dGhpcy5fdmFsaWRhdGVQcm9wZXJ0eShiLGMpfWNhdGNoKGcpe2Y9Z31yZXR1cm4gdGhpcy5maXJlKHt0eXBlOiJwcm9wZXJ0eSIscHJvcGVydHk6Yix2YWx1ZTpjLGltcG9ydGFudDpkLGxpbmU6Yi5saW5lLGNvbDpiLmNvbCxpbnZhbGlkOmZ9KSwhMH1yZXR1cm4hMX0sX3ByaW86ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPWEubWF0Y2goVG9rZW5zLklNUE9SVEFOVF9TWU0pO3JldHVybiB0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGJ9LF9leHByOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj1bXSxjPW51bGwsZD1udWxsO2M9dGhpcy5fdGVybSgpO2lmKGMhPT1udWxsKXtiLnB1c2goYyk7ZG97ZD10aGlzLl9vcGVyYXRvcigpLGQmJmIucHVzaChkKSxjPXRoaXMuX3Rlcm0oKTtpZihjPT09bnVsbClicmVhaztiLnB1c2goYyl9d2hpbGUoITApfXJldHVybiBiLmxlbmd0aD4wP25ldyBQcm9wZXJ0eVZhbHVlKGIsYlswXS5saW5lLGJbMF0uY29sKTpudWxsfSxfdGVybTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9bnVsbCxjPW51bGwsZCxlLGY7cmV0dXJuIGI9dGhpcy5fdW5hcnlfb3BlcmF0b3IoKSxiIT09bnVsbCYmKGU9YS50b2tlbigpLnN0YXJ0TGluZSxmPWEudG9rZW4oKS5zdGFydENvbCksYS5wZWVrKCk9PVRva2Vucy5JRV9GVU5DVElPTiYmdGhpcy5vcHRpb25zLmllRmlsdGVycz8oYz10aGlzLl9pZV9mdW5jdGlvbigpLGI9PT1udWxsJiYoZT1hLnRva2VuKCkuc3RhcnRMaW5lLGY9YS50b2tlbigpLnN0YXJ0Q29sKSk6YS5tYXRjaChbVG9rZW5zLk5VTUJFUixUb2tlbnMuUEVSQ0VOVEFHRSxUb2tlbnMuTEVOR1RILFRva2Vucy5BTkdMRSxUb2tlbnMuVElNRSxUb2tlbnMuRlJFUSxUb2tlbnMuU1RSSU5HLFRva2Vucy5JREVOVCxUb2tlbnMuVVJJLFRva2Vucy5VTklDT0RFX1JBTkdFXSk/KGM9YS50b2tlbigpLnZhbHVlLGI9PT1udWxsJiYoZT1hLnRva2VuKCkuc3RhcnRMaW5lLGY9YS50b2tlbigpLnN0YXJ0Q29sKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpKTooZD10aGlzLl9oZXhjb2xvcigpLGQ9PT1udWxsPyhiPT09bnVsbCYmKGU9YS5MVCgxKS5zdGFydExpbmUsZj1hLkxUKDEpLnN0YXJ0Q29sKSxjPT09bnVsbCYmKGEuTEEoMyk9PVRva2Vucy5FUVVBTFMmJnRoaXMub3B0aW9ucy5pZUZpbHRlcnM/Yz10aGlzLl9pZV9mdW5jdGlvbigpOmM9dGhpcy5fZnVuY3Rpb24oKSkpOihjPWQudmFsdWUsYj09PW51bGwmJihlPWQuc3RhcnRMaW5lLGY9ZC5zdGFydENvbCkpKSxjIT09bnVsbD9uZXcgUHJvcGVydHlWYWx1ZVBhcnQoYiE9PW51bGw/YitjOmMsZSxmKTpudWxsfSxfZnVuY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPW51bGwsYz1udWxsLGQ7aWYoYS5tYXRjaChUb2tlbnMuRlVOQ1RJT04pKXtiPWEudG9rZW4oKS52YWx1ZSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGM9dGhpcy5fZXhwcigpLGIrPWM7aWYodGhpcy5vcHRpb25zLmllRmlsdGVycyYmYS5wZWVrKCk9PVRva2Vucy5FUVVBTFMpZG97dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSYmKGIrPWEudG9rZW4oKS52YWx1ZSksYS5MQSgwKT09VG9rZW5zLkNPTU1BJiYoYis9YS50b2tlbigpLnZhbHVlKSxhLm1hdGNoKFRva2Vucy5JREVOVCksYis9YS50b2tlbigpLnZhbHVlLGEubWF0Y2goVG9rZW5zLkVRVUFMUyksYis9YS50b2tlbigpLnZhbHVlLGQ9YS5wZWVrKCk7d2hpbGUoZCE9VG9rZW5zLkNPTU1BJiZkIT1Ub2tlbnMuUyYmZCE9VG9rZW5zLlJQQVJFTilhLmdldCgpLGIrPWEudG9rZW4oKS52YWx1ZSxkPWEucGVlaygpfXdoaWxlKGEubWF0Y2goW1Rva2Vucy5DT01NQSxUb2tlbnMuU10pKTthLm1hdGNoKFRva2Vucy5SUEFSRU4pLGIrPSIpIix0aGlzLl9yZWFkV2hpdGVzcGFjZSgpfXJldHVybiBifSxfaWVfZnVuY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiPW51bGwsYz1udWxsLGQ7aWYoYS5tYXRjaChbVG9rZW5zLklFX0ZVTkNUSU9OLFRva2Vucy5GVU5DVElPTl0pKXtiPWEudG9rZW4oKS52YWx1ZTtkb3t0aGlzLl9yZWFkV2hpdGVzcGFjZSgpJiYoYis9YS50b2tlbigpLnZhbHVlKSxhLkxBKDApPT1Ub2tlbnMuQ09NTUEmJihiKz1hLnRva2VuKCkudmFsdWUpLGEubWF0Y2goVG9rZW5zLklERU5UKSxiKz1hLnRva2VuKCkudmFsdWUsYS5tYXRjaChUb2tlbnMuRVFVQUxTKSxiKz1hLnRva2VuKCkudmFsdWUsZD1hLnBlZWsoKTt3aGlsZShkIT1Ub2tlbnMuQ09NTUEmJmQhPVRva2Vucy5TJiZkIT1Ub2tlbnMuUlBBUkVOKWEuZ2V0KCksYis9YS50b2tlbigpLnZhbHVlLGQ9YS5wZWVrKCl9d2hpbGUoYS5tYXRjaChbVG9rZW5zLkNPTU1BLFRva2Vucy5TXSkpO2EubWF0Y2goVG9rZW5zLlJQQVJFTiksYis9IikiLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCl9cmV0dXJuIGJ9LF9oZXhjb2xvcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI9bnVsbCxjO2lmKGEubWF0Y2goVG9rZW5zLkhBU0gpKXtiPWEudG9rZW4oKSxjPWIudmFsdWU7aWYoIS8jW2EtZjAtOV17Myw2fS9pLnRlc3QoYykpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJFeHBlY3RlZCBhIGhleCBjb2xvciBidXQgZm91bmQgJyIrYysiJyBhdCBsaW5lICIrYi5zdGFydExpbmUrIiwgY29sICIrYi5zdGFydENvbCsiLiIsYi5zdGFydExpbmUsYi5zdGFydENvbCk7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKX1yZXR1cm4gYn0sX2tleWZyYW1lczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGIsYyxkO2EubXVzdE1hdGNoKFRva2Vucy5LRVlGUkFNRVNfU1lNKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGQ9dGhpcy5fa2V5ZnJhbWVfbmFtZSgpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksYS5tdXN0TWF0Y2goVG9rZW5zLkxCUkFDRSksdGhpcy5maXJlKHt0eXBlOiJzdGFydGtleWZyYW1lcyIsbmFtZTpkLGxpbmU6ZC5saW5lLGNvbDpkLmNvbH0pLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksYz1hLnBlZWsoKTt3aGlsZShjPT1Ub2tlbnMuSURFTlR8fGM9PVRva2Vucy5QRVJDRU5UQUdFKXRoaXMuX2tleWZyYW1lX3J1bGUoKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGM9YS5wZWVrKCk7dGhpcy5maXJlKHt0eXBlOiJlbmRrZXlmcmFtZXMiLG5hbWU6ZCxsaW5lOmQubGluZSxjb2w6ZC5jb2x9KSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGEubXVzdE1hdGNoKFRva2Vucy5SQlJBQ0UpfSxfa2V5ZnJhbWVfbmFtZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGI7cmV0dXJuIGEubXVzdE1hdGNoKFtUb2tlbnMuSURFTlQsVG9rZW5zLlNUUklOR10pLFN5bnRheFVuaXQuZnJvbVRva2VuKGEudG9rZW4oKSl9LF9rZXlmcmFtZV9ydWxlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYixjPXRoaXMuX2tleV9saXN0KCk7dGhpcy5maXJlKHt0eXBlOiJzdGFydGtleWZyYW1lcnVsZSIsa2V5czpjLGxpbmU6Y1swXS5saW5lLGNvbDpjWzBdLmNvbH0pLHRoaXMuX3JlYWREZWNsYXJhdGlvbnMoITApLHRoaXMuZmlyZSh7dHlwZToiZW5ka2V5ZnJhbWVydWxlIixrZXlzOmMsbGluZTpjWzBdLmxpbmUsY29sOmNbMF0uY29sfSl9LF9rZXlfbGlzdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3Rva2VuU3RyZWFtLGIsYyxkPVtdO2QucHVzaCh0aGlzLl9rZXkoKSksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt3aGlsZShhLm1hdGNoKFRva2Vucy5DT01NQSkpdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxkLnB1c2godGhpcy5fa2V5KCkpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7cmV0dXJuIGR9LF9rZXk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90b2tlblN0cmVhbSxiO2lmKGEubWF0Y2goVG9rZW5zLlBFUkNFTlRBR0UpKXJldHVybiBTeW50YXhVbml0LmZyb21Ub2tlbihhLnRva2VuKCkpO2lmKGEubWF0Y2goVG9rZW5zLklERU5UKSl7Yj1hLnRva2VuKCk7aWYoL2Zyb218dG8vaS50ZXN0KGIudmFsdWUpKXJldHVybiBTeW50YXhVbml0LmZyb21Ub2tlbihiKTthLnVuZ2V0KCl9dGhpcy5fdW5leHBlY3RlZFRva2VuKGEuTFQoMSkpfSxfc2tpcENydWZ0OmZ1bmN0aW9uKCl7d2hpbGUodGhpcy5fdG9rZW5TdHJlYW0ubWF0Y2goW1Rva2Vucy5TLFRva2Vucy5DRE8sVG9rZW5zLkNEQ10pKTt9LF9yZWFkRGVjbGFyYXRpb25zOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fdG9rZW5TdHJlYW0sZDt0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGEmJmMubXVzdE1hdGNoKFRva2Vucy5MQlJBQ0UpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dHJ5e2Zvcig7Oyl7aWYoIShjLm1hdGNoKFRva2Vucy5TRU1JQ09MT04pfHxiJiZ0aGlzLl9tYXJnaW4oKSkpe2lmKCF0aGlzLl9kZWNsYXJhdGlvbigpKWJyZWFrO2lmKCFjLm1hdGNoKFRva2Vucy5TRU1JQ09MT04pKWJyZWFrfXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCl9Yy5tdXN0TWF0Y2goVG9rZW5zLlJCUkFDRSksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvciYmIXRoaXMub3B0aW9ucy5zdHJpY3QpKXRocm93IGU7dGhpcy5maXJlKHt0eXBlOiJlcnJvciIsZXJyb3I6ZSxtZXNzYWdlOmUubWVzc2FnZSxsaW5lOmUubGluZSxjb2w6ZS5jb2x9KSxkPWMuYWR2YW5jZShbVG9rZW5zLlNFTUlDT0xPTixUb2tlbnMuUkJSQUNFXSk7aWYoZD09VG9rZW5zLlNFTUlDT0xPTil0aGlzLl9yZWFkRGVjbGFyYXRpb25zKCExLGIpO2Vsc2UgaWYoZCE9VG9rZW5zLlJCUkFDRSl0aHJvdyBlfX0sX3JlYWRXaGl0ZXNwYWNlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdG9rZW5TdHJlYW0sYj0iIjt3aGlsZShhLm1hdGNoKFRva2Vucy5TKSliKz1hLnRva2VuKCkudmFsdWU7cmV0dXJuIGJ9LF91bmV4cGVjdGVkVG9rZW46ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IFN5bnRheEVycm9yKCJVbmV4cGVjdGVkIHRva2VuICciK2EudmFsdWUrIicgYXQgbGluZSAiK2Euc3RhcnRMaW5lKyIsIGNvbCAiK2Euc3RhcnRDb2wrIi4iLGEuc3RhcnRMaW5lLGEuc3RhcnRDb2wpfSxfdmVyaWZ5RW5kOmZ1bmN0aW9uKCl7dGhpcy5fdG9rZW5TdHJlYW0uTEEoMSkhPVRva2Vucy5FT0YmJnRoaXMuX3VuZXhwZWN0ZWRUb2tlbih0aGlzLl90b2tlblN0cmVhbS5MVCgxKSl9LF92YWxpZGF0ZVByb3BlcnR5OmZ1bmN0aW9uKGEsYil7VmFsaWRhdGlvbi52YWxpZGF0ZShhLGIpfSxwYXJzZTpmdW5jdGlvbihhKXt0aGlzLl90b2tlblN0cmVhbT1uZXcgVG9rZW5TdHJlYW0oYSxUb2tlbnMpLHRoaXMuX3N0eWxlc2hlZXQoKX0scGFyc2VTdHlsZVNoZWV0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcnNlKGEpfSxwYXJzZU1lZGlhUXVlcnk6ZnVuY3Rpb24oYSl7dGhpcy5fdG9rZW5TdHJlYW09bmV3IFRva2VuU3RyZWFtKGEsVG9rZW5zKTt2YXIgYj10aGlzLl9tZWRpYV9xdWVyeSgpO3JldHVybiB0aGlzLl92ZXJpZnlFbmQoKSxifSxwYXJzZVByb3BlcnR5VmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5fdG9rZW5TdHJlYW09bmV3IFRva2VuU3RyZWFtKGEsVG9rZW5zKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3ZhciBiPXRoaXMuX2V4cHIoKTtyZXR1cm4gdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0aGlzLl92ZXJpZnlFbmQoKSxifSxwYXJzZVJ1bGU6ZnVuY3Rpb24oYSl7dGhpcy5fdG9rZW5TdHJlYW09bmV3IFRva2VuU3RyZWFtKGEsVG9rZW5zKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3ZhciBiPXRoaXMuX3J1bGVzZXQoKTtyZXR1cm4gdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0aGlzLl92ZXJpZnlFbmQoKSxifSxwYXJzZVNlbGVjdG9yOmZ1bmN0aW9uKGEpe3RoaXMuX3Rva2VuU3RyZWFtPW5ldyBUb2tlblN0cmVhbShhLFRva2VucyksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgYj10aGlzLl9zZWxlY3RvcigpO3JldHVybiB0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLHRoaXMuX3ZlcmlmeUVuZCgpLGJ9LHBhcnNlU3R5bGVBdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7YSs9In0iLHRoaXMuX3Rva2VuU3RyZWFtPW5ldyBUb2tlblN0cmVhbShhLFRva2VucyksdGhpcy5fcmVhZERlY2xhcmF0aW9ucygpfX07Zm9yKGIgaW4gYyljLmhhc093blByb3BlcnR5KGIpJiYoYVtiXT1jW2JdKTtyZXR1cm4gYX0oKTt2YXIgUHJvcGVydGllcz17ImFsaWdubWVudC1hZGp1c3QiOiJhdXRvIHwgYmFzZWxpbmUgfCBiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBtaWRkbGUgfCBjZW50cmFsIHwgYWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwgfCA8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiIsImFsaWdubWVudC1iYXNlbGluZSI6ImJhc2VsaW5lIHwgdXNlLXNjcmlwdCB8IGJlZm9yZS1lZGdlIHwgdGV4dC1iZWZvcmUtZWRnZSB8IGFmdGVyLWVkZ2UgfCB0ZXh0LWFmdGVyLWVkZ2UgfCBjZW50cmFsIHwgbWlkZGxlIHwgaWRlb2dyYXBoaWMgfCBhbHBoYWJldGljIHwgaGFuZ2luZyB8IG1hdGhlbWF0aWNhbCIsYW5pbWF0aW9uOjEsImFuaW1hdGlvbi1kZWxheSI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiYW5pbWF0aW9uLWRpcmVjdGlvbiI6e211bHRpOiJub3JtYWwgfCBhbHRlcm5hdGUiLGNvbW1hOiEwfSwiYW5pbWF0aW9uLWR1cmF0aW9uIjp7bXVsdGk6Ijx0aW1lPiIsY29tbWE6ITB9LCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50Ijp7bXVsdGk6IjxudW1iZXI+IHwgaW5maW5pdGUiLGNvbW1hOiEwfSwiYW5pbWF0aW9uLW5hbWUiOnttdWx0aToibm9uZSB8IDxpZGVudD4iLGNvbW1hOiEwfSwiYW5pbWF0aW9uLXBsYXktc3RhdGUiOnttdWx0aToicnVubmluZyB8IHBhdXNlZCIsY29tbWE6ITB9LCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIjoxLCItbW96LWFuaW1hdGlvbi1kZWxheSI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiLW1vei1hbmltYXRpb24tZGlyZWN0aW9uIjp7bXVsdGk6Im5vcm1hbCB8IGFsdGVybmF0ZSIsY29tbWE6ITB9LCItbW96LWFuaW1hdGlvbi1kdXJhdGlvbiI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Ijp7bXVsdGk6IjxudW1iZXI+IHwgaW5maW5pdGUiLGNvbW1hOiEwfSwiLW1vei1hbmltYXRpb24tbmFtZSI6e211bHRpOiJub25lIHwgPGlkZW50PiIsY29tbWE6ITB9LCItbW96LWFuaW1hdGlvbi1wbGF5LXN0YXRlIjp7bXVsdGk6InJ1bm5pbmcgfCBwYXVzZWQiLGNvbW1hOiEwfSwiLW1zLWFuaW1hdGlvbi1kZWxheSI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiLW1zLWFuaW1hdGlvbi1kaXJlY3Rpb24iOnttdWx0aToibm9ybWFsIHwgYWx0ZXJuYXRlIixjb21tYTohMH0sIi1tcy1hbmltYXRpb24tZHVyYXRpb24iOnttdWx0aToiPHRpbWU+Iixjb21tYTohMH0sIi1tcy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Ijp7bXVsdGk6IjxudW1iZXI+IHwgaW5maW5pdGUiLGNvbW1hOiEwfSwiLW1zLWFuaW1hdGlvbi1uYW1lIjp7bXVsdGk6Im5vbmUgfCA8aWRlbnQ+Iixjb21tYTohMH0sIi1tcy1hbmltYXRpb24tcGxheS1zdGF0ZSI6e211bHRpOiJydW5uaW5nIHwgcGF1c2VkIixjb21tYTohMH0sIi13ZWJraXQtYW5pbWF0aW9uLWRlbGF5Ijp7bXVsdGk6Ijx0aW1lPiIsY29tbWE6ITB9LCItd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24iOnttdWx0aToibm9ybWFsIHwgYWx0ZXJuYXRlIixjb21tYTohMH0sIi13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uIjp7bXVsdGk6Ijx0aW1lPiIsY29tbWE6ITB9LCItd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOnttdWx0aToiPG51bWJlcj4gfCBpbmZpbml0ZSIsY29tbWE6ITB9LCItd2Via2l0LWFuaW1hdGlvbi1uYW1lIjp7bXVsdGk6Im5vbmUgfCA8aWRlbnQ+Iixjb21tYTohMH0sIi13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUiOnttdWx0aToicnVubmluZyB8IHBhdXNlZCIsY29tbWE6ITB9LCItby1hbmltYXRpb24tZGVsYXkiOnttdWx0aToiPHRpbWU+Iixjb21tYTohMH0sIi1vLWFuaW1hdGlvbi1kaXJlY3Rpb24iOnttdWx0aToibm9ybWFsIHwgYWx0ZXJuYXRlIixjb21tYTohMH0sIi1vLWFuaW1hdGlvbi1kdXJhdGlvbiI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiLW8tYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCI6e211bHRpOiI8bnVtYmVyPiB8IGluZmluaXRlIixjb21tYTohMH0sIi1vLWFuaW1hdGlvbi1uYW1lIjp7bXVsdGk6Im5vbmUgfCA8aWRlbnQ+Iixjb21tYTohMH0sIi1vLWFuaW1hdGlvbi1wbGF5LXN0YXRlIjp7bXVsdGk6InJ1bm5pbmcgfCBwYXVzZWQiLGNvbW1hOiEwfSxhcHBlYXJhbmNlOiJpY29uIHwgd2luZG93IHwgZGVza3RvcCB8IHdvcmtzcGFjZSB8IGRvY3VtZW50IHwgdG9vbHRpcCB8IGRpYWxvZyB8IGJ1dHRvbiB8IHB1c2gtYnV0dG9uIHwgaHlwZXJsaW5rIHwgcmFkaW8tYnV0dG9uIHwgY2hlY2tib3ggfCBtZW51LWl0ZW0gfCB0YWIgfCBtZW51IHwgbWVudWJhciB8IHB1bGwtZG93bi1tZW51IHwgcG9wLXVwLW1lbnUgfCBsaXN0LW1lbnUgfCByYWRpby1ncm91cCB8IGNoZWNrYm94LWdyb3VwIHwgb3V0bGluZS10cmVlIHwgcmFuZ2UgfCBmaWVsZCB8IGNvbWJvLWJveCB8IHNpZ25hdHVyZSB8IHBhc3N3b3JkIHwgbm9ybWFsIHwgaW5oZXJpdCIsYXppbXV0aDpmdW5jdGlvbihhKXt2YXIgYj0iPGFuZ2xlPiB8IGxlZnR3YXJkcyB8IHJpZ2h0d2FyZHMgfCBpbmhlcml0IixjPSJsZWZ0LXNpZGUgfCBmYXItbGVmdCB8IGxlZnQgfCBjZW50ZXItbGVmdCB8IGNlbnRlciB8IGNlbnRlci1yaWdodCB8IHJpZ2h0IHwgZmFyLXJpZ2h0IHwgcmlnaHQtc2lkZSIsZD0hMSxlPSExLGY7VmFsaWRhdGlvblR5cGVzLmlzQW55KGEsYil8fChWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSwiYmVoaW5kIikmJihkPSEwLGU9ITApLFZhbGlkYXRpb25UeXBlcy5pc0FueShhLGMpJiYoZT0hMCxkfHxWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSwiYmVoaW5kIikpKTtpZihhLmhhc05leHQoKSl0aHJvdyBmPWEubmV4dCgpLGU/bmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgZW5kIG9mIHZhbHVlIGJ1dCBmb3VuZCAnIitmKyInLiIsZi5saW5lLGYuY29sKTpuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCAoPCdhemltdXRoJz4pIGJ1dCBmb3VuZCAnIitmKyInLiIsZi5saW5lLGYuY29sKX0sImJhY2tmYWNlLXZpc2liaWxpdHkiOiJ2aXNpYmxlIHwgaGlkZGVuIixiYWNrZ3JvdW5kOjEsImJhY2tncm91bmQtYXR0YWNobWVudCI6e211bHRpOiI8YXR0YWNobWVudD4iLGNvbW1hOiEwfSwiYmFja2dyb3VuZC1jbGlwIjp7bXVsdGk6Ijxib3g+Iixjb21tYTohMH0sImJhY2tncm91bmQtY29sb3IiOiI8Y29sb3I+IHwgaW5oZXJpdCIsImJhY2tncm91bmQtaW1hZ2UiOnttdWx0aToiPGJnLWltYWdlPiIsY29tbWE6ITB9LCJiYWNrZ3JvdW5kLW9yaWdpbiI6e211bHRpOiI8Ym94PiIsY29tbWE6ITB9LCJiYWNrZ3JvdW5kLXBvc2l0aW9uIjp7bXVsdGk6IjxiZy1wb3NpdGlvbj4iLGNvbW1hOiEwfSwiYmFja2dyb3VuZC1yZXBlYXQiOnttdWx0aToiPHJlcGVhdC1zdHlsZT4ifSwiYmFja2dyb3VuZC1zaXplIjp7bXVsdGk6IjxiZy1zaXplPiIsY29tbWE6ITB9LCJiYXNlbGluZS1zaGlmdCI6ImJhc2VsaW5lIHwgc3ViIHwgc3VwZXIgfCA8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiIsYmluZGluZzoxLGJsZWVkOiI8bGVuZ3RoPiIsImJvb2ttYXJrLWxhYmVsIjoiPGNvbnRlbnQ+IHwgPGF0dHI+IHwgPHN0cmluZz4iLCJib29rbWFyay1sZXZlbCI6Im5vbmUgfCA8aW50ZWdlcj4iLCJib29rbWFyay1zdGF0ZSI6Im9wZW4gfCBjbG9zZWQiLCJib29rbWFyay10YXJnZXQiOiJub25lIHwgPHVyaT4gfCA8YXR0cj4iLGJvcmRlcjoiPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPiIsImJvcmRlci1ib3R0b20iOiI8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+IiwiYm9yZGVyLWJvdHRvbS1jb2xvciI6Ijxjb2xvcj4iLCJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIjoiPHgtb25lLXJhZGl1cz4iLCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyI6Ijx4LW9uZS1yYWRpdXM+IiwiYm9yZGVyLWJvdHRvbS1zdHlsZSI6Ijxib3JkZXItc3R5bGU+IiwiYm9yZGVyLWJvdHRvbS13aWR0aCI6Ijxib3JkZXItd2lkdGg+IiwiYm9yZGVyLWNvbGxhcHNlIjoiY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQiLCJib3JkZXItY29sb3IiOnttdWx0aToiPGNvbG9yPiB8IGluaGVyaXQiLG1heDo0fSwiYm9yZGVyLWltYWdlIjoxLCJib3JkZXItaW1hZ2Utb3V0c2V0Ijp7bXVsdGk6IjxsZW5ndGg+IHwgPG51bWJlcj4iLG1heDo0fSwiYm9yZGVyLWltYWdlLXJlcGVhdCI6e211bHRpOiJzdHJldGNoIHwgcmVwZWF0IHwgcm91bmQiLG1heDoyfSwiYm9yZGVyLWltYWdlLXNsaWNlIjpmdW5jdGlvbihhKXt2YXIgYj0hMSxjPSI8bnVtYmVyPiB8IDxwZXJjZW50YWdlPiIsZD0hMSxlPTAsZj00LGc7VmFsaWRhdGlvblR5cGVzLmlzQW55KGEsImZpbGwiKSYmKGQ9ITAsYj0hMCk7d2hpbGUoYS5oYXNOZXh0KCkmJmU8Zil7Yj1WYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxjKTtpZighYilicmVhaztlKyt9ZD9iPSEwOlZhbGlkYXRpb25UeXBlcy5pc0FueShhLCJmaWxsIik7aWYoYS5oYXNOZXh0KCkpdGhyb3cgZz1hLm5leHQoKSxiP25ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIrZysiJy4iLGcubGluZSxnLmNvbCk6bmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgKFs8bnVtYmVyPiB8IDxwZXJjZW50YWdlPl17MSw0fSAmJiBmaWxsPykgYnV0IGZvdW5kICciK2crIicuIixnLmxpbmUsZy5jb2wpfSwiYm9yZGVyLWltYWdlLXNvdXJjZSI6IjxpbWFnZT4gfCBub25lIiwiYm9yZGVyLWltYWdlLXdpZHRoIjp7bXVsdGk6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgPG51bWJlcj4gfCBhdXRvIixtYXg6NH0sImJvcmRlci1sZWZ0IjoiPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPiIsImJvcmRlci1sZWZ0LWNvbG9yIjoiPGNvbG9yPiB8IGluaGVyaXQiLCJib3JkZXItbGVmdC1zdHlsZSI6Ijxib3JkZXItc3R5bGU+IiwiYm9yZGVyLWxlZnQtd2lkdGgiOiI8Ym9yZGVyLXdpZHRoPiIsImJvcmRlci1yYWRpdXMiOmZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixkPSExLGU9ITEsZj0wLGc9OCxoO3doaWxlKGEuaGFzTmV4dCgpJiZmPGcpe2I9VmFsaWRhdGlvblR5cGVzLmlzQW55KGEsYyk7aWYoIWIpe2lmKCEoYS5wZWVrKCk9PSIvIiYmZj4xJiYhZCkpYnJlYWs7ZD0hMCxnPWYrNSxhLm5leHQoKX1mKyt9aWYoYS5oYXNOZXh0KCkpdGhyb3cgaD1hLm5leHQoKSxiP25ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIraCsiJy4iLGgubGluZSxoLmNvbCk6bmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgKDwnYm9yZGVyLXJhZGl1cyc+KSBidXQgZm91bmQgJyIraCsiJy4iLGgubGluZSxoLmNvbCl9LCJib3JkZXItcmlnaHQiOiI8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+IiwiYm9yZGVyLXJpZ2h0LWNvbG9yIjoiPGNvbG9yPiB8IGluaGVyaXQiLCJib3JkZXItcmlnaHQtc3R5bGUiOiI8Ym9yZGVyLXN0eWxlPiIsImJvcmRlci1yaWdodC13aWR0aCI6Ijxib3JkZXItd2lkdGg+IiwiYm9yZGVyLXNwYWNpbmciOnttdWx0aToiPGxlbmd0aD4gfCBpbmhlcml0IixtYXg6Mn0sImJvcmRlci1zdHlsZSI6e211bHRpOiI8Ym9yZGVyLXN0eWxlPiIsbWF4OjR9LCJib3JkZXItdG9wIjoiPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPiIsImJvcmRlci10b3AtY29sb3IiOiI8Y29sb3I+IHwgaW5oZXJpdCIsImJvcmRlci10b3AtbGVmdC1yYWRpdXMiOiI8eC1vbmUtcmFkaXVzPiIsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIjoiPHgtb25lLXJhZGl1cz4iLCJib3JkZXItdG9wLXN0eWxlIjoiPGJvcmRlci1zdHlsZT4iLCJib3JkZXItdG9wLXdpZHRoIjoiPGJvcmRlci13aWR0aD4iLCJib3JkZXItd2lkdGgiOnttdWx0aToiPGJvcmRlci13aWR0aD4iLG1heDo0fSxib3R0b206IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIsImJveC1hbGlnbiI6InN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoIiwiYm94LWRlY29yYXRpb24tYnJlYWsiOiJzbGljZSB8Y2xvbmUiLCJib3gtZGlyZWN0aW9uIjoibm9ybWFsIHwgcmV2ZXJzZSB8IGluaGVyaXQiLCJib3gtZmxleCI6IjxudW1iZXI+IiwiYm94LWZsZXgtZ3JvdXAiOiI8aW50ZWdlcj4iLCJib3gtbGluZXMiOiJzaW5nbGUgfCBtdWx0aXBsZSIsImJveC1vcmRpbmFsLWdyb3VwIjoiPGludGVnZXI+IiwiYm94LW9yaWVudCI6Imhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQiLCJib3gtcGFjayI6InN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSIsImJveC1zaGFkb3ciOmZ1bmN0aW9uKGEpe3ZhciBiPSExLGM7aWYoIVZhbGlkYXRpb25UeXBlcy5pc0FueShhLCJub25lIikpVmFsaWRhdGlvbi5tdWx0aVByb3BlcnR5KCI8c2hhZG93PiIsYSwhMCxJbmZpbml0eSk7ZWxzZSBpZihhLmhhc05leHQoKSl0aHJvdyBjPWEubmV4dCgpLG5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIrYysiJy4iLGMubGluZSxjLmNvbCl9LCJib3gtc2l6aW5nIjoiY29udGVudC1ib3ggfCBib3JkZXItYm94IHwgaW5oZXJpdCIsImJyZWFrLWFmdGVyIjoiYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgcGFnZSB8IGNvbHVtbiB8IGF2b2lkLXBhZ2UgfCBhdm9pZC1jb2x1bW4iLCJicmVhay1iZWZvcmUiOiJhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBwYWdlIHwgY29sdW1uIHwgYXZvaWQtcGFnZSB8IGF2b2lkLWNvbHVtbiIsImJyZWFrLWluc2lkZSI6ImF1dG8gfCBhdm9pZCB8IGF2b2lkLXBhZ2UgfCBhdm9pZC1jb2x1bW4iLCJjYXB0aW9uLXNpZGUiOiJ0b3AgfCBib3R0b20gfCBpbmhlcml0IixjbGVhcjoibm9uZSB8IHJpZ2h0IHwgbGVmdCB8IGJvdGggfCBpbmhlcml0IixjbGlwOjEsY29sb3I6Ijxjb2xvcj4gfCBpbmhlcml0IiwiY29sb3ItcHJvZmlsZSI6MSwiY29sdW1uLWNvdW50IjoiPGludGVnZXI+IHwgYXV0byIsImNvbHVtbi1maWxsIjoiYXV0byB8IGJhbGFuY2UiLCJjb2x1bW4tZ2FwIjoiPGxlbmd0aD4gfCBub3JtYWwiLCJjb2x1bW4tcnVsZSI6Ijxib3JkZXItd2lkdGg+IHx8IDxib3JkZXItc3R5bGU+IHx8IDxjb2xvcj4iLCJjb2x1bW4tcnVsZS1jb2xvciI6Ijxjb2xvcj4iLCJjb2x1bW4tcnVsZS1zdHlsZSI6Ijxib3JkZXItc3R5bGU+IiwiY29sdW1uLXJ1bGUtd2lkdGgiOiI8Ym9yZGVyLXdpZHRoPiIsImNvbHVtbi1zcGFuIjoibm9uZSB8IGFsbCIsImNvbHVtbi13aWR0aCI6IjxsZW5ndGg+IHwgYXV0byIsY29sdW1uczoxLGNvbnRlbnQ6MSwiY291bnRlci1pbmNyZW1lbnQiOjEsImNvdW50ZXItcmVzZXQiOjEsY3JvcDoiPHNoYXBlPiB8IGF1dG8iLGN1ZToiY3VlLWFmdGVyIHwgY3VlLWJlZm9yZSB8IGluaGVyaXQiLCJjdWUtYWZ0ZXIiOjEsImN1ZS1iZWZvcmUiOjEsY3Vyc29yOjEsZGlyZWN0aW9uOiJsdHIgfCBydGwgfCBpbmhlcml0IixkaXNwbGF5OiJpbmxpbmUgfCBibG9jayB8IGxpc3QtaXRlbSB8IGlubGluZS1ibG9jayB8IHRhYmxlIHwgaW5saW5lLXRhYmxlIHwgdGFibGUtcm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVyLWdyb3VwIHwgdGFibGUtcm93IHwgdGFibGUtY29sdW1uLWdyb3VwIHwgdGFibGUtY29sdW1uIHwgdGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCBib3ggfCBpbmxpbmUtYm94IHwgZ3JpZCB8IGlubGluZS1ncmlkIHwgbm9uZSB8IGluaGVyaXQiLCJkb21pbmFudC1iYXNlbGluZSI6MSwiZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdCI6ImNlbnRyYWwgfCBtaWRkbGUgfCBhZnRlci1lZGdlIHwgdGV4dC1hZnRlci1lZGdlIHwgaWRlb2dyYXBoaWMgfCBhbHBoYWJldGljIHwgbWF0aGVtYXRpY2FsIHwgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4iLCJkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ24iOiJiYXNlbGluZSB8IHVzZS1zY3JpcHQgfCBiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBhZnRlci1lZGdlIHwgdGV4dC1hZnRlci1lZGdlIHwgY2VudHJhbCB8IG1pZGRsZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwiLCJkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdCI6ImJlZm9yZS1lZGdlIHwgdGV4dC1iZWZvcmUtZWRnZSB8IGNlbnRyYWwgfCBtaWRkbGUgfCBoYW5naW5nIHwgbWF0aGVtYXRpY2FsIHwgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4iLCJkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWduIjoiY2Fwcy1oZWlnaHQgfCBiYXNlbGluZSB8IHVzZS1zY3JpcHQgfCBiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBhZnRlci1lZGdlIHwgdGV4dC1hZnRlci1lZGdlIHwgY2VudHJhbCB8IG1pZGRsZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwiLCJkcm9wLWluaXRpYWwtc2l6ZSI6ImF1dG8gfCBsaW5lIHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLCJkcm9wLWluaXRpYWwtdmFsdWUiOiJpbml0aWFsIHwgPGludGVnZXI+IixlbGV2YXRpb246IjxhbmdsZT4gfCBiZWxvdyB8IGxldmVsIHwgYWJvdmUgfCBoaWdoZXIgfCBsb3dlciB8IGluaGVyaXQiLCJlbXB0eS1jZWxscyI6InNob3cgfCBoaWRlIHwgaW5oZXJpdCIsZmlsdGVyOjEsZml0OiJmaWxsIHwgaGlkZGVuIHwgbWVldCB8IHNsaWNlIiwiZml0LXBvc2l0aW9uIjoxLCJmbG9hdCI6ImxlZnQgfCByaWdodCB8IG5vbmUgfCBpbmhlcml0IiwiZmxvYXQtb2Zmc2V0IjoxLGZvbnQ6MSwiZm9udC1mYW1pbHkiOjEsImZvbnQtc2l6ZSI6IjxhYnNvbHV0ZS1zaXplPiB8IDxyZWxhdGl2ZS1zaXplPiB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdCIsImZvbnQtc2l6ZS1hZGp1c3QiOiI8bnVtYmVyPiB8IG5vbmUgfCBpbmhlcml0IiwiZm9udC1zdHJldGNoIjoibm9ybWFsIHwgdWx0cmEtY29uZGVuc2VkIHwgZXh0cmEtY29uZGVuc2VkIHwgY29uZGVuc2VkIHwgc2VtaS1jb25kZW5zZWQgfCBzZW1pLWV4cGFuZGVkIHwgZXhwYW5kZWQgfCBleHRyYS1leHBhbmRlZCB8IHVsdHJhLWV4cGFuZGVkIHwgaW5oZXJpdCIsImZvbnQtc3R5bGUiOiJub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdCIsImZvbnQtdmFyaWFudCI6Im5vcm1hbCB8IHNtYWxsLWNhcHMgfCBpbmhlcml0IiwiZm9udC13ZWlnaHQiOiJub3JtYWwgfCBib2xkIHwgYm9sZGVyIHwgbGlnaHRlciB8IDEwMCB8IDIwMCB8IDMwMCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgwMCB8IDkwMCB8IGluaGVyaXQiLCJncmlkLWNlbGwtc3RhY2tpbmciOiJjb2x1bW5zIHwgcm93cyB8IGxheWVyIiwiZ3JpZC1jb2x1bW4iOjEsImdyaWQtY29sdW1ucyI6MSwiZ3JpZC1jb2x1bW4tYWxpZ24iOiJzdGFydCB8IGVuZCB8IGNlbnRlciB8IHN0cmV0Y2giLCJncmlkLWNvbHVtbi1zaXppbmciOjEsImdyaWQtY29sdW1uLXNwYW4iOiI8aW50ZWdlcj4iLCJncmlkLWZsb3ciOiJub25lIHwgcm93cyB8IGNvbHVtbnMiLCJncmlkLWxheWVyIjoiPGludGVnZXI+IiwiZ3JpZC1yb3ciOjEsImdyaWQtcm93cyI6MSwiZ3JpZC1yb3ctYWxpZ24iOiJzdGFydCB8IGVuZCB8IGNlbnRlciB8IHN0cmV0Y2giLCJncmlkLXJvdy1zcGFuIjoiPGludGVnZXI+IiwiZ3JpZC1yb3ctc2l6aW5nIjoxLCJoYW5naW5nLXB1bmN0dWF0aW9uIjoxLGhlaWdodDoiPG1hcmdpbi13aWR0aD4gfCBpbmhlcml0IiwiaHlwaGVuYXRlLWFmdGVyIjoiPGludGVnZXI+IHwgYXV0byIsImh5cGhlbmF0ZS1iZWZvcmUiOiI8aW50ZWdlcj4gfCBhdXRvIiwiaHlwaGVuYXRlLWNoYXJhY3RlciI6IjxzdHJpbmc+IHwgYXV0byIsImh5cGhlbmF0ZS1saW5lcyI6Im5vLWxpbWl0IHwgPGludGVnZXI+IiwiaHlwaGVuYXRlLXJlc291cmNlIjoxLGh5cGhlbnM6Im5vbmUgfCBtYW51YWwgfCBhdXRvIixpY29uOjEsImltYWdlLW9yaWVudGF0aW9uIjoiYW5nbGUgfCBhdXRvIiwiaW1hZ2UtcmVuZGVyaW5nIjoxLCJpbWFnZS1yZXNvbHV0aW9uIjoxLCJpbmxpbmUtYm94LWFsaWduIjoiaW5pdGlhbCB8IGxhc3QgfCA8aW50ZWdlcj4iLGxlZnQ6IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIsImxldHRlci1zcGFjaW5nIjoiPGxlbmd0aD4gfCBub3JtYWwgfCBpbmhlcml0IiwibGluZS1oZWlnaHQiOiI8bnVtYmVyPiB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbm9ybWFsIHwgaW5oZXJpdCIsImxpbmUtYnJlYWsiOiJhdXRvIHwgbG9vc2UgfCBub3JtYWwgfCBzdHJpY3QiLCJsaW5lLXN0YWNraW5nIjoxLCJsaW5lLXN0YWNraW5nLXJ1YnkiOiJleGNsdWRlLXJ1YnkgfCBpbmNsdWRlLXJ1YnkiLCJsaW5lLXN0YWNraW5nLXNoaWZ0IjoiY29uc2lkZXItc2hpZnRzIHwgZGlzcmVnYXJkLXNoaWZ0cyIsImxpbmUtc3RhY2tpbmctc3RyYXRlZ3kiOiJpbmxpbmUtbGluZS1oZWlnaHQgfCBibG9jay1saW5lLWhlaWdodCB8IG1heC1oZWlnaHQgfCBncmlkLWhlaWdodCIsImxpc3Qtc3R5bGUiOjEsImxpc3Qtc3R5bGUtaW1hZ2UiOiI8dXJpPiB8IG5vbmUgfCBpbmhlcml0IiwibGlzdC1zdHlsZS1wb3NpdGlvbiI6Imluc2lkZSB8IG91dHNpZGUgfCBpbmhlcml0IiwibGlzdC1zdHlsZS10eXBlIjoiZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8IGRlY2ltYWwgfCBkZWNpbWFsLWxlYWRpbmctemVybyB8IGxvd2VyLXJvbWFuIHwgdXBwZXItcm9tYW4gfCBsb3dlci1ncmVlayB8IGxvd2VyLWxhdGluIHwgdXBwZXItbGF0aW4gfCBhcm1lbmlhbiB8IGdlb3JnaWFuIHwgbG93ZXItYWxwaGEgfCB1cHBlci1hbHBoYSB8IG5vbmUgfCBpbmhlcml0IixtYXJnaW46e211bHRpOiI8bWFyZ2luLXdpZHRoPiB8IGluaGVyaXQiLG1heDo0fSwibWFyZ2luLWJvdHRvbSI6IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIsIm1hcmdpbi1sZWZ0IjoiPG1hcmdpbi13aWR0aD4gfCBpbmhlcml0IiwibWFyZ2luLXJpZ2h0IjoiPG1hcmdpbi13aWR0aD4gfCBpbmhlcml0IiwibWFyZ2luLXRvcCI6IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIsbWFyazoxLCJtYXJrLWFmdGVyIjoxLCJtYXJrLWJlZm9yZSI6MSxtYXJrczoxLCJtYXJxdWVlLWRpcmVjdGlvbiI6MSwibWFycXVlZS1wbGF5LWNvdW50IjoxLCJtYXJxdWVlLXNwZWVkIjoxLCJtYXJxdWVlLXN0eWxlIjoxLCJtYXgtaGVpZ2h0IjoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBub25lIHwgaW5oZXJpdCIsIm1heC13aWR0aCI6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbm9uZSB8IGluaGVyaXQiLCJtaW4taGVpZ2h0IjoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0IiwibWluLXdpZHRoIjoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0IiwibW92ZS10byI6MSwibmF2LWRvd24iOjEsIm5hdi1pbmRleCI6MSwibmF2LWxlZnQiOjEsIm5hdi1yaWdodCI6MSwibmF2LXVwIjoxLG9wYWNpdHk6IjxudW1iZXI+IHwgaW5oZXJpdCIsb3JwaGFuczoiPGludGVnZXI+IHwgaW5oZXJpdCIsb3V0bGluZToxLCJvdXRsaW5lLWNvbG9yIjoiPGNvbG9yPiB8IGludmVydCB8IGluaGVyaXQiLCJvdXRsaW5lLW9mZnNldCI6MSwib3V0bGluZS1zdHlsZSI6Ijxib3JkZXItc3R5bGU+IHwgaW5oZXJpdCIsIm91dGxpbmUtd2lkdGgiOiI8Ym9yZGVyLXdpZHRoPiB8IGluaGVyaXQiLG92ZXJmbG93OiJ2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IGluaGVyaXQiLCJvdmVyZmxvdy1zdHlsZSI6MSwib3ZlcmZsb3cteCI6MSwib3ZlcmZsb3cteSI6MSxwYWRkaW5nOnttdWx0aToiPHBhZGRpbmctd2lkdGg+IHwgaW5oZXJpdCIsbWF4OjR9LCJwYWRkaW5nLWJvdHRvbSI6IjxwYWRkaW5nLXdpZHRoPiB8IGluaGVyaXQiLCJwYWRkaW5nLWxlZnQiOiI8cGFkZGluZy13aWR0aD4gfCBpbmhlcml0IiwicGFkZGluZy1yaWdodCI6IjxwYWRkaW5nLXdpZHRoPiB8IGluaGVyaXQiLCJwYWRkaW5nLXRvcCI6IjxwYWRkaW5nLXdpZHRoPiB8IGluaGVyaXQiLHBhZ2U6MSwicGFnZS1icmVhay1hZnRlciI6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQiLCJwYWdlLWJyZWFrLWJlZm9yZSI6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQiLCJwYWdlLWJyZWFrLWluc2lkZSI6ImF1dG8gfCBhdm9pZCB8IGluaGVyaXQiLCJwYWdlLXBvbGljeSI6MSxwYXVzZToxLCJwYXVzZS1hZnRlciI6MSwicGF1c2UtYmVmb3JlIjoxLHBlcnNwZWN0aXZlOjEsInBlcnNwZWN0aXZlLW9yaWdpbiI6MSxwaG9uZW1lczoxLHBpdGNoOjEsInBpdGNoLXJhbmdlIjoxLCJwbGF5LWR1cmluZyI6MSxwb3NpdGlvbjoic3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgaW5oZXJpdCIsInByZXNlbnRhdGlvbi1sZXZlbCI6MSwicHVuY3R1YXRpb24tdHJpbSI6MSxxdW90ZXM6MSwicmVuZGVyaW5nLWludGVudCI6MSxyZXNpemU6MSxyZXN0OjEsInJlc3QtYWZ0ZXIiOjEsInJlc3QtYmVmb3JlIjoxLHJpY2huZXNzOjEscmlnaHQ6IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIscm90YXRpb246MSwicm90YXRpb24tcG9pbnQiOjEsInJ1YnktYWxpZ24iOjEsInJ1Ynktb3ZlcmhhbmciOjEsInJ1YnktcG9zaXRpb24iOjEsInJ1Ynktc3BhbiI6MSxzaXplOjEsc3BlYWs6Im5vcm1hbCB8IG5vbmUgfCBzcGVsbC1vdXQgfCBpbmhlcml0Iiwic3BlYWstaGVhZGVyIjoib25jZSB8IGFsd2F5cyB8IGluaGVyaXQiLCJzcGVhay1udW1lcmFsIjoiZGlnaXRzIHwgY29udGludW91cyB8IGluaGVyaXQiLCJzcGVhay1wdW5jdHVhdGlvbiI6ImNvZGUgfCBub25lIHwgaW5oZXJpdCIsInNwZWVjaC1yYXRlIjoxLHNyYzoxLHN0cmVzczoxLCJzdHJpbmctc2V0IjoxLCJ0YWJsZS1sYXlvdXQiOiJhdXRvIHwgZml4ZWQgfCBpbmhlcml0IiwidGFiLXNpemUiOiI8aW50ZWdlcj4gfCA8bGVuZ3RoPiIsdGFyZ2V0OjEsInRhcmdldC1uYW1lIjoxLCJ0YXJnZXQtbmV3IjoxLCJ0YXJnZXQtcG9zaXRpb24iOjEsInRleHQtYWxpZ24iOiJsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgaW5oZXJpdCIsInRleHQtYWxpZ24tbGFzdCI6MSwidGV4dC1kZWNvcmF0aW9uIjoxLCJ0ZXh0LWVtcGhhc2lzIjoxLCJ0ZXh0LWhlaWdodCI6MSwidGV4dC1pbmRlbnQiOiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQiLCJ0ZXh0LWp1c3RpZnkiOiJhdXRvIHwgbm9uZSB8IGludGVyLXdvcmQgfCBpbnRlci1pZGVvZ3JhcGggfCBpbnRlci1jbHVzdGVyIHwgZGlzdHJpYnV0ZSB8IGthc2hpZGEiLCJ0ZXh0LW91dGxpbmUiOjEsInRleHQtb3ZlcmZsb3ciOjEsInRleHQtc2hhZG93IjoxLCJ0ZXh0LXRyYW5zZm9ybSI6ImNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdCIsInRleHQtd3JhcCI6Im5vcm1hbCB8IG5vbmUgfCBhdm9pZCIsdG9wOiI8bWFyZ2luLXdpZHRoPiB8IGluaGVyaXQiLHRyYW5zZm9ybToxLCJ0cmFuc2Zvcm0tb3JpZ2luIjoxLCJ0cmFuc2Zvcm0tc3R5bGUiOjEsdHJhbnNpdGlvbjoxLCJ0cmFuc2l0aW9uLWRlbGF5IjoxLCJ0cmFuc2l0aW9uLWR1cmF0aW9uIjoxLCJ0cmFuc2l0aW9uLXByb3BlcnR5IjoxLCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiI6MSwidW5pY29kZS1iaWRpIjoibm9ybWFsIHwgZW1iZWQgfCBiaWRpLW92ZXJyaWRlIHwgaW5oZXJpdCIsInVzZXItbW9kaWZ5IjoicmVhZC1vbmx5IHwgcmVhZC13cml0ZSB8IHdyaXRlLW9ubHkgfCBpbmhlcml0IiwidXNlci1zZWxlY3QiOiJub25lIHwgdGV4dCB8IHRvZ2dsZSB8IGVsZW1lbnQgfCBlbGVtZW50cyB8IGFsbCB8IGluaGVyaXQiLCJ2ZXJ0aWNhbC1hbGlnbiI6IjxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IHwgYmFzZWxpbmUgfCBzdWIgfCBzdXBlciB8IHRvcCB8IHRleHQtdG9wIHwgbWlkZGxlIHwgYm90dG9tIHwgdGV4dC1ib3R0b20gfCBpbmhlcml0Iix2aXNpYmlsaXR5OiJ2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2UgfCBpbmhlcml0Iiwidm9pY2UtYmFsYW5jZSI6MSwidm9pY2UtZHVyYXRpb24iOjEsInZvaWNlLWZhbWlseSI6MSwidm9pY2UtcGl0Y2giOjEsInZvaWNlLXBpdGNoLXJhbmdlIjoxLCJ2b2ljZS1yYXRlIjoxLCJ2b2ljZS1zdHJlc3MiOjEsInZvaWNlLXZvbHVtZSI6MSx2b2x1bWU6MSwid2hpdGUtc3BhY2UiOiJub3JtYWwgfCBwcmUgfCBub3dyYXAgfCBwcmUtd3JhcCB8IHByZS1saW5lIHwgaW5oZXJpdCIsIndoaXRlLXNwYWNlLWNvbGxhcHNlIjoxLHdpZG93czoiPGludGVnZXI+IHwgaW5oZXJpdCIsd2lkdGg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQiLCJ3b3JkLWJyZWFrIjoibm9ybWFsIHwga2VlcC1hbGwgfCBicmVhay1hbGwiLCJ3b3JkLXNwYWNpbmciOiI8bGVuZ3RoPiB8IG5vcm1hbCB8IGluaGVyaXQiLCJ3b3JkLXdyYXAiOjEsInotaW5kZXgiOiI8aW50ZWdlcj4gfCBhdXRvIHwgaW5oZXJpdCIsem9vbToiPG51bWJlcj4gfCA8cGVyY2VudGFnZT4gfCBub3JtYWwifTtQcm9wZXJ0eU5hbWUucHJvdG90eXBlPW5ldyBTeW50YXhVbml0LFByb3BlcnR5TmFtZS5wcm90b3R5cGUuY29uc3RydWN0b3I9UHJvcGVydHlOYW1lLFByb3BlcnR5TmFtZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5oYWNrP3RoaXMuaGFjazoiIikrdGhpcy50ZXh0fSxQcm9wZXJ0eVZhbHVlLnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxQcm9wZXJ0eVZhbHVlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1Qcm9wZXJ0eVZhbHVlLFByb3BlcnR5VmFsdWVJdGVyYXRvci5wcm90b3R5cGUuY291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFydHMubGVuZ3RofSxQcm9wZXJ0eVZhbHVlSXRlcmF0b3IucHJvdG90eXBlLmlzRmlyc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faT09PTB9LFByb3BlcnR5VmFsdWVJdGVyYXRvci5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pPHRoaXMuX3BhcnRzLmxlbmd0aH0sUHJvcGVydHlWYWx1ZUl0ZXJhdG9yLnByb3RvdHlwZS5tYXJrPWZ1bmN0aW9uKCl7dGhpcy5fbWFya3MucHVzaCh0aGlzLl9pKX0sUHJvcGVydHlWYWx1ZUl0ZXJhdG9yLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmhhc05leHQoKT90aGlzLl9wYXJ0c1t0aGlzLl9pKyhhfHwwKV06bnVsbH0sUHJvcGVydHlWYWx1ZUl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzTmV4dCgpP3RoaXMuX3BhcnRzW3RoaXMuX2krK106bnVsbH0sUHJvcGVydHlWYWx1ZUl0ZXJhdG9yLnByb3RvdHlwZS5wcmV2aW91cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pPjA/dGhpcy5fcGFydHNbLS10aGlzLl9pXTpudWxsfSxQcm9wZXJ0eVZhbHVlSXRlcmF0b3IucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oKXt0aGlzLl9tYXJrcy5sZW5ndGgmJih0aGlzLl9pPXRoaXMuX21hcmtzLnBvcCgpKX0sUHJvcGVydHlWYWx1ZVBhcnQucHJvdG90eXBlPW5ldyBTeW50YXhVbml0LFByb3BlcnR5VmFsdWVQYXJ0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1Qcm9wZXJ0eVZhbHVlUGFydCxQcm9wZXJ0eVZhbHVlUGFydC5mcm9tVG9rZW49ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQcm9wZXJ0eVZhbHVlUGFydChhLnZhbHVlLGEuc3RhcnRMaW5lLGEuc3RhcnRDb2wpfTt2YXIgUHNldWRvcz17IjpmaXJzdC1sZXR0ZXIiOjEsIjpmaXJzdC1saW5lIjoxLCI6YmVmb3JlIjoxLCI6YWZ0ZXIiOjF9O1BzZXVkb3MuRUxFTUVOVD0xLFBzZXVkb3MuQ0xBU1M9MixQc2V1ZG9zLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gYS5pbmRleE9mKCI6OiIpPT09MHx8UHNldWRvc1thLnRvTG93ZXJDYXNlKCldPT1Qc2V1ZG9zLkVMRU1FTlR9LFNlbGVjdG9yLnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxTZWxlY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3I9U2VsZWN0b3IsU2VsZWN0b3JQYXJ0LnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxTZWxlY3RvclBhcnQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVNlbGVjdG9yUGFydCxTZWxlY3RvclN1YlBhcnQucHJvdG90eXBlPW5ldyBTeW50YXhVbml0LFNlbGVjdG9yU3ViUGFydC5wcm90b3R5cGUuY29uc3RydWN0b3I9U2VsZWN0b3JTdWJQYXJ0LFNwZWNpZmljaXR5LnByb3RvdHlwZT17Y29uc3RydWN0b3I6U3BlY2lmaWNpdHksY29tcGFyZTpmdW5jdGlvbihhKXt2YXIgYj1bImEiLCJiIiwiYyIsImQiXSxjLGQ7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspe2lmKHRoaXNbYltjXV08YVtiW2NdXSlyZXR1cm4tMTtpZih0aGlzW2JbY11dPmFbYltjXV0pcmV0dXJuIDF9cmV0dXJuIDB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hKjFlMyt0aGlzLmIqMTAwK3RoaXMuYyoxMCt0aGlzLmR9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYSsiLCIrdGhpcy5iKyIsIit0aGlzLmMrIiwiK3RoaXMuZH19LFNwZWNpZmljaXR5LmNhbGN1bGF0ZT1mdW5jdGlvbihhKXtmdW5jdGlvbiBoKGEpe3ZhciBiLGMsZCxpLGo9YS5lbGVtZW50TmFtZT9hLmVsZW1lbnROYW1lLnRleHQ6IiIsaztqJiZqLmNoYXJBdChqLmxlbmd0aC0xKSE9IioiJiZnKys7Zm9yKGI9MCxkPWEubW9kaWZpZXJzLmxlbmd0aDtiPGQ7YisrKXtrPWEubW9kaWZpZXJzW2JdO3N3aXRjaChrLnR5cGUpe2Nhc2UiY2xhc3MiOmNhc2UiYXR0cmlidXRlIjpmKys7YnJlYWs7Y2FzZSJpZCI6ZSsrO2JyZWFrO2Nhc2UicHNldWRvIjpQc2V1ZG9zLmlzRWxlbWVudChrLnRleHQpP2crKzpmKys7YnJlYWs7Y2FzZSJub3QiOmZvcihjPTAsaT1rLmFyZ3MubGVuZ3RoO2M8aTtjKyspaChrLmFyZ3NbY10pfX19dmFyIGIsYyxkLGU9MCxmPTAsZz0wO2ZvcihiPTAsYz1hLnBhcnRzLmxlbmd0aDtiPGM7YisrKWQ9YS5wYXJ0c1tiXSxkIGluc3RhbmNlb2YgU2VsZWN0b3JQYXJ0JiZoKGQpO3JldHVybiBuZXcgU3BlY2lmaWNpdHkoMCxlLGYsZyl9O3ZhciBoPS9eWzAtOWEtZkEtRl0kLyxub25hc2NpaT0vXltcdTAwODAtXHVGRkZGXSQvLG5sPS9cbnxcclxufFxyfFxmLztUb2tlblN0cmVhbS5wcm90b3R5cGU9bWl4KG5ldyBUb2tlblN0cmVhbUJhc2Use19nZXRUb2tlbjpmdW5jdGlvbihhKXt2YXIgYixjPXRoaXMuX3JlYWRlcixkPW51bGwsZT1jLmdldExpbmUoKSxmPWMuZ2V0Q29sKCk7Yj1jLnJlYWQoKTt3aGlsZShiKXtzd2l0Y2goYil7Y2FzZSIvIjpjLnBlZWsoKT09IioiP2Q9dGhpcy5jb21tZW50VG9rZW4oYixlLGYpOmQ9dGhpcy5jaGFyVG9rZW4oYixlLGYpO2JyZWFrO2Nhc2UifCI6Y2FzZSJ+IjpjYXNlIl4iOmNhc2UiJCI6Y2FzZSIqIjpjLnBlZWsoKT09Ij0iP2Q9dGhpcy5jb21wYXJpc29uVG9rZW4oYixlLGYpOmQ9dGhpcy5jaGFyVG9rZW4oYixlLGYpO2JyZWFrO2Nhc2UnIic6Y2FzZSInIjpkPXRoaXMuc3RyaW5nVG9rZW4oYixlLGYpO2JyZWFrO2Nhc2UiIyI6aXNOYW1lQ2hhcihjLnBlZWsoKSk/ZD10aGlzLmhhc2hUb2tlbihiLGUsZik6ZD10aGlzLmNoYXJUb2tlbihiLGUsZik7YnJlYWs7Y2FzZSIuIjppc0RpZ2l0KGMucGVlaygpKT9kPXRoaXMubnVtYmVyVG9rZW4oYixlLGYpOmQ9dGhpcy5jaGFyVG9rZW4oYixlLGYpO2JyZWFrO2Nhc2UiLSI6Yy5wZWVrKCk9PSItIj9kPXRoaXMuaHRtbENvbW1lbnRFbmRUb2tlbihiLGUsZik6aXNOYW1lU3RhcnQoYy5wZWVrKCkpP2Q9dGhpcy5pZGVudE9yRnVuY3Rpb25Ub2tlbihiLGUsZik6ZD10aGlzLmNoYXJUb2tlbihiLGUsZik7YnJlYWs7Y2FzZSIhIjpkPXRoaXMuaW1wb3J0YW50VG9rZW4oYixlLGYpO2JyZWFrO2Nhc2UiQCI6ZD10aGlzLmF0UnVsZVRva2VuKGIsZSxmKTticmVhaztjYXNlIjoiOmQ9dGhpcy5ub3RUb2tlbihiLGUsZik7YnJlYWs7Y2FzZSI8IjpkPXRoaXMuaHRtbENvbW1lbnRTdGFydFRva2VuKGIsZSxmKTticmVhaztjYXNlIlUiOmNhc2UidSI6aWYoYy5wZWVrKCk9PSIrIil7ZD10aGlzLnVuaWNvZGVSYW5nZVRva2VuKGIsZSxmKTticmVha307ZGVmYXVsdDppc0RpZ2l0KGIpP2Q9dGhpcy5udW1iZXJUb2tlbihiLGUsZik6aXNXaGl0ZXNwYWNlKGIpP2Q9dGhpcy53aGl0ZXNwYWNlVG9rZW4oYixlLGYpOmlzSWRlbnRTdGFydChiKT9kPXRoaXMuaWRlbnRPckZ1bmN0aW9uVG9rZW4oYixlLGYpOmQ9dGhpcy5jaGFyVG9rZW4oYixlLGYpfWJyZWFrfXJldHVybiFkJiZiPT09bnVsbCYmKGQ9dGhpcy5jcmVhdGVUb2tlbihUb2tlbnMuRU9GLG51bGwsZSxmKSksZH0sY3JlYXRlVG9rZW46ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj10aGlzLl9yZWFkZXI7cmV0dXJuIGU9ZXx8e30se3ZhbHVlOmIsdHlwZTphLGNoYW5uZWw6ZS5jaGFubmVsLGhpZGU6ZS5oaWRlfHwhMSxzdGFydExpbmU6YyxzdGFydENvbDpkLGVuZExpbmU6Zi5nZXRMaW5lKCksZW5kQ29sOmYuZ2V0Q29sKCl9fSxhdFJ1bGVUb2tlbjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSxlPXRoaXMuX3JlYWRlcixmPVRva2Vucy5DSEFSLGc9ITEsaCxpO2UubWFyaygpLGg9dGhpcy5yZWFkTmFtZSgpLGQ9YStoLGY9VG9rZW5zLnR5cGUoZC50b0xvd2VyQ2FzZSgpKTtpZihmPT1Ub2tlbnMuQ0hBUnx8Zj09VG9rZW5zLlVOS05PV04pZC5sZW5ndGg+MT9mPVRva2Vucy5VTktOT1dOX1NZTTooZj1Ub2tlbnMuQ0hBUixkPWEsZS5yZXNldCgpKTtyZXR1cm4gdGhpcy5jcmVhdGVUb2tlbihmLGQsYixjKX0sY2hhclRva2VuOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1Ub2tlbnMudHlwZShhKTtyZXR1cm4gZD09LTEmJihkPVRva2Vucy5DSEFSKSx0aGlzLmNyZWF0ZVRva2VuKGQsYSxiLGMpfSxjb21tZW50VG9rZW46ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX3JlYWRlcixlPXRoaXMucmVhZENvbW1lbnQoYSk7cmV0dXJuIHRoaXMuY3JlYXRlVG9rZW4oVG9rZW5zLkNPTU1FTlQsZSxiLGMpfSxjb21wYXJpc29uVG9rZW46ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX3JlYWRlcixlPWErZC5yZWFkKCksZj1Ub2tlbnMudHlwZShlKXx8VG9rZW5zLkNIQVI7cmV0dXJuIHRoaXMuY3JlYXRlVG9rZW4oZixlLGIsYyl9LGhhc2hUb2tlbjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fcmVhZGVyLGU9dGhpcy5yZWFkTmFtZShhKTtyZXR1cm4gdGhpcy5jcmVhdGVUb2tlbihUb2tlbnMuSEFTSCxlLGIsYyl9LGh0bWxDb21tZW50U3RhcnRUb2tlbjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fcmVhZGVyLGU9YTtyZXR1cm4gZC5tYXJrKCksZSs9ZC5yZWFkQ291bnQoMyksZT09IjwhLS0iP3RoaXMuY3JlYXRlVG9rZW4oVG9rZW5zLkNETyxlLGIsYyk6KGQucmVzZXQoKSx0aGlzLmNoYXJUb2tlbihhLGIsYykpfSxodG1sQ29tbWVudEVuZFRva2VuOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLl9yZWFkZXIsZT1hO3JldHVybiBkLm1hcmsoKSxlKz1kLnJlYWRDb3VudCgyKSxlPT0iLS0+Ij90aGlzLmNyZWF0ZVRva2VuKFRva2Vucy5DREMsZSxiLGMpOihkLnJlc2V0KCksdGhpcy5jaGFyVG9rZW4oYSxiLGMpKX0saWRlbnRPckZ1bmN0aW9uVG9rZW46ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX3JlYWRlcixlPXRoaXMucmVhZE5hbWUoYSksZj1Ub2tlbnMuSURFTlQ7cmV0dXJuIGQucGVlaygpPT0iKCI/KGUrPWQucmVhZCgpLGUudG9Mb3dlckNhc2UoKT09InVybCgiPyhmPVRva2Vucy5VUkksZT10aGlzLnJlYWRVUkkoZSksZS50b0xvd2VyQ2FzZSgpPT0idXJsKCImJihmPVRva2Vucy5GVU5DVElPTikpOmY9VG9rZW5zLkZVTkNUSU9OKTpkLnBlZWsoKT09IjoiJiZlLnRvTG93ZXJDYXNlKCk9PSJwcm9naWQiJiYoZSs9ZC5yZWFkVG8oIigiKSxmPVRva2Vucy5JRV9GVU5DVElPTiksdGhpcy5jcmVhdGVUb2tlbihmLGUsYixjKX0saW1wb3J0YW50VG9rZW46ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX3JlYWRlcixlPWEsZj1Ub2tlbnMuQ0hBUixnLGg7ZC5tYXJrKCksaD1kLnJlYWQoKTt3aGlsZShoKXtpZihoPT0iLyIpe2lmKGQucGVlaygpIT0iKiIpYnJlYWs7Zz10aGlzLnJlYWRDb21tZW50KGgpO2lmKGc9PT0iIilicmVha31lbHNle2lmKCFpc1doaXRlc3BhY2UoaCkpe2lmKC9pL2kudGVzdChoKSl7Zz1kLnJlYWRDb3VudCg4KSwvbXBvcnRhbnQvaS50ZXN0KGcpJiYoZSs9aCtnLGY9VG9rZW5zLklNUE9SVEFOVF9TWU0pO2JyZWFrfWJyZWFrfWUrPWgrdGhpcy5yZWFkV2hpdGVzcGFjZSgpfWg9ZC5yZWFkKCl9cmV0dXJuIGY9PVRva2Vucy5DSEFSPyhkLnJlc2V0KCksdGhpcy5jaGFyVG9rZW4oYSxiLGMpKTp0aGlzLmNyZWF0ZVRva2VuKGYsZSxiLGMpfSxub3RUb2tlbjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fcmVhZGVyLGU9YTtyZXR1cm4gZC5tYXJrKCksZSs9ZC5yZWFkQ291bnQoNCksZS50b0xvd2VyQ2FzZSgpPT0iOm5vdCgiP3RoaXMuY3JlYXRlVG9rZW4oVG9rZW5zLk5PVCxlLGIsYyk6KGQucmVzZXQoKSx0aGlzLmNoYXJUb2tlbihhLGIsYykpfSxudW1iZXJUb2tlbjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fcmVhZGVyLGU9dGhpcy5yZWFkTnVtYmVyKGEpLGYsZz1Ub2tlbnMuTlVNQkVSLGg9ZC5wZWVrKCk7cmV0dXJuIGlzSWRlbnRTdGFydChoKT8oZj10aGlzLnJlYWROYW1lKGQucmVhZCgpKSxlKz1mLC9eZW0kfF5leCR8XnB4JHxeZ2QkfF5yZW0kfF52dyR8XnZoJHxedm0kfF5jaCR8XmNtJHxebW0kfF5pbiR8XnB0JHxecGMkL2kudGVzdChmKT9nPVRva2Vucy5MRU5HVEg6L15kZWd8XnJhZCR8XmdyYWQkL2kudGVzdChmKT9nPVRva2Vucy5BTkdMRTovXm1zJHxecyQvaS50ZXN0KGYpP2c9VG9rZW5zLlRJTUU6L15oeiR8XmtoeiQvaS50ZXN0KGYpP2c9VG9rZW5zLkZSRVE6L15kcGkkfF5kcGNtJC9pLnRlc3QoZik/Zz1Ub2tlbnMuUkVTT0xVVElPTjpnPVRva2Vucy5ESU1FTlNJT04pOmg9PSIlIiYmKGUrPWQucmVhZCgpLGc9VG9rZW5zLlBFUkNFTlRBR0UpLHRoaXMuY3JlYXRlVG9rZW4oZyxlLGIsYyl9LHN0cmluZ1Rva2VuOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLGU9YSxmPXRoaXMuX3JlYWRlcixnPWEsaD1Ub2tlbnMuU1RSSU5HLGk9Zi5yZWFkKCk7d2hpbGUoaSl7ZSs9aTtpZihpPT1kJiZnIT0iXFwiKWJyZWFrO2lmKGlzTmV3TGluZShmLnBlZWsoKSkmJmkhPSJcXCIpe2g9VG9rZW5zLklOVkFMSUQ7YnJlYWt9Zz1pLGk9Zi5yZWFkKCl9cmV0dXJuIGk9PT1udWxsJiYoaD1Ub2tlbnMuSU5WQUxJRCksdGhpcy5jcmVhdGVUb2tlbihoLGUsYixjKX0sdW5pY29kZVJhbmdlVG9rZW46ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX3JlYWRlcixlPWEsZixnPVRva2Vucy5DSEFSO3JldHVybiBkLnBlZWsoKT09IisiJiYoZC5tYXJrKCksZSs9ZC5yZWFkKCksZSs9dGhpcy5yZWFkVW5pY29kZVJhbmdlUGFydCghMCksZS5sZW5ndGg9PTI/ZC5yZXNldCgpOihnPVRva2Vucy5VTklDT0RFX1JBTkdFLGUuaW5kZXhPZigiPyIpPT0tMSYmZC5wZWVrKCk9PSItIiYmKGQubWFyaygpLGY9ZC5yZWFkKCksZis9dGhpcy5yZWFkVW5pY29kZVJhbmdlUGFydCghMSksZi5sZW5ndGg9PTE/ZC5yZXNldCgpOmUrPWYpKSksdGhpcy5jcmVhdGVUb2tlbihnLGUsYixjKX0sd2hpdGVzcGFjZVRva2VuOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLl9yZWFkZXIsZT1hK3RoaXMucmVhZFdoaXRlc3BhY2UoKTtyZXR1cm4gdGhpcy5jcmVhdGVUb2tlbihUb2tlbnMuUyxlLGIsYyl9LHJlYWRVbmljb2RlUmFuZ2VQYXJ0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX3JlYWRlcixjPSIiLGQ9Yi5wZWVrKCk7d2hpbGUoaXNIZXhEaWdpdChkKSYmYy5sZW5ndGg8NiliLnJlYWQoKSxjKz1kLGQ9Yi5wZWVrKCk7aWYoYSl3aGlsZShkPT0iPyImJmMubGVuZ3RoPDYpYi5yZWFkKCksYys9ZCxkPWIucGVlaygpO3JldHVybiBjfSxyZWFkV2hpdGVzcGFjZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3JlYWRlcixiPSIiLGM9YS5wZWVrKCk7d2hpbGUoaXNXaGl0ZXNwYWNlKGMpKWEucmVhZCgpLGIrPWMsYz1hLnBlZWsoKTtyZXR1cm4gYn0scmVhZE51bWJlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9yZWFkZXIsYz1hLGQ9YT09Ii4iLGU9Yi5wZWVrKCk7d2hpbGUoZSl7aWYoaXNEaWdpdChlKSljKz1iLnJlYWQoKTtlbHNle2lmKGUhPSIuIilicmVhaztpZihkKWJyZWFrO2Q9ITAsYys9Yi5yZWFkKCl9ZT1iLnBlZWsoKX1yZXR1cm4gY30scmVhZFN0cmluZzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3JlYWRlcixiPWEucmVhZCgpLGM9YixkPWIsZT1hLnBlZWsoKTt3aGlsZShlKXtlPWEucmVhZCgpLGMrPWU7aWYoZT09YiYmZCE9IlxcIilicmVhaztpZihpc05ld0xpbmUoYS5wZWVrKCkpJiZlIT0iXFwiKXtjPSIiO2JyZWFrfWQ9ZSxlPWEucGVlaygpfXJldHVybiBlPT09bnVsbCYmKGM9IiIpLGN9LHJlYWRVUkk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fcmVhZGVyLGM9YSxkPSIiLGU9Yi5wZWVrKCk7Yi5tYXJrKCk7d2hpbGUoZSYmaXNXaGl0ZXNwYWNlKGUpKWIucmVhZCgpLGU9Yi5wZWVrKCk7ZT09IicifHxlPT0nIic/ZD10aGlzLnJlYWRTdHJpbmcoKTpkPXRoaXMucmVhZFVSTCgpLGU9Yi5wZWVrKCk7d2hpbGUoZSYmaXNXaGl0ZXNwYWNlKGUpKWIucmVhZCgpLGU9Yi5wZWVrKCk7cmV0dXJuIGQ9PT0iInx8ZSE9IikiPyhjPWEsYi5yZXNldCgpKTpjKz1kK2IucmVhZCgpLGN9LHJlYWRVUkw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9yZWFkZXIsYj0iIixjPWEucGVlaygpO3doaWxlKC9eWyEjJCUmXFwqLX5dJC8udGVzdChjKSliKz1hLnJlYWQoKSxjPWEucGVlaygpO3JldHVybiBifSxyZWFkTmFtZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9yZWFkZXIsYz1hfHwiIixkPWIucGVlaygpO2Zvcig7OylpZihkPT0iXFwiKWMrPXRoaXMucmVhZEVzY2FwZShiLnJlYWQoKSksZD1iLnBlZWsoKTtlbHNle2lmKCFkfHwhaXNOYW1lQ2hhcihkKSlicmVhaztjKz1iLnJlYWQoKSxkPWIucGVlaygpfXJldHVybiBjfSxyZWFkRXNjYXBlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX3JlYWRlcixjPWF8fCIiLGQ9MCxlPWIucGVlaygpO2lmKGlzSGV4RGlnaXQoZSkpZG8gYys9Yi5yZWFkKCksZT1iLnBlZWsoKTt3aGlsZShlJiZpc0hleERpZ2l0KGUpJiYrK2Q8Nik7cmV0dXJuIGMubGVuZ3RoPT0zJiYvXHMvLnRlc3QoZSl8fGMubGVuZ3RoPT03fHxjLmxlbmd0aD09MT9iLnJlYWQoKTplPSIiLGMrZX0scmVhZENvbW1lbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fcmVhZGVyLGM9YXx8IiIsZD1iLnJlYWQoKTtpZihkPT0iKiIpe3doaWxlKGQpe2MrPWQ7aWYoYy5sZW5ndGg+MiYmZD09IioiJiZiLnBlZWsoKT09Ii8iKXtjKz1iLnJlYWQoKTticmVha31kPWIucmVhZCgpfXJldHVybiBjfXJldHVybiIifX0pO3ZhciBUb2tlbnM9W3tuYW1lOiJDRE8ifSx7bmFtZToiQ0RDIn0se25hbWU6IlMiLHdoaXRlc3BhY2U6ITB9LHtuYW1lOiJDT01NRU5UIixjb21tZW50OiEwLGhpZGU6ITAsY2hhbm5lbDoiY29tbWVudCJ9LHtuYW1lOiJJTkNMVURFUyIsdGV4dDoifj0ifSx7bmFtZToiREFTSE1BVENIIix0ZXh0OiJ8PSJ9LHtuYW1lOiJQUkVGSVhNQVRDSCIsdGV4dDoiXj0ifSx7bmFtZToiU1VGRklYTUFUQ0giLHRleHQ6IiQ9In0se25hbWU6IlNVQlNUUklOR01BVENIIix0ZXh0OiIqPSJ9LHtuYW1lOiJTVFJJTkcifSx7bmFtZToiSURFTlQifSx7bmFtZToiSEFTSCJ9LHtuYW1lOiJJTVBPUlRfU1lNIix0ZXh0OiJAaW1wb3J0In0se25hbWU6IlBBR0VfU1lNIix0ZXh0OiJAcGFnZSJ9LHtuYW1lOiJNRURJQV9TWU0iLHRleHQ6IkBtZWRpYSJ9LHtuYW1lOiJGT05UX0ZBQ0VfU1lNIix0ZXh0OiJAZm9udC1mYWNlIn0se25hbWU6IkNIQVJTRVRfU1lNIix0ZXh0OiJAY2hhcnNldCJ9LHtuYW1lOiJOQU1FU1BBQ0VfU1lNIix0ZXh0OiJAbmFtZXNwYWNlIn0se25hbWU6IlVOS05PV05fU1lNIn0se25hbWU6IktFWUZSQU1FU19TWU0iLHRleHQ6WyJAa2V5ZnJhbWVzIiwiQC13ZWJraXQta2V5ZnJhbWVzIiwiQC1tb3ota2V5ZnJhbWVzIiwiQC1tcy1rZXlmcmFtZXMiXX0se25hbWU6IklNUE9SVEFOVF9TWU0ifSx7bmFtZToiTEVOR1RIIn0se25hbWU6IkFOR0xFIn0se25hbWU6IlRJTUUifSx7bmFtZToiRlJFUSJ9LHtuYW1lOiJESU1FTlNJT04ifSx7bmFtZToiUEVSQ0VOVEFHRSJ9LHtuYW1lOiJOVU1CRVIifSx7bmFtZToiVVJJIn0se25hbWU6IkZVTkNUSU9OIn0se25hbWU6IlVOSUNPREVfUkFOR0UifSx7bmFtZToiSU5WQUxJRCJ9LHtuYW1lOiJQTFVTIix0ZXh0OiIrIn0se25hbWU6IkdSRUFURVIiLHRleHQ6Ij4ifSx7bmFtZToiQ09NTUEiLHRleHQ6IiwifSx7bmFtZToiVElMREUiLHRleHQ6In4ifSx7bmFtZToiTk9UIn0se25hbWU6IlRPUExFRlRDT1JORVJfU1lNIix0ZXh0OiJAdG9wLWxlZnQtY29ybmVyIn0se25hbWU6IlRPUExFRlRfU1lNIix0ZXh0OiJAdG9wLWxlZnQifSx7bmFtZToiVE9QQ0VOVEVSX1NZTSIsdGV4dDoiQHRvcC1jZW50ZXIifSx7bmFtZToiVE9QUklHSFRfU1lNIix0ZXh0OiJAdG9wLXJpZ2h0In0se25hbWU6IlRPUFJJR0hUQ09STkVSX1NZTSIsdGV4dDoiQHRvcC1yaWdodC1jb3JuZXIifSx7bmFtZToiQk9UVE9NTEVGVENPUk5FUl9TWU0iLHRleHQ6IkBib3R0b20tbGVmdC1jb3JuZXIifSx7bmFtZToiQk9UVE9NTEVGVF9TWU0iLHRleHQ6IkBib3R0b20tbGVmdCJ9LHtuYW1lOiJCT1RUT01DRU5URVJfU1lNIix0ZXh0OiJAYm90dG9tLWNlbnRlciJ9LHtuYW1lOiJCT1RUT01SSUdIVF9TWU0iLHRleHQ6IkBib3R0b20tcmlnaHQifSx7bmFtZToiQk9UVE9NUklHSFRDT1JORVJfU1lNIix0ZXh0OiJAYm90dG9tLXJpZ2h0LWNvcm5lciJ9LHtuYW1lOiJMRUZUVE9QX1NZTSIsdGV4dDoiQGxlZnQtdG9wIn0se25hbWU6IkxFRlRNSURETEVfU1lNIix0ZXh0OiJAbGVmdC1taWRkbGUifSx7bmFtZToiTEVGVEJPVFRPTV9TWU0iLHRleHQ6IkBsZWZ0LWJvdHRvbSJ9LHtuYW1lOiJSSUdIVFRPUF9TWU0iLHRleHQ6IkByaWdodC10b3AifSx7bmFtZToiUklHSFRNSURETEVfU1lNIix0ZXh0OiJAcmlnaHQtbWlkZGxlIn0se25hbWU6IlJJR0hUQk9UVE9NX1NZTSIsdGV4dDoiQHJpZ2h0LWJvdHRvbSJ9LHtuYW1lOiJSRVNPTFVUSU9OIixzdGF0ZToibWVkaWEifSx7bmFtZToiSUVfRlVOQ1RJT04ifSx7bmFtZToiQ0hBUiJ9LHtuYW1lOiJQSVBFIix0ZXh0OiJ8In0se25hbWU6IlNMQVNIIix0ZXh0OiIvIn0se25hbWU6Ik1JTlVTIix0ZXh0OiItIn0se25hbWU6IlNUQVIiLHRleHQ6IioifSx7bmFtZToiTEJSQUNFIix0ZXh0OiJ7In0se25hbWU6IlJCUkFDRSIsdGV4dDoifSJ9LHtuYW1lOiJMQlJBQ0tFVCIsdGV4dDoiWyJ9LHtuYW1lOiJSQlJBQ0tFVCIsdGV4dDoiXSJ9LHtuYW1lOiJFUVVBTFMiLHRleHQ6Ij0ifSx7bmFtZToiQ09MT04iLHRleHQ6IjoifSx7bmFtZToiU0VNSUNPTE9OIix0ZXh0OiI7In0se25hbWU6IkxQQVJFTiIsdGV4dDoiKCJ9LHtuYW1lOiJSUEFSRU4iLHRleHQ6IikifSx7bmFtZToiRE9UIix0ZXh0OiIuIn1dOyhmdW5jdGlvbigpe3ZhciBhPVtdLGI9e307VG9rZW5zLlVOS05PV049LTEsVG9rZW5zLnVuc2hpZnQoe25hbWU6IkVPRiJ9KTtmb3IodmFyIGM9MCxkPVRva2Vucy5sZW5ndGg7YzxkO2MrKyl7YS5wdXNoKFRva2Vuc1tjXS5uYW1lKSxUb2tlbnNbVG9rZW5zW2NdLm5hbWVdPWM7aWYoVG9rZW5zW2NdLnRleHQpaWYoVG9rZW5zW2NdLnRleHQgaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIGU9MDtlPFRva2Vuc1tjXS50ZXh0Lmxlbmd0aDtlKyspYltUb2tlbnNbY10udGV4dFtlXV09YztlbHNlIGJbVG9rZW5zW2NdLnRleHRdPWN9VG9rZW5zLm5hbWU9ZnVuY3Rpb24oYil7cmV0dXJuIGFbYl19LFRva2Vucy50eXBlPWZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfHwtMX19KSgpO3ZhciBWYWxpZGF0aW9uPXt2YWxpZGF0ZTpmdW5jdGlvbihhLGIpe3ZhciBjPWEudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLGQ9Yi5wYXJ0cyxlPW5ldyBQcm9wZXJ0eVZhbHVlSXRlcmF0b3IoYiksZj1Qcm9wZXJ0aWVzW2NdLGcsaCxpLGosayxsLG0sbixvLHAscTtpZighZil7aWYoYy5pbmRleE9mKCItIikhPT0wKXRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoIlVua25vd24gcHJvcGVydHkgJyIrYSsiJy4iLGEubGluZSxhLmNvbCl9ZWxzZSB0eXBlb2YgZiE9Im51bWJlciImJih0eXBlb2YgZj09InN0cmluZyI/Zi5pbmRleE9mKCJ8fCIpPi0xP3RoaXMuZ3JvdXBQcm9wZXJ0eShmLGUpOnRoaXMuc2luZ2xlUHJvcGVydHkoZixlLDEpOmYubXVsdGk/dGhpcy5tdWx0aVByb3BlcnR5KGYubXVsdGksZSxmLmNvbW1hLGYubWF4fHxJbmZpbml0eSk6dHlwZW9mIGY9PSJmdW5jdGlvbiImJmYoZSkpfSxzaW5nbGVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0hMSxmPWIudmFsdWUsZz0wLGg7d2hpbGUoYi5oYXNOZXh0KCkmJmc8Yyl7ZT1WYWxpZGF0aW9uVHlwZXMuaXNBbnkoYixhKTtpZighZSlicmVhaztnKyt9aWYoIWUpdGhyb3cgYi5oYXNOZXh0KCkmJiFiLmlzRmlyc3QoKT8oaD1iLnBlZWsoKSxuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK2grIicuIixoLmxpbmUsaC5jb2wpKTpuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCAoIithKyIpIGJ1dCBmb3VuZCAnIitmKyInLiIsZi5saW5lLGYuY29sKTtpZihiLmhhc05leHQoKSl0aHJvdyBoPWIubmV4dCgpLG5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIraCsiJy4iLGgubGluZSxoLmNvbCl9LG11bHRpUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITEsZj1iLnZhbHVlLGc9MCxoPSExLGk7d2hpbGUoYi5oYXNOZXh0KCkmJiFlJiZnPGQpe2lmKCFWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYixhKSlicmVhaztnKys7aWYoIWIuaGFzTmV4dCgpKWU9ITA7ZWxzZSBpZihjKXtpZihiLnBlZWsoKSE9IiwiKWJyZWFrO2k9Yi5uZXh0KCl9fWlmKCFlKXRocm93IGIuaGFzTmV4dCgpJiYhYi5pc0ZpcnN0KCk/KGk9Yi5wZWVrKCksbmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgZW5kIG9mIHZhbHVlIGJ1dCBmb3VuZCAnIitpKyInLiIsaS5saW5lLGkuY29sKSk6KGk9Yi5wcmV2aW91cygpLGMmJmk9PSIsIj9uZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK2krIicuIixpLmxpbmUsaS5jb2wpOm5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkICgiK2ErIikgYnV0IGZvdW5kICciK2YrIicuIixmLmxpbmUsZi5jb2wpKTtpZihiLmhhc05leHQoKSl0aHJvdyBpPWIubmV4dCgpLG5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIraSsiJy4iLGkubGluZSxpLmNvbCl9LGdyb3VwUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSExLGU9Yi52YWx1ZSxmPWEuc3BsaXQoInx8IikubGVuZ3RoLGc9e2NvdW50OjB9LGg9ITEsaSxqO3doaWxlKGIuaGFzTmV4dCgpJiYhZCl7aT1WYWxpZGF0aW9uVHlwZXMuaXNBbnlPZkdyb3VwKGIsYSk7aWYoIWkpYnJlYWs7aWYoZ1tpXSlicmVhaztnW2ldPTEsZy5jb3VudCsrLGg9ITA7aWYoZy5jb3VudD09Znx8IWIuaGFzTmV4dCgpKWQ9ITB9aWYoIWQpdGhyb3cgaCYmYi5oYXNOZXh0KCk/KGo9Yi5wZWVrKCksbmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgZW5kIG9mIHZhbHVlIGJ1dCBmb3VuZCAnIitqKyInLiIsai5saW5lLGouY29sKSk6bmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgKCIrYSsiKSBidXQgZm91bmQgJyIrZSsiJy4iLGUubGluZSxlLmNvbCk7aWYoYi5oYXNOZXh0KCkpdGhyb3cgaj1iLm5leHQoKSxuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK2orIicuIixqLmxpbmUsai5jb2wpfX07VmFsaWRhdGlvbkVycm9yLnByb3RvdHlwZT1uZXcgRXJyb3I7dmFyIFZhbGlkYXRpb25UeXBlcz17aXNMaXRlcmFsOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50ZXh0LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxkPWIuc3BsaXQoIiB8ICIpLGUsZixnPSExO2ZvcihlPTAsZj1kLmxlbmd0aDtlPGYmJiFnO2UrKyljPT1kW2VdJiYoZz0hMCk7cmV0dXJuIGd9LGlzU2ltcGxlOmZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5zaW1wbGVbYV19LGlzQ29tcGxleDpmdW5jdGlvbihhKXtyZXR1cm4hIXRoaXMuY29tcGxleFthXX0saXNBbnk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnNwbGl0KCIgfCAiKSxkLGUsZj0hMTtmb3IoZD0wLGU9Yy5sZW5ndGg7ZDxlJiYhZiYmYS5oYXNOZXh0KCk7ZCsrKWY9dGhpcy5pc1R5cGUoYSxjW2RdKTtyZXR1cm4gZn0saXNBbnlPZkdyb3VwOmZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5zcGxpdCgiIHx8ICIpLGQsZSxmPSExO2ZvcihkPTAsZT1jLmxlbmd0aDtkPGUmJiFmO2QrKylmPXRoaXMuaXNUeXBlKGEsY1tkXSk7cmV0dXJuIGY/Y1tkLTFdOiExfSxpc1R5cGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnBlZWsoKSxkPSExO3JldHVybiBiLmNoYXJBdCgwKSE9IjwiPyhkPXRoaXMuaXNMaXRlcmFsKGMsYiksZCYmYS5uZXh0KCkpOnRoaXMuc2ltcGxlW2JdPyhkPXRoaXMuc2ltcGxlW2JdKGMpLGQmJmEubmV4dCgpKTpkPXRoaXMuY29tcGxleFtiXShhKSxkfSxzaW1wbGU6eyI8YWJzb2x1dGUtc2l6ZT4iOmZ1bmN0aW9uKGEpe3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNMaXRlcmFsKGEsInh4LXNtYWxsIHwgeC1zbWFsbCB8IHNtYWxsIHwgbWVkaXVtIHwgbGFyZ2UgfCB4LWxhcmdlIHwgeHgtbGFyZ2UiKX0sIjxhdHRhY2htZW50PiI6ZnVuY3Rpb24oYSl7cmV0dXJuIFZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwoYSwic2Nyb2xsIHwgZml4ZWQgfCBsb2NhbCIpfSwiPGF0dHI+IjpmdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT0iZnVuY3Rpb24iJiZhLm5hbWU9PSJhdHRyIn0sIjxiZy1pbWFnZT4iOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzWyI8aW1hZ2U+Il0oYSl8fHRoaXNbIjxncmFkaWVudD4iXShhKXx8YT09Im5vbmUifSwiPGdyYWRpZW50PiI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09ImZ1bmN0aW9uIiYmL14oPzpcLSg/Om1zfG1venxvfHdlYmtpdClcLSk/KD86cmVwZWF0aW5nXC0pPyg/OnJhZGlhbHxsaW5lYXIpXC1ncmFkaWVudC9pLnRlc3QoYSl9LCI8Ym94PiI6ZnVuY3Rpb24oYSl7cmV0dXJuIFZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwoYSwicGFkZGluZy1ib3ggfCBib3JkZXItYm94IHwgY29udGVudC1ib3giKX0sIjxjb250ZW50PiI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09ImZ1bmN0aW9uIiYmYS5uYW1lPT0iY29udGVudCJ9LCI8cmVsYXRpdmUtc2l6ZT4iOmZ1bmN0aW9uKGEpe3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNMaXRlcmFsKGEsInNtYWxsZXIgfCBsYXJnZXIiKX0sIjxpZGVudD4iOmZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PSJpZGVudGlmaWVyIn0sIjxsZW5ndGg+IjpmdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT0ibGVuZ3RoInx8YS50eXBlPT0ibnVtYmVyInx8YS50eXBlPT0iaW50ZWdlciJ8fGE9PSIwIn0sIjxjb2xvcj4iOmZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PSJjb2xvciJ8fGE9PSJ0cmFuc3BhcmVudCJ9LCI8bnVtYmVyPiI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09Im51bWJlciJ8fHRoaXNbIjxpbnRlZ2VyPiJdKGEpfSwiPGludGVnZXI+IjpmdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT0iaW50ZWdlciJ9LCI8bGluZT4iOmZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PSJpbnRlZ2VyIn0sIjxhbmdsZT4iOmZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PSJhbmdsZSJ9LCI8dXJpPiI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09InVyaSJ9LCI8aW1hZ2U+IjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpc1siPHVyaT4iXShhKX0sIjxwZXJjZW50YWdlPiI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09InBlcmNlbnRhZ2UifHxhPT0iMCJ9LCI8Ym9yZGVyLXdpZHRoPiI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXNbIjxsZW5ndGg+Il0oYSl8fFZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwoYSwidGhpbiB8IG1lZGl1bSB8IHRoaWNrIil9LCI8Ym9yZGVyLXN0eWxlPiI6ZnVuY3Rpb24oYSl7cmV0dXJuIFZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwoYSwibm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldCIpfSwiPG1hcmdpbi13aWR0aD4iOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzWyI8bGVuZ3RoPiJdKGEpfHx0aGlzWyI8cGVyY2VudGFnZT4iXShhKXx8VmFsaWRhdGlvblR5cGVzLmlzTGl0ZXJhbChhLCJhdXRvIil9LCI8cGFkZGluZy13aWR0aD4iOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzWyI8bGVuZ3RoPiJdKGEpfHx0aGlzWyI8cGVyY2VudGFnZT4iXShhKX0sIjxzaGFwZT4iOmZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PSJmdW5jdGlvbiImJihhLm5hbWU9PSJyZWN0Inx8YS5uYW1lPT0iaW5zZXQtcmVjdCIpfSwiPHRpbWU+IjpmdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT0idGltZSJ9fSxjb21wbGV4OnsiPGJnLXBvc2l0aW9uPiI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPSExLGQ9IjxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IixlPSJsZWZ0IHwgY2VudGVyIHwgcmlnaHQiLGY9InRvcCB8IGNlbnRlciB8IGJvdHRvbSIsZyxoLGk7cmV0dXJuIFZhbGlkYXRpb25UeXBlcy5pc0FueShhLCJ0b3AgfCBib3R0b20iKT9jPSEwOlZhbGlkYXRpb25UeXBlcy5pc0FueShhLGQpP2EuaGFzTmV4dCgpJiYoYz1WYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxkKyIgfCAiK2YpKTpWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxlKSYmYS5oYXNOZXh0KCkmJihWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxmKT8oYz0hMCxWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxkKSk6VmFsaWRhdGlvblR5cGVzLmlzQW55KGEsZCkmJihWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxmKSYmVmFsaWRhdGlvblR5cGVzLmlzQW55KGEsZCksYz0hMCkpLGN9LCI8Ymctc2l6ZT4iOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz0hMSxkPSI8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiB8IGF1dG8iLGUsZixnO3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSwiY292ZXIgfCBjb250YWluIik/Yz0hMDpWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxkKSYmKGM9ITAsVmFsaWRhdGlvblR5cGVzLmlzQW55KGEsZCkpLGN9LCI8cmVwZWF0LXN0eWxlPiI6ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYz0icmVwZWF0IHwgc3BhY2UgfCByb3VuZCB8IG5vLXJlcGVhdCIsZDtyZXR1cm4gYS5oYXNOZXh0KCkmJihkPWEubmV4dCgpLFZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwoZCwicmVwZWF0LXggfCByZXBlYXQteSIpP2I9ITA6VmFsaWRhdGlvblR5cGVzLmlzTGl0ZXJhbChkLGMpJiYoYj0hMCxhLmhhc05leHQoKSYmVmFsaWRhdGlvblR5cGVzLmlzTGl0ZXJhbChhLnBlZWsoKSxjKSYmYS5uZXh0KCkpKSxifSwiPHNoYWRvdz4iOmZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9MCxkPSExLGU9ITEsZjtpZihhLmhhc05leHQoKSl7VmFsaWRhdGlvblR5cGVzLmlzQW55KGEsImluc2V0IikmJihkPSEwKSxWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSwiPGNvbG9yPiIpJiYoZT0hMCk7d2hpbGUoVmFsaWRhdGlvblR5cGVzLmlzQW55KGEsIjxsZW5ndGg+IikmJmM8NCljKys7YS5oYXNOZXh0KCkmJihlfHxWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSwiPGNvbG9yPiIpLGR8fFZhbGlkYXRpb25UeXBlcy5pc0FueShhLCJpbnNldCIpKSxiPWM+PTImJmM8PTR9cmV0dXJuIGJ9LCI8eC1vbmUtcmFkaXVzPiI6ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYz0wLGQ9IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixlO3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNBbnkoYSxkKSYmKGI9ITAsVmFsaWRhdGlvblR5cGVzLmlzQW55KGEsZCkpLGJ9fX07cGFyc2VybGliLmNzcz17Q29sb3JzOkNvbG9ycyxDb21iaW5hdG9yOkNvbWJpbmF0b3IsUGFyc2VyOlBhcnNlcixQcm9wZXJ0eU5hbWU6UHJvcGVydHlOYW1lLFByb3BlcnR5VmFsdWU6UHJvcGVydHlWYWx1ZSxQcm9wZXJ0eVZhbHVlUGFydDpQcm9wZXJ0eVZhbHVlUGFydCxNZWRpYUZlYXR1cmU6TWVkaWFGZWF0dXJlLE1lZGlhUXVlcnk6TWVkaWFRdWVyeSxTZWxlY3RvcjpTZWxlY3RvcixTZWxlY3RvclBhcnQ6U2VsZWN0b3JQYXJ0LFNlbGVjdG9yU3ViUGFydDpTZWxlY3RvclN1YlBhcnQsU3BlY2lmaWNpdHk6U3BlY2lmaWNpdHksVG9rZW5TdHJlYW06VG9rZW5TdHJlYW0sVG9rZW5zOlRva2VucyxWYWxpZGF0aW9uRXJyb3I6VmFsaWRhdGlvbkVycm9yfX0oKTt2YXIgQ1NTTGludD1mdW5jdGlvbigpe3ZhciBhPVtdLGI9W10sYz1uZXcgcGFyc2VybGliLnV0aWwuRXZlbnRUYXJnZXQ7cmV0dXJuIGMudmVyc2lvbj0iMC45LjciLGMuYWRkUnVsZT1mdW5jdGlvbihiKXthLnB1c2goYiksYVtiLmlkXT1ifSxjLmNsZWFyUnVsZXM9ZnVuY3Rpb24oKXthPVtdfSxjLmdldFJ1bGVzPWZ1bmN0aW9uKCl7cmV0dXJuW10uY29uY2F0KGEpLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5pZD5iLmlkPzE6MH0pfSxjLmFkZEZvcm1hdHRlcj1mdW5jdGlvbihhKXtiW2EuaWRdPWF9LGMuZ2V0Rm9ybWF0dGVyPWZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSxjLmZvcm1hdD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLmdldEZvcm1hdHRlcihjKSxmPW51bGw7cmV0dXJuIGUmJihmPWUuc3RhcnRGb3JtYXQoKSxmKz1lLmZvcm1hdFJlc3VsdHMoYSxiLGR8fHt9KSxmKz1lLmVuZEZvcm1hdCgpKSxmfSxjLmhhc0Zvcm1hdD1mdW5jdGlvbihhKXtyZXR1cm4gYi5oYXNPd25Qcm9wZXJ0eShhKX0sYy52ZXJpZnk9ZnVuY3Rpb24oYixjKXt2YXIgZD0wLGU9YS5sZW5ndGgsZixnLGgsaT1uZXcgcGFyc2VybGliLmNzcy5QYXJzZXIoe3N0YXJIYWNrOiEwLGllRmlsdGVyczohMCx1bmRlcnNjb3JlSGFjazohMCxzdHJpY3Q6ITF9KTtnPWIucmVwbGFjZSgvXG5ccj8vZywiJHNwbGl0JCIpLnNwbGl0KCIkc3BsaXQkIik7aWYoIWMpe2M9e307d2hpbGUoZDxlKWNbYVtkKytdLmlkXT0xfWY9bmV3IFJlcG9ydGVyKGcsYyksYy5lcnJvcnM9Mjtmb3IoZCBpbiBjKWMuaGFzT3duUHJvcGVydHkoZCkmJmFbZF0mJmFbZF0uaW5pdChpLGYpO3RyeXtpLnBhcnNlKGIpfWNhdGNoKGope2YuZXJyb3IoIkZhdGFsIGVycm9yLCBjYW5ub3QgY29udGludWU6ICIrai5tZXNzYWdlLGoubGluZSxqLmNvbCx7fSl9cmV0dXJuIGg9e21lc3NhZ2VzOmYubWVzc2FnZXMsc3RhdHM6Zi5zdGF0c30saC5tZXNzYWdlcy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucm9sbHVwJiYhYi5yb2xsdXA/MTohYS5yb2xsdXAmJmIucm9sbHVwPy0xOmEubGluZS1iLmxpbmV9KSxofSxjfSgpO1JlcG9ydGVyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UmVwb3J0ZXIsZXJyb3I6ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5tZXNzYWdlcy5wdXNoKHt0eXBlOiJlcnJvciIsbGluZTpiLGNvbDpjLG1lc3NhZ2U6YSxldmlkZW5jZTp0aGlzLmxpbmVzW2ItMV0scnVsZTpkfHx7fX0pfSx3YXJuOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMucmVwb3J0KGEsYixjLGQpfSxyZXBvcnQ6ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5tZXNzYWdlcy5wdXNoKHt0eXBlOnRoaXMucnVsZXNldFtkLmlkXT09Mj8iZXJyb3IiOiJ3YXJuaW5nIixsaW5lOmIsY29sOmMsbWVzc2FnZTphLGV2aWRlbmNlOnRoaXMubGluZXNbYi0xXSxydWxlOmR9KX0saW5mbzpmdW5jdGlvbihhLGIsYyxkKXt0aGlzLm1lc3NhZ2VzLnB1c2goe3R5cGU6ImluZm8iLGxpbmU6Yixjb2w6YyxtZXNzYWdlOmEsZXZpZGVuY2U6dGhpcy5saW5lc1tiLTFdLHJ1bGU6ZH0pfSxyb2xsdXBFcnJvcjpmdW5jdGlvbihhLGIpe3RoaXMubWVzc2FnZXMucHVzaCh7dHlwZToiZXJyb3IiLHJvbGx1cDohMCxtZXNzYWdlOmEscnVsZTpifSl9LHJvbGx1cFdhcm46ZnVuY3Rpb24oYSxiKXt0aGlzLm1lc3NhZ2VzLnB1c2goe3R5cGU6Indhcm5pbmciLHJvbGx1cDohMCxtZXNzYWdlOmEscnVsZTpifSl9LHN0YXQ6ZnVuY3Rpb24oYSxiKXt0aGlzLnN0YXRzW2FdPWJ9fSxDU1NMaW50Ll9SZXBvcnRlcj1SZXBvcnRlcixDU1NMaW50LlV0aWw9e21peDpmdW5jdGlvbihhLGIpe3ZhciBjO2ZvcihjIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShjKSYmKGFbY109YltjXSk7cmV0dXJuIGN9LGluZGV4T2Y6ZnVuY3Rpb24oYSxiKXtpZihhLmluZGV4T2YpcmV0dXJuIGEuaW5kZXhPZihiKTtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9LGZvckVhY2g6ZnVuY3Rpb24oYSxiKXtpZihhLmZvckVhY2gpcmV0dXJuIGEuZm9yRWFjaChiKTtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYihhW2NdLGMsYSl9fSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJhZGpvaW5pbmctY2xhc3NlcyIsbmFtZToiRGlzYWxsb3cgYWRqb2luaW5nIGNsYXNzZXMiLGRlc2M6IkRvbid0IHVzZSBhZGpvaW5pbmcgY2xhc3Nlcy4iLGJyb3dzZXJzOiJJRTYiLGluaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2EuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oZCl7dmFyIGU9ZC5zZWxlY3RvcnMsZixnLGgsaSxqLGssbDtmb3Ioaj0wO2o8ZS5sZW5ndGg7aisrKXtmPWVbal07Zm9yKGs9MDtrPGYucGFydHMubGVuZ3RoO2srKyl7Zz1mLnBhcnRzW2tdO2lmKGcudHlwZT09YS5TRUxFQ1RPUl9QQVJUX1RZUEUpe2k9MDtmb3IobD0wO2w8Zy5tb2RpZmllcnMubGVuZ3RoO2wrKyloPWcubW9kaWZpZXJzW2xdLGgudHlwZT09ImNsYXNzIiYmaSsrLGk+MSYmYi5yZXBvcnQoIkRvbid0IHVzZSBhZGpvaW5pbmcgY2xhc3Nlcy4iLGcubGluZSxnLmNvbCxjKX19fX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImJveC1tb2RlbCIsbmFtZToiQmV3YXJlIG9mIGJyb2tlbiBib3ggc2l6ZSIsZGVzYzoiRG9uJ3QgdXNlIHdpZHRoIG9yIGhlaWdodCB3aGVuIHVzaW5nIHBhZGRpbmcgb3IgYm9yZGVyLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGcoKXtmPXt9fWZ1bmN0aW9uIGgoKXt2YXIgYTtpZihmLmhlaWdodClmb3IoYSBpbiBlKWUuaGFzT3duUHJvcGVydHkoYSkmJmZbYV0mJihhIT0icGFkZGluZyJ8fGZbYV0udmFsdWUucGFydHMubGVuZ3RoIT09Mnx8ZlthXS52YWx1ZS5wYXJ0c1swXS52YWx1ZSE9PTApJiZiLnJlcG9ydCgiVXNpbmcgaGVpZ2h0IHdpdGggIithKyIgY2FuIHNvbWV0aW1lcyBtYWtlIGVsZW1lbnRzIGxhcmdlciB0aGFuIHlvdSBleHBlY3QuIixmW2FdLmxpbmUsZlthXS5jb2wsYyk7aWYoZi53aWR0aClmb3IoYSBpbiBkKWQuaGFzT3duUHJvcGVydHkoYSkmJmZbYV0mJihhIT0icGFkZGluZyJ8fGZbYV0udmFsdWUucGFydHMubGVuZ3RoIT09Mnx8ZlthXS52YWx1ZS5wYXJ0c1sxXS52YWx1ZSE9PTApJiZiLnJlcG9ydCgiVXNpbmcgd2lkdGggd2l0aCAiK2ErIiBjYW4gc29tZXRpbWVzIG1ha2UgZWxlbWVudHMgbGFyZ2VyIHRoYW4geW91IGV4cGVjdC4iLGZbYV0ubGluZSxmW2FdLmNvbCxjKX12YXIgYz10aGlzLGQ9e2JvcmRlcjoxLCJib3JkZXItbGVmdCI6MSwiYm9yZGVyLXJpZ2h0IjoxLHBhZGRpbmc6MSwicGFkZGluZy1sZWZ0IjoxLCJwYWRkaW5nLXJpZ2h0IjoxfSxlPXtib3JkZXI6MSwiYm9yZGVyLWJvdHRvbSI6MSwiYm9yZGVyLXRvcCI6MSxwYWRkaW5nOjEsInBhZGRpbmctYm90dG9tIjoxLCJwYWRkaW5nLXRvcCI6MX0sZjthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGcpLGEuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLGcpLGEuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZSIsZyksYS5hZGRMaXN0ZW5lcigic3RhcnRwYWdlbWFyZ2luIixnKSxhLmFkZExpc3RlbmVyKCJzdGFydGtleWZyYW1lcnVsZSIsZyksYS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGEpe3ZhciBiPWEucHJvcGVydHkudGV4dC50b0xvd2VyQ2FzZSgpO2lmKGVbYl18fGRbYl0pIS9eMFxTKiQvLnRlc3QoYS52YWx1ZSkmJihiIT0iYm9yZGVyInx8YS52YWx1ZSE9Im5vbmUiKSYmKGZbYl09e2xpbmU6YS5wcm9wZXJ0eS5saW5lLGNvbDphLnByb3BlcnR5LmNvbCx2YWx1ZTphLnZhbHVlfSk7ZWxzZSBpZihiPT0id2lkdGgifHxiPT0iaGVpZ2h0IilmW2JdPTF9KSxhLmFkZExpc3RlbmVyKCJlbmRydWxlIixoKSxhLmFkZExpc3RlbmVyKCJlbmRmb250ZmFjZSIsaCksYS5hZGRMaXN0ZW5lcigiZW5kcGFnZSIsaCksYS5hZGRMaXN0ZW5lcigiZW5kcGFnZW1hcmdpbiIsaCksYS5hZGRMaXN0ZW5lcigiZW5ka2V5ZnJhbWVydWxlIixoKX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJib3gtc2l6aW5nIixuYW1lOiJEaXNhbGxvdyB1c2Ugb2YgYm94LXNpemluZyIsZGVzYzoiVGhlIGJveC1zaXppbmcgcHJvcGVydGllcyBpc24ndCBzdXBwb3J0ZWQgaW4gSUU2IGFuZCBJRTcuIixicm93c2VyczoiSUU2LCBJRTciLHRhZ3M6WyJDb21wYXRpYmlsaXR5Il0saW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7YS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGEpe3ZhciBkPWEucHJvcGVydHkudGV4dC50b0xvd2VyQ2FzZSgpO2Q9PSJib3gtc2l6aW5nIiYmYi5yZXBvcnQoIlRoZSBib3gtc2l6aW5nIHByb3BlcnR5IGlzbid0IHN1cHBvcnRlZCBpbiBJRTYgYW5kIElFNy4iLGEubGluZSxhLmNvbCxjKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImNvbXBhdGlibGUtdmVuZG9yLXByZWZpeGVzIixuYW1lOiJSZXF1aXJlIGNvbXBhdGlibGUgdmVuZG9yIHByZWZpeGVzIixkZXNjOiJJbmNsdWRlIGFsbCBjb21wYXRpYmxlIHZlbmRvciBwcmVmaXhlcyB0byByZWFjaCBhIHdpZGVyIHJhbmdlIG9mIHVzZXJzLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZCxlLGYsZyxoLGksaixrPUFycmF5LnByb3RvdHlwZS5wdXNoLGw9W107ZD17YW5pbWF0aW9uOiJ3ZWJraXQgbW96IG1zIiwiYW5pbWF0aW9uLWRlbGF5Ijoid2Via2l0IG1veiBtcyIsImFuaW1hdGlvbi1kaXJlY3Rpb24iOiJ3ZWJraXQgbW96IG1zIiwiYW5pbWF0aW9uLWR1cmF0aW9uIjoid2Via2l0IG1veiBtcyIsImFuaW1hdGlvbi1maWxsLW1vZGUiOiJ3ZWJraXQgbW96IG1zIiwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCI6IndlYmtpdCBtb3ogbXMiLCJhbmltYXRpb24tbmFtZSI6IndlYmtpdCBtb3ogbXMiLCJhbmltYXRpb24tcGxheS1zdGF0ZSI6IndlYmtpdCBtb3ogbXMiLCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIjoid2Via2l0IG1veiBtcyIsYXBwZWFyYW5jZToid2Via2l0IG1veiIsImJvcmRlci1lbmQiOiJ3ZWJraXQgbW96IiwiYm9yZGVyLWVuZC1jb2xvciI6IndlYmtpdCBtb3oiLCJib3JkZXItZW5kLXN0eWxlIjoid2Via2l0IG1veiIsImJvcmRlci1lbmQtd2lkdGgiOiJ3ZWJraXQgbW96IiwiYm9yZGVyLWltYWdlIjoid2Via2l0IG1veiBvIiwiYm9yZGVyLXJhZGl1cyI6IndlYmtpdCBtb3oiLCJib3JkZXItc3RhcnQiOiJ3ZWJraXQgbW96IiwiYm9yZGVyLXN0YXJ0LWNvbG9yIjoid2Via2l0IG1veiIsImJvcmRlci1zdGFydC1zdHlsZSI6IndlYmtpdCBtb3oiLCJib3JkZXItc3RhcnQtd2lkdGgiOiJ3ZWJraXQgbW96IiwiYm94LWFsaWduIjoid2Via2l0IG1veiBtcyIsImJveC1kaXJlY3Rpb24iOiJ3ZWJraXQgbW96IG1zIiwiYm94LWZsZXgiOiJ3ZWJraXQgbW96IG1zIiwiYm94LWxpbmVzIjoid2Via2l0IG1zIiwiYm94LW9yZGluYWwtZ3JvdXAiOiJ3ZWJraXQgbW96IG1zIiwiYm94LW9yaWVudCI6IndlYmtpdCBtb3ogbXMiLCJib3gtcGFjayI6IndlYmtpdCBtb3ogbXMiLCJib3gtc2l6aW5nIjoid2Via2l0IG1veiIsImJveC1zaGFkb3ciOiJ3ZWJraXQgbW96IiwiY29sdW1uLWNvdW50Ijoid2Via2l0IG1veiBtcyIsImNvbHVtbi1nYXAiOiJ3ZWJraXQgbW96IG1zIiwiY29sdW1uLXJ1bGUiOiJ3ZWJraXQgbW96IG1zIiwiY29sdW1uLXJ1bGUtY29sb3IiOiJ3ZWJraXQgbW96IG1zIiwiY29sdW1uLXJ1bGUtc3R5bGUiOiJ3ZWJraXQgbW96IG1zIiwiY29sdW1uLXJ1bGUtd2lkdGgiOiJ3ZWJraXQgbW96IG1zIiwiY29sdW1uLXdpZHRoIjoid2Via2l0IG1veiBtcyIsaHlwaGVuczoiZXB1YiBtb3oiLCJsaW5lLWJyZWFrIjoid2Via2l0IG1zIiwibWFyZ2luLWVuZCI6IndlYmtpdCBtb3oiLCJtYXJnaW4tc3RhcnQiOiJ3ZWJraXQgbW96IiwibWFycXVlZS1zcGVlZCI6IndlYmtpdCB3YXAiLCJtYXJxdWVlLXN0eWxlIjoid2Via2l0IHdhcCIsInBhZGRpbmctZW5kIjoid2Via2l0IG1veiIsInBhZGRpbmctc3RhcnQiOiJ3ZWJraXQgbW96IiwidGFiLXNpemUiOiJtb3ogbyIsInRleHQtc2l6ZS1hZGp1c3QiOiJ3ZWJraXQgbXMiLHRyYW5zZm9ybToid2Via2l0IG1veiBtcyBvIiwidHJhbnNmb3JtLW9yaWdpbiI6IndlYmtpdCBtb3ogbXMgbyIsdHJhbnNpdGlvbjoid2Via2l0IG1veiBvIG1zIiwidHJhbnNpdGlvbi1kZWxheSI6IndlYmtpdCBtb3ogbyBtcyIsInRyYW5zaXRpb24tZHVyYXRpb24iOiJ3ZWJraXQgbW96IG8gbXMiLCJ0cmFuc2l0aW9uLXByb3BlcnR5Ijoid2Via2l0IG1veiBvIG1zIiwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOiJ3ZWJraXQgbW96IG8gbXMiLCJ1c2VyLW1vZGlmeSI6IndlYmtpdCBtb3oiLCJ1c2VyLXNlbGVjdCI6IndlYmtpdCBtb3ogbXMiLCJ3b3JkLWJyZWFrIjoiZXB1YiBtcyIsIndyaXRpbmctbW9kZSI6ImVwdWIgbXMifTtmb3IoZiBpbiBkKWlmKGQuaGFzT3duUHJvcGVydHkoZikpe2c9W10saD1kW2ZdLnNwbGl0KCIgIik7Zm9yKGk9MCxqPWgubGVuZ3RoO2k8ajtpKyspZy5wdXNoKCItIitoW2ldKyItIitmKTtkW2ZdPWcsay5hcHBseShsLGcpfWEuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oKXtlPVtdfSksYS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGEpe3ZhciBiPWEucHJvcGVydHk7Q1NTTGludC5VdGlsLmluZGV4T2YobCxiLnRleHQpPi0xJiZlLnB1c2goYil9KSxhLmFkZExpc3RlbmVyKCJlbmRydWxlIixmdW5jdGlvbihhKXtpZighZS5sZW5ndGgpcmV0dXJuO3ZhciBmPXt9LGcsaCxpLGosayxsLG0sbixvLHA7Zm9yKGc9MCxoPWUubGVuZ3RoO2c8aDtnKyspe2k9ZVtnXTtmb3IoaiBpbiBkKWQuaGFzT3duUHJvcGVydHkoaikmJihrPWRbal0sQ1NTTGludC5VdGlsLmluZGV4T2YoayxpLnRleHQpPi0xJiYoZltqXXx8KGZbal09e2Z1bGw6ay5zbGljZSgwKSxhY3R1YWw6W10sYWN0dWFsTm9kZXM6W119KSxDU1NMaW50LlV0aWwuaW5kZXhPZihmW2pdLmFjdHVhbCxpLnRleHQpPT09LTEmJihmW2pdLmFjdHVhbC5wdXNoKGkudGV4dCksZltqXS5hY3R1YWxOb2Rlcy5wdXNoKGkpKSkpfWZvcihqIGluIGYpaWYoZi5oYXNPd25Qcm9wZXJ0eShqKSl7bD1mW2pdLG09bC5mdWxsLG49bC5hY3R1YWw7aWYobS5sZW5ndGg+bi5sZW5ndGgpZm9yKGc9MCxoPW0ubGVuZ3RoO2c8aDtnKyspbz1tW2ddLENTU0xpbnQuVXRpbC5pbmRleE9mKG4sbyk9PT0tMSYmKHA9bi5sZW5ndGg9PT0xP25bMF06bi5sZW5ndGg9PTI/bi5qb2luKCIgYW5kICIpOm4uam9pbigiLCAiKSxiLnJlcG9ydCgiVGhlIHByb3BlcnR5ICIrbysiIGlzIGNvbXBhdGlibGUgd2l0aCAiK3ArIiBhbmQgc2hvdWxkIGJlIGluY2x1ZGVkIGFzIHdlbGwuIixsLmFjdHVhbE5vZGVzWzBdLmxpbmUsbC5hY3R1YWxOb2Rlc1swXS5jb2wsYykpfX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImRpc3BsYXktcHJvcGVydHktZ3JvdXBpbmciLG5hbWU6IlJlcXVpcmUgcHJvcGVydGllcyBhcHByb3ByaWF0ZSBmb3IgZGlzcGxheSIsZGVzYzoiQ2VydGFpbiBwcm9wZXJ0aWVzIHNob3VsZG4ndCBiZSB1c2VkIHdpdGggY2VydGFpbiBkaXNwbGF5IHByb3BlcnR5IHZhbHVlcy4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBmKGEsZixnKXtlW2FdJiYodHlwZW9mIGRbYV0hPSJzdHJpbmcifHxlW2FdLnZhbHVlLnRvTG93ZXJDYXNlKCkhPWRbYV0pJiZiLnJlcG9ydChnfHxhKyIgY2FuJ3QgYmUgdXNlZCB3aXRoIGRpc3BsYXk6ICIrZisiLiIsZVthXS5saW5lLGVbYV0uY29sLGMpfWZ1bmN0aW9uIGcoKXtlPXt9fWZ1bmN0aW9uIGgoKXt2YXIgYT1lLmRpc3BsYXk/ZS5kaXNwbGF5LnZhbHVlOm51bGw7aWYoYSlzd2l0Y2goYSl7Y2FzZSJpbmxpbmUiOmYoImhlaWdodCIsYSksZigid2lkdGgiLGEpLGYoIm1hcmdpbiIsYSksZigibWFyZ2luLXRvcCIsYSksZigibWFyZ2luLWJvdHRvbSIsYSksZigiZmxvYXQiLGEsImRpc3BsYXk6aW5saW5lIGhhcyBubyBlZmZlY3Qgb24gZmxvYXRlZCBlbGVtZW50cyAoYnV0IG1heSBiZSB1c2VkIHRvIGZpeCB0aGUgSUU2IGRvdWJsZS1tYXJnaW4gYnVnKS4iKTticmVhaztjYXNlImJsb2NrIjpmKCJ2ZXJ0aWNhbC1hbGlnbiIsYSk7YnJlYWs7Y2FzZSJpbmxpbmUtYmxvY2siOmYoImZsb2F0IixhKTticmVhaztkZWZhdWx0OmEuaW5kZXhPZigidGFibGUtIik9PT0wJiYoZigibWFyZ2luIixhKSxmKCJtYXJnaW4tbGVmdCIsYSksZigibWFyZ2luLXJpZ2h0IixhKSxmKCJtYXJnaW4tdG9wIixhKSxmKCJtYXJnaW4tYm90dG9tIixhKSxmKCJmbG9hdCIsYSkpfX12YXIgYz10aGlzLGQ9e2Rpc3BsYXk6MSwiZmxvYXQiOiJub25lIixoZWlnaHQ6MSx3aWR0aDoxLG1hcmdpbjoxLCJtYXJnaW4tbGVmdCI6MSwibWFyZ2luLXJpZ2h0IjoxLCJtYXJnaW4tYm90dG9tIjoxLCJtYXJnaW4tdG9wIjoxLHBhZGRpbmc6MSwicGFkZGluZy1sZWZ0IjoxLCJwYWRkaW5nLXJpZ2h0IjoxLCJwYWRkaW5nLWJvdHRvbSI6MSwicGFkZGluZy10b3AiOjEsInZlcnRpY2FsLWFsaWduIjoxfSxlO2EuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZyksYS5hZGRMaXN0ZW5lcigic3RhcnRmb250ZmFjZSIsZyksYS5hZGRMaXN0ZW5lcigic3RhcnRrZXlmcmFtZXJ1bGUiLGcpLGEuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZW1hcmdpbiIsZyksYS5hZGRMaXN0ZW5lcigic3RhcnRwYWdlIixnKSxhLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oYSl7dmFyIGI9YS5wcm9wZXJ0eS50ZXh0LnRvTG93ZXJDYXNlKCk7ZFtiXSYmKGVbYl09e3ZhbHVlOmEudmFsdWUudGV4dCxsaW5lOmEucHJvcGVydHkubGluZSxjb2w6YS5wcm9wZXJ0eS5jb2x9KX0pLGEuYWRkTGlzdGVuZXIoImVuZHJ1bGUiLGgpLGEuYWRkTGlzdGVuZXIoImVuZGZvbnRmYWNlIixoKSxhLmFkZExpc3RlbmVyKCJlbmRrZXlmcmFtZXJ1bGUiLGgpLGEuYWRkTGlzdGVuZXIoImVuZHBhZ2VtYXJnaW4iLGgpLGEuYWRkTGlzdGVuZXIoImVuZHBhZ2UiLGgpfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImR1cGxpY2F0ZS1iYWNrZ3JvdW5kLWltYWdlcyIsbmFtZToiRGlzYWxsb3cgZHVwbGljYXRlIGJhY2tncm91bmQgaW1hZ2VzIixkZXNjOiJFdmVyeSBiYWNrZ3JvdW5kLWltYWdlIHNob3VsZCBiZSB1bmlxdWUuIFVzZSBhIGNvbW1vbiBjbGFzcyBmb3IgZS5nLiBzcHJpdGVzLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD17fTthLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oYSl7dmFyIGU9YS5wcm9wZXJ0eS50ZXh0LGY9YS52YWx1ZSxnLGg7aWYoZS5tYXRjaCgvYmFja2dyb3VuZC9pKSlmb3IoZz0wLGg9Zi5wYXJ0cy5sZW5ndGg7ZzxoO2crKylmLnBhcnRzW2ddLnR5cGU9PSJ1cmkiJiYodHlwZW9mIGRbZi5wYXJ0c1tnXS51cmldPT0idW5kZWZpbmVkIj9kW2YucGFydHNbZ10udXJpXT1hOmIucmVwb3J0KCJCYWNrZ3JvdW5kIGltYWdlICciK2YucGFydHNbZ10udXJpKyInIHdhcyB1c2VkIG11bHRpcGxlIHRpbWVzLCBmaXJzdCBkZWNsYXJlZCBhdCBsaW5lICIrZFtmLnBhcnRzW2ddLnVyaV0ubGluZSsiLCBjb2wgIitkW2YucGFydHNbZ10udXJpXS5jb2wrIi4iLGEubGluZSxhLmNvbCxjKSl9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJkdXBsaWNhdGUtcHJvcGVydGllcyIsbmFtZToiRGlzYWxsb3cgZHVwbGljYXRlIHByb3BlcnRpZXMiLGRlc2M6IkR1cGxpY2F0ZSBwcm9wZXJ0aWVzIG11c3QgYXBwZWFyIG9uZSBhZnRlciB0aGUgb3RoZXIuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZihhKXtkPXt9fXZhciBjPXRoaXMsZCxlO2EuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZiksYS5hZGRMaXN0ZW5lcigic3RhcnRmb250ZmFjZSIsZiksYS5hZGRMaXN0ZW5lcigic3RhcnRwYWdlIixmKSxhLmFkZExpc3RlbmVyKCJzdGFydHBhZ2VtYXJnaW4iLGYpLGEuYWRkTGlzdGVuZXIoInN0YXJ0a2V5ZnJhbWVydWxlIixmKSxhLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oYSl7dmFyIGY9YS5wcm9wZXJ0eSxnPWYudGV4dC50b0xvd2VyQ2FzZSgpO2RbZ10mJihlIT1nfHxkW2ddPT1hLnZhbHVlLnRleHQpJiZiLnJlcG9ydCgiRHVwbGljYXRlIHByb3BlcnR5ICciK2EucHJvcGVydHkrIicgZm91bmQuIixhLmxpbmUsYS5jb2wsYyksZFtnXT1hLnZhbHVlLnRleHQsZT1nfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiZW1wdHktcnVsZXMiLG5hbWU6IkRpc2FsbG93IGVtcHR5IHJ1bGVzIixkZXNjOiJSdWxlcyB3aXRob3V0IGFueSBwcm9wZXJ0aWVzIHNwZWNpZmllZCBzaG91bGQgYmUgcmVtb3ZlZC4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9MDthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKCl7ZD0wfSksYS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKCl7ZCsrfSksYS5hZGRMaXN0ZW5lcigiZW5kcnVsZSIsZnVuY3Rpb24oYSl7dmFyIGU9YS5zZWxlY3RvcnM7ZD09PTAmJmIucmVwb3J0KCJSdWxlIGlzIGVtcHR5LiIsZVswXS5saW5lLGVbMF0uY29sLGMpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiZXJyb3JzIixuYW1lOiJQYXJzaW5nIEVycm9ycyIsZGVzYzoiVGhpcyBydWxlIGxvb2tzIGZvciByZWNvdmVyYWJsZSBzeW50YXggZXJyb3JzLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7YS5hZGRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKGEpe2IuZXJyb3IoYS5tZXNzYWdlLGEubGluZSxhLmNvbCxjKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImZhbGxiYWNrLWNvbG9ycyIsbmFtZToiUmVxdWlyZSBmYWxsYmFjayBjb2xvcnMiLGRlc2M6IkZvciBvbGRlciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgUkdCQSwgSFNMLCBvciBIU0xBLCBwcm92aWRlIGEgZmFsbGJhY2sgY29sb3IuIixicm93c2VyczoiSUU2LElFNyxJRTgiLGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBnKGEpe2Y9e30sZD1udWxsfXZhciBjPXRoaXMsZCxlPXtjb2xvcjoxLGJhY2tncm91bmQ6MSwiYmFja2dyb3VuZC1jb2xvciI6MX0sZjthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGcpLGEuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLGcpLGEuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZSIsZyksYS5hZGRMaXN0ZW5lcigic3RhcnRwYWdlbWFyZ2luIixnKSxhLmFkZExpc3RlbmVyKCJzdGFydGtleWZyYW1lcnVsZSIsZyksYS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGEpe3ZhciBmPWEucHJvcGVydHksZz1mLnRleHQudG9Mb3dlckNhc2UoKSxoPWEudmFsdWUucGFydHMsaT0wLGo9IiIsaz1oLmxlbmd0aDtpZihlW2ddKXdoaWxlKGk8ayloW2ldLnR5cGU9PSJjb2xvciImJigiYWxwaGEiaW4gaFtpXXx8Imh1ZSJpbiBoW2ldPygvKFteXCldKylcKC8udGVzdChoW2ldKSYmKGo9UmVnRXhwLiQxLnRvVXBwZXJDYXNlKCkpLCghZHx8ZC5wcm9wZXJ0eS50ZXh0LnRvTG93ZXJDYXNlKCkhPWd8fGQuY29sb3JUeXBlIT0iY29tcGF0IikmJmIucmVwb3J0KCJGYWxsYmFjayAiK2crIiAoaGV4IG9yIFJHQikgc2hvdWxkIHByZWNlZGUgIitqKyIgIitnKyIuIixhLmxpbmUsYS5jb2wsYykpOmEuY29sb3JUeXBlPSJjb21wYXQiKSxpKys7ZD1hfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiZmxvYXRzIixuYW1lOiJEaXNhbGxvdyB0b28gbWFueSBmbG9hdHMiLGRlc2M6IlRoaXMgcnVsZSB0ZXN0cyBpZiB0aGUgZmxvYXQgcHJvcGVydHkgaXMgdXNlZCB0b28gbWFueSB0aW1lcyIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD0wO2EuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihhKXthLnByb3BlcnR5LnRleHQudG9Mb3dlckNhc2UoKT09ImZsb2F0IiYmYS52YWx1ZS50ZXh0LnRvTG93ZXJDYXNlKCkhPSJub25lIiYmZCsrfSksYS5hZGRMaXN0ZW5lcigiZW5kc3R5bGVzaGVldCIsZnVuY3Rpb24oKXtiLnN0YXQoImZsb2F0cyIsZCksZD49MTAmJmIucm9sbHVwV2FybigiVG9vIG1hbnkgZmxvYXRzICgiK2QrIiksIHlvdSdyZSBwcm9iYWJseSB1c2luZyB0aGVtIGZvciBsYXlvdXQuIENvbnNpZGVyIHVzaW5nIGEgZ3JpZCBzeXN0ZW0gaW5zdGVhZC4iLGMpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiZm9udC1mYWNlcyIsbmFtZToiRG9uJ3QgdXNlIHRvbyBtYW55IHdlYiBmb250cyIsZGVzYzoiVG9vIG1hbnkgZGlmZmVyZW50IHdlYiBmb250cyBpbiB0aGUgc2FtZSBzdHlsZXNoZWV0LiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD0wO2EuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLGZ1bmN0aW9uKCl7ZCsrfSksYS5hZGRMaXN0ZW5lcigiZW5kc3R5bGVzaGVldCIsZnVuY3Rpb24oKXtkPjUmJmIucm9sbHVwV2FybigiVG9vIG1hbnkgQGZvbnQtZmFjZSBkZWNsYXJhdGlvbnMgKCIrZCsiKS4iLGMpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiZm9udC1zaXplcyIsbmFtZToiRGlzYWxsb3cgdG9vIG1hbnkgZm9udCBzaXplcyIsZGVzYzoiQ2hlY2tzIHRoZSBudW1iZXIgb2YgZm9udC1zaXplIGRlY2xhcmF0aW9ucy4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9MDthLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oYSl7YS5wcm9wZXJ0eT09ImZvbnQtc2l6ZSImJmQrK30pLGEuYWRkTGlzdGVuZXIoImVuZHN0eWxlc2hlZXQiLGZ1bmN0aW9uKCl7Yi5zdGF0KCJmb250LXNpemVzIixkKSxkPj0xMCYmYi5yb2xsdXBXYXJuKCJUb28gbWFueSBmb250LXNpemUgZGVjbGFyYXRpb25zICgiK2QrIiksIGFic3RyYWN0aW9uIG5lZWRlZC4iLGMpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiZ3JhZGllbnRzIixuYW1lOiJSZXF1aXJlIGFsbCBncmFkaWVudCBkZWZpbml0aW9ucyIsZGVzYzoiV2hlbiB1c2luZyBhIHZlbmRvci1wcmVmaXhlZCBncmFkaWVudCwgbWFrZSBzdXJlIHRvIHVzZSB0aGVtIGFsbC4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ7YS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmdW5jdGlvbigpe2Q9e21vejowLHdlYmtpdDowLG9sZFdlYmtpdDowLG1zOjAsbzowfX0pLGEuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihhKXsvXC0obW96fG1zfG98d2Via2l0KSg/OlwtKD86bGluZWFyfHJhZGlhbCkpXC1ncmFkaWVudC9pLnRlc3QoYS52YWx1ZSk/ZFtSZWdFeHAuJDFdPTE6L1wtd2Via2l0XC1ncmFkaWVudC9pLnRlc3QoYS52YWx1ZSkmJihkLm9sZFdlYmtpdD0xKX0pLGEuYWRkTGlzdGVuZXIoImVuZHJ1bGUiLGZ1bmN0aW9uKGEpe3ZhciBlPVtdO2QubW96fHxlLnB1c2goIkZpcmVmb3ggMy42KyIpLGQud2Via2l0fHxlLnB1c2goIldlYmtpdCAoU2FmYXJpIDUrLCBDaHJvbWUpIiksZC5vbGRXZWJraXR8fGUucHVzaCgiT2xkIFdlYmtpdCAoU2FmYXJpIDQrLCBDaHJvbWUpIiksZC5tc3x8ZS5wdXNoKCJJbnRlcm5ldCBFeHBsb3JlciAxMCsiKSxkLm98fGUucHVzaCgiT3BlcmEgMTEuMSsiKSxlLmxlbmd0aCYmZS5sZW5ndGg8NSYmYi5yZXBvcnQoIk1pc3NpbmcgdmVuZG9yLXByZWZpeGVkIENTUyBncmFkaWVudHMgZm9yICIrZS5qb2luKCIsICIpKyIuIixhLnNlbGVjdG9yc1swXS5saW5lLGEuc2VsZWN0b3JzWzBdLmNvbCxjKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImlkcyIsbmFtZToiRGlzYWxsb3cgSURzIGluIHNlbGVjdG9ycyIsZGVzYzoiU2VsZWN0b3JzIHNob3VsZCBub3QgY29udGFpbiBJRHMuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpczthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKGQpe3ZhciBlPWQuc2VsZWN0b3JzLGYsZyxoLGksaixrLGw7Zm9yKGo9MDtqPGUubGVuZ3RoO2orKyl7Zj1lW2pdLGk9MDtmb3Ioaz0wO2s8Zi5wYXJ0cy5sZW5ndGg7aysrKXtnPWYucGFydHNba107aWYoZy50eXBlPT1hLlNFTEVDVE9SX1BBUlRfVFlQRSlmb3IobD0wO2w8Zy5tb2RpZmllcnMubGVuZ3RoO2wrKyloPWcubW9kaWZpZXJzW2xdLGgudHlwZT09ImlkIiYmaSsrfWk9PTE/Yi5yZXBvcnQoIkRvbid0IHVzZSBJRHMgaW4gc2VsZWN0b3JzLiIsZi5saW5lLGYuY29sLGMpOmk+MSYmYi5yZXBvcnQoaSsiIElEcyBpbiB0aGUgc2VsZWN0b3IsIHJlYWxseT8iLGYubGluZSxmLmNvbCxjKX19KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJpbXBvcnQiLG5hbWU6IkRpc2FsbG93IEBpbXBvcnQiLGRlc2M6IkRvbid0IHVzZSBAaW1wb3J0LCB1c2UgPGxpbms+IGluc3RlYWQuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpczthLmFkZExpc3RlbmVyKCJpbXBvcnQiLGZ1bmN0aW9uKGEpe2IucmVwb3J0KCJAaW1wb3J0IHByZXZlbnRzIHBhcmFsbGVsIGRvd25sb2FkcywgdXNlIDxsaW5rPiBpbnN0ZWFkLiIsYS5saW5lLGEuY29sLGMpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiaW1wb3J0YW50IixuYW1lOiJEaXNhbGxvdyAhaW1wb3J0YW50IixkZXNjOiJCZSBjYXJlZnVsIHdoZW4gdXNpbmcgIWltcG9ydGFudCBkZWNsYXJhdGlvbiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD0wO2EuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihhKXthLmltcG9ydGFudD09PSEwJiYoZCsrLGIucmVwb3J0KCJVc2Ugb2YgIWltcG9ydGFudCIsYS5saW5lLGEuY29sLGMpKX0pLGEuYWRkTGlzdGVuZXIoImVuZHN0eWxlc2hlZXQiLGZ1bmN0aW9uKCl7Yi5zdGF0KCJpbXBvcnRhbnQiLGQpLGQ+PTEwJiZiLnJvbGx1cFdhcm4oIlRvbyBtYW55ICFpbXBvcnRhbnQgZGVjbGFyYXRpb25zICgiK2QrIiksIHRyeSB0byB1c2UgbGVzcyB0aGFuIDEwIHRvIGF2b2lkIHNwZWNpZml0eSBpc3N1ZXMuIixjKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6Imtub3duLXByb3BlcnRpZXMiLG5hbWU6IlJlcXVpcmUgdXNlIG9mIGtub3duIHByb3BlcnRpZXMiLGRlc2M6IlByb3BlcnRpZXMgc2hvdWxkIGJlIGtub3duIChsaXN0ZWQgaW4gQ1NTIHNwZWNpZmljYXRpb24pIG9yIGJlIGEgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5LiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD17ImFsaWdubWVudC1hZGp1c3QiOjEsImFsaWdubWVudC1iYXNlbGluZSI6MSxhbmltYXRpb246MSwiYW5pbWF0aW9uLWRlbGF5IjoxLCJhbmltYXRpb24tZGlyZWN0aW9uIjoxLCJhbmltYXRpb24tZHVyYXRpb24iOjEsImFuaW1hdGlvbi1maWxsLW1vZGUiOjEsImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOjEsImFuaW1hdGlvbi1uYW1lIjoxLCJhbmltYXRpb24tcGxheS1zdGF0ZSI6MSwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiI6MSxhcHBlYXJhbmNlOjEsYXppbXV0aDoxLCJiYWNrZmFjZS12aXNpYmlsaXR5IjoxLGJhY2tncm91bmQ6MSwiYmFja2dyb3VuZC1hdHRhY2htZW50IjoxLCJiYWNrZ3JvdW5kLWJyZWFrIjoxLCJiYWNrZ3JvdW5kLWNsaXAiOjEsImJhY2tncm91bmQtY29sb3IiOjEsImJhY2tncm91bmQtaW1hZ2UiOjEsImJhY2tncm91bmQtb3JpZ2luIjoxLCJiYWNrZ3JvdW5kLXBvc2l0aW9uIjoxLCJiYWNrZ3JvdW5kLXJlcGVhdCI6MSwiYmFja2dyb3VuZC1zaXplIjoxLCJiYXNlbGluZS1zaGlmdCI6MSxiaW5kaW5nOjEsYmxlZWQ6MSwiYm9va21hcmstbGFiZWwiOjEsImJvb2ttYXJrLWxldmVsIjoxLCJib29rbWFyay1zdGF0ZSI6MSwiYm9va21hcmstdGFyZ2V0IjoxLGJvcmRlcjoxLCJib3JkZXItYm90dG9tIjoxLCJib3JkZXItYm90dG9tLWNvbG9yIjoxLCJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIjoxLCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyI6MSwiYm9yZGVyLWJvdHRvbS1zdHlsZSI6MSwiYm9yZGVyLWJvdHRvbS13aWR0aCI6MSwiYm9yZGVyLWNvbGxhcHNlIjoxLCJib3JkZXItY29sb3IiOjEsImJvcmRlci1pbWFnZSI6MSwiYm9yZGVyLWltYWdlLW91dHNldCI6MSwiYm9yZGVyLWltYWdlLXJlcGVhdCI6MSwiYm9yZGVyLWltYWdlLXNsaWNlIjoxLCJib3JkZXItaW1hZ2Utc291cmNlIjoxLCJib3JkZXItaW1hZ2Utd2lkdGgiOjEsImJvcmRlci1sZWZ0IjoxLCJib3JkZXItbGVmdC1jb2xvciI6MSwiYm9yZGVyLWxlZnQtc3R5bGUiOjEsImJvcmRlci1sZWZ0LXdpZHRoIjoxLCJib3JkZXItcmFkaXVzIjoxLCJib3JkZXItcmlnaHQiOjEsImJvcmRlci1yaWdodC1jb2xvciI6MSwiYm9yZGVyLXJpZ2h0LXN0eWxlIjoxLCJib3JkZXItcmlnaHQtd2lkdGgiOjEsImJvcmRlci1zcGFjaW5nIjoxLCJib3JkZXItc3R5bGUiOjEsImJvcmRlci10b3AiOjEsImJvcmRlci10b3AtY29sb3IiOjEsImJvcmRlci10b3AtbGVmdC1yYWRpdXMiOjEsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIjoxLCJib3JkZXItdG9wLXN0eWxlIjoxLCJib3JkZXItdG9wLXdpZHRoIjoxLCJib3JkZXItd2lkdGgiOjEsYm90dG9tOjEsImJveC1hbGlnbiI6MSwiYm94LWRlY29yYXRpb24tYnJlYWsiOjEsImJveC1kaXJlY3Rpb24iOjEsImJveC1mbGV4IjoxLCJib3gtZmxleC1ncm91cCI6MSwiYm94LWxpbmVzIjoxLCJib3gtb3JkaW5hbC1ncm91cCI6MSwiYm94LW9yaWVudCI6MSwiYm94LXBhY2siOjEsImJveC1zaGFkb3ciOjEsImJveC1zaXppbmciOjEsImJyZWFrLWFmdGVyIjoxLCJicmVhay1iZWZvcmUiOjEsImJyZWFrLWluc2lkZSI6MSwiY2FwdGlvbi1zaWRlIjoxLGNsZWFyOjEsY2xpcDoxLGNvbG9yOjEsImNvbG9yLXByb2ZpbGUiOjEsImNvbHVtbi1jb3VudCI6MSwiY29sdW1uLWZpbGwiOjEsImNvbHVtbi1nYXAiOjEsImNvbHVtbi1ydWxlIjoxLCJjb2x1bW4tcnVsZS1jb2xvciI6MSwiY29sdW1uLXJ1bGUtc3R5bGUiOjEsImNvbHVtbi1ydWxlLXdpZHRoIjoxLCJjb2x1bW4tc3BhbiI6MSwiY29sdW1uLXdpZHRoIjoxLGNvbHVtbnM6MSxjb250ZW50OjEsImNvdW50ZXItaW5jcmVtZW50IjoxLCJjb3VudGVyLXJlc2V0IjoxLGNyb3A6MSxjdWU6MSwiY3VlLWFmdGVyIjoxLCJjdWUtYmVmb3JlIjoxLGN1cnNvcjoxLGRpcmVjdGlvbjoxLGRpc3BsYXk6MSwiZG9taW5hbnQtYmFzZWxpbmUiOjEsImRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3QiOjEsImRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbiI6MSwiZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3QiOjEsImRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ24iOjEsImRyb3AtaW5pdGlhbC1zaXplIjoxLCJkcm9wLWluaXRpYWwtdmFsdWUiOjEsZWxldmF0aW9uOjEsImVtcHR5LWNlbGxzIjoxLGZpdDoxLCJmaXQtcG9zaXRpb24iOjEsImZsb2F0IjoxLCJmbG9hdC1vZmZzZXQiOjEsZm9udDoxLCJmb250LWZhbWlseSI6MSwiZm9udC1zaXplIjoxLCJmb250LXNpemUtYWRqdXN0IjoxLCJmb250LXN0cmV0Y2giOjEsImZvbnQtc3R5bGUiOjEsImZvbnQtdmFyaWFudCI6MSwiZm9udC13ZWlnaHQiOjEsImdyaWQtY29sdW1ucyI6MSwiZ3JpZC1yb3dzIjoxLCJoYW5naW5nLXB1bmN0dWF0aW9uIjoxLGhlaWdodDoxLCJoeXBoZW5hdGUtYWZ0ZXIiOjEsImh5cGhlbmF0ZS1iZWZvcmUiOjEsImh5cGhlbmF0ZS1jaGFyYWN0ZXIiOjEsImh5cGhlbmF0ZS1saW5lcyI6MSwiaHlwaGVuYXRlLXJlc291cmNlIjoxLGh5cGhlbnM6MSxpY29uOjEsImltYWdlLW9yaWVudGF0aW9uIjoxLCJpbWFnZS1yZW5kZXJpbmciOjEsImltYWdlLXJlc29sdXRpb24iOjEsImlubGluZS1ib3gtYWxpZ24iOjEsbGVmdDoxLCJsZXR0ZXItc3BhY2luZyI6MSwibGluZS1oZWlnaHQiOjEsImxpbmUtc3RhY2tpbmciOjEsImxpbmUtc3RhY2tpbmctcnVieSI6MSwibGluZS1zdGFja2luZy1zaGlmdCI6MSwibGluZS1zdGFja2luZy1zdHJhdGVneSI6MSwibGlzdC1zdHlsZSI6MSwibGlzdC1zdHlsZS1pbWFnZSI6MSwibGlzdC1zdHlsZS1wb3NpdGlvbiI6MSwibGlzdC1zdHlsZS10eXBlIjoxLG1hcmdpbjoxLCJtYXJnaW4tYm90dG9tIjoxLCJtYXJnaW4tbGVmdCI6MSwibWFyZ2luLXJpZ2h0IjoxLCJtYXJnaW4tdG9wIjoxLG1hcms6MSwibWFyay1hZnRlciI6MSwibWFyay1iZWZvcmUiOjEsbWFya3M6MSwibWFycXVlZS1kaXJlY3Rpb24iOjEsIm1hcnF1ZWUtcGxheS1jb3VudCI6MSwibWFycXVlZS1zcGVlZCI6MSwibWFycXVlZS1zdHlsZSI6MSwibWF4LWhlaWdodCI6MSwibWF4LXdpZHRoIjoxLCJtaW4taGVpZ2h0IjoxLCJtaW4td2lkdGgiOjEsIm1vdmUtdG8iOjEsIm5hdi1kb3duIjoxLCJuYXYtaW5kZXgiOjEsIm5hdi1sZWZ0IjoxLCJuYXYtcmlnaHQiOjEsIm5hdi11cCI6MSxvcGFjaXR5OjEsb3JwaGFuczoxLG91dGxpbmU6MSwib3V0bGluZS1jb2xvciI6MSwib3V0bGluZS1vZmZzZXQiOjEsIm91dGxpbmUtc3R5bGUiOjEsIm91dGxpbmUtd2lkdGgiOjEsb3ZlcmZsb3c6MSwib3ZlcmZsb3ctc3R5bGUiOjEsIm92ZXJmbG93LXgiOjEsIm92ZXJmbG93LXkiOjEscGFkZGluZzoxLCJwYWRkaW5nLWJvdHRvbSI6MSwicGFkZGluZy1sZWZ0IjoxLCJwYWRkaW5nLXJpZ2h0IjoxLCJwYWRkaW5nLXRvcCI6MSxwYWdlOjEsInBhZ2UtYnJlYWstYWZ0ZXIiOjEsInBhZ2UtYnJlYWstYmVmb3JlIjoxLCJwYWdlLWJyZWFrLWluc2lkZSI6MSwicGFnZS1wb2xpY3kiOjEscGF1c2U6MSwicGF1c2UtYWZ0ZXIiOjEsInBhdXNlLWJlZm9yZSI6MSxwZXJzcGVjdGl2ZToxLCJwZXJzcGVjdGl2ZS1vcmlnaW4iOjEscGhvbmVtZXM6MSxwaXRjaDoxLCJwaXRjaC1yYW5nZSI6MSwicGxheS1kdXJpbmciOjEscG9zaXRpb246MSwicHJlc2VudGF0aW9uLWxldmVsIjoxLCJwdW5jdHVhdGlvbi10cmltIjoxLHF1b3RlczoxLCJyZW5kZXJpbmctaW50ZW50IjoxLHJlc2l6ZToxLHJlc3Q6MSwicmVzdC1hZnRlciI6MSwicmVzdC1iZWZvcmUiOjEscmljaG5lc3M6MSxyaWdodDoxLHJvdGF0aW9uOjEsInJvdGF0aW9uLXBvaW50IjoxLCJydWJ5LWFsaWduIjoxLCJydWJ5LW92ZXJoYW5nIjoxLCJydWJ5LXBvc2l0aW9uIjoxLCJydWJ5LXNwYW4iOjEsc2l6ZToxLHNwZWFrOjEsInNwZWFrLWhlYWRlciI6MSwic3BlYWstbnVtZXJhbCI6MSwic3BlYWstcHVuY3R1YXRpb24iOjEsInNwZWVjaC1yYXRlIjoxLHN0cmVzczoxLCJzdHJpbmctc2V0IjoxLCJ0YWJsZS1sYXlvdXQiOjEsdGFyZ2V0OjEsInRhcmdldC1uYW1lIjoxLCJ0YXJnZXQtbmV3IjoxLCJ0YXJnZXQtcG9zaXRpb24iOjEsInRleHQtYWxpZ24iOjEsInRleHQtYWxpZ24tbGFzdCI6MSwidGV4dC1kZWNvcmF0aW9uIjoxLCJ0ZXh0LWVtcGhhc2lzIjoxLCJ0ZXh0LWhlaWdodCI6MSwidGV4dC1pbmRlbnQiOjEsInRleHQtanVzdGlmeSI6MSwidGV4dC1vdXRsaW5lIjoxLCJ0ZXh0LXNoYWRvdyI6MSwidGV4dC10cmFuc2Zvcm0iOjEsInRleHQtd3JhcCI6MSx0b3A6MSx0cmFuc2Zvcm06MSwidHJhbnNmb3JtLW9yaWdpbiI6MSwidHJhbnNmb3JtLXN0eWxlIjoxLHRyYW5zaXRpb246MSwidHJhbnNpdGlvbi1kZWxheSI6MSwidHJhbnNpdGlvbi1kdXJhdGlvbiI6MSwidHJhbnNpdGlvbi1wcm9wZXJ0eSI6MSwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOjEsInVuaWNvZGUtYmlkaSI6MSwidXNlci1tb2RpZnkiOjEsInVzZXItc2VsZWN0IjoxLCJ2ZXJ0aWNhbC1hbGlnbiI6MSx2aXNpYmlsaXR5OjEsInZvaWNlLWJhbGFuY2UiOjEsInZvaWNlLWR1cmF0aW9uIjoxLCJ2b2ljZS1mYW1pbHkiOjEsInZvaWNlLXBpdGNoIjoxLCJ2b2ljZS1waXRjaC1yYW5nZSI6MSwidm9pY2UtcmF0ZSI6MSwidm9pY2Utc3RyZXNzIjoxLCJ2b2ljZS12b2x1bWUiOjEsdm9sdW1lOjEsIndoaXRlLXNwYWNlIjoxLCJ3aGl0ZS1zcGFjZS1jb2xsYXBzZSI6MSx3aWRvd3M6MSx3aWR0aDoxLCJ3b3JkLWJyZWFrIjoxLCJ3b3JkLXNwYWNpbmciOjEsIndvcmQtd3JhcCI6MSwiei1pbmRleCI6MSxmaWx0ZXI6MSx6b29tOjEsc3JjOjF9O2EuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihhKXt2YXIgZD1hLnByb3BlcnR5LnRleHQudG9Mb3dlckNhc2UoKTthLmludmFsaWQmJmIucmVwb3J0KGEuaW52YWxpZC5tZXNzYWdlLGEubGluZSxhLmNvbCxjKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6Im91dGxpbmUtbm9uZSIsbmFtZToiRGlzYWxsb3cgb3V0bGluZTogbm9uZSIsZGVzYzoiVXNlIG9mIG91dGxpbmU6IG5vbmUgb3Igb3V0bGluZTogMCBzaG91bGQgYmUgbGltaXRlZCB0byA6Zm9jdXMgcnVsZXMuIixicm93c2VyczoiQWxsIix0YWdzOlsiQWNjZXNzaWJpbGl0eSJdLGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBlKGEpe2Euc2VsZWN0b3JzP2Q9e2xpbmU6YS5saW5lLGNvbDphLmNvbCxzZWxlY3RvcnM6YS5zZWxlY3RvcnMscHJvcENvdW50OjAsb3V0bGluZTohMX06ZD1udWxsfWZ1bmN0aW9uIGYoYSl7ZCYmZC5vdXRsaW5lJiYoZC5zZWxlY3RvcnMudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIjpmb2N1cyIpPT0tMT9iLnJlcG9ydCgiT3V0bGluZXMgc2hvdWxkIG9ubHkgYmUgbW9kaWZpZWQgdXNpbmcgOmZvY3VzLiIsZC5saW5lLGQuY29sLGMpOmQucHJvcENvdW50PT0xJiZiLnJlcG9ydCgiT3V0bGluZXMgc2hvdWxkbid0IGJlIGhpZGRlbiB1bmxlc3Mgb3RoZXIgdmlzdWFsIGNoYW5nZXMgYXJlIG1hZGUuIixkLmxpbmUsZC5jb2wsYykpfXZhciBjPXRoaXMsZDthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGUpLGEuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLGUpLGEuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZSIsZSksYS5hZGRMaXN0ZW5lcigic3RhcnRwYWdlbWFyZ2luIixlKSxhLmFkZExpc3RlbmVyKCJzdGFydGtleWZyYW1lcnVsZSIsZSksYS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGEpe3ZhciBiPWEucHJvcGVydHkudGV4dC50b0xvd2VyQ2FzZSgpLGM9YS52YWx1ZTtkJiYoZC5wcm9wQ291bnQrKyxiPT0ib3V0bGluZSImJihjPT0ibm9uZSJ8fGM9PSIwIikmJihkLm91dGxpbmU9ITApKX0pLGEuYWRkTGlzdGVuZXIoImVuZHJ1bGUiLGYpLGEuYWRkTGlzdGVuZXIoImVuZGZvbnRmYWNlIixmKSxhLmFkZExpc3RlbmVyKCJlbmRwYWdlIixmKSxhLmFkZExpc3RlbmVyKCJlbmRwYWdlbWFyZ2luIixmKSxhLmFkZExpc3RlbmVyKCJlbmRrZXlmcmFtZXJ1bGUiLGYpfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6Im92ZXJxdWFsaWZpZWQtZWxlbWVudHMiLG5hbWU6IkRpc2FsbG93IG92ZXJxdWFsaWZpZWQgZWxlbWVudHMiLGRlc2M6IkRvbid0IHVzZSBjbGFzc2VzIG9yIElEcyB3aXRoIGVsZW1lbnRzIChhLmZvbyBvciBhI2ZvbykuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPXt9O2EuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oZSl7dmFyIGY9ZS5zZWxlY3RvcnMsZyxoLGksaixrLGw7Zm9yKGo9MDtqPGYubGVuZ3RoO2orKyl7Zz1mW2pdO2ZvcihrPTA7azxnLnBhcnRzLmxlbmd0aDtrKyspe2g9Zy5wYXJ0c1trXTtpZihoLnR5cGU9PWEuU0VMRUNUT1JfUEFSVF9UWVBFKWZvcihsPTA7bDxoLm1vZGlmaWVycy5sZW5ndGg7bCsrKWk9aC5tb2RpZmllcnNbbF0saC5lbGVtZW50TmFtZSYmaS50eXBlPT0iaWQiP2IucmVwb3J0KCJFbGVtZW50ICgiK2grIikgaXMgb3ZlcnF1YWxpZmllZCwganVzdCB1c2UgIitpKyIgd2l0aG91dCBlbGVtZW50IG5hbWUuIixoLmxpbmUsaC5jb2wsYyk6aS50eXBlPT0iY2xhc3MiJiYoZFtpXXx8KGRbaV09W10pLGRbaV0ucHVzaCh7bW9kaWZpZXI6aSxwYXJ0Omh9KSl9fX0pLGEuYWRkTGlzdGVuZXIoImVuZHN0eWxlc2hlZXQiLGZ1bmN0aW9uKCl7dmFyIGE7Zm9yKGEgaW4gZClkLmhhc093blByb3BlcnR5KGEpJiZkW2FdLmxlbmd0aD09MSYmZFthXVswXS5wYXJ0LmVsZW1lbnROYW1lJiZiLnJlcG9ydCgiRWxlbWVudCAoIitkW2FdWzBdLnBhcnQrIikgaXMgb3ZlcnF1YWxpZmllZCwganVzdCB1c2UgIitkW2FdWzBdLm1vZGlmaWVyKyIgd2l0aG91dCBlbGVtZW50IG5hbWUuIixkW2FdWzBdLnBhcnQubGluZSxkW2FdWzBdLnBhcnQuY29sLGMpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoicXVhbGlmaWVkLWhlYWRpbmdzIixuYW1lOiJEaXNhbGxvdyBxdWFsaWZpZWQgaGVhZGluZ3MiLGRlc2M6IkhlYWRpbmdzIHNob3VsZCBub3QgYmUgcXVhbGlmaWVkIChuYW1lc3BhY2VkKS4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2EuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oZCl7dmFyIGU9ZC5zZWxlY3RvcnMsZixnLGgsaTtmb3IoaD0wO2g8ZS5sZW5ndGg7aCsrKXtmPWVbaF07Zm9yKGk9MDtpPGYucGFydHMubGVuZ3RoO2krKylnPWYucGFydHNbaV0sZy50eXBlPT1hLlNFTEVDVE9SX1BBUlRfVFlQRSYmZy5lbGVtZW50TmFtZSYmL2hbMS02XS8udGVzdChnLmVsZW1lbnROYW1lLnRvU3RyaW5nKCkpJiZpPjAmJmIucmVwb3J0KCJIZWFkaW5nICgiK2cuZWxlbWVudE5hbWUrIikgc2hvdWxkIG5vdCBiZSBxdWFsaWZpZWQuIixnLmxpbmUsZy5jb2wsYyl9fSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoicmVnZXgtc2VsZWN0b3JzIixuYW1lOiJEaXNhbGxvdyBzZWxlY3RvcnMgdGhhdCBsb29rIGxpa2UgcmVnZXhzIixkZXNjOiJTZWxlY3RvcnMgdGhhdCBsb29rIGxpa2UgcmVndWxhciBleHByZXNzaW9ucyBhcmUgc2xvdyBhbmQgc2hvdWxkIGJlIGF2b2lkZWQuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpczthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKGQpe3ZhciBlPWQuc2VsZWN0b3JzLGYsZyxoLGksaixrO2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspe2Y9ZVtpXTtmb3Ioaj0wO2o8Zi5wYXJ0cy5sZW5ndGg7aisrKXtnPWYucGFydHNbal07aWYoZy50eXBlPT1hLlNFTEVDVE9SX1BBUlRfVFlQRSlmb3Ioaz0wO2s8Zy5tb2RpZmllcnMubGVuZ3RoO2srKyloPWcubW9kaWZpZXJzW2tdLGgudHlwZT09ImF0dHJpYnV0ZSImJi8oW1x+XHxcXlwkXCpdPSkvLnRlc3QoaCkmJmIucmVwb3J0KCJBdHRyaWJ1dGUgc2VsZWN0b3JzIHdpdGggIitSZWdFeHAuJDErIiBhcmUgc2xvdyEiLGgubGluZSxoLmNvbCxjKX19fSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoicnVsZXMtY291bnQiLG5hbWU6IlJ1bGVzIENvdW50IixkZXNjOiJUcmFjayBob3cgbWFueSBydWxlcyB0aGVyZSBhcmUuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPTA7YS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmdW5jdGlvbigpe2QrK30pLGEuYWRkTGlzdGVuZXIoImVuZHN0eWxlc2hlZXQiLGZ1bmN0aW9uKCl7Yi5zdGF0KCJydWxlLWNvdW50IixkKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InNob3J0aGFuZCIsbmFtZToiUmVxdWlyZSBzaG9ydGhhbmQgcHJvcGVydGllcyIsZGVzYzoiVXNlIHNob3J0aGFuZCBwcm9wZXJ0aWVzIHdoZXJlIHBvc3NpYmxlLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGooYSl7aD17fX1mdW5jdGlvbiBrKGEpe3ZhciBkLGUsZixnO2ZvcihkIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShkKSl7Zz0wO2ZvcihlPTAsZj1pW2RdLmxlbmd0aDtlPGY7ZSsrKWcrPWhbaVtkXVtlXV0/MTowO2c9PWlbZF0ubGVuZ3RoJiZiLnJlcG9ydCgiVGhlIHByb3BlcnRpZXMgIitpW2RdLmpvaW4oIiwgIikrIiBjYW4gYmUgcmVwbGFjZWQgYnkgIitkKyIuIixhLmxpbmUsYS5jb2wsYyl9fXZhciBjPXRoaXMsZCxlLGYsZz17fSxoLGk9e21hcmdpbjpbIm1hcmdpbi10b3AiLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiXSxwYWRkaW5nOlsicGFkZGluZy10b3AiLCJwYWRkaW5nLWJvdHRvbSIsInBhZGRpbmctbGVmdCIsInBhZGRpbmctcmlnaHQiXX07Zm9yKGQgaW4gaSlpZihpLmhhc093blByb3BlcnR5KGQpKWZvcihlPTAsZj1pW2RdLmxlbmd0aDtlPGY7ZSsrKWdbaVtkXVtlXV09ZDthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGopLGEuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLGopLGEuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihhKXt2YXIgYj1hLnByb3BlcnR5LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxjPWEudmFsdWUucGFydHNbMF0udmFsdWU7Z1tiXSYmKGhbYl09MSl9KSxhLmFkZExpc3RlbmVyKCJlbmRydWxlIixrKSxhLmFkZExpc3RlbmVyKCJlbmRmb250ZmFjZSIsayl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoidGV4dC1pbmRlbnQiLG5hbWU6IkRpc2FsbG93IG5lZ2F0aXZlIHRleHQtaW5kZW50IixkZXNjOiJDaGVja3MgZm9yIHRleHQgaW5kZW50IGxlc3MgdGhhbiAtOTlweCIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGUoYSl7ZD0hMX1mdW5jdGlvbiBmKGEpe2QmJmIucmVwb3J0KCJOZWdhdGl2ZSB0ZXh0LWluZGVudCBkb2Vzbid0IHdvcmsgd2VsbCB3aXRoIFJUTC4gSWYgeW91IHVzZSB0ZXh0LWluZGVudCBmb3IgaW1hZ2UgcmVwbGFjZW1lbnQgZXhwbGljaXRseSBzZXQgZGlyZWN0aW9uIGZvciB0aGF0IGl0ZW0gdG8gbHRyLiIsZC5saW5lLGQuY29sLGMpfXZhciBjPXRoaXMsZD0hMTthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGUpLGEuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLGUpLGEuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihhKXt2YXIgYj1hLnByb3BlcnR5LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxjPWEudmFsdWU7Yj09InRleHQtaW5kZW50IiYmYy5wYXJ0c1swXS52YWx1ZTwtOTk/ZD1hLnByb3BlcnR5OmI9PSJkaXJlY3Rpb24iJiZjPT0ibHRyIiYmKGQ9ITEpfSksYS5hZGRMaXN0ZW5lcigiZW5kcnVsZSIsZiksYS5hZGRMaXN0ZW5lcigiZW5kZm9udGZhY2UiLGYpfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InVuaXF1ZS1oZWFkaW5ncyIsbmFtZToiSGVhZGluZ3Mgc2hvdWxkIG9ubHkgYmUgZGVmaW5lZCBvbmNlIixkZXNjOiJIZWFkaW5ncyBzaG91bGQgYmUgZGVmaW5lZCBvbmx5IG9uY2UuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPXtoMTowLGgyOjAsaDM6MCxoNDowLGg1OjAsaDY6MH07YS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmdW5jdGlvbihhKXt2YXIgZT1hLnNlbGVjdG9ycyxmLGcsaCxpLGo7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7Zj1lW2ldLGc9Zi5wYXJ0c1tmLnBhcnRzLmxlbmd0aC0xXTtpZihnLmVsZW1lbnROYW1lJiYvKGhbMS02XSkvaS50ZXN0KGcuZWxlbWVudE5hbWUudG9TdHJpbmcoKSkpe2ZvcihqPTA7ajxnLm1vZGlmaWVycy5sZW5ndGg7aisrKWlmKGcubW9kaWZpZXJzW2pdLnR5cGU9PSJwc2V1ZG8iKXtoPSEwO2JyZWFrfWh8fChkW1JlZ0V4cC4kMV0rKyxkW1JlZ0V4cC4kMV0+MSYmYi5yZXBvcnQoIkhlYWRpbmcgKCIrZy5lbGVtZW50TmFtZSsiKSBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQuIixnLmxpbmUsZy5jb2wsYykpfX19KSxhLmFkZExpc3RlbmVyKCJlbmRzdHlsZXNoZWV0IixmdW5jdGlvbihhKXt2YXIgZSxmPVtdO2ZvcihlIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShlKSYmZFtlXT4xJiZmLnB1c2goZFtlXSsiICIrZSsicyIpO2YubGVuZ3RoJiZiLnJvbGx1cFdhcm4oIllvdSBoYXZlICIrZi5qb2luKCIsICIpKyIgZGVmaW5lZCBpbiB0aGlzIHN0eWxlc2hlZXQuIixjKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InVuaXZlcnNhbC1zZWxlY3RvciIsbmFtZToiRGlzYWxsb3cgdW5pdmVyc2FsIHNlbGVjdG9yIixkZXNjOiJUaGUgdW5pdmVyc2FsIHNlbGVjdG9yICgqKSBpcyBrbm93biB0byBiZSBzbG93LiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7YS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmdW5jdGlvbihhKXt2YXIgZD1hLnNlbGVjdG9ycyxlLGYsZyxoLGksajtmb3IoaD0wO2g8ZC5sZW5ndGg7aCsrKWU9ZFtoXSxmPWUucGFydHNbZS5wYXJ0cy5sZW5ndGgtMV0sZi5lbGVtZW50TmFtZT09IioiJiZiLnJlcG9ydChjLmRlc2MsZi5saW5lLGYuY29sLGMpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoidW5xdWFsaWZpZWQtYXR0cmlidXRlcyIsbmFtZToiRGlzYWxsb3cgdW5xdWFsaWZpZWQgYXR0cmlidXRlIHNlbGVjdG9ycyIsZGVzYzoiVW5xdWFsaWZpZWQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUga25vd24gdG8gYmUgc2xvdy4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2EuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oZCl7dmFyIGU9ZC5zZWxlY3RvcnMsZixnLGgsaSxqLGs7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7Zj1lW2ldLGc9Zi5wYXJ0c1tmLnBhcnRzLmxlbmd0aC0xXTtpZihnLnR5cGU9PWEuU0VMRUNUT1JfUEFSVF9UWVBFKWZvcihrPTA7azxnLm1vZGlmaWVycy5sZW5ndGg7aysrKWg9Zy5tb2RpZmllcnNba10saC50eXBlPT0iYXR0cmlidXRlIiYmKCFnLmVsZW1lbnROYW1lfHxnLmVsZW1lbnROYW1lPT0iKiIpJiZiLnJlcG9ydChjLmRlc2MsZy5saW5lLGcuY29sLGMpfX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InZlbmRvci1wcmVmaXgiLG5hbWU6IlJlcXVpcmUgc3RhbmRhcmQgcHJvcGVydHkgd2l0aCB2ZW5kb3IgcHJlZml4IixkZXNjOiJXaGVuIHVzaW5nIGEgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5LCBtYWtlIHN1cmUgdG8gaW5jbHVkZSB0aGUgc3RhbmRhcmQgb25lLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGcoKXtkPXt9LGU9MX1mdW5jdGlvbiBoKGEpe3ZhciBlLGcsaCxpLGosayxsPVtdO2ZvcihlIGluIGQpZltlXSYmbC5wdXNoKHthY3R1YWw6ZSxuZWVkZWQ6ZltlXX0pO2ZvcihnPTAsaD1sLmxlbmd0aDtnPGg7ZysrKWo9bFtnXS5uZWVkZWQsaz1sW2ddLmFjdHVhbCxkW2pdP2Rbal1bMF0ucG9zPGRba11bMF0ucG9zJiZiLnJlcG9ydCgiU3RhbmRhcmQgcHJvcGVydHkgJyIraisiJyBzaG91bGQgY29tZSBhZnRlciB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgJyIraysiJy4iLGRba11bMF0ubmFtZS5saW5lLGRba11bMF0ubmFtZS5jb2wsYyk6Yi5yZXBvcnQoIk1pc3Npbmcgc3RhbmRhcmQgcHJvcGVydHkgJyIraisiJyB0byBnbyBhbG9uZyB3aXRoICciK2srIicuIixkW2tdWzBdLm5hbWUubGluZSxkW2tdWzBdLm5hbWUuY29sLGMpfXZhciBjPXRoaXMsZCxlLGY9eyItd2Via2l0LWJvcmRlci1yYWRpdXMiOiJib3JkZXItcmFkaXVzIiwiLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzIjoiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsIi13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsIi13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyI6ImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLCItd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIjoiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiLCItby1ib3JkZXItcmFkaXVzIjoiYm9yZGVyLXJhZGl1cyIsIi1vLWJvcmRlci10b3AtbGVmdC1yYWRpdXMiOiJib3JkZXItdG9wLWxlZnQtcmFkaXVzIiwiLW8tYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsIi1vLWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiOiJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIiwiLW8tYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiOiJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIsIi1tb3otYm9yZGVyLXJhZGl1cyI6ImJvcmRlci1yYWRpdXMiLCItbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdCI6ImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCItbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQiOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsIi1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0IjoiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsIi1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodCI6ImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiLW1vei1jb2x1bW4tY291bnQiOiJjb2x1bW4tY291bnQiLCItd2Via2l0LWNvbHVtbi1jb3VudCI6ImNvbHVtbi1jb3VudCIsIi1tb3otY29sdW1uLWdhcCI6ImNvbHVtbi1nYXAiLCItd2Via2l0LWNvbHVtbi1nYXAiOiJjb2x1bW4tZ2FwIiwiLW1vei1jb2x1bW4tcnVsZSI6ImNvbHVtbi1ydWxlIiwiLXdlYmtpdC1jb2x1bW4tcnVsZSI6ImNvbHVtbi1ydWxlIiwiLW1vei1jb2x1bW4tcnVsZS1zdHlsZSI6ImNvbHVtbi1ydWxlLXN0eWxlIiwiLXdlYmtpdC1jb2x1bW4tcnVsZS1zdHlsZSI6ImNvbHVtbi1ydWxlLXN0eWxlIiwiLW1vei1jb2x1bW4tcnVsZS1jb2xvciI6ImNvbHVtbi1ydWxlLWNvbG9yIiwiLXdlYmtpdC1jb2x1bW4tcnVsZS1jb2xvciI6ImNvbHVtbi1ydWxlLWNvbG9yIiwiLW1vei1jb2x1bW4tcnVsZS13aWR0aCI6ImNvbHVtbi1ydWxlLXdpZHRoIiwiLXdlYmtpdC1jb2x1bW4tcnVsZS13aWR0aCI6ImNvbHVtbi1ydWxlLXdpZHRoIiwiLW1vei1jb2x1bW4td2lkdGgiOiJjb2x1bW4td2lkdGgiLCItd2Via2l0LWNvbHVtbi13aWR0aCI6ImNvbHVtbi13aWR0aCIsIi13ZWJraXQtY29sdW1uLXNwYW4iOiJjb2x1bW4tc3BhbiIsIi13ZWJraXQtY29sdW1ucyI6ImNvbHVtbnMiLCItbW96LWJveC1zaGFkb3ciOiJib3gtc2hhZG93IiwiLXdlYmtpdC1ib3gtc2hhZG93IjoiYm94LXNoYWRvdyIsIi1tb3otdHJhbnNmb3JtIjoidHJhbnNmb3JtIiwiLXdlYmtpdC10cmFuc2Zvcm0iOiJ0cmFuc2Zvcm0iLCItby10cmFuc2Zvcm0iOiJ0cmFuc2Zvcm0iLCItbXMtdHJhbnNmb3JtIjoidHJhbnNmb3JtIiwiLW1vei10cmFuc2Zvcm0tb3JpZ2luIjoidHJhbnNmb3JtLW9yaWdpbiIsIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiI6InRyYW5zZm9ybS1vcmlnaW4iLCItby10cmFuc2Zvcm0tb3JpZ2luIjoidHJhbnNmb3JtLW9yaWdpbiIsIi1tcy10cmFuc2Zvcm0tb3JpZ2luIjoidHJhbnNmb3JtLW9yaWdpbiIsIi1tb3otYm94LXNpemluZyI6ImJveC1zaXppbmciLCItd2Via2l0LWJveC1zaXppbmciOiJib3gtc2l6aW5nIiwiLW1vei11c2VyLXNlbGVjdCI6InVzZXItc2VsZWN0IiwiLWtodG1sLXVzZXItc2VsZWN0IjoidXNlci1zZWxlY3QiLCItd2Via2l0LXVzZXItc2VsZWN0IjoidXNlci1zZWxlY3QifTthLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGcpLGEuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLGcpLGEuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZSIsZyksYS5hZGRMaXN0ZW5lcigic3RhcnRwYWdlbWFyZ2luIixnKSxhLmFkZExpc3RlbmVyKCJzdGFydGtleWZyYW1lcnVsZSIsZyksYS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGEpe3ZhciBiPWEucHJvcGVydHkudGV4dC50b0xvd2VyQ2FzZSgpO2RbYl18fChkW2JdPVtdKSxkW2JdLnB1c2goe25hbWU6YS5wcm9wZXJ0eSx2YWx1ZTphLnZhbHVlLHBvczplKyt9KX0pLGEuYWRkTGlzdGVuZXIoImVuZHJ1bGUiLGgpLGEuYWRkTGlzdGVuZXIoImVuZGZvbnRmYWNlIixoKSxhLmFkZExpc3RlbmVyKCJlbmRwYWdlIixoKSxhLmFkZExpc3RlbmVyKCJlbmRwYWdlbWFyZ2luIixoKSxhLmFkZExpc3RlbmVyKCJlbmRrZXlmcmFtZXJ1bGUiLGgpfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6Inplcm8tdW5pdHMiLG5hbWU6IkRpc2FsbG93IHVuaXRzIGZvciAwIHZhbHVlcyIsZGVzYzoiWW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB1bml0cyB3aGVuIGEgdmFsdWUgaXMgMC4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2EuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihhKXt2YXIgZD1hLnZhbHVlLnBhcnRzLGU9MCxmPWQubGVuZ3RoO3doaWxlKGU8ZikoZFtlXS51bml0c3x8ZFtlXS50eXBlPT0icGVyY2VudGFnZSIpJiZkW2VdLnZhbHVlPT09MCYmZFtlXS50eXBlIT0idGltZSImJmIucmVwb3J0KCJWYWx1ZXMgb2YgMCBzaG91bGRuJ3QgaGF2ZSB1bml0cyBzcGVjaWZpZWQuIixkW2VdLmxpbmUsZFtlXS5jb2wsYyksZSsrfSl9fSksQ1NTTGludC5hZGRGb3JtYXR0ZXIoe2lkOiJjaGVja3N0eWxlLXhtbCIsbmFtZToiQ2hlY2tzdHlsZSBYTUwgZm9ybWF0IixzdGFydEZvcm1hdDpmdW5jdGlvbigpe3JldHVybic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PjxjaGVja3N0eWxlPid9LGVuZEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiI8L2NoZWNrc3R5bGU+In0sZm9ybWF0UmVzdWx0czpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5tZXNzYWdlcyxlPVtdLGY9ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYibmFtZSJpbiBhPyJuZXQuY3NzbGludC4iK2EubmFtZS5yZXBsYWNlKC9ccy9nLCIiKToiIn0sZz1mdW5jdGlvbihhKXtyZXR1cm4hYXx8YS5jb25zdHJ1Y3RvciE9PVN0cmluZz8iIjphLnJlcGxhY2UoL1wiL2csIiciKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX07cmV0dXJuIGQubGVuZ3RoPjAmJihlLnB1c2goJzxmaWxlIG5hbWU9IicrYisnIj4nKSxDU1NMaW50LlV0aWwuZm9yRWFjaChkLGZ1bmN0aW9uKGEsYil7YS5yb2xsdXB8fGUucHVzaCgnPGVycm9yIGxpbmU9IicrYS5saW5lKyciIGNvbHVtbj0iJythLmNvbCsnIiBzZXZlcml0eT0iJythLnR5cGUrJyInKycgbWVzc2FnZT0iJytnKGEubWVzc2FnZSkrJyIgc291cmNlPSInK2YoYS5ydWxlKSsnIi8+Jyl9KSxlLnB1c2goIjwvZmlsZT4iKSksZS5qb2luKCIiKX19KSxDU1NMaW50LmFkZEZvcm1hdHRlcih7aWQ6ImNvbXBhY3QiLG5hbWU6IkNvbXBhY3QsICdwb3JjZWxhaW4nIGZvcm1hdCIsc3RhcnRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZW5kRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGZvcm1hdFJlc3VsdHM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubWVzc2FnZXMsZT0iIjtjPWN8fHt9O3ZhciBmPWZ1bmN0aW9uKGEpe3JldHVybiBhLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc2xpY2UoMSl9O3JldHVybiBkLmxlbmd0aD09PTA/Yy5xdWlldD8iIjpiKyI6IExpbnQgRnJlZSEiOihDU1NMaW50LlV0aWwuZm9yRWFjaChkLGZ1bmN0aW9uKGEsYyl7YS5yb2xsdXA/ZSs9YisiOiAiK2YoYS50eXBlKSsiIC0gIithLm1lc3NhZ2UrIlxuIjplKz1iKyI6ICIrImxpbmUgIithLmxpbmUrIiwgY29sICIrYS5jb2wrIiwgIitmKGEudHlwZSkrIiAtICIrYS5tZXNzYWdlKyJcbiJ9KSxlKX19KSxDU1NMaW50LmFkZEZvcm1hdHRlcih7aWQ6ImNzc2xpbnQteG1sIixuYW1lOiJDU1NMaW50IFhNTCBmb3JtYXQiLHN0YXJ0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGNzc2xpbnQ+J30sZW5kRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIjwvY3NzbGludD4ifSxmb3JtYXRSZXN1bHRzOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLm1lc3NhZ2VzLGU9W10sZj1mdW5jdGlvbihhKXtyZXR1cm4hYXx8YS5jb25zdHJ1Y3RvciE9PVN0cmluZz8iIjphLnJlcGxhY2UoL1wiL2csIiciKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX07cmV0dXJuIGQubGVuZ3RoPjAmJihlLnB1c2goJzxmaWxlIG5hbWU9IicrYisnIj4nKSxDU1NMaW50LlV0aWwuZm9yRWFjaChkLGZ1bmN0aW9uKGEsYil7YS5yb2xsdXA/ZS5wdXNoKCc8aXNzdWUgc2V2ZXJpdHk9IicrYS50eXBlKyciIHJlYXNvbj0iJytmKGEubWVzc2FnZSkrJyIgZXZpZGVuY2U9IicrZihhLmV2aWRlbmNlKSsnIi8+Jyk6ZS5wdXNoKCc8aXNzdWUgbGluZT0iJythLmxpbmUrJyIgY2hhcj0iJythLmNvbCsnIiBzZXZlcml0eT0iJythLnR5cGUrJyInKycgcmVhc29uPSInK2YoYS5tZXNzYWdlKSsnIiBldmlkZW5jZT0iJytmKGEuZXZpZGVuY2UpKyciLz4nKX0pLGUucHVzaCgiPC9maWxlPiIpKSxlLmpvaW4oIiIpfX0pLENTU0xpbnQuYWRkRm9ybWF0dGVyKHtpZDoibGludC14bWwiLG5hbWU6IkxpbnQgWE1MIGZvcm1hdCIsc3RhcnRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48bGludD4nfSxlbmRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4iPC9saW50PiJ9LGZvcm1hdFJlc3VsdHM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubWVzc2FnZXMsZT1bXSxmPWZ1bmN0aW9uKGEpe3JldHVybiFhfHxhLmNvbnN0cnVjdG9yIT09U3RyaW5nPyIiOmEucmVwbGFjZSgvXCIvZywiJyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfTtyZXR1cm4gZC5sZW5ndGg+MCYmKGUucHVzaCgnPGZpbGUgbmFtZT0iJytiKyciPicpLENTU0xpbnQuVXRpbC5mb3JFYWNoKGQsZnVuY3Rpb24oYSxiKXthLnJvbGx1cD9lLnB1c2goJzxpc3N1ZSBzZXZlcml0eT0iJythLnR5cGUrJyIgcmVhc29uPSInK2YoYS5tZXNzYWdlKSsnIiBldmlkZW5jZT0iJytmKGEuZXZpZGVuY2UpKyciLz4nKTplLnB1c2goJzxpc3N1ZSBsaW5lPSInK2EubGluZSsnIiBjaGFyPSInK2EuY29sKyciIHNldmVyaXR5PSInK2EudHlwZSsnIicrJyByZWFzb249IicrZihhLm1lc3NhZ2UpKyciIGV2aWRlbmNlPSInK2YoYS5ldmlkZW5jZSkrJyIvPicpfSksZS5wdXNoKCI8L2ZpbGU+IikpLGUuam9pbigiIil9fSksQ1NTTGludC5hZGRGb3JtYXR0ZXIoe2lkOiJ0ZXh0IixuYW1lOiJQbGFpbiBUZXh0IixzdGFydEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiIifSxlbmRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZm9ybWF0UmVzdWx0czpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5tZXNzYWdlcyxlPSIiO2M9Y3x8e307aWYoZC5sZW5ndGg9PT0wKXJldHVybiBjLnF1aWV0PyIiOiJcblxuY3NzbGludDogTm8gZXJyb3JzIGluICIrYisiLiI7ZT0iXG5cbmNzc2xpbnQ6IFRoZXJlIGFyZSAiK2QubGVuZ3RoKyIgcHJvYmxlbXMgaW4gIitiKyIuIjt2YXIgZj1iLmxhc3RJbmRleE9mKCIvIiksZz1iO3JldHVybiBmPT09LTEmJihmPWIubGFzdEluZGV4T2YoIlxcIikpLGY+LTEmJihnPWIuc3Vic3RyaW5nKGYrMSkpLENTU0xpbnQuVXRpbC5mb3JFYWNoKGQsZnVuY3Rpb24oYSxiKXtlPWUrIlxuXG4iK2csYS5yb2xsdXA/KGUrPSJcbiIrKGIrMSkrIjogIithLnR5cGUsZSs9IlxuIithLm1lc3NhZ2UpOihlKz0iXG4iKyhiKzEpKyI6ICIrYS50eXBlKyIgYXQgbGluZSAiK2EubGluZSsiLCBjb2wgIithLmNvbCxlKz0iXG4iK2EubWVzc2FnZSxlKz0iXG4iK2EuZXZpZGVuY2UpfSksZX19KSxleHBvcnRzLkNTU0xpbnQ9Q1NTTGludH0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-javascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gaW5pdEJhc2VVcmxzKGEpe3JlcXVpcmUudGxucz1hfWZ1bmN0aW9uIGluaXRTZW5kZXIoKXt2YXIgYT1yZXF1aXJlKG51bGwsImFjZS9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixiPXJlcXVpcmUobnVsbCwiYWNlL2xpYi9vb3AiKSxjPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZnVuY3Rpb24oKXtiLmltcGxlbWVudCh0aGlzLGEpLHRoaXMuY2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtwb3N0TWVzc2FnZSh7dHlwZToiY2FsbCIsaWQ6YixkYXRhOmF9KX0sdGhpcy5lbWl0PWZ1bmN0aW9uKGEsYil7cG9zdE1lc3NhZ2Uoe3R5cGU6ImV2ZW50IixuYW1lOmEsZGF0YTpifSl9fS5jYWxsKGMucHJvdG90eXBlKSxuZXcgY30ibm8gdXNlIHN0cmljdCI7dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihhKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmF9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oYSxiKXtpZihiLmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgYz1iLnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShhLGNbMF0pKyIhIitub3JtYWxpemVNb2R1bGUoYSxjWzFdKX1pZihiLmNoYXJBdCgwKT09Ii4iKXt2YXIgZD1hLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGI9ZCsiLyIrYjt3aGlsZShiLmluZGV4T2YoIi4iKSE9PS0xJiZlIT1iKXZhciBlPWIsYj1iLnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiBifSxyZXF1aXJlPWZ1bmN0aW9uKGEsYil7dmFyIGI9bm9ybWFsaXplTW9kdWxlKGEsYiksYz1yZXF1aXJlLm1vZHVsZXNbYl07aWYoYylyZXR1cm4gYy5pbml0aWFsaXplZHx8KGMuZXhwb3J0cz1jLmZhY3RvcnkoKS5leHBvcnRzLGMuaW5pdGlhbGl6ZWQ9ITApLGMuZXhwb3J0czt2YXIgZD1iLnNwbGl0KCIvIik7ZFswXT1yZXF1aXJlLnRsbnNbZFswXV18fGRbMF07dmFyIGU9ZC5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9YixpbXBvcnRTY3JpcHRzKGUpLHJlcXVpcmUoYSxiKX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGEsYixjKXthcmd1bWVudHMubGVuZ3RoPT0yP2M9Yjphcmd1bWVudHMubGVuZ3RoPT0xJiYoYz1hLGE9cmVxdWlyZS5pZCk7aWYoYS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIGQ9ZnVuY3Rpb24oYixjKXtyZXR1cm4gcmVxdWlyZShhLGIsYyl9O3JlcXVpcmUubW9kdWxlc1thXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBhPXtleHBvcnRzOnt9fSxiPWMoZCxhLmV4cG9ydHMsYSk7cmV0dXJuIGImJihhLmV4cG9ydHM9YiksYX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO2lmKGIuY29tbWFuZCltYWluW2IuY29tbWFuZF0uYXBwbHkobWFpbixiLmFyZ3MpO2Vsc2UgaWYoYi5pbml0KXtpbml0QmFzZVVybHMoYi50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBjPXJlcXVpcmUobnVsbCxiLm1vZHVsZSlbYi5jbGFzc25hbWVdO21haW49bmV3IGMoc2VuZGVyKX1lbHNlIGIuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KGIuZXZlbnQsYi5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oYSxiLGMpe2EoIi4vcmVnZXhwIiksYSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBnKGEpe3JldHVybihhLmdsb2JhbD8iZyI6IiIpKyhhLmlnbm9yZUNhc2U/ImkiOiIiKSsoYS5tdWx0aWxpbmU/Im0iOiIiKSsoYS5leHRlbmRlZD8ieCI6IiIpKyhhLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIGgoYSxiLGMpe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYixjKTtmb3IodmFyIGQ9Y3x8MDtkPGEubGVuZ3RoO2QrKylpZihhW2RdPT09YilyZXR1cm4gZDtyZXR1cm4tMX12YXIgZD17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxlPWQuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQsZj1mdW5jdGlvbigpe3ZhciBhPS9eL2c7cmV0dXJuIGQudGVzdC5jYWxsKGEsIiIpLCFhLmxhc3RJbmRleH0oKTtpZihmJiZlKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjLGk7aWYodHlwZW9mIGE9PSJzdHJpbmciJiZiKXshZSYmYi5sZW5ndGg+MSYmaChiLCIiKT4tMSYmKGk9UmVnRXhwKHRoaXMuc291cmNlLGQucmVwbGFjZS5jYWxsKGcodGhpcyksImciLCIiKSksZC5yZXBsYWNlLmNhbGwoYS5zbGljZShiLmluZGV4KSxpLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTE7YTxhcmd1bWVudHMubGVuZ3RoLTI7YSsrKWFyZ3VtZW50c1thXT09PXVuZGVmaW5lZCYmKGJbYV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGo9MTtqPGIubGVuZ3RoO2orKyljPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2otMV0sYyYmKGJbY109YltqXSk7IWYmJnRoaXMuZ2xvYmFsJiYhYlswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PmIuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIGJ9LGZ8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmNhbGwodGhpcyxhKTtyZXR1cm4gYiYmdGhpcy5nbG9iYWwmJiFiWzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+Yi5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIWJ9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBwKGEpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGF9Y2F0Y2goYil7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD1nLmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGg9Yy5hcHBseShmLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIGghPT1udWxsJiZPYmplY3QoaCk9PT1oP2g6Zn1yZXR1cm4gYy5hcHBseShiLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBlfSk7dmFyIGQ9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsZT1BcnJheS5wcm90b3R5cGUsZj1PYmplY3QucHJvdG90eXBlLGc9ZS5zbGljZSxoPWQuYmluZChmLnRvU3RyaW5nKSxpPWQuYmluZChmLmhhc093blByb3BlcnR5KSxqLGssbCxtLG47aWYobj1pKGYsIl9fZGVmaW5lR2V0dGVyX18iKSlqPWQuYmluZChmLl9fZGVmaW5lR2V0dGVyX18pLGs9ZC5iaW5kKGYuX19kZWZpbmVTZXR0ZXJfXyksbD1kLmJpbmQoZi5fX2xvb2t1cEdldHRlcl9fKSxtPWQuYmluZChmLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGIpe3JldHVybiBoKGIpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9YXJndW1lbnRzWzFdLGU9MCxmPWMubGVuZ3RoPj4+MDtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoZTxmKWUgaW4gYyYmYi5jYWxsKGQsY1tlXSxlLGMpLGUrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjAsZT1BcnJheShkKSxmPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBnPTA7ZzxkO2crKylnIGluIGMmJihlW2ddPWIuY2FsbChmLGNbZ10sZyxjKSk7cmV0dXJuIGV9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9W10sZj1hcmd1bWVudHNbMV07aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgZz0wO2c8ZDtnKyspZyBpbiBjJiZiLmNhbGwoZixjW2ddLGcsYykmJmUucHVzaChjW2ddKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9YXJndW1lbnRzWzFdO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIGY9MDtmPGQ7ZisrKWlmKGYgaW4gYyYmIWIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MCxlPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBmPTA7ZjxkO2YrKylpZihmIGluIGMmJmIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFkJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGU9MCxmO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZj1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihlIGluIGMpe2Y9Y1tlKytdO2JyZWFrfWlmKCsrZT49ZCl0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2U8ZDtlKyspZSBpbiBjJiYoZj1iLmNhbGwodm9pZCAwLGYsY1tlXSxlLGMpKTtyZXR1cm4gZn0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighZCYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBlLGY9ZC0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihmIGluIGMpe2U9Y1tmLS1dO2JyZWFrfWlmKC0tZjwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIGYgaW4gdGhpcyYmKGU9Yi5jYWxsKHZvaWQgMCxlLGNbZl0sZixjKSk7d2hpbGUoZi0tKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGU9RShhcmd1bWVudHNbMV0pKSxlPWU+PTA/ZTpNYXRoLm1heCgwLGQrZSk7Zm9yKDtlPGQ7ZSsrKWlmKGUgaW4gYyYmY1tlXT09PWIpcmV0dXJuIGU7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT1kLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoZT1NYXRoLm1pbihlLEUoYXJndW1lbnRzWzFdKSkpLGU9ZT49MD9lOmQtTWF0aC5hYnMoZSk7Zm9yKDtlPj0wO2UtLSlpZihlIGluIGMmJmI9PT1jW2VdKXJldHVybiBlO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGIpe3JldHVybiBiLl9fcHJvdG9fX3x8KGIuY29uc3RydWN0b3I/Yi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6Zil9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIG89Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKGIsYyl7aWYodHlwZW9mIGIhPSJvYmplY3QiJiZ0eXBlb2YgYiE9ImZ1bmN0aW9uInx8Yj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihvK2IpO2lmKCFpKGIsYykpcmV0dXJuO3ZhciBkLGUsZztkPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYobil7dmFyIGg9Yi5fX3Byb3RvX187Yi5fX3Byb3RvX189Zjt2YXIgZT1sKGIsYyksZz1tKGIsYyk7Yi5fX3Byb3RvX189aDtpZihlfHxnKXJldHVybiBlJiYoZC5nZXQ9ZSksZyYmKGQuc2V0PWcpLGR9cmV0dXJuIGQudmFsdWU9YltjXSxkfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKGIpe3JldHVybiBPYmplY3Qua2V5cyhiKX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ7aWYoYj09PW51bGwpZD17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIGIhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgYisiXSAhPSAnb2JqZWN0JyIpO3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1iLGQ9bmV3IGUsZC5fX3Byb3RvX189Yn1yZXR1cm4gYyE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxjKSxkfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgcT1wKHt9KSxyPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFxfHwhcil2YXIgcz1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8cyl7dmFyIHQ9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHU9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIix2PSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKGIsYyxkKXtpZih0eXBlb2YgYiE9Im9iamVjdCImJnR5cGVvZiBiIT0iZnVuY3Rpb24ifHxiPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHUrYik7aWYodHlwZW9mIGQhPSJvYmplY3QiJiZ0eXBlb2YgZCE9ImZ1bmN0aW9uInx8ZD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih0K2QpO2lmKHMpdHJ5e3JldHVybiBzLmNhbGwoT2JqZWN0LGIsYyxkKX1jYXRjaChlKXt9aWYoaShkLCJ2YWx1ZSIpKWlmKG4mJihsKGIsYyl8fG0oYixjKSkpe3ZhciBnPWIuX19wcm90b19fO2IuX19wcm90b19fPWYsZGVsZXRlIGJbY10sYltjXT1kLnZhbHVlLGIuX19wcm90b19fPWd9ZWxzZSBiW2NdPWQudmFsdWU7ZWxzZXtpZighbil0aHJvdyBuZXcgVHlwZUVycm9yKHYpO2koZCwiZ2V0IikmJmooYixjLGQuZ2V0KSxpKGQsInNldCIpJiZrKGIsYyxkLnNldCl9cmV0dXJuIGJ9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oYixjKXtmb3IodmFyIGQgaW4gYylpKGMsZCkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLGQsY1tkXSk7cmV0dXJuIGJ9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKGIpe3JldHVybiBifSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKHcpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgYz09ImZ1bmN0aW9uIj9jOmIoYyl9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbihiKXtpZihPYmplY3QoYik9PT1iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGM9IiI7d2hpbGUoaShiLGMpKWMrPSI/IjtiW2NdPSEwO3ZhciBkPWkoYixjKTtyZXR1cm4gZGVsZXRlIGJbY10sZH0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAseT1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLHo9eS5sZW5ndGg7Zm9yKHZhciBBIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gSChhKXtpZih0eXBlb2YgYSE9Im9iamVjdCImJnR5cGVvZiBhIT0iZnVuY3Rpb24ifHxhPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEg9W107Zm9yKHZhciBiIGluIGEpaShhLGIpJiZILnB1c2goYik7aWYoeClmb3IodmFyIGM9MCxkPXo7YzxkO2MrKyl7dmFyIGU9eVtjXTtpKGEsZSkmJkgucHVzaChlKX1yZXR1cm4gSH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciBiLGMsZCxlO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjtiPVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGU9dGhpcy5nZXRVVENGdWxsWWVhcigpLGU9KGU8MD8iLSI6ZT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoZSkpLnNsaWNlKDA8PWUmJmU8PTk5OTk/LTQ6LTYpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWQ9YltjXSxkPDEwJiYoYltjXT0iMCIrZCk7cmV0dXJuIGUrIi0iK2Iuc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK2Iuc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGIpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbiBlKGIsYyxkLGYsZyxoLGkpe3ZhciBqPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGEpe3ZhciBrPWo9PTEmJlN0cmluZyhiKT09PWI/bmV3IGEoZS5wYXJzZShiKSk6aj49Nz9uZXcgYShiLGMsZCxmLGcsaCxpKTpqPj02P25ldyBhKGIsYyxkLGYsZyxoKTpqPj01P25ldyBhKGIsYyxkLGYsZyk6aj49ND9uZXcgYShiLGMsZCxmKTpqPj0zP25ldyBhKGIsYyxkKTpqPj0yP25ldyBhKGIsYyk6aj49MT9uZXcgYShiKTpuZXcgYTtyZXR1cm4gay5jb25zdHJ1Y3Rvcj1lLGt9cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIGQgaW4gYSliW2RdPWFbZF07cmV0dXJuIGIubm93PWEubm93LGIuVVRDPWEuVVRDLGIucHJvdG90eXBlPWEucHJvdG90eXBlLGIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIsYi5wYXJzZT1mdW5jdGlvbihkKXt2YXIgZT1jLmV4ZWMoZCk7aWYoZSl7ZS5zaGlmdCgpO2Zvcih2YXIgZj0xO2Y8NztmKyspZVtmXT0rKGVbZl18fChmPDM/MTowKSksZj09MSYmZVtmXS0tO3ZhciBnPStlLnBvcCgpLGg9K2UucG9wKCksaT1lLnBvcCgpLGo9MDtpZihpKXtpZihoPjIzfHxnPjU5KXJldHVybiBOYU47aj0oaCo2MCtnKSo2ZTQqKGk9PSIrIj8tMToxKX12YXIgaz0rZVswXTtyZXR1cm4gMDw9ayYmazw9OTk/KGVbMF09ays0MDAsYS5VVEMuYXBwbHkodGhpcyxlKStqLTEyNjIyNzgwOGU1KTphLlVUQy5hcHBseSh0aGlzLGUpK2p9cmV0dXJuIGEucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxifShEYXRlKSk7dmFyIEI9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxCLnRyaW0oKSl7Qj0iWyIrQisiXSI7dmFyIEM9bmV3IFJlZ0V4cCgiXiIrQitCKyIqIiksRD1uZXcgUmVnRXhwKEIrQisiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoQywiIikucmVwbGFjZShELCIiKX19dmFyIEU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9K2EsYSE9PWE/YT0wOmEhPT0wJiZhIT09MS8wJiZhIT09LUluZmluaXR5JiYoYT0oYT4wfHwtMSkqTWF0aC5mbG9vcihNYXRoLmFicyhhKSkpLGF9LEY9ImEiWzBdIT0iYSIsRz1mdW5jdGlvbihhKXtpZihhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIEYmJnR5cGVvZiBhPT0ic3RyaW5nIiYmYT9hLnNwbGl0KCIiKTpPYmplY3QoYSl9fSksZGVmaW5lKCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307ZC5fZW1pdD1kLl9kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fSx0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdfHxbXSxkPXRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXTtpZighYy5sZW5ndGgmJiFkKXJldHVybjtiPWJ8fHt9LGIudHlwZT1hLGIuc3RvcFByb3BhZ2F0aW9ufHwoYi5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0pLGIucHJldmVudERlZmF1bHR8fChiLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfSk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe2NbZV0oYik7aWYoYi5wcm9wYWdhdGlvblN0b3BwZWQpYnJlYWt9aWYoZCYmIWIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4gZChiKX0sZC5zZXREZWZhdWx0SGFuZGxlcj1mdW5jdGlvbihhLGIpe3RoaXMuX2RlZmF1bHRIYW5kbGVycz10aGlzLl9kZWZhdWx0SGFuZGxlcnN8fHt9O2lmKHRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkZWZhdWx0IGhhbmRsZXIgZm9yICciK2ErIicgaXMgYWxyZWFkeSBzZXQiKTt0aGlzLl9kZWZhdWx0SGFuZGxlcnNbYV09Yn0sZC5vbj1kLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLl9ldmVudFJlZ2lzdHJ5PXRoaXMuX2V2ZW50UmVnaXN0cnl8fHt9O3ZhciBjPXRoaXMuX2V2ZW50UmVnaXN0cnlbYV07aWYoIWMpdmFyIGM9dGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXTtjLmluZGV4T2YoYik9PS0xJiZjLnB1c2goYil9LGQucmVtb3ZlTGlzdGVuZXI9ZC5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdO2lmKCFjKXJldHVybjt2YXIgZD1jLmluZGV4T2YoYik7ZCE9PS0xJiZjLnNwbGljZShkLDEpfSxkLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihhKXt0aGlzLl9ldmVudFJlZ2lzdHJ5JiYodGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXSl9LGIuRXZlbnRFbWl0dGVyPWR9KSxkZWZpbmUoImFjZS9saWIvb29wIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2IuaW5oZXJpdHM9ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKGIsYyl7YS5wcm90b3R5cGU9Yy5wcm90b3R5cGUsYi5zdXBlcl89Yy5wcm90b3R5cGUsYi5wcm90b3R5cGU9bmV3IGEsYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yn19KCksYi5taXhpbj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWFbY109YltjXX0sYi5pbXBsZW1lbnQ9ZnVuY3Rpb24oYSxjKXtiLm1peGluKGEsYyl9fSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3dvcmtlci9taXJyb3IiLCJhY2Uvd29ya2VyL2pzaGludCIsImFjZS9uYXJjaXNzdXMvcGFyc2VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL3dvcmtlci9taXJyb3IiKS5NaXJyb3IsZj1hKCIuLi93b3JrZXIvanNoaW50IikuSlNISU5ULGc9YSgiLi4vbmFyY2lzc3VzL3BhcnNlciIpLGg9Yi5KYXZhU2NyaXB0V29ya2VyPWZ1bmN0aW9uKGEpe2UuY2FsbCh0aGlzLGEpLHRoaXMuc2V0VGltZW91dCg1MDApfTtkLmluaGVyaXRzKGgsZSksZnVuY3Rpb24oKXt0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kb2MuZ2V0VmFsdWUoKTthPWEucmVwbGFjZSgvXiMhLipcbi8sIlxuIik7dHJ5e2cucGFyc2UoYSl9Y2F0Y2goYil7dmFyIGM9Yi5tZXNzYWdlLnNwbGl0KCI6IiksZD1jLnBvcCgpLnRyaW0oKSxlPXBhcnNlSW50KGMucG9wKCkudHJpbSgpKS0xO3RoaXMuc2VuZGVyLmVtaXQoIm5hcmNpc3N1cyIse3JvdzplLGNvbHVtbjpudWxsLHRleHQ6ZCx0eXBlOiJlcnJvciJ9KTtyZXR1cm59ZmluYWxseXt9ZihhLHt1bmRlZjohMSxvbmV2YXI6ITEscGFzc2ZhaWw6ITF9KSx0aGlzLnNlbmRlci5lbWl0KCJqc2xpbnQiLGYuZXJyb3JzKX19LmNhbGwoaC5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2Uvd29ya2VyL21pcnJvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9kb2N1bWVudCIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9kb2N1bWVudCIpLkRvY3VtZW50LGU9YSgiLi4vbGliL2xhbmciKSxmPWIuTWlycm9yPWZ1bmN0aW9uKGEpe3RoaXMuc2VuZGVyPWE7dmFyIGI9dGhpcy5kb2M9bmV3IGQoIiIpLGM9dGhpcy5kZWZlcnJlZFVwZGF0ZT1lLmRlZmVycmVkQ2FsbCh0aGlzLm9uVXBkYXRlLmJpbmQodGhpcykpLGY9dGhpczthLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGEpe2IuYXBwbHlEZWx0YXMoW2EuZGF0YV0pLGMuc2NoZWR1bGUoZi4kdGltZW91dCl9KX07KGZ1bmN0aW9uKCl7dGhpcy4kdGltZW91dD01MDAsdGhpcy5zZXRUaW1lb3V0PWZ1bmN0aW9uKGEpe3RoaXMuJHRpbWVvdXQ9YX0sdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihhKXt0aGlzLmRvYy5zZXRWYWx1ZShhKSx0aGlzLmRlZmVycmVkVXBkYXRlLnNjaGVkdWxlKHRoaXMuJHRpbWVvdXQpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKGEpe3RoaXMuc2VuZGVyLmNhbGxiYWNrKHRoaXMuZG9jLmdldFZhbHVlKCksYSl9LHRoaXMub25VcGRhdGU9ZnVuY3Rpb24oKXt9fSkuY2FsbChmLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9kb2N1bWVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3JhbmdlIiwiYWNlL2FuY2hvciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2xpYi9vb3AiKSxlPWEoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsZj1hKCIuL3JhbmdlIikuUmFuZ2UsZz1hKCIuL2FuY2hvciIpLkFuY2hvcixoPWZ1bmN0aW9uKGEpe3RoaXMuJGxpbmVzPVtdLGEubGVuZ3RoPT0wP3RoaXMuJGxpbmVzPVsiIl06QXJyYXkuaXNBcnJheShhKT90aGlzLmluc2VydExpbmVzKDAsYSk6dGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxhKX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGVuZ3RoKCk7dGhpcy5yZW1vdmUobmV3IGYoMCwwLGIsdGhpcy5nZXRMaW5lKGItMSkubGVuZ3RoKSksdGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxhKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEFsbExpbmVzKCkuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuY3JlYXRlQW5jaG9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBnKHRoaXMsYSxiKX0sImFhYSIuc3BsaXQoL2EvKS5sZW5ndGg9PTA/dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnNwbGl0KCJcbiIpfTp0aGlzLiRzcGxpdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5zcGxpdCgvXHJcbnxccnxcbi8pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14uKj8oXHJcbnxccnxcbikvbSk7Yj90aGlzLiRhdXRvTmV3TGluZT1iWzFdOnRoaXMuJGF1dG9OZXdMaW5lPSJcbiJ9LHRoaXMuZ2V0TmV3TGluZUNoYXJhY3Rlcj1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLiRuZXdMaW5lTW9kZSl7Y2FzZSJ3aW5kb3dzIjpyZXR1cm4iXHJcbiI7Y2FzZSJ1bml4IjpyZXR1cm4iXG4iO2Nhc2UiYXV0byI6cmV0dXJuIHRoaXMuJGF1dG9OZXdMaW5lfX0sdGhpcy4kYXV0b05ld0xpbmU9IlxuIix0aGlzLiRuZXdMaW5lTW9kZT0iYXV0byIsdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihhKXtpZih0aGlzLiRuZXdMaW5lTW9kZT09PWEpcmV0dXJuO3RoaXMuJG5ld0xpbmVNb2RlPWF9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbmV3TGluZU1vZGV9LHRoaXMuaXNOZXdMaW5lPWZ1bmN0aW9uKGEpe3JldHVybiBhPT0iXHJcbiJ8fGE9PSJcciJ8fGE9PSJcbiJ9LHRoaXMuZ2V0TGluZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kbGluZXNbYV18fCIifSx0aGlzLmdldExpbmVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuJGxpbmVzLnNsaWNlKGEsYisxKX0sdGhpcy5nZXRBbGxMaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVzKDAsdGhpcy5nZXRMZW5ndGgoKSl9LHRoaXMuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGxpbmVzLmxlbmd0aH0sdGhpcy5nZXRUZXh0UmFuZ2U9ZnVuY3Rpb24oYSl7aWYoYS5zdGFydC5yb3c9PWEuZW5kLnJvdylyZXR1cm4gdGhpcy4kbGluZXNbYS5zdGFydC5yb3ddLnN1YnN0cmluZyhhLnN0YXJ0LmNvbHVtbixhLmVuZC5jb2x1bW4pO3ZhciBiPXRoaXMuZ2V0TGluZXMoYS5zdGFydC5yb3crMSxhLmVuZC5yb3ctMSk7cmV0dXJuIGIudW5zaGlmdCgodGhpcy4kbGluZXNbYS5zdGFydC5yb3ddfHwiIikuc3Vic3RyaW5nKGEuc3RhcnQuY29sdW1uKSksYi5wdXNoKCh0aGlzLiRsaW5lc1thLmVuZC5yb3ddfHwiIikuc3Vic3RyaW5nKDAsYS5lbmQuY29sdW1uKSksYi5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy4kY2xpcFBvc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGVuZ3RoKCk7cmV0dXJuIGEucm93Pj1iJiYoYS5yb3c9TWF0aC5tYXgoMCxiLTEpLGEuY29sdW1uPXRoaXMuZ2V0TGluZShiLTEpLmxlbmd0aCksYX0sdGhpcy5pbnNlcnQ9ZnVuY3Rpb24oYSxiKXtpZighYnx8Yi5sZW5ndGg9PT0wKXJldHVybiBhO2E9dGhpcy4kY2xpcFBvc2l0aW9uKGEpLHRoaXMuZ2V0TGVuZ3RoKCk8PTEmJnRoaXMuJGRldGVjdE5ld0xpbmUoYik7dmFyIGM9dGhpcy4kc3BsaXQoYiksZD1jLnNwbGljZSgwLDEpWzBdLGU9Yy5sZW5ndGg9PTA/bnVsbDpjLnNwbGljZShjLmxlbmd0aC0xLDEpWzBdO3JldHVybiBhPXRoaXMuaW5zZXJ0SW5MaW5lKGEsZCksZSE9PW51bGwmJihhPXRoaXMuaW5zZXJ0TmV3TGluZShhKSxhPXRoaXMuaW5zZXJ0TGluZXMoYS5yb3csYyksYT10aGlzLmluc2VydEluTGluZShhLGV8fCIiKSksYX0sdGhpcy5pbnNlcnRMaW5lcz1mdW5jdGlvbihhLGIpe2lmKGIubGVuZ3RoPT0wKXJldHVybntyb3c6YSxjb2x1bW46MH07dmFyIGM9W2EsMF07Yy5wdXNoLmFwcGx5KGMsYiksdGhpcy4kbGluZXMuc3BsaWNlLmFwcGx5KHRoaXMuJGxpbmVzLGMpO3ZhciBkPW5ldyBmKGEsMCxhK2IubGVuZ3RoLDApLGU9e2FjdGlvbjoiaW5zZXJ0TGluZXMiLHJhbmdlOmQsbGluZXM6Yn07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGQuZW5kfSx0aGlzLmluc2VydE5ld0xpbmU9ZnVuY3Rpb24oYSl7YT10aGlzLiRjbGlwUG9zaXRpb24oYSk7dmFyIGI9dGhpcy4kbGluZXNbYS5yb3ddfHwiIjt0aGlzLiRsaW5lc1thLnJvd109Yi5zdWJzdHJpbmcoMCxhLmNvbHVtbiksdGhpcy4kbGluZXMuc3BsaWNlKGEucm93KzEsMCxiLnN1YnN0cmluZyhhLmNvbHVtbixiLmxlbmd0aCkpO3ZhciBjPXtyb3c6YS5yb3crMSxjb2x1bW46MH0sZD17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpmLmZyb21Qb2ludHMoYSxjKSx0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpkfSksY30sdGhpcy5pbnNlcnRJbkxpbmU9ZnVuY3Rpb24oYSxiKXtpZihiLmxlbmd0aD09MClyZXR1cm4gYTt2YXIgYz10aGlzLiRsaW5lc1thLnJvd118fCIiO3RoaXMuJGxpbmVzW2Eucm93XT1jLnN1YnN0cmluZygwLGEuY29sdW1uKStiK2Muc3Vic3RyaW5nKGEuY29sdW1uKTt2YXIgZD17cm93OmEucm93LGNvbHVtbjphLmNvbHVtbitiLmxlbmd0aH0sZT17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpmLmZyb21Qb2ludHMoYSxkKSx0ZXh0OmJ9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmV9KSxkfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihhKXthLnN0YXJ0PXRoaXMuJGNsaXBQb3NpdGlvbihhLnN0YXJ0KSxhLmVuZD10aGlzLiRjbGlwUG9zaXRpb24oYS5lbmQpO2lmKGEuaXNFbXB0eSgpKXJldHVybiBhLnN0YXJ0O3ZhciBiPWEuc3RhcnQucm93LGM9YS5lbmQucm93O2lmKGEuaXNNdWx0aUxpbmUoKSl7dmFyIGQ9YS5zdGFydC5jb2x1bW49PTA/YjpiKzEsZT1jLTE7YS5lbmQuY29sdW1uPjAmJnRoaXMucmVtb3ZlSW5MaW5lKGMsMCxhLmVuZC5jb2x1bW4pLGU+PWQmJnRoaXMucmVtb3ZlTGluZXMoZCxlKSxkIT1iJiYodGhpcy5yZW1vdmVJbkxpbmUoYixhLnN0YXJ0LmNvbHVtbix0aGlzLmdldExpbmUoYikubGVuZ3RoKSx0aGlzLnJlbW92ZU5ld0xpbmUoYS5zdGFydC5yb3cpKX1lbHNlIHRoaXMucmVtb3ZlSW5MaW5lKGIsYS5zdGFydC5jb2x1bW4sYS5lbmQuY29sdW1uKTtyZXR1cm4gYS5zdGFydH0sdGhpcy5yZW1vdmVJbkxpbmU9ZnVuY3Rpb24oYSxiLGMpe2lmKGI9PWMpcmV0dXJuO3ZhciBkPW5ldyBmKGEsYixhLGMpLGU9dGhpcy5nZXRMaW5lKGEpLGc9ZS5zdWJzdHJpbmcoYixjKSxoPWUuc3Vic3RyaW5nKDAsYikrZS5zdWJzdHJpbmcoYyxlLmxlbmd0aCk7dGhpcy4kbGluZXMuc3BsaWNlKGEsMSxoKTt2YXIgaT17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpkLHRleHQ6Z307cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6aX0pLGQuc3RhcnR9LHRoaXMucmVtb3ZlTGluZXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgZihhLDAsYisxLDApLGQ9dGhpcy4kbGluZXMuc3BsaWNlKGEsYi1hKzEpLGU9e2FjdGlvbjoicmVtb3ZlTGluZXMiLHJhbmdlOmMsbmw6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCksbGluZXM6ZH07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGR9LHRoaXMucmVtb3ZlTmV3TGluZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldExpbmUoYSksYz10aGlzLmdldExpbmUoYSsxKSxkPW5ldyBmKGEsYi5sZW5ndGgsYSsxLDApLGU9YitjO3RoaXMuJGxpbmVzLnNwbGljZShhLDIsZSk7dmFyIGc9e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6ZCx0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTt0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmd9KX0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGEsYil7aWYoYi5sZW5ndGg9PTAmJmEuaXNFbXB0eSgpKXJldHVybiBhLnN0YXJ0O2lmKGI9PXRoaXMuZ2V0VGV4dFJhbmdlKGEpKXJldHVybiBhLmVuZDt0aGlzLnJlbW92ZShhKTtpZihiKXZhciBjPXRoaXMuaW5zZXJ0KGEuc3RhcnQsYik7ZWxzZSBjPWEuc3RhcnQ7cmV0dXJuIGN9LHRoaXMuYXBwbHlEZWx0YXM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl0sZD1mLmZyb21Qb2ludHMoYy5yYW5nZS5zdGFydCxjLnJhbmdlLmVuZCk7Yy5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhkLnN0YXJ0LnJvdyxjLmxpbmVzKTpjLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMuaW5zZXJ0KGQuc3RhcnQsYy50ZXh0KTpjLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLnJlbW92ZUxpbmVzKGQuc3RhcnQucm93LGQuZW5kLnJvdy0xKTpjLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLnJlbW92ZShkKX19LHRoaXMucmV2ZXJ0RGVsdGFzPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmxlbmd0aC0xO2I+PTA7Yi0tKXt2YXIgYz1hW2JdLGQ9Zi5mcm9tUG9pbnRzKGMucmFuZ2Uuc3RhcnQsYy5yYW5nZS5lbmQpO2MuYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMucmVtb3ZlTGluZXMoZC5zdGFydC5yb3csZC5lbmQucm93LTEpOmMuYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5yZW1vdmUoZCk6Yy5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhkLnN0YXJ0LnJvdyxjLmxpbmVzKTpjLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLmluc2VydChkLnN0YXJ0LGMudGV4dCl9fX0pLmNhbGwoaC5wcm90b3R5cGUpLGIuRG9jdW1lbnQ9aH0pLGRlZmluZSgiYWNlL3JhbmdlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuc3RhcnQ9e3JvdzphLGNvbHVtbjpifSx0aGlzLmVuZD17cm93OmMsY29sdW1uOmR9fTsoZnVuY3Rpb24oKXt0aGlzLmlzRXF1YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1hLnN0YXJ0LnJvdyYmdGhpcy5lbmQucm93PT1hLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT1hLnN0YXJ0LmNvbHVtbiYmdGhpcy5lbmQuY29sdW1uPT1hLmVuZC5jb2x1bW59LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUmFuZ2U6IFsiK3RoaXMuc3RhcnQucm93KyIvIit0aGlzLnN0YXJ0LmNvbHVtbisiXSAtPiBbIit0aGlzLmVuZC5yb3crIi8iK3RoaXMuZW5kLmNvbHVtbisiXSJ9LHRoaXMuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTB9LHRoaXMuY29tcGFyZVJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiLGM9YS5lbmQsZD1hLnN0YXJ0O3JldHVybiBiPXRoaXMuY29tcGFyZShjLnJvdyxjLmNvbHVtbiksYj09MT8oYj10aGlzLmNvbXBhcmUoZC5yb3csZC5jb2x1bW4pLGI9PTE/MjpiPT0wPzE6MCk6Yj09LTE/LTI6KGI9dGhpcy5jb21wYXJlKGQucm93LGQuY29sdW1uKSxiPT0tMT8tMTpiPT0xPzQyOjApfSx0aGlzLmNvbXBhcmVQb2ludD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEucm93LGEuY29sdW1uKX0sdGhpcy5jb250YWluc1JhbmdlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbXBhcmVQb2ludChhLnN0YXJ0KT09MCYmdGhpcy5jb21wYXJlUG9pbnQoYS5lbmQpPT0wfSx0aGlzLmludGVyc2VjdHM9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb21wYXJlUmFuZ2UoYSk7cmV0dXJuIGI9PS0xfHxiPT0wfHxiPT0xfSx0aGlzLmlzRW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZW5kLnJvdz09YSYmdGhpcy5lbmQuY29sdW1uPT1ifSx0aGlzLmlzU3RhcnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWEmJnRoaXMuc3RhcnQuY29sdW1uPT1ifSx0aGlzLnNldFN0YXJ0PWZ1bmN0aW9uKGEsYil7dHlwZW9mIGE9PSJvYmplY3QiPyh0aGlzLnN0YXJ0LmNvbHVtbj1hLmNvbHVtbix0aGlzLnN0YXJ0LnJvdz1hLnJvdyk6KHRoaXMuc3RhcnQucm93PWEsdGhpcy5zdGFydC5jb2x1bW49Yil9LHRoaXMuc2V0RW5kPWZ1bmN0aW9uKGEsYil7dHlwZW9mIGE9PSJvYmplY3QiPyh0aGlzLmVuZC5jb2x1bW49YS5jb2x1bW4sdGhpcy5lbmQucm93PWEucm93KToodGhpcy5lbmQucm93PWEsdGhpcy5lbmQuY29sdW1uPWIpfSx0aGlzLmluc2lkZT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MD90aGlzLmlzRW5kKGEsYil8fHRoaXMuaXNTdGFydChhLGIpPyExOiEwOiExfSx0aGlzLmluc2lkZVN0YXJ0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wP3RoaXMuaXNFbmQoYSxiKT8hMTohMDohMX0sdGhpcy5pbnNpZGVFbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTA/dGhpcy5pc1N0YXJ0KGEsYik/ITE6ITA6ITF9LHRoaXMuY29tcGFyZT1mdW5jdGlvbihhLGIpe3JldHVybiF0aGlzLmlzTXVsdGlMaW5lKCkmJmE9PT10aGlzLnN0YXJ0LnJvdz9iPHRoaXMuc3RhcnQuY29sdW1uPy0xOmI+dGhpcy5lbmQuY29sdW1uPzE6MDphPHRoaXMuc3RhcnQucm93Py0xOmE+dGhpcy5lbmQucm93PzE6dGhpcy5zdGFydC5yb3c9PT1hP2I+PXRoaXMuc3RhcnQuY29sdW1uPzA6LTE6dGhpcy5lbmQucm93PT09YT9iPD10aGlzLmVuZC5jb2x1bW4/MDoxOjB9LHRoaXMuY29tcGFyZVN0YXJ0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1hJiZ0aGlzLnN0YXJ0LmNvbHVtbj09Yj8tMTp0aGlzLmNvbXBhcmUoYSxiKX0sdGhpcy5jb21wYXJlRW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZW5kLnJvdz09YSYmdGhpcy5lbmQuY29sdW1uPT1iPzE6dGhpcy5jb21wYXJlKGEsYil9LHRoaXMuY29tcGFyZUluc2lkZT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVuZC5yb3c9PWEmJnRoaXMuZW5kLmNvbHVtbj09Yj8xOnRoaXMuc3RhcnQucm93PT1hJiZ0aGlzLnN0YXJ0LmNvbHVtbj09Yj8tMTp0aGlzLmNvbXBhcmUoYSxiKX0sdGhpcy5jbGlwUm93cz1mdW5jdGlvbihhLGIpe2lmKHRoaXMuZW5kLnJvdz5iKXZhciBjPXtyb3c6YisxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdz5iKXZhciBlPXtyb3c6YisxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdzxhKXZhciBlPXtyb3c6YSxjb2x1bW46MH07aWYodGhpcy5lbmQucm93PGEpdmFyIGM9e3JvdzphLGNvbHVtbjowfTtyZXR1cm4gZC5mcm9tUG9pbnRzKGV8fHRoaXMuc3RhcnQsY3x8dGhpcy5lbmQpfSx0aGlzLmV4dGVuZD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY29tcGFyZShhLGIpO2lmKGM9PTApcmV0dXJuIHRoaXM7aWYoYz09LTEpdmFyIGU9e3JvdzphLGNvbHVtbjpifTtlbHNlIHZhciBmPXtyb3c6YSxjb2x1bW46Yn07cmV0dXJuIGQuZnJvbVBvaW50cyhlfHx0aGlzLnN0YXJ0LGZ8fHRoaXMuZW5kKX0sdGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT10aGlzLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT10aGlzLmVuZC5jb2x1bW59LHRoaXMuaXNNdWx0aUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3chPT10aGlzLmVuZC5yb3d9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gZC5mcm9tUG9pbnRzKHRoaXMuc3RhcnQsdGhpcy5lbmQpfSx0aGlzLmNvbGxhcHNlUm93cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC5jb2x1bW49PTA/bmV3IGQodGhpcy5zdGFydC5yb3csMCxNYXRoLm1heCh0aGlzLnN0YXJ0LnJvdyx0aGlzLmVuZC5yb3ctMSksMCk6bmV3IGQodGhpcy5zdGFydC5yb3csMCx0aGlzLmVuZC5yb3csMCl9LHRoaXMudG9TY3JlZW5SYW5nZT1mdW5jdGlvbihhKXt2YXIgYj1hLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnN0YXJ0KSxjPWEuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuZW5kKTtyZXR1cm4gbmV3IGQoYi5yb3csYi5jb2x1bW4sYy5yb3csYy5jb2x1bW4pfX0pLmNhbGwoZC5wcm90b3R5cGUpLGQuZnJvbVBvaW50cz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZChhLnJvdyxhLmNvbHVtbixiLnJvdyxiLmNvbHVtbil9LGIuUmFuZ2U9ZH0pLGRlZmluZSgiYWNlL2FuY2hvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vbGliL29vcCIpLGU9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixmPWIuQW5jaG9yPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmRvY3VtZW50PWEsdHlwZW9mIGM9PSJ1bmRlZmluZWQiP3RoaXMuc2V0UG9zaXRpb24oYi5yb3csYi5jb2x1bW4pOnRoaXMuc2V0UG9zaXRpb24oYixjKSx0aGlzLiRvbkNoYW5nZT10aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyksYS5vbigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9OyhmdW5jdGlvbigpe2QuaW1wbGVtZW50KHRoaXMsZSksdGhpcy5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KHRoaXMucm93LHRoaXMuY29sdW1uKX0sdGhpcy5nZXREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvY3VtZW50fSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YSxjPWIucmFuZ2U7aWYoYy5zdGFydC5yb3c9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3chPXRoaXMucm93KXJldHVybjtpZihjLnN0YXJ0LnJvdz50aGlzLnJvdylyZXR1cm47aWYoYy5zdGFydC5yb3c9PXRoaXMucm93JiZjLnN0YXJ0LmNvbHVtbj50aGlzLmNvbHVtbilyZXR1cm47dmFyIGQ9dGhpcy5yb3csZT10aGlzLmNvbHVtbjtiLmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9jLnN0YXJ0LnJvdz09PWQmJmMuc3RhcnQuY29sdW1uPD1lP2Muc3RhcnQucm93PT09Yy5lbmQucm93P2UrPWMuZW5kLmNvbHVtbi1jLnN0YXJ0LmNvbHVtbjooZS09Yy5zdGFydC5jb2x1bW4sZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpjLnN0YXJ0LnJvdyE9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3c8ZCYmKGQrPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyk6Yi5hY3Rpb249PT0iaW5zZXJ0TGluZXMiP2Muc3RhcnQucm93PD1kJiYoZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpiLmFjdGlvbj09InJlbW92ZVRleHQiP2Muc3RhcnQucm93PT1kJiZjLnN0YXJ0LmNvbHVtbjxlP2MuZW5kLmNvbHVtbj49ZT9lPWMuc3RhcnQuY29sdW1uOmU9TWF0aC5tYXgoMCxlLShjLmVuZC5jb2x1bW4tYy5zdGFydC5jb2x1bW4pKTpjLnN0YXJ0LnJvdyE9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3c8ZD8oYy5lbmQucm93PT1kJiYoZT1NYXRoLm1heCgwLGUtYy5lbmQuY29sdW1uKStjLnN0YXJ0LmNvbHVtbiksZC09Yy5lbmQucm93LWMuc3RhcnQucm93KTpjLmVuZC5yb3c9PWQmJihkLT1jLmVuZC5yb3ctYy5zdGFydC5yb3csZT1NYXRoLm1heCgwLGUtYy5lbmQuY29sdW1uKStjLnN0YXJ0LmNvbHVtbik6Yi5hY3Rpb249PSJyZW1vdmVMaW5lcyImJmMuc3RhcnQucm93PD1kJiYoYy5lbmQucm93PD1kP2QtPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdzooZD1jLnN0YXJ0LnJvdyxlPTApKSx0aGlzLnNldFBvc2l0aW9uKGQsZSwhMCl9LHRoaXMuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2M/ZD17cm93OmEsY29sdW1uOmJ9OmQ9dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChhLGIpO2lmKHRoaXMucm93PT1kLnJvdyYmdGhpcy5jb2x1bW49PWQuY29sdW1uKXJldHVybjt2YXIgZT17cm93OnRoaXMucm93LGNvbHVtbjp0aGlzLmNvbHVtbn07dGhpcy5yb3c9ZC5yb3csdGhpcy5jb2x1bW49ZC5jb2x1bW4sdGhpcy5fZW1pdCgiY2hhbmdlIix7b2xkOmUsdmFsdWU6ZH0pfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe3RoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9LHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtyZXR1cm4gYT49dGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKT8oYy5yb3c9TWF0aC5tYXgoMCx0aGlzLmRvY3VtZW50LmdldExlbmd0aCgpLTEpLGMuY29sdW1uPXRoaXMuZG9jdW1lbnQuZ2V0TGluZShjLnJvdykubGVuZ3RoKTphPDA/KGMucm93PTAsYy5jb2x1bW49MCk6KGMucm93PWEsYy5jb2x1bW49TWF0aC5taW4odGhpcy5kb2N1bWVudC5nZXRMaW5lKGMucm93KS5sZW5ndGgsTWF0aC5tYXgoMCxiKSkpLGI8MCYmKGMuY29sdW1uPTApLGN9fSkuY2FsbChmLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9saWIvbGFuZyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtiLnN0cmluZ1JldmVyc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKX0sYi5zdHJpbmdSZXBlYXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4obmV3IEFycmF5KGIrMSkpLmpvaW4oYSl9O3ZhciBkPS9eXHNccyovLGU9L1xzXHMqJC87Yi5zdHJpbmdUcmltTGVmdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGQsIiIpfSxiLnN0cmluZ1RyaW1SaWdodD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGUsIiIpfSxiLmNvcHlPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifSxiLmNvcHlBcnJheT1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYVtjXSYmdHlwZW9mIGFbY109PSJvYmplY3QiP2JbY109dGhpcy5jb3B5T2JqZWN0KGFbY10pOmJbY109YVtjXTtyZXR1cm4gYn0sYi5kZWVwQ29weT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGE7dmFyIGI9YS5jb25zdHJ1Y3RvcigpO2Zvcih2YXIgYyBpbiBhKXR5cGVvZiBhW2NdPT0ib2JqZWN0Ij9iW2NdPXRoaXMuZGVlcENvcHkoYVtjXSk6YltjXT1hW2NdO3JldHVybiBifSxiLmFycmF5VG9NYXA9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYlthW2NdXT0xO3JldHVybiBifSxiLmFycmF5UmVtb3ZlPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yzw9YS5sZW5ndGg7YysrKWI9PT1hW2NdJiZhLnNwbGljZShjLDEpfSxiLmVzY2FwZVJlZ0V4cD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oWy4qKz9eJHt9KCl8W1xdXC9cXF0pL2csIlxcJDEiKX0sYi5kZWZlcnJlZENhbGw9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCxjPWZ1bmN0aW9uKCl7Yj1udWxsLGEoKX0sZD1mdW5jdGlvbihhKXtyZXR1cm4gZC5jYW5jZWwoKSxiPXNldFRpbWVvdXQoYyxhfHwwKSxkfTtyZXR1cm4gZC5zY2hlZHVsZT1kLGQuY2FsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbCgpLGEoKSxkfSxkLmNhbmNlbD1mdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQoYiksYj1udWxsLGR9LGR9fSksZGVmaW5lKCJhY2Uvd29ya2VyL2pzaGludCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGJiKCl7fWZ1bmN0aW9uIGNiKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfWZ1bmN0aW9uIGRiKGEsYil7ZVthXT09PXVuZGVmaW5lZCYmY1thXT09PXVuZGVmaW5lZCYmaWIoIkJhZCBvcHRpb246ICciK2ErIicuIixiKX1mdW5jdGlvbiBlYihhLGIpe3ZhciBjO2ZvcihjIGluIGIpY2IoYixjKSYmKGFbY109YltjXSl9ZnVuY3Rpb24gZmIoKXtCLmNvdWNoJiZlYihDLGcpLEIucmhpbm8mJmViKEMsRyksQi5wcm90b3R5cGVqcyYmZWIoQyxGKSxCLm5vZGUmJihlYihDLHopLEIuZ2xvYmFsc3RyaWN0PSEwKSxCLmRldmVsJiZlYihDLGgpLEIuZG9qbyYmZWIoQyxpKSxCLmJyb3dzZXImJmViKEMsZiksQi5ub25zdGFuZGFyZCYmZWIoQyxLKSxCLmpxdWVyeSYmZWIoQyxzKSxCLm1vb3Rvb2xzJiZlYihDLHgpLEIud3NoJiZlYihDLFQpLEIuZXNuZXh0JiZSKCksQi5nbG9iYWxzdHJpY3QmJkIuc3RyaWN0IT09ITEmJihCLnN0cmljdD0hMCl9ZnVuY3Rpb24gZ2IoYSxiLGMpe3ZhciBkPU1hdGguZmxvb3IoYi90Lmxlbmd0aCoxMDApO3Rocm93e25hbWU6IkpTSGludEVycm9yIixsaW5lOmIsY2hhcmFjdGVyOmMsbWVzc2FnZTphKyIgKCIrZCsiJSBzY2FubmVkKS4iLHJhdzphfX1mdW5jdGlvbiBoYihhLGIsYyxlKXtyZXR1cm4gZC51bmRlZnMucHVzaChbYSxiLGMsZV0pfWZ1bmN0aW9uIGliKGEsYixjLGUsZixnKXt2YXIgaCxpLGo7cmV0dXJuIGI9Ynx8eSxiLmlkPT09IihlbmQpIiYmKGI9UCksaT1iLmxpbmV8fDAsaD1iLmZyb218fDAsaj17aWQ6IihlcnJvcikiLHJhdzphLGV2aWRlbmNlOnRbaS0xXXx8IiIsbGluZTppLGNoYXJhY3RlcjpoLGE6YyxiOmUsYzpmLGQ6Z30sai5yZWFzb249YS5zdXBwbGFudChqKSxkLmVycm9ycy5wdXNoKGopLEIucGFzc2ZhaWwmJmdiKCJTdG9wcGluZy4gIixpLGgpLFMrPTEsUz49Qi5tYXhlcnImJmdiKCJUb28gbWFueSBlcnJvcnMuIixpLGgpLGp9ZnVuY3Rpb24gamIoYSxiLGMsZCxlLGYsZyl7cmV0dXJuIGliKGEse2xpbmU6Yixmcm9tOmN9LGQsZSxmLGcpfWZ1bmN0aW9uIGtiKGEsYixjLGQsZSxmKXt2YXIgZz1pYihhLGIsYyxkLGUsZil9ZnVuY3Rpb24gbGIoYSxiLGMsZCxlLGYsZyl7cmV0dXJuIGtiKGEse2xpbmU6Yixmcm9tOmN9LGQsZSxmLGcpfWZ1bmN0aW9uIG5iKGEsYil7YT09PSJoYXNPd25Qcm9wZXJ0eSImJmliKCInaGFzT3duUHJvcGVydHknIGlzIGEgcmVhbGx5IGJhZCBuYW1lLiIpLGNiKGssYSkmJiFrWyIoZ2xvYmFsKSJdJiYoa1thXT09PSEwP0IubGF0ZWRlZiYmaWIoIid7YX0nIHdhcyB1c2VkIGJlZm9yZSBpdCB3YXMgZGVmaW5lZC4iLHksYSk6IUIuc2hhZG93JiZiIT09ImV4Y2VwdGlvbiImJmliKCIne2F9JyBpcyBhbHJlYWR5IGRlZmluZWQuIix5LGEpKSxrW2FdPWIsa1siKGdsb2JhbCkiXT8oblthXT1rLGNiKG8sYSkmJihCLmxhdGVkZWYmJmliKCIne2F9JyB3YXMgdXNlZCBiZWZvcmUgaXQgd2FzIGRlZmluZWQuIix5LGEpLGRlbGV0ZSBvW2FdKSk6SFthXT1rfWZ1bmN0aW9uIG9iKCl7dmFyIGEsYixkLGU9eS52YWx1ZSxmLGc7c3dpdGNoKGUpe2Nhc2UiKi8iOmtiKCJVbmJlZ3VuIGNvbW1lbnQuIik7YnJlYWs7Y2FzZSIvKm1lbWJlcnMiOmNhc2UiLyptZW1iZXIiOmU9Ii8qbWVtYmVycyIsd3x8KHc9e30pLGI9dzticmVhaztjYXNlIi8qanNoaW50IjpjYXNlIi8qanNsaW50IjpiPUIsZD1jO2JyZWFrO2Nhc2UiLypnbG9iYWwiOmI9QzticmVhaztkZWZhdWx0OmtiKCJXaGF0PyIpfWY9bWIudG9rZW4oKTthOmZvcig7Oyl7Zm9yKDs7KXtpZihmLnR5cGU9PT0ic3BlY2lhbCImJmYudmFsdWU9PT0iKi8iKWJyZWFrIGE7aWYoZi5pZCE9PSIoZW5kbGluZSkiJiZmLmlkIT09IiwiKWJyZWFrO2Y9bWIudG9rZW4oKX1mLnR5cGUhPT0iKHN0cmluZykiJiZmLnR5cGUhPT0iKGlkZW50aWZpZXIpIiYmZSE9PSIvKm1lbWJlcnMiJiZrYigiQmFkIG9wdGlvbi4iLGYpLGc9bWIudG9rZW4oKSxnLmlkPT09IjoiPyhnPW1iLnRva2VuKCksYj09PXcmJmtiKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixmLCIqLyIsIjoiKSxlPT09Ii8qanNoaW50IiYmZGIoZi52YWx1ZSxmKSxmLnZhbHVlIT09ImluZGVudCJ8fGUhPT0iLypqc2hpbnQiJiZlIT09Ii8qanNsaW50Ij9mLnZhbHVlIT09Im1heGVyciJ8fGUhPT0iLypqc2hpbnQiJiZlIT09Ii8qanNsaW50Ij9mLnZhbHVlIT09Im1heGxlbiJ8fGUhPT0iLypqc2hpbnQiJiZlIT09Ii8qanNsaW50Ij9mLnZhbHVlPT09InZhbGlkdGhpcyI/a1siKGdsb2JhbCkiXT9rYigiT3B0aW9uICd2YWxpZHRoaXMnIGNhbid0IGJlIHVzZWQgaW4gYSBnbG9iYWwgc2NvcGUuIik6Zy52YWx1ZT09PSJ0cnVlInx8Zy52YWx1ZT09PSJmYWxzZSI/YltmLnZhbHVlXT1nLnZhbHVlPT09InRydWUiOmtiKCJCYWQgb3B0aW9uIHZhbHVlLiIsZyk6Zy52YWx1ZT09PSJ0cnVlIj9iW2YudmFsdWVdPSEwOmcudmFsdWU9PT0iZmFsc2UiP2JbZi52YWx1ZV09ITE6a2IoIkJhZCBvcHRpb24gdmFsdWUuIixnKTooYT0rZy52YWx1ZSwodHlwZW9mIGEhPSJudW1iZXIifHwhaXNGaW5pdGUoYSl8fGE8PTB8fE1hdGguZmxvb3IoYSkhPT1hKSYma2IoIkV4cGVjdGVkIGEgc21hbGwgaW50ZWdlciBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIixnLGcudmFsdWUpLGIubWF4bGVuPWEpOihhPStnLnZhbHVlLCh0eXBlb2YgYSE9Im51bWJlciJ8fCFpc0Zpbml0ZShhKXx8YTw9MHx8TWF0aC5mbG9vcihhKSE9PWEpJiZrYigiRXhwZWN0ZWQgYSBzbWFsbCBpbnRlZ2VyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLGcsZy52YWx1ZSksYi5tYXhlcnI9YSk6KGE9K2cudmFsdWUsKHR5cGVvZiBhIT0ibnVtYmVyInx8IWlzRmluaXRlKGEpfHxhPD0wfHxNYXRoLmZsb29yKGEpIT09YSkmJmtiKCJFeHBlY3RlZCBhIHNtYWxsIGludGVnZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsZyxnLnZhbHVlKSxiLndoaXRlPSEwLGIuaW5kZW50PWEpLGY9bWIudG9rZW4oKSk6KChlPT09Ii8qanNoaW50Inx8ZT09PSIvKmpzbGludCIpJiZrYigiTWlzc2luZyBvcHRpb24gdmFsdWUuIixmKSxiW2YudmFsdWVdPSExLGY9Zyl9ZCYmZmIoKX1mdW5jdGlvbiBwYihhKXt2YXIgYj1hfHwwLGM9MCxkO3doaWxlKGM8PWIpZD11W2NdLGR8fChkPXVbY109bWIudG9rZW4oKSksYys9MTtyZXR1cm4gZH1mdW5jdGlvbiBxYihiLGMpe3N3aXRjaChQLmlkKXtjYXNlIihudW1iZXIpIjp5LmlkPT09Ii4iJiZpYigiQSBkb3QgZm9sbG93aW5nIGEgbnVtYmVyIGNhbiBiZSBjb25mdXNlZCB3aXRoIGEgZGVjaW1hbCBwb2ludC4iLFApO2JyZWFrO2Nhc2UiLSI6KHkuaWQ9PT0iLSJ8fHkuaWQ9PT0iLS0iKSYmaWIoIkNvbmZ1c2luZyBtaW51c3Nlcy4iKTticmVhaztjYXNlIisiOih5LmlkPT09IisifHx5LmlkPT09IisrIikmJmliKCJDb25mdXNpbmcgcGx1c3Nlcy4iKX1pZihQLnR5cGU9PT0iKHN0cmluZykifHxQLmlkZW50aWZpZXIpYT1QLnZhbHVlO2ImJnkuaWQhPT1iJiYoYz95LmlkPT09IihlbmQpIj9pYigiVW5tYXRjaGVkICd7YX0nLiIsYyxjLmlkKTppYigiRXhwZWN0ZWQgJ3thfScgdG8gbWF0Y2ggJ3tifScgZnJvbSBsaW5lIHtjfSBhbmQgaW5zdGVhZCBzYXcgJ3tkfScuIix5LGIsYy5pZCxjLmxpbmUseS52YWx1ZSk6KHkudHlwZSE9PSIoaWRlbnRpZmllcikifHx5LnZhbHVlIT09YikmJmliKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIix5LGIseS52YWx1ZSkpLEU9UCxQPXk7Zm9yKDs7KXt5PXUuc2hpZnQoKXx8bWIudG9rZW4oKTtpZih5LmlkPT09IihlbmQpInx8eS5pZD09PSIoZXJyb3IpIilyZXR1cm47aWYoeS50eXBlPT09InNwZWNpYWwiKW9iKCk7ZWxzZSBpZih5LmlkIT09IihlbmRsaW5lKSIpYnJlYWt9fWZ1bmN0aW9uIHJiKGIsYyl7dmFyIGQsZT0hMSxmPSExO3kuaWQ9PT0iKGVuZCkiJiZrYigiVW5leHBlY3RlZCBlYXJseSBlbmQgb2YgcHJvZ3JhbS4iLFApLHFiKCksYyYmKGE9ImFub255bW91cyIsa1siKHZlcmIpIl09UC52YWx1ZSk7aWYoYz09PSEwJiZQLmZ1ZClkPVAuZnVkKCk7ZWxzZXtpZihQLm51ZClkPVAubnVkKCk7ZWxzZXtpZih5LnR5cGU9PT0iKG51bWJlcikiJiZQLmlkPT09Ii4iKXJldHVybiBpYigiQSBsZWFkaW5nIGRlY2ltYWwgcG9pbnQgY2FuIGJlIGNvbmZ1c2VkIHdpdGggYSBkb3Q6ICcue2F9Jy4iLFAseS52YWx1ZSkscWIoKSxQO2tiKCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLFAsUC5pZCl9d2hpbGUoYjx5LmxicCllPVAudmFsdWU9PT0iQXJyYXkiLGY9UC52YWx1ZT09PSJPYmplY3QiLHFiKCksZSYmUC5pZD09PSIoIiYmeS5pZD09PSIpIiYmaWIoIlVzZSB0aGUgYXJyYXkgbGl0ZXJhbCBub3RhdGlvbiBbXS4iLFApLGYmJlAuaWQ9PT0iKCImJnkuaWQ9PT0iKSImJmliKCJVc2UgdGhlIG9iamVjdCBsaXRlcmFsIG5vdGF0aW9uIHt9LiIsUCksUC5sZWQ/ZD1QLmxlZChkKTprYigiRXhwZWN0ZWQgYW4gb3BlcmF0b3IgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsUCxQLmlkKX1yZXR1cm4gZH1mdW5jdGlvbiBzYihhLGIpe2E9YXx8UCxiPWJ8fHksQi53aGl0ZSYmYS5jaGFyYWN0ZXIhPT1iLmZyb20mJmEubGluZT09PWIubGluZSYmKGEuZnJvbSs9YS5jaGFyYWN0ZXItYS5mcm9tLGliKCJVbmV4cGVjdGVkIHNwYWNlIGFmdGVyICd7YX0nLiIsYSxhLnZhbHVlKSl9ZnVuY3Rpb24gdGIoYSxiKXthPWF8fFAsYj1ifHx5LEIud2hpdGUmJihhLmNoYXJhY3RlciE9PWIuZnJvbXx8YS5saW5lIT09Yi5saW5lKSYmaWIoIlVuZXhwZWN0ZWQgc3BhY2UgYmVmb3JlICd7YX0nLiIsYixiLnZhbHVlKX1mdW5jdGlvbiB1YihhLGIpe2E9YXx8UCxiPWJ8fHksQi53aGl0ZSYmIWEuY29tbWVudCYmYS5saW5lPT09Yi5saW5lJiZzYihhLGIpfWZ1bmN0aW9uIHZiKGEsYil7Qi53aGl0ZSYmKGE9YXx8UCxiPWJ8fHksYS5saW5lPT09Yi5saW5lJiZhLmNoYXJhY3Rlcj09PWIuZnJvbSYmKGEuZnJvbSs9YS5jaGFyYWN0ZXItYS5mcm9tLGliKCJNaXNzaW5nIHNwYWNlIGFmdGVyICd7YX0nLiIsYSxhLnZhbHVlKSkpfWZ1bmN0aW9uIHdiKGEsYil7YT1hfHxQLGI9Ynx8eSwhQi5sYXhicmVhayYmYS5saW5lIT09Yi5saW5lP2liKCJCYWQgbGluZSBicmVha2luZyBiZWZvcmUgJ3thfScuIixiLGIuaWQpOkIud2hpdGUmJihhPWF8fFAsYj1ifHx5LGEuY2hhcmFjdGVyPT09Yi5mcm9tJiYoYS5mcm9tKz1hLmNoYXJhY3Rlci1hLmZyb20saWIoIk1pc3Npbmcgc3BhY2UgYWZ0ZXIgJ3thfScuIixhLGEudmFsdWUpKSl9ZnVuY3Rpb24geGIoYSl7dmFyIGI7Qi53aGl0ZSYmeS5pZCE9PSIoZW5kKSImJihiPXErKGF8fDApLHkuZnJvbSE9PWImJmliKCJFeHBlY3RlZCAne2F9JyB0byBoYXZlIGFuIGluZGVudGF0aW9uIGF0IHtifSBpbnN0ZWFkIGF0IHtjfS4iLHkseS52YWx1ZSxiLHkuZnJvbSkpfWZ1bmN0aW9uIHliKGEpe2E9YXx8UCxhLmxpbmUhPT15LmxpbmUmJmliKCJMaW5lIGJyZWFraW5nIGVycm9yICd7YX0nLiIsYSxhLnZhbHVlKX1mdW5jdGlvbiB6Yigpe1AubGluZSE9PXkubGluZT9CLmxheGNvbW1hfHwoemIuZmlyc3QmJihpYigiQ29tbWEgd2FybmluZ3MgY2FuIGJlIHR1cm5lZCBvZmYgd2l0aCAnbGF4Y29tbWEnIiksemIuZmlyc3Q9ITEpLGliKCJCYWQgbGluZSBicmVha2luZyBiZWZvcmUgJ3thfScuIixQLHkuaWQpKTohUC5jb21tZW50JiZQLmNoYXJhY3RlciE9PXkuZnJvbSYmQi53aGl0ZSYmKFAuZnJvbSs9UC5jaGFyYWN0ZXItUC5mcm9tLGliKCJVbmV4cGVjdGVkIHNwYWNlIGFmdGVyICd7YX0nLiIsUCxQLnZhbHVlKSkscWIoIiwiKSx2YihQLHkpfWZ1bmN0aW9uIEFiKGEsYil7dmFyIGM9TlthXTtpZighY3x8dHlwZW9mIGMhPSJvYmplY3QiKU5bYV09Yz17aWQ6YSxsYnA6Yix2YWx1ZTphfTtyZXR1cm4gY31mdW5jdGlvbiBCYihhKXtyZXR1cm4gQWIoYSwwKX1mdW5jdGlvbiBDYihhLGIpe3ZhciBjPUJiKGEpO3JldHVybiBjLmlkZW50aWZpZXI9Yy5yZXNlcnZlZD0hMCxjLmZ1ZD1iLGN9ZnVuY3Rpb24gRGIoYSxiKXt2YXIgYz1DYihhLGIpO3JldHVybiBjLmJsb2NrPSEwLGN9ZnVuY3Rpb24gRWIoYSl7dmFyIGI9YS5pZC5jaGFyQXQoMCk7aWYoYj49ImEiJiZiPD0ieiJ8fGI+PSJBIiYmYjw9IloiKWEuaWRlbnRpZmllcj1hLnJlc2VydmVkPSEwO3JldHVybiBhfWZ1bmN0aW9uIEZiKGEsYil7dmFyIGM9QWIoYSwxNTApO3JldHVybiBFYihjKSxjLm51ZD10eXBlb2YgYj09ImZ1bmN0aW9uIj9iOmZ1bmN0aW9uKCl7dGhpcy5yaWdodD1yYigxNTApLHRoaXMuYXJpdHk9InVuYXJ5IjtpZih0aGlzLmlkPT09IisrInx8dGhpcy5pZD09PSItLSIpQi5wbHVzcGx1cz9pYigiVW5leHBlY3RlZCB1c2Ugb2YgJ3thfScuIix0aGlzLHRoaXMuaWQpOighdGhpcy5yaWdodC5pZGVudGlmaWVyfHx0aGlzLnJpZ2h0LnJlc2VydmVkKSYmdGhpcy5yaWdodC5pZCE9PSIuIiYmdGhpcy5yaWdodC5pZCE9PSJbIiYmaWIoIkJhZCBvcGVyYW5kLiIsdGhpcyk7cmV0dXJuIHRoaXN9LGN9ZnVuY3Rpb24gR2IoYSxiKXt2YXIgYz1CYihhKTtyZXR1cm4gYy50eXBlPWEsYy5udWQ9YixjfWZ1bmN0aW9uIEhiKGEsYil7dmFyIGM9R2IoYSxiKTtyZXR1cm4gYy5pZGVudGlmaWVyPWMucmVzZXJ2ZWQ9ITAsY31mdW5jdGlvbiBJYihhLGIpe3JldHVybiBIYihhLGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBiPT0iZnVuY3Rpb24iJiZiKHRoaXMpLHRoaXN9KX1mdW5jdGlvbiBKYihhLGIsYyxkKXt2YXIgZT1BYihhLGMpO3JldHVybiBFYihlKSxlLmxlZD1mdW5jdGlvbihlKXtyZXR1cm4gZHx8KHdiKEUsUCksdmIoUCx5KSksYT09PSJpbiImJmUuaWQ9PT0iISImJmliKCJDb25mdXNpbmcgdXNlIG9mICd7YX0nLiIsZSwiISIpLHR5cGVvZiBiPT0iZnVuY3Rpb24iP2IoZSx0aGlzKToodGhpcy5sZWZ0PWUsdGhpcy5yaWdodD1yYihjKSx0aGlzKX0sZX1mdW5jdGlvbiBLYihhLGIpe3ZhciBjPUFiKGEsMTAwKTtyZXR1cm4gYy5sZWQ9ZnVuY3Rpb24oYSl7d2IoRSxQKSx2YihQLHkpO3ZhciBjPXJiKDEwMCk7cmV0dXJuIGEmJmEuaWQ9PT0iTmFOInx8YyYmYy5pZD09PSJOYU4iP2liKCJVc2UgdGhlIGlzTmFOIGZ1bmN0aW9uIHRvIGNvbXBhcmUgd2l0aCBOYU4uIix0aGlzKTpiJiZiLmFwcGx5KHRoaXMsW2EsY10pLGEuaWQ9PT0iISImJmliKCJDb25mdXNpbmcgdXNlIG9mICd7YX0nLiIsYSwiISIpLGMuaWQ9PT0iISImJmliKCJDb25mdXNpbmcgdXNlIG9mICd7YX0nLiIsYywiISIpLHRoaXMubGVmdD1hLHRoaXMucmlnaHQ9Yyx0aGlzfSxjfWZ1bmN0aW9uIExiKGEpe3JldHVybiBhJiYoYS50eXBlPT09IihudW1iZXIpIiYmK2EudmFsdWU9PT0wfHxhLnR5cGU9PT0iKHN0cmluZykiJiZhLnZhbHVlPT09IiJ8fGEudHlwZT09PSJudWxsIiYmIUIuZXFudWxsfHxhLnR5cGU9PT0idHJ1ZSJ8fGEudHlwZT09PSJmYWxzZSJ8fGEudHlwZT09PSJ1bmRlZmluZWQiKX1mdW5jdGlvbiBNYihhLGIpe3JldHVybiBBYihhLDIwKS5leHBzPSEwLEpiKGEsZnVuY3Rpb24oYSxiKXt2YXIgYztiLmxlZnQ9YSxDW2EudmFsdWVdPT09ITEmJkhbYS52YWx1ZV1bIihnbG9iYWwpIl09PT0hMD9pYigiUmVhZCBvbmx5LiIsYSk6YVsiZnVuY3Rpb24iXSYmaWIoIid7YX0nIGlzIGEgZnVuY3Rpb24uIixhLGEudmFsdWUpO2lmKGEpe0IuZXNuZXh0JiZrW2EudmFsdWVdPT09ImNvbnN0IiYmaWIoIkF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgJ3thfScgd2hpY2ggaXMgYSBjb25zdGFudCIsYSxhLnZhbHVlKTtpZihhLmlkPT09Ii4ifHxhLmlkPT09IlsiKXJldHVybighYS5sZWZ0fHxhLmxlZnQudmFsdWU9PT0iYXJndW1lbnRzIikmJmliKCJCYWQgYXNzaWdubWVudC4iLGIpLGIucmlnaHQ9cmIoMTkpLGI7aWYoYS5pZGVudGlmaWVyJiYhYS5yZXNlcnZlZClyZXR1cm4ga1thLnZhbHVlXT09PSJleGNlcHRpb24iJiZpYigiRG8gbm90IGFzc2lnbiB0byB0aGUgZXhjZXB0aW9uIHBhcmFtZXRlci4iLGEpLGIucmlnaHQ9cmIoMTkpLGI7YT09PU5bImZ1bmN0aW9uIl0mJmliKCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGluIGFuIGFzc2lnbm1lbnQgYW5kIGluc3RlYWQgc2F3IGEgZnVuY3Rpb24gaW52b2NhdGlvbi4iLFApfWtiKCJCYWQgYXNzaWdubWVudC4iLGIpfSwyMCl9ZnVuY3Rpb24gTmIoYSxiLGMpe3ZhciBkPUFiKGEsYyk7cmV0dXJuIEViKGQpLGQubGVkPXR5cGVvZiBiPT0iZnVuY3Rpb24iP2I6ZnVuY3Rpb24oYSl7cmV0dXJuIEIuYml0d2lzZSYmaWIoIlVuZXhwZWN0ZWQgdXNlIG9mICd7YX0nLiIsdGhpcyx0aGlzLmlkKSx0aGlzLmxlZnQ9YSx0aGlzLnJpZ2h0PXJiKGMpLHRoaXN9LGR9ZnVuY3Rpb24gT2IoYSl7cmV0dXJuIEFiKGEsMjApLmV4cHM9ITAsSmIoYSxmdW5jdGlvbihhLGIpe0IuYml0d2lzZSYmaWIoIlVuZXhwZWN0ZWQgdXNlIG9mICd7YX0nLiIsYixiLmlkKSx2YihFLFApLHZiKFAseSk7aWYoYSlyZXR1cm4gYS5pZD09PSIuInx8YS5pZD09PSJbInx8YS5pZGVudGlmaWVyJiYhYS5yZXNlcnZlZD8ocmIoMTkpLGIpOihhPT09TlsiZnVuY3Rpb24iXSYmaWIoIkV4cGVjdGVkIGFuIGlkZW50aWZpZXIgaW4gYW4gYXNzaWdubWVudCwgYW5kIGluc3RlYWQgc2F3IGEgZnVuY3Rpb24gaW52b2NhdGlvbi4iLFApLGIpO2tiKCJCYWQgYXNzaWdubWVudC4iLGIpfSwyMCl9ZnVuY3Rpb24gUGIoYSxiKXt2YXIgYz1BYihhLDE1MCk7cmV0dXJuIGMubGVkPWZ1bmN0aW9uKGEpe3JldHVybiBCLnBsdXNwbHVzP2liKCJVbmV4cGVjdGVkIHVzZSBvZiAne2F9Jy4iLHRoaXMsdGhpcy5pZCk6KCFhLmlkZW50aWZpZXJ8fGEucmVzZXJ2ZWQpJiZhLmlkIT09Ii4iJiZhLmlkIT09IlsiJiZpYigiQmFkIG9wZXJhbmQuIix0aGlzKSx0aGlzLmxlZnQ9YSx0aGlzfSxjfWZ1bmN0aW9uIFFiKGEpe2lmKHkuaWRlbnRpZmllcilyZXR1cm4gcWIoKSxQLnJlc2VydmVkJiYhQi5lczUmJighYXx8UC52YWx1ZSE9PSJ1bmRlZmluZWQiKSYmaWIoIkV4cGVjdGVkIGFuIGlkZW50aWZpZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nIChhIHJlc2VydmVkIHdvcmQpLiIsUCxQLmlkKSxQLnZhbHVlfWZ1bmN0aW9uIFJiKGEpe3ZhciBiPVFiKGEpO2lmKGIpcmV0dXJuIGI7UC5pZD09PSJmdW5jdGlvbiImJnkuaWQ9PT0iKCI/aWIoIk1pc3NpbmcgbmFtZSBpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbi4iKTprYigiRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIix5LHkudmFsdWUpfWZ1bmN0aW9uIFNiKGEpe3ZhciBiPTAsYztpZih5LmlkIT09IjsifHxBKXJldHVybjtmb3IoOzspe2M9cGIoYik7aWYoYy5yZWFjaClyZXR1cm47aWYoYy5pZCE9PSIoZW5kbGluZSkiKXtpZihjLmlkPT09ImZ1bmN0aW9uIil7aWYoIUIubGF0ZWRlZilicmVhaztpYigiSW5uZXIgZnVuY3Rpb25zIHNob3VsZCBiZSBsaXN0ZWQgYXQgdGhlIHRvcCBvZiB0aGUgb3V0ZXIgZnVuY3Rpb24uIixjKTticmVha31pYigiVW5yZWFjaGFibGUgJ3thfScgYWZ0ZXIgJ3tifScuIixjLGMudmFsdWUsYSk7YnJlYWt9Yis9MX19ZnVuY3Rpb24gVGIoYSl7dmFyIGI9cSxjLGQ9SCxlPXk7aWYoZS5pZD09PSI7Iil7cWIoIjsiKTtyZXR1cm59ZS5pZGVudGlmaWVyJiYhZS5yZXNlcnZlZCYmcGIoKS5pZD09PSI6IiYmKHFiKCkscWIoIjoiKSxIPU9iamVjdC5jcmVhdGUoZCksbmIoZS52YWx1ZSwibGFiZWwiKSx5LmxhYmVsbGVkfHxpYigiTGFiZWwgJ3thfScgb24ge2J9IHN0YXRlbWVudC4iLHksZS52YWx1ZSx5LnZhbHVlKSxfLnRlc3QoZS52YWx1ZSsiOiIpJiZpYigiTGFiZWwgJ3thfScgbG9va3MgbGlrZSBhIGphdmFzY3JpcHQgdXJsLiIsZSxlLnZhbHVlKSx5LmxhYmVsPWUudmFsdWUsZT15KSxhfHx4YigpLGM9cmIoMCwhMCk7aWYoIWUuYmxvY2speyFCLmV4cHImJighY3x8IWMuZXhwcyk/aWIoIkV4cGVjdGVkIGFuIGFzc2lnbm1lbnQgb3IgZnVuY3Rpb24gY2FsbCBhbmQgaW5zdGVhZCBzYXcgYW4gZXhwcmVzc2lvbi4iLFApOkIubm9uZXcmJmMuaWQ9PT0iKCImJmMubGVmdC5pZD09PSJuZXciJiZpYigiRG8gbm90IHVzZSAnbmV3JyBmb3Igc2lkZSBlZmZlY3RzLiIpO2lmKHkuaWQ9PT0iLCIpcmV0dXJuIHpiKCk7eS5pZCE9PSI7Ij9CLmFzaXx8KCFCLmxhc3RzZW1pY3x8eS5pZCE9PSJ9Inx8eS5saW5lIT09UC5saW5lKSYmamIoIk1pc3Npbmcgc2VtaWNvbG9uLiIsUC5saW5lLFAuY2hhcmFjdGVyKTooc2IoUCx5KSxxYigiOyIpLHZiKFAseSkpfXJldHVybiBxPWIsSD1kLGN9ZnVuY3Rpb24gVWIoYSl7dmFyIGI9W10sYyxkO3doaWxlKCF5LnJlYWNoJiZ5LmlkIT09IihlbmQpIil5LmlkPT09IjsiPyhkPXBiKCksKCFkfHxkLmlkIT09IigiKSYmaWIoIlVubmVjZXNzYXJ5IHNlbWljb2xvbi4iKSxxYigiOyIpKTpiLnB1c2goVGIoYT09PXkubGluZSkpO3JldHVybiBifWZ1bmN0aW9uIFZiKCl7dmFyIGEsYixjO2Zvcig7Oyl7aWYoeS5pZD09PSIoc3RyaW5nKSIpe2I9cGIoMCk7aWYoYi5pZD09PSIoZW5kbGluZSkiKXthPTE7ZG8gYz1wYihhKSxhKz0xO3doaWxlKGMuaWQ9PT0iKGVuZGxpbmUpIik7aWYoYy5pZCE9PSI7Iil7aWYoYy5pZCE9PSIoc3RyaW5nKSImJmMuaWQhPT0iKG51bWJlcikiJiZjLmlkIT09IihyZWdleHApIiYmYy5pZGVudGlmaWVyIT09ITAmJmMuaWQhPT0ifSIpYnJlYWs7aWIoIk1pc3Npbmcgc2VtaWNvbG9uLiIseSl9ZWxzZSBiPWN9ZWxzZSBpZihiLmlkPT09In0iKWliKCJNaXNzaW5nIHNlbWljb2xvbi4iLGIpO2Vsc2UgaWYoYi5pZCE9PSI7IilicmVhazt4YigpLHFiKCksTVtQLnZhbHVlXSYmaWIoJ1VubmVjZXNzYXJ5IGRpcmVjdGl2ZSAie2F9Ii4nLFAsUC52YWx1ZSksUC52YWx1ZT09PSJ1c2Ugc3RyaWN0IiYmKEIubmV3Y2FwPSEwLEIudW5kZWY9ITApLE1bUC52YWx1ZV09ITAsYi5pZD09PSI7IiYmcWIoIjsiKTtjb250aW51ZX1icmVha319ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkLGU9cCxmPXEsZyxoPUgsaSxqLGw7cD1hO2lmKCFhfHwhQi5mdW5jc2NvcGUpSD1PYmplY3QuY3JlYXRlKEgpO3ZiKFAseSksaT15O2lmKHkuaWQ9PT0ieyIpe3FiKCJ7Iiksaj1QLmxpbmU7aWYoeS5pZCE9PSJ9Iil7cSs9Qi5pbmRlbnQ7d2hpbGUoIWEmJnkuZnJvbT5xKXErPUIuaW5kZW50O2lmKGMpe2c9e307Zm9yKGwgaW4gTSljYihNLGwpJiYoZ1tsXT1NW2xdKTtWYigpLEIuc3RyaWN0JiZrWyIoY29udGV4dCkiXVsiKGdsb2JhbCkiXSYmIWdbInVzZSBzdHJpY3QiXSYmIU1bInVzZSBzdHJpY3QiXSYmaWIoJ01pc3NpbmcgInVzZSBzdHJpY3QiIHN0YXRlbWVudC4nKX1kPVViKGopLGMmJihNPWcpLHEtPUIuaW5kZW50LGohPT15LmxpbmUmJnhiKCl9ZWxzZSBqIT09eS5saW5lJiZ4YigpO3FiKCJ9IixpKSxxPWZ9ZWxzZSBhPygoIWJ8fEIuY3VybHkpJiZpYigiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIseSwieyIseS52YWx1ZSksQT0hMCxxKz1CLmluZGVudCxkPVtUYih5LmxpbmU9PT1QLmxpbmUpXSxxLT1CLmluZGVudCxBPSExKTprYigiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIseSwieyIseS52YWx1ZSk7a1siKHZlcmIpIl09bnVsbDtpZighYXx8IUIuZnVuY3Njb3BlKUg9aDtyZXR1cm4gcD1lLGEmJkIubm9lbXB0eSYmKCFkfHxkLmxlbmd0aD09PTApJiZpYigiRW1wdHkgYmxvY2suIiksZH1mdW5jdGlvbiBYYihhKXt3JiZ0eXBlb2Ygd1thXSE9ImJvb2xlYW4iJiZpYigiVW5leHBlY3RlZCAvKm1lbWJlciAne2F9Jy4iLFAsYSksdHlwZW9mIHZbYV09PSJudW1iZXIiP3ZbYV0rPTE6dlthXT0xfWZ1bmN0aW9uIFliKGEpe3ZhciBiPWEudmFsdWUsYz1hLmxpbmUsZD1vW2JdO3R5cGVvZiBkPT0iZnVuY3Rpb24iJiYoZD0hMSksZD9kW2QubGVuZ3RoLTFdIT09YyYmZC5wdXNoKGMpOihkPVtjXSxvW2JdPWQpfWZ1bmN0aW9uIFpiKCl7dmFyIGE9UWIoITApO3JldHVybiBhfHwoeS5pZD09PSIoc3RyaW5nKSI/KGE9eS52YWx1ZSxxYigpKTp5LmlkPT09IihudW1iZXIpIiYmKGE9eS52YWx1ZS50b1N0cmluZygpLHFiKCkpKSxhfWZ1bmN0aW9uICRiKCl7dmFyIGEsYj15LGM9W107cWIoIigiKSx1YigpO2lmKHkuaWQ9PT0iKSIpe3FiKCIpIik7cmV0dXJufWZvcig7Oyl7YT1SYighMCksYy5wdXNoKGEpLG5iKGEsInBhcmFtZXRlciIpO2lmKHkuaWQhPT0iLCIpcmV0dXJuIHFiKCIpIixiKSx1YihFLFApLGM7emIoKX19ZnVuY3Rpb24gX2IoYixjKXt2YXIgZCxlPUIsZj1IO3JldHVybiBCPU9iamVjdC5jcmVhdGUoQiksSD1PYmplY3QuY3JlYXRlKEgpLGs9eyIobmFtZSkiOmJ8fCciJythKyciJywiKGxpbmUpIjp5LmxpbmUsIihjb250ZXh0KSI6aywiKGJyZWFrYWdlKSI6MCwiKGxvb3BhZ2UpIjowLCIoc2NvcGUpIjpILCIoc3RhdGVtZW50KSI6Y30sZD1rLFAuZnVuY3Q9ayxtLnB1c2goayksYiYmbmIoYiwiZnVuY3Rpb24iKSxrWyIocGFyYW1zKSJdPSRiKCksV2IoITEsITEsITApLEg9ZixCPWUsa1siKGxhc3QpIl09UC5saW5lLGs9a1siKGNvbnRleHQpIl0sZH1mdW5jdGlvbiBiYygpe2Z1bmN0aW9uIGEoKXt2YXIgYT17fSxiPXk7cWIoInsiKTtpZih5LmlkIT09In0iKWZvcig7Oyl7aWYoeS5pZD09PSIoZW5kKSIpa2IoIk1pc3NpbmcgJ30nIHRvIG1hdGNoICd7JyBmcm9tIGxpbmUge2F9LiIseSxiLmxpbmUpO2Vsc2V7aWYoeS5pZD09PSJ9Iil7aWIoIlVuZXhwZWN0ZWQgY29tbWEuIixQKTticmVha315LmlkPT09IiwiP2tiKCJVbmV4cGVjdGVkIGNvbW1hLiIseSk6eS5pZCE9PSIoc3RyaW5nKSImJmliKCJFeHBlY3RlZCBhIHN0cmluZyBhbmQgaW5zdGVhZCBzYXcge2F9LiIseSx5LnZhbHVlKX1hW3kudmFsdWVdPT09ITA/aWIoIkR1cGxpY2F0ZSBrZXkgJ3thfScuIix5LHkudmFsdWUpOnkudmFsdWU9PT0iX19wcm90b19fIiYmIUIucHJvdG98fHkudmFsdWU9PT0iX19pdGVyYXRvcl9fIiYmIUIuaXRlcmF0b3I/aWIoIlRoZSAne2F9JyBrZXkgbWF5IHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLiIseSx5LnZhbHVlKTphW3kudmFsdWVdPSEwLHFiKCkscWIoIjoiKSxiYygpO2lmKHkuaWQhPT0iLCIpYnJlYWs7cWIoIiwiKX1xYigifSIpfWZ1bmN0aW9uIGIoKXt2YXIgYT15O3FiKCJbIik7aWYoeS5pZCE9PSJdIilmb3IoOzspe2lmKHkuaWQ9PT0iKGVuZCkiKWtiKCJNaXNzaW5nICddJyB0byBtYXRjaCAnWycgZnJvbSBsaW5lIHthfS4iLHksYS5saW5lKTtlbHNle2lmKHkuaWQ9PT0iXSIpe2liKCJVbmV4cGVjdGVkIGNvbW1hLiIsUCk7YnJlYWt9eS5pZD09PSIsIiYma2IoIlVuZXhwZWN0ZWQgY29tbWEuIix5KX1iYygpO2lmKHkuaWQhPT0iLCIpYnJlYWs7cWIoIiwiKX1xYigiXSIpfXN3aXRjaCh5LmlkKXtjYXNlInsiOmEoKTticmVhaztjYXNlIlsiOmIoKTticmVhaztjYXNlInRydWUiOmNhc2UiZmFsc2UiOmNhc2UibnVsbCI6Y2FzZSIobnVtYmVyKSI6Y2FzZSIoc3RyaW5nKSI6cWIoKTticmVhaztjYXNlIi0iOnFiKCItIiksUC5jaGFyYWN0ZXIhPT15LmZyb20mJmliKCJVbmV4cGVjdGVkIHNwYWNlIGFmdGVyICctJy4iLFApLHNiKFAseSkscWIoIihudW1iZXIpIik7YnJlYWs7ZGVmYXVsdDprYigiRXhwZWN0ZWQgYSBKU09OIHZhbHVlLiIseSl9fXZhciBhLGI9eyI8IjohMCwiPD0iOiEwLCI9PSI6ITAsIj09PSI6ITAsIiE9PSI6ITAsIiE9IjohMCwiPiI6ITAsIj49IjohMCwiKyI6ITAsIi0iOiEwLCIqIjohMCwiLyI6ITAsIiUiOiEwfSxjPXthc2k6ITAsYml0d2lzZTohMCxib3NzOiEwLGJyb3dzZXI6ITAsY291Y2g6ITAsY3VybHk6ITAsZGVidWc6ITAsZGV2ZWw6ITAsZG9qbzohMCxlcWVxZXE6ITAsZXFudWxsOiEwLGVzNTohMCxlc25leHQ6ITAsZXZpbDohMCxleHByOiEwLGZvcmluOiEwLGZ1bmNzY29wZTohMCxnbG9iYWxzdHJpY3Q6ITAsaW1tZWQ6ITAsaXRlcmF0b3I6ITAsanF1ZXJ5OiEwLGxhc3RzZW1pYzohMCxsYXRlZGVmOiEwLGxheGJyZWFrOiEwLGxheGNvbW1hOiEwLGxvb3BmdW5jOiEwLG1vb3Rvb2xzOiEwLG11bHRpc3RyOiEwLG5ld2NhcDohMCxub2FyZzohMCxub2RlOiEwLG5vZW1wdHk6ITAsbm9uZXc6ITAsbm9uc3RhbmRhcmQ6ITAsbm9tZW46ITAsb25ldmFyOiEwLG9uZWNhc2U6ITAscGFzc2ZhaWw6ITAscGx1c3BsdXM6ITAscHJvdG86ITAscHJvdG90eXBlanM6ITAscmVnZXhkYXNoOiEwLHJlZ2V4cDohMCxyaGlubzohMCx1bmRlZjohMCxzY3JpcHR1cmw6ITAsc2hhZG93OiEwLHNtYXJ0dGFiczohMCxzdHJpY3Q6ITAsc3ViOiEwLHN1cGVybmV3OiEwLHRyYWlsaW5nOiEwLHZhbGlkdGhpczohMCx3aXRoc3RtdDohMCx3aGl0ZTohMCx3c2g6ITB9LGU9e21heGxlbjohMSxpbmRlbnQ6ITEsbWF4ZXJyOiExLHByZWRlZjohMX0sZj17QXJyYXlCdWZmZXI6ITEsQXJyYXlCdWZmZXJWaWV3OiExLEF1ZGlvOiExLGFkZEV2ZW50TGlzdGVuZXI6ITEsYXBwbGljYXRpb25DYWNoZTohMSxhdG9iOiExLGJsdXI6ITEsYnRvYTohMSxjbGVhckludGVydmFsOiExLGNsZWFyVGltZW91dDohMSxjbG9zZTohMSxjbG9zZWQ6ITEsRGF0YVZpZXc6ITEsRE9NUGFyc2VyOiExLGRlZmF1bHRTdGF0dXM6ITEsZG9jdW1lbnQ6ITEsZXZlbnQ6ITEsRmlsZVJlYWRlcjohMSxGbG9hdDMyQXJyYXk6ITEsRmxvYXQ2NEFycmF5OiExLEZvcm1EYXRhOiExLGZvY3VzOiExLGZyYW1lczohMSxnZXRDb21wdXRlZFN0eWxlOiExLEhUTUxFbGVtZW50OiExLEhUTUxBbmNob3JFbGVtZW50OiExLEhUTUxCYXNlRWxlbWVudDohMSxIVE1MQmxvY2txdW90ZUVsZW1lbnQ6ITEsSFRNTEJvZHlFbGVtZW50OiExLEhUTUxCUkVsZW1lbnQ6ITEsSFRNTEJ1dHRvbkVsZW1lbnQ6ITEsSFRNTENhbnZhc0VsZW1lbnQ6ITEsSFRNTERpcmVjdG9yeUVsZW1lbnQ6ITEsSFRNTERpdkVsZW1lbnQ6ITEsSFRNTERMaXN0RWxlbWVudDohMSxIVE1MRmllbGRTZXRFbGVtZW50OiExLEhUTUxGb250RWxlbWVudDohMSxIVE1MRm9ybUVsZW1lbnQ6ITEsSFRNTEZyYW1lRWxlbWVudDohMSxIVE1MRnJhbWVTZXRFbGVtZW50OiExLEhUTUxIZWFkRWxlbWVudDohMSxIVE1MSGVhZGluZ0VsZW1lbnQ6ITEsSFRNTEhSRWxlbWVudDohMSxIVE1MSHRtbEVsZW1lbnQ6ITEsSFRNTElGcmFtZUVsZW1lbnQ6ITEsSFRNTEltYWdlRWxlbWVudDohMSxIVE1MSW5wdXRFbGVtZW50OiExLEhUTUxJc0luZGV4RWxlbWVudDohMSxIVE1MTGFiZWxFbGVtZW50OiExLEhUTUxMYXllckVsZW1lbnQ6ITEsSFRNTExlZ2VuZEVsZW1lbnQ6ITEsSFRNTExJRWxlbWVudDohMSxIVE1MTGlua0VsZW1lbnQ6ITEsSFRNTE1hcEVsZW1lbnQ6ITEsSFRNTE1lbnVFbGVtZW50OiExLEhUTUxNZXRhRWxlbWVudDohMSxIVE1MTW9kRWxlbWVudDohMSxIVE1MT2JqZWN0RWxlbWVudDohMSxIVE1MT0xpc3RFbGVtZW50OiExLEhUTUxPcHRHcm91cEVsZW1lbnQ6ITEsSFRNTE9wdGlvbkVsZW1lbnQ6ITEsSFRNTFBhcmFncmFwaEVsZW1lbnQ6ITEsSFRNTFBhcmFtRWxlbWVudDohMSxIVE1MUHJlRWxlbWVudDohMSxIVE1MUXVvdGVFbGVtZW50OiExLEhUTUxTY3JpcHRFbGVtZW50OiExLEhUTUxTZWxlY3RFbGVtZW50OiExLEhUTUxTdHlsZUVsZW1lbnQ6ITEsSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6ITEsSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6ITEsSFRNTFRhYmxlQ29sRWxlbWVudDohMSxIVE1MVGFibGVFbGVtZW50OiExLEhUTUxUYWJsZVJvd0VsZW1lbnQ6ITEsSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6ITEsSFRNTFRleHRBcmVhRWxlbWVudDohMSxIVE1MVGl0bGVFbGVtZW50OiExLEhUTUxVTGlzdEVsZW1lbnQ6ITEsSFRNTFZpZGVvRWxlbWVudDohMSxoaXN0b3J5OiExLEludDE2QXJyYXk6ITEsSW50MzJBcnJheTohMSxJbnQ4QXJyYXk6ITEsSW1hZ2U6ITEsbGVuZ3RoOiExLGxvY2FsU3RvcmFnZTohMSxsb2NhdGlvbjohMSxNZXNzYWdlQ2hhbm5lbDohMSxNZXNzYWdlRXZlbnQ6ITEsTWVzc2FnZVBvcnQ6ITEsbW92ZUJ5OiExLG1vdmVUbzohMSxuYW1lOiExLG5hdmlnYXRvcjohMSxvbmJlZm9yZXVubG9hZDohMCxvbmJsdXI6ITAsb25lcnJvcjohMCxvbmZvY3VzOiEwLG9ubG9hZDohMCxvbnJlc2l6ZTohMCxvbnVubG9hZDohMCxvcGVuOiExLG9wZW5EYXRhYmFzZTohMSxvcGVuZXI6ITEsT3B0aW9uOiExLHBhcmVudDohMSxwcmludDohMSxyZW1vdmVFdmVudExpc3RlbmVyOiExLHJlc2l6ZUJ5OiExLHJlc2l6ZVRvOiExLHNjcmVlbjohMSxzY3JvbGw6ITEsc2Nyb2xsQnk6ITEsc2Nyb2xsVG86ITEsc2Vzc2lvblN0b3JhZ2U6ITEsc2V0SW50ZXJ2YWw6ITEsc2V0VGltZW91dDohMSxTaGFyZWRXb3JrZXI6ITEsc3RhdHVzOiExLHRvcDohMSxVaW50MTZBcnJheTohMSxVaW50MzJBcnJheTohMSxVaW50OEFycmF5OiExLFdlYlNvY2tldDohMSx3aW5kb3c6ITEsV29ya2VyOiExLFhNTEh0dHBSZXF1ZXN0OiExLFhNTFNlcmlhbGl6ZXI6ITEsWFBhdGhFdmFsdWF0b3I6ITEsWFBhdGhFeGNlcHRpb246ITEsWFBhdGhFeHByZXNzaW9uOiExLFhQYXRoTmFtZXNwYWNlOiExLFhQYXRoTlNSZXNvbHZlcjohMSxYUGF0aFJlc3VsdDohMX0sZz17cmVxdWlyZTohMSxyZXNwb25kOiExLGdldFJvdzohMSxlbWl0OiExLHNlbmQ6ITEsc3RhcnQ6ITEsc3VtOiExLGxvZzohMSxleHBvcnRzOiExLG1vZHVsZTohMSxwcm92aWRlczohMX0saD17YWxlcnQ6ITEsY29uZmlybTohMSxjb25zb2xlOiExLERlYnVnOiExLG9wZXJhOiExLHByb21wdDohMX0saT17ZG9qbzohMSxkaWppdDohMSxkb2pveDohMSxkZWZpbmU6ITEscmVxdWlyZTohMX0saj17IlxiIjoiXFxiIiwiCSI6IlxcdCIsIlxuIjoiXFxuIiwiXGYiOiJcXGYiLCJcciI6IlxcciIsJyInOidcXCInLCIvIjoiXFwvIiwiXFwiOiJcXFxcIn0sayxsPVsiY2xvc3VyZSIsImV4Y2VwdGlvbiIsImdsb2JhbCIsImxhYmVsIiwib3V0ZXIiLCJ1bnVzZWQiLCJ2YXIiXSxtLG4sbyxwLHEscixzPXskOiExLGpRdWVyeTohMX0sdCx1LHYsdyx4PXskOiExLCQkOiExLEFzc2V0czohMSxCcm93c2VyOiExLENoYWluOiExLENsYXNzOiExLENvbG9yOiExLENvb2tpZTohMSxDb3JlOiExLERvY3VtZW50OiExLERvbVJlYWR5OiExLERPTVJlYWR5OiExLERyYWc6ITEsRWxlbWVudDohMSxFbGVtZW50czohMSxFdmVudDohMSxFdmVudHM6ITEsRng6ITEsR3JvdXA6ITEsSGFzaDohMSxIdG1sVGFibGU6ITEsSWZyYW1lOiExLElmcmFtZVNoaW06ITEsSW5wdXRWYWxpZGF0b3I6ITEsaW5zdGFuY2VPZjohMSxLZXlib2FyZDohMSxMb2NhbGU6ITEsTWFzazohMSxNb29Ub29sczohMSxOYXRpdmU6ITEsT3B0aW9uczohMSxPdmVyVGV4dDohMSxSZXF1ZXN0OiExLFNjcm9sbGVyOiExLFNsaWNrOiExLFNsaWRlcjohMSxTb3J0YWJsZXM6ITEsU3Bpbm5lcjohMSxTd2lmZjohMSxUaXBzOiExLFR5cGU6ITEsdHlwZU9mOiExLFVSSTohMSxXaW5kb3c6ITF9LHksej17X19maWxlbmFtZTohMSxfX2Rpcm5hbWU6ITEsQnVmZmVyOiExLGNvbnNvbGU6ITEsZXhwb3J0czohMSxHTE9CQUw6ITEsZ2xvYmFsOiExLG1vZHVsZTohMSxwcm9jZXNzOiExLHJlcXVpcmU6ITEsc2V0VGltZW91dDohMSxjbGVhclRpbWVvdXQ6ITEsc2V0SW50ZXJ2YWw6ITEsY2xlYXJJbnRlcnZhbDohMX0sQSxCLEMsRCxFLEY9eyQ6ITEsJCQ6ITEsJEE6ITEsJEY6ITEsJEg6ITEsJFI6ITEsJGJyZWFrOiExLCRjb250aW51ZTohMSwkdzohMSxBYnN0cmFjdDohMSxBamF4OiExLENsYXNzOiExLEVudW1lcmFibGU6ITEsRWxlbWVudDohMSxFdmVudDohMSxGaWVsZDohMSxGb3JtOiExLEhhc2g6ITEsSW5zZXJ0aW9uOiExLE9iamVjdFJhbmdlOiExLFBlcmlvZGljYWxFeGVjdXRlcjohMSxQb3NpdGlvbjohMSxQcm90b3R5cGU6ITEsU2VsZWN0b3I6ITEsVGVtcGxhdGU6ITEsVG9nZ2xlOiExLFRyeTohMSxBdXRvY29tcGxldGVyOiExLEJ1aWxkZXI6ITEsQ29udHJvbDohMSxEcmFnZ2FibGU6ITEsRHJhZ2dhYmxlczohMSxEcm9wcGFibGVzOiExLEVmZmVjdDohMSxTb3J0YWJsZTohMSxTb3J0YWJsZU9ic2VydmVyOiExLFNvdW5kOiExLFNjcmlwdGFjdWxvdXM6ITF9LEc9e2RlZmluZUNsYXNzOiExLGRlc2VyaWFsaXplOiExLGdjOiExLGhlbHA6ITEsaW1wb3J0UGFja2FnZTohMSxqYXZhOiExLGxvYWQ6ITEsbG9hZENsYXNzOiExLHByaW50OiExLHF1aXQ6ITEscmVhZEZpbGU6ITEscmVhZFVybDohMSxydW5Db21tYW5kOiExLHNlYWw6ITEsc2VyaWFsaXplOiExLHNwYXduOiExLHN5bmM6ITEsdG9pbnQzMjohMSx2ZXJzaW9uOiExfSxILEksSj17QXJyYXk6ITEsQm9vbGVhbjohMSxEYXRlOiExLGRlY29kZVVSSTohMSxkZWNvZGVVUklDb21wb25lbnQ6ITEsZW5jb2RlVVJJOiExLGVuY29kZVVSSUNvbXBvbmVudDohMSxFcnJvcjohMSxldmFsOiExLEV2YWxFcnJvcjohMSxGdW5jdGlvbjohMSxoYXNPd25Qcm9wZXJ0eTohMSxpc0Zpbml0ZTohMSxpc05hTjohMSxKU09OOiExLE1hdGg6ITEsTnVtYmVyOiExLE9iamVjdDohMSxwYXJzZUludDohMSxwYXJzZUZsb2F0OiExLFJhbmdlRXJyb3I6ITEsUmVmZXJlbmNlRXJyb3I6ITEsUmVnRXhwOiExLFN0cmluZzohMSxTeW50YXhFcnJvcjohMSxUeXBlRXJyb3I6ITEsVVJJRXJyb3I6ITF9LEs9e2VzY2FwZTohMSx1bmVzY2FwZTohMX0sTD17RTohMCxMTjI6ITAsTE4xMDohMCxMT0cyRTohMCxMT0cxMEU6ITAsTUFYX1ZBTFVFOiEwLE1JTl9WQUxVRTohMCxORUdBVElWRV9JTkZJTklUWTohMCxQSTohMCxQT1NJVElWRV9JTkZJTklUWTohMCxTUVJUMV8yOiEwLFNRUlQyOiEwfSxNLE49e30sTyxQLFEsUixTLFQ9e0FjdGl2ZVhPYmplY3Q6ITAsRW51bWVyYXRvcjohMCxHZXRPYmplY3Q6ITAsU2NyaXB0RW5naW5lOiEwLFNjcmlwdEVuZ2luZUJ1aWxkVmVyc2lvbjohMCxTY3JpcHRFbmdpbmVNYWpvclZlcnNpb246ITAsU2NyaXB0RW5naW5lTWlub3JWZXJzaW9uOiEwLFZCQXJyYXk6ITAsV1NIOiEwLFdTY3JpcHQ6ITAsWERvbWFpblJlcXVlc3Q6ITB9LFUsVixXLFgsWSxaLCQsXyxhYjsoZnVuY3Rpb24oKXtVPS9AY2N8PFwvP3xzY3JpcHR8XF1ccypcXXw8XHMqIXwmbHQvaSxWPS9bXHUwMDAwLVx1MDAxZlx1MDA3Zi1cdTAwOWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vLFc9L15ccyooWygpe31cWy4sOjsnIn5cP1xdI0BdfD09Pz0/fFwvKFwqKGpzaGludHxqc2xpbnR8bWVtYmVycz98Z2xvYmFsKT98PXxcLyk/fFwqW1wvPV0/fFwrKD86PXxcKyspP3wtKD86PXwtKyk/fCU9P3wmWyY9XT98XHxbfD1dP3w+Pj8+Pz0/fDwoW1wvPSFdfFwhKFxbfC0tKT98PD0/KT98XF49P3xcIT0/PT98W2EtekEtWl8kXVthLXpBLVowLTlfJF0qfFswLTldKyhbeFhdWzAtOWEtZkEtRl0rfFwuWzAtOV0qKT8oW2VFXVsrXC1dP1swLTldKyk/KS8sWD0vW1x1MDAwMC1cdTAwMWYmPCJcL1xcXHUwMDdmLVx1MDA5Zlx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUyMDI4LVx1MjAyZlx1MjA2MC1cdTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS8sWT0vW1x1MDAwMC1cdTAwMWYmPCJcL1xcXHUwMDdmLVx1MDA5Zlx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUyMDI4LVx1MjAyZlx1MjA2MC1cdTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS9nLFo9L1wqXC98XC9cKi8sJD0vXihbYS16QS1aXyRdW2EtekEtWjAtOV8kXSopJC8sXz0vXig/OmphdmFzY3JpcHR8anNjcmlwdHxlY21hc2NyaXB0fHZic2NyaXB0fG1vY2hhfGxpdmVzY3JpcHQpXHMqOi9pLGFiPS9eXHMqXC9cKlxzKmZhbGxzXHN0aHJvdWdoXHMqXCpcL1xzKiQvfSkoKSx0eXBlb2YgQXJyYXkuaXNBcnJheSE9ImZ1bmN0aW9uIiYmKEFycmF5LmlzQXJyYXk9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoYSk9PT0iW29iamVjdCBBcnJheV0ifSksdHlwZW9mIE9iamVjdC5jcmVhdGUhPSJmdW5jdGlvbiImJihPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGEpe3JldHVybiBiYi5wcm90b3R5cGU9YSxuZXcgYmJ9KSx0eXBlb2YgT2JqZWN0LmtleXMhPSJmdW5jdGlvbiImJihPYmplY3Qua2V5cz1mdW5jdGlvbihhKXt2YXIgYj1bXSxjO2ZvcihjIGluIGEpY2IoYSxjKSYmYi5wdXNoKGMpO3JldHVybiBifSksdHlwZW9mIFN0cmluZy5wcm90b3R5cGUuZW50aXR5aWZ5IT0iZnVuY3Rpb24iJiYoU3RyaW5nLnByb3RvdHlwZS5lbnRpdHlpZnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9KSx0eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5pc0FscGhhIT0iZnVuY3Rpb24iJiYoU3RyaW5nLnByb3RvdHlwZS5pc0FscGhhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM+PSJhIiYmdGhpczw9Inrvv78ifHx0aGlzPj0iQSImJnRoaXM8PSJa77+/In0pLHR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmlzRGlnaXQhPSJmdW5jdGlvbiImJihTdHJpbmcucHJvdG90eXBlLmlzRGlnaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz49IjAiJiZ0aGlzPD0iOSJ9KSx0eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5zdXBwbGFudCE9ImZ1bmN0aW9uIiYmKFN0cmluZy5wcm90b3R5cGUuc3VwcGxhbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmVwbGFjZSgvXHsoW157fV0qKVx9L2csZnVuY3Rpb24oYixjKXt2YXIgZD1hW2NdO3JldHVybiB0eXBlb2YgZD09InN0cmluZyJ8fHR5cGVvZiBkPT0ibnVtYmVyIj9kOmJ9KX0pLHR5cGVvZiBTdHJpbmcucHJvdG90eXBlLm5hbWUhPSJmdW5jdGlvbiImJihTdHJpbmcucHJvdG90eXBlLm5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gJC50ZXN0KHRoaXMpP3RoaXM6WC50ZXN0KHRoaXMpPyciJyt0aGlzLnJlcGxhY2UoWSxmdW5jdGlvbihhKXt2YXIgYj1qW2FdO3JldHVybiBiP2I6IlxcdSIrKCIwMDAwIithLmNoYXJDb2RlQXQoKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pKyciJzonIicrdGhpcysnIid9KTt2YXIgbWI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKCl7dmFyIGEsYztyZXR1cm4gZD49dC5sZW5ndGg/ITE6KGI9MSxlPXRbZF0sZCs9MSxCLnNtYXJ0dGFicz9hPWUuc2VhcmNoKC8gXHQvKTphPWUuc2VhcmNoKC8gXHR8XHQgLyksYT49MCYmamIoIk1peGVkIHNwYWNlcyBhbmQgdGFicy4iLGQsYSsxKSxlPWUucmVwbGFjZSgvXHQvZyxPKSxhPWUuc2VhcmNoKFYpLGE+PTAmJmpiKCJVbnNhZmUgY2hhcmFjdGVyLiIsZCxhKSxCLm1heGxlbiYmQi5tYXhsZW48ZS5sZW5ndGgmJmpiKCJMaW5lIHRvbyBsb25nLiIsZCxlLmxlbmd0aCksYz1CLnRyYWlsaW5nJiZlLm1hdGNoKC9eKC4qPylccyskLyksYyYmIS9eXHMrJC8udGVzdChlKSYmamIoIlRyYWlsaW5nIHdoaXRlc3BhY2UuIixkLGNbMV0ubGVuZ3RoKzEpLCEwKX1mdW5jdGlvbiBnKGEsZSl7dmFyIGYsZztyZXR1cm4gYT09PSIoY29sb3IpInx8YT09PSIocmFuZ2UpIj9nPXt0eXBlOmF9OmE9PT0iKHB1bmN0dWF0b3IpInx8YT09PSIoaWRlbnRpZmllcikiJiZjYihOLGUpP2c9TltlXXx8TlsiKGVycm9yKSJdOmc9TlthXSxnPU9iamVjdC5jcmVhdGUoZyksKGE9PT0iKHN0cmluZykifHxhPT09IihyYW5nZSkiKSYmIUIuc2NyaXB0dXJsJiZfLnRlc3QoZSkmJmpiKCJTY3JpcHQgVVJMLiIsZCxjKSxhPT09IihpZGVudGlmaWVyKSImJihnLmlkZW50aWZpZXI9ITAsZT09PSJfX3Byb3RvX18iJiYhQi5wcm90bz9qYigiVGhlICd7YX0nIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQuIixkLGMsZSk6ZT09PSJfX2l0ZXJhdG9yX18iJiYhQi5pdGVyYXRvcj9qYigiJ3thfScgaXMgb25seSBhdmFpbGFibGUgaW4gSmF2YVNjcmlwdCAxLjcuIixkLGMsZSk6Qi5ub21lbiYmKGUuY2hhckF0KDApPT09Il8ifHxlLmNoYXJBdChlLmxlbmd0aC0xKT09PSJfIikmJighQi5ub2RlfHxQLmlkPT09Ii4ifHxlIT09Il9fZGlybmFtZSImJmUhPT0iX19maWxlbmFtZSIpJiZqYigiVW5leHBlY3RlZCB7YX0gaW4gJ3tifScuIixkLGMsImRhbmdsaW5nICdfJyIsZSkpLGcudmFsdWU9ZSxnLmxpbmU9ZCxnLmNoYXJhY3Rlcj1iLGcuZnJvbT1jLGY9Zy5pZCxmIT09IihlbmRsaW5lKSImJihEPWYmJigiKCw9OlshJnw/e307Ii5pbmRleE9mKGYuY2hhckF0KGYubGVuZ3RoLTEpKT49MHx8Zj09PSJyZXR1cm4ifHxmPT09ImNhc2UiKSksZ312YXIgYixjLGQsZTtyZXR1cm57aW5pdDpmdW5jdGlvbihhKXt0eXBlb2YgYT09InN0cmluZyI/dD1hLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9cci9nLCJcbiIpLnNwbGl0KCJcbiIpOnQ9YSx0WzBdJiZ0WzBdLnN1YnN0cigwLDIpPT09IiMhIiYmKHRbMF09IiIpLGQ9MCxmKCksYz0xfSxyYW5nZTpmdW5jdGlvbihhLGYpe3ZhciBoLGk9IiI7Yz1iLGUuY2hhckF0KDApIT09YSYmbGIoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLGQsYixhLGUuY2hhckF0KDApKTtmb3IoOzspe2U9ZS5zbGljZSgxKSxiKz0xLGg9ZS5jaGFyQXQoMCk7c3dpdGNoKGgpe2Nhc2UiIjpsYigiTWlzc2luZyAne2F9Jy4iLGQsYixoKTticmVhaztjYXNlIGY6cmV0dXJuIGU9ZS5zbGljZSgxKSxiKz0xLGcoIihyYW5nZSkiLGkpO2Nhc2UiXFwiOmpiKCJVbmV4cGVjdGVkICd7YX0nLiIsZCxiLGgpfWkrPWh9fSx0b2tlbjpmdW5jdGlvbigpe2Z1bmN0aW9uIHYoYSl7dmFyIGQ9YS5leGVjKGUpLGY7aWYoZClyZXR1cm4gbj1kWzBdLmxlbmd0aCxmPWRbMV0saD1mLmNoYXJBdCgwKSxlPWUuc3Vic3RyKG4pLGM9YituLWYubGVuZ3RoLGIrPW4sZn1mdW5jdGlvbiB3KGEpe2Z1bmN0aW9uIGwoYSl7dmFyIGM9cGFyc2VJbnQoZS5zdWJzdHIoaSsxLGEpLDE2KTtpKz1hLGM+PTMyJiZjPD0xMjYmJmMhPT0zNCYmYyE9PTkyJiZjIT09MzkmJmpiKCJVbm5lY2Vzc2FyeSBlc2NhcGVtZW50LiIsZCxiKSxiKz1hLGg9U3RyaW5nLmZyb21DaGFyQ29kZShjKX12YXIgaCxpLGo9IiIsaz0hMTtyJiZhIT09JyInJiZqYigiU3RyaW5ncyBtdXN0IHVzZSBkb3VibGVxdW90ZS4iLGQsYiksaT0wO2E6Zm9yKDs7KXt3aGlsZShpPj1lLmxlbmd0aCl7aT0wO3ZhciBtPWQsbj1jO2lmKCFmKCkpe2xiKCJVbmNsb3NlZCBzdHJpbmcuIixtLG4pO2JyZWFrIGF9az9rPSExOmpiKCJVbmNsb3NlZCBzdHJpbmcuIixtLG4pfWg9ZS5jaGFyQXQoaSk7aWYoaD09PWEpcmV0dXJuIGIrPTEsZT1lLnN1YnN0cihpKzEpLGcoIihzdHJpbmcpIixqLGEpO2lmKGg8IiAiKXtpZihoPT09IlxuInx8aD09PSJcciIpYnJlYWs7amIoIkNvbnRyb2wgY2hhcmFjdGVyIGluIHN0cmluZzoge2F9LiIsZCxiK2ksZS5zbGljZSgwLGkpKX1lbHNlIGlmKGg9PT0iXFwiKXtpKz0xLGIrPTEsaD1lLmNoYXJBdChpKSx1PWUuY2hhckF0KGkrMSk7c3dpdGNoKGgpe2Nhc2UiXFwiOmNhc2UnIic6Y2FzZSIvIjpicmVhaztjYXNlIiciOnImJmpiKCJBdm9pZCBcXCcuIixkLGIpO2JyZWFrO2Nhc2UiYiI6aD0iXGIiO2JyZWFrO2Nhc2UiZiI6aD0iXGYiO2JyZWFrO2Nhc2UibiI6aD0iXG4iO2JyZWFrO2Nhc2UiciI6aD0iXHIiO2JyZWFrO2Nhc2UidCI6aD0iCSI7YnJlYWs7Y2FzZSIwIjpoPSJcMCIsdT49MCYmdTw9NyYmTVsidXNlIHN0cmljdCJdJiZqYigiT2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLiIsZCxiKTticmVhaztjYXNlInUiOmwoNCk7YnJlYWs7Y2FzZSJ2IjpyJiZqYigiQXZvaWQgXFx2LiIsZCxiKSxoPSILIjticmVhaztjYXNlIngiOnImJmpiKCJBdm9pZCBcXHgtLiIsZCxiKSxsKDIpO2JyZWFrO2Nhc2UiIjprPSEwO2lmKEIubXVsdGlzdHIpe3ImJmpiKCJBdm9pZCBFT0wgZXNjYXBlbWVudC4iLGQsYiksaD0iIixiLT0xO2JyZWFrfWpiKCJCYWQgZXNjYXBlbWVudCBvZiBFT0wuIFVzZSBvcHRpb24gbXVsdGlzdHIgaWYgbmVlZGVkLiIsZCxiKTticmVhaztkZWZhdWx0OmpiKCJCYWQgZXNjYXBlbWVudC4iLGQsYil9fWorPWgsYis9MSxpKz0xfX12YXIgYSxoLGksaixrLGwsbSxuLG8scCxxLHMsdCx1O2Zvcig7Oyl7aWYoIWUpcmV0dXJuIGcoZigpPyIoZW5kbGluZSkiOiIoZW5kKSIsIiIpO3E9dihXKTtpZighcSl7cT0iIixoPSIiO3doaWxlKGUmJmU8IiEiKWU9ZS5zdWJzdHIoMSk7ZSYmKGxiKCJVbmV4cGVjdGVkICd7YX0nLiIsZCxiLGUuc3Vic3RyKDAsMSkpLGU9IiIpfWVsc2V7aWYoaC5pc0FscGhhKCl8fGg9PT0iXyJ8fGg9PT0iJCIpcmV0dXJuIGcoIihpZGVudGlmaWVyKSIscSk7aWYoaC5pc0RpZ2l0KCkpcmV0dXJuIGlzRmluaXRlKE51bWJlcihxKSl8fGpiKCJCYWQgbnVtYmVyICd7YX0nLiIsZCxiLHEpLGUuc3Vic3RyKDAsMSkuaXNBbHBoYSgpJiZqYigiTWlzc2luZyBzcGFjZSBhZnRlciAne2F9Jy4iLGQsYixxKSxoPT09IjAiJiYoaj1xLnN1YnN0cigxLDEpLGouaXNEaWdpdCgpP1AuaWQhPT0iLiImJmpiKCJEb24ndCB1c2UgZXh0cmEgbGVhZGluZyB6ZXJvcyAne2F9Jy4iLGQsYixxKTpyJiYoaj09PSJ4Inx8aj09PSJYIikmJmpiKCJBdm9pZCAweC0uICd7YX0nLiIsZCxiLHEpKSxxLnN1YnN0cihxLmxlbmd0aC0xKT09PSIuIiYmamIoIkEgdHJhaWxpbmcgZGVjaW1hbCBwb2ludCBjYW4gYmUgY29uZnVzZWQgd2l0aCBhIGRvdCAne2F9Jy4iLGQsYixxKSxnKCIobnVtYmVyKSIscSk7c3dpdGNoKHEpe2Nhc2UnIic6Y2FzZSInIjpyZXR1cm4gdyhxKTtjYXNlIi8vIjplPSIiLFAuY29tbWVudD0hMDticmVhaztjYXNlIi8qIjpmb3IoOzspe209ZS5zZWFyY2goWik7aWYobT49MClicmVhaztmKCl8fGxiKCJVbmNsb3NlZCBjb21tZW50LiIsZCxiKX1iKz1tKzIsZS5zdWJzdHIobSwxKT09PSIvIiYmbGIoIk5lc3RlZCBjb21tZW50LiIsZCxiKSxlPWUuc3Vic3RyKG0rMiksUC5jb21tZW50PSEwO2JyZWFrO2Nhc2UiLyptZW1iZXJzIjpjYXNlIi8qbWVtYmVyIjpjYXNlIi8qanNoaW50IjpjYXNlIi8qanNsaW50IjpjYXNlIi8qZ2xvYmFsIjpjYXNlIiovIjpyZXR1cm57dmFsdWU6cSx0eXBlOiJzcGVjaWFsIixsaW5lOmQsY2hhcmFjdGVyOmIsZnJvbTpjfTtjYXNlIiI6YnJlYWs7Y2FzZSIvIjpQLmlkPT09Ii89IiYmbGIoIkEgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwgY2FuIGJlIGNvbmZ1c2VkIHdpdGggJy89Jy4iLGQsYyk7aWYoRCl7az0wLGk9MCxuPTA7Zm9yKDs7KXthPSEwLGg9ZS5jaGFyQXQobiksbis9MTtzd2l0Y2goaCl7Y2FzZSIiOnJldHVybiBsYigiVW5jbG9zZWQgcmVndWxhciBleHByZXNzaW9uLiIsZCxjKSxnYigiU3RvcHBpbmcuIixkLGMpO2Nhc2UiLyI6az4wJiZqYigie2F9IHVudGVybWluYXRlZCByZWd1bGFyIGV4cHJlc3Npb24gZ3JvdXAocykuIixkLGMrbixrKSxoPWUuc3Vic3RyKDAsbi0xKSxwPXtnOiEwLGk6ITAsbTohMH07d2hpbGUocFtlLmNoYXJBdChuKV09PT0hMClwW2UuY2hhckF0KG4pXT0hMSxuKz0xO3JldHVybiBiKz1uLGU9ZS5zdWJzdHIobikscD1lLmNoYXJBdCgwKSwocD09PSIvInx8cD09PSIqIikmJmxiKCJDb25mdXNpbmcgcmVndWxhciBleHByZXNzaW9uLiIsZCxjKSxnKCIocmVnZXhwKSIsaCk7Y2FzZSJcXCI6aD1lLmNoYXJBdChuKSxoPCIgIj9qYigiVW5leHBlY3RlZCBjb250cm9sIGNoYXJhY3RlciBpbiByZWd1bGFyIGV4cHJlc3Npb24uIixkLGMrbik6aD09PSI8IiYmamIoIlVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXIgJ3thfScgaW4gcmVndWxhciBleHByZXNzaW9uLiIsZCxjK24saCksbis9MTticmVhaztjYXNlIigiOmsrPTEsYT0hMTtpZihlLmNoYXJBdChuKT09PSI/Iil7bis9MTtzd2l0Y2goZS5jaGFyQXQobikpe2Nhc2UiOiI6Y2FzZSI9IjpjYXNlIiEiOm4rPTE7YnJlYWs7ZGVmYXVsdDpqYigiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsZCxjK24sIjoiLGUuY2hhckF0KG4pKX19ZWxzZSBpKz0xO2JyZWFrO2Nhc2UifCI6YT0hMTticmVhaztjYXNlIikiOms9PT0wP2piKCJVbmVzY2FwZWQgJ3thfScuIixkLGMrbiwiKSIpOmstPTE7YnJlYWs7Y2FzZSIgIjpwPTE7d2hpbGUoZS5jaGFyQXQobik9PT0iICIpbis9MSxwKz0xO3A+MSYmamIoIlNwYWNlcyBhcmUgaGFyZCB0byBjb3VudC4gVXNlIHt7YX19LiIsZCxjK24scCk7YnJlYWs7Y2FzZSJbIjpoPWUuY2hhckF0KG4pLGg9PT0iXiImJihuKz0xLEIucmVnZXhwP2piKCJJbnNlY3VyZSAne2F9Jy4iLGQsYytuLGgpOmUuY2hhckF0KG4pPT09Il0iJiZsYigiVW5lc2NhcGVkICd7YX0nLiIsZCxjK24sIl4iKSksaD09PSJdIiYmamIoIkVtcHR5IGNsYXNzLiIsZCxjK24tMSkscz0hMSx0PSExO2E6ZG97aD1lLmNoYXJBdChuKSxuKz0xO3N3aXRjaChoKXtjYXNlIlsiOmNhc2UiXiI6amIoIlVuZXNjYXBlZCAne2F9Jy4iLGQsYytuLGgpLHQ/dD0hMTpzPSEwO2JyZWFrO2Nhc2UiLSI6cyYmIXQ/KHM9ITEsdD0hMCk6dD90PSExOmUuY2hhckF0KG4pPT09Il0iP3Q9ITA6KEIucmVnZXhkYXNoIT09KG49PT0yfHxuPT09MyYmZS5jaGFyQXQoMSk9PT0iXiIpJiZqYigiVW5lc2NhcGVkICd7YX0nLiIsZCxjK24tMSwiLSIpLHM9ITApO2JyZWFrO2Nhc2UiXSI6dCYmIUIucmVnZXhkYXNoJiZqYigiVW5lc2NhcGVkICd7YX0nLiIsZCxjK24tMSwiLSIpO2JyZWFrIGE7Y2FzZSJcXCI6aD1lLmNoYXJBdChuKSxoPCIgIj9qYigiVW5leHBlY3RlZCBjb250cm9sIGNoYXJhY3RlciBpbiByZWd1bGFyIGV4cHJlc3Npb24uIixkLGMrbik6aD09PSI8IiYmamIoIlVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXIgJ3thfScgaW4gcmVndWxhciBleHByZXNzaW9uLiIsZCxjK24saCksbis9MSwvW3dzZF0vaS50ZXN0KGgpPyh0JiYoamIoIlVuZXNjYXBlZCAne2F9Jy4iLGQsYytuLCItIiksdD0hMSkscz0hMSk6dD90PSExOnM9ITA7YnJlYWs7Y2FzZSIvIjpqYigiVW5lc2NhcGVkICd7YX0nLiIsZCxjK24tMSwiLyIpLHQ/dD0hMTpzPSEwO2JyZWFrO2Nhc2UiPCI6dD90PSExOnM9ITA7YnJlYWs7ZGVmYXVsdDp0P3Q9ITE6cz0hMH19d2hpbGUoaCk7YnJlYWs7Y2FzZSIuIjpCLnJlZ2V4cCYmamIoIkluc2VjdXJlICd7YX0nLiIsZCxjK24saCk7YnJlYWs7Y2FzZSJdIjpjYXNlIj8iOmNhc2UieyI6Y2FzZSJ9IjpjYXNlIisiOmNhc2UiKiI6amIoIlVuZXNjYXBlZCAne2F9Jy4iLGQsYytuLGgpfWlmKGEpc3dpdGNoKGUuY2hhckF0KG4pKXtjYXNlIj8iOmNhc2UiKyI6Y2FzZSIqIjpuKz0xLGUuY2hhckF0KG4pPT09Ij8iJiYobis9MSk7YnJlYWs7Y2FzZSJ7IjpuKz0xLGg9ZS5jaGFyQXQobiksKGg8IjAifHxoPiI5IikmJmpiKCJFeHBlY3RlZCBhIG51bWJlciBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIixkLGMrbixoKSxuKz0xLG89K2g7Zm9yKDs7KXtoPWUuY2hhckF0KG4pO2lmKGg8IjAifHxoPiI5IilicmVhaztuKz0xLG89K2grbyoxMH1sPW87aWYoaD09PSIsIil7bis9MSxsPUluZmluaXR5LGg9ZS5jaGFyQXQobik7aWYoaD49IjAiJiZoPD0iOSIpe24rPTEsbD0raDtmb3IoOzspe2g9ZS5jaGFyQXQobik7aWYoaDwiMCJ8fGg+IjkiKWJyZWFrO24rPTEsbD0raCtsKjEwfX19ZS5jaGFyQXQobikhPT0ifSI/amIoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLGQsYytuLCJ9IixoKTpuKz0xLGUuY2hhckF0KG4pPT09Ij8iJiYobis9MSksbz5sJiZqYigiJ3thfScgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gJ3tifScuIixkLGMrbixvLGwpfX1yZXR1cm4gaD1lLnN1YnN0cigwLG4tMSksYis9bixlPWUuc3Vic3RyKG4pLGcoIihyZWdleHApIixoKX1yZXR1cm4gZygiKHB1bmN0dWF0b3IpIixxKTtjYXNlIiMiOnJldHVybiBnKCIocHVuY3R1YXRvcikiLHEpO2RlZmF1bHQ6cmV0dXJuIGcoIihwdW5jdHVhdG9yKSIscSl9fX19fX0oKTtHYigiKG51bWJlcikiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxHYigiKHN0cmluZykiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxOWyIoaWRlbnRpZmllcikiXT17dHlwZToiKGlkZW50aWZpZXIpIixsYnA6MCxpZGVudGlmaWVyOiEwLG51ZDpmdW5jdGlvbigpe3ZhciBiPXRoaXMudmFsdWUsYz1IW2JdLGQ7dHlwZW9mIGM9PSJmdW5jdGlvbiI/Yz11bmRlZmluZWQ6dHlwZW9mIGM9PSJib29sZWFuIiYmKGQ9ayxrPW1bMF0sbmIoYiwidmFyIiksYz1rLGs9ZCk7aWYoaz09PWMpc3dpdGNoKGtbYl0pe2Nhc2UidW51c2VkIjprW2JdPSJ2YXIiO2JyZWFrO2Nhc2UidW5jdGlvbiI6a1tiXT0iZnVuY3Rpb24iLHRoaXNbImZ1bmN0aW9uIl09ITA7YnJlYWs7Y2FzZSJmdW5jdGlvbiI6dGhpc1siZnVuY3Rpb24iXT0hMDticmVhaztjYXNlImxhYmVsIjppYigiJ3thfScgaXMgYSBzdGF0ZW1lbnQgbGFiZWwuIixQLGIpfWVsc2UgaWYoa1siKGdsb2JhbCkiXSlCLnVuZGVmJiZ0eXBlb2YgQ1tiXSE9ImJvb2xlYW4iJiYoYSE9PSJ0eXBlb2YiJiZhIT09ImRlbGV0ZSJ8fHkmJih5LnZhbHVlPT09Ii4ifHx5LnZhbHVlPT09IlsiKSkmJmhiKGssIid7YX0nIGlzIG5vdCBkZWZpbmVkLiIsUCxiKSxZYihQKTtlbHNlIHN3aXRjaChrW2JdKXtjYXNlImNsb3N1cmUiOmNhc2UiZnVuY3Rpb24iOmNhc2UidmFyIjpjYXNlInVudXNlZCI6aWIoIid7YX0nIHVzZWQgb3V0IG9mIHNjb3BlLiIsUCxiKTticmVhaztjYXNlImxhYmVsIjppYigiJ3thfScgaXMgYSBzdGF0ZW1lbnQgbGFiZWwuIixQLGIpO2JyZWFrO2Nhc2Uib3V0ZXIiOmNhc2UiZ2xvYmFsIjpicmVhaztkZWZhdWx0OmlmKGM9PT0hMClrW2JdPSEwO2Vsc2UgaWYoYz09PW51bGwpaWIoIid7YX0nIGlzIG5vdCBhbGxvd2VkLiIsUCxiKSxZYihQKTtlbHNlIGlmKHR5cGVvZiBjIT0ib2JqZWN0IilCLnVuZGVmJiYoYSE9PSJ0eXBlb2YiJiZhIT09ImRlbGV0ZSJ8fHkmJih5LnZhbHVlPT09Ii4ifHx5LnZhbHVlPT09IlsiKSkmJmhiKGssIid7YX0nIGlzIG5vdCBkZWZpbmVkLiIsUCxiKSxrW2JdPSEwLFliKFApO2Vsc2Ugc3dpdGNoKGNbYl0pe2Nhc2UiZnVuY3Rpb24iOmNhc2UidW5jdGlvbiI6dGhpc1siZnVuY3Rpb24iXT0hMCxjW2JdPSJjbG9zdXJlIixrW2JdPWNbIihnbG9iYWwpIl0/Imdsb2JhbCI6Im91dGVyIjticmVhaztjYXNlInZhciI6Y2FzZSJ1bnVzZWQiOmNbYl09ImNsb3N1cmUiLGtbYl09Y1siKGdsb2JhbCkiXT8iZ2xvYmFsIjoib3V0ZXIiO2JyZWFrO2Nhc2UiY2xvc3VyZSI6Y2FzZSJwYXJhbWV0ZXIiOmtbYl09Y1siKGdsb2JhbCkiXT8iZ2xvYmFsIjoib3V0ZXIiO2JyZWFrO2Nhc2UibGFiZWwiOmliKCIne2F9JyBpcyBhIHN0YXRlbWVudCBsYWJlbC4iLFAsYil9fXJldHVybiB0aGlzfSxsZWQ6ZnVuY3Rpb24oKXtrYigiRXhwZWN0ZWQgYW4gb3BlcmF0b3IgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIseSx5LnZhbHVlKX19LEdiKCIocmVnZXhwKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEJiKCIoZW5kbGluZSkiKSxCYigiKGJlZ2luKSIpLEJiKCIoZW5kKSIpLnJlYWNoPSEwLEJiKCI8LyIpLnJlYWNoPSEwLEJiKCI8ISIpLEJiKCI8IS0tIiksQmIoIi0tPiIpLEJiKCIoZXJyb3IpIikucmVhY2g9ITAsQmIoIn0iKS5yZWFjaD0hMCxCYigiKSIpLEJiKCJdIiksQmIoJyInKS5yZWFjaD0hMCxCYigiJyIpLnJlYWNoPSEwLEJiKCI7IiksQmIoIjoiKS5yZWFjaD0hMCxCYigiLCIpLEJiKCIjIiksQmIoIkAiKSxIYigiZWxzZSIpLEhiKCJjYXNlIikucmVhY2g9ITAsSGIoImNhdGNoIiksSGIoImRlZmF1bHQiKS5yZWFjaD0hMCxIYigiZmluYWxseSIpLEliKCJhcmd1bWVudHMiLGZ1bmN0aW9uKGEpe01bInVzZSBzdHJpY3QiXSYma1siKGdsb2JhbCkiXSYmaWIoIlN0cmljdCB2aW9sYXRpb24uIixhKX0pLEliKCJldmFsIiksSWIoImZhbHNlIiksSWIoIkluZmluaXR5IiksSWIoIk5hTiIpLEliKCJudWxsIiksSWIoInRoaXMiLGZ1bmN0aW9uKGEpe01bInVzZSBzdHJpY3QiXSYmIUIudmFsaWR0aGlzJiYoa1siKHN0YXRlbWVudCkiXSYma1siKG5hbWUpIl0uY2hhckF0KDApPiJaInx8a1siKGdsb2JhbCkiXSkmJmliKCJQb3NzaWJsZSBzdHJpY3QgdmlvbGF0aW9uLiIsYSl9KSxJYigidHJ1ZSIpLEliKCJ1bmRlZmluZWQiKSxNYigiPSIsImFzc2lnbiIsMjApLE1iKCIrPSIsImFzc2lnbmFkZCIsMjApLE1iKCItPSIsImFzc2lnbnN1YiIsMjApLE1iKCIqPSIsImFzc2lnbm11bHQiLDIwKSxNYigiLz0iLCJhc3NpZ25kaXYiLDIwKS5udWQ9ZnVuY3Rpb24oKXtrYigiQSByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbCBjYW4gYmUgY29uZnVzZWQgd2l0aCAnLz0nLiIpfSxNYigiJT0iLCJhc3NpZ25tb2QiLDIwKSxPYigiJj0iLCJhc3NpZ25iaXRhbmQiLDIwKSxPYigifD0iLCJhc3NpZ25iaXRvciIsMjApLE9iKCJePSIsImFzc2lnbmJpdHhvciIsMjApLE9iKCI8PD0iLCJhc3NpZ25zaGlmdGxlZnQiLDIwKSxPYigiPj49IiwiYXNzaWduc2hpZnRyaWdodCIsMjApLE9iKCI+Pj49IiwiYXNzaWduc2hpZnRyaWdodHVuc2lnbmVkIiwyMCksSmIoIj8iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubGVmdD1hLGIucmlnaHQ9cmIoMTApLHFiKCI6IiksYlsiZWxzZSJdPXJiKDEwKSxifSwzMCksSmIoInx8Iiwib3IiLDQwKSxKYigiJiYiLCJhbmQiLDUwKSxOYigifCIsImJpdG9yIiw3MCksTmIoIl4iLCJiaXR4b3IiLDgwKSxOYigiJiIsImJpdGFuZCIsOTApLEtiKCI9PSIsZnVuY3Rpb24oYSxiKXt2YXIgYz1CLmVxbnVsbCYmKGEudmFsdWU9PT0ibnVsbCJ8fGIudmFsdWU9PT0ibnVsbCIpO3JldHVybiFjJiZCLmVxZXFlcT9pYigiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsdGhpcywiPT09IiwiPT0iKTpMYihhKT9pYigiVXNlICd7YX0nIHRvIGNvbXBhcmUgd2l0aCAne2J9Jy4iLHRoaXMsIj09PSIsYS52YWx1ZSk6TGIoYikmJmliKCJVc2UgJ3thfScgdG8gY29tcGFyZSB3aXRoICd7Yn0nLiIsdGhpcywiPT09IixiLnZhbHVlKSx0aGlzfSksS2IoIj09PSIpLEtiKCIhPSIsZnVuY3Rpb24oYSxiKXt2YXIgYz1CLmVxbnVsbCYmKGEudmFsdWU9PT0ibnVsbCJ8fGIudmFsdWU9PT0ibnVsbCIpO3JldHVybiFjJiZCLmVxZXFlcT9pYigiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsdGhpcywiIT09IiwiIT0iKTpMYihhKT9pYigiVXNlICd7YX0nIHRvIGNvbXBhcmUgd2l0aCAne2J9Jy4iLHRoaXMsIiE9PSIsYS52YWx1ZSk6TGIoYikmJmliKCJVc2UgJ3thfScgdG8gY29tcGFyZSB3aXRoICd7Yn0nLiIsdGhpcywiIT09IixiLnZhbHVlKSx0aGlzfSksS2IoIiE9PSIpLEtiKCI8IiksS2IoIj4iKSxLYigiPD0iKSxLYigiPj0iKSxOYigiPDwiLCJzaGlmdGxlZnQiLDEyMCksTmIoIj4+Iiwic2hpZnRyaWdodCIsMTIwKSxOYigiPj4+Iiwic2hpZnRyaWdodHVuc2lnbmVkIiwxMjApLEpiKCJpbiIsImluIiwxMjApLEpiKCJpbnN0YW5jZW9mIiwiaW5zdGFuY2VvZiIsMTIwKSxKYigiKyIsZnVuY3Rpb24oYSxiKXt2YXIgYz1yYigxMzApO3JldHVybiBhJiZjJiZhLmlkPT09IihzdHJpbmcpIiYmYy5pZD09PSIoc3RyaW5nKSI/KGEudmFsdWUrPWMudmFsdWUsYS5jaGFyYWN0ZXI9Yy5jaGFyYWN0ZXIsIUIuc2NyaXB0dXJsJiZfLnRlc3QoYS52YWx1ZSkmJmliKCJKYXZhU2NyaXB0IFVSTC4iLGEpLGEpOihiLmxlZnQ9YSxiLnJpZ2h0PWMsYil9LDEzMCksRmIoIisiLCJudW0iKSxGYigiKysrIixmdW5jdGlvbigpe3JldHVybiBpYigiQ29uZnVzaW5nIHBsdXNlcy4iKSx0aGlzLnJpZ2h0PXJiKDE1MCksdGhpcy5hcml0eT0idW5hcnkiLHRoaXN9KSxKYigiKysrIixmdW5jdGlvbihhKXtyZXR1cm4gaWIoIkNvbmZ1c2luZyBwbHVzZXMuIiksdGhpcy5sZWZ0PWEsdGhpcy5yaWdodD1yYigxMzApLHRoaXN9LDEzMCksSmIoIi0iLCJzdWIiLDEzMCksRmIoIi0iLCJuZWciKSxGYigiLS0tIixmdW5jdGlvbigpe3JldHVybiBpYigiQ29uZnVzaW5nIG1pbnVzZXMuIiksdGhpcy5yaWdodD1yYigxNTApLHRoaXMuYXJpdHk9InVuYXJ5Iix0aGlzfSksSmIoIi0tLSIsZnVuY3Rpb24oYSl7cmV0dXJuIGliKCJDb25mdXNpbmcgbWludXNlcy4iKSx0aGlzLmxlZnQ9YSx0aGlzLnJpZ2h0PXJiKDEzMCksdGhpc30sMTMwKSxKYigiKiIsIm11bHQiLDE0MCksSmIoIi8iLCJkaXYiLDE0MCksSmIoIiUiLCJtb2QiLDE0MCksUGIoIisrIiwicG9zdGluYyIpLEZiKCIrKyIsInByZWluYyIpLE5bIisrIl0uZXhwcz0hMCxQYigiLS0iLCJwb3N0ZGVjIiksRmIoIi0tIiwicHJlZGVjIiksTlsiLS0iXS5leHBzPSEwLEZiKCJkZWxldGUiLGZ1bmN0aW9uKCl7dmFyIGE9cmIoMCk7cmV0dXJuKCFhfHxhLmlkIT09Ii4iJiZhLmlkIT09IlsiKSYmaWIoIlZhcmlhYmxlcyBzaG91bGQgbm90IGJlIGRlbGV0ZWQuIiksdGhpcy5maXJzdD1hLHRoaXN9KS5leHBzPSEwLEZiKCJ+IixmdW5jdGlvbigpe3JldHVybiBCLmJpdHdpc2UmJmliKCJVbmV4cGVjdGVkICd7YX0nLiIsdGhpcywifiIpLHJiKDE1MCksdGhpc30pLEZiKCIhIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpZ2h0PXJiKDE1MCksdGhpcy5hcml0eT0idW5hcnkiLGJbdGhpcy5yaWdodC5pZF09PT0hMCYmaWIoIkNvbmZ1c2luZyB1c2Ugb2YgJ3thfScuIix0aGlzLCIhIiksdGhpc30pLEZiKCJ0eXBlb2YiLCJ0eXBlb2YiKSxGYigibmV3IixmdW5jdGlvbigpe3ZhciBhPXJiKDE1NSksYjtpZihhJiZhLmlkIT09ImZ1bmN0aW9uIilpZihhLmlkZW50aWZpZXIpe2FbIm5ldyJdPSEwO3N3aXRjaChhLnZhbHVlKXtjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmNhc2UiQm9vbGVhbiI6Y2FzZSJNYXRoIjpjYXNlIkpTT04iOmliKCJEbyBub3QgdXNlIHthfSBhcyBhIGNvbnN0cnVjdG9yLiIsUCxhLnZhbHVlKTticmVhaztjYXNlIkZ1bmN0aW9uIjpCLmV2aWx8fGliKCJUaGUgRnVuY3Rpb24gY29uc3RydWN0b3IgaXMgZXZhbC4iKTticmVhaztjYXNlIkRhdGUiOmNhc2UiUmVnRXhwIjpicmVhaztkZWZhdWx0OmEuaWQhPT0iZnVuY3Rpb24iJiYoYj1hLnZhbHVlLnN1YnN0cigwLDEpLEIubmV3Y2FwJiYoYjwiQSJ8fGI+IloiKSYmaWIoIkEgY29uc3RydWN0b3IgbmFtZSBzaG91bGQgc3RhcnQgd2l0aCBhbiB1cHBlcmNhc2UgbGV0dGVyLiIsUCkpfX1lbHNlIGEuaWQhPT0iLiImJmEuaWQhPT0iWyImJmEuaWQhPT0iKCImJmliKCJCYWQgY29uc3RydWN0b3IuIixQKTtlbHNlIEIuc3VwZXJuZXd8fGliKCJXZWlyZCBjb25zdHJ1Y3Rpb24uIERlbGV0ZSAnbmV3Jy4iLHRoaXMpO3JldHVybiBzYihQLHkpLHkuaWQhPT0iKCImJiFCLnN1cGVybmV3JiZpYigiTWlzc2luZyAnKCknIGludm9raW5nIGEgY29uc3RydWN0b3IuIiksdGhpcy5maXJzdD1hLHRoaXN9KSxOWyJuZXciXS5leHBzPSEwLEZiKCJ2b2lkIikuZXhwcz0hMCxKYigiLiIsZnVuY3Rpb24oYSxiKXtzYihFLFApLHRiKCk7dmFyIGM9UmIoKTtyZXR1cm4gdHlwZW9mIGM9PSJzdHJpbmciJiZYYihjKSxiLmxlZnQ9YSxiLnJpZ2h0PWMsIWF8fGEudmFsdWUhPT0iYXJndW1lbnRzInx8YyE9PSJjYWxsZWUiJiZjIT09ImNhbGxlciI/IUIuZXZpbCYmYSYmYS52YWx1ZT09PSJkb2N1bWVudCImJihjPT09IndyaXRlInx8Yz09PSJ3cml0ZWxuIikmJmliKCJkb2N1bWVudC53cml0ZSBjYW4gYmUgYSBmb3JtIG9mIGV2YWwuIixhKTpCLm5vYXJnP2liKCJBdm9pZCBhcmd1bWVudHMue2F9LiIsYSxjKTpNWyJ1c2Ugc3RyaWN0Il0mJmtiKCJTdHJpY3QgdmlvbGF0aW9uLiIpLCFCLmV2aWwmJihjPT09ImV2YWwifHxjPT09ImV4ZWNTY3JpcHQiKSYmaWIoImV2YWwgaXMgZXZpbC4iKSxifSwxNjAsITApLEpiKCIoIixmdW5jdGlvbihhLGIpe0UuaWQhPT0ifSImJkUuaWQhPT0iKSImJnRiKEUsUCksdWIoKSxCLmltbWVkJiYhYS5pbW1lZCYmYS5pZD09PSJmdW5jdGlvbiImJmliKCJXcmFwIGFuIGltbWVkaWF0ZSBmdW5jdGlvbiBpbnZvY2F0aW9uIGluIHBhcmVudGhlc2VzIHRvIGFzc2lzdCB0aGUgcmVhZGVyIGluIHVuZGVyc3RhbmRpbmcgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24sIGFuZCBub3QgdGhlIGZ1bmN0aW9uIGl0c2VsZi4iKTt2YXIgYz0wLGQ9W107YSYmYS50eXBlPT09IihpZGVudGlmaWVyKSImJmEudmFsdWUubWF0Y2goL15bQS1aXShbQS1aMC05XyRdKlthLXpdW0EtWmEtejAtOV8kXSopPyQvKSYmYS52YWx1ZSE9PSJOdW1iZXIiJiZhLnZhbHVlIT09IlN0cmluZyImJmEudmFsdWUhPT0iQm9vbGVhbiImJmEudmFsdWUhPT0iRGF0ZSImJihhLnZhbHVlPT09Ik1hdGgiP2liKCJNYXRoIGlzIG5vdCBhIGZ1bmN0aW9uLiIsYSk6Qi5uZXdjYXAmJmliKCJNaXNzaW5nICduZXcnIHByZWZpeCB3aGVuIGludm9raW5nIGEgY29uc3RydWN0b3IuIixhKSk7aWYoeS5pZCE9PSIpIilmb3IoOzspe2RbZC5sZW5ndGhdPXJiKDEwKSxjKz0xO2lmKHkuaWQhPT0iLCIpYnJlYWs7emIoKX1yZXR1cm4gcWIoIikiKSx1YihFLFApLHR5cGVvZiBhPT0ib2JqZWN0IiYmKGEudmFsdWU9PT0icGFyc2VJbnQiJiZjPT09MSYmaWIoIk1pc3NpbmcgcmFkaXggcGFyYW1ldGVyLiIsYSksQi5ldmlsfHwoYS52YWx1ZT09PSJldmFsInx8YS52YWx1ZT09PSJGdW5jdGlvbiJ8fGEudmFsdWU9PT0iZXhlY1NjcmlwdCI/aWIoImV2YWwgaXMgZXZpbC4iLGEpOmRbMF0mJmRbMF0uaWQ9PT0iKHN0cmluZykiJiYoYS52YWx1ZT09PSJzZXRUaW1lb3V0Inx8YS52YWx1ZT09PSJzZXRJbnRlcnZhbCIpJiZpYigiSW1wbGllZCBldmFsIGlzIGV2aWwuIFBhc3MgYSBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgc3RyaW5nLiIsYSkpLCFhLmlkZW50aWZpZXImJmEuaWQhPT0iLiImJmEuaWQhPT0iWyImJmEuaWQhPT0iKCImJmEuaWQhPT0iJiYiJiZhLmlkIT09Inx8IiYmYS5pZCE9PSI/IiYmaWIoIkJhZCBpbnZvY2F0aW9uLiIsYSkpLGIubGVmdD1hLGJ9LDE1NSwhMCkuZXhwcz0hMCxGYigiKCIsZnVuY3Rpb24oKXt1YigpLHkuaWQ9PT0iZnVuY3Rpb24iJiYoeS5pbW1lZD0hMCk7dmFyIGE9cmIoMCk7cmV0dXJuIHFiKCIpIix0aGlzKSx1YihFLFApLEIuaW1tZWQmJmEuaWQ9PT0iZnVuY3Rpb24iJiYoeS5pZD09PSIoInx8eS5pZD09PSIuIiYmKHBiKCkudmFsdWU9PT0iY2FsbCJ8fHBiKCkudmFsdWU9PT0iYXBwbHkiKT9pYigiTW92ZSB0aGUgaW52b2NhdGlvbiBpbnRvIHRoZSBwYXJlbnMgdGhhdCBjb250YWluIHRoZSBmdW5jdGlvbi4iLHkpOmliKCJEbyBub3Qgd3JhcCBmdW5jdGlvbiBsaXRlcmFscyBpbiBwYXJlbnMgdW5sZXNzIHRoZXkgYXJlIHRvIGJlIGltbWVkaWF0ZWx5IGludm9rZWQuIix0aGlzKSksYX0pLEpiKCJbIixmdW5jdGlvbihhLGIpe3RiKEUsUCksdWIoKTt2YXIgYz1yYigwKSxkO3JldHVybiBjJiZjLnR5cGU9PT0iKHN0cmluZykiJiYoIUIuZXZpbCYmKGMudmFsdWU9PT0iZXZhbCJ8fGMudmFsdWU9PT0iZXhlY1NjcmlwdCIpJiZpYigiZXZhbCBpcyBldmlsLiIsYiksWGIoYy52YWx1ZSksIUIuc3ViJiYkLnRlc3QoYy52YWx1ZSkmJihkPU5bYy52YWx1ZV0sKCFkfHwhZC5yZXNlcnZlZCkmJmliKCJbJ3thfSddIGlzIGJldHRlciB3cml0dGVuIGluIGRvdCBub3RhdGlvbi4iLGMsYy52YWx1ZSkpKSxxYigiXSIsYiksdWIoRSxQKSxiLmxlZnQ9YSxiLnJpZ2h0PWMsYn0sMTYwLCEwKSxGYigiWyIsZnVuY3Rpb24oKXt2YXIgYT1QLmxpbmUhPT15LmxpbmU7dGhpcy5maXJzdD1bXSxhJiYocSs9Qi5pbmRlbnQseS5mcm9tPT09cStCLmluZGVudCYmKHErPUIuaW5kZW50KSk7d2hpbGUoeS5pZCE9PSIoZW5kKSIpe3doaWxlKHkuaWQ9PT0iLCIpaWIoIkV4dHJhIGNvbW1hLiIpLHFiKCIsIik7aWYoeS5pZD09PSJdIilicmVhazthJiZQLmxpbmUhPT15LmxpbmUmJnhiKCksdGhpcy5maXJzdC5wdXNoKHJiKDEwKSk7aWYoeS5pZCE9PSIsIilicmVhazt6YigpO2lmKHkuaWQ9PT0iXSImJiFCLmVzNSl7aWIoIkV4dHJhIGNvbW1hLiIsUCk7YnJlYWt9fXJldHVybiBhJiYocS09Qi5pbmRlbnQseGIoKSkscWIoIl0iLHRoaXMpLHRoaXN9LDE2MCksZnVuY3Rpb24oYSl7YS5udWQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBoKGEsYil7Z1thXSYmY2IoZyxhKT9pYigiRHVwbGljYXRlIG1lbWJlciAne2F9Jy4iLHksYyk6Z1thXT17fSxnW2FdLmJhc2ljPSEwLGdbYV0uYmFzaWNUb2tlbj1ifWZ1bmN0aW9uIGkoYSxiKXtnW2FdJiZjYihnLGEpPyhnW2FdLmJhc2ljfHxnW2FdLnNldHRlcikmJmliKCJEdXBsaWNhdGUgbWVtYmVyICd7YX0nLiIseSxjKTpnW2FdPXt9LGdbYV0uc2V0dGVyPSEwLGdbYV0uc2V0dGVyVG9rZW49Yn1mdW5jdGlvbiBqKGEpe2dbYV0mJmNiKGcsYSk/KGdbYV0uYmFzaWN8fGdbYV0uZ2V0dGVyKSYmaWIoIkR1cGxpY2F0ZSBtZW1iZXIgJ3thfScuIix5LGMpOmdbYV09e30sZ1thXS5nZXR0ZXI9ITAsZ1thXS5nZXR0ZXJUb2tlbj1QfXZhciBhLGIsYyxkLGUsZixnPXt9O2E9UC5saW5lIT09eS5saW5lLGEmJihxKz1CLmluZGVudCx5LmZyb209PT1xK0IuaW5kZW50JiYocSs9Qi5pbmRlbnQpKTtmb3IoOzspe2lmKHkuaWQ9PT0ifSIpYnJlYWs7YSYmeGIoKTtpZih5LnZhbHVlPT09ImdldCImJnBiKCkuaWQhPT0iOiIpcWIoImdldCIpLEIuZXM1fHxrYigiZ2V0L3NldCBhcmUgRVM1IGZlYXR1cmVzLiIpLGM9WmIoKSxjfHxrYigiTWlzc2luZyBwcm9wZXJ0eSBuYW1lLiIpLGooYyksZj15LHNiKFAseSksYj1fYigpLGU9YlsiKHBhcmFtcykiXSxlJiZpYigiVW5leHBlY3RlZCBwYXJhbWV0ZXIgJ3thfScgaW4gZ2V0IHtifSBmdW5jdGlvbi4iLGYsZVswXSxjKSxzYihQLHkpO2Vsc2UgaWYoeS52YWx1ZT09PSJzZXQiJiZwYigpLmlkIT09IjoiKXFiKCJzZXQiKSxCLmVzNXx8a2IoImdldC9zZXQgYXJlIEVTNSBmZWF0dXJlcy4iKSxjPVpiKCksY3x8a2IoIk1pc3NpbmcgcHJvcGVydHkgbmFtZS4iKSxpKGMseSksZj15LHNiKFAseSksYj1fYigpLGU9YlsiKHBhcmFtcykiXSwoIWV8fGUubGVuZ3RoIT09MSkmJmliKCJFeHBlY3RlZCBhIHNpbmdsZSBwYXJhbWV0ZXIgaW4gc2V0IHthfSBmdW5jdGlvbi4iLGYsYyk7ZWxzZXtjPVpiKCksaChjLHkpO2lmKHR5cGVvZiBjIT0ic3RyaW5nIilicmVhaztxYigiOiIpLHZiKFAseSkscmIoMTApfVhiKGMpO2lmKHkuaWQhPT0iLCIpYnJlYWs7emIoKSx5LmlkPT09IiwiP2liKCJFeHRyYSBjb21tYS4iLFApOnkuaWQ9PT0ifSImJiFCLmVzNSYmaWIoIkV4dHJhIGNvbW1hLiIsUCl9YSYmKHEtPUIuaW5kZW50LHhiKCkpLHFiKCJ9Iix0aGlzKTtpZihCLmVzNSlmb3IodmFyIGsgaW4gZyljYihnLGspJiZnW2tdLnNldHRlciYmIWdba10uZ2V0dGVyJiZpYigiU2V0dGVyIGlzIGRlZmluZWQgd2l0aG91dCBnZXR0ZXIuIixnW2tdLnNldHRlclRva2VuKTtyZXR1cm4gdGhpc30sYS5mdWQ9ZnVuY3Rpb24oKXtrYigiRXhwZWN0ZWQgdG8gc2VlIGEgc3RhdGVtZW50IGFuZCBpbnN0ZWFkIHNhdyBhIGJsb2NrLiIsUCl9fShCYigieyIpKSxSPWZ1bmN0aW9uKCl7dmFyIGE9Q2IoImNvbnN0IixmdW5jdGlvbihhKXt2YXIgYixjLGQ7dGhpcy5maXJzdD1bXTtmb3IoOzspe3ZiKFAseSksYj1SYigpLGtbYl09PT0iY29uc3QiJiZpYigiY29uc3QgJyIrYisiJyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIiksa1siKGdsb2JhbCkiXSYmQ1tiXT09PSExJiZpYigiUmVkZWZpbml0aW9uIG9mICd7YX0nLiIsUCxiKSxuYihiLCJjb25zdCIpO2lmKGEpYnJlYWs7Yz1QLHRoaXMuZmlyc3QucHVzaChQKSx5LmlkIT09Ij0iJiZpYigiY29uc3QgJ3thfScgaXMgaW5pdGlhbGl6ZWQgdG8gJ3VuZGVmaW5lZCcuIixQLGIpLHkuaWQ9PT0iPSImJih2YihQLHkpLHFiKCI9IiksdmIoUCx5KSx5LmlkPT09InVuZGVmaW5lZCImJmliKCJJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGluaXRpYWxpemUgJ3thfScgdG8gJ3VuZGVmaW5lZCcuIixQLGIpLHBiKDApLmlkPT09Ij0iJiZ5LmlkZW50aWZpZXImJmtiKCJDb25zdGFudCB7YX0gd2FzIG5vdCBkZWNsYXJlZCBjb3JyZWN0bHkuIix5LHkudmFsdWUpLGQ9cmIoMCksYy5maXJzdD1kKTtpZih5LmlkIT09IiwiKWJyZWFrO3piKCl9cmV0dXJuIHRoaXN9KTthLmV4cHM9ITB9O3ZhciBhYz1DYigidmFyIixmdW5jdGlvbihhKXt2YXIgYixjLGQ7a1siKG9uZXZhcikiXSYmQi5vbmV2YXI/aWIoIlRvbyBtYW55IHZhciBzdGF0ZW1lbnRzLiIpOmtbIihnbG9iYWwpIl18fChrWyIob25ldmFyKSJdPSEwKSx0aGlzLmZpcnN0PVtdO2Zvcig7Oyl7dmIoUCx5KSxiPVJiKCksQi5lc25leHQmJmtbYl09PT0iY29uc3QiJiZpYigiY29uc3QgJyIrYisiJyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIiksa1siKGdsb2JhbCkiXSYmQ1tiXT09PSExJiZpYigiUmVkZWZpbml0aW9uIG9mICd7YX0nLiIsUCxiKSxuYihiLCJ1bnVzZWQiKTtpZihhKWJyZWFrO2M9UCx0aGlzLmZpcnN0LnB1c2goUCkseS5pZD09PSI9IiYmKHZiKFAseSkscWIoIj0iKSx2YihQLHkpLHkuaWQ9PT0idW5kZWZpbmVkIiYmaWIoIkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW5pdGlhbGl6ZSAne2F9JyB0byAndW5kZWZpbmVkJy4iLFAsYikscGIoMCkuaWQ9PT0iPSImJnkuaWRlbnRpZmllciYma2IoIlZhcmlhYmxlIHthfSB3YXMgbm90IGRlY2xhcmVkIGNvcnJlY3RseS4iLHkseS52YWx1ZSksZD1yYigwKSxjLmZpcnN0PWQpO2lmKHkuaWQhPT0iLCIpYnJlYWs7emIoKX1yZXR1cm4gdGhpc30pO2FjLmV4cHM9ITAsRGIoImZ1bmN0aW9uIixmdW5jdGlvbigpe3AmJmliKCJGdW5jdGlvbiBkZWNsYXJhdGlvbnMgc2hvdWxkIG5vdCBiZSBwbGFjZWQgaW4gYmxvY2tzLiBVc2UgYSBmdW5jdGlvbiBleHByZXNzaW9uIG9yIG1vdmUgdGhlIHN0YXRlbWVudCB0byB0aGUgdG9wIG9mIHRoZSBvdXRlciBmdW5jdGlvbi4iLFApO3ZhciBhPVJiKCk7cmV0dXJuIEIuZXNuZXh0JiZrW2FdPT09ImNvbnN0IiYmaWIoImNvbnN0ICciK2ErIicgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpLHNiKFAseSksbmIoYSwidW5jdGlvbiIpLF9iKGEsITApLHkuaWQ9PT0iKCImJnkubGluZT09PVAubGluZSYma2IoIkZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhcmUgbm90IGludm9jYWJsZS4gV3JhcCB0aGUgd2hvbGUgZnVuY3Rpb24gaW52b2NhdGlvbiBpbiBwYXJlbnMuIiksdGhpc30pLEZiKCJmdW5jdGlvbiIsZnVuY3Rpb24oKXt2YXIgYT1RYigpO3JldHVybiBhP3NiKFAseSk6dmIoUCx5KSxfYihhKSwhQi5sb29wZnVuYyYma1siKGxvb3BhZ2UpIl0mJmliKCJEb24ndCBtYWtlIGZ1bmN0aW9ucyB3aXRoaW4gYSBsb29wLiIpLHRoaXN9KSxEYigiaWYiLGZ1bmN0aW9uKCl7dmFyIGE9eTtyZXR1cm4gcWIoIigiKSx2Yih0aGlzLGEpLHViKCkscmIoMjApLHkuaWQ9PT0iPSImJihCLmJvc3N8fGliKCJFeHBlY3RlZCBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYW5kIGluc3RlYWQgc2F3IGFuIGFzc2lnbm1lbnQuIikscWIoIj0iKSxyYigyMCkpLHFiKCIpIixhKSx1YihFLFApLFdiKCEwLCEwKSx5LmlkPT09ImVsc2UiJiYodmIoUCx5KSxxYigiZWxzZSIpLHkuaWQ9PT0iaWYifHx5LmlkPT09InN3aXRjaCI/VGIoITApOldiKCEwLCEwKSksdGhpc30pLERiKCJ0cnkiLGZ1bmN0aW9uKCl7dmFyIGEsYixjO1diKCExKSx5LmlkPT09ImNhdGNoIiYmKHFiKCJjYXRjaCIpLHZiKFAseSkscWIoIigiKSxjPUgsSD1PYmplY3QuY3JlYXRlKGMpLGI9eS52YWx1ZSx5LnR5cGUhPT0iKGlkZW50aWZpZXIpIj9pYigiRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIix5LGIpOm5iKGIsImV4Y2VwdGlvbiIpLHFiKCkscWIoIikiKSxXYighMSksYT0hMCxIPWMpO2lmKHkuaWQ9PT0iZmluYWxseSIpe3FiKCJmaW5hbGx5IiksV2IoITEpO3JldHVybn1yZXR1cm4gYXx8a2IoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHksImNhdGNoIix5LnZhbHVlKSx0aGlzfSksRGIoIndoaWxlIixmdW5jdGlvbigpe3ZhciBhPXk7cmV0dXJuIGtbIihicmVha2FnZSkiXSs9MSxrWyIobG9vcGFnZSkiXSs9MSxxYigiKCIpLHZiKHRoaXMsYSksdWIoKSxyYigyMCkseS5pZD09PSI9IiYmKEIuYm9zc3x8aWIoIkV4cGVjdGVkIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgaW5zdGVhZCBzYXcgYW4gYXNzaWdubWVudC4iKSxxYigiPSIpLHJiKDIwKSkscWIoIikiLGEpLHViKEUsUCksV2IoITAsITApLGtbIihicmVha2FnZSkiXS09MSxrWyIobG9vcGFnZSkiXS09MSx0aGlzfSkubGFiZWxsZWQ9ITAsRGIoIndpdGgiLGZ1bmN0aW9uKCl7dmFyIGE9eTtyZXR1cm4gTVsidXNlIHN0cmljdCJdP2tiKCInd2l0aCcgaXMgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUuIixQKTpCLndpdGhzdG10fHxpYigiRG9uJ3QgdXNlICd3aXRoJy4iLFApLHFiKCIoIiksdmIodGhpcyxhKSx1YigpLHJiKDApLHFiKCIpIixhKSx1YihFLFApLFdiKCEwLCEwKSx0aGlzfSksRGIoInN3aXRjaCIsZnVuY3Rpb24oKXt2YXIgYT15LGI9ITE7a1siKGJyZWFrYWdlKSJdKz0xLHFiKCIoIiksdmIodGhpcyxhKSx1YigpLHRoaXMuY29uZGl0aW9uPXJiKDIwKSxxYigiKSIsYSksdWIoRSxQKSx2YihQLHkpLGE9eSxxYigieyIpLHZiKFAseSkscSs9Qi5pbmRlbnQsdGhpcy5jYXNlcz1bXTtmb3IoOzspc3dpdGNoKHkuaWQpe2Nhc2UiY2FzZSI6c3dpdGNoKGtbIih2ZXJiKSJdKXtjYXNlImJyZWFrIjpjYXNlImNhc2UiOmNhc2UiY29udGludWUiOmNhc2UicmV0dXJuIjpjYXNlInN3aXRjaCI6Y2FzZSJ0aHJvdyI6YnJlYWs7ZGVmYXVsdDphYi50ZXN0KHRbeS5saW5lLTJdKXx8aWIoIkV4cGVjdGVkIGEgJ2JyZWFrJyBzdGF0ZW1lbnQgYmVmb3JlICdjYXNlJy4iLFApfXhiKC1CLmluZGVudCkscWIoImNhc2UiKSx0aGlzLmNhc2VzLnB1c2gocmIoMjApKSxiPSEwLHFiKCI6Iiksa1siKHZlcmIpIl09ImNhc2UiO2JyZWFrO2Nhc2UiZGVmYXVsdCI6c3dpdGNoKGtbIih2ZXJiKSJdKXtjYXNlImJyZWFrIjpjYXNlImNvbnRpbnVlIjpjYXNlInJldHVybiI6Y2FzZSJ0aHJvdyI6YnJlYWs7ZGVmYXVsdDphYi50ZXN0KHRbeS5saW5lLTJdKXx8aWIoIkV4cGVjdGVkIGEgJ2JyZWFrJyBzdGF0ZW1lbnQgYmVmb3JlICdkZWZhdWx0Jy4iLFApfXhiKC1CLmluZGVudCkscWIoImRlZmF1bHQiKSxiPSEwLHFiKCI6Iik7YnJlYWs7Y2FzZSJ9IjpxLT1CLmluZGVudCx4YigpLHFiKCJ9IixhKTtpZih0aGlzLmNhc2VzLmxlbmd0aD09PTF8fHRoaXMuY29uZGl0aW9uLmlkPT09InRydWUifHx0aGlzLmNvbmRpdGlvbi5pZD09PSJmYWxzZSIpQi5vbmVjYXNlfHxpYigiVGhpcyAnc3dpdGNoJyBzaG91bGQgYmUgYW4gJ2lmJy4iLHRoaXMpO2tbIihicmVha2FnZSkiXS09MSxrWyIodmVyYikiXT11bmRlZmluZWQ7cmV0dXJuO2Nhc2UiKGVuZCkiOmtiKCJNaXNzaW5nICd7YX0nLiIseSwifSIpO3JldHVybjtkZWZhdWx0OmlmKGIpc3dpdGNoKFAuaWQpe2Nhc2UiLCI6a2IoIkVhY2ggdmFsdWUgc2hvdWxkIGhhdmUgaXRzIG93biBjYXNlIGxhYmVsLiIpO3JldHVybjtjYXNlIjoiOmI9ITEsVWIoKTticmVhaztkZWZhdWx0OmtiKCJNaXNzaW5nICc6JyBvbiBhIGNhc2UgY2xhdXNlLiIsUCk7cmV0dXJufWVsc2V7aWYoUC5pZCE9PSI6Iil7a2IoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHksImNhc2UiLHkudmFsdWUpO3JldHVybn1xYigiOiIpLGtiKCJVbmV4cGVjdGVkICd7YX0nLiIsUCwiOiIpLFViKCl9fX0pLmxhYmVsbGVkPSEwLENiKCJkZWJ1Z2dlciIsZnVuY3Rpb24oKXtyZXR1cm4gQi5kZWJ1Z3x8aWIoIkFsbCAnZGVidWdnZXInIHN0YXRlbWVudHMgc2hvdWxkIGJlIHJlbW92ZWQuIiksdGhpc30pLmV4cHM9ITAsZnVuY3Rpb24oKXt2YXIgYT1DYigiZG8iLGZ1bmN0aW9uKCl7a1siKGJyZWFrYWdlKSJdKz0xLGtbIihsb29wYWdlKSJdKz0xLHRoaXMuZmlyc3Q9V2IoITApLHFiKCJ3aGlsZSIpO3ZhciBhPXk7cmV0dXJuIHZiKFAsYSkscWIoIigiKSx1YigpLHJiKDIwKSx5LmlkPT09Ij0iJiYoQi5ib3NzfHxpYigiRXhwZWN0ZWQgYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFuZCBpbnN0ZWFkIHNhdyBhbiBhc3NpZ25tZW50LiIpLHFiKCI9IikscmIoMjApKSxxYigiKSIsYSksdWIoRSxQKSxrWyIoYnJlYWthZ2UpIl0tPTEsa1siKGxvb3BhZ2UpIl0tPTEsdGhpc30pO2EubGFiZWxsZWQ9ITAsYS5leHBzPSEwfSgpLERiKCJmb3IiLGZ1bmN0aW9uKCl7dmFyIGEsYj15O2tbIihicmVha2FnZSkiXSs9MSxrWyIobG9vcGFnZSkiXSs9MSxxYigiKCIpLHZiKHRoaXMsYiksdWIoKTtpZihwYih5LmlkPT09InZhciI/MTowKS5pZD09PSJpbiIpe2lmKHkuaWQ9PT0idmFyIilxYigidmFyIiksYWMuZnVkLmNhbGwoYWMsITApO2Vsc2V7c3dpdGNoKGtbeS52YWx1ZV0pe2Nhc2UidW51c2VkIjprW3kudmFsdWVdPSJ2YXIiO2JyZWFrO2Nhc2UidmFyIjpicmVhaztkZWZhdWx0OmliKCJCYWQgZm9yIGluIHZhcmlhYmxlICd7YX0nLiIseSx5LnZhbHVlKX1xYigpfXJldHVybiBxYigiaW4iKSxyYigyMCkscWIoIikiLGIpLGE9V2IoITAsITApLEIuZm9yaW4mJmEmJihhLmxlbmd0aD4xfHx0eXBlb2YgYVswXSE9Im9iamVjdCJ8fGFbMF0udmFsdWUhPT0iaWYiKSYmaWIoIlRoZSBib2R5IG9mIGEgZm9yIGluIHNob3VsZCBiZSB3cmFwcGVkIGluIGFuIGlmIHN0YXRlbWVudCB0byBmaWx0ZXIgdW53YW50ZWQgcHJvcGVydGllcyBmcm9tIHRoZSBwcm90b3R5cGUuIix0aGlzKSxrWyIoYnJlYWthZ2UpIl0tPTEsa1siKGxvb3BhZ2UpIl0tPTEsdGhpc31pZih5LmlkIT09IjsiKWlmKHkuaWQ9PT0idmFyIilxYigidmFyIiksYWMuZnVkLmNhbGwoYWMpO2Vsc2UgZm9yKDs7KXtyYigwLCJmb3IiKTtpZih5LmlkIT09IiwiKWJyZWFrO3piKCl9eWIoUCkscWIoIjsiKSx5LmlkIT09IjsiJiYocmIoMjApLHkuaWQ9PT0iPSImJihCLmJvc3N8fGliKCJFeHBlY3RlZCBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYW5kIGluc3RlYWQgc2F3IGFuIGFzc2lnbm1lbnQuIikscWIoIj0iKSxyYigyMCkpKSx5YihQKSxxYigiOyIpLHkuaWQ9PT0iOyImJmtiKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIix5LCIpIiwiOyIpO2lmKHkuaWQhPT0iKSIpZm9yKDs7KXtyYigwLCJmb3IiKTtpZih5LmlkIT09IiwiKWJyZWFrO3piKCl9cmV0dXJuIHFiKCIpIixiKSx1YihFLFApLFdiKCEwLCEwKSxrWyIoYnJlYWthZ2UpIl0tPTEsa1siKGxvb3BhZ2UpIl0tPTEsdGhpc30pLmxhYmVsbGVkPSEwLENiKCJicmVhayIsZnVuY3Rpb24oKXt2YXIgYT15LnZhbHVlO3JldHVybiBrWyIoYnJlYWthZ2UpIl09PT0wJiZpYigiVW5leHBlY3RlZCAne2F9Jy4iLHksdGhpcy52YWx1ZSksQi5hc2l8fHliKHRoaXMpLHkuaWQhPT0iOyImJlAubGluZT09PXkubGluZSYmKGtbYV0hPT0ibGFiZWwiP2liKCIne2F9JyBpcyBub3QgYSBzdGF0ZW1lbnQgbGFiZWwuIix5LGEpOkhbYV0hPT1rJiZpYigiJ3thfScgaXMgb3V0IG9mIHNjb3BlLiIseSxhKSx0aGlzLmZpcnN0PXkscWIoKSksU2IoImJyZWFrIiksdGhpc30pLmV4cHM9ITAsQ2IoImNvbnRpbnVlIixmdW5jdGlvbigpe3ZhciBhPXkudmFsdWU7cmV0dXJuIGtbIihicmVha2FnZSkiXT09PTAmJmliKCJVbmV4cGVjdGVkICd7YX0nLiIseSx0aGlzLnZhbHVlKSxCLmFzaXx8eWIodGhpcykseS5pZCE9PSI7Ij9QLmxpbmU9PT15LmxpbmUmJihrW2FdIT09ImxhYmVsIj9pYigiJ3thfScgaXMgbm90IGEgc3RhdGVtZW50IGxhYmVsLiIseSxhKTpIW2FdIT09ayYmaWIoIid7YX0nIGlzIG91dCBvZiBzY29wZS4iLHksYSksdGhpcy5maXJzdD15LHFiKCkpOmtbIihsb29wYWdlKSJdfHxpYigiVW5leHBlY3RlZCAne2F9Jy4iLHksdGhpcy52YWx1ZSksU2IoImNvbnRpbnVlIiksdGhpc30pLmV4cHM9ITAsQ2IoInJldHVybiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5lPT09eS5saW5lPyh5LmlkPT09IihyZWdleHApIiYmaWIoIldyYXAgdGhlIC9yZWdleHAvIGxpdGVyYWwgaW4gcGFyZW5zIHRvIGRpc2FtYmlndWF0ZSB0aGUgc2xhc2ggb3BlcmF0b3IuIikseS5pZCE9PSI7IiYmIXkucmVhY2gmJih2YihQLHkpLHBiKCkudmFsdWU9PT0iPSImJiFCLmJvc3MmJmpiKCJEaWQgeW91IG1lYW4gdG8gcmV0dXJuIGEgY29uZGl0aW9uYWwgaW5zdGVhZCBvZiBhbiBhc3NpZ25tZW50PyIsUC5saW5lLFAuY2hhcmFjdGVyKzEpLHRoaXMuZmlyc3Q9cmIoMCkpKTpCLmFzaXx8eWIodGhpcyksU2IoInJldHVybiIpLHRoaXN9KS5leHBzPSEwLENiKCJ0aHJvdyIsZnVuY3Rpb24oKXtyZXR1cm4geWIodGhpcyksdmIoUCx5KSx0aGlzLmZpcnN0PXJiKDIwKSxTYigidGhyb3ciKSx0aGlzfSkuZXhwcz0hMCxIYigiY2xhc3MiKSxIYigiY29uc3QiKSxIYigiZW51bSIpLEhiKCJleHBvcnQiKSxIYigiZXh0ZW5kcyIpLEhiKCJpbXBvcnQiKSxIYigic3VwZXIiKSxIYigibGV0IiksSGIoInlpZWxkIiksSGIoImltcGxlbWVudHMiKSxIYigiaW50ZXJmYWNlIiksSGIoInBhY2thZ2UiKSxIYigicHJpdmF0ZSIpLEhiKCJwcm90ZWN0ZWQiKSxIYigicHVibGljIiksSGIoInN0YXRpYyIpO3ZhciBjYz1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnO2QuZXJyb3JzPVtdLGQudW5kZWZzPVtdLEM9T2JqZWN0LmNyZWF0ZShKKSxlYihDLGN8fHt9KTtpZihiKXtlPWIucHJlZGVmO2lmKGUpaWYoQXJyYXkuaXNBcnJheShlKSlmb3IoZj0wO2Y8ZS5sZW5ndGg7Zis9MSlDW2VbZl1dPSEwO2Vsc2UgaWYodHlwZW9mIGU9PSJvYmplY3QiKXtnPU9iamVjdC5rZXlzKGUpO2ZvcihmPTA7ZjxnLmxlbmd0aDtmKz0xKUNbZ1tmXV09ISFlW2dbZl1dfUI9Yn1lbHNlIEI9e307Qi5pbmRlbnQ9Qi5pbmRlbnR8fDQsQi5tYXhlcnI9Qi5tYXhlcnJ8fDUwLE89IiI7Zm9yKGY9MDtmPEIuaW5kZW50O2YrPTEpTys9IiAiO3E9MSxuPU9iamVjdC5jcmVhdGUoQyksSD1uLGs9eyIoZ2xvYmFsKSI6ITAsIihuYW1lKSI6IihnbG9iYWwpIiwiKHNjb3BlKSI6SCwiKGJyZWFrYWdlKSI6MCwiKGxvb3BhZ2UpIjowfSxtPVtrXSxRPVtdLEk9bnVsbCx2PXt9LHc9bnVsbCxvPXt9LHA9ITEsdT1bXSxyPSExLFM9MCxtYi5pbml0KGEpLEQ9ITAsTT17fSxFPVA9eT1OWyIoYmVnaW4pIl07Zm9yKHZhciBoIGluIGIpY2IoYixoKSYmZGIoaCxQKTtmYigpLGViKEMsY3x8e30pLHpiLmZpcnN0PSEwO3RyeXtxYigpO3N3aXRjaCh5LmlkKXtjYXNlInsiOmNhc2UiWyI6Qi5sYXhicmVhaz0hMCxyPSEwLGJjKCk7YnJlYWs7ZGVmYXVsdDpWYigpLE1bInVzZSBzdHJpY3QiXSYmIUIuZ2xvYmFsc3RyaWN0JiZpYignVXNlIHRoZSBmdW5jdGlvbiBmb3JtIG9mICJ1c2Ugc3RyaWN0Ii4nLEUpLFViKCl9cWIoIihlbmQpIik7dmFyIGk9ZnVuY3Rpb24oYSxiKXtkb3tpZih0eXBlb2YgYlthXT09InN0cmluZyIpcmV0dXJuIGJbYV09PT0idW51c2VkIj9iW2FdPSJ2YXIiOmJbYV09PT0idW5jdGlvbiImJihiW2FdPSJjbG9zdXJlIiksITA7Yj1iWyIoY29udGV4dCkiXX13aGlsZShiKTtyZXR1cm4hMX0saj1mdW5jdGlvbihhLGIpe2lmKCFvW2FdKXJldHVybjt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPG9bYV0ubGVuZ3RoO2QrPTEpb1thXVtkXSE9PWImJmMucHVzaChvW2FdW2RdKTtjLmxlbmd0aD09PTA/ZGVsZXRlIG9bYV06b1thXT1jfTtmb3IoZj0wO2Y8ZC51bmRlZnMubGVuZ3RoO2YrPTEpZz1kLnVuZGVmc1tmXS5zbGljZSgwKSxpKGdbMl0udmFsdWUsZ1swXSk/aihnWzJdLnZhbHVlLGdbMl0ubGluZSk6aWIuYXBwbHkoaWIsZy5zbGljZSgxKSl9Y2F0Y2gobCl7aWYobCl7dmFyIHM9eXx8e307ZC5lcnJvcnMucHVzaCh7cmF3OmwucmF3LHJlYXNvbjpsLm1lc3NhZ2UsbGluZTpsLmxpbmV8fHMubGluZSxjaGFyYWN0ZXI6bC5jaGFyYWN0ZXJ8fHMuZnJvbX0sbnVsbCl9fXJldHVybiBkLmVycm9ycy5sZW5ndGg9PT0wfTtyZXR1cm4gY2MuZGF0YT1mdW5jdGlvbigpe3ZhciBhPXtmdW5jdGlvbnM6W10sb3B0aW9uczpCfSxiLGMsZD1bXSxlLGYsZyxoPVtdLGksaj1bXSxrO2NjLmVycm9ycy5sZW5ndGgmJihhLmVycm9ycz1jYy5lcnJvcnMpLHImJihhLmpzb249ITApO2ZvcihpIGluIG8pY2IobyxpKSYmZC5wdXNoKHtuYW1lOmksbGluZTpvW2ldfSk7ZC5sZW5ndGg+MCYmKGEuaW1wbGllZHM9ZCksUS5sZW5ndGg+MCYmKGEudXJscz1RKSxjPU9iamVjdC5rZXlzKEgpLGMubGVuZ3RoPjAmJihhLmdsb2JhbHM9Yyk7Zm9yKGY9MTtmPG0ubGVuZ3RoO2YrPTEpe2U9bVtmXSxiPXt9O2ZvcihnPTA7ZzxsLmxlbmd0aDtnKz0xKWJbbFtnXV09W107Zm9yKGkgaW4gZSljYihlLGkpJiZpLmNoYXJBdCgwKSE9PSIoIiYmKGs9ZVtpXSxrPT09InVuY3Rpb24iJiYoaz0idW51c2VkIiksQXJyYXkuaXNBcnJheShiW2tdKSYmKGJba10ucHVzaChpKSxrPT09InVudXNlZCImJmoucHVzaCh7bmFtZTppLGxpbmU6ZVsiKGxpbmUpIl0sImZ1bmN0aW9uIjplWyIobmFtZSkiXX0pKSk7Zm9yKGc9MDtnPGwubGVuZ3RoO2crPTEpYltsW2ddXS5sZW5ndGg9PT0wJiZkZWxldGUgYltsW2ddXTtiLm5hbWU9ZVsiKG5hbWUpIl0sYi5wYXJhbT1lWyIocGFyYW1zKSJdLGIubGluZT1lWyIobGluZSkiXSxiLmxhc3Q9ZVsiKGxhc3QpIl0sYS5mdW5jdGlvbnMucHVzaChiKX1qLmxlbmd0aD4wJiYoYS51bnVzZWQ9aiksaD1bXTtmb3IoaSBpbiB2KWlmKHR5cGVvZiB2W2ldPT0ibnVtYmVyIil7YS5tZW1iZXI9djticmVha31yZXR1cm4gYX0sY2MucmVwb3J0PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG8oYSxiKXt2YXIgYyxkLGU7aWYoYil7bS5wdXNoKCI8ZGl2PjxpPiIrYSsiPC9pPiAiKSxiPWIuc29ydCgpO2ZvcihkPTA7ZDxiLmxlbmd0aDtkKz0xKWJbZF0hPT1lJiYoZT1iW2RdLG0ucHVzaCgoYz8iLCAiOiIiKStlKSxjPSEwKTttLnB1c2goIjwvZGl2PiIpfX12YXIgYj1jYy5kYXRhKCksYz1bXSxkLGUsZixnLGgsaSxqLGs9IiIsbCxtPVtdLG47aWYoYi5lcnJvcnN8fGIuaW1wbGllZHN8fGIudW51c2VkKXtmPSEwLG0ucHVzaCgiPGRpdiBpZD1lcnJvcnM+PGk+RXJyb3I6PC9pPiIpO2lmKGIuZXJyb3JzKWZvcihoPTA7aDxiLmVycm9ycy5sZW5ndGg7aCs9MSlkPWIuZXJyb3JzW2hdLGQmJihlPWQuZXZpZGVuY2V8fCIiLG0ucHVzaCgiPHA+UHJvYmxlbSIrKGlzRmluaXRlKGQubGluZSk/IiBhdCBsaW5lICIrZC5saW5lKyIgY2hhcmFjdGVyICIrZC5jaGFyYWN0ZXI6IiIpKyI6ICIrZC5yZWFzb24uZW50aXR5aWZ5KCkrIjwvcD48cCBjbGFzcz1ldmlkZW5jZT4iKyhlJiYoZS5sZW5ndGg+ODA/ZS5zbGljZSgwLDc3KSsiLi4uIjplKS5lbnRpdHlpZnkoKSkrIjwvcD4iKSk7aWYoYi5pbXBsaWVkcyl7bj1bXTtmb3IoaD0wO2g8Yi5pbXBsaWVkcy5sZW5ndGg7aCs9MSluW2hdPSI8Y29kZT4iK2IuaW1wbGllZHNbaF0ubmFtZSsiPC9jb2RlPiZuYnNwOzxpPiIrYi5pbXBsaWVkc1toXS5saW5lKyI8L2k+IjttLnB1c2goIjxwPjxpPkltcGxpZWQgZ2xvYmFsOjwvaT4gIituLmpvaW4oIiwgIikrIjwvcD4iKX1pZihiLnVudXNlZCl7bj1bXTtmb3IoaD0wO2g8Yi51bnVzZWQubGVuZ3RoO2grPTEpbltoXT0iPGNvZGU+PHU+IitiLnVudXNlZFtoXS5uYW1lKyI8L3U+PC9jb2RlPiZuYnNwOzxpPiIrYi51bnVzZWRbaF0ubGluZSsiPC9pPiA8Y29kZT4iK2IudW51c2VkW2hdWyJmdW5jdGlvbiJdKyI8L2NvZGU+IjttLnB1c2goIjxwPjxpPlVudXNlZCB2YXJpYWJsZTo8L2k+ICIrbi5qb2luKCIsICIpKyI8L3A+Iil9Yi5qc29uJiZtLnB1c2goIjxwPkpTT046IGJhZC48L3A+IiksbS5wdXNoKCI8L2Rpdj4iKX1pZighYSl7bS5wdXNoKCI8YnI+PGRpdiBpZD1mdW5jdGlvbnM+IiksYi51cmxzJiZvKCJVUkxzPGJyPiIsYi51cmxzLCI8YnI+IiksYi5qc29uJiYhZj9tLnB1c2goIjxwPkpTT046IGdvb2QuPC9wPiIpOmIuZ2xvYmFscz9tLnB1c2goIjxkaXY+PGk+R2xvYmFsPC9pPiAiK2IuZ2xvYmFscy5zb3J0KCkuam9pbigiLCAiKSsiPC9kaXY+Iik6bS5wdXNoKCI8ZGl2PjxpPk5vIG5ldyBnbG9iYWwgdmFyaWFibGVzIGludHJvZHVjZWQuPC9pPjwvZGl2PiIpO2ZvcihoPTA7aDxiLmZ1bmN0aW9ucy5sZW5ndGg7aCs9MSlnPWIuZnVuY3Rpb25zW2hdLG0ucHVzaCgiPGJyPjxkaXYgY2xhc3M9ZnVuY3Rpb24+PGk+IitnLmxpbmUrIi0iK2cubGFzdCsiPC9pPiAiKyhnLm5hbWV8fCIiKSsiKCIrKGcucGFyYW0/Zy5wYXJhbS5qb2luKCIsICIpOiIiKSsiKTwvZGl2PiIpLG8oIjxiaWc+PGI+VW51c2VkPC9iPjwvYmlnPiIsZy51bnVzZWQpLG8oIkNsb3N1cmUiLGcuY2xvc3VyZSksbygiVmFyaWFibGUiLGdbInZhciJdKSxvKCJFeGNlcHRpb24iLGcuZXhjZXB0aW9uKSxvKCJPdXRlciIsZy5vdXRlciksbygiR2xvYmFsIixnLmdsb2JhbCksbygiTGFiZWwiLGcubGFiZWwpO2lmKGIubWVtYmVyKXtjPU9iamVjdC5rZXlzKGIubWVtYmVyKTtpZihjLmxlbmd0aCl7Yz1jLnNvcnQoKSxrPSI8YnI+PHByZSBpZD1tZW1iZXJzPi8qbWVtYmVycyAiLGo9MTA7Zm9yKGg9MDtoPGMubGVuZ3RoO2grPTEpaT1jW2hdLGw9aS5uYW1lKCksaitsLmxlbmd0aD43MiYmKG0ucHVzaChrKyI8YnI+Iiksaz0iICAgICIsaj0xKSxqKz1sLmxlbmd0aCsyLGIubWVtYmVyW2ldPT09MSYmKGw9IjxpPiIrbCsiPC9pPiIpLGg8Yy5sZW5ndGgtMSYmKGwrPSIsICIpLGsrPWw7bS5wdXNoKGsrIjxicj4qLzwvcHJlPiIpfW0ucHVzaCgiPC9kaXY+Iil9fXJldHVybiBtLmpvaW4oIiIpfSxjYy5qc2hpbnQ9Y2MsY2N9KCk7dHlwZW9mIGI9PSJvYmplY3QiJiZiJiYoYi5KU0hJTlQ9ZCl9KSxkZWZpbmUoImFjZS9uYXJjaXNzdXMvcGFyc2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL25hcmNpc3N1cy9sZXhlciIsImFjZS9uYXJjaXNzdXMvZGVmaW5pdGlvbnMiLCJhY2UvbmFyY2lzc3VzL29wdGlvbnMiXSxmdW5jdGlvbihyZXF1aXJlLGV4cG9ydHMsbW9kdWxlKXtmdW5jdGlvbiBwdXNoRGVzdHJ1Y3R1cmluZ1ZhckRlY2xzKGEsYil7Zm9yKHZhciBjIGluIGEpe3ZhciBkPWFbY107ZC50eXBlPT09SURFTlRJRklFUj9iLnZhckRlY2xzLnB1c2goZCk6cHVzaERlc3RydWN0dXJpbmdWYXJEZWNscyhkLGIpfX1mdW5jdGlvbiBQYXJzZXIoYSl7YS5wYXJzZXI9dGhpcyx0aGlzLnQ9YSx0aGlzLng9bnVsbCx0aGlzLnVuZXhwZWN0ZWRFT0Y9ITEsb3B0aW9ucy5tb3ppbGxhTW9kZSYmKHRoaXMubW96aWxsYU1vZGU9ITApLG9wdGlvbnMucGFyZW5GcmVlTW9kZSYmKHRoaXMucGFyZW5GcmVlTW9kZT0hMCl9ZnVuY3Rpb24gU3RhdGljQ29udGV4dChhLGIsYyxkLGUpe3RoaXMucGFyZW50U2NyaXB0PWEsdGhpcy5wYXJlbnRCbG9jaz1ifHxhLHRoaXMuaW5Nb2R1bGU9Y3x8ITEsdGhpcy5pbkZ1bmN0aW9uPWR8fCExLHRoaXMuaW5Gb3JMb29wSW5pdD0hMSx0aGlzLnRvcExldmVsPSEwLHRoaXMuYWxsTGFiZWxzPW5ldyBTdGFjayx0aGlzLmN1cnJlbnRMYWJlbHM9bmV3IFN0YWNrLHRoaXMubGFiZWxlZFRhcmdldHM9bmV3IFN0YWNrLHRoaXMuZGVmYXVsdExvb3BUYXJnZXQ9bnVsbCx0aGlzLmRlZmF1bHRUYXJnZXQ9bnVsbCx0aGlzLnN0cmljdE1vZGU9ZX1mdW5jdGlvbiBQcmFnbWEoYSl7aWYoYS50eXBlPT09U0VNSUNPTE9OKXt2YXIgYj1hLmV4cHJlc3Npb247aWYoYi50eXBlPT09U1RSSU5HJiZiLnZhbHVlPT09InVzZSBzdHJpY3QiKXJldHVybiBhLnByYWdtYT0ic3RyaWN0IiwhMH1yZXR1cm4hMX1mdW5jdGlvbiBOb2RlKGEsYil7dmFyIGM9YS50b2tlbjtjPyh0aGlzLnR5cGU9Yy50eXBlLHRoaXMudmFsdWU9Yy52YWx1ZSx0aGlzLmxpbmVubz1jLmxpbmVubyx0aGlzLnN0YXJ0PWMuc3RhcnQsdGhpcy5lbmQ9Yy5lbmQpOnRoaXMubGluZW5vPWEubGluZW5vLHRoaXMuZmlsZW5hbWU9YS5maWxlbmFtZSx0aGlzLmNoaWxkcmVuPVtdO2Zvcih2YXIgZCBpbiBiKXRoaXNbZF09YltkXX1mdW5jdGlvbiBTeW50aGV0aWNOb2RlKGEpe3RoaXMuY2hpbGRyZW49W107Zm9yKHZhciBiIGluIGEpdGhpc1tiXT1hW2JdO3RoaXMuc3ludGhldGljPSEwfWZ1bmN0aW9uIHVuZXZhbGFibGVDb25zdChhKXt2YXIgYj1kZWZpbml0aW9ucy50b2tlbnNbYV0sYz1kZWZpbml0aW9ucy5vcFR5cGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShiKT9kZWZpbml0aW9ucy5vcFR5cGVOYW1lc1tiXTpiIGluIGRlZmluaXRpb25zLmtleXdvcmRzP2IudG9VcHBlckNhc2UoKTpiO3JldHVybnt0b1NvdXJjZTpmdW5jdGlvbigpe3JldHVybiBjfX19ZnVuY3Rpb24gdG9rZW5TdHJpbmcoYSl7dmFyIGI9ZGVmaW5pdGlvbnMudG9rZW5zW2FdO3JldHVybi9eXFcvLnRlc3QoYik/ZGVmaW5pdGlvbnMub3BUeXBlTmFtZXNbYl06Yi50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIGJsb2NrSW5pdCgpe3JldHVybnt0eXBlOkJMT0NLLHZhckRlY2xzOltdfX1mdW5jdGlvbiBzY3JpcHRJbml0KCl7cmV0dXJue3R5cGU6U0NSSVBULGZ1bkRlY2xzOltdLHZhckRlY2xzOltdLG1vZERlZm5zOm5ldyBEaWN0LG1vZEFzc25zOm5ldyBEaWN0LG1vZERlY2xzOm5ldyBEaWN0LG1vZExvYWRzOm5ldyBEaWN0LGltcERlY2xzOltdLGV4cERlY2xzOltdLGV4cG9ydHM6bmV3IERpY3QsaGFzRW1wdHlSZXR1cm46ITEsaGFzUmV0dXJuV2l0aFZhbHVlOiExLGhhc1lpZWxkOiExfX1mdW5jdGlvbiBFeHBvcnQoYSxiKXt0aGlzLm5vZGU9YSx0aGlzLmlzRGVmaW5pdGlvbj1iLHRoaXMucmVzb2x2ZWQ9bnVsbH1mdW5jdGlvbiByZWdpc3RlckV4cG9ydChhLGIpe2Z1bmN0aW9uIGMoYixjKXtpZihhLmhhcyhiKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIm11bHRpcGxlIGV4cG9ydHMgb2YgIitiKTthLnNldChiLGMpfXN3aXRjaChiLnR5cGUpe2Nhc2UgTU9EVUxFOmNhc2UgRlVOQ1RJT046YyhiLm5hbWUsbmV3IEV4cG9ydChiLCEwKSk7YnJlYWs7Y2FzZSBWQVI6Zm9yKHZhciBkPTA7ZDxiLmNoaWxkcmVuLmxlbmd0aDtkKyspYyhiLmNoaWxkcmVuW2RdLm5hbWUsbmV3IEV4cG9ydChiLmNoaWxkcmVuW2RdLCEwKSk7YnJlYWs7Y2FzZSBMRVQ6Y2FzZSBDT05TVDp0aHJvdyBuZXcgRXJyb3IoIk5ZSTogIitkZWZpbml0aW9ucy50b2tlbnNbYi50eXBlXSk7Y2FzZSBFWFBPUlQ6Zm9yKHZhciBkPTA7ZDxiLnBhdGhMaXN0Lmxlbmd0aDtkKyspe3ZhciBlPWIucGF0aExpc3RbZF07c3dpdGNoKGUudHlwZSl7Y2FzZSBPQkpFQ1RfSU5JVDpmb3IodmFyIGY9MDtmPGUuY2hpbGRyZW4ubGVuZ3RoO2YrKyl7dmFyIGc9ZS5jaGlsZHJlbltmXTtnLnR5cGU9PT1JREVOVElGSUVSP2MoZy52YWx1ZSxuZXcgRXhwb3J0KGcsITEpKTpjKGcuY2hpbGRyZW5bMF0udmFsdWUsbmV3IEV4cG9ydChnLmNoaWxkcmVuWzFdLCExKSl9YnJlYWs7Y2FzZSBET1Q6YyhlLmNoaWxkcmVuWzFdLnZhbHVlLG5ldyBFeHBvcnQoZSwhMSkpO2JyZWFrO2Nhc2UgSURFTlRJRklFUjpjKGUudmFsdWUsbmV3IEV4cG9ydChlLCExKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZXhwb3J0IHBhdGg6ICIrZGVmaW5pdGlvbnMudG9rZW5zW2UudHlwZV0pfX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCBleHBvcnQgZGVjbDogIitkZWZpbml0aW9ucy50b2tlbnNbZXhwLnR5cGVdKX19ZnVuY3Rpb24gTW9kdWxlKGEpe3ZhciBiPWEuYm9keS5leHBvcnRzLGM9YS5ib2R5Lm1vZERlZm5zLGQ9bmV3IERpY3Q7Yi5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7dmFyIGU9Yi5ub2RlO2lmKGUudHlwZT09PU1PRFVMRSlkLnNldChhLGUpO2Vsc2UgaWYoIWIuaXNEZWZpbml0aW9uJiZlLnR5cGU9PT1JREVOVElGSUVSJiZjLmhhcyhlLnZhbHVlKSl7dmFyIGY9Yy5nZXQoZS52YWx1ZSk7ZC5zZXQoYSxmKX19KSx0aGlzLm5vZGU9YSx0aGlzLmV4cG9ydHM9Yix0aGlzLmV4cG9ydGVkTW9kdWxlcz1kfWZ1bmN0aW9uIGlzUHJhZ21hVG9rZW4oYSl7c3dpdGNoKGEpe2Nhc2UgSURFTlRJRklFUjpjYXNlIFNUUklORzpjYXNlIE5VTUJFUjpjYXNlIE5VTEw6Y2FzZSBUUlVFOmNhc2UgRkFMU0U6cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gcGFyc2UoYSxiLGMpe3ZhciBkPW5ldyBUb2tlbml6ZXIoYSxiLGMsb3B0aW9ucy5hbGxvd0hUTUxDb21tZW50cyksZT1uZXcgUGFyc2VyKGQpO3JldHVybiBlLlNjcmlwdCghMSwhMSwhMCl9ZnVuY3Rpb24gcGFyc2VGdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPW5ldyBUb2tlbml6ZXIoYSxkLGUpLGc9bmV3IFBhcnNlcihmKTtyZXR1cm4gZy54PW5ldyBTdGF0aWNDb250ZXh0KG51bGwsbnVsbCwhMSwhMSwhMSksZy5GdW5jdGlvbkRlZmluaXRpb24oYixjKX1mdW5jdGlvbiBwYXJzZVN0ZGluKGEsYixjLGQpe2lmKGEubWF0Y2goL15bXHNdKlwuYmVnaW5bXHNdKiQvKSlyZXR1cm4rK2IudmFsdWUscGFyc2VNdWx0aWxpbmUoYixjKTtkKGEudHJpbSgpKSYmKGE9IiIpO2Zvcig7Oyl0cnl7dmFyIGU9bmV3IFRva2VuaXplcihhLCJzdGRpbiIsYi52YWx1ZSwhMSksZj1uZXcgUGFyc2VyKGUpLGc9Zi5TY3JpcHQoITEsITEpO3JldHVybiBiLnZhbHVlPWUubGluZW5vLGd9Y2F0Y2goaCl7aWYoIWYudW5leHBlY3RlZEVPRil0aHJvdyBoO3ZhciBpO2Rve2MmJnB1dHN0cihjKSxpPXJlYWRsaW5lKCk7aWYoIWkpdGhyb3cgaH13aGlsZShkKGkudHJpbSgpKSk7YSs9IlxuIitpfX1mdW5jdGlvbiBwYXJzZU11bHRpbGluZShhLGIpe3ZhciBjPSIiO2Zvcig7Oyl7YiYmcHV0c3RyKGIpO3ZhciBkPXJlYWRsaW5lKCk7aWYoZD09PW51bGwpcmV0dXJuIG51bGw7aWYoZC5tYXRjaCgvXltcc10qXC5lbmRbXHNdKiQvKSlicmVhaztjKz0iXG4iK2R9dmFyIGU9bmV3IFRva2VuaXplcihjLCJzdGRpbiIsYS52YWx1ZSwhMSksZj1uZXcgUGFyc2VyKGUpLGc9Zi5TY3JpcHQoITEsITEpO3JldHVybiBhLnZhbHVlPWUubGluZW5vLGd9dmFyIGxleGVyPXJlcXVpcmUoIi4vbGV4ZXIiKSxkZWZpbml0aW9ucz1yZXF1aXJlKCIuL2RlZmluaXRpb25zIiksb3B0aW9ucz1yZXF1aXJlKCIuL29wdGlvbnMiKSxUb2tlbml6ZXI9bGV4ZXIuVG9rZW5pemVyLERpY3Q9ZGVmaW5pdGlvbnMuRGljdCxTdGFjaz1kZWZpbml0aW9ucy5TdGFjaztldmFsKGRlZmluaXRpb25zLmNvbnN0cyksU3RhdGljQ29udGV4dC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbihhKXt2YXIgYj17fTtmb3IodmFyIGMgaW4gYSliW2NdPXt2YWx1ZTphW2NdLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfTtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzLGIpfSxwdXNoTGFiZWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudXBkYXRlKHtjdXJyZW50TGFiZWxzOnRoaXMuY3VycmVudExhYmVscy5wdXNoKGEpLGFsbExhYmVsczp0aGlzLmFsbExhYmVscy5wdXNoKGEpfSl9LHB1c2hUYXJnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5pc0xvb3AsYz1ifHxhLnR5cGU9PT1TV0lUQ0g7cmV0dXJuIHRoaXMuY3VycmVudExhYmVscy5pc0VtcHR5KCk/KGImJnRoaXMudXBkYXRlKHtkZWZhdWx0TG9vcFRhcmdldDphfSksYyYmdGhpcy51cGRhdGUoe2RlZmF1bHRUYXJnZXQ6YX0pLHRoaXMpOihhLmxhYmVscz1uZXcgRGljdCx0aGlzLmN1cnJlbnRMYWJlbHMuZm9yRWFjaChmdW5jdGlvbihiKXthLmxhYmVscy5zZXQoYiwhMCl9KSx0aGlzLnVwZGF0ZSh7Y3VycmVudExhYmVsczpuZXcgU3RhY2ssbGFiZWxlZFRhcmdldHM6dGhpcy5sYWJlbGVkVGFyZ2V0cy5wdXNoKGEpLGRlZmF1bHRMb29wVGFyZ2V0OmI/YTp0aGlzLmRlZmF1bHRMb29wVGFyZ2V0LGRlZmF1bHRUYXJnZXQ6Yz9hOnRoaXMuZGVmYXVsdFRhcmdldH0pKX0sbmVzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvcExldmVsP3RoaXMudXBkYXRlKHt0b3BMZXZlbDohMX0pOnRoaXN9LGNhbkltcG9ydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvcExldmVsJiYhdGhpcy5pbkZ1bmN0aW9ufSxjYW5FeHBvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbk1vZHVsZSYmdGhpcy50b3BMZXZlbCYmIXRoaXMuaW5GdW5jdGlvbn0sYmFuV2l0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmljdE1vZGV8fHRoaXMuaW5Nb2R1bGV9LG1vZHVsZXNBbGxvd2VkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9wTGV2ZWwmJiF0aGlzLmluRnVuY3Rpb259fTt2YXIgUHA9UGFyc2VyLnByb3RvdHlwZTtQcC5tb3ppbGxhTW9kZT0hMSxQcC5wYXJlbkZyZWVNb2RlPSExLFBwLndpdGhDb250ZXh0PWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy54O3RoaXMueD1hO3ZhciBkPWIuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy54PWMsZH0sUHAubmV3Tm9kZT1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IE5vZGUodGhpcy50LGIpfSxQcC5mYWlsPWZ1bmN0aW9uKGIpe3Rocm93IHRoaXMudC5uZXdTeW50YXhFcnJvcihiKX0sUHAubWF0Y2g9ZnVuY3Rpb24oYixjLGQpe3JldHVybiB0aGlzLnQubWF0Y2goYixjLGQpfSxQcC5tdXN0TWF0Y2g9ZnVuY3Rpb24oYixjKXtyZXR1cm4gdGhpcy50Lm11c3RNYXRjaChiLGMpfSxQcC5wZWVrPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnQucGVlayhiKX0sUHAucGVla09uU2FtZUxpbmU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMudC5wZWVrT25TYW1lTGluZShiKX0sUHAuZG9uZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnQuZG9uZX0sUHAuU2NyaXB0PWZ1bmN0aW9uKGIsYyxkKXt2YXIgZT10aGlzLm5ld05vZGUoc2NyaXB0SW5pdCgpKSxmPW5ldyBTdGF0aWNDb250ZXh0KGUsZSxiLGMpO3JldHVybiB0aGlzLndpdGhDb250ZXh0KGYsZnVuY3Rpb24oKXt0aGlzLlN0YXRlbWVudHMoZSwhMCl9KSxkJiYhdGhpcy5kb25lKCkmJnRoaXMuZmFpbCgiZXhwZWN0ZWQgZW5kIG9mIGlucHV0IiksZX07dmFyIE5wPU5vZGUucHJvdG90eXBlPVN5bnRoZXRpY05vZGUucHJvdG90eXBlPXt9O05wLmNvbnN0cnVjdG9yPU5vZGU7dmFyIFRPX1NPVVJDRV9TS0lQPXt0eXBlOiEwLHZhbHVlOiEwLGxpbmVubzohMCxzdGFydDohMCxlbmQ6ITAsdG9rZW5pemVyOiEwLGFzc2lnbk9wOiEwfTtOcC50b1NvdXJjZT1mdW5jdGlvbigpe3ZhciBiPXt9LGM9dGhpcztiLnR5cGU9dW5ldmFsYWJsZUNvbnN0KHRoaXMudHlwZSk7aWYodGhpcy5nZW5lcmF0aW5nU291cmNlKXJldHVybiBiLnRvU291cmNlKCk7dGhpcy5nZW5lcmF0aW5nU291cmNlPSEwLCJ2YWx1ZSJpbiB0aGlzJiYoYi52YWx1ZT10aGlzLnZhbHVlKSwibGluZW5vImluIHRoaXMmJihiLmxpbmVubz10aGlzLmxpbmVubyksInN0YXJ0ImluIHRoaXMmJihiLnN0YXJ0PXRoaXMuc3RhcnQpLCJlbmQiaW4gdGhpcyYmKGIuZW5kPXRoaXMuZW5kKSx0aGlzLmFzc2lnbk9wJiYoYi5hc3NpZ25PcD11bmV2YWxhYmxlQ29uc3QodGhpcy5hc3NpZ25PcCkpO2Zvcih2YXIgZCBpbiB0aGlzKXRoaXMuaGFzT3duUHJvcGVydHkoZCkmJiEoZCBpbiBUT19TT1VSQ0VfU0tJUCkmJihiW2RdPXRoaXNbZF0pO3RyeXtyZXR1cm4gYi50b1NvdXJjZSgpfWZpbmFsbHl7ZGVsZXRlIHRoaXMuZ2VuZXJhdGluZ1NvdXJjZX19LE5wLnB1c2g9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT1udWxsJiYoYS5zdGFydDx0aGlzLnN0YXJ0JiYodGhpcy5zdGFydD1hLnN0YXJ0KSx0aGlzLmVuZDxhLmVuZCYmKHRoaXMuZW5kPWEuZW5kKSksdGhpcy5jaGlsZHJlbi5wdXNoKGEpfSxOb2RlLmluZGVudExldmVsPTAsTnAudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1bXTtmb3IodmFyIGIgaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KGIpJiZiIT09InR5cGUiJiZiIT09InRhcmdldCImJmEucHVzaCh7aWQ6Yix2YWx1ZTp0aGlzW2JdfSk7YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuaWQ8Yi5pZD8tMToxfSk7dmFyIGM9IiAgICAiLGQ9KytOb2RlLmluZGVudExldmVsLGU9IntcbiIrYy5yZXBlYXQoZCkrInR5cGU6ICIrdG9rZW5TdHJpbmcodGhpcy50eXBlKTtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWUrPSIsXG4iK2MucmVwZWF0KGQpK2FbYl0uaWQrIjogIithW2JdLnZhbHVlO3JldHVybiBkPS0tTm9kZS5pbmRlbnRMZXZlbCxlKz0iXG4iK2MucmVwZWF0KGQpKyJ9IixlfSxOcC5zeW50aD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgU3ludGhldGljTm9kZShhKTtyZXR1cm4gYi5maWxlbmFtZT10aGlzLmZpbGVuYW1lLGIubGluZW5vPXRoaXMubGluZW5vLGIuc3RhcnQ9dGhpcy5zdGFydCxiLmVuZD10aGlzLmVuZCxifTt2YXIgTE9PUF9JTklUPXtpc0xvb3A6ITB9O2RlZmluaXRpb25zLmRlZmluZUdldHRlcihOcCwibGVuZ3RoIixmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm9kZS5wcm90b3R5cGUubGVuZ3RoIGlzIGdvbmU7IHVzZSBuLmNoaWxkcmVuLmxlbmd0aCBpbnN0ZWFkIil9KSxkZWZpbml0aW9ucy5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCJyZXBlYXQiLGZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM9dGhpcytiO3doaWxlKC0tYT49MCliKz1jO3JldHVybiBifSwhMSwhMSwhMCksUHAuTWF5YmVMZWZ0UGFyZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbkZyZWVNb2RlP3RoaXMubWF0Y2goTEVGVF9QQVJFTik/TEVGVF9QQVJFTjpFTkQ6dGhpcy5tdXN0TWF0Y2goTEVGVF9QQVJFTikudHlwZX0sUHAuTWF5YmVSaWdodFBhcmVuPWZ1bmN0aW9uKGIpe2I9PT1MRUZUX1BBUkVOJiZ0aGlzLm11c3RNYXRjaChSSUdIVF9QQVJFTil9LFBwLlN0YXRlbWVudHM9ZnVuY3Rpb24oYixjKXt2YXIgZD0hIWM7dHJ5e3doaWxlKCF0aGlzLmRvbmUoKSYmdGhpcy5wZWVrKCEwKSE9PVJJR0hUX0NVUkxZKXt2YXIgZT10aGlzLlN0YXRlbWVudCgpO2IucHVzaChlKSxkJiZQcmFnbWEoZSk/KHRoaXMueC5zdHJpY3RNb2RlPSEwLGIuc3RyaWN0PSEwKTpkPSExfX1jYXRjaChmKXt0cnl7dGhpcy5kb25lKCkmJih0aGlzLnVuZXhwZWN0ZWRFT0Y9ITApfWNhdGNoKGYpe310aHJvdyBmfX0sUHAuQmxvY2s9ZnVuY3Rpb24oKXt0aGlzLm11c3RNYXRjaChMRUZUX0NVUkxZKTt2YXIgYj10aGlzLm5ld05vZGUoYmxvY2tJbml0KCkpLGM9dGhpcy54LnVwZGF0ZSh7cGFyZW50QmxvY2s6Yn0pLnB1c2hUYXJnZXQoYik7cmV0dXJuIHRoaXMud2l0aENvbnRleHQoYyxmdW5jdGlvbigpe3RoaXMuU3RhdGVtZW50cyhiKX0pLHRoaXMubXVzdE1hdGNoKFJJR0hUX0NVUkxZKSxifTt2YXIgREVDTEFSRURfRk9STT0wLEVYUFJFU1NFRF9GT1JNPTEsU1RBVEVNRU5UX0ZPUk09MjtQcC5TdGF0ZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGcsaCxpPXRoaXMudC5nZXQoITApLGosayxsLG0sbj10aGlzLnQuYmxvY2tDb21tZW50cztzd2l0Y2goaSl7Y2FzZSBJTVBPUlQ6dGhpcy54LmNhbkltcG9ydCgpfHx0aGlzLmZhaWwoImlsbGVnYWwgY29udGV4dCBmb3IgaW1wb3J0IHN0YXRlbWVudCIpLGQ9dGhpcy5uZXdOb2RlKCksZC5wYXRoTGlzdD10aGlzLkltcG9ydFBhdGhMaXN0KCksdGhpcy54LnBhcmVudFNjcmlwdC5pbXBEZWNscy5wdXNoKGQpO2JyZWFrO2Nhc2UgRVhQT1JUOnRoaXMueC5jYW5FeHBvcnQoKXx8dGhpcy5mYWlsKCJleHBvcnQgc3RhdGVtZW50IG5vdCBpbiBtb2R1bGUgdG9wIGxldmVsIik7c3dpdGNoKHRoaXMucGVlaygpKXtjYXNlIE1PRFVMRTpjYXNlIEZVTkNUSU9OOmNhc2UgTEVUOmNhc2UgVkFSOmNhc2UgQ09OU1Q6cmV0dXJuIGQ9dGhpcy5TdGF0ZW1lbnQoKSxkLmJsb2NrQ29tbWVudHM9bixkLmV4cG9ydGVkPSEwLHRoaXMueC5wYXJlbnRTY3JpcHQuZXhwRGVjbHMucHVzaChkKSxyZWdpc3RlckV4cG9ydCh0aGlzLngucGFyZW50U2NyaXB0LmV4cG9ydHMsZCksZH1kPXRoaXMubmV3Tm9kZSgpLGQucGF0aExpc3Q9dGhpcy5FeHBvcnRQYXRoTGlzdCgpLHRoaXMueC5wYXJlbnRTY3JpcHQuZXhwRGVjbHMucHVzaChkKSxyZWdpc3RlckV4cG9ydCh0aGlzLngucGFyZW50U2NyaXB0LmV4cG9ydHMsZCk7YnJlYWs7Y2FzZSBGVU5DVElPTjpyZXR1cm4gdGhpcy5GdW5jdGlvbkRlZmluaXRpb24oITAsdGhpcy54LnRvcExldmVsP0RFQ0xBUkVEX0ZPUk06U1RBVEVNRU5UX0ZPUk0sbik7Y2FzZSBMRUZUX0NVUkxZOnJldHVybiBkPXRoaXMubmV3Tm9kZShibG9ja0luaXQoKSksbD10aGlzLngudXBkYXRlKHtwYXJlbnRCbG9jazpkfSkucHVzaFRhcmdldChkKS5uZXN0KCksdGhpcy53aXRoQ29udGV4dChsLGZ1bmN0aW9uKCl7dGhpcy5TdGF0ZW1lbnRzKGQpfSksdGhpcy5tdXN0TWF0Y2goUklHSFRfQ1VSTFkpLGQ7Y2FzZSBJRjpyZXR1cm4gZD10aGlzLm5ld05vZGUoKSxkLmNvbmRpdGlvbj10aGlzLkhlYWRFeHByZXNzaW9uKCksbD10aGlzLngucHVzaFRhcmdldChkKS5uZXN0KCksdGhpcy53aXRoQ29udGV4dChsLGZ1bmN0aW9uKCl7ZC50aGVuUGFydD10aGlzLlN0YXRlbWVudCgpLGQuZWxzZVBhcnQ9dGhpcy5tYXRjaChFTFNFLCEwKT90aGlzLlN0YXRlbWVudCgpOm51bGx9KSxkO2Nhc2UgU1dJVENIOnJldHVybiBkPXRoaXMubmV3Tm9kZSh7Y2FzZXM6W10sZGVmYXVsdEluZGV4Oi0xfSksZC5kaXNjcmltaW5hbnQ9dGhpcy5IZWFkRXhwcmVzc2lvbigpLGw9dGhpcy54LnB1c2hUYXJnZXQoZCkubmVzdCgpLHRoaXMud2l0aENvbnRleHQobCxmdW5jdGlvbigpe3RoaXMubXVzdE1hdGNoKExFRlRfQ1VSTFkpO3doaWxlKChpPXRoaXMudC5nZXQoKSkhPT1SSUdIVF9DVVJMWSl7c3dpdGNoKGkpe2Nhc2UgREVGQVVMVDpkLmRlZmF1bHRJbmRleD49MCYmdGhpcy5mYWlsKCJNb3JlIHRoYW4gb25lIHN3aXRjaCBkZWZhdWx0Iik7Y2FzZSBDQVNFOmU9dGhpcy5uZXdOb2RlKCksaT09PURFRkFVTFQ/ZC5kZWZhdWx0SW5kZXg9ZC5jYXNlcy5sZW5ndGg6ZS5jYXNlTGFiZWw9dGhpcy5FeHByZXNzaW9uKENPTE9OKTticmVhaztkZWZhdWx0OnRoaXMuZmFpbCgiSW52YWxpZCBzd2l0Y2ggY2FzZSIpfXRoaXMubXVzdE1hdGNoKENPTE9OKSxlLnN0YXRlbWVudHM9dGhpcy5uZXdOb2RlKGJsb2NrSW5pdCgpKTt3aGlsZSgoaT10aGlzLnBlZWsoITApKSE9PUNBU0UmJmkhPT1ERUZBVUxUJiZpIT09UklHSFRfQ1VSTFkpZS5zdGF0ZW1lbnRzLnB1c2godGhpcy5TdGF0ZW1lbnQoKSk7ZC5jYXNlcy5wdXNoKGUpfX0pLGQ7Y2FzZSBGT1I6cmV0dXJuIGQ9dGhpcy5uZXdOb2RlKExPT1BfSU5JVCksZC5ibG9ja0NvbW1lbnRzPW4sdGhpcy5tYXRjaChJREVOVElGSUVSKSYmKHRoaXMudC50b2tlbi52YWx1ZT09PSJlYWNoIj9kLmlzRWFjaD0hMDp0aGlzLnQudW5nZXQoKSksdGhpcy5wYXJlbkZyZWVNb2RlfHx0aGlzLm11c3RNYXRjaChMRUZUX1BBUkVOKSxsPXRoaXMueC5wdXNoVGFyZ2V0KGQpLm5lc3QoKSxtPXRoaXMueC51cGRhdGUoe2luRm9yTG9vcEluaXQ6ITB9KSxlPW51bGwsKGk9dGhpcy5wZWVrKCEwKSkhPT1TRU1JQ09MT04mJnRoaXMud2l0aENvbnRleHQobSxmdW5jdGlvbigpe2k9PT1WQVJ8fGk9PT1DT05TVD8odGhpcy50LmdldCgpLGU9dGhpcy5WYXJpYWJsZXMoKSk6aT09PUxFVD8odGhpcy50LmdldCgpLHRoaXMucGVlaygpPT09TEVGVF9QQVJFTj9lPXRoaXMuTGV0QmxvY2soITEpOih0aGlzLngucGFyZW50QmxvY2s9ZCxkLnZhckRlY2xzPVtdLGU9dGhpcy5WYXJpYWJsZXMoKSkpOmU9dGhpcy5FeHByZXNzaW9uKCl9KSxlJiZ0aGlzLm1hdGNoKElOKT8oZC50eXBlPUZPUl9JTix0aGlzLndpdGhDb250ZXh0KG0sZnVuY3Rpb24oKXtkLm9iamVjdD10aGlzLkV4cHJlc3Npb24oKTtpZihlLnR5cGU9PT1WQVJ8fGUudHlwZT09PUxFVCl7Zz1lLmNoaWxkcmVuO2lmKGcubGVuZ3RoIT09MSYmZS5kZXN0cnVjdHVyaW5ncy5sZW5ndGghPT0xKXRocm93IG5ldyBTeW50YXhFcnJvcigiSW52YWxpZCBmb3IuLmluIGxlZnQtaGFuZCBzaWRlIix0aGlzLmZpbGVuYW1lLGUubGluZW5vKTtlLmRlc3RydWN0dXJpbmdzLmxlbmd0aD4wP2QuaXRlcmF0b3I9ZS5kZXN0cnVjdHVyaW5nc1swXTpkLml0ZXJhdG9yPWdbMF0sZC52YXJEZWNsPWV9ZWxzZXtpZihlLnR5cGU9PT1BUlJBWV9JTklUfHxlLnR5cGU9PT1PQkpFQ1RfSU5JVCllLmRlc3RydWN0dXJlZE5hbWVzPXRoaXMuY2hlY2tEZXN0cnVjdHVyaW5nKGUpO2QuaXRlcmF0b3I9ZX19KSk6KG0uaW5Gb3JMb29wSW5pdD0hMSxkLnNldHVwPWUsdGhpcy5tdXN0TWF0Y2goU0VNSUNPTE9OKSxkLmlzRWFjaCYmdGhpcy5mYWlsKCJJbnZhbGlkIGZvciBlYWNoLi5pbiBsb29wIiksdGhpcy53aXRoQ29udGV4dChtLGZ1bmN0aW9uKCl7ZC5jb25kaXRpb249dGhpcy5wZWVrKCEwKT09PVNFTUlDT0xPTj9udWxsOnRoaXMuRXhwcmVzc2lvbigpLHRoaXMubXVzdE1hdGNoKFNFTUlDT0xPTiksaj10aGlzLnBlZWsoITApLGQudXBkYXRlPSh0aGlzLnBhcmVuRnJlZU1vZGU/aj09PUxFRlRfQ1VSTFl8fGRlZmluaXRpb25zLmlzU3RhdGVtZW50U3RhcnRDb2RlW2pdOmo9PT1SSUdIVF9QQVJFTik/bnVsbDp0aGlzLkV4cHJlc3Npb24oKX0pKSx0aGlzLnBhcmVuRnJlZU1vZGV8fHRoaXMubXVzdE1hdGNoKFJJR0hUX1BBUkVOKSx0aGlzLndpdGhDb250ZXh0KGwsZnVuY3Rpb24oKXtkLmJvZHk9dGhpcy5TdGF0ZW1lbnQoKX0pLGQ7Y2FzZSBXSElMRTpyZXR1cm4gZD10aGlzLm5ld05vZGUoe2lzTG9vcDohMH0pLGQuYmxvY2tDb21tZW50cz1uLGQuY29uZGl0aW9uPXRoaXMuSGVhZEV4cHJlc3Npb24oKSxsPXRoaXMueC5wdXNoVGFyZ2V0KGQpLm5lc3QoKSx0aGlzLndpdGhDb250ZXh0KGwsZnVuY3Rpb24oKXtkLmJvZHk9dGhpcy5TdGF0ZW1lbnQoKX0pLGQ7Y2FzZSBETzpyZXR1cm4gZD10aGlzLm5ld05vZGUoe2lzTG9vcDohMH0pLGQuYmxvY2tDb21tZW50cz1uLGw9dGhpcy54LnB1c2hUYXJnZXQoZCkubmV4dCgpLHRoaXMud2l0aENvbnRleHQobCxmdW5jdGlvbigpe2QuYm9keT10aGlzLlN0YXRlbWVudCgpfSksdGhpcy5tdXN0TWF0Y2goV0hJTEUpLGQuY29uZGl0aW9uPXRoaXMuSGVhZEV4cHJlc3Npb24oKSx0aGlzLm1hdGNoKFNFTUlDT0xPTiksZDtjYXNlIEJSRUFLOmNhc2UgQ09OVElOVUU6ZD10aGlzLm5ld05vZGUoKSxkLmJsb2NrQ29tbWVudHM9bixsPXRoaXMueC5wdXNoVGFyZ2V0KGQpLHRoaXMucGVla09uU2FtZUxpbmUoKT09PUlERU5USUZJRVImJih0aGlzLnQuZ2V0KCksZC5sYWJlbD10aGlzLnQudG9rZW4udmFsdWUpLGQubGFiZWw/ZC50YXJnZXQ9bC5sYWJlbGVkVGFyZ2V0cy5maW5kKGZ1bmN0aW9uKGEpe3JldHVybiBhLmxhYmVscy5oYXMoZC5sYWJlbCl9KTppPT09Q09OVElOVUU/ZC50YXJnZXQ9bC5kZWZhdWx0TG9vcFRhcmdldDpkLnRhcmdldD1sLmRlZmF1bHRUYXJnZXQsZC50YXJnZXR8fHRoaXMuZmFpbCgiSW52YWxpZCAiKyhpPT09QlJFQUs/ImJyZWFrIjoiY29udGludWUiKSksIWQudGFyZ2V0LmlzTG9vcCYmaT09PUNPTlRJTlVFJiZ0aGlzLmZhaWwoIkludmFsaWQgY29udGludWUiKTticmVhaztjYXNlIFRSWTpkPXRoaXMubmV3Tm9kZSh7Y2F0Y2hDbGF1c2VzOltdfSksZC5ibG9ja0NvbW1lbnRzPW4sZC50cnlCbG9jaz10aGlzLkJsb2NrKCk7d2hpbGUodGhpcy5tYXRjaChDQVRDSCkpe2U9dGhpcy5uZXdOb2RlKCksZj10aGlzLk1heWJlTGVmdFBhcmVuKCk7c3dpdGNoKHRoaXMudC5nZXQoKSl7Y2FzZSBMRUZUX0JSQUNLRVQ6Y2FzZSBMRUZUX0NVUkxZOnRoaXMudC51bmdldCgpLGUudmFyTmFtZT10aGlzLkRlc3RydWN0dXJpbmdFeHByZXNzaW9uKCEwKTticmVhaztjYXNlIElERU5USUZJRVI6ZS52YXJOYW1lPXRoaXMudC50b2tlbi52YWx1ZTticmVhaztkZWZhdWx0OnRoaXMuZmFpbCgibWlzc2luZyBpZGVudGlmaWVyIGluIGNhdGNoIil9dGhpcy5tYXRjaChJRikmJih0aGlzLm1vemlsbGFNb2RlfHx0aGlzLmZhaWwoIklsbGVnYWwgY2F0Y2ggZ3VhcmQiKSxkLmNhdGNoQ2xhdXNlcy5sZW5ndGgmJiFkLmNhdGNoQ2xhdXNlcy50b3AoKS5ndWFyZCYmdGhpcy5mYWlsKCJHdWFyZGVkIGNhdGNoIGFmdGVyIHVuZ3VhcmRlZCIpLGUuZ3VhcmQ9dGhpcy5FeHByZXNzaW9uKCkpLHRoaXMuTWF5YmVSaWdodFBhcmVuKGYpLGUuYmxvY2s9dGhpcy5CbG9jaygpLGQuY2F0Y2hDbGF1c2VzLnB1c2goZSl9cmV0dXJuIHRoaXMubWF0Y2goRklOQUxMWSkmJihkLmZpbmFsbHlCbG9jaz10aGlzLkJsb2NrKCkpLCFkLmNhdGNoQ2xhdXNlcy5sZW5ndGgmJiFkLmZpbmFsbHlCbG9jayYmdGhpcy5mYWlsKCJJbnZhbGlkIHRyeSBzdGF0ZW1lbnQiKSxkO2Nhc2UgQ0FUQ0g6Y2FzZSBGSU5BTExZOnRoaXMuZmFpbChkZWZpbml0aW9ucy50b2tlbnNbaV0rIiB3aXRob3V0IHByZWNlZGluZyB0cnkiKTtjYXNlIFRIUk9XOmQ9dGhpcy5uZXdOb2RlKCksZC5leGNlcHRpb249dGhpcy5FeHByZXNzaW9uKCk7YnJlYWs7Y2FzZSBSRVRVUk46ZD10aGlzLlJldHVybk9yWWllbGQoKTticmVhaztjYXNlIFdJVEg6cmV0dXJuIHRoaXMueC5iYW5XaXRoKCkmJnRoaXMuZmFpbCgid2l0aCBzdGF0ZW1lbnRzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBjb2RlIG9yIG1vZHVsZXMiKSxkPXRoaXMubmV3Tm9kZSgpLGQuYmxvY2tDb21tZW50cz1uLGQub2JqZWN0PXRoaXMuSGVhZEV4cHJlc3Npb24oKSxsPXRoaXMueC5wdXNoVGFyZ2V0KGQpLm5leHQoKSx0aGlzLndpdGhDb250ZXh0KGwsZnVuY3Rpb24oKXtkLmJvZHk9dGhpcy5TdGF0ZW1lbnQoKX0pLGQ7Y2FzZSBWQVI6Y2FzZSBDT05TVDpkPXRoaXMuVmFyaWFibGVzKCk7YnJlYWs7Y2FzZSBMRVQ6aWYodGhpcy5wZWVrKCk9PT1MRUZUX1BBUkVOKXJldHVybiBkPXRoaXMuTGV0QmxvY2soITApLGQ7ZD10aGlzLlZhcmlhYmxlcygpO2JyZWFrO2Nhc2UgREVCVUdHRVI6ZD10aGlzLm5ld05vZGUoKTticmVhaztjYXNlIE5FV0xJTkU6Y2FzZSBTRU1JQ09MT046cmV0dXJuIGQ9dGhpcy5uZXdOb2RlKHt0eXBlOlNFTUlDT0xPTn0pLGQuYmxvY2tDb21tZW50cz1uLGQuZXhwcmVzc2lvbj1udWxsLGQ7Y2FzZSBJREVOVElGSUVSOmNhc2UgVVNFOmNhc2UgTU9EVUxFOnN3aXRjaCh0aGlzLnQudG9rZW4udmFsdWUpe2Nhc2UidXNlIjppZighaXNQcmFnbWFUb2tlbih0aGlzLnBlZWtPblNhbWVMaW5lKCkpKXt0aGlzLnQudW5nZXQoKTticmVha31yZXR1cm4gdGhpcy5uZXdOb2RlKHt0eXBlOlVTRSxwYXJhbXM6dGhpcy5QcmFnbWFzKCl9KTtjYXNlIm1vZHVsZSI6dGhpcy54Lm1vZHVsZXNBbGxvd2VkKCl8fHRoaXMuZmFpbCgibW9kdWxlIGRlY2xhcmF0aW9uIG5vdCBhdCB0b3AgbGV2ZWwiKSx0aGlzLngucGFyZW50U2NyaXB0Lmhhc01vZHVsZXM9ITAsaT10aGlzLnBlZWtPblNhbWVMaW5lKCk7aWYoaSE9PUlERU5USUZJRVImJmkhPT1MRUZUX0NVUkxZKXt0aGlzLnQudW5nZXQoKTticmVha31kPXRoaXMubmV3Tm9kZSh7dHlwZTpNT0RVTEV9KSxkLmJsb2NrQ29tbWVudHM9bix0aGlzLm11c3RNYXRjaChJREVOVElGSUVSKSxjPXRoaXMudC50b2tlbi52YWx1ZTtpZih0aGlzLm1hdGNoKExFRlRfQ1VSTFkpKXJldHVybiBkLm5hbWU9YyxkLmJvZHk9dGhpcy5TY3JpcHQoITAsITEpLGQubW9kdWxlPW5ldyBNb2R1bGUoZCksdGhpcy5tdXN0TWF0Y2goUklHSFRfQ1VSTFkpLHRoaXMueC5wYXJlbnRTY3JpcHQubW9kRGVmbnMuc2V0KGQubmFtZSxkKSxkO3JldHVybiB0aGlzLnQudW5nZXQoKSx0aGlzLk1vZHVsZVZhcmlhYmxlcyhkKSxkO2RlZmF1bHQ6aT10aGlzLnBlZWsoKTtpZihpPT09Q09MT04pcmV0dXJuIGM9dGhpcy50LnRva2VuLnZhbHVlLHRoaXMueC5hbGxMYWJlbHMuaGFzKGMpJiZ0aGlzLmZhaWwoIkR1cGxpY2F0ZSBsYWJlbDogIitjKSx0aGlzLnQuZ2V0KCksZD10aGlzLm5ld05vZGUoe3R5cGU6TEFCRUwsbGFiZWw6Y30pLGQuYmxvY2tDb21tZW50cz1uLGw9dGhpcy54LnB1c2hMYWJlbChjKS5uZXN0KCksdGhpcy53aXRoQ29udGV4dChsLGZ1bmN0aW9uKCl7ZC5zdGF0ZW1lbnQ9dGhpcy5TdGF0ZW1lbnQoKX0pLGQudGFyZ2V0PWQuc3RhdGVtZW50LnR5cGU9PT1MQUJFTD9kLnN0YXRlbWVudC50YXJnZXQ6ZC5zdGF0ZW1lbnQsZH07ZGVmYXVsdDpkPXRoaXMubmV3Tm9kZSh7dHlwZTpTRU1JQ09MT059KSx0aGlzLnQudW5nZXQoKSxkLmJsb2NrQ29tbWVudHM9bixkLmV4cHJlc3Npb249dGhpcy5FeHByZXNzaW9uKCksZC5lbmQ9ZC5leHByZXNzaW9uLmVuZH1yZXR1cm4gZC5ibG9ja0NvbW1lbnRzPW4sdGhpcy5NYWdpY2FsU2VtaWNvbG9uKCksZH0sUHAuUHJhZ21hcz1mdW5jdGlvbigpe3ZhciBiPVtdO2RvIGIucHVzaCh0aGlzLlByYWdtYSgpKTt3aGlsZSh0aGlzLm1hdGNoKENPTU1BKSk7cmV0dXJuIHRoaXMuTWFnaWNhbFNlbWljb2xvbigpLGJ9LFBwLlByYWdtYT1mdW5jdGlvbigpe3ZhciBiPVtdLGM7ZG8gYz10aGlzLnQuZ2V0KCEwKSxiLnB1c2godGhpcy50LnRva2VuKTt3aGlsZShpc1ByYWdtYVRva2VuKHRoaXMucGVlaygpKSk7cmV0dXJuIGJ9LFBwLk1hZ2ljYWxTZW1pY29sb249ZnVuY3Rpb24oKXt2YXIgYjt0aGlzLnQubGluZW5vPT09dGhpcy50LnRva2VuLmxpbmVubyYmKGI9dGhpcy5wZWVrT25TYW1lTGluZSgpLGIhPT1FTkQmJmIhPT1ORVdMSU5FJiZiIT09U0VNSUNPTE9OJiZiIT09UklHSFRfQ1VSTFkmJnRoaXMuZmFpbCgibWlzc2luZyA7IGJlZm9yZSBzdGF0ZW1lbnQiKSksdGhpcy5tYXRjaChTRU1JQ09MT04pfSxQcC5SZXR1cm5PcllpZWxkPWZ1bmN0aW9uKCl7dmFyIGIsYyxkPXRoaXMudC50b2tlbi50eXBlLGUsZj10aGlzLngucGFyZW50U2NyaXB0O3JldHVybiBkPT09UkVUVVJOP3RoaXMueC5pbkZ1bmN0aW9ufHx0aGlzLmZhaWwoIlJldHVybiBub3QgaW4gZnVuY3Rpb24iKToodGhpcy54LmluRnVuY3Rpb258fHRoaXMuZmFpbCgiWWllbGQgbm90IGluIGZ1bmN0aW9uIiksZi5oYXNZaWVsZD0hMCksYj10aGlzLm5ld05vZGUoe3ZhbHVlOnVuZGVmaW5lZH0pLGU9ZD09PVJFVFVSTj90aGlzLnBlZWtPblNhbWVMaW5lKCEwKTp0aGlzLnBlZWsoITApLGUhPT1FTkQmJmUhPT1ORVdMSU5FJiZlIT09U0VNSUNPTE9OJiZlIT09UklHSFRfQ1VSTFkmJihkIT09WUlFTER8fGUhPT1kJiZlIT09UklHSFRfQlJBQ0tFVCYmZSE9PVJJR0hUX1BBUkVOJiZlIT09Q09MT04mJmUhPT1DT01NQSk/ZD09PVJFVFVSTj8oYi52YWx1ZT10aGlzLkV4cHJlc3Npb24oKSxmLmhhc1JldHVybldpdGhWYWx1ZT0hMCk6Yi52YWx1ZT10aGlzLkFzc2lnbkV4cHJlc3Npb24oKTpkPT09UkVUVVJOJiYoZi5oYXNFbXB0eVJldHVybj0hMCksYn0sUHAuTW9kdWxlRXhwcmVzc2lvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoKFNUUklORyk/dGhpcy5uZXdOb2RlKCk6dGhpcy5RdWFsaWZpZWRQYXRoKCl9LFBwLkltcG9ydFBhdGhMaXN0PWZ1bmN0aW9uKCl7dmFyIGI9W107ZG8gYi5wdXNoKHRoaXMuSW1wb3J0UGF0aCgpKTt3aGlsZSh0aGlzLm1hdGNoKENPTU1BKSk7cmV0dXJuIGJ9LFBwLkltcG9ydFBhdGg9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLlF1YWxpZmllZFBhdGgoKTtpZighdGhpcy5tYXRjaChET1QpKXJldHVybiBiLnR5cGU9PT1JREVOVElGSUVSJiZ0aGlzLmZhaWwoImNhbm5vdCBpbXBvcnQgbG9jYWwgdmFyaWFibGUiKSxiO3ZhciBjPXRoaXMubmV3Tm9kZSgpO3JldHVybiBjLnB1c2goYiksYy5wdXNoKHRoaXMuSW1wb3J0U3BlY2lmaWVyU2V0KCkpLGN9LFBwLkV4cGxpY2l0U3BlY2lmaWVyU2V0PWZ1bmN0aW9uKGIpe3ZhciBjLGQsZSxmO2M9dGhpcy5uZXdOb2RlKHt0eXBlOk9CSkVDVF9JTklUfSksdGhpcy5tdXN0TWF0Y2goTEVGVF9DVVJMWSk7aWYoIXRoaXMubWF0Y2goUklHSFRfQ1VSTFkpKWRvIGU9dGhpcy5JZGVudGlmaWVyKCksdGhpcy5tYXRjaChDT0xPTik/KGQ9dGhpcy5uZXdOb2RlKHt0eXBlOlBST1BFUlRZX0lOSVR9KSxkLnB1c2goZSksZC5wdXNoKGIoKSksYy5wdXNoKGQpKTpjLnB1c2goZSk7d2hpbGUoIXRoaXMubWF0Y2goUklHSFRfQ1VSTFkpJiZ0aGlzLm11c3RNYXRjaChDT01NQSkpO3JldHVybiBjfSxQcC5JbXBvcnRTcGVjaWZpZXJTZXQ9ZnVuY3Rpb24oKXt2YXIgYj10aGlzO3JldHVybiB0aGlzLm1hdGNoKE1VTCk/dGhpcy5uZXdOb2RlKHt0eXBlOklERU5USUZJRVIsbmFtZToiKiJ9KTpFeHBsaWNpdFNwZWNpZmllclNldChmdW5jdGlvbigpe3JldHVybiBiLklkZW50aWZpZXIoKX0pfSxQcC5JZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVzdE1hdGNoKElERU5USUZJRVIpLHRoaXMubmV3Tm9kZSh7dHlwZTpJREVOVElGSUVSfSl9LFBwLklkZW50aWZpZXJOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVzdE1hdGNoKElERU5USUZJRVIsITApLHRoaXMubmV3Tm9kZSh7dHlwZTpJREVOVElGSUVSfSl9LFBwLlF1YWxpZmllZFBhdGg9ZnVuY3Rpb24oKXt2YXIgYixjO2I9dGhpcy5JZGVudGlmaWVyKCk7d2hpbGUodGhpcy5tYXRjaChET1QpKXtpZih0aGlzLnBlZWsoKSE9PUlERU5USUZJRVIpe3RoaXMudC51bmdldCgpO2JyZWFrfWM9dGhpcy5uZXdOb2RlKCksYy5wdXNoKGIpLGMucHVzaCh0aGlzLklkZW50aWZpZXIoKSksYj1jfXJldHVybiBifSxQcC5FeHBvcnRQYXRoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcztyZXR1cm4gdGhpcy5wZWVrKCk9PT1MRUZUX0NVUkxZP3RoaXMuRXhwbGljaXRTcGVjaWZpZXJTZXQoZnVuY3Rpb24oKXtyZXR1cm4gYi5RdWFsaWZpZWRQYXRoKCl9KTp0aGlzLlF1YWxpZmllZFBhdGgoKX0sUHAuRXhwb3J0UGF0aExpc3Q9ZnVuY3Rpb24oKXt2YXIgYj1bXTtkbyBiLnB1c2godGhpcy5FeHBvcnRQYXRoKCkpO3doaWxlKHRoaXMubWF0Y2goQ09NTUEpKTtyZXR1cm4gYn0sUHAuRnVuY3Rpb25EZWZpbml0aW9uPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmPXRoaXMubmV3Tm9kZSh7cGFyYW1zOltdLHBhcmFtQ29tbWVudHM6W119KTt0eXBlb2YgZD09InVuZGVmaW5lZCImJihkPW51bGwpLGYuYmxvY2tDb21tZW50cz1kLGYudHlwZSE9PUZVTkNUSU9OJiYoZi50eXBlPWYudmFsdWU9PT0iZ2V0Ij9HRVRURVI6U0VUVEVSKSx0aGlzLm1hdGNoKE1VTCkmJihmLmlzRXhwbGljaXRHZW5lcmF0b3I9ITApLHRoaXMubWF0Y2goSURFTlRJRklFUiwhMSwhMCk/Zi5uYW1lPXRoaXMudC50b2tlbi52YWx1ZTpiJiZ0aGlzLmZhaWwoIm1pc3NpbmcgZnVuY3Rpb24gaWRlbnRpZmllciIpO3ZhciBnPXRoaXMueC5pbk1vZHVsZTt4Mj1uZXcgU3RhdGljQ29udGV4dChudWxsLG51bGwsZywhMCx0aGlzLnguc3RyaWN0TW9kZSksdGhpcy53aXRoQ29udGV4dCh4MixmdW5jdGlvbigpe3RoaXMubXVzdE1hdGNoKExFRlRfUEFSRU4pO2lmKCF0aGlzLm1hdGNoKFJJR0hUX1BBUkVOKSl7ZG97ZT10aGlzLnQuZ2V0KCksZi5wYXJhbUNvbW1lbnRzLnB1c2godGhpcy50Lmxhc3RCbG9ja0NvbW1lbnQoKSk7c3dpdGNoKGUpe2Nhc2UgTEVGVF9CUkFDS0VUOmNhc2UgTEVGVF9DVVJMWTp0aGlzLnQudW5nZXQoKSxmLnBhcmFtcy5wdXNoKHRoaXMuRGVzdHJ1Y3R1cmluZ0V4cHJlc3Npb24oKSk7YnJlYWs7Y2FzZSBJREVOVElGSUVSOmYucGFyYW1zLnB1c2godGhpcy50LnRva2VuLnZhbHVlKTticmVhaztkZWZhdWx0OnRoaXMuZmFpbCgibWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyIil9fXdoaWxlKHRoaXMubWF0Y2goQ09NTUEpKTt0aGlzLm11c3RNYXRjaChSSUdIVF9QQVJFTil9ZT10aGlzLnQuZ2V0KCEwKSxlIT09TEVGVF9DVVJMWSYmdGhpcy50LnVuZ2V0KCksZSE9PUxFRlRfQ1VSTFk/Zi5ib2R5PXRoaXMuQXNzaWduRXhwcmVzc2lvbigpOmYuYm9keT10aGlzLlNjcmlwdChnLCEwKX0pLGU9PT1MRUZUX0NVUkxZJiZ0aGlzLm11c3RNYXRjaChSSUdIVF9DVVJMWSksZi5lbmQ9dGhpcy50LnRva2VuLmVuZCxmLmZ1bmN0aW9uRm9ybT1jLGM9PT1ERUNMQVJFRF9GT1JNJiZ0aGlzLngucGFyZW50U2NyaXB0LmZ1bkRlY2xzLnB1c2goZiksdGhpcy54LmluTW9kdWxlJiYhZi5pc0V4cGxpY2l0R2VuZXJhdG9yJiZmLmJvZHkuaGFzWWllbGQmJnRoaXMuZmFpbCgieWllbGQgaW4gbm9uLWdlbmVyYXRvciBmdW5jdGlvbiIpO2lmKGYuaXNFeHBsaWNpdEdlbmVyYXRvcnx8Zi5ib2R5Lmhhc1lpZWxkKWYuYm9keT10aGlzLm5ld05vZGUoe3R5cGU6R0VORVJBVE9SLGJvZHk6Zi5ib2R5fSk7cmV0dXJuIGZ9LFBwLk1vZHVsZVZhcmlhYmxlcz1mdW5jdGlvbihiKXt2YXIgYyxkO2RvIGM9dGhpcy5JZGVudGlmaWVyKCksdGhpcy5tYXRjaChBU1NJR04pJiYoZD10aGlzLk1vZHVsZUV4cHJlc3Npb24oKSxjLmluaXRpYWxpemVyPWQsZC50eXBlPT09U1RSSU5HP3RoaXMueC5wYXJlbnRTY3JpcHQubW9kTG9hZHMuc2V0KGMudmFsdWUsZC52YWx1ZSk6dGhpcy54LnBhcmVudFNjcmlwdC5tb2RBc3Nucy5zZXQoYy52YWx1ZSxjKSksYi5wdXNoKGMpO3doaWxlKHRoaXMubWF0Y2goQ09NTUEpKX0sUHAuVmFyaWFibGVzPWZ1bmN0aW9uKGIpe3ZhciBjLGQsZSxmLGcsaDtoPXRoaXMudC50b2tlbi50eXBlO3N3aXRjaChoKXtjYXNlIFZBUjpjYXNlIENPTlNUOmc9dGhpcy54LnBhcmVudFNjcmlwdDticmVhaztjYXNlIExFVDpnPXRoaXMueC5wYXJlbnRCbG9jazticmVhaztjYXNlIExFRlRfUEFSRU46aD1MRVQsZz1ifWM9dGhpcy5uZXdOb2RlKHt0eXBlOmgsZGVzdHJ1Y3R1cmluZ3M6W119KTtkb3toPXRoaXMudC5nZXQoKTtpZihoPT09TEVGVF9CUkFDS0VUfHxoPT09TEVGVF9DVVJMWSl7dGhpcy50LnVuZ2V0KCk7dmFyIGk9dGhpcy5EZXN0cnVjdHVyaW5nRXhwcmVzc2lvbighMCk7ZD10aGlzLm5ld05vZGUoe3R5cGU6SURFTlRJRklFUixuYW1lOmkscmVhZE9ubHk6Yy50eXBlPT09Q09OU1R9KSxjLnB1c2goZCkscHVzaERlc3RydWN0dXJpbmdWYXJEZWNscyhkLm5hbWUuZGVzdHJ1Y3R1cmVkTmFtZXMsZyksYy5kZXN0cnVjdHVyaW5ncy5wdXNoKHtleHA6aSxkZWNsOmR9KTtpZih0aGlzLnguaW5Gb3JMb29wSW5pdCYmdGhpcy5wZWVrKCk9PT1JTiljb250aW51ZTt0aGlzLm11c3RNYXRjaChBU1NJR04pLHRoaXMudC50b2tlbi5hc3NpZ25PcCYmdGhpcy5mYWlsKCJJbnZhbGlkIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uIiksZC5ibG9ja0NvbW1lbnQ9dGhpcy50Lmxhc3RCbG9ja0NvbW1lbnQoKSxkLmluaXRpYWxpemVyPXRoaXMuQXNzaWduRXhwcmVzc2lvbigpO2NvbnRpbnVlfWghPT1JREVOVElGSUVSJiZ0aGlzLmZhaWwoIm1pc3NpbmcgdmFyaWFibGUgbmFtZSIpLGQ9dGhpcy5uZXdOb2RlKHt0eXBlOklERU5USUZJRVIsbmFtZTp0aGlzLnQudG9rZW4udmFsdWUscmVhZE9ubHk6Yy50eXBlPT09Q09OU1R9KSxjLnB1c2goZCksZy52YXJEZWNscy5wdXNoKGQpO2lmKHRoaXMubWF0Y2goQVNTSUdOKSl7dmFyIGo9dGhpcy50Lmxhc3RCbG9ja0NvbW1lbnQoKTt0aGlzLnQudG9rZW4uYXNzaWduT3AmJnRoaXMuZmFpbCgiSW52YWxpZCB2YXJpYWJsZSBpbml0aWFsaXphdGlvbiIpLGQuaW5pdGlhbGl6ZXI9dGhpcy5Bc3NpZ25FeHByZXNzaW9uKCl9ZWxzZSB2YXIgaj10aGlzLnQubGFzdEJsb2NrQ29tbWVudCgpO2QuYmxvY2tDb21tZW50PWp9d2hpbGUodGhpcy5tYXRjaChDT01NQSkpO3JldHVybiBjfSxQcC5MZXRCbG9jaz1mdW5jdGlvbihiKXt2YXIgYyxkO3JldHVybiBjPXRoaXMubmV3Tm9kZSh7dHlwZTpMRVRfQkxPQ0ssdmFyRGVjbHM6W119KSx0aGlzLm11c3RNYXRjaChMRUZUX1BBUkVOKSxjLnZhcmlhYmxlcz10aGlzLlZhcmlhYmxlcyhjKSx0aGlzLm11c3RNYXRjaChSSUdIVF9QQVJFTiksYiYmdGhpcy5wZWVrKCkhPT1MRUZUX0NVUkxZJiYoZD10aGlzLm5ld05vZGUoe3R5cGU6U0VNSUNPTE9OLGV4cHJlc3Npb246Y30pLGI9ITEpLGI/Yy5ibG9jaz10aGlzLkJsb2NrKCk6Yy5leHByZXNzaW9uPXRoaXMuQXNzaWduRXhwcmVzc2lvbigpLGN9LFBwLmNoZWNrRGVzdHJ1Y3R1cmluZz1mdW5jdGlvbihiLGMpe2IudHlwZT09PUFSUkFZX0NPTVAmJnRoaXMuZmFpbCgiSW52YWxpZCBhcnJheSBjb21wcmVoZW5zaW9uIGxlZnQtaGFuZCBzaWRlIik7aWYoYi50eXBlIT09QVJSQVlfSU5JVCYmYi50eXBlIT09T0JKRUNUX0lOSVQpcmV0dXJuO3ZhciBkPXt9LGUsZixnLGgsaSxqPWIuY2hpbGRyZW47Zm9yKHZhciBrPTAsbD1qLmxlbmd0aDtrPGw7aysrKXtpZighKGU9altrXSkpY29udGludWU7ZS50eXBlPT09UFJPUEVSVFlfSU5JVD8oaT1lLmNoaWxkcmVuLGg9aVsxXSxnPWlbMF0udmFsdWUpOmIudHlwZT09PU9CSkVDVF9JTklUPyhoPWUsZz1lLnZhbHVlKTooaD1lLGc9ayksaC50eXBlPT09QVJSQVlfSU5JVHx8aC50eXBlPT09T0JKRUNUX0lOSVQ/ZFtnXT10aGlzLmNoZWNrRGVzdHJ1Y3R1cmluZyhoLGMpOihjJiZoLnR5cGUhPT1JREVOVElGSUVSJiZ0aGlzLmZhaWwoIm1pc3NpbmcgbmFtZSBpbiBwYXR0ZXJuIiksZFtnXT1oKX1yZXR1cm4gZH0sUHAuRGVzdHJ1Y3R1cmluZ0V4cHJlc3Npb249ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5QcmltYXJ5RXhwcmVzc2lvbigpO3JldHVybiBjLmRlc3RydWN0dXJlZE5hbWVzPXRoaXMuY2hlY2tEZXN0cnVjdHVyaW5nKGMsYiksY30sUHAuR2VuZXJhdG9yRXhwcmVzc2lvbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5uZXdOb2RlKHt0eXBlOkdFTkVSQVRPUixleHByZXNzaW9uOmIsdGFpbDp0aGlzLkNvbXByZWhlbnNpb25UYWlsKCl9KX0sUHAuQ29tcHJlaGVuc2lvblRhaWw9ZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmO2I9dGhpcy5uZXdOb2RlKHt0eXBlOkNPTVBfVEFJTH0pO2Rve2M9dGhpcy5uZXdOb2RlKHt0eXBlOkZPUl9JTixpc0xvb3A6ITB9KSx0aGlzLm1hdGNoKElERU5USUZJRVIpJiYodGhpcy5tb3ppbGxhTW9kZSYmdGhpcy50LnRva2VuLnZhbHVlPT09ImVhY2giP2MuaXNFYWNoPSEwOnRoaXMudC51bmdldCgpKSxmPXRoaXMuTWF5YmVMZWZ0UGFyZW4oKTtzd2l0Y2godGhpcy50LmdldCgpKXtjYXNlIExFRlRfQlJBQ0tFVDpjYXNlIExFRlRfQ1VSTFk6dGhpcy50LnVuZ2V0KCksYy5pdGVyYXRvcj10aGlzLkRlc3RydWN0dXJpbmdFeHByZXNzaW9uKCk7YnJlYWs7Y2FzZSBJREVOVElGSUVSOmMuaXRlcmF0b3I9ZT10aGlzLm5ld05vZGUoe3R5cGU6SURFTlRJRklFUn0pLGUubmFtZT1lLnZhbHVlLGMudmFyRGVjbD1kPXRoaXMubmV3Tm9kZSh7dHlwZTpWQVJ9KSxkLnB1c2goZSksdGhpcy54LnBhcmVudFNjcmlwdC52YXJEZWNscy5wdXNoKGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5mYWlsKCJtaXNzaW5nIGlkZW50aWZpZXIiKX10aGlzLm11c3RNYXRjaChJTiksYy5vYmplY3Q9dGhpcy5FeHByZXNzaW9uKCksdGhpcy5NYXliZVJpZ2h0UGFyZW4oZiksYi5wdXNoKGMpfXdoaWxlKHRoaXMubWF0Y2goRk9SKSk7cmV0dXJuIHRoaXMubWF0Y2goSUYpJiYoYi5ndWFyZD10aGlzLkhlYWRFeHByZXNzaW9uKCkpLGJ9LFBwLkhlYWRFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5NYXliZUxlZnRQYXJlbigpLGM9dGhpcy5QYXJlbkV4cHJlc3Npb24oKTt0aGlzLk1heWJlUmlnaHRQYXJlbihiKTtpZihiPT09RU5EJiYhYy5wYXJlbnRoZXNpemVkKXt2YXIgZD10aGlzLnBlZWsoKTtkIT09TEVGVF9DVVJMWSYmIWRlZmluaXRpb25zLmlzU3RhdGVtZW50U3RhcnRDb2RlW2RdJiZ0aGlzLmZhaWwoIlVucGFyZW50aGVzaXplZCBoZWFkIGZvbGxvd2VkIGJ5IHVuYnJhY2VkIGJvZHkiKX1yZXR1cm4gY30sUHAuUGFyZW5FeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy54LnVwZGF0ZSh7aW5Gb3JMb29wSW5pdDp0aGlzLnguaW5Gb3JMb29wSW5pdCYmdGhpcy50LnRva2VuLnR5cGU9PT1MRUZUX1BBUkVOfSksYz10aGlzLndpdGhDb250ZXh0KGIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5FeHByZXNzaW9uKCl9KTtyZXR1cm4gdGhpcy5tYXRjaChGT1IpJiYoYy50eXBlPT09WUlFTEQmJiFjLnBhcmVudGhlc2l6ZWQmJnRoaXMuZmFpbCgiWWllbGQgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQiKSxjLnR5cGU9PT1DT01NQSYmIWMucGFyZW50aGVzaXplZCYmdGhpcy5mYWlsKCJHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQiKSxjPXRoaXMuR2VuZXJhdG9yRXhwcmVzc2lvbihjKSksY30sUHAuRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciBiLGM7Yj10aGlzLkFzc2lnbkV4cHJlc3Npb24oKTtpZih0aGlzLm1hdGNoKENPTU1BKSl7Yz10aGlzLm5ld05vZGUoe3R5cGU6Q09NTUF9KSxjLnB1c2goYiksYj1jO2RvIGM9Yi5jaGlsZHJlbltiLmNoaWxkcmVuLmxlbmd0aC0xXSxjLnR5cGU9PT1ZSUVMRCYmIWMucGFyZW50aGVzaXplZCYmdGhpcy5mYWlsKCJZaWVsZCBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCIpLGIucHVzaCh0aGlzLkFzc2lnbkV4cHJlc3Npb24oKSk7d2hpbGUodGhpcy5tYXRjaChDT01NQSkpfXJldHVybiBifSxQcC5Bc3NpZ25FeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGIsYztpZih0aGlzLm1hdGNoKFlJRUxELCEwKSlyZXR1cm4gdGhpcy5SZXR1cm5PcllpZWxkKCk7Yj10aGlzLm5ld05vZGUoe3R5cGU6QVNTSUdOfSksYz10aGlzLkNvbmRpdGlvbmFsRXhwcmVzc2lvbigpO2lmKCF0aGlzLm1hdGNoKEFTU0lHTikpcmV0dXJuIGM7Yi5ibG9ja0NvbW1lbnQ9dGhpcy50Lmxhc3RCbG9ja0NvbW1lbnQoKTtzd2l0Y2goYy50eXBlKXtjYXNlIE9CSkVDVF9JTklUOmNhc2UgQVJSQVlfSU5JVDpjLmRlc3RydWN0dXJlZE5hbWVzPXRoaXMuY2hlY2tEZXN0cnVjdHVyaW5nKGMpO2Nhc2UgSURFTlRJRklFUjpjYXNlIERPVDpjYXNlIElOREVYOmNhc2UgQ0FMTDpicmVhaztkZWZhdWx0OnRoaXMuZmFpbCgiQmFkIGxlZnQtaGFuZCBzaWRlIG9mIGFzc2lnbm1lbnQiKX1yZXR1cm4gYi5hc3NpZ25PcD1jLmFzc2lnbk9wPXRoaXMudC50b2tlbi5hc3NpZ25PcCxiLnB1c2goYyksYi5wdXNoKHRoaXMuQXNzaWduRXhwcmVzc2lvbigpKSxifSxQcC5Db25kaXRpb25hbEV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgYixjO2I9dGhpcy5PckV4cHJlc3Npb24oKTtpZih0aGlzLm1hdGNoKEhPT0spKXtjPWIsYj10aGlzLm5ld05vZGUoe3R5cGU6SE9PS30pLGIucHVzaChjKTt2YXIgZD10aGlzLngudXBkYXRlKHtpbkZvckxvb3BJbml0OiExfSk7dGhpcy53aXRoQ29udGV4dChkLGZ1bmN0aW9uKCl7Yi5wdXNoKHRoaXMuQXNzaWduRXhwcmVzc2lvbigpKX0pLHRoaXMubWF0Y2goQ09MT04pfHx0aGlzLmZhaWwoIm1pc3NpbmcgOiBhZnRlciA/IiksYi5wdXNoKHRoaXMuQXNzaWduRXhwcmVzc2lvbigpKX1yZXR1cm4gYn0sUHAuT3JFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGIsYztiPXRoaXMuQW5kRXhwcmVzc2lvbigpO3doaWxlKHRoaXMubWF0Y2goT1IpKWM9dGhpcy5uZXdOb2RlKCksYy5wdXNoKGIpLGMucHVzaCh0aGlzLkFuZEV4cHJlc3Npb24oKSksYj1jO3JldHVybiBifSxQcC5BbmRFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGIsYztiPXRoaXMuQml0d2lzZU9yRXhwcmVzc2lvbigpO3doaWxlKHRoaXMubWF0Y2goQU5EKSljPXRoaXMubmV3Tm9kZSgpLGMucHVzaChiKSxjLnB1c2godGhpcy5CaXR3aXNlT3JFeHByZXNzaW9uKCkpLGI9YztyZXR1cm4gYn0sUHAuQml0d2lzZU9yRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciBiLGM7Yj10aGlzLkJpdHdpc2VYb3JFeHByZXNzaW9uKCk7d2hpbGUodGhpcy5tYXRjaChCSVRXSVNFX09SKSljPXRoaXMubmV3Tm9kZSgpLGMucHVzaChiKSxjLnB1c2godGhpcy5CaXR3aXNlWG9yRXhwcmVzc2lvbigpKSxiPWM7cmV0dXJuIGJ9LFBwLkJpdHdpc2VYb3JFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGIsYztiPXRoaXMuQml0d2lzZUFuZEV4cHJlc3Npb24oKTt3aGlsZSh0aGlzLm1hdGNoKEJJVFdJU0VfWE9SKSljPXRoaXMubmV3Tm9kZSgpLGMucHVzaChiKSxjLnB1c2godGhpcy5CaXR3aXNlQW5kRXhwcmVzc2lvbigpKSxiPWM7cmV0dXJuIGJ9LFBwLkJpdHdpc2VBbmRFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGIsYztiPXRoaXMuRXF1YWxpdHlFeHByZXNzaW9uKCk7d2hpbGUodGhpcy5tYXRjaChCSVRXSVNFX0FORCkpYz10aGlzLm5ld05vZGUoKSxjLnB1c2goYiksYy5wdXNoKHRoaXMuRXF1YWxpdHlFeHByZXNzaW9uKCkpLGI9YztyZXR1cm4gYn0sUHAuRXF1YWxpdHlFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGIsYztiPXRoaXMuUmVsYXRpb25hbEV4cHJlc3Npb24oKTt3aGlsZSh0aGlzLm1hdGNoKEVRKXx8dGhpcy5tYXRjaChORSl8fHRoaXMubWF0Y2goU1RSSUNUX0VRKXx8dGhpcy5tYXRjaChTVFJJQ1RfTkUpKWM9dGhpcy5uZXdOb2RlKCksYy5wdXNoKGIpLGMucHVzaCh0aGlzLlJlbGF0aW9uYWxFeHByZXNzaW9uKCkpLGI9YztyZXR1cm4gYn0sUHAuUmVsYXRpb25hbEV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgYixjLGQ9dGhpcy54LnVwZGF0ZSh7aW5Gb3JMb29wSW5pdDohMX0pO3JldHVybiB0aGlzLndpdGhDb250ZXh0KGQsZnVuY3Rpb24oKXtiPXRoaXMuU2hpZnRFeHByZXNzaW9uKCk7d2hpbGUodGhpcy5tYXRjaChMVCl8fHRoaXMubWF0Y2goTEUpfHx0aGlzLm1hdGNoKEdFKXx8dGhpcy5tYXRjaChHVCl8fCF0aGlzLnguaW5Gb3JMb29wSW5pdCYmdGhpcy5tYXRjaChJTil8fHRoaXMubWF0Y2goSU5TVEFOQ0VPRikpYz10aGlzLm5ld05vZGUoKSxjLnB1c2goYiksYy5wdXNoKHRoaXMuU2hpZnRFeHByZXNzaW9uKCkpLGI9Y30pLGJ9LFBwLlNoaWZ0RXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciBiLGM7Yj10aGlzLkFkZEV4cHJlc3Npb24oKTt3aGlsZSh0aGlzLm1hdGNoKExTSCl8fHRoaXMubWF0Y2goUlNIKXx8dGhpcy5tYXRjaChVUlNIKSljPXRoaXMubmV3Tm9kZSgpLGMucHVzaChiKSxjLnB1c2godGhpcy5BZGRFeHByZXNzaW9uKCkpLGI9YztyZXR1cm4gYn0sUHAuQWRkRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciBiLGM7Yj10aGlzLk11bHRpcGx5RXhwcmVzc2lvbigpO3doaWxlKHRoaXMubWF0Y2goUExVUyl8fHRoaXMubWF0Y2goTUlOVVMpKWM9dGhpcy5uZXdOb2RlKCksYy5wdXNoKGIpLGMucHVzaCh0aGlzLk11bHRpcGx5RXhwcmVzc2lvbigpKSxiPWM7cmV0dXJuIGJ9LFBwLk11bHRpcGx5RXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciBiLGM7Yj10aGlzLlVuYXJ5RXhwcmVzc2lvbigpO3doaWxlKHRoaXMubWF0Y2goTVVMKXx8dGhpcy5tYXRjaChESVYpfHx0aGlzLm1hdGNoKE1PRCkpYz10aGlzLm5ld05vZGUoKSxjLnB1c2goYiksYy5wdXNoKHRoaXMuVW5hcnlFeHByZXNzaW9uKCkpLGI9YztyZXR1cm4gYn0sUHAuVW5hcnlFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIGIsYyxkO3N3aXRjaChkPXRoaXMudC5nZXQoITApKXtjYXNlIERFTEVURTpjYXNlIFZPSUQ6Y2FzZSBUWVBFT0Y6Y2FzZSBOT1Q6Y2FzZSBCSVRXSVNFX05PVDpjYXNlIFBMVVM6Y2FzZSBNSU5VUzpkPT09UExVUz9iPXRoaXMubmV3Tm9kZSh7dHlwZTpVTkFSWV9QTFVTfSk6ZD09PU1JTlVTP2I9dGhpcy5uZXdOb2RlKHt0eXBlOlVOQVJZX01JTlVTfSk6Yj10aGlzLm5ld05vZGUoKSxiLnB1c2godGhpcy5VbmFyeUV4cHJlc3Npb24oKSk7YnJlYWs7Y2FzZSBJTkNSRU1FTlQ6Y2FzZSBERUNSRU1FTlQ6Yj10aGlzLm5ld05vZGUoKSxiLnB1c2godGhpcy5NZW1iZXJFeHByZXNzaW9uKCEwKSk7YnJlYWs7ZGVmYXVsdDp0aGlzLnQudW5nZXQoKSxiPXRoaXMuTWVtYmVyRXhwcmVzc2lvbighMCksdGhpcy50LnRva2Vuc1t0aGlzLnQudG9rZW5JbmRleCt0aGlzLnQubG9va2FoZWFkLTEmM10ubGluZW5vPT09dGhpcy50LmxpbmVubyYmKHRoaXMubWF0Y2goSU5DUkVNRU5UKXx8dGhpcy5tYXRjaChERUNSRU1FTlQpKSYmKGM9dGhpcy5uZXdOb2RlKHtwb3N0Zml4OiEwfSksYy5wdXNoKGIpLGI9Yyl9cmV0dXJuIGJ9LFBwLk1lbWJlckV4cHJlc3Npb249ZnVuY3Rpb24oYil7dmFyIGMsZCxlLGY7dGhpcy5tYXRjaChORVcpPyhjPXRoaXMubmV3Tm9kZSgpLGMucHVzaCh0aGlzLk1lbWJlckV4cHJlc3Npb24oITEpKSx0aGlzLm1hdGNoKExFRlRfUEFSRU4pJiYoYy50eXBlPU5FV19XSVRIX0FSR1MsYy5wdXNoKHRoaXMuQXJndW1lbnRMaXN0KCkpKSk6Yz10aGlzLlByaW1hcnlFeHByZXNzaW9uKCk7d2hpbGUoKGY9dGhpcy50LmdldCgpKSE9PUVORCl7c3dpdGNoKGYpe2Nhc2UgRE9UOmQ9dGhpcy5uZXdOb2RlKCksZC5wdXNoKGMpLGQucHVzaCh0aGlzLklkZW50aWZpZXJOYW1lKCkpO2JyZWFrO2Nhc2UgTEVGVF9CUkFDS0VUOmQ9dGhpcy5uZXdOb2RlKHt0eXBlOklOREVYfSksZC5wdXNoKGMpLGQucHVzaCh0aGlzLkV4cHJlc3Npb24oKSksdGhpcy5tdXN0TWF0Y2goUklHSFRfQlJBQ0tFVCk7YnJlYWs7Y2FzZSBMRUZUX1BBUkVOOmlmKGIpe2Q9dGhpcy5uZXdOb2RlKHt0eXBlOkNBTEx9KSxkLnB1c2goYyksZC5wdXNoKHRoaXMuQXJndW1lbnRMaXN0KCkpO2JyZWFrfTtkZWZhdWx0OnJldHVybiB0aGlzLnQudW5nZXQoKSxjfWM9ZH1yZXR1cm4gY30sUHAuQXJndW1lbnRMaXN0PWZ1bmN0aW9uKCl7dmFyIGIsYztiPXRoaXMubmV3Tm9kZSh7dHlwZTpMSVNUfSk7aWYodGhpcy5tYXRjaChSSUdIVF9QQVJFTiwhMCkpcmV0dXJuIGI7ZG8gYz10aGlzLkFzc2lnbkV4cHJlc3Npb24oKSxjLnR5cGU9PT1ZSUVMRCYmIWMucGFyZW50aGVzaXplZCYmdGhpcy5wZWVrKCk9PT1DT01NQSYmdGhpcy5mYWlsKCJZaWVsZCBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCIpLHRoaXMubWF0Y2goRk9SKSYmKGM9dGhpcy5HZW5lcmF0b3JFeHByZXNzaW9uKGMpLChiLmNoaWxkcmVuLmxlbmd0aD4xfHx0aGlzLnBlZWsoITApPT09Q09NTUEpJiZ0aGlzLmZhaWwoIkdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCIpKSxiLnB1c2goYyk7d2hpbGUodGhpcy5tYXRjaChDT01NQSkpO3JldHVybiB0aGlzLm11c3RNYXRjaChSSUdIVF9QQVJFTiksYn0sUHAuUHJpbWFyeUV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgYixjLGQ9dGhpcy50LmdldCghMCk7c3dpdGNoKGQpe2Nhc2UgRlVOQ1RJT046Yj10aGlzLkZ1bmN0aW9uRGVmaW5pdGlvbighMSxFWFBSRVNTRURfRk9STSk7YnJlYWs7Y2FzZSBMRUZUX0JSQUNLRVQ6Yj10aGlzLm5ld05vZGUoe3R5cGU6QVJSQVlfSU5JVH0pO3doaWxlKChkPXRoaXMucGVlayghMCkpIT09UklHSFRfQlJBQ0tFVCl7aWYoZD09PUNPTU1BKXt0aGlzLnQuZ2V0KCksYi5wdXNoKG51bGwpO2NvbnRpbnVlfWIucHVzaCh0aGlzLkFzc2lnbkV4cHJlc3Npb24oKSk7aWYoZCE9PUNPTU1BJiYhdGhpcy5tYXRjaChDT01NQSkpYnJlYWt9Yi5jaGlsZHJlbi5sZW5ndGg9PT0xJiZ0aGlzLm1hdGNoKEZPUikmJihjPXRoaXMubmV3Tm9kZSh7dHlwZTpBUlJBWV9DT01QLGV4cHJlc3Npb246Yi5jaGlsZHJlblswXSx0YWlsOnRoaXMuQ29tcHJlaGVuc2lvblRhaWwoKX0pLGI9YyksdGhpcy5tdXN0TWF0Y2goUklHSFRfQlJBQ0tFVCk7YnJlYWs7Y2FzZSBMRUZUX0NVUkxZOnZhciBlLGY7Yj10aGlzLm5ld05vZGUoe3R5cGU6T0JKRUNUX0lOSVR9KTthOmlmKCF0aGlzLm1hdGNoKFJJR0hUX0NVUkxZKSl7ZG97ZD10aGlzLnQuZ2V0KCk7aWYodGhpcy50LnRva2VuLnZhbHVlIT09ImdldCImJnRoaXMudC50b2tlbi52YWx1ZSE9PSJzZXQifHx0aGlzLnBlZWsoKSE9PUlERU5USUZJRVIpe3ZhciBnPXRoaXMudC5ibG9ja0NvbW1lbnRzO3N3aXRjaChkKXtjYXNlIElERU5USUZJRVI6Y2FzZSBOVU1CRVI6Y2FzZSBTVFJJTkc6ZT10aGlzLm5ld05vZGUoe3R5cGU6SURFTlRJRklFUn0pO2JyZWFrO2Nhc2UgUklHSFRfQ1VSTFk6YnJlYWsgYTtkZWZhdWx0OmlmKHRoaXMudC50b2tlbi52YWx1ZSBpbiBkZWZpbml0aW9ucy5rZXl3b3Jkcyl7ZT10aGlzLm5ld05vZGUoe3R5cGU6SURFTlRJRklFUn0pO2JyZWFrfXRoaXMuZmFpbCgiSW52YWxpZCBwcm9wZXJ0eSBuYW1lIil9dGhpcy5tYXRjaChDT0xPTik/KGM9dGhpcy5uZXdOb2RlKHt0eXBlOlBST1BFUlRZX0lOSVR9KSxjLnB1c2goZSksYy5wdXNoKHRoaXMuQXNzaWduRXhwcmVzc2lvbigpKSxjLmJsb2NrQ29tbWVudHM9ZyxiLnB1c2goYykpOih0aGlzLnBlZWsoKSE9PUNPTU1BJiZ0aGlzLnBlZWsoKSE9PVJJR0hUX0NVUkxZJiZ0aGlzLmZhaWwoIm1pc3NpbmcgOiBhZnRlciBwcm9wZXJ0eSIpLGIucHVzaChlKSl9ZWxzZSBiLnB1c2godGhpcy5GdW5jdGlvbkRlZmluaXRpb24oITAsRVhQUkVTU0VEX0ZPUk0pKX13aGlsZSh0aGlzLm1hdGNoKENPTU1BKSk7dGhpcy5tdXN0TWF0Y2goUklHSFRfQ1VSTFkpfWJyZWFrO2Nhc2UgTEVGVF9QQVJFTjpiPXRoaXMuUGFyZW5FeHByZXNzaW9uKCksdGhpcy5tdXN0TWF0Y2goUklHSFRfUEFSRU4pLGIucGFyZW50aGVzaXplZD0hMDticmVhaztjYXNlIExFVDpiPXRoaXMuTGV0QmxvY2soITEpO2JyZWFrO2Nhc2UgTlVMTDpjYXNlIFRISVM6Y2FzZSBUUlVFOmNhc2UgRkFMU0U6Y2FzZSBJREVOVElGSUVSOmNhc2UgTlVNQkVSOmNhc2UgU1RSSU5HOmNhc2UgUkVHRVhQOmI9dGhpcy5uZXdOb2RlKCk7YnJlYWs7ZGVmYXVsdDp0aGlzLmZhaWwoIm1pc3Npbmcgb3BlcmFuZDsgZm91bmQgIitkZWZpbml0aW9ucy50b2tlbnNbZF0pfXJldHVybiBifSxleHBvcnRzLnBhcnNlPXBhcnNlLGV4cG9ydHMucGFyc2VTdGRpbj1wYXJzZVN0ZGluLGV4cG9ydHMucGFyc2VGdW5jdGlvbj1wYXJzZUZ1bmN0aW9uLGV4cG9ydHMuTm9kZT1Ob2RlLGV4cG9ydHMuREVDTEFSRURfRk9STT1ERUNMQVJFRF9GT1JNLGV4cG9ydHMuRVhQUkVTU0VEX0ZPUk09RVhQUkVTU0VEX0ZPUk0sZXhwb3J0cy5TVEFURU1FTlRfRk9STT1TVEFURU1FTlRfRk9STSxleHBvcnRzLlRva2VuaXplcj1Ub2tlbml6ZXIsZXhwb3J0cy5QYXJzZXI9UGFyc2VyLGV4cG9ydHMuTW9kdWxlPU1vZHVsZSxleHBvcnRzLkV4cG9ydD1FeHBvcnR9KSxkZWZpbmUoImFjZS9uYXJjaXNzdXMvbGV4ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbmFyY2lzc3VzL2RlZmluaXRpb25zIl0sZnVuY3Rpb24ocmVxdWlyZSxleHBvcnRzLG1vZHVsZSl7ZnVuY3Rpb24gaXNWYWxpZElkZW50aWZpZXJDaGFyKGEsYil7aWYoYTw9In8iKXJldHVybiBhPj0iYSImJmE8PSJ6Inx8YT49IkEiJiZhPD0iWiJ8fGE9PT0iJCJ8fGE9PT0iXyJ8fCFiJiZhPj0iMCImJmE8PSI5Ij8hMDohMTt2YXIgYz17fTtjWyJ4IithXT0hMCxjW2FdPSEwO3ZhciBkPSExO3RyeXtkPUZ1bmN0aW9uKCJ4IiwicmV0dXJuICh4LiIrKGI/IiI6IngiKSthKyIpOyIpKGMpPT09ITB9Y2F0Y2goZSl7fXJldHVybiBkfWZ1bmN0aW9uIGlzSWRlbnRpZmllcihhKXtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuITE7aWYoYS5sZW5ndGg9PT0wKXJldHVybiExO2lmKCFpc1ZhbGlkSWRlbnRpZmllckNoYXIoYVswXSwhMCkpcmV0dXJuITE7Zm9yKHZhciBiPTE7YjxhLmxlbmd0aDtiKyspaWYoIWlzVmFsaWRJZGVudGlmaWVyQ2hhcihhW2JdLCExKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBUb2tlbml6ZXIoYSxiLGMsZCl7dGhpcy5jdXJzb3I9MCx0aGlzLnNvdXJjZT1TdHJpbmcoYSksdGhpcy50b2tlbnM9W10sdGhpcy50b2tlbkluZGV4PTAsdGhpcy5sb29rYWhlYWQ9MCx0aGlzLnNjYW5OZXdsaW5lcz0hMSx0aGlzLmZpbGVuYW1lPWJ8fCIiLHRoaXMubGluZW5vPWN8fDEsdGhpcy5hbGxvd0hUTUxDb21tZW50cz1kLHRoaXMuYmxvY2tDb21tZW50cz1udWxsfXZhciBkZWZpbml0aW9ucz1yZXF1aXJlKCIuL2RlZmluaXRpb25zIik7ZXZhbChkZWZpbml0aW9ucy5jb25zdHMpO3ZhciBvcFRva2Vucz17fTtmb3IodmFyIG9wIGluIGRlZmluaXRpb25zLm9wVHlwZU5hbWVzKXtpZihvcD09PSJcbiJ8fG9wPT09Ii4iKWNvbnRpbnVlO3ZhciBub2RlPW9wVG9rZW5zO2Zvcih2YXIgaT0wO2k8b3AubGVuZ3RoO2krKyl7dmFyIGNoPW9wW2ldO2NoIGluIG5vZGV8fChub2RlW2NoXT17fSksbm9kZT1ub2RlW2NoXSxub2RlLm9wPW9wfX1Ub2tlbml6ZXIucHJvdG90eXBlPXtnZXQgZG9uZSgpe3JldHVybiB0aGlzLnBlZWsoITApPT09RU5EfSxnZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4XX0sbWF0Y2g6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLmdldChiLGMpPT09YXx8dGhpcy51bmdldCgpfSxtdXN0TWF0Y2g6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5tYXRjaChhLCExLGIpKXRocm93IHRoaXMubmV3U3ludGF4RXJyb3IoIk1pc3NpbmcgIitkZWZpbml0aW9ucy50b2tlbnNbYV0udG9Mb3dlckNhc2UoKSk7cmV0dXJuIHRoaXMudG9rZW59LHBlZWs6ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4gdGhpcy5sb29rYWhlYWQ/KGM9dGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4K3RoaXMubG9va2FoZWFkJjNdLGI9dGhpcy5zY2FuTmV3bGluZXMmJmMubGluZW5vIT09dGhpcy5saW5lbm8/TkVXTElORTpjLnR5cGUpOihiPXRoaXMuZ2V0KGEpLHRoaXMudW5nZXQoKSksYn0scGVla09uU2FtZUxpbmU6ZnVuY3Rpb24oYSl7dGhpcy5zY2FuTmV3bGluZXM9ITA7dmFyIGI9dGhpcy5wZWVrKGEpO3JldHVybiB0aGlzLnNjYW5OZXdsaW5lcz0hMSxifSxsYXN0QmxvY2tDb21tZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5ibG9ja0NvbW1lbnRzLmxlbmd0aDtyZXR1cm4gYT90aGlzLmJsb2NrQ29tbWVudHNbYS0xXTpudWxsfSxza2lwOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zb3VyY2U7dGhpcy5ibG9ja0NvbW1lbnRzPVtdO2Zvcig7Oyl7dmFyIGI9YVt0aGlzLmN1cnNvcisrXSxjPWFbdGhpcy5jdXJzb3JdO2lmKGI9PT0iXHIiKXtpZihjPT09IlxuIiljb250aW51ZTtiPSJcbiJ9aWYoYj09PSJcbiImJiF0aGlzLnNjYW5OZXdsaW5lcyl0aGlzLmxpbmVubysrO2Vsc2UgaWYoYj09PSIvIiYmYz09PSIqIil7dmFyIGQ9Kyt0aGlzLmN1cnNvcjtmb3IoOzspe2I9YVt0aGlzLmN1cnNvcisrXTtpZihiPT09dW5kZWZpbmVkKXRocm93IHRoaXMubmV3U3ludGF4RXJyb3IoIlVudGVybWluYXRlZCBjb21tZW50Iik7aWYoYj09PSIqIil7Yz1hW3RoaXMuY3Vyc29yXTtpZihjPT09Ii8iKXt2YXIgZT10aGlzLmN1cnNvci0xO3RoaXMuY3Vyc29yKys7YnJlYWt9fWVsc2UgYj09PSJcbiImJnRoaXMubGluZW5vKyt9dGhpcy5ibG9ja0NvbW1lbnRzLnB1c2goYS5zdWJzdHJpbmcoZCxlKSl9ZWxzZSBpZihiPT09Ii8iJiZjPT09Ii8ifHx0aGlzLmFsbG93SFRNTENvbW1lbnRzJiZiPT09IjwiJiZjPT09IiEiJiZhW3RoaXMuY3Vyc29yKzFdPT09Ii0iJiZhW3RoaXMuY3Vyc29yKzJdPT09Ii0iJiYodGhpcy5jdXJzb3IrPTIpKXt0aGlzLmN1cnNvcisrO2Zvcig7Oyl7Yj1hW3RoaXMuY3Vyc29yKytdLGM9YVt0aGlzLmN1cnNvcl07aWYoYj09PXVuZGVmaW5lZClyZXR1cm47Yj09PSJcciImJmMhPT0iXG4iJiYoYj0iXG4iKTtpZihiPT09IlxuIil7dGhpcy5zY2FuTmV3bGluZXM/dGhpcy5jdXJzb3ItLTp0aGlzLmxpbmVubysrO2JyZWFrfX19ZWxzZSBpZighKGIgaW4gZGVmaW5pdGlvbnMud2hpdGVzcGFjZSkpe3RoaXMuY3Vyc29yLS07cmV0dXJufX19LGxleEV4cG9uZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zb3VyY2UsYj1hW3RoaXMuY3Vyc29yXTtpZihiPT09ImUifHxiPT09IkUiKXt0aGlzLmN1cnNvcisrLGNoPWFbdGhpcy5jdXJzb3IrK107aWYoY2g9PT0iKyJ8fGNoPT09Ii0iKWNoPWFbdGhpcy5jdXJzb3IrK107aWYoY2g8IjAifHxjaD4iOSIpdGhyb3cgdGhpcy5uZXdTeW50YXhFcnJvcigiTWlzc2luZyBleHBvbmVudCIpO2RvIGNoPWFbdGhpcy5jdXJzb3IrK107d2hpbGUoY2g+PSIwIiYmY2g8PSI5Iik7cmV0dXJuIHRoaXMuY3Vyc29yLS0sITB9cmV0dXJuITF9LGxleFplcm9OdW1iZXI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50b2tlbixjPXRoaXMuc291cmNlO2IudHlwZT1OVU1CRVIsYT1jW3RoaXMuY3Vyc29yKytdO2lmKGE9PT0iLiIpe2RvIGE9Y1t0aGlzLmN1cnNvcisrXTt3aGlsZShhPj0iMCImJmE8PSI5Iik7dGhpcy5jdXJzb3ItLSx0aGlzLmxleEV4cG9uZW50KCksYi52YWx1ZT1wYXJzZUZsb2F0KGMuc3Vic3RyaW5nKGIuc3RhcnQsdGhpcy5jdXJzb3IpKX1lbHNlIGlmKGE9PT0ieCJ8fGE9PT0iWCIpe2RvIGE9Y1t0aGlzLmN1cnNvcisrXTt3aGlsZShhPj0iMCImJmE8PSI5Inx8YT49ImEiJiZhPD0iZiJ8fGE+PSJBIiYmYTw9IkYiKTt0aGlzLmN1cnNvci0tLGIudmFsdWU9cGFyc2VJbnQoYy5zdWJzdHJpbmcoYi5zdGFydCx0aGlzLmN1cnNvcikpfWVsc2UgaWYoYT49IjAiJiZhPD0iNyIpe2RvIGE9Y1t0aGlzLmN1cnNvcisrXTt3aGlsZShhPj0iMCImJmE8PSI3Iik7dGhpcy5jdXJzb3ItLSxiLnZhbHVlPXBhcnNlSW50KGMuc3Vic3RyaW5nKGIuc3RhcnQsdGhpcy5jdXJzb3IpKX1lbHNlIHRoaXMuY3Vyc29yLS0sdGhpcy5sZXhFeHBvbmVudCgpLGIudmFsdWU9MH0sbGV4TnVtYmVyOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudG9rZW4sYz10aGlzLnNvdXJjZTtiLnR5cGU9TlVNQkVSO3ZhciBkPSExO2RvIGE9Y1t0aGlzLmN1cnNvcisrXSxhPT09Ii4iJiYhZCYmKGQ9ITAsYT1jW3RoaXMuY3Vyc29yKytdKTt3aGlsZShhPj0iMCImJmE8PSI5Iik7dGhpcy5jdXJzb3ItLTt2YXIgZT10aGlzLmxleEV4cG9uZW50KCk7ZD1kfHxlO3ZhciBmPWMuc3Vic3RyaW5nKGIuc3RhcnQsdGhpcy5jdXJzb3IpO2IudmFsdWU9ZD9wYXJzZUZsb2F0KGYpOnBhcnNlSW50KGYpfSxsZXhEb3Q6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50b2tlbixjPXRoaXMuc291cmNlLGQ9Y1t0aGlzLmN1cnNvcl07aWYoZD49IjAiJiZkPD0iOSIpe2RvIGE9Y1t0aGlzLmN1cnNvcisrXTt3aGlsZShhPj0iMCImJmE8PSI5Iik7dGhpcy5jdXJzb3ItLSx0aGlzLmxleEV4cG9uZW50KCksYi50eXBlPU5VTUJFUixiLnZhbHVlPXBhcnNlRmxvYXQoYy5zdWJzdHJpbmcoYi5zdGFydCx0aGlzLmN1cnNvcikpfWVsc2UgYi50eXBlPURPVCxiLmFzc2lnbk9wPW51bGwsYi52YWx1ZT0iLiJ9LGxleFN0cmluZzpmdW5jdGlvbihjaCl7dmFyIHRva2VuPXRoaXMudG9rZW4saW5wdXQ9dGhpcy5zb3VyY2U7dG9rZW4udHlwZT1TVFJJTkc7dmFyIGhhc0VzY2FwZXM9ITEsZGVsaW09Y2g7aWYoaW5wdXQubGVuZ3RoPD10aGlzLmN1cnNvcil0aHJvdyB0aGlzLm5ld1N5bnRheEVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiKTt3aGlsZSgoY2g9aW5wdXRbdGhpcy5jdXJzb3IrK10pIT09ZGVsaW0pe2lmKGNoPT0iXG4ifHxjaD09IlxyIil0aHJvdyB0aGlzLm5ld1N5bnRheEVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiKTtpZih0aGlzLmN1cnNvcj09aW5wdXQubGVuZ3RoKXRocm93IHRoaXMubmV3U3ludGF4RXJyb3IoIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbCIpO2lmKGNoPT09IlxcIil7aGFzRXNjYXBlcz0hMDtpZigrK3RoaXMuY3Vyc29yPT1pbnB1dC5sZW5ndGgpdGhyb3cgdGhpcy5uZXdTeW50YXhFcnJvcigiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIil9fXRva2VuLnZhbHVlPWhhc0VzY2FwZXM/ZXZhbChpbnB1dC5zdWJzdHJpbmcodG9rZW4uc3RhcnQsdGhpcy5jdXJzb3IpKTppbnB1dC5zdWJzdHJpbmcodG9rZW4uc3RhcnQrMSx0aGlzLmN1cnNvci0xKX0sbGV4UmVnRXhwOmZ1bmN0aW9uKGNoKXt2YXIgdG9rZW49dGhpcy50b2tlbixpbnB1dD10aGlzLnNvdXJjZTt0b2tlbi50eXBlPVJFR0VYUDtkb3tjaD1pbnB1dFt0aGlzLmN1cnNvcisrXTtpZihjaD09PSJcXCIpdGhpcy5jdXJzb3IrKztlbHNlIGlmKGNoPT09IlsiKXtkb3tpZihjaD09PXVuZGVmaW5lZCl0aHJvdyB0aGlzLm5ld1N5bnRheEVycm9yKCJVbnRlcm1pbmF0ZWQgY2hhcmFjdGVyIGNsYXNzIik7Y2g9PT0iXFwiJiZ0aGlzLmN1cnNvcisrLGNoPWlucHV0W3RoaXMuY3Vyc29yKytdfXdoaWxlKGNoIT09Il0iKX1lbHNlIGlmKGNoPT09dW5kZWZpbmVkKXRocm93IHRoaXMubmV3U3ludGF4RXJyb3IoIlVudGVybWluYXRlZCByZWdleCIpfXdoaWxlKGNoIT09Ii8iKTtkbyBjaD1pbnB1dFt0aGlzLmN1cnNvcisrXTt3aGlsZShjaD49ImEiJiZjaDw9InoiKTt0aGlzLmN1cnNvci0tLHRva2VuLnZhbHVlPWV2YWwoaW5wdXQuc3Vic3RyaW5nKHRva2VuLnN0YXJ0LHRoaXMuY3Vyc29yKSl9LGxleE9wOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudG9rZW4sYz10aGlzLnNvdXJjZSxkPW9wVG9rZW5zW2FdLGU9Y1t0aGlzLmN1cnNvcl07ZSBpbiBkJiYoZD1kW2VdLHRoaXMuY3Vyc29yKyssZT1jW3RoaXMuY3Vyc29yXSxlIGluIGQmJihkPWRbZV0sdGhpcy5jdXJzb3IrKyxlPWNbdGhpcy5jdXJzb3JdKSk7dmFyIGY9ZC5vcDtkZWZpbml0aW9ucy5hc3NpZ25PcHNbZl0mJmNbdGhpcy5jdXJzb3JdPT09Ij0iPyh0aGlzLmN1cnNvcisrLGIudHlwZT1BU1NJR04sYi5hc3NpZ25PcD1kZWZpbml0aW9ucy50b2tlbklkc1tkZWZpbml0aW9ucy5vcFR5cGVOYW1lc1tmXV0sZis9Ij0iKTooYi50eXBlPWRlZmluaXRpb25zLnRva2VuSWRzW2RlZmluaXRpb25zLm9wVHlwZU5hbWVzW2ZdXSxiLmFzc2lnbk9wPW51bGwpLGIudmFsdWU9Zn0sbGV4SWRlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnRva2VuLGQ9YTt3aGlsZSgoYT10aGlzLmdldFZhbGlkSWRlbnRpZmllckNoYXIoITEpKSE9PW51bGwpZCs9YTtjLnR5cGU9SURFTlRJRklFUixjLnZhbHVlPWQ7aWYoYilyZXR1cm47dmFyIGU7aWYodGhpcy5wYXJzZXIubW96aWxsYU1vZGUpe2U9ZGVmaW5pdGlvbnMubW96aWxsYUtleXdvcmRzW2RdO2lmKGUpe2MudHlwZT1lO3JldHVybn19aWYodGhpcy5wYXJzZXIueC5zdHJpY3RNb2RlKXtlPWRlZmluaXRpb25zLnN0cmljdEtleXdvcmRzW2RdO2lmKGUpe2MudHlwZT1lO3JldHVybn19ZT1kZWZpbml0aW9ucy5rZXl3b3Jkc1tkXSxlJiYoYy50eXBlPWUpfSxnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYzt3aGlsZSh0aGlzLmxvb2thaGVhZCl7LS10aGlzLmxvb2thaGVhZCx0aGlzLnRva2VuSW5kZXg9dGhpcy50b2tlbkluZGV4KzEmMyxjPXRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF07aWYoYy50eXBlIT09TkVXTElORXx8dGhpcy5zY2FuTmV3bGluZXMpcmV0dXJuIGMudHlwZX10aGlzLnNraXAoKSx0aGlzLnRva2VuSW5kZXg9dGhpcy50b2tlbkluZGV4KzEmMyxjPXRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF0sY3x8KHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF09Yz17fSk7dmFyIGQ9dGhpcy5zb3VyY2U7aWYodGhpcy5jdXJzb3I+PWQubGVuZ3RoKXJldHVybiBjLnR5cGU9RU5EO2Muc3RhcnQ9dGhpcy5jdXJzb3IsYy5saW5lbm89dGhpcy5saW5lbm87dmFyIGU9dGhpcy5nZXRWYWxpZElkZW50aWZpZXJDaGFyKCEwKSxmPWU9PT1udWxsP2RbdGhpcy5jdXJzb3IrK106bnVsbDtpZihlIT09bnVsbCl0aGlzLmxleElkZW50KGUsYik7ZWxzZSBpZihhJiZmPT09Ii8iKXRoaXMubGV4UmVnRXhwKGYpO2Vsc2UgaWYoZiBpbiBvcFRva2Vucyl0aGlzLmxleE9wKGYpO2Vsc2UgaWYoZj09PSIuIil0aGlzLmxleERvdChmKTtlbHNlIGlmKGY+PSIxIiYmZjw9IjkiKXRoaXMubGV4TnVtYmVyKGYpO2Vsc2UgaWYoZj09PSIwIil0aGlzLmxleFplcm9OdW1iZXIoZik7ZWxzZSBpZihmPT09JyInfHxmPT09IiciKXRoaXMubGV4U3RyaW5nKGYpO2Vsc2V7aWYoIXRoaXMuc2Nhbk5ld2xpbmVzfHxmIT09IlxuIiYmZiE9PSJcciIpdGhyb3cgdGhpcy5uZXdTeW50YXhFcnJvcigiSWxsZWdhbCB0b2tlbiIpO2Y9PT0iXHIiJiZkW3RoaXMuY3Vyc29yXT09PSJcbiImJnRoaXMuY3Vyc29yKyssYy50eXBlPU5FV0xJTkUsYy52YWx1ZT0iXG4iLHRoaXMubGluZW5vKyt9cmV0dXJuIGMuZW5kPXRoaXMuY3Vyc29yLGMudHlwZX0sdW5nZXQ6ZnVuY3Rpb24oKXtpZigrK3RoaXMubG9va2FoZWFkPT09NCl0aHJvdyJQQU5JQzogdG9vIG11Y2ggbG9va2FoZWFkISI7dGhpcy50b2tlbkluZGV4PXRoaXMudG9rZW5JbmRleC0xJjN9LG5ld1N5bnRheEVycm9yOmZ1bmN0aW9uKGEpe2E9KHRoaXMuZmlsZW5hbWU/dGhpcy5maWxlbmFtZSsiOiI6IiIpK3RoaXMubGluZW5vKyI6ICIrYTt2YXIgYj1uZXcgU3ludGF4RXJyb3IoYSx0aGlzLmZpbGVuYW1lLHRoaXMubGluZW5vKTtyZXR1cm4gYi5zb3VyY2U9dGhpcy5zb3VyY2UsYi5jdXJzb3I9dGhpcy5sb29rYWhlYWQ/dGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4K3RoaXMubG9va2FoZWFkJjNdLnN0YXJ0OnRoaXMuY3Vyc29yLGJ9LGdldFZhbGlkSWRlbnRpZmllckNoYXI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5zb3VyY2U7aWYodGhpcy5jdXJzb3I+PWIubGVuZ3RoKXJldHVybiBudWxsO3ZhciBjPWJbdGhpcy5jdXJzb3JdO2lmKGM9PT0iXFwiJiZiW3RoaXMuY3Vyc29yKzFdPT09InUiKXt0cnl7Yz1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGIuc3Vic3RyaW5nKHRoaXMuY3Vyc29yKzIsdGhpcy5jdXJzb3IrNiksMTYpKX1jYXRjaChkKXtyZXR1cm4gbnVsbH10aGlzLmN1cnNvcis9NX12YXIgZT1pc1ZhbGlkSWRlbnRpZmllckNoYXIoYyxhKTtyZXR1cm4gZSYmdGhpcy5jdXJzb3IrKyxlP2M6bnVsbH19LGV4cG9ydHMuaXNJZGVudGlmaWVyPWlzSWRlbnRpZmllcixleHBvcnRzLlRva2VuaXplcj1Ub2tlbml6ZXJ9KSxkZWZpbmUoImFjZS9uYXJjaXNzdXMvZGVmaW5pdGlvbnMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihyZXF1aXJlLGV4cG9ydHMsbW9kdWxlKXtmdW5jdGlvbiBkZWZpbmVHZXR0ZXIoYSxiLGMsZCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtnZXQ6Yyxjb25maWd1cmFibGU6IWQsZW51bWVyYWJsZTohZX0pfWZ1bmN0aW9uIGRlZmluZUdldHRlclNldHRlcihhLGIsYyxkLGUsZil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Z2V0OmMsc2V0OmQsY29uZmlndXJhYmxlOiFlLGVudW1lcmFibGU6IWZ9KX1mdW5jdGlvbiBkZWZpbmVNZW1vR2V0dGVyKGEsYixjLGQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGY9YygpO3JldHVybiBkZWZpbmVQcm9wZXJ0eShhLGIsZixkLCEwLGUpLGZ9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiFlfSl9ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoYSxiLGMsZCxlLGYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse3ZhbHVlOmMsd3JpdGFibGU6IWUsY29uZmlndXJhYmxlOiFkLGVudW1lcmFibGU6IWZ9KX1mdW5jdGlvbiBpc05hdGl2ZUNvZGUoYSl7cmV0dXJuIHR5cGVvZiBhPT0iZnVuY3Rpb24iJiZhLnRvU3RyaW5nKCkubWF0Y2goL1xbbmF0aXZlIGNvZGVcXS8pfWZ1bmN0aW9uIGFwcGx5KGEsYixjKXtyZXR1cm4gRnBhcHBseS5jYWxsKGEsW2JdLmNvbmNhdChjKSl9ZnVuY3Rpb24gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGEsYil7d2hpbGUoYSl7aWYoe30uaGFzT3duUHJvcGVydHkuY2FsbChhLGIpKXJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsYik7YT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9fWZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZXMoYSl7dmFyIGI9T2JqZWN0LmNyZWF0ZShudWxsLHt9KTt3aGlsZShhKXt2YXIgYz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKTtmb3IodmFyIGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspYltjW2RdXT0hMDthPU9iamVjdC5nZXRQcm90b3R5cGVPZihhKX1yZXR1cm4gT2JqZWN0LmtleXMoYil9ZnVuY3Rpb24gZ2V0T3duUHJvcGVydGllcyhhKXt2YXIgYj17fTtmb3IodmFyIGMgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSkpYltjXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsYyk7cmV0dXJuIGJ9ZnVuY3Rpb24gYmxhY2tsaXN0SGFuZGxlcihhLGIpe3ZhciBjPU9iamVjdC5jcmVhdGUobnVsbCx7fSksZD1EaWN0LmNyZWF0ZShiKS5tYXBPYmplY3QoZnVuY3Rpb24oYSl7cmV0dXJuIGN9KTtyZXR1cm4gbWl4aW5IYW5kbGVyKGQsYSl9ZnVuY3Rpb24gd2hpdGVsaXN0SGFuZGxlcihhLGIpe3ZhciBjPU9iamVjdC5jcmVhdGUobnVsbCx7fSksZD1EaWN0LmNyZWF0ZShiKS5tYXBPYmplY3QoZnVuY3Rpb24oYil7cmV0dXJuIGF9KTtyZXR1cm4gbWl4aW5IYW5kbGVyKGQsYyl9ZnVuY3Rpb24gbWl4aW5IYW5kbGVyKGEsYil7ZnVuY3Rpb24gYyhjKXtyZXR1cm4gaGFzT3duKGEsYyk/YVtjXTpifWZ1bmN0aW9uIGQoYSl7dmFyIGI9Z2V0UHJvcGVydHlEZXNjcmlwdG9yKGMoYSksYSk7cmV0dXJuIGImJihiLmNvbmZpZ3VyYWJsZT0hMCksYn1mdW5jdGlvbiBlKCl7dmFyIGM9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiIGluIGFbYl19KSxkPWdldFByb3BlcnR5TmFtZXMoYikuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiFoYXNPd24oYSxiKX0pO3JldHVybiBjLmNvbmNhdChkKX1mdW5jdGlvbiBmKCl7dmFyIGM9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiIGluIGFbYl19KTtmb3IobmFtZSBpbiBiKWhhc093bihhLG5hbWUpfHxjLnB1c2gobmFtZSk7cmV0dXJuIGN9ZnVuY3Rpb24gZyhhKXtyZXR1cm4gYSBpbiBjKGEpfXJldHVybntnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZCxnZXRQcm9wZXJ0eURlc2NyaXB0b3I6ZCxnZXRPd25Qcm9wZXJ0eU5hbWVzOmUsZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYyhhKSxhLGIpfSwiZGVsZXRlIjpmdW5jdGlvbihhKXt2YXIgYj1jKGEpO3JldHVybiBkZWxldGUgYlthXX0sZml4OmZ1bmN0aW9uKCl7fSxoYXM6ZyxoYXNPd246ZyxnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD1jKGIpO3JldHVybiBkW2JdfSxzZXQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWMoYik7cmV0dXJuIGVbYl09ZCwhMH0sZW51bWVyYXRlOmYsa2V5czpmfX1mdW5jdGlvbiBtYWtlUGFzc3RocnVIYW5kbGVyKGEpe3JldHVybntnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oYil7dmFyIGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGIpO3JldHVybiBjLmNvbmZpZ3VyYWJsZT0hMCxjfSxnZXRQcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oYil7dmFyIGM9Z2V0UHJvcGVydHlEZXNjcmlwdG9yKGEsYik7cmV0dXJuIGMuY29uZmlndXJhYmxlPSEwLGN9LGdldE93blByb3BlcnR5TmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSl9LGRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGIsYyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYixjKX0sImRlbGV0ZSI6ZnVuY3Rpb24oYil7cmV0dXJuIGRlbGV0ZSBhW2JdfSxmaXg6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKGEpP2dldE93blByb3BlcnRpZXMoYSk6dW5kZWZpbmVkfSxoYXM6ZnVuY3Rpb24oYil7cmV0dXJuIGIgaW4gYX0saGFzT3duOmZ1bmN0aW9uKGIpe3JldHVybnt9Lmhhc093blByb3BlcnR5LmNhbGwoYSxiKX0sZ2V0OmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGFbY119LHNldDpmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGFbY109ZCwhMH0sZW51bWVyYXRlOmZ1bmN0aW9uKCl7dmFyIGI9W107Zm9yKG5hbWUgaW4gYSliLnB1c2gobmFtZSk7cmV0dXJuIGJ9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoYSl9fX1mdW5jdGlvbiBoYXNPd24oYSxiKXtyZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfWZ1bmN0aW9uIERpY3QoYSxiKXt0aGlzLnRhYmxlPWF8fE9iamVjdC5jcmVhdGUobnVsbCx7fSksdGhpcy5zaXplPWJ8fDB9ZnVuY3Rpb24gU3RhY2soYSl7dGhpcy5lbHRzPWF8fG51bGx9dmFyIHRva2Vucz1bIkVORCIsIlxuIiwiOyIsIiwiLCI9IiwiPyIsIjoiLCJDT05ESVRJT05BTCIsInx8IiwiJiYiLCJ8IiwiXiIsIiYiLCI9PSIsIiE9IiwiPT09IiwiIT09IiwiPCIsIjw9IiwiPj0iLCI+IiwiPDwiLCI+PiIsIj4+PiIsIisiLCItIiwiKiIsIi8iLCIlIiwiISIsIn4iLCJVTkFSWV9QTFVTIiwiVU5BUllfTUlOVVMiLCIrKyIsIi0tIiwiLiIsIlsiLCJdIiwieyIsIn0iLCIoIiwiKSIsIlNDUklQVCIsIkJMT0NLIiwiTEFCRUwiLCJGT1JfSU4iLCJDQUxMIiwiTkVXX1dJVEhfQVJHUyIsIklOREVYIiwiQVJSQVlfSU5JVCIsIk9CSkVDVF9JTklUIiwiUFJPUEVSVFlfSU5JVCIsIkdFVFRFUiIsIlNFVFRFUiIsIkdST1VQIiwiTElTVCIsIkxFVF9CTE9DSyIsIkFSUkFZX0NPTVAiLCJHRU5FUkFUT1IiLCJDT01QX1RBSUwiLCJJTVBMRU1FTlRTIiwiSU5URVJGQUNFIiwiTEVUIiwiTU9EVUxFIiwiUEFDS0FHRSIsIlBSSVZBVEUiLCJQUk9URUNURUQiLCJQVUJMSUMiLCJTVEFUSUMiLCJVU0UiLCJZSUVMRCIsIklERU5USUZJRVIiLCJOVU1CRVIiLCJTVFJJTkciLCJSRUdFWFAiLCJicmVhayIsImNhc2UiLCJjYXRjaCIsImNvbnN0IiwiY29udGludWUiLCJkZWJ1Z2dlciIsImRlZmF1bHQiLCJkZWxldGUiLCJkbyIsImVsc2UiLCJleHBvcnQiLCJmYWxzZSIsImZpbmFsbHkiLCJmb3IiLCJmdW5jdGlvbiIsImlmIiwiaW1wb3J0IiwiaW4iLCJpbnN0YW5jZW9mIiwibmV3IiwibnVsbCIsInJldHVybiIsInN3aXRjaCIsInRoaXMiLCJ0aHJvdyIsInRydWUiLCJ0cnkiLCJ0eXBlb2YiLCJ2YXIiLCJ2b2lkIiwid2hpbGUiLCJ3aXRoIl0sc3RyaWN0S2V5d29yZHM9e19fcHJvdG9fXzpudWxsLCJpbXBsZW1lbnRzIjohMCwiaW50ZXJmYWNlIjohMCxsZXQ6ITAsInBhY2thZ2UiOiEwLCJwcml2YXRlIjohMCwicHJvdGVjdGVkIjohMCwicHVibGljIjohMCwic3RhdGljIjohMCx1c2U6ITAseWllbGQ6ITB9LHN0YXRlbWVudFN0YXJ0VG9rZW5zPVsiYnJlYWsiLCJjb25zdCIsImNvbnRpbnVlIiwiZGVidWdnZXIiLCJkbyIsImZvciIsImlmIiwibGV0IiwicmV0dXJuIiwic3dpdGNoIiwidGhyb3ciLCJ0cnkiLCJ2YXIiLCJ5aWVsZCIsIndoaWxlIiwid2l0aCJdLHdoaXRlc3BhY2VDaGFycz1bIgkiLCILIiwiXGYiLCIgIiwiwqAiLCLvu78iLCLhmoAiLCLhoI4iLCLigIAiLCLigIEiLCLigIIiLCLigIMiLCLigIQiLCLigIUiLCLigIYiLCLigIciLCLigIgiLCLigIkiLCLigIoiLCLigK8iLCLigZ8iLCLjgIAiXSx3aGl0ZXNwYWNlPXt9O2Zvcih2YXIgaT0wO2k8d2hpdGVzcGFjZUNoYXJzLmxlbmd0aDtpKyspd2hpdGVzcGFjZVt3aGl0ZXNwYWNlQ2hhcnNbaV1dPSEwO3ZhciBvcFR5cGVOYW1lcz17IlxuIjoiTkVXTElORSIsIjsiOiJTRU1JQ09MT04iLCIsIjoiQ09NTUEiLCI/IjoiSE9PSyIsIjoiOiJDT0xPTiIsInx8IjoiT1IiLCImJiI6IkFORCIsInwiOiJCSVRXSVNFX09SIiwiXiI6IkJJVFdJU0VfWE9SIiwiJiI6IkJJVFdJU0VfQU5EIiwiPT09IjoiU1RSSUNUX0VRIiwiPT0iOiJFUSIsIj0iOiJBU1NJR04iLCIhPT0iOiJTVFJJQ1RfTkUiLCIhPSI6Ik5FIiwiPDwiOiJMU0giLCI8PSI6IkxFIiwiPCI6IkxUIiwiPj4+IjoiVVJTSCIsIj4+IjoiUlNIIiwiPj0iOiJHRSIsIj4iOiJHVCIsIisrIjoiSU5DUkVNRU5UIiwiLS0iOiJERUNSRU1FTlQiLCIrIjoiUExVUyIsIi0iOiJNSU5VUyIsIioiOiJNVUwiLCIvIjoiRElWIiwiJSI6Ik1PRCIsIiEiOiJOT1QiLCJ+IjoiQklUV0lTRV9OT1QiLCIuIjoiRE9UIiwiWyI6IkxFRlRfQlJBQ0tFVCIsIl0iOiJSSUdIVF9CUkFDS0VUIiwieyI6IkxFRlRfQ1VSTFkiLCJ9IjoiUklHSFRfQ1VSTFkiLCIoIjoiTEVGVF9QQVJFTiIsIikiOiJSSUdIVF9QQVJFTiJ9LGtleXdvcmRzPXtfX3Byb3RvX186bnVsbH0sbW96aWxsYUtleXdvcmRzPXtfX3Byb3RvX186bnVsbH0sdG9rZW5JZHM9e30saG9zdFN1cHBvcnRzRXZhbENvbnN0PWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBldmFsKCIoZnVuY3Rpb24ocykgeyBldmFsKHMpOyByZXR1cm4geCB9KSgnY29uc3QgeCA9IHRydWU7JykiKX1jYXRjaChlKXtyZXR1cm4hMX19KCksY29uc3RzPWhvc3RTdXBwb3J0c0V2YWxDb25zdD8iY29uc3QgIjoidmFyICI7Zm9yKHZhciBpPTAsaj10b2tlbnMubGVuZ3RoO2k8ajtpKyspe2k+MCYmKGNvbnN0cys9IiwgIik7dmFyIHQ9dG9rZW5zW2ldLG5hbWU7aWYoL15bYS16XS8udGVzdCh0KSl7bmFtZT10LnRvVXBwZXJDYXNlKCk7aWYobmFtZT09PSJMRVQifHxuYW1lPT09IllJRUxEIiltb3ppbGxhS2V5d29yZHNbbmFtZV09aTtzdHJpY3RLZXl3b3Jkc1tuYW1lXSYmKHN0cmljdEtleXdvcmRzW25hbWVdPWkpLGtleXdvcmRzW3RdPWl9ZWxzZSBuYW1lPS9eXFcvLnRlc3QodCk/b3BUeXBlTmFtZXNbdF06dDtjb25zdHMrPW5hbWUrIiA9ICIraSx0b2tlbklkc1tuYW1lXT1pLHRva2Vuc1t0XT1pfWNvbnN0cys9IjsiO3ZhciBpc1N0YXRlbWVudFN0YXJ0Q29kZT17X19wcm90b19fOm51bGx9O2ZvcihpPTAsaj1zdGF0ZW1lbnRTdGFydFRva2Vucy5sZW5ndGg7aTxqO2krKylpc1N0YXRlbWVudFN0YXJ0Q29kZVtrZXl3b3Jkc1tzdGF0ZW1lbnRTdGFydFRva2Vuc1tpXV1dPSEwO3ZhciBhc3NpZ25PcHM9WyJ8IiwiXiIsIiYiLCI8PCIsIj4+IiwiPj4+IiwiKyIsIi0iLCIqIiwiLyIsIiUiXTtmb3IoaT0wLGo9YXNzaWduT3BzLmxlbmd0aDtpPGo7aSsrKXQ9YXNzaWduT3BzW2ldLGFzc2lnbk9wc1t0XT10b2tlbnNbdF07dmFyIEZwYXBwbHk9RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LGFwcGx5TmV3O0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kP2FwcGx5TmV3PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIG5ldyhiLmJpbmQuYXBwbHkoYixbLF0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGMpKSkpfTphcHBseU5ldz1mdW5jdGlvbiBhcHBseU5ldyhmLGEpe3N3aXRjaChhLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgZjtjYXNlIDE6cmV0dXJuIG5ldyBmKGFbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGYoYVswXSxhWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBmKGFbMF0sYVsxXSxhWzJdKTtkZWZhdWx0OnZhciBhcmdTdHI9ImFbMF0iO2Zvcih2YXIgaT0xLG49YS5sZW5ndGg7aTxuO2krKylhcmdTdHIrPSIsYVsiK2krIl0iO3JldHVybiBldmFsKCJuZXcgZigiK2FyZ1N0cisiKSIpfX07dmFyIGhhc093blByb3BlcnR5PXt9Lmhhc093blByb3BlcnR5O0RpY3QuY3JlYXRlPWZ1bmN0aW9uKGEpe3ZhciBiPU9iamVjdC5jcmVhdGUobnVsbCx7fSksYz0wLGQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKXt2YXIgZz1kW2VdO2JbZ109YVtnXSxjKyt9cmV0dXJuIG5ldyBEaWN0KGIsYyl9LERpY3QucHJvdG90eXBlPXtoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwodGhpcy50YWJsZSxhKX0sc2V0OmZ1bmN0aW9uKGEsYil7aGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnRhYmxlLGEpfHx0aGlzLnNpemUrKyx0aGlzLnRhYmxlW2FdPWJ9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50YWJsZVthXX0sZ2V0RGVmOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwodGhpcy50YWJsZSxhKXx8KHRoaXMuc2l6ZSsrLHRoaXMudGFibGVbYV09YigpKSx0aGlzLnRhYmxlW2FdfSxmb3JFYWNoOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFibGU7Zm9yKHZhciBjIGluIGIpYS5jYWxsKHRoaXMsYyxiW2NdKX0sbWFwOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFibGUsYz1PYmplY3QuY3JlYXRlKG51bGwse30pO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24oYixkKXtjW2JdPWEuY2FsbCh0aGlzLGQsYil9KSxuZXcgRGljdChjLHRoaXMuc2l6ZSl9LG1hcE9iamVjdDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnRhYmxlLGM9T2JqZWN0LmNyZWF0ZShudWxsLHt9KTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGIsZCl7Y1tiXT1hLmNhbGwodGhpcyxkLGIpfSksY30sdG9PYmplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXBPYmplY3QoZnVuY3Rpb24oYSl7cmV0dXJuIGF9KX0sY2hvb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMudGFibGUpWzBdfSxyZW1vdmU6ZnVuY3Rpb24oYSl7aGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnRhYmxlLGEpJiYodGhpcy5zaXplLS0sZGVsZXRlIHRoaXMudGFibGVbYV0pfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIGE9T2JqZWN0LmNyZWF0ZShudWxsLHt9KTtmb3IodmFyIGIgaW4gdGhpcy50YWJsZSlhW2JdPXRoaXMudGFibGVbYl07cmV0dXJuIG5ldyBEaWN0KGEsdGhpcy5zaXplKX0sa2V5czpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLnRhYmxlKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBEaWN0XSJ9fTt2YXIgX1dlYWtNYXA9dHlwZW9mIFdlYWtNYXA9PSJmdW5jdGlvbiI/V2Vha01hcDpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dGhpcy5hcnJheT1hfHxbXX1mdW5jdGlvbiBiKGEsYixjLGQpe3ZhciBlPWEuYXJyYXk7Zm9yKHZhciBmPTAsZz1lLmxlbmd0aDtmPGc7ZisrKXt2YXIgaD1lW2ZdO2lmKGgua2V5PT09YilyZXR1cm4gYyhoLGYpfXJldHVybiBkKCl9cmV0dXJuIGEucHJvdG90eXBlPXtoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGIodGhpcyxhLGZ1bmN0aW9uKCl7cmV0dXJuITB9LGZ1bmN0aW9uKCl7cmV0dXJuITF9KX0sc2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5hcnJheTtiKHRoaXMsYSxmdW5jdGlvbihhKXthLnZhbHVlPWN9LGZ1bmN0aW9uKCl7ZC5wdXNoKHtrZXk6YSx2YWx1ZTpjfSl9KX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBiKHRoaXMsYSxmdW5jdGlvbihhKXtyZXR1cm4gYS52YWx1ZX0sZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pfSwiZGVsZXRlIjpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmFycmF5O2IodGhpcyxhLGZ1bmN0aW9uKGEsYil7Yy5zcGxpY2UoYiwxKX0sZnVuY3Rpb24oKXt9KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBXZWFrTWFwXSJ9fSxhfSgpO1N0YWNrLnByb3RvdHlwZT17cHVzaDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFN0YWNrKHt0b3A6YSxyZXN0OnRoaXMuZWx0c30pfSx0b3A6ZnVuY3Rpb24oKXtpZighdGhpcy5lbHRzKXRocm93IG5ldyBFcnJvcigiZW1wdHkgc3RhY2siKTtyZXR1cm4gdGhpcy5lbHRzLnRvcH0saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvcD09PW51bGx9LGZpbmQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMuZWx0cztiO2I9Yi5yZXN0KWlmKGEoYi50b3ApKXJldHVybiBiLnRvcDtyZXR1cm4gbnVsbH0saGFzOmZ1bmN0aW9uKGEpe3JldHVybiBCb29sZWFuKHRoaXMuZmluZChmdW5jdGlvbihiKXtyZXR1cm4gYj09PWF9KSl9LGZvckVhY2g6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMuZWx0cztiO2I9Yi5yZXN0KWEoYi50b3ApfX0sQXJyYXkucHJvdG90eXBlLmNvcHl8fGRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwiY29weSIsZnVuY3Rpb24oKXt2YXIgYT1bXTtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2I8YztiKyspYVtiXT10aGlzW2JdO3JldHVybiBhfSwhMSwhMSwhMCksQXJyYXkucHJvdG90eXBlLnRvcHx8ZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCJ0b3AiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RoJiZ0aGlzW3RoaXMubGVuZ3RoLTFdfSwhMSwhMSwhMCksZXhwb3J0cy50b2tlbnM9dG9rZW5zLGV4cG9ydHMud2hpdGVzcGFjZT13aGl0ZXNwYWNlLGV4cG9ydHMub3BUeXBlTmFtZXM9b3BUeXBlTmFtZXMsZXhwb3J0cy5rZXl3b3Jkcz1rZXl3b3JkcyxleHBvcnRzLm1vemlsbGFLZXl3b3Jkcz1tb3ppbGxhS2V5d29yZHMsZXhwb3J0cy5zdHJpY3RLZXl3b3Jkcz1zdHJpY3RLZXl3b3JkcyxleHBvcnRzLmlzU3RhdGVtZW50U3RhcnRDb2RlPWlzU3RhdGVtZW50U3RhcnRDb2RlLGV4cG9ydHMudG9rZW5JZHM9dG9rZW5JZHMsZXhwb3J0cy5jb25zdHM9Y29uc3RzLGV4cG9ydHMuYXNzaWduT3BzPWFzc2lnbk9wcyxleHBvcnRzLmRlZmluZUdldHRlcj1kZWZpbmVHZXR0ZXIsZXhwb3J0cy5kZWZpbmVHZXR0ZXJTZXR0ZXI9ZGVmaW5lR2V0dGVyU2V0dGVyLGV4cG9ydHMuZGVmaW5lTWVtb0dldHRlcj1kZWZpbmVNZW1vR2V0dGVyLGV4cG9ydHMuZGVmaW5lUHJvcGVydHk9ZGVmaW5lUHJvcGVydHksZXhwb3J0cy5pc05hdGl2ZUNvZGU9aXNOYXRpdmVDb2RlLGV4cG9ydHMuYXBwbHk9YXBwbHksZXhwb3J0cy5hcHBseU5ldz1hcHBseU5ldyxleHBvcnRzLm1peGluSGFuZGxlcj1taXhpbkhhbmRsZXIsZXhwb3J0cy53aGl0ZWxpc3RIYW5kbGVyPXdoaXRlbGlzdEhhbmRsZXIsZXhwb3J0cy5ibGFja2xpc3RIYW5kbGVyPWJsYWNrbGlzdEhhbmRsZXIsZXhwb3J0cy5tYWtlUGFzc3RocnVIYW5kbGVyPW1ha2VQYXNzdGhydUhhbmRsZXIsZXhwb3J0cy5EaWN0PURpY3QsZXhwb3J0cy5XZWFrTWFwPV9XZWFrTWFwLGV4cG9ydHMuU3RhY2s9U3RhY2t9KSxkZWZpbmUoImFjZS9uYXJjaXNzdXMvb3B0aW9ucyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtiLmhpZGRlbkhvc3RHbG9iYWxzPXtOYXJjaXNzdXM6ITB9LGIuZGVzdWdhckV4dGVuc2lvbnM9ITEsYi5hbGxvd0hUTUxDb21tZW50cz0hMSxiLm1vemlsbGFNb2RlPSEwLGIucGFyZW5GcmVlTW9kZT0hMX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-json.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gaW5pdEJhc2VVcmxzKGEpe3JlcXVpcmUudGxucz1hfWZ1bmN0aW9uIGluaXRTZW5kZXIoKXt2YXIgYT1yZXF1aXJlKG51bGwsImFjZS9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixiPXJlcXVpcmUobnVsbCwiYWNlL2xpYi9vb3AiKSxjPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZnVuY3Rpb24oKXtiLmltcGxlbWVudCh0aGlzLGEpLHRoaXMuY2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtwb3N0TWVzc2FnZSh7dHlwZToiY2FsbCIsaWQ6YixkYXRhOmF9KX0sdGhpcy5lbWl0PWZ1bmN0aW9uKGEsYil7cG9zdE1lc3NhZ2Uoe3R5cGU6ImV2ZW50IixuYW1lOmEsZGF0YTpifSl9fS5jYWxsKGMucHJvdG90eXBlKSxuZXcgY30ibm8gdXNlIHN0cmljdCI7dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihhKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmF9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oYSxiKXtpZihiLmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgYz1iLnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShhLGNbMF0pKyIhIitub3JtYWxpemVNb2R1bGUoYSxjWzFdKX1pZihiLmNoYXJBdCgwKT09Ii4iKXt2YXIgZD1hLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGI9ZCsiLyIrYjt3aGlsZShiLmluZGV4T2YoIi4iKSE9PS0xJiZlIT1iKXZhciBlPWIsYj1iLnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiBifSxyZXF1aXJlPWZ1bmN0aW9uKGEsYil7dmFyIGI9bm9ybWFsaXplTW9kdWxlKGEsYiksYz1yZXF1aXJlLm1vZHVsZXNbYl07aWYoYylyZXR1cm4gYy5pbml0aWFsaXplZHx8KGMuZXhwb3J0cz1jLmZhY3RvcnkoKS5leHBvcnRzLGMuaW5pdGlhbGl6ZWQ9ITApLGMuZXhwb3J0czt2YXIgZD1iLnNwbGl0KCIvIik7ZFswXT1yZXF1aXJlLnRsbnNbZFswXV18fGRbMF07dmFyIGU9ZC5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9YixpbXBvcnRTY3JpcHRzKGUpLHJlcXVpcmUoYSxiKX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGEsYixjKXthcmd1bWVudHMubGVuZ3RoPT0yP2M9Yjphcmd1bWVudHMubGVuZ3RoPT0xJiYoYz1hLGE9cmVxdWlyZS5pZCk7aWYoYS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIGQ9ZnVuY3Rpb24oYixjKXtyZXR1cm4gcmVxdWlyZShhLGIsYyl9O3JlcXVpcmUubW9kdWxlc1thXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBhPXtleHBvcnRzOnt9fSxiPWMoZCxhLmV4cG9ydHMsYSk7cmV0dXJuIGImJihhLmV4cG9ydHM9YiksYX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO2lmKGIuY29tbWFuZCltYWluW2IuY29tbWFuZF0uYXBwbHkobWFpbixiLmFyZ3MpO2Vsc2UgaWYoYi5pbml0KXtpbml0QmFzZVVybHMoYi50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBjPXJlcXVpcmUobnVsbCxiLm1vZHVsZSlbYi5jbGFzc25hbWVdO21haW49bmV3IGMoc2VuZGVyKX1lbHNlIGIuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KGIuZXZlbnQsYi5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oYSxiLGMpe2EoIi4vcmVnZXhwIiksYSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBnKGEpe3JldHVybihhLmdsb2JhbD8iZyI6IiIpKyhhLmlnbm9yZUNhc2U/ImkiOiIiKSsoYS5tdWx0aWxpbmU/Im0iOiIiKSsoYS5leHRlbmRlZD8ieCI6IiIpKyhhLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIGgoYSxiLGMpe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYixjKTtmb3IodmFyIGQ9Y3x8MDtkPGEubGVuZ3RoO2QrKylpZihhW2RdPT09YilyZXR1cm4gZDtyZXR1cm4tMX12YXIgZD17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxlPWQuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQsZj1mdW5jdGlvbigpe3ZhciBhPS9eL2c7cmV0dXJuIGQudGVzdC5jYWxsKGEsIiIpLCFhLmxhc3RJbmRleH0oKTtpZihmJiZlKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjLGk7aWYodHlwZW9mIGE9PSJzdHJpbmciJiZiKXshZSYmYi5sZW5ndGg+MSYmaChiLCIiKT4tMSYmKGk9UmVnRXhwKHRoaXMuc291cmNlLGQucmVwbGFjZS5jYWxsKGcodGhpcyksImciLCIiKSksZC5yZXBsYWNlLmNhbGwoYS5zbGljZShiLmluZGV4KSxpLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTE7YTxhcmd1bWVudHMubGVuZ3RoLTI7YSsrKWFyZ3VtZW50c1thXT09PXVuZGVmaW5lZCYmKGJbYV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGo9MTtqPGIubGVuZ3RoO2orKyljPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2otMV0sYyYmKGJbY109YltqXSk7IWYmJnRoaXMuZ2xvYmFsJiYhYlswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PmIuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIGJ9LGZ8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmNhbGwodGhpcyxhKTtyZXR1cm4gYiYmdGhpcy5nbG9iYWwmJiFiWzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+Yi5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIWJ9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBwKGEpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGF9Y2F0Y2goYil7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD1nLmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGg9Yy5hcHBseShmLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIGghPT1udWxsJiZPYmplY3QoaCk9PT1oP2g6Zn1yZXR1cm4gYy5hcHBseShiLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBlfSk7dmFyIGQ9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsZT1BcnJheS5wcm90b3R5cGUsZj1PYmplY3QucHJvdG90eXBlLGc9ZS5zbGljZSxoPWQuYmluZChmLnRvU3RyaW5nKSxpPWQuYmluZChmLmhhc093blByb3BlcnR5KSxqLGssbCxtLG47aWYobj1pKGYsIl9fZGVmaW5lR2V0dGVyX18iKSlqPWQuYmluZChmLl9fZGVmaW5lR2V0dGVyX18pLGs9ZC5iaW5kKGYuX19kZWZpbmVTZXR0ZXJfXyksbD1kLmJpbmQoZi5fX2xvb2t1cEdldHRlcl9fKSxtPWQuYmluZChmLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGIpe3JldHVybiBoKGIpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9YXJndW1lbnRzWzFdLGU9MCxmPWMubGVuZ3RoPj4+MDtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoZTxmKWUgaW4gYyYmYi5jYWxsKGQsY1tlXSxlLGMpLGUrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjAsZT1BcnJheShkKSxmPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBnPTA7ZzxkO2crKylnIGluIGMmJihlW2ddPWIuY2FsbChmLGNbZ10sZyxjKSk7cmV0dXJuIGV9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9W10sZj1hcmd1bWVudHNbMV07aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgZz0wO2c8ZDtnKyspZyBpbiBjJiZiLmNhbGwoZixjW2ddLGcsYykmJmUucHVzaChjW2ddKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9YXJndW1lbnRzWzFdO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIGY9MDtmPGQ7ZisrKWlmKGYgaW4gYyYmIWIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MCxlPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBmPTA7ZjxkO2YrKylpZihmIGluIGMmJmIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFkJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGU9MCxmO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZj1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihlIGluIGMpe2Y9Y1tlKytdO2JyZWFrfWlmKCsrZT49ZCl0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2U8ZDtlKyspZSBpbiBjJiYoZj1iLmNhbGwodm9pZCAwLGYsY1tlXSxlLGMpKTtyZXR1cm4gZn0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighZCYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBlLGY9ZC0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihmIGluIGMpe2U9Y1tmLS1dO2JyZWFrfWlmKC0tZjwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIGYgaW4gdGhpcyYmKGU9Yi5jYWxsKHZvaWQgMCxlLGNbZl0sZixjKSk7d2hpbGUoZi0tKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGU9RShhcmd1bWVudHNbMV0pKSxlPWU+PTA/ZTpNYXRoLm1heCgwLGQrZSk7Zm9yKDtlPGQ7ZSsrKWlmKGUgaW4gYyYmY1tlXT09PWIpcmV0dXJuIGU7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT1kLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoZT1NYXRoLm1pbihlLEUoYXJndW1lbnRzWzFdKSkpLGU9ZT49MD9lOmQtTWF0aC5hYnMoZSk7Zm9yKDtlPj0wO2UtLSlpZihlIGluIGMmJmI9PT1jW2VdKXJldHVybiBlO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGIpe3JldHVybiBiLl9fcHJvdG9fX3x8KGIuY29uc3RydWN0b3I/Yi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6Zil9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIG89Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKGIsYyl7aWYodHlwZW9mIGIhPSJvYmplY3QiJiZ0eXBlb2YgYiE9ImZ1bmN0aW9uInx8Yj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihvK2IpO2lmKCFpKGIsYykpcmV0dXJuO3ZhciBkLGUsZztkPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYobil7dmFyIGg9Yi5fX3Byb3RvX187Yi5fX3Byb3RvX189Zjt2YXIgZT1sKGIsYyksZz1tKGIsYyk7Yi5fX3Byb3RvX189aDtpZihlfHxnKXJldHVybiBlJiYoZC5nZXQ9ZSksZyYmKGQuc2V0PWcpLGR9cmV0dXJuIGQudmFsdWU9YltjXSxkfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKGIpe3JldHVybiBPYmplY3Qua2V5cyhiKX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ7aWYoYj09PW51bGwpZD17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIGIhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgYisiXSAhPSAnb2JqZWN0JyIpO3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1iLGQ9bmV3IGUsZC5fX3Byb3RvX189Yn1yZXR1cm4gYyE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxjKSxkfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgcT1wKHt9KSxyPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFxfHwhcil2YXIgcz1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8cyl7dmFyIHQ9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHU9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIix2PSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKGIsYyxkKXtpZih0eXBlb2YgYiE9Im9iamVjdCImJnR5cGVvZiBiIT0iZnVuY3Rpb24ifHxiPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHUrYik7aWYodHlwZW9mIGQhPSJvYmplY3QiJiZ0eXBlb2YgZCE9ImZ1bmN0aW9uInx8ZD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih0K2QpO2lmKHMpdHJ5e3JldHVybiBzLmNhbGwoT2JqZWN0LGIsYyxkKX1jYXRjaChlKXt9aWYoaShkLCJ2YWx1ZSIpKWlmKG4mJihsKGIsYyl8fG0oYixjKSkpe3ZhciBnPWIuX19wcm90b19fO2IuX19wcm90b19fPWYsZGVsZXRlIGJbY10sYltjXT1kLnZhbHVlLGIuX19wcm90b19fPWd9ZWxzZSBiW2NdPWQudmFsdWU7ZWxzZXtpZighbil0aHJvdyBuZXcgVHlwZUVycm9yKHYpO2koZCwiZ2V0IikmJmooYixjLGQuZ2V0KSxpKGQsInNldCIpJiZrKGIsYyxkLnNldCl9cmV0dXJuIGJ9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oYixjKXtmb3IodmFyIGQgaW4gYylpKGMsZCkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLGQsY1tkXSk7cmV0dXJuIGJ9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKGIpe3JldHVybiBifSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKHcpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgYz09ImZ1bmN0aW9uIj9jOmIoYyl9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbihiKXtpZihPYmplY3QoYik9PT1iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGM9IiI7d2hpbGUoaShiLGMpKWMrPSI/IjtiW2NdPSEwO3ZhciBkPWkoYixjKTtyZXR1cm4gZGVsZXRlIGJbY10sZH0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAseT1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLHo9eS5sZW5ndGg7Zm9yKHZhciBBIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gSChhKXtpZih0eXBlb2YgYSE9Im9iamVjdCImJnR5cGVvZiBhIT0iZnVuY3Rpb24ifHxhPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEg9W107Zm9yKHZhciBiIGluIGEpaShhLGIpJiZILnB1c2goYik7aWYoeClmb3IodmFyIGM9MCxkPXo7YzxkO2MrKyl7dmFyIGU9eVtjXTtpKGEsZSkmJkgucHVzaChlKX1yZXR1cm4gSH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciBiLGMsZCxlO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjtiPVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGU9dGhpcy5nZXRVVENGdWxsWWVhcigpLGU9KGU8MD8iLSI6ZT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoZSkpLnNsaWNlKDA8PWUmJmU8PTk5OTk/LTQ6LTYpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWQ9YltjXSxkPDEwJiYoYltjXT0iMCIrZCk7cmV0dXJuIGUrIi0iK2Iuc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK2Iuc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGIpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbiBlKGIsYyxkLGYsZyxoLGkpe3ZhciBqPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGEpe3ZhciBrPWo9PTEmJlN0cmluZyhiKT09PWI/bmV3IGEoZS5wYXJzZShiKSk6aj49Nz9uZXcgYShiLGMsZCxmLGcsaCxpKTpqPj02P25ldyBhKGIsYyxkLGYsZyxoKTpqPj01P25ldyBhKGIsYyxkLGYsZyk6aj49ND9uZXcgYShiLGMsZCxmKTpqPj0zP25ldyBhKGIsYyxkKTpqPj0yP25ldyBhKGIsYyk6aj49MT9uZXcgYShiKTpuZXcgYTtyZXR1cm4gay5jb25zdHJ1Y3Rvcj1lLGt9cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIGQgaW4gYSliW2RdPWFbZF07cmV0dXJuIGIubm93PWEubm93LGIuVVRDPWEuVVRDLGIucHJvdG90eXBlPWEucHJvdG90eXBlLGIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIsYi5wYXJzZT1mdW5jdGlvbihkKXt2YXIgZT1jLmV4ZWMoZCk7aWYoZSl7ZS5zaGlmdCgpO2Zvcih2YXIgZj0xO2Y8NztmKyspZVtmXT0rKGVbZl18fChmPDM/MTowKSksZj09MSYmZVtmXS0tO3ZhciBnPStlLnBvcCgpLGg9K2UucG9wKCksaT1lLnBvcCgpLGo9MDtpZihpKXtpZihoPjIzfHxnPjU5KXJldHVybiBOYU47aj0oaCo2MCtnKSo2ZTQqKGk9PSIrIj8tMToxKX12YXIgaz0rZVswXTtyZXR1cm4gMDw9ayYmazw9OTk/KGVbMF09ays0MDAsYS5VVEMuYXBwbHkodGhpcyxlKStqLTEyNjIyNzgwOGU1KTphLlVUQy5hcHBseSh0aGlzLGUpK2p9cmV0dXJuIGEucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxifShEYXRlKSk7dmFyIEI9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxCLnRyaW0oKSl7Qj0iWyIrQisiXSI7dmFyIEM9bmV3IFJlZ0V4cCgiXiIrQitCKyIqIiksRD1uZXcgUmVnRXhwKEIrQisiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoQywiIikucmVwbGFjZShELCIiKX19dmFyIEU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9K2EsYSE9PWE/YT0wOmEhPT0wJiZhIT09MS8wJiZhIT09LUluZmluaXR5JiYoYT0oYT4wfHwtMSkqTWF0aC5mbG9vcihNYXRoLmFicyhhKSkpLGF9LEY9ImEiWzBdIT0iYSIsRz1mdW5jdGlvbihhKXtpZihhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIEYmJnR5cGVvZiBhPT0ic3RyaW5nIiYmYT9hLnNwbGl0KCIiKTpPYmplY3QoYSl9fSksZGVmaW5lKCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307ZC5fZW1pdD1kLl9kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fSx0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdfHxbXSxkPXRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXTtpZighYy5sZW5ndGgmJiFkKXJldHVybjtiPWJ8fHt9LGIudHlwZT1hLGIuc3RvcFByb3BhZ2F0aW9ufHwoYi5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0pLGIucHJldmVudERlZmF1bHR8fChiLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfSk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe2NbZV0oYik7aWYoYi5wcm9wYWdhdGlvblN0b3BwZWQpYnJlYWt9aWYoZCYmIWIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4gZChiKX0sZC5zZXREZWZhdWx0SGFuZGxlcj1mdW5jdGlvbihhLGIpe3RoaXMuX2RlZmF1bHRIYW5kbGVycz10aGlzLl9kZWZhdWx0SGFuZGxlcnN8fHt9O2lmKHRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkZWZhdWx0IGhhbmRsZXIgZm9yICciK2ErIicgaXMgYWxyZWFkeSBzZXQiKTt0aGlzLl9kZWZhdWx0SGFuZGxlcnNbYV09Yn0sZC5vbj1kLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLl9ldmVudFJlZ2lzdHJ5PXRoaXMuX2V2ZW50UmVnaXN0cnl8fHt9O3ZhciBjPXRoaXMuX2V2ZW50UmVnaXN0cnlbYV07aWYoIWMpdmFyIGM9dGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXTtjLmluZGV4T2YoYik9PS0xJiZjLnB1c2goYil9LGQucmVtb3ZlTGlzdGVuZXI9ZC5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdO2lmKCFjKXJldHVybjt2YXIgZD1jLmluZGV4T2YoYik7ZCE9PS0xJiZjLnNwbGljZShkLDEpfSxkLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihhKXt0aGlzLl9ldmVudFJlZ2lzdHJ5JiYodGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXSl9LGIuRXZlbnRFbWl0dGVyPWR9KSxkZWZpbmUoImFjZS9saWIvb29wIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2IuaW5oZXJpdHM9ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKGIsYyl7YS5wcm90b3R5cGU9Yy5wcm90b3R5cGUsYi5zdXBlcl89Yy5wcm90b3R5cGUsYi5wcm90b3R5cGU9bmV3IGEsYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yn19KCksYi5taXhpbj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWFbY109YltjXX0sYi5pbXBsZW1lbnQ9ZnVuY3Rpb24oYSxjKXtiLm1peGluKGEsYyl9fSksZGVmaW5lKCJhY2UvbW9kZS9qc29uX3dvcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3dvcmtlci9taXJyb3IiLCJhY2UvbW9kZS9qc29uL2pzb25fcGFyc2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vd29ya2VyL21pcnJvciIpLk1pcnJvcixmPWEoIi4vanNvbi9qc29uX3BhcnNlIiksZz1iLkpzb25Xb3JrZXI9ZnVuY3Rpb24oYSl7ZS5jYWxsKHRoaXMsYSksdGhpcy5zZXRUaW1lb3V0KDIwMCl9O2QuaW5oZXJpdHMoZyxlKSxmdW5jdGlvbigpe3RoaXMub25VcGRhdGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRvYy5nZXRWYWx1ZSgpO3RyeXt2YXIgYj1mKGEpfWNhdGNoKGMpe3ZhciBkPXRoaXMuY2hhclRvRG9jdW1lbnRQb3NpdGlvbihjLmF0LTEpO3RoaXMuc2VuZGVyLmVtaXQoImVycm9yIix7cm93OmQucm93LGNvbHVtbjpkLmNvbHVtbix0ZXh0OmMubWVzc2FnZSx0eXBlOiJlcnJvciJ9KTtyZXR1cm59dGhpcy5zZW5kZXIuZW1pdCgib2siKX0sdGhpcy5jaGFyVG9Eb2N1bWVudFBvc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYz10aGlzLmRvYy5nZXRMZW5ndGgoKSxkPXRoaXMuZG9jLmdldE5ld0xpbmVDaGFyYWN0ZXIoKS5sZW5ndGg7aWYoIWMpcmV0dXJue3JvdzowLGNvbHVtbjowfTt2YXIgZT0wO3doaWxlKGI8Yyl7dmFyIGY9dGhpcy5kb2MuZ2V0TGluZShiKSxnPWYubGVuZ3RoK2Q7aWYoZStnPmEpcmV0dXJue3JvdzpiLGNvbHVtbjphLWV9O2UrPWcsYis9MX1yZXR1cm57cm93OmItMSxjb2x1bW46Zi5sZW5ndGh9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS93b3JrZXIvbWlycm9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2RvY3VtZW50IiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2RvY3VtZW50IikuRG9jdW1lbnQsZT1hKCIuLi9saWIvbGFuZyIpLGY9Yi5NaXJyb3I9ZnVuY3Rpb24oYSl7dGhpcy5zZW5kZXI9YTt2YXIgYj10aGlzLmRvYz1uZXcgZCgiIiksYz10aGlzLmRlZmVycmVkVXBkYXRlPWUuZGVmZXJyZWRDYWxsKHRoaXMub25VcGRhdGUuYmluZCh0aGlzKSksZj10aGlzO2Eub24oImNoYW5nZSIsZnVuY3Rpb24oYSl7Yi5hcHBseURlbHRhcyhbYS5kYXRhXSksYy5zY2hlZHVsZShmLiR0aW1lb3V0KX0pfTsoZnVuY3Rpb24oKXt0aGlzLiR0aW1lb3V0PTUwMCx0aGlzLnNldFRpbWVvdXQ9ZnVuY3Rpb24oYSl7dGhpcy4kdGltZW91dD1hfSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGEpe3RoaXMuZG9jLnNldFZhbHVlKGEpLHRoaXMuZGVmZXJyZWRVcGRhdGUuc2NoZWR1bGUodGhpcy4kdGltZW91dCl9LHRoaXMuZ2V0VmFsdWU9ZnVuY3Rpb24oYSl7dGhpcy5zZW5kZXIuY2FsbGJhY2sodGhpcy5kb2MuZ2V0VmFsdWUoKSxhKX0sdGhpcy5vblVwZGF0ZT1mdW5jdGlvbigpe319KS5jYWxsKGYucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL2RvY3VtZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvcmFuZ2UiLCJhY2UvYW5jaG9yIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vbGliL29vcCIpLGU9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixmPWEoIi4vcmFuZ2UiKS5SYW5nZSxnPWEoIi4vYW5jaG9yIikuQW5jaG9yLGg9ZnVuY3Rpb24oYSl7dGhpcy4kbGluZXM9W10sYS5sZW5ndGg9PTA/dGhpcy4kbGluZXM9WyIiXTpBcnJheS5pc0FycmF5KGEpP3RoaXMuaW5zZXJ0TGluZXMoMCxhKTp0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGEpfTsoZnVuY3Rpb24oKXtkLmltcGxlbWVudCh0aGlzLGUpLHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRMZW5ndGgoKTt0aGlzLnJlbW92ZShuZXcgZigwLDAsYix0aGlzLmdldExpbmUoYi0xKS5sZW5ndGgpKSx0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGEpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QWxsTGluZXMoKS5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy5jcmVhdGVBbmNob3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGcodGhpcyxhLGIpfSwiYWFhIi5zcGxpdCgvYS8pLmxlbmd0aD09MD90aGlzLiRzcGxpdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cclxufFxyL2csIlxuIikuc3BsaXQoIlxuIil9OnRoaXMuJHNwbGl0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnNwbGl0KC9cclxufFxyfFxuLyl9LHRoaXMuJGRldGVjdE5ld0xpbmU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXi4qPyhcclxufFxyfFxuKS9tKTtiP3RoaXMuJGF1dG9OZXdMaW5lPWJbMV06dGhpcy4kYXV0b05ld0xpbmU9IlxuIn0sdGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuJG5ld0xpbmVNb2RlKXtjYXNlIndpbmRvd3MiOnJldHVybiJcclxuIjtjYXNlInVuaXgiOnJldHVybiJcbiI7Y2FzZSJhdXRvIjpyZXR1cm4gdGhpcy4kYXV0b05ld0xpbmV9fSx0aGlzLiRhdXRvTmV3TGluZT0iXG4iLHRoaXMuJG5ld0xpbmVNb2RlPSJhdXRvIix0aGlzLnNldE5ld0xpbmVNb2RlPWZ1bmN0aW9uKGEpe2lmKHRoaXMuJG5ld0xpbmVNb2RlPT09YSlyZXR1cm47dGhpcy4kbmV3TGluZU1vZGU9YX0sdGhpcy5nZXROZXdMaW5lTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRuZXdMaW5lTW9kZX0sdGhpcy5pc05ld0xpbmU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PSJcclxuInx8YT09IlxyInx8YT09IlxuIn0sdGhpcy5nZXRMaW5lPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLiRsaW5lc1thXXx8IiJ9LHRoaXMuZ2V0TGluZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy4kbGluZXMuc2xpY2UoYSxiKzEpfSx0aGlzLmdldEFsbExpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGluZXMoMCx0aGlzLmdldExlbmd0aCgpKX0sdGhpcy5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbGluZXMubGVuZ3RofSx0aGlzLmdldFRleHRSYW5nZT1mdW5jdGlvbihhKXtpZihhLnN0YXJ0LnJvdz09YS5lbmQucm93KXJldHVybiB0aGlzLiRsaW5lc1thLnN0YXJ0LnJvd10uc3Vic3RyaW5nKGEuc3RhcnQuY29sdW1uLGEuZW5kLmNvbHVtbik7dmFyIGI9dGhpcy5nZXRMaW5lcyhhLnN0YXJ0LnJvdysxLGEuZW5kLnJvdy0xKTtyZXR1cm4gYi51bnNoaWZ0KCh0aGlzLiRsaW5lc1thLnN0YXJ0LnJvd118fCIiKS5zdWJzdHJpbmcoYS5zdGFydC5jb2x1bW4pKSxiLnB1c2goKHRoaXMuJGxpbmVzW2EuZW5kLnJvd118fCIiKS5zdWJzdHJpbmcoMCxhLmVuZC5jb2x1bW4pKSxiLmpvaW4odGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkpfSx0aGlzLiRjbGlwUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRMZW5ndGgoKTtyZXR1cm4gYS5yb3c+PWImJihhLnJvdz1NYXRoLm1heCgwLGItMSksYS5jb2x1bW49dGhpcy5nZXRMaW5lKGItMSkubGVuZ3RoKSxhfSx0aGlzLmluc2VydD1mdW5jdGlvbihhLGIpe2lmKCFifHxiLmxlbmd0aD09PTApcmV0dXJuIGE7YT10aGlzLiRjbGlwUG9zaXRpb24oYSksdGhpcy5nZXRMZW5ndGgoKTw9MSYmdGhpcy4kZGV0ZWN0TmV3TGluZShiKTt2YXIgYz10aGlzLiRzcGxpdChiKSxkPWMuc3BsaWNlKDAsMSlbMF0sZT1jLmxlbmd0aD09MD9udWxsOmMuc3BsaWNlKGMubGVuZ3RoLTEsMSlbMF07cmV0dXJuIGE9dGhpcy5pbnNlcnRJbkxpbmUoYSxkKSxlIT09bnVsbCYmKGE9dGhpcy5pbnNlcnROZXdMaW5lKGEpLGE9dGhpcy5pbnNlcnRMaW5lcyhhLnJvdyxjKSxhPXRoaXMuaW5zZXJ0SW5MaW5lKGEsZXx8IiIpKSxhfSx0aGlzLmluc2VydExpbmVzPWZ1bmN0aW9uKGEsYil7aWYoYi5sZW5ndGg9PTApcmV0dXJue3JvdzphLGNvbHVtbjowfTt2YXIgYz1bYSwwXTtjLnB1c2guYXBwbHkoYyxiKSx0aGlzLiRsaW5lcy5zcGxpY2UuYXBwbHkodGhpcy4kbGluZXMsYyk7dmFyIGQ9bmV3IGYoYSwwLGErYi5sZW5ndGgsMCksZT17YWN0aW9uOiJpbnNlcnRMaW5lcyIscmFuZ2U6ZCxsaW5lczpifTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTplfSksZC5lbmR9LHRoaXMuaW5zZXJ0TmV3TGluZT1mdW5jdGlvbihhKXthPXRoaXMuJGNsaXBQb3NpdGlvbihhKTt2YXIgYj10aGlzLiRsaW5lc1thLnJvd118fCIiO3RoaXMuJGxpbmVzW2Eucm93XT1iLnN1YnN0cmluZygwLGEuY29sdW1uKSx0aGlzLiRsaW5lcy5zcGxpY2UoYS5yb3crMSwwLGIuc3Vic3RyaW5nKGEuY29sdW1uLGIubGVuZ3RoKSk7dmFyIGM9e3JvdzphLnJvdysxLGNvbHVtbjowfSxkPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOmYuZnJvbVBvaW50cyhhLGMpLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmR9KSxjfSx0aGlzLmluc2VydEluTGluZT1mdW5jdGlvbihhLGIpe2lmKGIubGVuZ3RoPT0wKXJldHVybiBhO3ZhciBjPXRoaXMuJGxpbmVzW2Eucm93XXx8IiI7dGhpcy4kbGluZXNbYS5yb3ddPWMuc3Vic3RyaW5nKDAsYS5jb2x1bW4pK2IrYy5zdWJzdHJpbmcoYS5jb2x1bW4pO3ZhciBkPXtyb3c6YS5yb3csY29sdW1uOmEuY29sdW1uK2IubGVuZ3RofSxlPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOmYuZnJvbVBvaW50cyhhLGQpLHRleHQ6Yn07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGR9LHRoaXMucmVtb3ZlPWZ1bmN0aW9uKGEpe2Euc3RhcnQ9dGhpcy4kY2xpcFBvc2l0aW9uKGEuc3RhcnQpLGEuZW5kPXRoaXMuJGNsaXBQb3NpdGlvbihhLmVuZCk7aWYoYS5pc0VtcHR5KCkpcmV0dXJuIGEuc3RhcnQ7dmFyIGI9YS5zdGFydC5yb3csYz1hLmVuZC5yb3c7aWYoYS5pc011bHRpTGluZSgpKXt2YXIgZD1hLnN0YXJ0LmNvbHVtbj09MD9iOmIrMSxlPWMtMTthLmVuZC5jb2x1bW4+MCYmdGhpcy5yZW1vdmVJbkxpbmUoYywwLGEuZW5kLmNvbHVtbiksZT49ZCYmdGhpcy5yZW1vdmVMaW5lcyhkLGUpLGQhPWImJih0aGlzLnJlbW92ZUluTGluZShiLGEuc3RhcnQuY29sdW1uLHRoaXMuZ2V0TGluZShiKS5sZW5ndGgpLHRoaXMucmVtb3ZlTmV3TGluZShhLnN0YXJ0LnJvdykpfWVsc2UgdGhpcy5yZW1vdmVJbkxpbmUoYixhLnN0YXJ0LmNvbHVtbixhLmVuZC5jb2x1bW4pO3JldHVybiBhLnN0YXJ0fSx0aGlzLnJlbW92ZUluTGluZT1mdW5jdGlvbihhLGIsYyl7aWYoYj09YylyZXR1cm47dmFyIGQ9bmV3IGYoYSxiLGEsYyksZT10aGlzLmdldExpbmUoYSksZz1lLnN1YnN0cmluZyhiLGMpLGg9ZS5zdWJzdHJpbmcoMCxiKStlLnN1YnN0cmluZyhjLGUubGVuZ3RoKTt0aGlzLiRsaW5lcy5zcGxpY2UoYSwxLGgpO3ZhciBpPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOmQsdGV4dDpnfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTppfSksZC5zdGFydH0sdGhpcy5yZW1vdmVMaW5lcz1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBmKGEsMCxiKzEsMCksZD10aGlzLiRsaW5lcy5zcGxpY2UoYSxiLWErMSksZT17YWN0aW9uOiJyZW1vdmVMaW5lcyIscmFuZ2U6YyxubDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSxsaW5lczpkfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTplfSksZH0sdGhpcy5yZW1vdmVOZXdMaW5lPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGluZShhKSxjPXRoaXMuZ2V0TGluZShhKzEpLGQ9bmV3IGYoYSxiLmxlbmd0aCxhKzEsMCksZT1iK2M7dGhpcy4kbGluZXMuc3BsaWNlKGEsMixlKTt2YXIgZz17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpkLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3RoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6Z30pfSx0aGlzLnJlcGxhY2U9ZnVuY3Rpb24oYSxiKXtpZihiLmxlbmd0aD09MCYmYS5pc0VtcHR5KCkpcmV0dXJuIGEuc3RhcnQ7aWYoYj09dGhpcy5nZXRUZXh0UmFuZ2UoYSkpcmV0dXJuIGEuZW5kO3RoaXMucmVtb3ZlKGEpO2lmKGIpdmFyIGM9dGhpcy5pbnNlcnQoYS5zdGFydCxiKTtlbHNlIGM9YS5zdGFydDtyZXR1cm4gY30sdGhpcy5hcHBseURlbHRhcz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9YVtiXSxkPWYuZnJvbVBvaW50cyhjLnJhbmdlLnN0YXJ0LGMucmFuZ2UuZW5kKTtjLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLmluc2VydExpbmVzKGQuc3RhcnQucm93LGMubGluZXMpOmMuYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5pbnNlcnQoZC5zdGFydCxjLnRleHQpOmMuYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMucmVtb3ZlTGluZXMoZC5zdGFydC5yb3csZC5lbmQucm93LTEpOmMuYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMucmVtb3ZlKGQpfX0sdGhpcy5yZXZlcnREZWx0YXM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEubGVuZ3RoLTE7Yj49MDtiLS0pe3ZhciBjPWFbYl0sZD1mLmZyb21Qb2ludHMoYy5yYW5nZS5zdGFydCxjLnJhbmdlLmVuZCk7Yy5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhkLnN0YXJ0LnJvdyxkLmVuZC5yb3ctMSk6Yy5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLnJlbW92ZShkKTpjLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLmluc2VydExpbmVzKGQuc3RhcnQucm93LGMubGluZXMpOmMuYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMuaW5zZXJ0KGQuc3RhcnQsYy50ZXh0KX19fSkuY2FsbChoLnByb3RvdHlwZSksYi5Eb2N1bWVudD1ofSksZGVmaW5lKCJhY2UvcmFuZ2UiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5zdGFydD17cm93OmEsY29sdW1uOmJ9LHRoaXMuZW5kPXtyb3c6Yyxjb2x1bW46ZH19OyhmdW5jdGlvbigpe3RoaXMuaXNFcXVhbD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWEuc3RhcnQucm93JiZ0aGlzLmVuZC5yb3c9PWEuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PWEuc3RhcnQuY29sdW1uJiZ0aGlzLmVuZC5jb2x1bW49PWEuZW5kLmNvbHVtbn0sdGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSYW5nZTogWyIrdGhpcy5zdGFydC5yb3crIi8iK3RoaXMuc3RhcnQuY29sdW1uKyJdIC0+IFsiK3RoaXMuZW5kLnJvdysiLyIrdGhpcy5lbmQuY29sdW1uKyJdIn0sdGhpcy5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MH0sdGhpcy5jb21wYXJlUmFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLmVuZCxkPWEuc3RhcnQ7cmV0dXJuIGI9dGhpcy5jb21wYXJlKGMucm93LGMuY29sdW1uKSxiPT0xPyhiPXRoaXMuY29tcGFyZShkLnJvdyxkLmNvbHVtbiksYj09MT8yOmI9PTA/MTowKTpiPT0tMT8tMjooYj10aGlzLmNvbXBhcmUoZC5yb3csZC5jb2x1bW4pLGI9PS0xPy0xOmI9PTE/NDI6MCl9LHRoaXMuY29tcGFyZVBvaW50PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbXBhcmUoYS5yb3csYS5jb2x1bW4pfSx0aGlzLmNvbnRhaW5zUmFuZ2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29tcGFyZVBvaW50KGEuc3RhcnQpPT0wJiZ0aGlzLmNvbXBhcmVQb2ludChhLmVuZCk9PTB9LHRoaXMuaW50ZXJzZWN0cz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbXBhcmVSYW5nZShhKTtyZXR1cm4gYj09LTF8fGI9PTB8fGI9PTF9LHRoaXMuaXNFbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lbmQucm93PT1hJiZ0aGlzLmVuZC5jb2x1bW49PWJ9LHRoaXMuaXNTdGFydD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09YSYmdGhpcy5zdGFydC5jb2x1bW49PWJ9LHRoaXMuc2V0U3RhcnQ9ZnVuY3Rpb24oYSxiKXt0eXBlb2YgYT09Im9iamVjdCI/KHRoaXMuc3RhcnQuY29sdW1uPWEuY29sdW1uLHRoaXMuc3RhcnQucm93PWEucm93KToodGhpcy5zdGFydC5yb3c9YSx0aGlzLnN0YXJ0LmNvbHVtbj1iKX0sdGhpcy5zZXRFbmQ9ZnVuY3Rpb24oYSxiKXt0eXBlb2YgYT09Im9iamVjdCI/KHRoaXMuZW5kLmNvbHVtbj1hLmNvbHVtbix0aGlzLmVuZC5yb3c9YS5yb3cpOih0aGlzLmVuZC5yb3c9YSx0aGlzLmVuZC5jb2x1bW49Yil9LHRoaXMuaW5zaWRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wP3RoaXMuaXNFbmQoYSxiKXx8dGhpcy5pc1N0YXJ0KGEsYik/ITE6ITA6ITF9LHRoaXMuaW5zaWRlU3RhcnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTA/dGhpcy5pc0VuZChhLGIpPyExOiEwOiExfSx0aGlzLmluc2lkZUVuZD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MD90aGlzLmlzU3RhcnQoYSxiKT8hMTohMDohMX0sdGhpcy5jb21wYXJlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIXRoaXMuaXNNdWx0aUxpbmUoKSYmYT09PXRoaXMuc3RhcnQucm93P2I8dGhpcy5zdGFydC5jb2x1bW4/LTE6Yj50aGlzLmVuZC5jb2x1bW4/MTowOmE8dGhpcy5zdGFydC5yb3c/LTE6YT50aGlzLmVuZC5yb3c/MTp0aGlzLnN0YXJ0LnJvdz09PWE/Yj49dGhpcy5zdGFydC5jb2x1bW4/MDotMTp0aGlzLmVuZC5yb3c9PT1hP2I8PXRoaXMuZW5kLmNvbHVtbj8wOjE6MH0sdGhpcy5jb21wYXJlU3RhcnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWEmJnRoaXMuc3RhcnQuY29sdW1uPT1iPy0xOnRoaXMuY29tcGFyZShhLGIpfSx0aGlzLmNvbXBhcmVFbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lbmQucm93PT1hJiZ0aGlzLmVuZC5jb2x1bW49PWI/MTp0aGlzLmNvbXBhcmUoYSxiKX0sdGhpcy5jb21wYXJlSW5zaWRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZW5kLnJvdz09YSYmdGhpcy5lbmQuY29sdW1uPT1iPzE6dGhpcy5zdGFydC5yb3c9PWEmJnRoaXMuc3RhcnQuY29sdW1uPT1iPy0xOnRoaXMuY29tcGFyZShhLGIpfSx0aGlzLmNsaXBSb3dzPWZ1bmN0aW9uKGEsYil7aWYodGhpcy5lbmQucm93PmIpdmFyIGM9e3JvdzpiKzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PmIpdmFyIGU9e3JvdzpiKzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PGEpdmFyIGU9e3JvdzphLGNvbHVtbjowfTtpZih0aGlzLmVuZC5yb3c8YSl2YXIgYz17cm93OmEsY29sdW1uOjB9O3JldHVybiBkLmZyb21Qb2ludHMoZXx8dGhpcy5zdGFydCxjfHx0aGlzLmVuZCl9LHRoaXMuZXh0ZW5kPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jb21wYXJlKGEsYik7aWYoYz09MClyZXR1cm4gdGhpcztpZihjPT0tMSl2YXIgZT17cm93OmEsY29sdW1uOmJ9O2Vsc2UgdmFyIGY9e3JvdzphLGNvbHVtbjpifTtyZXR1cm4gZC5mcm9tUG9pbnRzKGV8fHRoaXMuc3RhcnQsZnx8dGhpcy5lbmQpfSx0aGlzLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PXRoaXMuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PXRoaXMuZW5kLmNvbHVtbn0sdGhpcy5pc011bHRpTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdyE9PXRoaXMuZW5kLnJvd30sdGhpcy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBkLmZyb21Qb2ludHModGhpcy5zdGFydCx0aGlzLmVuZCl9LHRoaXMuY29sbGFwc2VSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kLmNvbHVtbj09MD9uZXcgZCh0aGlzLnN0YXJ0LnJvdywwLE1hdGgubWF4KHRoaXMuc3RhcnQucm93LHRoaXMuZW5kLnJvdy0xKSwwKTpuZXcgZCh0aGlzLnN0YXJ0LnJvdywwLHRoaXMuZW5kLnJvdywwKX0sdGhpcy50b1NjcmVlblJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuc3RhcnQpLGM9YS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5lbmQpO3JldHVybiBuZXcgZChiLnJvdyxiLmNvbHVtbixjLnJvdyxjLmNvbHVtbil9fSkuY2FsbChkLnByb3RvdHlwZSksZC5mcm9tUG9pbnRzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkKGEucm93LGEuY29sdW1uLGIucm93LGIuY29sdW1uKX0sYi5SYW5nZT1kfSksZGVmaW5lKCJhY2UvYW5jaG9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9saWIvb29wIiksZT1hKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGY9Yi5BbmNob3I9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZG9jdW1lbnQ9YSx0eXBlb2YgYz09InVuZGVmaW5lZCI/dGhpcy5zZXRQb3NpdGlvbihiLnJvdyxiLmNvbHVtbik6dGhpcy5zZXRQb3NpdGlvbihiLGMpLHRoaXMuJG9uQ2hhbmdlPXRoaXMub25DaGFuZ2UuYmluZCh0aGlzKSxhLm9uKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQodGhpcy5yb3csdGhpcy5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnR9LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhLGM9Yi5yYW5nZTtpZihjLnN0YXJ0LnJvdz09Yy5lbmQucm93JiZjLnN0YXJ0LnJvdyE9dGhpcy5yb3cpcmV0dXJuO2lmKGMuc3RhcnQucm93PnRoaXMucm93KXJldHVybjtpZihjLnN0YXJ0LnJvdz09dGhpcy5yb3cmJmMuc3RhcnQuY29sdW1uPnRoaXMuY29sdW1uKXJldHVybjt2YXIgZD10aGlzLnJvdyxlPXRoaXMuY29sdW1uO2IuYWN0aW9uPT09Imluc2VydFRleHQiP2Muc3RhcnQucm93PT09ZCYmYy5zdGFydC5jb2x1bW48PWU/Yy5zdGFydC5yb3c9PT1jLmVuZC5yb3c/ZSs9Yy5lbmQuY29sdW1uLWMuc3RhcnQuY29sdW1uOihlLT1jLnN0YXJ0LmNvbHVtbixkKz1jLmVuZC5yb3ctYy5zdGFydC5yb3cpOmMuc3RhcnQucm93IT09Yy5lbmQucm93JiZjLnN0YXJ0LnJvdzxkJiYoZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpiLmFjdGlvbj09PSJpbnNlcnRMaW5lcyI/Yy5zdGFydC5yb3c8PWQmJihkKz1jLmVuZC5yb3ctYy5zdGFydC5yb3cpOmIuYWN0aW9uPT0icmVtb3ZlVGV4dCI/Yy5zdGFydC5yb3c9PWQmJmMuc3RhcnQuY29sdW1uPGU/Yy5lbmQuY29sdW1uPj1lP2U9Yy5zdGFydC5jb2x1bW46ZT1NYXRoLm1heCgwLGUtKGMuZW5kLmNvbHVtbi1jLnN0YXJ0LmNvbHVtbikpOmMuc3RhcnQucm93IT09Yy5lbmQucm93JiZjLnN0YXJ0LnJvdzxkPyhjLmVuZC5yb3c9PWQmJihlPU1hdGgubWF4KDAsZS1jLmVuZC5jb2x1bW4pK2Muc3RhcnQuY29sdW1uKSxkLT1jLmVuZC5yb3ctYy5zdGFydC5yb3cpOmMuZW5kLnJvdz09ZCYmKGQtPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyxlPU1hdGgubWF4KDAsZS1jLmVuZC5jb2x1bW4pK2Muc3RhcnQuY29sdW1uKTpiLmFjdGlvbj09InJlbW92ZUxpbmVzIiYmYy5zdGFydC5yb3c8PWQmJihjLmVuZC5yb3c8PWQ/ZC09Yy5lbmQucm93LWMuc3RhcnQucm93OihkPWMuc3RhcnQucm93LGU9MCkpLHRoaXMuc2V0UG9zaXRpb24oZCxlLCEwKX0sdGhpcy5zZXRQb3NpdGlvbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yz9kPXtyb3c6YSxjb2x1bW46Yn06ZD10aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KGEsYik7aWYodGhpcy5yb3c9PWQucm93JiZ0aGlzLmNvbHVtbj09ZC5jb2x1bW4pcmV0dXJuO3ZhciBlPXtyb3c6dGhpcy5yb3csY29sdW1uOnRoaXMuY29sdW1ufTt0aGlzLnJvdz1kLnJvdyx0aGlzLmNvbHVtbj1kLmNvbHVtbix0aGlzLl9lbWl0KCJjaGFuZ2UiLHtvbGQ6ZSx2YWx1ZTpkfSl9LHRoaXMuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX0sdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudD1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O3JldHVybiBhPj10aGlzLmRvY3VtZW50LmdldExlbmd0aCgpPyhjLnJvdz1NYXRoLm1heCgwLHRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCktMSksYy5jb2x1bW49dGhpcy5kb2N1bWVudC5nZXRMaW5lKGMucm93KS5sZW5ndGgpOmE8MD8oYy5yb3c9MCxjLmNvbHVtbj0wKTooYy5yb3c9YSxjLmNvbHVtbj1NYXRoLm1pbih0aGlzLmRvY3VtZW50LmdldExpbmUoYy5yb3cpLmxlbmd0aCxNYXRoLm1heCgwLGIpKSksYjwwJiYoYy5jb2x1bW49MCksY319KS5jYWxsKGYucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL2xpYi9sYW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2Iuc3RyaW5nUmV2ZXJzZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSxiLnN0cmluZ1JlcGVhdD1mdW5jdGlvbihhLGIpe3JldHVybihuZXcgQXJyYXkoYisxKSkuam9pbihhKX07dmFyIGQ9L15cc1xzKi8sZT0vXHNccyokLztiLnN0cmluZ1RyaW1MZWZ0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoZCwiIil9LGIuc3RyaW5nVHJpbVJpZ2h0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoZSwiIil9LGIuY29weU9iamVjdD1mdW5jdGlvbihhKXt2YXIgYj17fTtmb3IodmFyIGMgaW4gYSliW2NdPWFbY107cmV0dXJuIGJ9LGIuY29weUFycmF5PWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylhW2NdJiZ0eXBlb2YgYVtjXT09Im9iamVjdCI/YltjXT10aGlzLmNvcHlPYmplY3QoYVtjXSk6YltjXT1hW2NdO3JldHVybiBifSxiLmRlZXBDb3B5PWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT0ib2JqZWN0IilyZXR1cm4gYTt2YXIgYj1hLmNvbnN0cnVjdG9yKCk7Zm9yKHZhciBjIGluIGEpdHlwZW9mIGFbY109PSJvYmplY3QiP2JbY109dGhpcy5kZWVwQ29weShhW2NdKTpiW2NdPWFbY107cmV0dXJuIGJ9LGIuYXJyYXlUb01hcD1mdW5jdGlvbihhKXt2YXIgYj17fTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyliW2FbY11dPTE7cmV0dXJuIGJ9LGIuYXJyYXlSZW1vdmU9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPD1hLmxlbmd0aDtjKyspYj09PWFbY10mJmEuc3BsaWNlKGMsMSl9LGIuZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoLyhbLiorP14ke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfSxiLmRlZmVycmVkQ2FsbD1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9ZnVuY3Rpb24oKXtiPW51bGwsYSgpfSxkPWZ1bmN0aW9uKGEpe3JldHVybiBkLmNhbmNlbCgpLGI9c2V0VGltZW91dChjLGF8fDApLGR9O3JldHVybiBkLnNjaGVkdWxlPWQsZC5jYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuY2VsKCksYSgpLGR9LGQuY2FuY2VsPWZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dChiKSxiPW51bGwsZH0sZH19KSxkZWZpbmUoImFjZS9tb2RlL2pzb24vanNvbl9wYXJzZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9eyciJzonIicsIlxcIjoiXFwiLCIvIjoiLyIsYjoiXGIiLGY6IlxmIixuOiJcbiIscjoiXHIiLHQ6IgkifSxnLGg9ZnVuY3Rpb24oYSl7dGhyb3d7bmFtZToiU3ludGF4RXJyb3IiLG1lc3NhZ2U6YSxhdDpkLHRleHQ6Z319LGk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEhPT1lJiZoKCJFeHBlY3RlZCAnIithKyInIGluc3RlYWQgb2YgJyIrZSsiJyIpLGU9Zy5jaGFyQXQoZCksZCs9MSxlfSxqPWZ1bmN0aW9uKCl7dmFyIGEsYj0iIjtlPT09Ii0iJiYoYj0iLSIsaSgiLSIpKTt3aGlsZShlPj0iMCImJmU8PSI5IiliKz1lLGkoKTtpZihlPT09Ii4iKXtiKz0iLiI7d2hpbGUoaSgpJiZlPj0iMCImJmU8PSI5IiliKz1lfWlmKGU9PT0iZSJ8fGU9PT0iRSIpe2IrPWUsaSgpO2lmKGU9PT0iLSJ8fGU9PT0iKyIpYis9ZSxpKCk7d2hpbGUoZT49IjAiJiZlPD0iOSIpYis9ZSxpKCl9YT0rYjtpZighaXNOYU4oYSkpcmV0dXJuIGE7aCgiQmFkIG51bWJlciIpfSxrPWZ1bmN0aW9uKCl7dmFyIGEsYixjPSIiLGQ7aWYoZT09PSciJyl3aGlsZShpKCkpe2lmKGU9PT0nIicpcmV0dXJuIGkoKSxjO2lmKGU9PT0iXFwiKXtpKCk7aWYoZT09PSJ1Iil7ZD0wO2ZvcihiPTA7Yjw0O2IrPTEpe2E9cGFyc2VJbnQoaSgpLDE2KTtpZighaXNGaW5pdGUoYSkpYnJlYWs7ZD1kKjE2K2F9Yys9U3RyaW5nLmZyb21DaGFyQ29kZShkKX1lbHNle2lmKHR5cGVvZiBmW2VdIT0ic3RyaW5nIilicmVhaztjKz1mW2VdfX1lbHNlIGMrPWV9aCgiQmFkIHN0cmluZyIpfSxsPWZ1bmN0aW9uKCl7d2hpbGUoZSYmZTw9IiAiKWkoKX0sbT1mdW5jdGlvbigpe3N3aXRjaChlKXtjYXNlInQiOnJldHVybiBpKCJ0IiksaSgiciIpLGkoInUiKSxpKCJlIiksITA7Y2FzZSJmIjpyZXR1cm4gaSgiZiIpLGkoImEiKSxpKCJsIiksaSgicyIpLGkoImUiKSwhMTtjYXNlIm4iOnJldHVybiBpKCJuIiksaSgidSIpLGkoImwiKSxpKCJsIiksbnVsbH1oKCJVbmV4cGVjdGVkICciK2UrIiciKX0sbixvPWZ1bmN0aW9uKCl7dmFyIGE9W107aWYoZT09PSJbIil7aSgiWyIpLGwoKTtpZihlPT09Il0iKXJldHVybiBpKCJdIiksYTt3aGlsZShlKXthLnB1c2gobigpKSxsKCk7aWYoZT09PSJdIilyZXR1cm4gaSgiXSIpLGE7aSgiLCIpLGwoKX19aCgiQmFkIGFycmF5Iil9LHA9ZnVuY3Rpb24oKXt2YXIgYSxiPXt9O2lmKGU9PT0ieyIpe2koInsiKSxsKCk7aWYoZT09PSJ9IilyZXR1cm4gaSgifSIpLGI7d2hpbGUoZSl7YT1rKCksbCgpLGkoIjoiKSxPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChiLGEpJiZoKCdEdXBsaWNhdGUga2V5ICInK2ErJyInKSxiW2FdPW4oKSxsKCk7aWYoZT09PSJ9IilyZXR1cm4gaSgifSIpLGI7aSgiLCIpLGwoKX19aCgiQmFkIG9iamVjdCIpfTtyZXR1cm4gbj1mdW5jdGlvbigpe2woKTtzd2l0Y2goZSl7Y2FzZSJ7IjpyZXR1cm4gcCgpO2Nhc2UiWyI6cmV0dXJuIG8oKTtjYXNlJyInOnJldHVybiBrKCk7Y2FzZSItIjpyZXR1cm4gaigpO2RlZmF1bHQ6cmV0dXJuIGU+PSIwIiYmZTw9IjkiP2ooKTptKCl9fSxmdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBnPWEsZD0wLGU9IiAiLGM9bigpLGwoKSxlJiZoKCJTeW50YXggZXJyb3IiKSx0eXBlb2YgYj09ImZ1bmN0aW9uIj9mdW5jdGlvbiBmKGEsYyl7dmFyIGQsZSxnPWFbY107aWYoZyYmdHlwZW9mIGc9PSJvYmplY3QiKWZvcihkIGluIGcpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoZyxkKSYmKGU9ZihnLGQpLGUhPT11bmRlZmluZWQ/Z1tkXT1lOmRlbGV0ZSBnW2RdKTtyZXR1cm4gYi5jYWxsKGEsYyxnKX0oeyIiOmN9LCIiKTpjfX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-xquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gaW5pdEJhc2VVcmxzKGEpe3JlcXVpcmUudGxucz1hfWZ1bmN0aW9uIGluaXRTZW5kZXIoKXt2YXIgYT1yZXF1aXJlKG51bGwsImFjZS9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixiPXJlcXVpcmUobnVsbCwiYWNlL2xpYi9vb3AiKSxjPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZnVuY3Rpb24oKXtiLmltcGxlbWVudCh0aGlzLGEpLHRoaXMuY2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtwb3N0TWVzc2FnZSh7dHlwZToiY2FsbCIsaWQ6YixkYXRhOmF9KX0sdGhpcy5lbWl0PWZ1bmN0aW9uKGEsYil7cG9zdE1lc3NhZ2Uoe3R5cGU6ImV2ZW50IixuYW1lOmEsZGF0YTpifSl9fS5jYWxsKGMucHJvdG90eXBlKSxuZXcgY30ibm8gdXNlIHN0cmljdCI7dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihhKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmF9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oYSxiKXtpZihiLmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgYz1iLnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShhLGNbMF0pKyIhIitub3JtYWxpemVNb2R1bGUoYSxjWzFdKX1pZihiLmNoYXJBdCgwKT09Ii4iKXt2YXIgZD1hLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGI9ZCsiLyIrYjt3aGlsZShiLmluZGV4T2YoIi4iKSE9PS0xJiZlIT1iKXZhciBlPWIsYj1iLnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiBifSxyZXF1aXJlPWZ1bmN0aW9uKGEsYil7dmFyIGI9bm9ybWFsaXplTW9kdWxlKGEsYiksYz1yZXF1aXJlLm1vZHVsZXNbYl07aWYoYylyZXR1cm4gYy5pbml0aWFsaXplZHx8KGMuZXhwb3J0cz1jLmZhY3RvcnkoKS5leHBvcnRzLGMuaW5pdGlhbGl6ZWQ9ITApLGMuZXhwb3J0czt2YXIgZD1iLnNwbGl0KCIvIik7ZFswXT1yZXF1aXJlLnRsbnNbZFswXV18fGRbMF07dmFyIGU9ZC5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9YixpbXBvcnRTY3JpcHRzKGUpLHJlcXVpcmUoYSxiKX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGEsYixjKXthcmd1bWVudHMubGVuZ3RoPT0yP2M9Yjphcmd1bWVudHMubGVuZ3RoPT0xJiYoYz1hLGE9cmVxdWlyZS5pZCk7aWYoYS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIGQ9ZnVuY3Rpb24oYixjKXtyZXR1cm4gcmVxdWlyZShhLGIsYyl9O3JlcXVpcmUubW9kdWxlc1thXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBhPXtleHBvcnRzOnt9fSxiPWMoZCxhLmV4cG9ydHMsYSk7cmV0dXJuIGImJihhLmV4cG9ydHM9YiksYX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO2lmKGIuY29tbWFuZCltYWluW2IuY29tbWFuZF0uYXBwbHkobWFpbixiLmFyZ3MpO2Vsc2UgaWYoYi5pbml0KXtpbml0QmFzZVVybHMoYi50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBjPXJlcXVpcmUobnVsbCxiLm1vZHVsZSlbYi5jbGFzc25hbWVdO21haW49bmV3IGMoc2VuZGVyKX1lbHNlIGIuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KGIuZXZlbnQsYi5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oYSxiLGMpe2EoIi4vcmVnZXhwIiksYSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBnKGEpe3JldHVybihhLmdsb2JhbD8iZyI6IiIpKyhhLmlnbm9yZUNhc2U/ImkiOiIiKSsoYS5tdWx0aWxpbmU/Im0iOiIiKSsoYS5leHRlbmRlZD8ieCI6IiIpKyhhLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIGgoYSxiLGMpe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYixjKTtmb3IodmFyIGQ9Y3x8MDtkPGEubGVuZ3RoO2QrKylpZihhW2RdPT09YilyZXR1cm4gZDtyZXR1cm4tMX12YXIgZD17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxlPWQuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQsZj1mdW5jdGlvbigpe3ZhciBhPS9eL2c7cmV0dXJuIGQudGVzdC5jYWxsKGEsIiIpLCFhLmxhc3RJbmRleH0oKTtpZihmJiZlKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjLGk7aWYodHlwZW9mIGE9PSJzdHJpbmciJiZiKXshZSYmYi5sZW5ndGg+MSYmaChiLCIiKT4tMSYmKGk9UmVnRXhwKHRoaXMuc291cmNlLGQucmVwbGFjZS5jYWxsKGcodGhpcyksImciLCIiKSksZC5yZXBsYWNlLmNhbGwoYS5zbGljZShiLmluZGV4KSxpLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTE7YTxhcmd1bWVudHMubGVuZ3RoLTI7YSsrKWFyZ3VtZW50c1thXT09PXVuZGVmaW5lZCYmKGJbYV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGo9MTtqPGIubGVuZ3RoO2orKyljPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2otMV0sYyYmKGJbY109YltqXSk7IWYmJnRoaXMuZ2xvYmFsJiYhYlswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PmIuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIGJ9LGZ8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5leGVjLmNhbGwodGhpcyxhKTtyZXR1cm4gYiYmdGhpcy5nbG9iYWwmJiFiWzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+Yi5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIWJ9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBwKGEpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGF9Y2F0Y2goYil7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD1nLmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGg9Yy5hcHBseShmLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIGghPT1udWxsJiZPYmplY3QoaCk9PT1oP2g6Zn1yZXR1cm4gYy5hcHBseShiLGQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBlfSk7dmFyIGQ9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsZT1BcnJheS5wcm90b3R5cGUsZj1PYmplY3QucHJvdG90eXBlLGc9ZS5zbGljZSxoPWQuYmluZChmLnRvU3RyaW5nKSxpPWQuYmluZChmLmhhc093blByb3BlcnR5KSxqLGssbCxtLG47aWYobj1pKGYsIl9fZGVmaW5lR2V0dGVyX18iKSlqPWQuYmluZChmLl9fZGVmaW5lR2V0dGVyX18pLGs9ZC5iaW5kKGYuX19kZWZpbmVTZXR0ZXJfXyksbD1kLmJpbmQoZi5fX2xvb2t1cEdldHRlcl9fKSxtPWQuYmluZChmLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGIpe3JldHVybiBoKGIpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9YXJndW1lbnRzWzFdLGU9MCxmPWMubGVuZ3RoPj4+MDtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoZTxmKWUgaW4gYyYmYi5jYWxsKGQsY1tlXSxlLGMpLGUrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjAsZT1BcnJheShkKSxmPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBnPTA7ZzxkO2crKylnIGluIGMmJihlW2ddPWIuY2FsbChmLGNbZ10sZyxjKSk7cmV0dXJuIGV9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9W10sZj1hcmd1bWVudHNbMV07aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgZz0wO2c8ZDtnKyspZyBpbiBjJiZiLmNhbGwoZixjW2ddLGcsYykmJmUucHVzaChjW2ddKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wLGU9YXJndW1lbnRzWzFdO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIGY9MDtmPGQ7ZisrKWlmKGYgaW4gYyYmIWIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MCxlPWFyZ3VtZW50c1sxXTtpZihoKGIpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBmPTA7ZjxkO2YrKylpZihmIGluIGMmJmIuY2FsbChlLGNbZl0sZixjKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBjPUcodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoaChiKSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFkJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGU9MCxmO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZj1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihlIGluIGMpe2Y9Y1tlKytdO2JyZWFrfWlmKCsrZT49ZCl0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2U8ZDtlKyspZSBpbiBjJiYoZj1iLmNhbGwodm9pZCAwLGYsY1tlXSxlLGMpKTtyZXR1cm4gZn0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbihiKXt2YXIgYz1HKHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wO2lmKGgoYikhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighZCYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBlLGY9ZC0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpZT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihmIGluIGMpe2U9Y1tmLS1dO2JyZWFrfWlmKC0tZjwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIGYgaW4gdGhpcyYmKGU9Yi5jYWxsKHZvaWQgMCxlLGNbZl0sZixjKSk7d2hpbGUoZi0tKTtyZXR1cm4gZX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGU9RShhcmd1bWVudHNbMV0pKSxlPWU+PTA/ZTpNYXRoLm1heCgwLGQrZSk7Zm9yKDtlPGQ7ZSsrKWlmKGUgaW4gYyYmY1tlXT09PWIpcmV0dXJuIGU7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oYil7dmFyIGM9Ryh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZighZClyZXR1cm4tMTt2YXIgZT1kLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoZT1NYXRoLm1pbihlLEUoYXJndW1lbnRzWzFdKSkpLGU9ZT49MD9lOmQtTWF0aC5hYnMoZSk7Zm9yKDtlPj0wO2UtLSlpZihlIGluIGMmJmI9PT1jW2VdKXJldHVybiBlO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGIpe3JldHVybiBiLl9fcHJvdG9fX3x8KGIuY29uc3RydWN0b3I/Yi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6Zil9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIG89Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKGIsYyl7aWYodHlwZW9mIGIhPSJvYmplY3QiJiZ0eXBlb2YgYiE9ImZ1bmN0aW9uInx8Yj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihvK2IpO2lmKCFpKGIsYykpcmV0dXJuO3ZhciBkLGUsZztkPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYobil7dmFyIGg9Yi5fX3Byb3RvX187Yi5fX3Byb3RvX189Zjt2YXIgZT1sKGIsYyksZz1tKGIsYyk7Yi5fX3Byb3RvX189aDtpZihlfHxnKXJldHVybiBlJiYoZC5nZXQ9ZSksZyYmKGQuc2V0PWcpLGR9cmV0dXJuIGQudmFsdWU9YltjXSxkfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKGIpe3JldHVybiBPYmplY3Qua2V5cyhiKX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ7aWYoYj09PW51bGwpZD17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIGIhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgYisiXSAhPSAnb2JqZWN0JyIpO3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1iLGQ9bmV3IGUsZC5fX3Byb3RvX189Yn1yZXR1cm4gYyE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxjKSxkfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgcT1wKHt9KSxyPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFxfHwhcil2YXIgcz1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8cyl7dmFyIHQ9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHU9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIix2PSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKGIsYyxkKXtpZih0eXBlb2YgYiE9Im9iamVjdCImJnR5cGVvZiBiIT0iZnVuY3Rpb24ifHxiPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHUrYik7aWYodHlwZW9mIGQhPSJvYmplY3QiJiZ0eXBlb2YgZCE9ImZ1bmN0aW9uInx8ZD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih0K2QpO2lmKHMpdHJ5e3JldHVybiBzLmNhbGwoT2JqZWN0LGIsYyxkKX1jYXRjaChlKXt9aWYoaShkLCJ2YWx1ZSIpKWlmKG4mJihsKGIsYyl8fG0oYixjKSkpe3ZhciBnPWIuX19wcm90b19fO2IuX19wcm90b19fPWYsZGVsZXRlIGJbY10sYltjXT1kLnZhbHVlLGIuX19wcm90b19fPWd9ZWxzZSBiW2NdPWQudmFsdWU7ZWxzZXtpZighbil0aHJvdyBuZXcgVHlwZUVycm9yKHYpO2koZCwiZ2V0IikmJmooYixjLGQuZ2V0KSxpKGQsInNldCIpJiZrKGIsYyxkLnNldCl9cmV0dXJuIGJ9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oYixjKXtmb3IodmFyIGQgaW4gYylpKGMsZCkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLGQsY1tkXSk7cmV0dXJuIGJ9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKGIpe3JldHVybiBifSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKHcpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgYz09ImZ1bmN0aW9uIj9jOmIoYyl9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24oYil7cmV0dXJuIGJ9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24oYil7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbihiKXtpZihPYmplY3QoYik9PT1iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGM9IiI7d2hpbGUoaShiLGMpKWMrPSI/IjtiW2NdPSEwO3ZhciBkPWkoYixjKTtyZXR1cm4gZGVsZXRlIGJbY10sZH0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAseT1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLHo9eS5sZW5ndGg7Zm9yKHZhciBBIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gSChhKXtpZih0eXBlb2YgYSE9Im9iamVjdCImJnR5cGVvZiBhIT0iZnVuY3Rpb24ifHxhPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEg9W107Zm9yKHZhciBiIGluIGEpaShhLGIpJiZILnB1c2goYik7aWYoeClmb3IodmFyIGM9MCxkPXo7YzxkO2MrKyl7dmFyIGU9eVtjXTtpKGEsZSkmJkgucHVzaChlKX1yZXR1cm4gSH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciBiLGMsZCxlO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjtiPVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGU9dGhpcy5nZXRVVENGdWxsWWVhcigpLGU9KGU8MD8iLSI6ZT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoZSkpLnNsaWNlKDA8PWUmJmU8PTk5OTk/LTQ6LTYpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWQ9YltjXSxkPDEwJiYoYltjXT0iMCIrZCk7cmV0dXJuIGUrIi0iK2Iuc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK2Iuc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGIpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbiBlKGIsYyxkLGYsZyxoLGkpe3ZhciBqPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGEpe3ZhciBrPWo9PTEmJlN0cmluZyhiKT09PWI/bmV3IGEoZS5wYXJzZShiKSk6aj49Nz9uZXcgYShiLGMsZCxmLGcsaCxpKTpqPj02P25ldyBhKGIsYyxkLGYsZyxoKTpqPj01P25ldyBhKGIsYyxkLGYsZyk6aj49ND9uZXcgYShiLGMsZCxmKTpqPj0zP25ldyBhKGIsYyxkKTpqPj0yP25ldyBhKGIsYyk6aj49MT9uZXcgYShiKTpuZXcgYTtyZXR1cm4gay5jb25zdHJ1Y3Rvcj1lLGt9cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIGQgaW4gYSliW2RdPWFbZF07cmV0dXJuIGIubm93PWEubm93LGIuVVRDPWEuVVRDLGIucHJvdG90eXBlPWEucHJvdG90eXBlLGIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIsYi5wYXJzZT1mdW5jdGlvbihkKXt2YXIgZT1jLmV4ZWMoZCk7aWYoZSl7ZS5zaGlmdCgpO2Zvcih2YXIgZj0xO2Y8NztmKyspZVtmXT0rKGVbZl18fChmPDM/MTowKSksZj09MSYmZVtmXS0tO3ZhciBnPStlLnBvcCgpLGg9K2UucG9wKCksaT1lLnBvcCgpLGo9MDtpZihpKXtpZihoPjIzfHxnPjU5KXJldHVybiBOYU47aj0oaCo2MCtnKSo2ZTQqKGk9PSIrIj8tMToxKX12YXIgaz0rZVswXTtyZXR1cm4gMDw9ayYmazw9OTk/KGVbMF09ays0MDAsYS5VVEMuYXBwbHkodGhpcyxlKStqLTEyNjIyNzgwOGU1KTphLlVUQy5hcHBseSh0aGlzLGUpK2p9cmV0dXJuIGEucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxifShEYXRlKSk7dmFyIEI9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxCLnRyaW0oKSl7Qj0iWyIrQisiXSI7dmFyIEM9bmV3IFJlZ0V4cCgiXiIrQitCKyIqIiksRD1uZXcgUmVnRXhwKEIrQisiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoQywiIikucmVwbGFjZShELCIiKX19dmFyIEU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9K2EsYSE9PWE/YT0wOmEhPT0wJiZhIT09MS8wJiZhIT09LUluZmluaXR5JiYoYT0oYT4wfHwtMSkqTWF0aC5mbG9vcihNYXRoLmFicyhhKSkpLGF9LEY9ImEiWzBdIT0iYSIsRz1mdW5jdGlvbihhKXtpZihhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIEYmJnR5cGVvZiBhPT0ic3RyaW5nIiYmYT9hLnNwbGl0KCIiKTpPYmplY3QoYSl9fSksZGVmaW5lKCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307ZC5fZW1pdD1kLl9kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fSx0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdfHxbXSxkPXRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXTtpZighYy5sZW5ndGgmJiFkKXJldHVybjtiPWJ8fHt9LGIudHlwZT1hLGIuc3RvcFByb3BhZ2F0aW9ufHwoYi5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0pLGIucHJldmVudERlZmF1bHR8fChiLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfSk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe2NbZV0oYik7aWYoYi5wcm9wYWdhdGlvblN0b3BwZWQpYnJlYWt9aWYoZCYmIWIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4gZChiKX0sZC5zZXREZWZhdWx0SGFuZGxlcj1mdW5jdGlvbihhLGIpe3RoaXMuX2RlZmF1bHRIYW5kbGVycz10aGlzLl9kZWZhdWx0SGFuZGxlcnN8fHt9O2lmKHRoaXMuX2RlZmF1bHRIYW5kbGVyc1thXSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkZWZhdWx0IGhhbmRsZXIgZm9yICciK2ErIicgaXMgYWxyZWFkeSBzZXQiKTt0aGlzLl9kZWZhdWx0SGFuZGxlcnNbYV09Yn0sZC5vbj1kLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLl9ldmVudFJlZ2lzdHJ5PXRoaXMuX2V2ZW50UmVnaXN0cnl8fHt9O3ZhciBjPXRoaXMuX2V2ZW50UmVnaXN0cnlbYV07aWYoIWMpdmFyIGM9dGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXTtjLmluZGV4T2YoYik9PS0xJiZjLnB1c2goYil9LGQucmVtb3ZlTGlzdGVuZXI9ZC5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgYz10aGlzLl9ldmVudFJlZ2lzdHJ5W2FdO2lmKCFjKXJldHVybjt2YXIgZD1jLmluZGV4T2YoYik7ZCE9PS0xJiZjLnNwbGljZShkLDEpfSxkLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihhKXt0aGlzLl9ldmVudFJlZ2lzdHJ5JiYodGhpcy5fZXZlbnRSZWdpc3RyeVthXT1bXSl9LGIuRXZlbnRFbWl0dGVyPWR9KSxkZWZpbmUoImFjZS9saWIvb29wIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe2IuaW5oZXJpdHM9ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKGIsYyl7YS5wcm90b3R5cGU9Yy5wcm90b3R5cGUsYi5zdXBlcl89Yy5wcm90b3R5cGUsYi5wcm90b3R5cGU9bmV3IGEsYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yn19KCksYi5taXhpbj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWFbY109YltjXX0sYi5pbXBsZW1lbnQ9ZnVuY3Rpb24oYSxjKXtiLm1peGluKGEsYyl9fSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnlfd29ya2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2Uvd29ya2VyL21pcnJvciIsImFjZS9tb2RlL3hxdWVyeS94cXVlcnkiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUveHF1ZXJ5X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuLi93b3JrZXIvbWlycm9yIikuTWlycm9yLGY9YSgiLi4vbW9kZS94cXVlcnkveHF1ZXJ5IiksZz1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaD1hKCIuL3hxdWVyeV9oaWdobGlnaHRfcnVsZXMiKS5YUXVlcnlIaWdobGlnaHRSdWxlczt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbigpe307dmFyIGk9Yi5YUXVlcnlXb3JrZXI9ZnVuY3Rpb24oYSl7ZS5jYWxsKHRoaXMsYSksdGhpcy5zZXRUaW1lb3V0KDIwMCl9O2QuaW5oZXJpdHMoaSxlKSxmdW5jdGlvbigpe3RoaXMub25VcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLnNlbmRlci5lbWl0KCJzdGFydCIpO3ZhciBhPXRoaXMuZG9jLmdldFZhbHVlKCksYj1mLmdldFBhcnNlcihhKSxjPWIucF9Nb2R1bGUoKTtpZihiLmhhc0Vycm9ycygpKXt2YXIgZD1iLmdldEVycm9ycygpLGU9MDtmb3IoZSBpbiBkKXt2YXIgaT1kW2VdO3RoaXMuc2VuZGVyLmVtaXQoImVycm9yIix7cm93OmkubGluZSxjb2x1bW46aS5jb2x1bW4sdGV4dDppLm1lc3NhZ2UsdHlwZToiZXJyb3IifSl9fWVsc2UgdGhpcy5zZW5kZXIuZW1pdCgib2siKTtiLmhpZ2hsaWdodGVyLnRva2VuaXplcj1uZXcgZygobmV3IGgpLmdldFJ1bGVzKCkpO3ZhciBqPWIuaGlnaGxpZ2h0ZXIuZ2V0VG9rZW5zKCk7dGhpcy5zZW5kZXIuZW1pdCgiaGlnaGxpZ2h0IixqKX19LmNhbGwoaS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2Uvd29ya2VyL21pcnJvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9kb2N1bWVudCIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9kb2N1bWVudCIpLkRvY3VtZW50LGU9YSgiLi4vbGliL2xhbmciKSxmPWIuTWlycm9yPWZ1bmN0aW9uKGEpe3RoaXMuc2VuZGVyPWE7dmFyIGI9dGhpcy5kb2M9bmV3IGQoIiIpLGM9dGhpcy5kZWZlcnJlZFVwZGF0ZT1lLmRlZmVycmVkQ2FsbCh0aGlzLm9uVXBkYXRlLmJpbmQodGhpcykpLGY9dGhpczthLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGEpe2IuYXBwbHlEZWx0YXMoW2EuZGF0YV0pLGMuc2NoZWR1bGUoZi4kdGltZW91dCl9KX07KGZ1bmN0aW9uKCl7dGhpcy4kdGltZW91dD01MDAsdGhpcy5zZXRUaW1lb3V0PWZ1bmN0aW9uKGEpe3RoaXMuJHRpbWVvdXQ9YX0sdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihhKXt0aGlzLmRvYy5zZXRWYWx1ZShhKSx0aGlzLmRlZmVycmVkVXBkYXRlLnNjaGVkdWxlKHRoaXMuJHRpbWVvdXQpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKGEpe3RoaXMuc2VuZGVyLmNhbGxiYWNrKHRoaXMuZG9jLmdldFZhbHVlKCksYSl9LHRoaXMub25VcGRhdGU9ZnVuY3Rpb24oKXt9fSkuY2FsbChmLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9kb2N1bWVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3JhbmdlIiwiYWNlL2FuY2hvciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2xpYi9vb3AiKSxlPWEoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsZj1hKCIuL3JhbmdlIikuUmFuZ2UsZz1hKCIuL2FuY2hvciIpLkFuY2hvcixoPWZ1bmN0aW9uKGEpe3RoaXMuJGxpbmVzPVtdLGEubGVuZ3RoPT0wP3RoaXMuJGxpbmVzPVsiIl06QXJyYXkuaXNBcnJheShhKT90aGlzLmluc2VydExpbmVzKDAsYSk6dGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxhKX07KGZ1bmN0aW9uKCl7ZC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGVuZ3RoKCk7dGhpcy5yZW1vdmUobmV3IGYoMCwwLGIsdGhpcy5nZXRMaW5lKGItMSkubGVuZ3RoKSksdGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxhKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEFsbExpbmVzKCkuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuY3JlYXRlQW5jaG9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBnKHRoaXMsYSxiKX0sImFhYSIuc3BsaXQoL2EvKS5sZW5ndGg9PTA/dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnNwbGl0KCJcbiIpfTp0aGlzLiRzcGxpdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5zcGxpdCgvXHJcbnxccnxcbi8pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14uKj8oXHJcbnxccnxcbikvbSk7Yj90aGlzLiRhdXRvTmV3TGluZT1iWzFdOnRoaXMuJGF1dG9OZXdMaW5lPSJcbiJ9LHRoaXMuZ2V0TmV3TGluZUNoYXJhY3Rlcj1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLiRuZXdMaW5lTW9kZSl7Y2FzZSJ3aW5kb3dzIjpyZXR1cm4iXHJcbiI7Y2FzZSJ1bml4IjpyZXR1cm4iXG4iO2Nhc2UiYXV0byI6cmV0dXJuIHRoaXMuJGF1dG9OZXdMaW5lfX0sdGhpcy4kYXV0b05ld0xpbmU9IlxuIix0aGlzLiRuZXdMaW5lTW9kZT0iYXV0byIsdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihhKXtpZih0aGlzLiRuZXdMaW5lTW9kZT09PWEpcmV0dXJuO3RoaXMuJG5ld0xpbmVNb2RlPWF9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbmV3TGluZU1vZGV9LHRoaXMuaXNOZXdMaW5lPWZ1bmN0aW9uKGEpe3JldHVybiBhPT0iXHJcbiJ8fGE9PSJcciJ8fGE9PSJcbiJ9LHRoaXMuZ2V0TGluZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kbGluZXNbYV18fCIifSx0aGlzLmdldExpbmVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuJGxpbmVzLnNsaWNlKGEsYisxKX0sdGhpcy5nZXRBbGxMaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVzKDAsdGhpcy5nZXRMZW5ndGgoKSl9LHRoaXMuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGxpbmVzLmxlbmd0aH0sdGhpcy5nZXRUZXh0UmFuZ2U9ZnVuY3Rpb24oYSl7aWYoYS5zdGFydC5yb3c9PWEuZW5kLnJvdylyZXR1cm4gdGhpcy4kbGluZXNbYS5zdGFydC5yb3ddLnN1YnN0cmluZyhhLnN0YXJ0LmNvbHVtbixhLmVuZC5jb2x1bW4pO3ZhciBiPXRoaXMuZ2V0TGluZXMoYS5zdGFydC5yb3crMSxhLmVuZC5yb3ctMSk7cmV0dXJuIGIudW5zaGlmdCgodGhpcy4kbGluZXNbYS5zdGFydC5yb3ddfHwiIikuc3Vic3RyaW5nKGEuc3RhcnQuY29sdW1uKSksYi5wdXNoKCh0aGlzLiRsaW5lc1thLmVuZC5yb3ddfHwiIikuc3Vic3RyaW5nKDAsYS5lbmQuY29sdW1uKSksYi5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy4kY2xpcFBvc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0TGVuZ3RoKCk7cmV0dXJuIGEucm93Pj1iJiYoYS5yb3c9TWF0aC5tYXgoMCxiLTEpLGEuY29sdW1uPXRoaXMuZ2V0TGluZShiLTEpLmxlbmd0aCksYX0sdGhpcy5pbnNlcnQ9ZnVuY3Rpb24oYSxiKXtpZighYnx8Yi5sZW5ndGg9PT0wKXJldHVybiBhO2E9dGhpcy4kY2xpcFBvc2l0aW9uKGEpLHRoaXMuZ2V0TGVuZ3RoKCk8PTEmJnRoaXMuJGRldGVjdE5ld0xpbmUoYik7dmFyIGM9dGhpcy4kc3BsaXQoYiksZD1jLnNwbGljZSgwLDEpWzBdLGU9Yy5sZW5ndGg9PTA/bnVsbDpjLnNwbGljZShjLmxlbmd0aC0xLDEpWzBdO3JldHVybiBhPXRoaXMuaW5zZXJ0SW5MaW5lKGEsZCksZSE9PW51bGwmJihhPXRoaXMuaW5zZXJ0TmV3TGluZShhKSxhPXRoaXMuaW5zZXJ0TGluZXMoYS5yb3csYyksYT10aGlzLmluc2VydEluTGluZShhLGV8fCIiKSksYX0sdGhpcy5pbnNlcnRMaW5lcz1mdW5jdGlvbihhLGIpe2lmKGIubGVuZ3RoPT0wKXJldHVybntyb3c6YSxjb2x1bW46MH07dmFyIGM9W2EsMF07Yy5wdXNoLmFwcGx5KGMsYiksdGhpcy4kbGluZXMuc3BsaWNlLmFwcGx5KHRoaXMuJGxpbmVzLGMpO3ZhciBkPW5ldyBmKGEsMCxhK2IubGVuZ3RoLDApLGU9e2FjdGlvbjoiaW5zZXJ0TGluZXMiLHJhbmdlOmQsbGluZXM6Yn07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGQuZW5kfSx0aGlzLmluc2VydE5ld0xpbmU9ZnVuY3Rpb24oYSl7YT10aGlzLiRjbGlwUG9zaXRpb24oYSk7dmFyIGI9dGhpcy4kbGluZXNbYS5yb3ddfHwiIjt0aGlzLiRsaW5lc1thLnJvd109Yi5zdWJzdHJpbmcoMCxhLmNvbHVtbiksdGhpcy4kbGluZXMuc3BsaWNlKGEucm93KzEsMCxiLnN1YnN0cmluZyhhLmNvbHVtbixiLmxlbmd0aCkpO3ZhciBjPXtyb3c6YS5yb3crMSxjb2x1bW46MH0sZD17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpmLmZyb21Qb2ludHMoYSxjKSx0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpkfSksY30sdGhpcy5pbnNlcnRJbkxpbmU9ZnVuY3Rpb24oYSxiKXtpZihiLmxlbmd0aD09MClyZXR1cm4gYTt2YXIgYz10aGlzLiRsaW5lc1thLnJvd118fCIiO3RoaXMuJGxpbmVzW2Eucm93XT1jLnN1YnN0cmluZygwLGEuY29sdW1uKStiK2Muc3Vic3RyaW5nKGEuY29sdW1uKTt2YXIgZD17cm93OmEucm93LGNvbHVtbjphLmNvbHVtbitiLmxlbmd0aH0sZT17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpmLmZyb21Qb2ludHMoYSxkKSx0ZXh0OmJ9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmV9KSxkfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihhKXthLnN0YXJ0PXRoaXMuJGNsaXBQb3NpdGlvbihhLnN0YXJ0KSxhLmVuZD10aGlzLiRjbGlwUG9zaXRpb24oYS5lbmQpO2lmKGEuaXNFbXB0eSgpKXJldHVybiBhLnN0YXJ0O3ZhciBiPWEuc3RhcnQucm93LGM9YS5lbmQucm93O2lmKGEuaXNNdWx0aUxpbmUoKSl7dmFyIGQ9YS5zdGFydC5jb2x1bW49PTA/YjpiKzEsZT1jLTE7YS5lbmQuY29sdW1uPjAmJnRoaXMucmVtb3ZlSW5MaW5lKGMsMCxhLmVuZC5jb2x1bW4pLGU+PWQmJnRoaXMucmVtb3ZlTGluZXMoZCxlKSxkIT1iJiYodGhpcy5yZW1vdmVJbkxpbmUoYixhLnN0YXJ0LmNvbHVtbix0aGlzLmdldExpbmUoYikubGVuZ3RoKSx0aGlzLnJlbW92ZU5ld0xpbmUoYS5zdGFydC5yb3cpKX1lbHNlIHRoaXMucmVtb3ZlSW5MaW5lKGIsYS5zdGFydC5jb2x1bW4sYS5lbmQuY29sdW1uKTtyZXR1cm4gYS5zdGFydH0sdGhpcy5yZW1vdmVJbkxpbmU9ZnVuY3Rpb24oYSxiLGMpe2lmKGI9PWMpcmV0dXJuO3ZhciBkPW5ldyBmKGEsYixhLGMpLGU9dGhpcy5nZXRMaW5lKGEpLGc9ZS5zdWJzdHJpbmcoYixjKSxoPWUuc3Vic3RyaW5nKDAsYikrZS5zdWJzdHJpbmcoYyxlLmxlbmd0aCk7dGhpcy4kbGluZXMuc3BsaWNlKGEsMSxoKTt2YXIgaT17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpkLHRleHQ6Z307cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6aX0pLGQuc3RhcnR9LHRoaXMucmVtb3ZlTGluZXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgZihhLDAsYisxLDApLGQ9dGhpcy4kbGluZXMuc3BsaWNlKGEsYi1hKzEpLGU9e2FjdGlvbjoicmVtb3ZlTGluZXMiLHJhbmdlOmMsbmw6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCksbGluZXM6ZH07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6ZX0pLGR9LHRoaXMucmVtb3ZlTmV3TGluZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldExpbmUoYSksYz10aGlzLmdldExpbmUoYSsxKSxkPW5ldyBmKGEsYi5sZW5ndGgsYSsxLDApLGU9YitjO3RoaXMuJGxpbmVzLnNwbGljZShhLDIsZSk7dmFyIGc9e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6ZCx0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTt0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmd9KX0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGEsYil7aWYoYi5sZW5ndGg9PTAmJmEuaXNFbXB0eSgpKXJldHVybiBhLnN0YXJ0O2lmKGI9PXRoaXMuZ2V0VGV4dFJhbmdlKGEpKXJldHVybiBhLmVuZDt0aGlzLnJlbW92ZShhKTtpZihiKXZhciBjPXRoaXMuaW5zZXJ0KGEuc3RhcnQsYik7ZWxzZSBjPWEuc3RhcnQ7cmV0dXJuIGN9LHRoaXMuYXBwbHlEZWx0YXM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl0sZD1mLmZyb21Qb2ludHMoYy5yYW5nZS5zdGFydCxjLnJhbmdlLmVuZCk7Yy5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhkLnN0YXJ0LnJvdyxjLmxpbmVzKTpjLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMuaW5zZXJ0KGQuc3RhcnQsYy50ZXh0KTpjLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLnJlbW92ZUxpbmVzKGQuc3RhcnQucm93LGQuZW5kLnJvdy0xKTpjLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLnJlbW92ZShkKX19LHRoaXMucmV2ZXJ0RGVsdGFzPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmxlbmd0aC0xO2I+PTA7Yi0tKXt2YXIgYz1hW2JdLGQ9Zi5mcm9tUG9pbnRzKGMucmFuZ2Uuc3RhcnQsYy5yYW5nZS5lbmQpO2MuYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMucmVtb3ZlTGluZXMoZC5zdGFydC5yb3csZC5lbmQucm93LTEpOmMuYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5yZW1vdmUoZCk6Yy5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhkLnN0YXJ0LnJvdyxjLmxpbmVzKTpjLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLmluc2VydChkLnN0YXJ0LGMudGV4dCl9fX0pLmNhbGwoaC5wcm90b3R5cGUpLGIuRG9jdW1lbnQ9aH0pLGRlZmluZSgiYWNlL3JhbmdlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuc3RhcnQ9e3JvdzphLGNvbHVtbjpifSx0aGlzLmVuZD17cm93OmMsY29sdW1uOmR9fTsoZnVuY3Rpb24oKXt0aGlzLmlzRXF1YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1hLnN0YXJ0LnJvdyYmdGhpcy5lbmQucm93PT1hLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT1hLnN0YXJ0LmNvbHVtbiYmdGhpcy5lbmQuY29sdW1uPT1hLmVuZC5jb2x1bW59LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUmFuZ2U6IFsiK3RoaXMuc3RhcnQucm93KyIvIit0aGlzLnN0YXJ0LmNvbHVtbisiXSAtPiBbIit0aGlzLmVuZC5yb3crIi8iK3RoaXMuZW5kLmNvbHVtbisiXSJ9LHRoaXMuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTB9LHRoaXMuY29tcGFyZVJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiLGM9YS5lbmQsZD1hLnN0YXJ0O3JldHVybiBiPXRoaXMuY29tcGFyZShjLnJvdyxjLmNvbHVtbiksYj09MT8oYj10aGlzLmNvbXBhcmUoZC5yb3csZC5jb2x1bW4pLGI9PTE/MjpiPT0wPzE6MCk6Yj09LTE/LTI6KGI9dGhpcy5jb21wYXJlKGQucm93LGQuY29sdW1uKSxiPT0tMT8tMTpiPT0xPzQyOjApfSx0aGlzLmNvbXBhcmVQb2ludD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEucm93LGEuY29sdW1uKX0sdGhpcy5jb250YWluc1JhbmdlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbXBhcmVQb2ludChhLnN0YXJ0KT09MCYmdGhpcy5jb21wYXJlUG9pbnQoYS5lbmQpPT0wfSx0aGlzLmludGVyc2VjdHM9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb21wYXJlUmFuZ2UoYSk7cmV0dXJuIGI9PS0xfHxiPT0wfHxiPT0xfSx0aGlzLmlzRW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZW5kLnJvdz09YSYmdGhpcy5lbmQuY29sdW1uPT1ifSx0aGlzLmlzU3RhcnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWEmJnRoaXMuc3RhcnQuY29sdW1uPT1ifSx0aGlzLnNldFN0YXJ0PWZ1bmN0aW9uKGEsYil7dHlwZW9mIGE9PSJvYmplY3QiPyh0aGlzLnN0YXJ0LmNvbHVtbj1hLmNvbHVtbix0aGlzLnN0YXJ0LnJvdz1hLnJvdyk6KHRoaXMuc3RhcnQucm93PWEsdGhpcy5zdGFydC5jb2x1bW49Yil9LHRoaXMuc2V0RW5kPWZ1bmN0aW9uKGEsYil7dHlwZW9mIGE9PSJvYmplY3QiPyh0aGlzLmVuZC5jb2x1bW49YS5jb2x1bW4sdGhpcy5lbmQucm93PWEucm93KToodGhpcy5lbmQucm93PWEsdGhpcy5lbmQuY29sdW1uPWIpfSx0aGlzLmluc2lkZT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNvbXBhcmUoYSxiKT09MD90aGlzLmlzRW5kKGEsYil8fHRoaXMuaXNTdGFydChhLGIpPyExOiEwOiExfSx0aGlzLmluc2lkZVN0YXJ0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY29tcGFyZShhLGIpPT0wP3RoaXMuaXNFbmQoYSxiKT8hMTohMDohMX0sdGhpcy5pbnNpZGVFbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEsYik9PTA/dGhpcy5pc1N0YXJ0KGEsYik/ITE6ITA6ITF9LHRoaXMuY29tcGFyZT1mdW5jdGlvbihhLGIpe3JldHVybiF0aGlzLmlzTXVsdGlMaW5lKCkmJmE9PT10aGlzLnN0YXJ0LnJvdz9iPHRoaXMuc3RhcnQuY29sdW1uPy0xOmI+dGhpcy5lbmQuY29sdW1uPzE6MDphPHRoaXMuc3RhcnQucm93Py0xOmE+dGhpcy5lbmQucm93PzE6dGhpcy5zdGFydC5yb3c9PT1hP2I+PXRoaXMuc3RhcnQuY29sdW1uPzA6LTE6dGhpcy5lbmQucm93PT09YT9iPD10aGlzLmVuZC5jb2x1bW4/MDoxOjB9LHRoaXMuY29tcGFyZVN0YXJ0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1hJiZ0aGlzLnN0YXJ0LmNvbHVtbj09Yj8tMTp0aGlzLmNvbXBhcmUoYSxiKX0sdGhpcy5jb21wYXJlRW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZW5kLnJvdz09YSYmdGhpcy5lbmQuY29sdW1uPT1iPzE6dGhpcy5jb21wYXJlKGEsYil9LHRoaXMuY29tcGFyZUluc2lkZT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVuZC5yb3c9PWEmJnRoaXMuZW5kLmNvbHVtbj09Yj8xOnRoaXMuc3RhcnQucm93PT1hJiZ0aGlzLnN0YXJ0LmNvbHVtbj09Yj8tMTp0aGlzLmNvbXBhcmUoYSxiKX0sdGhpcy5jbGlwUm93cz1mdW5jdGlvbihhLGIpe2lmKHRoaXMuZW5kLnJvdz5iKXZhciBjPXtyb3c6YisxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdz5iKXZhciBlPXtyb3c6YisxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdzxhKXZhciBlPXtyb3c6YSxjb2x1bW46MH07aWYodGhpcy5lbmQucm93PGEpdmFyIGM9e3JvdzphLGNvbHVtbjowfTtyZXR1cm4gZC5mcm9tUG9pbnRzKGV8fHRoaXMuc3RhcnQsY3x8dGhpcy5lbmQpfSx0aGlzLmV4dGVuZD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY29tcGFyZShhLGIpO2lmKGM9PTApcmV0dXJuIHRoaXM7aWYoYz09LTEpdmFyIGU9e3JvdzphLGNvbHVtbjpifTtlbHNlIHZhciBmPXtyb3c6YSxjb2x1bW46Yn07cmV0dXJuIGQuZnJvbVBvaW50cyhlfHx0aGlzLnN0YXJ0LGZ8fHRoaXMuZW5kKX0sdGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT10aGlzLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT10aGlzLmVuZC5jb2x1bW59LHRoaXMuaXNNdWx0aUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3chPT10aGlzLmVuZC5yb3d9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gZC5mcm9tUG9pbnRzKHRoaXMuc3RhcnQsdGhpcy5lbmQpfSx0aGlzLmNvbGxhcHNlUm93cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC5jb2x1bW49PTA/bmV3IGQodGhpcy5zdGFydC5yb3csMCxNYXRoLm1heCh0aGlzLnN0YXJ0LnJvdyx0aGlzLmVuZC5yb3ctMSksMCk6bmV3IGQodGhpcy5zdGFydC5yb3csMCx0aGlzLmVuZC5yb3csMCl9LHRoaXMudG9TY3JlZW5SYW5nZT1mdW5jdGlvbihhKXt2YXIgYj1hLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnN0YXJ0KSxjPWEuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuZW5kKTtyZXR1cm4gbmV3IGQoYi5yb3csYi5jb2x1bW4sYy5yb3csYy5jb2x1bW4pfX0pLmNhbGwoZC5wcm90b3R5cGUpLGQuZnJvbVBvaW50cz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZChhLnJvdyxhLmNvbHVtbixiLnJvdyxiLmNvbHVtbil9LGIuUmFuZ2U9ZH0pLGRlZmluZSgiYWNlL2FuY2hvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vbGliL29vcCIpLGU9YSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixmPWIuQW5jaG9yPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmRvY3VtZW50PWEsdHlwZW9mIGM9PSJ1bmRlZmluZWQiP3RoaXMuc2V0UG9zaXRpb24oYi5yb3csYi5jb2x1bW4pOnRoaXMuc2V0UG9zaXRpb24oYixjKSx0aGlzLiRvbkNoYW5nZT10aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyksYS5vbigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9OyhmdW5jdGlvbigpe2QuaW1wbGVtZW50KHRoaXMsZSksdGhpcy5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KHRoaXMucm93LHRoaXMuY29sdW1uKX0sdGhpcy5nZXREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvY3VtZW50fSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YSxjPWIucmFuZ2U7aWYoYy5zdGFydC5yb3c9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3chPXRoaXMucm93KXJldHVybjtpZihjLnN0YXJ0LnJvdz50aGlzLnJvdylyZXR1cm47aWYoYy5zdGFydC5yb3c9PXRoaXMucm93JiZjLnN0YXJ0LmNvbHVtbj50aGlzLmNvbHVtbilyZXR1cm47dmFyIGQ9dGhpcy5yb3csZT10aGlzLmNvbHVtbjtiLmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9jLnN0YXJ0LnJvdz09PWQmJmMuc3RhcnQuY29sdW1uPD1lP2Muc3RhcnQucm93PT09Yy5lbmQucm93P2UrPWMuZW5kLmNvbHVtbi1jLnN0YXJ0LmNvbHVtbjooZS09Yy5zdGFydC5jb2x1bW4sZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpjLnN0YXJ0LnJvdyE9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3c8ZCYmKGQrPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdyk6Yi5hY3Rpb249PT0iaW5zZXJ0TGluZXMiP2Muc3RhcnQucm93PD1kJiYoZCs9Yy5lbmQucm93LWMuc3RhcnQucm93KTpiLmFjdGlvbj09InJlbW92ZVRleHQiP2Muc3RhcnQucm93PT1kJiZjLnN0YXJ0LmNvbHVtbjxlP2MuZW5kLmNvbHVtbj49ZT9lPWMuc3RhcnQuY29sdW1uOmU9TWF0aC5tYXgoMCxlLShjLmVuZC5jb2x1bW4tYy5zdGFydC5jb2x1bW4pKTpjLnN0YXJ0LnJvdyE9PWMuZW5kLnJvdyYmYy5zdGFydC5yb3c8ZD8oYy5lbmQucm93PT1kJiYoZT1NYXRoLm1heCgwLGUtYy5lbmQuY29sdW1uKStjLnN0YXJ0LmNvbHVtbiksZC09Yy5lbmQucm93LWMuc3RhcnQucm93KTpjLmVuZC5yb3c9PWQmJihkLT1jLmVuZC5yb3ctYy5zdGFydC5yb3csZT1NYXRoLm1heCgwLGUtYy5lbmQuY29sdW1uKStjLnN0YXJ0LmNvbHVtbik6Yi5hY3Rpb249PSJyZW1vdmVMaW5lcyImJmMuc3RhcnQucm93PD1kJiYoYy5lbmQucm93PD1kP2QtPWMuZW5kLnJvdy1jLnN0YXJ0LnJvdzooZD1jLnN0YXJ0LnJvdyxlPTApKSx0aGlzLnNldFBvc2l0aW9uKGQsZSwhMCl9LHRoaXMuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2M/ZD17cm93OmEsY29sdW1uOmJ9OmQ9dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChhLGIpO2lmKHRoaXMucm93PT1kLnJvdyYmdGhpcy5jb2x1bW49PWQuY29sdW1uKXJldHVybjt2YXIgZT17cm93OnRoaXMucm93LGNvbHVtbjp0aGlzLmNvbHVtbn07dGhpcy5yb3c9ZC5yb3csdGhpcy5jb2x1bW49ZC5jb2x1bW4sdGhpcy5fZW1pdCgiY2hhbmdlIix7b2xkOmUsdmFsdWU6ZH0pfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe3RoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9LHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtyZXR1cm4gYT49dGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKT8oYy5yb3c9TWF0aC5tYXgoMCx0aGlzLmRvY3VtZW50LmdldExlbmd0aCgpLTEpLGMuY29sdW1uPXRoaXMuZG9jdW1lbnQuZ2V0TGluZShjLnJvdykubGVuZ3RoKTphPDA/KGMucm93PTAsYy5jb2x1bW49MCk6KGMucm93PWEsYy5jb2x1bW49TWF0aC5taW4odGhpcy5kb2N1bWVudC5nZXRMaW5lKGMucm93KS5sZW5ndGgsTWF0aC5tYXgoMCxiKSkpLGI8MCYmKGMuY29sdW1uPTApLGN9fSkuY2FsbChmLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9saWIvbGFuZyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXtiLnN0cmluZ1JldmVyc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKX0sYi5zdHJpbmdSZXBlYXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4obmV3IEFycmF5KGIrMSkpLmpvaW4oYSl9O3ZhciBkPS9eXHNccyovLGU9L1xzXHMqJC87Yi5zdHJpbmdUcmltTGVmdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGQsIiIpfSxiLnN0cmluZ1RyaW1SaWdodD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGUsIiIpfSxiLmNvcHlPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifSxiLmNvcHlBcnJheT1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYVtjXSYmdHlwZW9mIGFbY109PSJvYmplY3QiP2JbY109dGhpcy5jb3B5T2JqZWN0KGFbY10pOmJbY109YVtjXTtyZXR1cm4gYn0sYi5kZWVwQ29weT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGE7dmFyIGI9YS5jb25zdHJ1Y3RvcigpO2Zvcih2YXIgYyBpbiBhKXR5cGVvZiBhW2NdPT0ib2JqZWN0Ij9iW2NdPXRoaXMuZGVlcENvcHkoYVtjXSk6YltjXT1hW2NdO3JldHVybiBifSxiLmFycmF5VG9NYXA9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYlthW2NdXT0xO3JldHVybiBifSxiLmFycmF5UmVtb3ZlPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yzw9YS5sZW5ndGg7YysrKWI9PT1hW2NdJiZhLnNwbGljZShjLDEpfSxiLmVzY2FwZVJlZ0V4cD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oWy4qKz9eJHt9KCl8W1xdXC9cXF0pL2csIlxcJDEiKX0sYi5kZWZlcnJlZENhbGw9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCxjPWZ1bmN0aW9uKCl7Yj1udWxsLGEoKX0sZD1mdW5jdGlvbihhKXtyZXR1cm4gZC5jYW5jZWwoKSxiPXNldFRpbWVvdXQoYyxhfHwwKSxkfTtyZXR1cm4gZC5zY2hlZHVsZT1kLGQuY2FsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbCgpLGEoKSxkfSxkLmNhbmNlbD1mdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQoYiksYj1udWxsLGR9LGR9fSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkveHF1ZXJ5IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL21vZGUveHF1ZXJ5L2FudGxyMy1hbGwiLCJhY2UvbW9kZS94cXVlcnkvWFF1ZXJ5TGV4ZXIiLCJhY2UvbW9kZS94cXVlcnkvWFF1ZXJ5UGFyc2VyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vYW50bHIzLWFsbCIpLGU9ZC5vcmcsZj1kLk5ld0xhenlUb2tlblN0cmVhbSxnPWEoIi4vWFF1ZXJ5TGV4ZXIiKS5YUXVlcnlMZXhlcixoPWEoIi4vWFF1ZXJ5UGFyc2VyIikuWFF1ZXJ5UGFyc2VyO2IuZ2V0UGFyc2VyPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBlLmFudGxyLnJ1bnRpbWUuQU5UTFJTdHJpbmdTdHJlYW0oYSksYz1uZXcgZyhiKSxkPW5ldyBmKGMpO2QuanVtcFRvRmlyc3RWYWxpZFRva2VuKCk7dmFyIGk9bmV3IGgoZCk7cmV0dXJuIGkuc2V0U291cmNlKGIpLGl9fSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkvYW50bHIzLWFsbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iLk5ld0xhenlUb2tlblN0cmVhbT1mdW5jdGlvbihhKXt0aGlzLnRva2VuU291cmNlPWEsdGhpcy50b2tlbnM9W10sdGhpcy5pc1dzRXhwbGljaXQ9ITEsdGhpcy5wPTAsdGhpcy5jaGFubmVsPWUuYW50bHIucnVudGltZS5Ub2tlbi5ERUZBVUxUX0NIQU5ORUwsdGhpcy5MVD1mdW5jdGlvbihhKXtyZXR1cm4gYT09MD9udWxsOmE8MD90aGlzLnJlYWRSZXZlcnNlTnRoR29vZFRva2VuKC1hKTp0aGlzLnJlYWROdGhHb29kVG9rZW4oYSl9LHRoaXMuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBhPj10aGlzLnRva2Vucy5sZW5ndGg/ZS5hbnRsci5ydW50aW1lLlRva2VuLkVPRl9UT0tFTjp0aGlzLnRva2Vuc1thXX0sdGhpcy5nZXRUb2tlblNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuU291cmNlfSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKGEsYil7aWYoYT09dW5kZWZpbmVkKXJldHVybiB0aGlzLnRvU3RyaW5nKDAsdGhpcy50b2tlbnMubGVuZ3RoLTEpO2lmKGEgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuVG9rZW4pcmV0dXJuIHRoaXMudG9TdHJpbmcoYS5nZXRUb2tlbkluZGV4KCksYi5nZXRUb2tlbkluZGV4KCkpO2E8MCYmKGE9MCksdGhpcy5wPD1iJiZ0aGlzLnJlYWROVG9rZW5zKGItdGhpcy5wKzEpO3ZhciBjPSIiO2Zvcih2YXIgZD1hO2Q8PWImJmQ8dGhpcy50b2tlbnMubGVuZ3RoO2QrKyljKz10aGlzLnRva2Vuc1tkXS5nZXRUZXh0KCk7cmV0dXJuIGN9LHRoaXMuTEE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuTFQoYSkuZ2V0VHlwZSgpfSx0aGlzLmRvbmU9ITEsdGhpcy5jb25zdW1lPWZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybjt0aGlzLnArKyx0aGlzLmlzV3NFeHBsaWNpdHx8dGhpcy5qdW1wVG9GaXJzdFZhbGlkVG9rZW4oKX0sdGhpcy5nZXRTb3VyY2VOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VG9rZW5Tb3VyY2UoKS5nZXRTb3VyY2VOYW1lKCl9LHRoaXMuaW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wfSx0aGlzLm1hcms9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXN0TWFya2VyPXRoaXMuaW5kZXgoKSx0aGlzLmxhc3RNYXJrZXJ9LHRoaXMucmVsZWFzZT1mdW5jdGlvbihhKXt9LHRoaXMucmV3aW5kPWZ1bmN0aW9uKGEpe2FyZ3VtZW50cy5sZW5ndGg9PTE/dGhpcy5zZWVrKGEpOnRoaXMuc2Vlayh0aGlzLmxhc3RNYXJrZXIpfSx0aGlzLnNlZWs9ZnVuY3Rpb24oYSl7dGhpcy5wPWEsdGhpcy5kb25lPSExfSx0aGlzLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbnMubGVuZ3RofSx0aGlzLnNldFRva2VuU291cmNlPWZ1bmN0aW9uKGEpe3RoaXMudG9rZW5Tb3VyY2U9YSx0aGlzLnNldFdzRXhwbGljaXQoYS5pc1dzRXhwbGljaXQpO2lmKHRoaXMucDx0aGlzLnRva2Vucy5sZW5ndGgpe3ZhciBiPXRoaXMucD4wP3RoaXMudG9rZW5zW3RoaXMucC0xXS5nZXRTdG9wSW5kZXgoKTowO3RoaXMudG9rZW5Tb3VyY2UucmV3aW5kVG9JbmRleChiKzEpO2Zvcih2YXIgYz10aGlzLnRva2Vucy5sZW5ndGgtMTtjPj10aGlzLnA7Yy0tKXRoaXMudG9rZW5zLnNwbGljZShjLDEpfXRoaXMuaXNXc0V4cGxpY2l0fHx0aGlzLmp1bXBUb0ZpcnN0VmFsaWRUb2tlbigpfSx0aGlzLnNldFdzRXhwbGljaXQ9ZnVuY3Rpb24oYSl7dGhpcy5pc1dzRXhwbGljaXQ9YSxhfHx0aGlzLmp1bXBUb0ZpcnN0VmFsaWRUb2tlbigpfSx0aGlzLnJlYWROdGhHb29kVG9rZW49ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50b2tlbnMubGVuZ3RoLGM9Yi10aGlzLnAsZD0xLGY9MCxnPW51bGw7d2hpbGUoZDw9YSl7aWYoZjxjKWc9dGhpcy50b2tlbnNbdGhpcy5wK2ZdO2Vsc2V7Zz10aGlzLnRva2VuU291cmNlLm5leHRUb2tlbigpO2lmKGc9PWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0ZfVE9LRU4pcmV0dXJuIGc7Zy5zZXRUb2tlbkluZGV4KGIrKyksdGhpcy50b2tlbnMucHVzaChnKX0odGhpcy5pc1dzRXhwbGljaXR8fGcuZ2V0Q2hhbm5lbCgpPT10aGlzLmNoYW5uZWwpJiZkKyssZisrfXJldHVybiBnfSx0aGlzLnJlYWRSZXZlcnNlTnRoR29vZFRva2VuPWZ1bmN0aW9uKGEpe2lmKGE9PTB8fHRoaXMucC1hPDApcmV0dXJuIG51bGw7dmFyIGI9MSxjPTAsZD1udWxsO3doaWxlKHRoaXMucC0xLWM+PTApe2Q9dGhpcy5nZXQodGhpcy5wLTEtYyk7aWYodGhpcy5pc1dzRXhwbGljaXR8fGQuZ2V0Q2hhbm5lbCgpPT10aGlzLmNoYW5uZWwpaWYoYisrPT1hKXJldHVybiBkO2MrK31yZXR1cm4gbnVsbH0sdGhpcy5yZWFkTlRva2Vucz1mdW5jdGlvbihhKXt2YXIgYj1udWxsO2Zvcih2YXIgYz0wO2M8YTtjKyspe2lmKHRoaXMudG9rZW5zLmxlbmd0aD50aGlzLnArYyljb250aW51ZTtiPXRoaXMudG9rZW5Tb3VyY2UubmV4dFRva2VuKCk7aWYoYj09ZS5hbnRsci5ydW50aW1lLlRva2VuLkVPRl9UT0tFTilyZXR1cm47Yi5zZXRUb2tlbkluZGV4KHRoaXMucCtjKSx0aGlzLnRva2Vucy5wdXNoKGIpfX0sdGhpcy5qdW1wVG9GaXJzdFZhbGlkVG9rZW49ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkxUKDEpO2EhPWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0ZfVE9LRU4mJih0aGlzLmRvbmU9ITEsdGhpcy5wPWEuZ2V0VG9rZW5JbmRleCgpKX19O2lmKHR5cGVvZiBlPT0idW5kZWZpbmVkInx8IWUpdmFyIGU9e307aWYodHlwZW9mIGUuYW50bHI9PSJ1bmRlZmluZWQifHwhZS5hbnRscillLmFudGxyPXt9O2UuYW50bHIuZ2xvYmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LmNhbGwobnVsbCksZS5hbnRsci5uYW1lc3BhY2U9ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMsYj1udWxsLGMsZCxmO2ZvcihjPTA7YzxhLmxlbmd0aDtjKz0xKXtmPWFbY10uc3BsaXQoIi4iKSxiPWUuYW50bHIuZ2xvYmFsO2ZvcihkPTA7ZDxmLmxlbmd0aDtkKz0xKWJbZltkXV09YltmW2RdXXx8e30sYj1iW2ZbZF1dfXJldHVybiBifSxlLmFudGxyLmVudj1lLmFudGxyLmVudnx8e30sZS5hbnRsci5uYW1lc3BhY2UoIm9yZy5hbnRsci5ydW50aW1lLnRyZWUiKSxlLmFudGxyLmxhbmc9ZS5hbnRsci5sYW5nfHx7aXNBcnJheTpmdW5jdGlvbihhKXtpZihhKXt2YXIgYj1lLmFudGxyLmxhbmc7cmV0dXJuIGIuaXNOdW1iZXIoYS5sZW5ndGgpJiZiLmlzRnVuY3Rpb24oYS5zcGxpY2UpfXJldHVybiExfSxpc0Jvb2xlYW46ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0iYm9vbGVhbiJ9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0iZnVuY3Rpb24ifSxpc051bGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1udWxsfSxpc051bWJlcjpmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PSJudW1iZXIiJiZpc0Zpbml0ZShhKX0saXNPYmplY3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJih0eXBlb2YgYT09Im9iamVjdCJ8fGUuYW50bHIubGFuZy5pc0Z1bmN0aW9uKGEpKXx8ITF9LGlzU3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09InN0cmluZyJ9LGlzVW5kZWZpbmVkOmZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09InVuZGVmaW5lZCJ9LF9JRUVudW1GaXg6ZnVuY3Rpb24oYSxiKXt9LGV4dGVuZDpmdW5jdGlvbihhLGIsYyl7aWYoIWJ8fCFhKXRocm93IG5ldyBFcnJvcigib3JnLmFudGxyLmxhbmcuZXh0ZW5kIGZhaWxlZCwgcGxlYXNlIGNoZWNrIHRoYXQgYWxsIGRlcGVuZGVuY2llcyBhcmUgaW5jbHVkZWQuIik7dmFyIGQ9ZnVuY3Rpb24oKXt9O2QucHJvdG90eXBlPWIucHJvdG90eXBlLGEucHJvdG90eXBlPW5ldyBkLGEucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEsYS5zdXBlcmNsYXNzPWIucHJvdG90eXBlLGIucHJvdG90eXBlLmNvbnN0cnVjdG9yPT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yJiYoYi5wcm90b3R5cGUuY29uc3RydWN0b3I9Yik7aWYoYyl7Zm9yKHZhciBmIGluIGMpYS5wcm90b3R5cGVbZl09Y1tmXTtlLmFudGxyLmxhbmcuX0lFRW51bUZpeChhLnByb3RvdHlwZSxjKX19LGF1Z21lbnRPYmplY3Q6ZnVuY3Rpb24oYSxiKXtpZighYnx8IWEpdGhyb3cgbmV3IEVycm9yKCJBYnNvcmIgZmFpbGVkLCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiIpO3ZhciBjPWFyZ3VtZW50cyxkLGYsZz1jWzJdO2lmKGcmJmchPT0hMClmb3IoZD0yO2Q8Yy5sZW5ndGg7ZCs9MSlhW2NbZF1dPWJbY1tkXV07ZWxzZXtmb3IoZiBpbiBiKWlmKGd8fCFhW2ZdKWFbZl09YltmXTtlLmFudGxyLmxhbmcuX0lFRW51bUZpeChhLGIpfX0sYXVnbWVudFByb3RvOmZ1bmN0aW9uKGEsYil7aWYoIWJ8fCFhKXRocm93IG5ldyBFcnJvcigiQXVnbWVudCBmYWlsZWQsIHZlcmlmeSBkZXBlbmRlbmNpZXMuIik7dmFyIGM9W2EucHJvdG90eXBlLGIucHJvdG90eXBlXTtmb3IodmFyIGQ9MjtkPGFyZ3VtZW50cy5sZW5ndGg7ZCs9MSljLnB1c2goYXJndW1lbnRzW2RdKTtlLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdC5hcHBseSh0aGlzLGMpfSxtZXJnZTpmdW5jdGlvbigpe3ZhciBhPXt9LGI9YXJndW1lbnRzO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrPTEpZS5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QoYSxiW2NdLCEwKTtyZXR1cm4gYX0saXNWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1lLmFudGxyLmxhbmc7cmV0dXJuIGIuaXNPYmplY3QoYSl8fGIuaXNTdHJpbmcoYSl8fGIuaXNOdW1iZXIoYSl8fGIuaXNCb29sZWFuKGEpfSxhcnJheTp7cGVlazpmdW5jdGlvbihhKXtpZighZS5hbnRsci5sYW5nLmlzQXJyYXkoYSkpdGhyb3cgbmV3IEVycm9yKCJvcmcuYW50bHIubGFuZy5hcnJheS5wZWVrOiBhIGlzIG5vdCBhbiBhcnJheS4iKTt2YXIgYj1hLmxlbmd0aDtpZihiPD0wKXRocm93IG5ldyBFcnJvcigib3JnLmFudGxyLmxhbmcuYXJyYXkucGVlazogYSBpcyBlbXB0eS4iKTtyZXR1cm4gYVtiLTFdfX19LGUuYW50bHIucnVudGltZT17fSxlLmFudGxyLnJ1bnRpbWUuUmVjb2duaXplclNoYXJlZFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5mb2xsb3dpbmc9W10sdGhpcy5fZnNwPS0xLHRoaXMuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLmxhc3RFcnJvckluZGV4PS0xLHRoaXMuZmFpbGVkPSExLHRoaXMuc3ludGF4RXJyb3JzPTAsdGhpcy5iYWNrdHJhY2tpbmc9MCx0aGlzLnJ1bGVNZW1vPW51bGwsdGhpcy50b2tlbj1udWxsLHRoaXMudG9rZW5TdGFydENoYXJJbmRleD0tMSx0aGlzLnRleHQ9bnVsbH0sZS5hbnRsci5ydW50aW1lLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb249ZnVuY3Rpb24oYSl7ZS5hbnRsci5ydW50aW1lLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSl9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24sRXJyb3Ise25hbWU6Im9yZy5hbnRsci5ydW50aW1lLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ifSksZS5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uPWZ1bmN0aW9uKGEpe2UuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyksdGhpcy5pbnB1dD1hLHRoaXMuaW5kZXg9YS5pbmRleCgpLGEgaW5zdGFuY2VvZiBkJiYodGhpcy50b2tlbj1hLkxUKDEpLHRoaXMubGluZT10aGlzLnRva2VuLmdldExpbmUoKSx0aGlzLmNoYXJQb3NpdGlvbkluTGluZT10aGlzLnRva2VuLmdldENoYXJQb3NpdGlvbkluTGluZSgpKSxhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLnRyZWUuVHJlZU5vZGVTdHJlYW0/dGhpcy5leHRyYWN0SW5mb3JtYXRpb25Gcm9tVHJlZU5vZGVTdHJlYW0oYSk6YSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5BTlRMUlN0cmluZ1N0cmVhbT8odGhpcy5jPWEuTEEoMSksdGhpcy5saW5lPWEuZ2V0TGluZSgpLHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lPWEuZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCkpOnRoaXMuYz1hLkxBKDEpLHRoaXMubWVzc2FnZT10aGlzLnRvU3RyaW5nKCl9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uLEVycm9yLHtpbnB1dDpudWxsLGluZGV4Om51bGwsdG9rZW46bnVsbCxub2RlOm51bGwsYzpudWxsLGxpbmU6bnVsbCxuYW1lOiJvcmcuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbiIsY2hhclBvc2l0aW9uSW5MaW5lOm51bGwsYXBwcm94aW1hdGVMaW5lSW5mbzpudWxsLGV4dHJhY3RJbmZvcm1hdGlvbkZyb21UcmVlTm9kZVN0cmVhbTpmdW5jdGlvbihhKXt2YXIgYj1hLGMsZCxmLGcsaDt0aGlzLm5vZGU9Yi5MVCgxKTt2YXIgaT1iLmdldFRyZWVBZGFwdG9yKCksaj1pLmdldFRva2VuKHRoaXMubm9kZSk7aWYoail7dGhpcy50b2tlbj1qO2lmKGouZ2V0TGluZSgpPD0wKXtoPS0xLGM9Yi5MVChoKTt3aGlsZShjKXtwcmlvclBheWxvYWQ9aS5nZXRUb2tlbihjKTtpZihwcmlvclBheWxvYWQmJnByaW9yUGF5bG9hZC5nZXRMaW5lKCk+MCl7dGhpcy5saW5lPXByaW9yUGF5bG9hZC5nZXRMaW5lKCksdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9cHJpb3JQYXlsb2FkLmdldENoYXJQb3NpdGlvbkluTGluZSgpLHRoaXMuYXBwcm94aW1hdGVMaW5lSW5mbz0hMDticmVha30tLWgsYz1iLkxUKGgpfX1lbHNlIHRoaXMubGluZT1qLmdldExpbmUoKSx0aGlzLmNoYXJQb3NpdGlvbkluTGluZT1qLmdldENoYXJQb3NpdGlvbkluTGluZSgpfWVsc2UgdGhpcy5ub2RlIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZT8odGhpcy5saW5lPXRoaXMubm9kZS5nZXRMaW5lKCksdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9dGhpcy5ub2RlLmdldENoYXJQb3NpdGlvbkluTGluZSgpLHRoaXMubm9kZSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUmJih0aGlzLnRva2VuPXRoaXMubm9kZS50b2tlbikpOihmPWkuZ2V0VHlwZSh0aGlzLm5vZGUpLGc9aS5nZXRUZXh0KHRoaXMubm9kZSksdGhpcy50b2tlbj1uZXcgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKGYsZykpfSxnZXRVbmV4cGVjdGVkVHlwZTpmdW5jdGlvbigpe2lmKHRoaXMuaW5wdXQgaW5zdGFuY2VvZiBkKXJldHVybiB0aGlzLnRva2VuLmdldFR5cGUoKTtpZih0aGlzLmlucHV0IGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLnRyZWUuVHJlZU5vZGVTdHJlYW0pe3ZhciBhPXRoaXMuaW5wdXQsYj1hLmdldFRyZWVBZGFwdG9yKCk7cmV0dXJuIGIuZ2V0VHlwZSh0aGlzLm5vZGUpfXJldHVybiB0aGlzLmN9fSksZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbj1mdW5jdGlvbihhLGIpe2FyZ3VtZW50cy5sZW5ndGg9PT0wP3RoaXMuZXhwZWN0aW5nPWUuYW50bHIucnVudGltZS5Ub2tlbi5JTlZBTElEX1RPS0VOX1RZUEU6KGUuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYiksdGhpcy5leHBlY3Rpbmc9YSl9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbixlLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24se3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbigiK3RoaXMuZ2V0VW5leHBlY3RlZFR5cGUoKSsiIT0iK3RoaXMuZXhwZWN0aW5nKyIpIn0sbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uIn0pLGUuYW50bHIucnVudGltZS5VbndhbnRlZFRva2VuRXhjZXB0aW9uPWZ1bmN0aW9uKGEsYil7YXJndW1lbnRzLmxlbmd0aD4wJiZlLmFudGxyLnJ1bnRpbWUuVW53YW50ZWRUb2tlbkV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLGIpfSxlLmFudGxyLmxhbmcuZXh0ZW5kKGUuYW50bHIucnVudGltZS5VbndhbnRlZFRva2VuRXhjZXB0aW9uLGUuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24se2dldFVuZXhwZWN0ZWRUb2tlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VufSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBhPSIsIGV4cGVjdGVkICIrdGhpcy5leHBlY3Rpbmc7cmV0dXJuIHRoaXMuZXhwZWN0aW5nPT09ZS5hbnRsci5ydW50aW1lLlRva2VuLklOVkFMSURfVE9LRU5fVFlQRSYmKGE9IiIpLGUuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMudG9rZW4pPyJVbndhbnRlZFRva2VuRXhjZXB0aW9uKGZvdW5kPSIrdGhpcy50b2tlbi5nZXRUZXh0KCkrYSsiKSI6IlVud2FudGVkVG9rZW5FeGNlcHRpb24oZm91bmQ9IithKyIpIn0sbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuVW53YW50ZWRUb2tlbkV4Y2VwdGlvbiJ9KSxlLmFudGxyLnJ1bnRpbWUuTWlzc2luZ1Rva2VuRXhjZXB0aW9uPWZ1bmN0aW9uKGEsYixjKXthcmd1bWVudHMubGVuZ3RoPjAmJihlLmFudGxyLnJ1bnRpbWUuTWlzc2luZ1Rva2VuRXhjZXB0aW9uLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEsYiksdGhpcy5pbnNlcnRlZD1jKX0sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUuTWlzc2luZ1Rva2VuRXhjZXB0aW9uLGUuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24se2dldE1pc3NpbmdUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhwZWN0aW5nfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBlLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLmluc2VydGVkKSYmZS5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy50b2tlbik/Ik1pc3NpbmdUb2tlbkV4Y2VwdGlvbihpbnNlcnRlZCAiK3RoaXMuaW5zZXJ0ZWQrIiBhdCAiK3RoaXMudG9rZW4uZ2V0VGV4dCgpKyIpIjplLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnRva2VuKT8iTWlzc2luZ1Rva2VuRXhjZXB0aW9uKGF0ICIrdGhpcy50b2tlbi5nZXRUZXh0KCkrIikiOiJNaXNzaW5nVG9rZW5FeGNlcHRpb24ifSxuYW1lOiJvcmcuYW50bHIucnVudGltZS5NaXNzaW5nVG9rZW5FeGNlcHRpb24ifSksZS5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uPWZ1bmN0aW9uKGEsYixjLGQpe2UuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxkKSx0aGlzLmdyYW1tYXJEZWNpc2lvbkRlc2NyaXB0aW9uPWEsdGhpcy5kZWNpc2lvbk51bWJlcj1iLHRoaXMuc3RhdGVOdW1iZXI9Y30sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24sZS5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0IGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkFOVExSU3RyaW5nU3RyZWFtPyJOb1ZpYWJsZUFsdEV4Y2VwdGlvbignIit0aGlzLmdldFVuZXhwZWN0ZWRUeXBlKCkrIidAWyIrdGhpcy5ncmFtbWFyRGVjaXNpb25EZXNjcmlwdGlvbisiXSkiOiJOb1ZpYWJsZUFsdEV4Y2VwdGlvbigiK3RoaXMuZ2V0VW5leHBlY3RlZFR5cGUoKSsiQFsiK3RoaXMuZ3JhbW1hckRlY2lzaW9uRGVzY3JpcHRpb24rIl0pIn0sbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24ifSksZS5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbj1mdW5jdGlvbihhLGIpe2UuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYiksdGhpcy5kZWNpc2lvbk51bWJlcj1hfSxlLmFudGxyLmxhbmcuZXh0ZW5kKGUuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24sZS5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uLHtuYW1lOiJvcmcuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24ifSksZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb249ZnVuY3Rpb24oYSxiKXtlLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxiKSx0aGlzLmV4cGVjdGluZz1hfSxlLmFudGxyLmxhbmcuZXh0ZW5kKGUuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uLGUuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbix7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbigiK3RoaXMuZ2V0VW5leHBlY3RlZFR5cGUoKSsiIT0iK3RoaXMuZXhwZWN0aW5nKyIpIn0sbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbiJ9KSxlLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZE5vdFNldEV4Y2VwdGlvbj1mdW5jdGlvbihhLGIpe2UuYW50bHIucnVudGltZS5NaXNtYXRjaGVkTm90U2V0RXhjZXB0aW9uLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEsYil9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWROb3RTZXRFeGNlcHRpb24sZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24se3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk1pc21hdGNoZWROb3RTZXRFeGNlcHRpb24oIit0aGlzLmdldFVuZXhwZWN0ZWRUeXBlKCkrIiE9Iit0aGlzLmV4cGVjdGluZysiKSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWROb3RTZXRFeGNlcHRpb24ifSksZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRSYW5nZUV4Y2VwdGlvbj1mdW5jdGlvbihhLGIsYyl7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApcmV0dXJuIHRoaXM7ZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRSYW5nZUV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxjKSx0aGlzLmE9YSx0aGlzLmI9Yn0sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFJhbmdlRXhjZXB0aW9uLGUuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbix7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iTWlzbWF0Y2hlZFJhbmdlRXhjZXB0aW9uKCIrdGhpcy5nZXRVbmV4cGVjdGVkVHlwZSgpKyIgbm90IGluIFsiK3RoaXMuYSsiLCIrdGhpcy5iKyJdKSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRSYW5nZUV4Y2VwdGlvbiJ9KSxlLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uPWZ1bmN0aW9uKGEsYixjKXtlLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpLHRoaXMucnVsZU5hbWU9Yix0aGlzLnByZWRpY2F0ZVRleHQ9Y30sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uLGUuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbix7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKCIrdGhpcy5ydWxlTmFtZSsiLHsiK3RoaXMucHJlZGljYXRlVGV4dCsifT8pIn0sbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uIn0pLGUuYW50bHIucnVudGltZS5CaXRTZXQ9ZnVuY3Rpb24oYSl7YXx8KGE9ZS5hbnRsci5ydW50aW1lLkJpdFNldC5CSVRTKSxlLmFudGxyLmxhbmcuaXNBcnJheShhKT90aGlzLmJpdHM9YTplLmFudGxyLmxhbmcuaXNOdW1iZXIoYSkmJih0aGlzLmJpdHM9W10pfSxlLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChlLmFudGxyLnJ1bnRpbWUuQml0U2V0LHtCSVRTOjMyLExPR19CSVRTOjUsTU9EX01BU0s6MzEsYml0TWFzazpmdW5jdGlvbihhKXt2YXIgYj1hJmUuYW50bHIucnVudGltZS5CaXRTZXQuTU9EX01BU0s7cmV0dXJuIDE8PGJ9LG51bVdvcmRzVG9Ib2xkOmZ1bmN0aW9uKGEpe3JldHVybihhPj5lLmFudGxyLnJ1bnRpbWUuQml0U2V0LkxPR19CSVRTKSsxfSx3b3JkTnVtYmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhPj5lLmFudGxyLnJ1bnRpbWUuQml0U2V0LkxPR19CSVRTfSxvZjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZixnO2lmKGUuYW50bHIubGFuZy5pc051bWJlcihhKSl7aWYoZS5hbnRsci5sYW5nLmlzTnVtYmVyKGIpKXtmPW5ldyBlLmFudGxyLnJ1bnRpbWUuQml0U2V0KGIrMSk7Zm9yKGM9YTtjPD1iO2MrKylkPWUuYW50bHIucnVudGltZS5CaXRTZXQud29yZE51bWJlcihjKSxmLmJpdHNbZF18PWUuYW50bHIucnVudGltZS5CaXRTZXQuYml0TWFzayhjKTtyZXR1cm4gZn1yZXR1cm4gZj1uZXcgZS5hbnRsci5ydW50aW1lLkJpdFNldChhKzEpLGYuYWRkKGEpLGZ9aWYoZS5hbnRsci5sYW5nLmlzQXJyYXkoYSkpe2Y9bmV3IGUuYW50bHIucnVudGltZS5CaXRTZXQ7Zm9yKGM9YS5sZW5ndGgtMTtjPj0wO2MtLSlmLmFkZChhW2NdKTtyZXR1cm4gZn1pZihhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkJpdFNldClyZXR1cm4gYT9hOm51bGw7aWYoYSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5JbnRlcnZhbFNldClyZXR1cm4gYT8oZj1uZXcgZS5hbnRsci5ydW50aW1lLkJpdFNldCxmLmFkZEFsbChhKSxmKTpudWxsO2lmKGUuYW50bHIubGFuZy5pc09iamVjdChhKSl7Zz1bXTtmb3IoYyBpbiBhKWUuYW50bHIubGFuZy5pc051bWJlcihjKSYmZy5wdXNoKGMpO3JldHVybiBlLmFudGxyLnJ1bnRpbWUuQml0U2V0Lm9mKGcpfX19KSxlLmFudGxyLnJ1bnRpbWUuQml0U2V0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGEpe3ZhciBiPWUuYW50bHIucnVudGltZS5CaXRTZXQud29yZE51bWJlcihhKTtiPj10aGlzLmJpdHMubGVuZ3RoJiZ0aGlzLmdyb3dUb0luY2x1ZGUoYSksdGhpcy5iaXRzW2JdfD1lLmFudGxyLnJ1bnRpbWUuQml0U2V0LmJpdE1hc2soYSl9LGFkZEFsbDpmdW5jdGlvbihhKXt2YXIgYixjLGQ7aWYoYSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5CaXRTZXQpdGhpcy5vckluUGxhY2UoYSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkludGVydmFsU2V0KWI9YTtlbHNle2lmKCFlLmFudGxyLmxhbmcuaXNBcnJheShhKSlyZXR1cm47Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKylkPWFbY10sdGhpcy5hZGQoZCl9fSxhbmQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jbG9uZSgpO3JldHVybiBiLmFuZEluUGxhY2UoYSksYn0sYW5kSW5QbGFjZTpmdW5jdGlvbihhKXt2YXIgYj1NYXRoLm1pbih0aGlzLmJpdHMubGVuZ3RoLGEuYml0cy5sZW5ndGgpLGM7Zm9yKGM9Yi0xO2M+PTA7Yy0tKXRoaXMuYml0c1tjXSY9YS5iaXRzW2NdO2ZvcihjPWI7Yzx0aGlzLmJpdHMubGVuZ3RoO2MrKyl0aGlzLmJpdHNbY109MH0sY2xlYXI6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApe3ZhciBiO2ZvcihiPXRoaXMuYml0cy5sZW5ndGgtMTtiPj0wO2ItLSl0aGlzLmJpdHNbYl09MDtyZXR1cm59dmFyIGM9ZS5hbnRsci5ydW50aW1lLkJpdFNldC53b3JkTnVtYmVyKGEpO2M+PXRoaXMuYml0cy5sZW5ndGgmJnRoaXMuZ3Jvd1RvSW5jbHVkZShhKSx0aGlzLmJpdHNbY10mPX5lLmFudGxyLnJ1bnRpbWUuQml0U2V0LmJpdE1hc2soYSl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGEsYixjPVtdO2ZvcihhPTAsYj10aGlzLmJpdHMubGVuZ3RoO2E8YjthKyspY1thXT10aGlzLmJpdHNbYV07cmV0dXJuIG5ldyBlLmFudGxyLnJ1bnRpbWUuQml0U2V0KGMpfSxzaXplOmZ1bmN0aW9uKCl7dmFyIGE9MCxiLGMsZDtmb3IoYj10aGlzLmJpdHMubGVuZ3RoLTE7Yj49MDtiLS0pe2M9dGhpcy5iaXRzW2JdO2lmKGMhPT0wKWZvcihkPWUuYW50bHIucnVudGltZS5CaXRTZXQuQklUUy0xO2Q+PTA7ZC0tKShjJjE8PGQpIT09MCYmYSsrfXJldHVybiBhfSxlcXVhbHM6ZnVuY3Rpb24oYSl7aWYoISFhJiZhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkJpdFNldCl7dmFyIGI9YSxjLGQ9TWF0aC5taW4odGhpcy5iaXRzLmxlbmd0aCxiLmJpdHMubGVuZ3RoKTtmb3IoYz0wO2M8ZDtjKyspaWYodGhpcy5iaXRzW2NdIT1iLmJpdHNbY10pcmV0dXJuITE7aWYodGhpcy5iaXRzLmxlbmd0aD5kKXtmb3IoYz1kKzE7Yzx0aGlzLmJpdHMubGVuZ3RoO2MrKylpZih0aGlzLmJpdHNbY10hPT0wKXJldHVybiExfWVsc2UgaWYoYi5iaXRzLmxlbmd0aD5kKWZvcihjPWQrMTtjPGIuYml0cy5sZW5ndGg7YysrKWlmKGIuYml0c1tjXSE9PTApcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9LGdyb3dUb0luY2x1ZGU6ZnVuY3Rpb24oYSl7dmFyIGI9TWF0aC5tYXgodGhpcy5iaXRzLmxlbmd0aDw8MSxlLmFudGxyLnJ1bnRpbWUuQml0U2V0Lm51bVdvcmRzVG9Ib2xkKGEpKSxjPVtdLGQ7Zm9yKGQ9MCxsZW49dGhpcy5iaXRzLmxlbmd0aDtkPGxlbjtkKyspY1tkXT10aGlzLmJpdHNbZF07dGhpcy5iaXRzPWN9LG1lbWJlcjpmdW5jdGlvbihhKXt2YXIgYj1lLmFudGxyLnJ1bnRpbWUuQml0U2V0LndvcmROdW1iZXIoYSk7cmV0dXJuIGI+PXRoaXMuYml0cy5sZW5ndGg/ITE6KHRoaXMuYml0c1tiXSZlLmFudGxyLnJ1bnRpbWUuQml0U2V0LmJpdE1hc2soYSkpIT09MH0sZ2V0U2luZ2xlRWxlbWVudDpmdW5jdGlvbigpe3ZhciBhO2ZvcihhPTA7YTx0aGlzLmJpdHMubGVuZ3RoPDxlLmFudGxyLnJ1bnRpbWUuQml0U2V0LkxPR19CSVRTO2ErKylpZih0aGlzLm1lbWJlcihhKSlyZXR1cm4gYTtyZXR1cm4tMX0saXNOaWw6ZnVuY3Rpb24oKXt2YXIgYTtmb3IoYT10aGlzLmJpdHMubGVuZ3RoLTE7YT49MDthLS0paWYodGhpcy5iaXRzW2FdIT09MClyZXR1cm4hMTtyZXR1cm4hMH0sY29tcGxlbWVudDpmdW5jdGlvbihhKXtpZihhKXJldHVybiBhLnN1YnRyYWN0KHRoaXMpO3ZhciBiPXRoaXMuY2xvbmUoKTtyZXR1cm4gYi5ub3RJblBsYWNlKCksYn0sbm90SW5QbGFjZTpmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKWZvcihjPXRoaXMuYml0cy5sZW5ndGgtMTtjPj0wO2MtLSl0aGlzLmJpdHNbY109fnRoaXMuYml0c1tjXTtlbHNle2FyZ3VtZW50cy5sZW5ndGg9PT0xPyhhPTAsYj1hcmd1bWVudHNbMF0pOihhPWFyZ3VtZW50c1swXSxiPWFyZ3VtZW50c1sxXSksdGhpcy5ncm93VG9JbmNsdWRlKGIpO2ZvcihjPWE7Yzw9YjtjKyspZD1lLmFudGxyLnJ1bnRpbWUuQml0U2V0LndvcmROdW1iZXIoYyksdGhpcy5iaXRzW2RdXj1lLmFudGxyLnJ1bnRpbWUuQml0U2V0LmJpdE1hc2soYyl9fSxvcjpmdW5jdGlvbihhKXtpZighYSlyZXR1cm4gdGhpczt2YXIgYj10aGlzLmNsb25lKCk7cmV0dXJuIGIub3JJblBsYWNlKGEpLGJ9LG9ySW5QbGFjZTpmdW5jdGlvbihhKXtpZighYSlyZXR1cm47YS5iaXRzLmxlbmd0aD50aGlzLmJpdHMubGVuZ3RoJiZ0aGlzLnNldFNpemUoYS5iaXRzLmxlbmd0aCk7dmFyIGI9TWF0aC5taW4odGhpcy5iaXRzLmxlbmd0aCxhLmJpdHMubGVuZ3RoKSxjO2ZvcihjPWItMTtjPj0wO2MtLSl0aGlzLmJpdHNbY118PWEuYml0c1tjXX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiPWUuYW50bHIucnVudGltZS5CaXRTZXQud29yZE51bWJlcihhKTtiPj10aGlzLmJpdHMubGVuZ3RoJiZ0aGlzLmdyb3dUb0luY2x1ZGUoYSksdGhpcy5iaXRzW2JdJj1+ZS5hbnRsci5ydW50aW1lLkJpdFNldC5iaXRNYXNrKGEpfSxzZXRTaXplOmZ1bmN0aW9uKGEpe3ZhciBiPWEtdGhpcy5iaXRzLmxlbmd0aDt3aGlsZShiPj0wKXRoaXMuYml0cy5wdXNoKDApLGItLX0sbnVtQml0czpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJpdHMubGVuZ3RoPDxlLmFudGxyLnJ1bnRpbWUuQml0U2V0LkxPR19CSVRTfSxsZW5ndGhJbkxvbmdXb3JkczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJpdHMubGVuZ3RofSxzdWJzZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/dGhpcy5hbmQoYSkuZXF1YWxzKHRoaXMpOiExfSxzdWJ0cmFjdEluUGxhY2U6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuO3ZhciBiO2ZvcihiPTA7Yjx0aGlzLmJpdHMubGVuZ3RoJiZiPGEuYml0cy5sZW5ndGg7YisrKXRoaXMuYml0c1tiXSY9fmEuYml0c1tiXX0sc3VidHJhY3Q6ZnVuY3Rpb24oYSl7aWYoISFhJiZhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkJpdFNldCl7dmFyIGI9dGhpcy5jbG9uZSgpO3JldHVybiBiLnN1YnRyYWN0SW5QbGFjZShhKSxifXJldHVybiBudWxsfSx0b0FycmF5OmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPTA7Zm9yKGI9MDtiPHRoaXMuYml0cy5sZW5ndGg8PGUuYW50bHIucnVudGltZS5CaXRTZXQuTE9HX0JJVFM7YisrKXRoaXMubWVtYmVyKGIpJiYoYVtjKytdPWIpO3JldHVybiBhfSx0b1BhY2tlZEFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYml0c30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTA/dGhpcy50b1N0cmluZzEobnVsbCk6ZS5hbnRsci5sYW5nLmlzU3RyaW5nKGFyZ3VtZW50c1swXSk/ZS5hbnRsci5sYW5nLmlzVmFsdWUoYXJndW1lbnRzWzFdKT90aGlzLnRvU3RyaW5nMihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTp0aGlzLnRvU3RyaW5nMShudWxsKTp0aGlzLnRvU3RyaW5nMShhcmd1bWVudHNbMF0pfSx0b1N0cmluZzE6ZnVuY3Rpb24oYSl7dmFyIGI9InsiLGM9IiwiLGQsZj0hMTtmb3IoZD0wO2Q8dGhpcy5iaXRzLmxlbmd0aDw8ZS5hbnRsci5ydW50aW1lLkJpdFNldC5MT0dfQklUUztkKyspdGhpcy5tZW1iZXIoZCkmJihkPjAmJmYmJihiKz1jKSxhP2IrPWEuZ2V0VG9rZW5EaXNwbGF5TmFtZShkKTpiKz1kLnRvU3RyaW5nKCksZj0hMCk7cmV0dXJuIGIrIn0ifSx0b1N0cmluZzI6ZnVuY3Rpb24oYSxiKXt2YXIgYz0iIixkO2ZvcihkPTA7ZDx0aGlzLmJpdHMubGVuZ3RoPDxlLmFudGxyLnJ1bnRpbWUuQml0U2V0LkxPR19CSVRTO2QrKyl0aGlzLm1lbWJlcihkKSYmKGMubGVuZ3RoPjAmJihjKz1hKSxkPj1iLnNpemUoKT9jKz0iJyIrZCsiJyI6ZS5hbnRsci5sYW5nLmlzVmFsdWUoYi5nZXQoZCkpP2MrPWIuZ2V0KGQpOmMrPSInIitkKyInIik7cmV0dXJuIGN9fSxlLmFudGxyLnJ1bnRpbWUuQ2hhclN0cmVhbT17RU9GOi0xfSxlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW49ZnVuY3Rpb24oKXt2YXIgYTt0aGlzLmNoYXJQb3NpdGlvbkluTGluZT0tMSx0aGlzLmNoYW5uZWw9MCx0aGlzLmluZGV4PS0xLGFyZ3VtZW50cy5sZW5ndGg9PTE/ZS5hbnRsci5sYW5nLmlzTnVtYmVyKGFyZ3VtZW50c1swXSk/dGhpcy50eXBlPWFyZ3VtZW50c1swXTooYT1hcmd1bWVudHNbMF0sdGhpcy50ZXh0PWEuZ2V0VGV4dCgpLHRoaXMudHlwZT1hLmdldFR5cGUoKSx0aGlzLmxpbmU9YS5nZXRMaW5lKCksdGhpcy5pbmRleD1hLmdldFRva2VuSW5kZXgoKSx0aGlzLmNoYXJQb3NpdGlvbkluTGluZT1hLmdldENoYXJQb3NpdGlvbkluTGluZSgpLHRoaXMuY2hhbm5lbD1hLmdldENoYW5uZWwoKSxhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuJiYodGhpcy5zdGFydD1hLnN0YXJ0LHRoaXMuc3RvcD1hLnN0b3ApKTphcmd1bWVudHMubGVuZ3RoPT0yPyh0aGlzLnR5cGU9YXJndW1lbnRzWzBdLHRoaXMudGV4dD1hcmd1bWVudHNbMV0sdGhpcy5jaGFubmVsPTApOmFyZ3VtZW50cy5sZW5ndGg9PTUmJih0aGlzLmlucHV0PWFyZ3VtZW50c1swXSx0aGlzLnR5cGU9YXJndW1lbnRzWzFdLHRoaXMuY2hhbm5lbD1hcmd1bWVudHNbMl0sdGhpcy5zdGFydD1hcmd1bWVudHNbM10sdGhpcy5zdG9wPWFyZ3VtZW50c1s0XSl9LGUuYW50bHIucnVudGltZS5Db21tb25Ub2tlbi5wcm90b3R5cGU9e2dldFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlfSxzZXRMaW5lOmZ1bmN0aW9uKGEpe3RoaXMubGluZT1hfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuYW50bHIubGFuZy5pc1N0cmluZyh0aGlzLnRleHQpP3RoaXMudGV4dDp0aGlzLmlucHV0Pyh0aGlzLnRleHQ9dGhpcy5pbnB1dC5zdWJzdHJpbmcodGhpcy5zdGFydCx0aGlzLnN0b3ApLHRoaXMudGV4dCk6bnVsbH0sc2V0VGV4dDpmdW5jdGlvbihhKXt0aGlzLnRleHQ9YX0sZ2V0TGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxpbmV9LGdldENoYXJQb3NpdGlvbkluTGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJQb3NpdGlvbkluTGluZX0sc2V0Q2hhclBvc2l0aW9uSW5MaW5lOmZ1bmN0aW9uKGEpe3RoaXMuY2hhclBvc2l0aW9uSW5MaW5lPWF9LGdldENoYW5uZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFubmVsfSxzZXRDaGFubmVsOmZ1bmN0aW9uKGEpe3RoaXMuY2hhbm5lbD1hfSxzZXRUeXBlOmZ1bmN0aW9uKGEpe3RoaXMudHlwZT1hfSxnZXRTdGFydEluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnR9LHNldFN0YXJ0SW5kZXg6ZnVuY3Rpb24oYSl7dGhpcy5zdGFydD1hfSxnZXRTdG9wSW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wfSxzZXRTdG9wSW5kZXg6ZnVuY3Rpb24oYSl7dGhpcy5zdG9wPWF9LGdldFRva2VuSW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRleH0sc2V0VG9rZW5JbmRleDpmdW5jdGlvbihhKXt0aGlzLmluZGV4PWF9LGdldElucHV0U3RyZWFtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXR9LHNldElucHV0U3RyZWFtOmZ1bmN0aW9uKGEpe3RoaXMuaW5wdXQ9YX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgYT0iIjt0aGlzLmNoYW5uZWw+MCYmKGE9IixjaGFubmVsPSIrdGhpcy5jaGFubmVsKTt2YXIgYj10aGlzLmdldFRleHQoKTtyZXR1cm4gZS5hbnRsci5sYW5nLmlzTnVsbChiKT9iPSI8bm8gdGV4dD4iOihiPWIucmVwbGFjZSgvXG4vZywiXFxcXG4iKSxiPWIucmVwbGFjZSgvXHIvZywiXFxcXHIiKSxiPWIucmVwbGFjZSgvXHQvZywiXFxcXHQiKSksIltAIit0aGlzLmdldFRva2VuSW5kZXgoKSsiLCIrdGhpcy5zdGFydCsiOiIrdGhpcy5zdG9wKyI9JyIrYisiJyw8Iit0aGlzLnR5cGUrIj4iK2ErIiwiK3RoaXMubGluZSsiOiIrdGhpcy5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKSsiXSJ9fSxlLmFudGxyLnJ1bnRpbWUuVG9rZW49ZnVuY3Rpb24oKXt9LGUuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGUuYW50bHIucnVudGltZS5Ub2tlbix7RU9SX1RPS0VOX1RZUEU6MSxET1dOOjIsVVA6MyxNSU5fVE9LRU5fVFlQRTo0LEVPRjplLmFudGxyLnJ1bnRpbWUuQ2hhclN0cmVhbS5FT0YsRU9GX1RPS0VOOm5ldyBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4oZS5hbnRsci5ydW50aW1lLkNoYXJTdHJlYW0uRU9GKSxJTlZBTElEX1RPS0VOX1RZUEU6MCxJTlZBTElEX1RPS0VOOm5ldyBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4oMCksU0tJUF9UT0tFTjpuZXcgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKDApLERFRkFVTFRfQ0hBTk5FTDowLEhJRERFTl9DSEFOTkVMOjk5fSksZS5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QoZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuLGUuYW50bHIucnVudGltZS5Ub2tlbiksZS5hbnRsci5ydW50aW1lLnRyZWU9e30sZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUNhcmRpbmFsaXR5RXhjZXB0aW9uPWZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudERlc2NyaXB0aW9uPWF9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUNhcmRpbmFsaXR5RXhjZXB0aW9uLEVycm9yLHtnZXRNZXNzYWdlOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYW50bHIubGFuZy5pc1N0cmluZyh0aGlzLmVsZW1lbnREZXNjcmlwdGlvbik/dGhpcy5lbGVtZW50RGVzY3JpcHRpb246bnVsbH0sbmFtZTpmdW5jdGlvbigpe3JldHVybiJvcmcuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVDYXJkaW5hbGl0eUV4Y2VwdGlvbiJ9fSksZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUVtcHR5U3RyZWFtRXhjZXB0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPWUuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVFbXB0eVN0cmVhbUV4Y2VwdGlvbi5zdXBlcmNsYXNzO2IuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpfSxlLmFudGxyLmxhbmcuZXh0ZW5kKGUuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVFbXB0eVN0cmVhbUV4Y2VwdGlvbixlLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlQ2FyZGluYWxpdHlFeGNlcHRpb24se25hbWU6ZnVuY3Rpb24oKXtyZXR1cm4ib3JnLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlRW1wdHlTdHJlYW1FeGNlcHRpb24ifX0pLGUuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVFYXJseUV4aXRFeGNlcHRpb249ZnVuY3Rpb24oYSl7dmFyIGI9ZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUVhcmx5RXhpdEV4Y2VwdGlvbi5zdXBlcmNsYXNzO2UuYW50bHIubGFuZy5pc1VuZGVmaW5lZChhKSYmKGE9bnVsbCksYi5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSl9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUVhcmx5RXhpdEV4Y2VwdGlvbixlLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlQ2FyZGluYWxpdHlFeGNlcHRpb24se25hbWU6ZnVuY3Rpb24oKXtyZXR1cm4ib3JnLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlRWFybHlFeGl0RXhjZXB0aW9uIn19KSxlLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRyZWVOb2RlRXhjZXB0aW9uPWZ1bmN0aW9uKGEsYil7YSYmYiYmKGUuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVHJlZU5vZGVFeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYiksdGhpcy5leHBlY3Rpbmc9YSl9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUcmVlTm9kZUV4Y2VwdGlvbixlLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24se3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk1pc21hdGNoZWRUcmVlTm9kZUV4Y2VwdGlvbigiK3RoaXMuZ2V0VW5leHBlY3RlZFR5cGUoKSsiIT0iK3RoaXMuZXhwZWN0aW5nKyIpIn0sbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRyZWVOb2RlRXhjZXB0aW9uIn0pLGUuYW50bHIucnVudGltZS50cmVlLkJhc2VUcmVlPWZ1bmN0aW9uKCl7fSxlLmFudGxyLnJ1bnRpbWUudHJlZS5CYXNlVHJlZS5wcm90b3R5cGU9e2dldENoaWxkOmZ1bmN0aW9uKGEpe3JldHVybiF0aGlzLmNoaWxkcmVufHxhPj10aGlzLmNoaWxkcmVuLmxlbmd0aD9udWxsOnRoaXMuY2hpbGRyZW5bYV19LGdldENoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW59LGdldEZpcnN0Q2hpbGRXaXRoVHlwZTpmdW5jdGlvbihhKXt2YXIgYixjO2ZvcihiPTA7dGhpcy5jaGlsZHJlbiYmYjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtiKyspe2M9dGhpcy5jaGlsZHJlbltiXTtpZihjLmdldFR5cGUoKT09PWEpcmV0dXJuIGN9cmV0dXJuIG51bGx9LGdldENoaWxkQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZHJlbj90aGlzLmNoaWxkcmVuLmxlbmd0aDowfSxhZGRDaGlsZDpmdW5jdGlvbihhKXtpZighZS5hbnRsci5sYW5nLmlzVmFsdWUoYSkpcmV0dXJuO3ZhciBiPWEsYyxkLGY7aWYoYi5pc05pbCgpKXtpZih0aGlzLmNoaWxkcmVuJiZ0aGlzLmNoaWxkcmVuPT1iLmNoaWxkcmVuKXRocm93IG5ldyBFcnJvcigiYXR0ZW1wdCB0byBhZGQgY2hpbGQgbGlzdCB0byBpdHNlbGYiKTtpZihiLmNoaWxkcmVuKWlmKHRoaXMuY2hpbGRyZW4pe2M9Yi5jaGlsZHJlbi5sZW5ndGg7Zm9yKGQ9MDtkPGM7ZCsrKWY9Yi5jaGlsZHJlbltkXSx0aGlzLmNoaWxkcmVuLnB1c2goZiksZi5zZXRQYXJlbnQodGhpcyksZi5zZXRDaGlsZEluZGV4KHRoaXMuY2hpbGRyZW4ubGVuZ3RoLTEpfWVsc2UgdGhpcy5jaGlsZHJlbj1iLmNoaWxkcmVuLHRoaXMuZnJlc2hlblBhcmVudEFuZENoaWxkSW5kZXhlcygpfWVsc2UgdGhpcy5jaGlsZHJlbnx8KHRoaXMuY2hpbGRyZW49dGhpcy5jcmVhdGVDaGlsZHJlbkxpc3QoKSksdGhpcy5jaGlsZHJlbi5wdXNoKGEpLGIuc2V0UGFyZW50KHRoaXMpLGIuc2V0Q2hpbGRJbmRleCh0aGlzLmNoaWxkcmVuLmxlbmd0aC0xKX0sYWRkQ2hpbGRyZW46ZnVuY3Rpb24oYSl7dmFyIGIsYztmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWM9YVtiXSx0aGlzLmFkZENoaWxkKGMpfSxzZXRDaGlsZDpmdW5jdGlvbihhLGIpe2lmKCFiKXJldHVybjtpZihiLmlzTmlsKCkpdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBzZXQgc2luZ2xlIGNoaWxkIHRvIGEgbGlzdCIpO3RoaXMuY2hpbGRyZW58fCh0aGlzLmNoaWxkcmVuPXRoaXMuY3JlYXRlQ2hpbGRyZW5MaXN0KCkpLHRoaXMuY2hpbGRyZW5bYV09YixiLnNldFBhcmVudCh0aGlzKSxiLnNldENoaWxkSW5kZXgoYSl9LGRlbGV0ZUNoaWxkOmZ1bmN0aW9uKGEpe2lmKCF0aGlzLmNoaWxkcmVuKXJldHVybiBudWxsO2lmKGE8MHx8YT49dGhpcy5jaGlsZHJlbi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbmRleCBvdXQgb2YgYm91bmRzLiIpO3ZhciBiPXRoaXMuY2hpbGRyZW4uc3BsaWNlKGEsMSlbMF07cmV0dXJuIHRoaXMuZnJlc2hlblBhcmVudEFuZENoaWxkSW5kZXhlcyhhKSxifSxyZXBsYWNlQ2hpbGRyZW46ZnVuY3Rpb24oYSxiLGMpe2lmKCF0aGlzLmNoaWxkcmVuKXRocm93IG5ldyBFcnJvcigiaW5kZXhlcyBpbnZhbGlkOyBubyBjaGlsZHJlbiBpbiBsaXN0Iik7dmFyIGQ9Yi1hKzEsZSxmPWMsZz1udWxsO2YuaXNOaWwoKT9nPWYuY2hpbGRyZW46KGc9W10sZy5wdXNoKGYpKSxlPWcubGVuZ3RoO3ZhciBoPWcubGVuZ3RoLGk9ZC1lLGosayxsLG0sbixvLHA7aWYoaT09PTApe2o9MDtmb3Ioaz1hO2s8PWI7aysrKWw9Z1tqXSx0aGlzLmNoaWxkcmVuW2tdPWwsbC5zZXRQYXJlbnQodGhpcyksbC5zZXRDaGlsZEluZGV4KGspLGorK31lbHNlIGlmKGk+MCl7Zm9yKGo9MDtqPGg7aisrKXRoaXMuY2hpbGRyZW5bYStqXT1nW2pdO209YStoO2ZvcihuPW07bjw9YjtuKyspbz10aGlzLmNoaWxkcmVuLnNwbGljZShtLDEpWzBdO3RoaXMuZnJlc2hlblBhcmVudEFuZENoaWxkSW5kZXhlcyhhKX1lbHNle2ZvcihqPTA7ajxkO2orKyl0aGlzLmNoaWxkcmVuW2Eral09Z1tqXTtwPWUtZDtmb3Ioaj1kO2o8ZTtqKyspdGhpcy5jaGlsZHJlbi5zcGxpY2UoYStqLDAsZ1tqXSk7dGhpcy5mcmVzaGVuUGFyZW50QW5kQ2hpbGRJbmRleGVzKGEpfX0sY3JlYXRlQ2hpbGRyZW5MaXN0OmZ1bmN0aW9uKCl7cmV0dXJuW119LGlzTmlsOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGZyZXNoZW5QYXJlbnRBbmRDaGlsZEluZGV4ZXM6ZnVuY3Rpb24oYSl7ZS5hbnRsci5sYW5nLmlzTnVtYmVyKGEpfHwoYT0wKTt2YXIgYj10aGlzLmdldENoaWxkQ291bnQoKSxjLGQ7Zm9yKGM9YTtjPGI7YysrKWQ9dGhpcy5nZXRDaGlsZChjKSxkLnNldENoaWxkSW5kZXgoYyksZC5zZXRQYXJlbnQodGhpcyl9LHNhbml0eUNoZWNrUGFyZW50QW5kQ2hpbGRJbmRleGVzOmZ1bmN0aW9uKGEsYil7YXJndW1lbnRzLmxlbmd0aD09PTAmJihhPW51bGwsYj0tMSk7aWYoYSE9PXRoaXMuZ2V0UGFyZW50KCkpdGhyb3cgbmV3IEVycm9yKCJwYXJlbnRzIGRvbid0IG1hdGNoOyBleHBlY3RlZCAiK2ErIiBmb3VuZCAiK3RoaXMuZ2V0UGFyZW50KCkpO2lmKGIhPT10aGlzLmdldENoaWxkSW5kZXgoKSl0aHJvdyBuZXcgRXJyb3IoImNoaWxkIGluZGV4ZXMgZG9uJ3QgbWF0Y2g7IGV4cGVjdGVkICIrYisiIGZvdW5kICIrdGhpcy5nZXRDaGlsZEluZGV4KCkpO3ZhciBjPXRoaXMuZ2V0Q2hpbGRDb3VudCgpLGQsZTtmb3IoZD0wO2Q8YztkKyspZT10aGlzLmdldENoaWxkKGQpLGUuc2FuaXR5Q2hlY2tQYXJlbnRBbmRDaGlsZEluZGV4ZXModGhpcyxkKX0sZ2V0Q2hpbGRJbmRleDpmdW5jdGlvbigpe3JldHVybiAwfSxzZXRDaGlsZEluZGV4OmZ1bmN0aW9uKGEpe30sZ2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHNldFBhcmVudDpmdW5jdGlvbihhKXt9LGdldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdG9TdHJpbmdUcmVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY2hpbGRyZW58fHRoaXMuY2hpbGRyZW4ubGVuZ3RoPT09MClyZXR1cm4gdGhpcy50b1N0cmluZygpO3ZhciBhPSIiLGIsYzt0aGlzLmlzTmlsKCl8fChhKz0iKCIsYSs9dGhpcy50b1N0cmluZygpLGErPSIgIik7Zm9yKGI9MDt0aGlzLmNoaWxkcmVuJiZiPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2IrKyljPXRoaXMuY2hpbGRyZW5bYl0sYj4wJiYoYSs9IiAiKSxhKz1jLnRvU3RyaW5nVHJlZSgpO3JldHVybiB0aGlzLmlzTmlsKCl8fChhKz0iKSIpLGF9LGdldExpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0Q2hhclBvc2l0aW9uSW5MaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlPWZ1bmN0aW9uKGEpe3RoaXMuc3RhcnRJbmRleD0tMSx0aGlzLnN0b3BJbmRleD0tMSx0aGlzLmNoaWxkSW5kZXg9LTEsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnRva2VuPW51bGwsYSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWU/KGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSksdGhpcy50b2tlbj1hLnRva2VuLHRoaXMuc3RhcnRJbmRleD1hLnN0YXJ0SW5kZXgsdGhpcy5zdG9wSW5kZXg9YS5zdG9wSW5kZXgpOmEgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4mJih0aGlzLnRva2VuPWEpfSxlLmFudGxyLmxhbmcuZXh0ZW5kKGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUsZS5hbnRsci5ydW50aW1lLnRyZWUuQmFzZVRyZWUse2dldFRva2VuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW59LGR1cE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUodGhpcyl9LGlzTmlsOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudG9rZW59LGdldFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbj90aGlzLnRva2VuLmdldFR5cGUoKTplLmFudGxyLnJ1bnRpbWUuVG9rZW4uSU5WQUxJRF9UT0tFTl9UWVBFfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW4/dGhpcy50b2tlbi5nZXRUZXh0KCk6bnVsbH0sZ2V0TGluZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnRva2VufHx0aGlzLnRva2VuLmdldExpbmUoKT09PTA/dGhpcy5nZXRDaGlsZENvdW50KCk+MD90aGlzLmdldENoaWxkKDApLmdldExpbmUoKTowOnRoaXMudG9rZW4uZ2V0TGluZSgpfSxnZXRDaGFyUG9zaXRpb25JbkxpbmU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy50b2tlbnx8dGhpcy50b2tlbi5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKT09PS0xP3RoaXMuZ2V0Q2hpbGRDb3VudCgpPjA/dGhpcy5nZXRDaGlsZCgwKS5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKTowOnRoaXMudG9rZW4uZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCl9LGdldFRva2VuU3RhcnRJbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuP3RoaXMudG9rZW4uZ2V0VG9rZW5JbmRleCgpOnRoaXMuc3RhcnRJbmRleH0sc2V0VG9rZW5TdGFydEluZGV4OmZ1bmN0aW9uKGEpe3RoaXMuc3RhcnRJbmRleD1hfSxnZXRUb2tlblN0b3BJbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuP3RoaXMudG9rZW4uZ2V0VG9rZW5JbmRleCgpOnRoaXMuc3RvcEluZGV4fSxzZXRUb2tlblN0b3BJbmRleDpmdW5jdGlvbihhKXt0aGlzLnN0b3BJbmRleD1hfSxnZXRDaGlsZEluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRJbmRleH0sZ2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50fSxzZXRQYXJlbnQ6ZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnQ9YX0sc2V0Q2hpbGRJbmRleDpmdW5jdGlvbihhKXt0aGlzLmNoaWxkSW5kZXg9YX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc05pbCgpPyJuaWwiOnRoaXMuZ2V0VHlwZSgpPT09ZS5hbnRsci5ydW50aW1lLlRva2VuLklOVkFMSURfVE9LRU5fVFlQRT8iPGVycm9ybm9kZT4iOnRoaXMudG9rZW4/dGhpcy50b2tlbi5nZXRUZXh0KCk6bnVsbH19KSxlLmFudGxyLnJ1bnRpbWUudHJlZS5UcmVlPXtJTlZBTElEX05PREU6bmV3IGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUoZS5hbnRsci5ydW50aW1lLlRva2VuLklOVkFMSURfVE9LRU4pfSxlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25FcnJvck5vZGU9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWN8fGMuZ2V0VG9rZW5JbmRleCgpPGIuZ2V0VG9rZW5JbmRleCgpJiZjLmdldFR5cGUoKSE9ZS5hbnRsci5ydW50aW1lLlRva2VuLkVPRiljPWI7dGhpcy5pbnB1dD1hLHRoaXMuc3RhcnQ9Yix0aGlzLnN0b3A9Yyx0aGlzLnRyYXBwZWRFeGNlcHRpb249ZH0sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25FcnJvck5vZGUsZS5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZSx7aXNOaWw6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ2V0VHlwZTpmdW5jdGlvbigpe3JldHVybiBlLmFudGxyLnJ1bnRpbWUuVG9rZW4uSU5WQUxJRF9UT0tFTl9UWVBFfSxnZXRUZXh0OmZ1bmN0aW9uKCl7dmFyIGE9bnVsbDtpZih0aGlzLnN0YXJ0IGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKXt2YXIgYj10aGlzLnN0YXJ0LmdldFRva2VuSW5kZXgoKSxjPXRoaXMuc3RvcC5nZXRUb2tlbkluZGV4KCk7dGhpcy5zdG9wLmdldFR5cGUoKT09PWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0YmJihjPXRoaXMuaW5wdXQuc2l6ZSgpKSxhPXRoaXMuaW5wdXQudG9TdHJpbmcoYixjKX1lbHNlIHRoaXMuc3RhcnQgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlP2E9dGhpcy5pbnB1dC50b1N0cmluZyh0aGlzLnN0YXJ0LHRoaXMuc3RvcCk6YT0iPHVua25vd24+IjtyZXR1cm4gYX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFwcGVkRXhjZXB0aW9uIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc3NpbmdUb2tlbkV4Y2VwdGlvbj8iPG1pc3NpbmcgdHlwZTogIit0aGlzLnRyYXBwZWRFeGNlcHRpb24uZ2V0TWlzc2luZ1R5cGUoKSsiPiI6dGhpcy50cmFwcGVkRXhjZXB0aW9uIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLlVud2FudGVkVG9rZW5FeGNlcHRpb24/IjxleHRyYW5lb3VzOiAiK3RoaXMudHJhcHBlZEV4Y2VwdGlvbi5nZXRVbmV4cGVjdGVkVG9rZW4oKSsiLCByZXN5bmM9Iit0aGlzLmdldFRleHQoKSsiPiI6dGhpcy50cmFwcGVkRXhjZXB0aW9uIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbj8iPG1pc21hdGNoZWQgdG9rZW46ICIrdGhpcy50cmFwcGVkRXhjZXB0aW9uLnRva2VuKyIsIHJlc3luYz0iK3RoaXMuZ2V0VGV4dCgpKyI+Ijp0aGlzLnRyYXBwZWRFeGNlcHRpb24gaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24/Ijx1bmV4cGVjdGVkOiAiK3RoaXMudHJhcHBlZEV4Y2VwdGlvbi50b2tlbisiLCByZXN5bmM9Iit0aGlzLmdldFRleHQoKSsiPiI6IjxlcnJvcjogIit0aGlzLmdldFRleHQoKSsiPiJ9fSksZS5hbnRsci5ydW50aW1lLnRyZWUuQmFzZVRyZWVBZGFwdG9yPWZ1bmN0aW9uKCl7dGhpcy51bmlxdWVOb2RlSUQ9MX0sZS5hbnRsci5ydW50aW1lLnRyZWUuQmFzZVRyZWVBZGFwdG9yLnByb3RvdHlwZT17bmlsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3JlYXRlKG51bGwpfSxlcnJvck5vZGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGY9bmV3IGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vbkVycm9yTm9kZShhLGIsYyxkKTtyZXR1cm4gZn0saXNOaWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaXNOaWwoKX0sZHVwVHJlZTpmdW5jdGlvbihhLGIpe2FyZ3VtZW50cy5sZW5ndGg9PT0xJiYoYj1udWxsKTtpZighYSlyZXR1cm4gbnVsbDt2YXIgYz10aGlzLmR1cE5vZGUoYSk7dGhpcy5zZXRDaGlsZEluZGV4KGMsdGhpcy5nZXRDaGlsZEluZGV4KGEpKSx0aGlzLnNldFBhcmVudChjLGIpO3ZhciBkPXRoaXMuZ2V0Q2hpbGRDb3VudChhKSxlLGYsZztmb3IoZT0wO2U8ZDtlKyspZj10aGlzLmdldENoaWxkKGEsZSksZz10aGlzLmR1cFRyZWUoZixhKSx0aGlzLmFkZENoaWxkKGMsZyk7cmV0dXJuIGN9LGFkZENoaWxkOmZ1bmN0aW9uKGEsYil7YSYmZS5hbnRsci5sYW5nLmlzVmFsdWUoYikmJmEuYWRkQ2hpbGQoYil9LGJlY29tZVJvb3Q6ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VufHwhYSlhPXRoaXMuY3JlYXRlKGEpO3ZhciBjPWEsZD1iO2lmKCFiKXJldHVybiBhO2lmKGMuaXNOaWwoKSl7aWYoYy5nZXRDaGlsZENvdW50KCk+MSl0aHJvdyBuZXcgRXJyb3IoIm1vcmUgdGhhbiBvbmUgbm9kZSBhcyByb290IChUT0RPOiBtYWtlIGV4Y2VwdGlvbiBoaWVyYXJjaHkpIik7Yz1jLmdldENoaWxkKDApfXJldHVybiBjLmFkZENoaWxkKGQpLGN9LHJ1bGVQb3N0UHJvY2Vzc2luZzpmdW5jdGlvbihhKXt2YXIgYj1hO3JldHVybiBiJiZiLmlzTmlsKCkmJihiLmdldENoaWxkQ291bnQoKT09PTA/Yj1udWxsOmIuZ2V0Q2hpbGRDb3VudCgpPT09MSYmKGI9Yi5nZXRDaGlsZCgwKSxiLnNldFBhcmVudChudWxsKSxiLnNldENoaWxkSW5kZXgoLTEpKSksYn0sY3JlYXRlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZihhcmd1bWVudHMubGVuZ3RoPT09MilyZXR1cm4gZS5hbnRsci5sYW5nLmlzU3RyaW5nKGFyZ3VtZW50c1sxXSk/KGM9YXJndW1lbnRzWzFdLGI9dGhpcy5jcmVhdGVUb2tlbihhLGMpLGQ9dGhpcy5jcmVhdGUoYiksZCk6KGI9dGhpcy5jcmVhdGVUb2tlbihiKSxiLnNldFR5cGUoYSksZD10aGlzLmNyZWF0ZShiKSxkKTtpZihhcmd1bWVudHMubGVuZ3RoPT09MylyZXR1cm4gYz1hcmd1bWVudHNbMl0sYj10aGlzLmNyZWF0ZVRva2VuKGIpLGIuc2V0VHlwZShhKSxiLnNldFRleHQoYyksZD10aGlzLmNyZWF0ZShiKSxkfSxnZXRUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldFR5cGUoKSwwfSxzZXRUeXBlOmZ1bmN0aW9uKGEsYil7dGhyb3cgbmV3IEVycm9yKCJkb24ndCBrbm93IGVub3VnaCBhYm91dCBUcmVlIG5vZGUiKX0sZ2V0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRUZXh0KCl9LHNldFRleHQ6ZnVuY3Rpb24oYSxiKXt0aHJvdyBuZXcgRXJyb3IoImRvbid0IGtub3cgZW5vdWdoIGFib3V0IFRyZWUgbm9kZSIpfSxnZXRDaGlsZDpmdW5jdGlvbihhLGIpe3JldHVybiBhLmdldENoaWxkKGIpfSxzZXRDaGlsZDpmdW5jdGlvbihhLGIsYyl7YS5zZXRDaGlsZChiLGMpfSxkZWxldGVDaGlsZDpmdW5jdGlvbihhLGIpe3JldHVybiBhLmRlbGV0ZUNoaWxkKGIpfSxnZXRDaGlsZENvdW50OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldENoaWxkQ291bnQoKX0sZ2V0VW5pcXVlSUQ6ZnVuY3Rpb24oYSl7dGhpcy50cmVlVG9VbmlxdWVJRE1hcHx8KHRoaXMudHJlZVRvVW5pcXVlSURNYXA9e30pO3ZhciBiPXRoaXMudHJlZVRvVW5pcXVlSURNYXBbYV07aWYoZS5hbnRsci5sYW5nLmlzVmFsdWUoYikpcmV0dXJuIGI7dmFyIGM9dGhpcy51bmlxdWVOb2RlSUQ7cmV0dXJuIHRoaXMudHJlZVRvVW5pcXVlSURNYXBbYV09Yyx0aGlzLnVuaXF1ZU5vZGVJRCsrLGN9fSxlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlQWRhcHRvcj1mdW5jdGlvbigpe30sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlQWRhcHRvcixlLmFudGxyLnJ1bnRpbWUudHJlZS5CYXNlVHJlZUFkYXB0b3Ise2R1cE5vZGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGUuYW50bHIubGFuZy5pc1ZhbHVlKGEpP2EuZHVwTm9kZSgpOm51bGx9LGNyZWF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP2UuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWVBZGFwdG9yLnN1cGVyY2xhc3MuY3JlYXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuZXcgZS5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZShhKX0sY3JlYXRlVG9rZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0yP25ldyBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4oYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk6bmV3IGUuYW50bHIucnVudGltZS5Db21tb25Ub2tlbihhcmd1bWVudHNbMF0pfSxzZXRUb2tlbkJvdW5kYXJpZXM6ZnVuY3Rpb24oYSxiLGMpe2lmKCFlLmFudGxyLmxhbmcuaXNWYWx1ZShhKSlyZXR1cm47dmFyIGQ9MCxmPTA7ZS5hbnRsci5sYW5nLmlzVmFsdWUoYikmJihiLmdldFRva2VuSW5kZXg/ZD1iLmdldFRva2VuSW5kZXgoKTpiLmdldFN0YXJ0SW5kZXg/ZD1iLmdldFN0YXJ0SW5kZXgoKTpkPWIuZ2V0VG9rZW5TdGFydEluZGV4KCkpLGUuYW50bHIubGFuZy5pc1ZhbHVlKGMpJiYoZi5nZXRUb2tlbkluZGV4P2Y9Yy5nZXRUb2tlbkluZGV4KCk6Yy5nZXRTdG9wSW5kZXg/Zj1jLmdldFN0b3BJbmRleCgpOmY9Yy5nZXRUb2tlblN0b3BJbmRleCgpKSxhLnNldFRva2VuU3RhcnRJbmRleChkKSxhLnNldFRva2VuU3RvcEluZGV4KGYpfSxnZXRUb2tlblN0YXJ0SW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5nZXRUb2tlblN0YXJ0SW5kZXgoKTotMX0sZ2V0VG9rZW5TdG9wSW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5nZXRUb2tlblN0b3BJbmRleCgpOi0xfSxnZXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhP2EuZ2V0VGV4dCgpOm51bGx9LGdldFR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5nZXRUeXBlKCk6ZS5hbnRsci5ydW50aW1lLlRva2VuLklOVkFMSURfVE9LRU5fVFlQRX0sZ2V0VG9rZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlP2EuZ2V0VG9rZW4oKTpudWxsfSxnZXRDaGlsZDpmdW5jdGlvbihhLGIpe3JldHVybiBhP2EuZ2V0Q2hpbGQoYik6bnVsbH0sZ2V0Q2hpbGRDb3VudDpmdW5jdGlvbihhKXtyZXR1cm4gYT9hLmdldENoaWxkQ291bnQoKTowfSxnZXRQYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0UGFyZW50KCl9LHNldFBhcmVudDpmdW5jdGlvbihhLGIpe2Euc2V0UGFyZW50KGIpfSxnZXRDaGlsZEluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldENoaWxkSW5kZXgoKX0sc2V0Q2hpbGRJbmRleDpmdW5jdGlvbihhLGIpe2Euc2V0Q2hpbGRJbmRleChiKX0scmVwbGFjZUNoaWxkcmVuOmZ1bmN0aW9uKGEsYixjLGQpe2EmJmEucmVwbGFjZUNoaWxkcmVuKGIsYyxkKX19KSxlLmFudGxyLnJ1bnRpbWUuQU5UTFJTdHJpbmdTdHJlYW09ZnVuY3Rpb24oYSl7dGhpcy5wPTAsdGhpcy5saW5lPTEsdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9MCx0aGlzLm1hcmtEZXB0aD0wLHRoaXMubWFya2Vycz1udWxsLHRoaXMubGFzdE1hcmtlcj1udWxsLHRoaXMuZGF0YT1hLHRoaXMubj1hLmxlbmd0aH0sZS5hbnRsci5ydW50aW1lLkFOVExSU3RyaW5nU3RyZWFtLnByb3RvdHlwZT17cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnA9MCx0aGlzLmxpbmU9MSx0aGlzLmNoYXJQb3NpdGlvbkluTGluZT0wLHRoaXMubWFya0RlcHRoPTB9LGNvbnN1bWU6ZnVuY3Rpb24oKXt0aGlzLnA8dGhpcy5uJiYodGhpcy5jaGFyUG9zaXRpb25JbkxpbmUrKyx0aGlzLmRhdGEuY2hhckF0KHRoaXMucCk9PT0iXG4iJiYodGhpcy5saW5lKyssdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9MCksdGhpcy5wKyspfSxMQTpmdW5jdGlvbihhKXthPDAmJmErKzt2YXIgYj10aGlzLnArYS0xO3JldHVybiBiPj10aGlzLm58fGI8MD9lLmFudGxyLnJ1bnRpbWUuQ2hhclN0cmVhbS5FT0Y6dGhpcy5kYXRhLmNoYXJBdChiKX0saW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wfSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubn0sbWFyazpmdW5jdGlvbigpe3RoaXMubWFya2Vyc3x8KHRoaXMubWFya2Vycz1bXSx0aGlzLm1hcmtlcnMucHVzaChudWxsKSksdGhpcy5tYXJrRGVwdGgrKzt2YXIgYT1udWxsO3JldHVybiB0aGlzLm1hcmtEZXB0aD49dGhpcy5tYXJrZXJzLmxlbmd0aD8oYT17fSx0aGlzLm1hcmtlcnMucHVzaChhKSk6YT10aGlzLm1hcmtlcnNbdGhpcy5tYXJrRGVwdGhdLGEucD10aGlzLnAsYS5saW5lPXRoaXMubGluZSxhLmNoYXJQb3NpdGlvbkluTGluZT10aGlzLmNoYXJQb3NpdGlvbkluTGluZSx0aGlzLmxhc3RNYXJrZXI9dGhpcy5tYXJrRGVwdGgsdGhpcy5tYXJrRGVwdGh9LHJld2luZDpmdW5jdGlvbihhKXtlLmFudGxyLmxhbmcuaXNOdW1iZXIoYSl8fChhPXRoaXMubGFzdE1hcmtlcik7dmFyIGI9dGhpcy5tYXJrZXJzW2FdO3RoaXMuc2VlayhiLnApLHRoaXMubGluZT1iLmxpbmUsdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9Yi5jaGFyUG9zaXRpb25JbkxpbmUsdGhpcy5yZWxlYXNlKGEpfSxyZWxlYXNlOmZ1bmN0aW9uKGEpe3RoaXMubWFya0RlcHRoPWEsdGhpcy5tYXJrRGVwdGgtLX0sc2VlazpmdW5jdGlvbihhKXtpZihhPD10aGlzLnApe3RoaXMucD1hO3JldHVybn13aGlsZSh0aGlzLnA8YSl0aGlzLmNvbnN1bWUoKX0sc3Vic3RyaW5nOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZGF0YS5zdWJzdHIoYSxiLWErMSl9LGdldExpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5lfSxnZXRDaGFyUG9zaXRpb25JbkxpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25JbkxpbmV9LHNldExpbmU6ZnVuY3Rpb24oYSl7dGhpcy5saW5lPWF9LHNldENoYXJQb3NpdGlvbkluTGluZTpmdW5jdGlvbihhKXt0aGlzLmNoYXJQb3NpdGlvbkluTGluZT1hfSxnZXRTb3VyY2VOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSxlLmFudGxyLnJ1bnRpbWUuQU5UTFJTdHJpbmdTdHJlYW0uTFQ9ZS5hbnRsci5ydW50aW1lLkFOVExSU3RyaW5nU3RyZWFtLkxBLGUuYW50bHIucnVudGltZS5Db21tb25Ub2tlblN0cmVhbT1mdW5jdGlvbihhLGIpe3RoaXMucD0tMSx0aGlzLmNoYW5uZWw9ZS5hbnRsci5ydW50aW1lLlRva2VuLkRFRkFVTFRfQ0hBTk5FTCx0aGlzLnZfZGlzY2FyZE9mZkNoYW5uZWxUb2tlbnM9ITEsdGhpcy50b2tlbnM9W10sYXJndW1lbnRzLmxlbmd0aD49Mj90aGlzLmNoYW5uZWw9Yjphcmd1bWVudHMubGVuZ3RoPT09MSYmKHRoaXMudG9rZW5Tb3VyY2U9YSl9LGUuYW50bHIucnVudGltZS5Db21tb25Ub2tlblN0cmVhbS5wcm90b3R5cGU9e3NldFRva2VuU291cmNlOmZ1bmN0aW9uKGEpe3RoaXMudG9rZW5Tb3VyY2U9YSx0aGlzLnRva2Vucz1bXSx0aGlzLnA9LTEsdGhpcy5jaGFubmVsPWUuYW50bHIucnVudGltZS5Ub2tlbi5ERUZBVUxUX0NIQU5ORUx9LGZpbGxCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgYT0wLGI9dGhpcy50b2tlblNvdXJjZS5uZXh0VG9rZW4oKSxjLGQ7d2hpbGUoZS5hbnRsci5sYW5nLmlzVmFsdWUoYikmJmIuZ2V0VHlwZSgpIT1lLmFudGxyLnJ1bnRpbWUuQ2hhclN0cmVhbS5FT0YpYz0hMSx0aGlzLmNoYW5uZWxPdmVycmlkZU1hcCYmKGQ9dGhpcy5jaGFubmVsT3ZlcnJpZGVNYXBbYi5nZXRUeXBlKCldLGUuYW50bHIubGFuZy5pc1ZhbHVlKGQpJiZiLnNldENoYW5uZWwoZCkpLHRoaXMuZGlzY2FyZFNldCYmdGhpcy5kaXNjYXJkU2V0W2IuZ2V0VHlwZSgpXT9jPSEwOnRoaXMudl9kaXNjYXJkT2ZmQ2hhbm5lbFRva2VucyYmYi5nZXRDaGFubmVsKCkhPXRoaXMuY2hhbm5lbCYmKGM9ITApLGN8fChiLnNldFRva2VuSW5kZXgoYSksdGhpcy50b2tlbnMucHVzaChiKSxhKyspLGI9dGhpcy50b2tlblNvdXJjZS5uZXh0VG9rZW4oKTt0aGlzLnA9MCx0aGlzLnA9dGhpcy5za2lwT2ZmVG9rZW5DaGFubmVscyh0aGlzLnApfSxjb25zdW1lOmZ1bmN0aW9uKCl7dGhpcy5wPHRoaXMudG9rZW5zLmxlbmd0aCYmKHRoaXMucCsrLHRoaXMucD10aGlzLnNraXBPZmZUb2tlbkNoYW5uZWxzKHRoaXMucCkpfSxza2lwT2ZmVG9rZW5DaGFubmVsczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnRva2Vucy5sZW5ndGg7d2hpbGUoYTxiJiZ0aGlzLnRva2Vuc1thXS5nZXRDaGFubmVsKCkhPXRoaXMuY2hhbm5lbClhKys7cmV0dXJuIGF9LHNraXBPZmZUb2tlbkNoYW5uZWxzUmV2ZXJzZTpmdW5jdGlvbihhKXt3aGlsZShhPj0wJiZ0aGlzLnRva2Vuc1thXS5nZXRDaGFubmVsKCkhPXRoaXMuY2hhbm5lbClhLS07cmV0dXJuIGF9LHNldFRva2VuVHlwZUNoYW5uZWw6ZnVuY3Rpb24oYSxiKXt0aGlzLmNoYW5uZWxPdmVycmlkZU1hcHx8KHRoaXMuY2hhbm5lbE92ZXJyaWRlTWFwPXt9KSx0aGlzLmNoYW5uZWxPdmVycmlkZU1hcFthXT1ifSxkaXNjYXJkVG9rZW5UeXBlOmZ1bmN0aW9uKGEpe3RoaXMuZGlzY2FyZFNldHx8KHRoaXMuZGlzY2FyZFNldD17fSksdGhpcy5kaXNjYXJkU2V0W2FdPSEwfSxkaXNjYXJkT2ZmQ2hhbm5lbFRva2VuczpmdW5jdGlvbihhKXt0aGlzLnZfZGlzY2FyZE9mZkNoYW5uZWxUb2tlbnM9YX0sZ2V0VG9rZW5zOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCk7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApcmV0dXJuIHRoaXMudG9rZW5zO2UuYW50bHIubGFuZy5pc0FycmF5KGMpP2M9bmV3IGUuYW50bHIucnVudGltZS5CaXRTZXQoYyk6ZS5hbnRsci5sYW5nLmlzTnVtYmVyKGMpJiYoYz1lLmFudGxyLnJ1bnRpbWUuQml0U2V0Lm9mKGMpKSxiPj10aGlzLnRva2Vucy5sZW5ndGgmJihiPXRoaXMudG9rZW5zLmxlbmd0aC0xKSxhPDAmJihhPTApO2lmKGE+YilyZXR1cm4gbnVsbDt2YXIgZD1bXSxmLGc7Zm9yKGY9YTtmPD1iO2YrKylnPXRoaXMudG9rZW5zW2ZdLCghdGhpcy50eXBlc3x8Yy5tZW1iZXIoZy5nZXRUeXBlKCkpKSYmZC5wdXNoKGcpO3JldHVybiBkLmxlbmd0aD09PTAmJihkPW51bGwpLGR9LExUOmZ1bmN0aW9uKGEpe3RoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKTtpZihhPT09MClyZXR1cm4gbnVsbDtpZihhPDApcmV0dXJuIHRoaXMuTEIoLTEqYSk7aWYodGhpcy5wK2EtMT49dGhpcy50b2tlbnMubGVuZ3RoKXJldHVybiBlLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GX1RPS0VOO3ZhciBiPXRoaXMucCxjPTE7d2hpbGUoYzxhKWI9dGhpcy5za2lwT2ZmVG9rZW5DaGFubmVscyhiKzEpLGMrKztyZXR1cm4gYj49dGhpcy50b2tlbnMubGVuZ3RoP2UuYW50bHIucnVudGltZS5Ub2tlbi5FT0ZfVE9LRU46dGhpcy50b2tlbnNbYl19LExCOmZ1bmN0aW9uKGEpe3RoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKTtpZihhPT09MClyZXR1cm4gbnVsbDtpZih0aGlzLnAtYTwwKXJldHVybiBudWxsO3ZhciBiPXRoaXMucCxjPTE7d2hpbGUoYzw9YSliPXRoaXMuc2tpcE9mZlRva2VuQ2hhbm5lbHNSZXZlcnNlKGItMSksYysrO3JldHVybiBiPDA/bnVsbDp0aGlzLnRva2Vuc1tiXX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRva2Vuc1thXX0sTEE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuTFQoYSkuZ2V0VHlwZSgpfSxtYXJrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSx0aGlzLmxhc3RNYXJrZXI9dGhpcy5pbmRleCgpLHRoaXMubGFzdE1hcmtlcn0scmVsZWFzZTpmdW5jdGlvbihhKXt9LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbnMubGVuZ3RofSxpbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB9LHJld2luZDpmdW5jdGlvbihhKXtlLmFudGxyLmxhbmcuaXNOdW1iZXIoYSl8fChhPXRoaXMubGFzdE1hcmtlciksdGhpcy5zZWVrKGEpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucD0tMSx0aGlzLmxhc3RNYXJrZXI9MH0sc2VlazpmdW5jdGlvbihhKXt0aGlzLnA9YX0sZ2V0VG9rZW5Tb3VyY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlblNvdXJjZX0sZ2V0U291cmNlTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRva2VuU291cmNlKCkuZ2V0U291cmNlTmFtZSgpfSx0b1N0cmluZzpmdW5jdGlvbihhLGIpe2FyZ3VtZW50cy5sZW5ndGg9PT0wJiYodGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpLGE9MCxiPXRoaXMudG9rZW5zLmxlbmd0aC0xKTtpZighZS5hbnRsci5sYW5nLmlzTnVtYmVyKGEpJiYhZS5hbnRsci5sYW5nLmlzTnVtYmVyKGIpKXtpZighZS5hbnRsci5sYW5nLmlzVmFsdWUoYSl8fCFlLmFudGxyLmxhbmcuaXNWYWx1ZShiKSlyZXR1cm4gbnVsbDthPWEuZ2V0VG9rZW5JbmRleCgpLGI9Yi5nZXRUb2tlbkluZGV4KCl9dmFyIGM9IiIsZDtpZihhPDB8fGI8MClyZXR1cm4gbnVsbDt0aGlzLnA9PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSxiPj10aGlzLnRva2Vucy5sZW5ndGgmJihiPXRoaXMudG9rZW5zLmxlbmd0aC0xKTtmb3IoZD1hO2Q8PWI7ZCsrKXQ9dGhpcy50b2tlbnNbZF0sYys9dGhpcy50b2tlbnNbZF0uZ2V0VGV4dCgpO3JldHVybiBjfX0sZS5hbnRsci5ydW50aW1lLlRva2VuUmV3cml0ZVN0cmVhbT1mdW5jdGlvbigpe3ZhciBhPWUuYW50bHIucnVudGltZS5Ub2tlblJld3JpdGVTdHJlYW0uc3VwZXJjbGFzczt0aGlzLnByb2dyYW1zPW51bGwsdGhpcy5sYXN0UmV3cml0ZVRva2VuSW5kZXhlcz1udWxsLGFyZ3VtZW50cy5sZW5ndGg9PT0wP3RoaXMuaW5pdCgpOihhLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmluaXQoKSl9LGZ1bmN0aW9uKCl7dmFyIGE9ZS5hbnRsci5ydW50aW1lLlRva2VuUmV3cml0ZVN0cmVhbTtlLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChhLHtERUZBVUxUX1BST0dSQU1fTkFNRToiZGVmYXVsdCIsUFJPR1JBTV9JTklUX1NJWkU6MTAwLE1JTl9UT0tFTl9JTkRFWDowfSksYS5SZXdyaXRlT3BlcmF0aW9uPWZ1bmN0aW9uKGEsYil7dGhpcy5pbmRleD1hLHRoaXMudGV4dD1ifSxhLlJld3JpdGVPcGVyYXRpb24ucHJvdG90eXBlPXtleGVjdXRlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmluZGV4fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9fSxhLkluc2VydEJlZm9yZU9wPWZ1bmN0aW9uKGIsYyl7YS5JbnNlcnRCZWZvcmVPcC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxiLGMpfSxlLmFudGxyLmxhbmcuZXh0ZW5kKGEuSW5zZXJ0QmVmb3JlT3AsYS5SZXdyaXRlT3BlcmF0aW9uLHtleGVjdXRlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnB1c2godGhpcy50ZXh0KSx0aGlzLmluZGV4fX0pLGEuUmVwbGFjZU9wPWZ1bmN0aW9uKGIsYyxkKXthLlJlcGxhY2VPcC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxiLGQpLHRoaXMubGFzdEluZGV4PWN9LGUuYW50bHIubGFuZy5leHRlbmQoYS5SZXBsYWNlT3AsYS5SZXdyaXRlT3BlcmF0aW9uLHtleGVjdXRlOmZ1bmN0aW9uKGEpe3JldHVybiBlLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnRleHQpJiZhLnB1c2godGhpcy50ZXh0KSx0aGlzLmxhc3RJbmRleCsxfX0pLGEuRGVsZXRlT3A9ZnVuY3Rpb24oYixjKXthLkRlbGV0ZU9wLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGIsYyl9LGUuYW50bHIubGFuZy5leHRlbmQoYS5EZWxldGVPcCxhLlJlcGxhY2VPcCksZS5hbnRsci5sYW5nLmV4dGVuZChhLGUuYW50bHIucnVudGltZS5Db21tb25Ub2tlblN0cmVhbSx7aW5pdDpmdW5jdGlvbigpe3RoaXMucHJvZ3JhbXM9e30sdGhpcy5wcm9ncmFtc1thLkRFRkFVTFRfUFJPR1JBTV9OQU1FXT1bXSx0aGlzLmxhc3RSZXdyaXRlVG9rZW5JbmRleGVzPXt9fSxyb2xsYmFjazpmdW5jdGlvbigpe3ZhciBiLGM7YXJndW1lbnRzLmxlbmd0aD09PTE/KGI9YS5ERUZBVUxUX1BST0dSQU1fTkFNRSxjPWFyZ3VtZW50c1swXSk6YXJndW1lbnRzLmxlbmd0aD09PTImJihiPWFyZ3VtZW50c1swXSxjPWFyZ3VtZW50c1sxXSk7dmFyIGQ9dGhpcy5wcm9ncmFtc1tiXTtkJiYocHJvZ3JhbXNbYl09ZC5zbGljZShhLk1JTl9UT0tFTl9JTkRFWCx0aGlzLmluc3RydWN0aW9uSW5kZXgpKX0sZGVsZXRlUHJvZ3JhbTpmdW5jdGlvbihiKXtiPWJ8fGEuREVGQVVMVF9QUk9HUkFNX05BTUUsdGhpcy5yb2xsYmFjayhiLGEuTUlOX1RPS0VOX0lOREVYKX0sYWRkVG9Tb3J0ZWRSZXdyaXRlTGlzdDpmdW5jdGlvbigpe3ZhciBiLGM7YXJndW1lbnRzLmxlbmd0aD09PTE/KGI9YS5ERUZBVUxUX1BST0dSQU1fTkFNRSxjPWFyZ3VtZW50c1swXSk6YXJndW1lbnRzLmxlbmd0aD09PTImJihiPWFyZ3VtZW50c1swXSxjPWFyZ3VtZW50c1sxXSk7dmFyIGQ9dGhpcy5nZXRQcm9ncmFtKGIpLGUsZixnLGgsaSxqO2ZvcihmPTAsZT1kLmxlbmd0aDtmPGU7ZisrKXtnPWRbZl07aWYoZy5pbmRleD09PWMuaW5kZXgpe2lmKGMgaW5zdGFuY2VvZiBhLlJlcGxhY2VPcCl7aD0hMTtmb3Ioaj1mO2o8ZC5sZW5ndGg7aisrKXtpPWRbZl07aWYoaS5pbmRleCE9PWMuaW5kZXgpYnJlYWs7aWYoaSBpbnN0YW5jZW9mIGEuUmVwbGFjZU9wKXtkW2ZdPWMsaD0hMDticmVha319aHx8ZC5zcGxpY2UoaiwwLGMpfWVsc2UgZC5zcGxpY2UoZiwwLGMpO2JyZWFrfWlmKGcuaW5kZXg+Yy5pbmRleCl7ZC5zcGxpY2UoZiwwLGMpO2JyZWFrfX1mPT09ZSYmZC5wdXNoKGMpfSxpbnNlcnRBZnRlcjpmdW5jdGlvbigpe3ZhciBiLGMsZDthcmd1bWVudHMubGVuZ3RoPT09Mj8oYz1hLkRFRkFVTFRfUFJPR1JBTV9OQU1FLGI9YXJndW1lbnRzWzBdLGQ9YXJndW1lbnRzWzFdKTphcmd1bWVudHMubGVuZ3RoPT09MyYmKGM9YXJndW1lbnRzWzBdLGI9YXJndW1lbnRzWzFdLGQ9YXJndW1lbnRzWzJdKSxiIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuJiYoYj1iLmluZGV4KSx0aGlzLmluc2VydEJlZm9yZShjLGIrMSxkKX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKCl7dmFyIGIsYyxkO2FyZ3VtZW50cy5sZW5ndGg9PT0yPyhjPWEuREVGQVVMVF9QUk9HUkFNX05BTUUsYj1hcmd1bWVudHNbMF0sZD1hcmd1bWVudHNbMV0pOmFyZ3VtZW50cy5sZW5ndGg9PT0zJiYoYz1hcmd1bWVudHNbMF0sYj1hcmd1bWVudHNbMV0sZD1hcmd1bWVudHNbMl0pLGIgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4mJihiPWIuaW5kZXgpLHRoaXMuYWRkVG9Tb3J0ZWRSZXdyaXRlTGlzdChjLG5ldyBhLkluc2VydEJlZm9yZU9wKGIsZCkpfSxyZXBsYWNlOmZ1bmN0aW9uKCl7dmFyIGIsYyxkLGY7YXJndW1lbnRzLmxlbmd0aD09PTI/KGI9YS5ERUZBVUxUX1BST0dSQU1fTkFNRSxjPWFyZ3VtZW50c1swXSxkPWFyZ3VtZW50c1swXSxmPWFyZ3VtZW50c1sxXSk6YXJndW1lbnRzLmxlbmd0aD09PTMmJihiPWEuREVGQVVMVF9QUk9HUkFNX05BTUUsYz1hcmd1bWVudHNbMF0sZD1hcmd1bWVudHNbMV0sZj1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg9PT00JiYoYj1hcmd1bWVudHNbMF0sYz1hcmd1bWVudHNbMV0sZD1hcmd1bWVudHNbMl0sZj1hcmd1bWVudHNbM10pLGMgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4mJihjPWMuaW5kZXgpLGQgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4mJihkPWQuaW5kZXgpO2lmKGM+ZHx8ZDwwfHxjPDApcmV0dXJuO3RoaXMuYWRkVG9Tb3J0ZWRSZXdyaXRlTGlzdChiLG5ldyBhLlJlcGxhY2VPcChjLGQsZikpfSxyZW1vdmU6ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPWFyZ3VtZW50cy5sZW5ndGgtMTt3aGlsZShiPj0wKWFbYl09YXJndW1lbnRzW2JdLGItLTthLnB1c2goIiIpLHRoaXMucmVwbGFjZS5hcHBseSh0aGlzLGEpfSxnZXRMYXN0UmV3cml0ZVRva2VuSW5kZXg6ZnVuY3Rpb24oYil7cmV0dXJuIGI9Ynx8YS5ERUZBVUxUX1BST0dSQU1fTkFNRSx0aGlzLmxhc3RSZXdyaXRlVG9rZW5JbmRleGVzW2JdfHwtMX0sc2V0TGFzdFJld3JpdGVUb2tlbkluZGV4OmZ1bmN0aW9uKGEsYil7dGhpcy5sYXN0UmV3cml0ZVRva2VuSW5kZXhlc1thXT1ifSxnZXRQcm9ncmFtOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucHJvZ3JhbXNbYV07cmV0dXJuIGJ8fChiPXRoaXMuaW5pdGlhbGl6ZVByb2dyYW0oYSkpLGJ9LGluaXRpYWxpemVQcm9ncmFtOmZ1bmN0aW9uKGEpe3ZhciBiPVtdO3JldHVybiB0aGlzLnByb2dyYW1zW2FdPWIsYn0sdG9PcmlnaW5hbFN0cmluZzpmdW5jdGlvbihiLGMpe2UuYW50bHIubGFuZy5pc051bWJlcihiKXx8KGI9YS5NSU5fVE9LRU5fSU5ERVgpLGUuYW50bHIubGFuZy5pc051bWJlcihjKXx8KGM9dGhpcy5zaXplKCktMSk7dmFyIGQ9W10sZjtmb3IoZj1iO2Y+PWEuTUlOX1RPS0VOX0lOREVYJiZmPD1jJiZmPHRoaXMudG9rZW5zLmxlbmd0aDtmKyspZC5wdXNoKHRoaXMuZ2V0KGYpLmdldFRleHQoKSk7cmV0dXJuIGQuam9pbigiIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGIsYyxkO2FyZ3VtZW50cy5sZW5ndGg9PT0wPyhiPWEuREVGQVVMVF9QUk9HUkFNX05BTUUsYz1hLk1JTl9UT0tFTl9JTkRFWCxkPXRoaXMuc2l6ZSgpLTEpOmFyZ3VtZW50cy5sZW5ndGg9PT0xPyhiPWFyZ3VtZW50c1swXSxjPWEuTUlOX1RPS0VOX0lOREVYLGQ9dGhpcy5zaXplKCktMSk6YXJndW1lbnRzLmxlbmd0aD09PTImJihiPWEuREVGQVVMVF9QUk9HUkFNX05BTUUsYz1hcmd1bWVudHNbMF0sZD1hcmd1bWVudHNbMV0pO3ZhciBlPXRoaXMucHJvZ3JhbXNbYl07aWYoIWV8fGUubGVuZ3RoPT09MClyZXR1cm4gdGhpcy50b09yaWdpbmFsU3RyaW5nKGMsZCk7dmFyIGY9MCxnPWMsaD1bXSxpO3doaWxlKGc+PWEuTUlOX1RPS0VOX0lOREVYJiZnPD1kJiZnPHRoaXMudG9rZW5zLmxlbmd0aCl7aWYoZjxlLmxlbmd0aCl7aT1lW2ZdO3doaWxlKGkuaW5kZXg8ZyYmZjxlLmxlbmd0aClmKyssZjxlLmxlbmd0aCYmKGk9ZVtmXSk7d2hpbGUoZz09PWkuaW5kZXgmJmY8ZS5sZW5ndGgpZz1pLmV4ZWN1dGUoaCksZisrLGY8ZS5sZW5ndGgmJihpPWVbZl0pfWc8PWQmJihoLnB1c2godGhpcy5nZXQoZykuZ2V0VGV4dCgpKSxnKyspfXZhciBqO2ZvcihqPWY7ajxlLmxlbmd0aDtqKyspaT1lW2pdLGkuaW5kZXg+PXRoaXMuc2l6ZSgpJiZpLmV4ZWN1dGUoaCk7cmV0dXJuIGguam9pbigiIil9LHRvRGVidWdTdHJpbmc6ZnVuY3Rpb24oYixjKXtlLmFudGxyLmxhbmcuaXNOdW1iZXIoYil8fChiPWEuTUlOX1RPS0VOX0lOREVYKSxlLmFudGxyLmxhbmcuaXNOdW1iZXIoYyl8fChjPXRoaXMuc2l6ZSgpLTEpO3ZhciBkPVtdLGY7Zm9yKGY9YjtmPj1hLk1JTl9UT0tFTl9JTkRFWCYmZjw9YyYmZjx0aGlzLnRva2Vucy5sZW5ndGg7ZisrKWQucHVzaCh0aGlzLmdldChmKSk7cmV0dXJuIGQuam9pbigiIil9fSl9KCksZS5hbnRsci5ydW50aW1lLnRyZWUuVHJlZU5vZGVTdHJlYW09ZnVuY3Rpb24oKXt9LGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWVOb2RlU3RyZWFtPWZ1bmN0aW9uKGEsYixjKXthcmd1bWVudHMubGVuZ3RoPT09MSYmKGI9YSxhPW5ldyBlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlQWRhcHRvciksYXJndW1lbnRzLmxlbmd0aDw9MiYmKGM9ZS5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZU5vZGVTdHJlYW0uREVGQVVMVF9JTklUSUFMX0JVRkZFUl9TSVpFKSx0aGlzLnVuaXF1ZU5hdmlnYXRpb25Ob2Rlcz0hMSx0aGlzLnA9LTE7dmFyIGQ9ZS5hbnRsci5ydW50aW1lLlRva2VuO3RoaXMucm9vdD1iLHRoaXMuYWRhcHRvcj1hLHRoaXMubm9kZXM9W10sdGhpcy5kb3duPXRoaXMuYWRhcHRvci5jcmVhdGUoZC5ET1dOLCJET1dOIiksdGhpcy51cD10aGlzLmFkYXB0b3IuY3JlYXRlKGQuVVAsIlVQIiksdGhpcy5lb2Y9dGhpcy5hZGFwdG9yLmNyZWF0ZShkLkVPRiwiRU9GIil9LGUuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWVOb2RlU3RyZWFtLHtERUZBVUxUX0lOSVRJQUxfQlVGRkVSX1NJWkU6MTAwLElOSVRJQUxfQ0FMTF9TVEFDS19TSVpFOjEwfSksZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlTm9kZVN0cmVhbSxlLmFudGxyLnJ1bnRpbWUudHJlZS5UcmVlTm9kZVN0cmVhbSx7U3RyZWFtSXRlcmF0b3I6ZnVuY3Rpb24oKXt2YXIgYT0wLGI9dGhpcy5ub2RlcyxjPXRoaXMuZW9mO3JldHVybntoYXNOZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGE8Yi5sZW5ndGh9LG5leHQ6ZnVuY3Rpb24oKXt2YXIgZD1hO3JldHVybiBhKyssZDxiLmxlbmd0aD9iW2RdOmN9LHJlbW92ZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiY2Fubm90IHJlbW92ZSBub2RlcyBmcm9tIHN0cmVhbSIpfX19LGZpbGxCdWZmZXI6ZnVuY3Rpb24oYSl7dmFyIGI9ITE7ZS5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGEpJiYoYT10aGlzLnJvb3QsYj0hMCk7dmFyIGM9dGhpcy5hZGFwdG9yLmlzTmlsKGEpO2N8fHRoaXMubm9kZXMucHVzaChhKTt2YXIgZD10aGlzLmFkYXB0b3IuZ2V0Q2hpbGRDb3VudChhKTshYyYmZD4wJiZ0aGlzLmFkZE5hdmlnYXRpb25Ob2RlKGUuYW50bHIucnVudGltZS5Ub2tlbi5ET1dOKTt2YXIgZixnO2ZvcihmPTA7ZjxkO2YrKylnPXRoaXMuYWRhcHRvci5nZXRDaGlsZChhLGYpLHRoaXMuZmlsbEJ1ZmZlcihnKTshYyYmZD4wJiZ0aGlzLmFkZE5hdmlnYXRpb25Ob2RlKGUuYW50bHIucnVudGltZS5Ub2tlbi5VUCksYiYmKHRoaXMucD0wKX0sZ2V0Tm9kZUluZGV4OmZ1bmN0aW9uKGEpe3RoaXMucD09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpO3ZhciBiLGM7Zm9yKGI9MDtiPHRoaXMubm9kZXMubGVuZ3RoO2IrKyl7Yz10aGlzLm5vZGVzW2JdO2lmKGM9PT1hKXJldHVybiBifXJldHVybi0xfSxhZGROYXZpZ2F0aW9uTm9kZTpmdW5jdGlvbihhKXt2YXIgYj1udWxsO2E9PT1lLmFudGxyLnJ1bnRpbWUuVG9rZW4uRE9XTj90aGlzLmhhc1VuaXF1ZU5hdmlnYXRpb25Ob2RlcygpP2I9dGhpcy5hZGFwdG9yLmNyZWF0ZShlLmFudGxyLnJ1bnRpbWUuVG9rZW4uRE9XTiwiRE9XTiIpOmI9dGhpcy5kb3duOnRoaXMuaGFzVW5pcXVlTmF2aWdhdGlvbk5vZGVzKCk/Yj10aGlzLmFkYXB0b3IuY3JlYXRlKGUuYW50bHIucnVudGltZS5Ub2tlbi5VUCwiVVAiKTpiPXRoaXMudXAsdGhpcy5ub2Rlcy5wdXNoKGIpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSx0aGlzLm5vZGVzW2FdfSxMVDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpLGE9PT0wP251bGw6YTwwP3RoaXMuTEIoLTEqYSk6dGhpcy5wK2EtMT49dGhpcy5ub2Rlcy5sZW5ndGg/dGhpcy5lb2Y6dGhpcy5ub2Rlc1t0aGlzLnArYS0xXX0sZ2V0Q3VycmVudFN5bWJvbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLkxUKDEpfSxMQjpmdW5jdGlvbihhKXtyZXR1cm4gYT09PTA/bnVsbDp0aGlzLnAtYTwwP251bGw6dGhpcy5ub2Rlc1t0aGlzLnAtYV19LGdldFRyZWVTb3VyY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290fSxnZXRTb3VyY2VOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VG9rZW5TdHJlYW0oKS5nZXRTb3VyY2VOYW1lKCl9LGdldFRva2VuU3RyZWFtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5zfSxzZXRUb2tlblN0cmVhbTpmdW5jdGlvbihhKXt0aGlzLnRva2Vucz1hfSxnZXRUcmVlQWRhcHRvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkYXB0b3J9LHNldFRyZWVBZGFwdG9yOmZ1bmN0aW9uKGEpe3RoaXMuYWRhcHRvcj1hfSxoYXNVbmlxdWVOYXZpZ2F0aW9uTm9kZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlxdWVOYXZpZ2F0aW9uTm9kZXN9LHNldFVuaXF1ZU5hdmlnYXRpb25Ob2RlczpmdW5jdGlvbihhKXt0aGlzLnVuaXF1ZU5hdmlnYXRpb25Ob2Rlcz1hfSxjb25zdW1lOmZ1bmN0aW9uKCl7dGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpLHRoaXMucCsrfSxMQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGFwdG9yLmdldFR5cGUodGhpcy5MVChhKSl9LG1hcms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpLHRoaXMubGFzdE1hcmtlcj10aGlzLmluZGV4KCksdGhpcy5sYXN0TWFya2VyfSxyZWxlYXNlOmZ1bmN0aW9uKGEpe30saW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wfSxyZXdpbmQ6ZnVuY3Rpb24oYSl7ZS5hbnRsci5sYW5nLmlzTnVtYmVyKGEpfHwoYT10aGlzLmxhc3RNYXJrZXIpLHRoaXMuc2VlayhhKX0sc2VlazpmdW5jdGlvbihhKXt0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCksdGhpcy5wPWF9LHB1c2g6ZnVuY3Rpb24oYSl7dGhpcy5jYWxsc3x8KHRoaXMuY2FsbHM9W10pLHRoaXMuY2FsbHMucHVzaCh0aGlzLnApLHRoaXMuc2VlayhhKX0scG9wOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jYWxscy5wb3AoKTtyZXR1cm4gdGhpcy5zZWVrKGEpLGF9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5wPS0xLHRoaXMubGFzdE1hcmtlcj0wLHRoaXMuY2FsbHMmJih0aGlzLmNhbGxzPVtdKX0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCksdGhpcy5ub2Rlcy5sZW5ndGh9LGl0ZXJhdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSx0aGlzLlN0cmVhbUl0ZXJhdG9yKCl9LHJlcGxhY2VDaGlsZHJlbjpmdW5jdGlvbihhLGIsYyxkKXthJiZ0aGlzLmFkYXB0b3IucmVwbGFjZUNoaWxkcmVuKGEsYixjLGQpfSx0b1Rva2VuU3RyaW5nOmZ1bmN0aW9uKGEsYil7dGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpO3ZhciBjPSIiLGQsZTtmb3IoZD1hO2Q8dGhpcy5ub2Rlcy5sZW5ndGgmJmQ8PWI7ZCsrKWU9dGhpcy5ub2Rlc1tkXSxjKz0iICIrdGhpcy5hZGFwdG9yLmdldFRva2VuKGUpO3JldHVybiBjfSx0b1N0cmluZzpmdW5jdGlvbihhLGIpe3ZhciBjPSIiLGQsZixnO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXt0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCk7Zm9yKGc9MDtnPHRoaXMubm9kZXMubGVuZ3RoO2crKylmPXRoaXMubm9kZXNbZ10sYys9IiAiLGMrPXRoaXMuYWRhcHRvci5nZXRUeXBlKGYpO3JldHVybiBjfWlmKCFlLmFudGxyLmxhbmcuaXNOdW1iZXIoYSl8fCFlLmFudGxyLmxhbmcuaXNOdW1iZXIoYikpcmV0dXJuIG51bGw7dGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpLCEoYSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUpLCEoYiBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUpO3ZhciBoLGk7aWYodGhpcy50b2tlbnMpcmV0dXJuIGg9dGhpcy5hZGFwdG9yLmdldFRva2VuU3RhcnRJbmRleChhKSxpPXRoaXMuYWRhcHRvci5nZXRUb2tlblN0b3BJbmRleChiKSx0aGlzLmFkYXB0b3IuZ2V0VHlwZShiKT09PWUuYW50bHIucnVudGltZS5Ub2tlbi5VUD9pPXRoaXMuYWRhcHRvci5nZXRUb2tlblN0b3BJbmRleChhKTp0aGlzLmFkYXB0b3IuZ2V0VHlwZShiKT09ZS5hbnRsci5ydW50aW1lLlRva2VuLkVPRiYmKGk9dGhpcy5zaXplKCktMiksdGhpcy50b2tlbnMudG9TdHJpbmcoaCxpKTtmPW51bGwsZz0wO2Zvcig7Zzx0aGlzLm5vZGVzLmxlbmd0aDtnKyspe2Y9dGhpcy5ub2Rlc1tnXTtpZihmPT09YSlicmVha31jPWQ9IiIsZj10aGlzLm5vZGVzW2ddO3doaWxlKGYhPT1iKWQ9dGhpcy5hZGFwdG9yLmdldFRleHQoZiksZS5hbnRsci5sYW5nLmlzU3RyaW5nKGQpfHwoZD0iICIrdGhpcy5hZGFwdG9yLmdldFR5cGUoZikudG9TdHJpbmcoKSksYys9ZCxnKyssZj1ub2Rlc1tnXTtyZXR1cm4gZD10aGlzLmFkYXB0b3IuZ2V0VGV4dChiKSxlLmFudGxyLmxhbmcuaXNTdHJpbmcoZCl8fChkPSIgIit0aGlzLmFkYXB0b3IuZ2V0VHlwZShiKS50b1N0cmluZygpKSxjKz1kLGN9fSksZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVFbGVtZW50U3RyZWFtPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmN1cnNvcj0wLHRoaXMuZGlydHk9ITEsdGhpcy5lbGVtZW50RGVzY3JpcHRpb249Yix0aGlzLmFkYXB0b3I9YSxjJiYoZS5hbnRsci5sYW5nLmlzQXJyYXkoYyk/KHRoaXMuc2luZ2xlRWxlbWVudD1udWxsLHRoaXMuZWxlbWVudHM9Yyk6dGhpcy5hZGQoYykpfSxlLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZUVsZW1lbnRTdHJlYW0ucHJvdG90eXBlPXtyZXNldDpmdW5jdGlvbigpe3RoaXMuY3Vyc29yPTAsdGhpcy5kaXJ0eT0hMH0sYWRkOmZ1bmN0aW9uKGEpe2lmKCFlLmFudGxyLmxhbmcuaXNWYWx1ZShhKSlyZXR1cm47aWYodGhpcy5lbGVtZW50cyl7dGhpcy5lbGVtZW50cy5wdXNoKGEpO3JldHVybn1pZighZS5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy5zaW5nbGVFbGVtZW50KSl7dGhpcy5zaW5nbGVFbGVtZW50PWE7cmV0dXJufXRoaXMuZWxlbWVudHM9W10sdGhpcy5lbGVtZW50cy5wdXNoKHRoaXMuc2luZ2xlRWxlbWVudCksdGhpcy5zaW5nbGVFbGVtZW50PW51bGwsdGhpcy5lbGVtZW50cy5wdXNoKGEpfSxuZXh0VHJlZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2l6ZSgpLGI7cmV0dXJuIHRoaXMuZGlydHl8fHRoaXMuY3Vyc29yPj1hJiZhPT0xPyhiPXRoaXMuX25leHQoKSx0aGlzLmR1cChiKSk6KGI9dGhpcy5fbmV4dCgpLGIpfSxfbmV4dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2l6ZSgpO2lmKGE9PT0wKXRocm93IG5ldyBlLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlRW1wdHlTdHJlYW1FeGNlcHRpb24odGhpcy5lbGVtZW50RGVzY3JpcHRpb24pO2lmKHRoaXMuY3Vyc29yPj1hKXtpZihhPT09MSlyZXR1cm4gdGhpcy50b1RyZWUodGhpcy5zaW5nbGVFbGVtZW50KTt0aHJvdyBuZXcgZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUNhcmRpbmFsaXR5RXhjZXB0aW9uKHRoaXMuZWxlbWVudERlc2NyaXB0aW9uKX1pZihlLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnNpbmdsZUVsZW1lbnQpKXJldHVybiB0aGlzLmN1cnNvcisrLHRoaXMudG9UcmVlKHRoaXMuc2luZ2xlRWxlbWVudCk7dmFyIGI9dGhpcy50b1RyZWUodGhpcy5lbGVtZW50c1t0aGlzLmN1cnNvcl0pO3JldHVybiB0aGlzLmN1cnNvcisrLGJ9LHRvVHJlZTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5nZXRUcmVlP2EuZ2V0VHJlZSgpOmF9LGhhc05leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy5zaW5nbGVFbGVtZW50KSYmdGhpcy5jdXJzb3I8MXx8dGhpcy5lbGVtZW50cyYmdGhpcy5jdXJzb3I8dGhpcy5lbGVtZW50cy5sZW5ndGh9LHNpemU6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiBlLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnNpbmdsZUVsZW1lbnQpJiYoYT0xKSx0aGlzLmVsZW1lbnRzP3RoaXMuZWxlbWVudHMubGVuZ3RoOmF9LGdldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudERlc2NyaXB0aW9ufX0sZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVOb2RlU3RyZWFtPWZ1bmN0aW9uKGEsYixjKXtlLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZU5vZGVTdHJlYW0uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVOb2RlU3RyZWFtLGUuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlRWxlbWVudFN0cmVhbSx7bmV4dE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmV4dCgpfSx0b1RyZWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRhcHRvci5kdXBOb2RlKGEpfSxkdXA6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImR1cCBjYW4ndCBiZSBjYWxsZWQgZm9yIGEgbm9kZSBzdHJlYW0uIil9fSksZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbS5zdXBlcmNsYXNzO2QuY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmFudGxyLmxhbmcuZXh0ZW5kKGUuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0sZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVFbGVtZW50U3RyZWFtLHtuZXh0Tm9kZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX25leHQoKTtyZXR1cm4gdGhpcy5hZGFwdG9yLmNyZWF0ZShhKX0sbmV4dFRva2VuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25leHQoKX0sdG9UcmVlOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxkdXA6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKCJkdXAgY2FuJ3QgYmUgY2FsbGVkIGZvciBhIHRva2VuIHN0cmVhbS4iKX19KSxlLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW09ZnVuY3Rpb24oKXt2YXIgYT1lLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0uc3VwZXJjbGFzczthLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0sZS5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVFbGVtZW50U3RyZWFtLHtuZXh0Tm9kZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2l6ZSgpLGI7cmV0dXJuIHRoaXMuZGlydHl8fHRoaXMuY3Vyc29yPj1hJiZhPT09MT8oYj10aGlzLl9uZXh0KCksdGhpcy5hZGFwdG9yLmR1cE5vZGUoYikpOihiPXRoaXMuX25leHQoKSxiKX0sZHVwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkYXB0b3IuZHVwVHJlZShhKX19KSxlLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXI9ZnVuY3Rpb24oYSl7dGhpcy5zdGF0ZT1hfHxuZXcgZS5hbnRsci5ydW50aW1lLlJlY29nbml6ZXJTaGFyZWRTdGF0ZX0sZS5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QoZS5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLHtNRU1PX1JVTEVfRkFJTEVEOi0yLE1FTU9fUlVMRV9VTktOT1dOOi0xLElOSVRJQUxfRk9MTE9XX1NUQUNLX1NJWkU6MTAwLE1FTU9fUlVMRV9GQUlMRURfSTotMixERUZBVUxUX1RPS0VOX0NIQU5ORUw6ZS5hbnRsci5ydW50aW1lLlRva2VuLkRFRkFVTFRfQ0hBTk5FTCxISURERU46ZS5hbnRsci5ydW50aW1lLlRva2VuLkhJRERFTl9DSEFOTkVMLE5FWFRfVE9LRU5fUlVMRV9OQU1FOiJuZXh0VG9rZW4ifSksZS5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLnByb3RvdHlwZT17cmVzZXQ6ZnVuY3Rpb24oKXt2YXIgYSxiO2lmKCF0aGlzLnN0YXRlKXJldHVybjt0aGlzLnN0YXRlLl9mc3A9LTEsdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUubGFzdEVycm9ySW5kZXg9LTEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsdGhpcy5zdGF0ZS5zeW50YXhFcnJvcnM9MCx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz0wO2lmKHRoaXMuc3RhdGUucnVsZU1lbW8pZm9yKGE9MCxiPXRoaXMuc3RhdGUucnVsZU1lbW8ubGVuZ3RoO2E8YjthKyspdGhpcy5zdGF0ZS5ydWxlTWVtb1thXT1udWxsfSxtYXRjaDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5nZXRDdXJyZW50SW5wdXRTeW1ib2woYSk7cmV0dXJuIGEuTEEoMSk9PT1iPyhhLmNvbnN1bWUoKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsZCk6dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MD8odGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZCk6KGQ9dGhpcy5yZWNvdmVyRnJvbU1pc21hdGNoZWRUb2tlbihhLGIsYyksZCl9LG1hdGNoQW55OmZ1bmN0aW9uKGEpe3RoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxhLmNvbnN1bWUoKX0sbWlzbWF0Y2hJc1Vud2FudGVkVG9rZW46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5MQSgyKT09PWJ9LG1pc21hdGNoSXNNaXNzaW5nVG9rZW46ZnVuY3Rpb24oYSxiKXtpZighYilyZXR1cm4hMTtpZihiLm1lbWJlcihlLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9SX1RPS0VOX1RZUEUpKXt0aGlzLnN0YXRlLl9mc3A+PTAmJmIucmVtb3ZlKGUuYW50bHIucnVudGltZS5Ub2tlbi5FT1JfVE9LRU5fVFlQRSk7dmFyIGM9dGhpcy5jb21wdXRlQ29udGV4dFNlbnNpdGl2ZVJ1bGVGT0xMT1coKTtiPWIub3IodGhpcy52aWFibGVUb2tlbnNGb2xsb3dpbmdUaGlzUnVsZSl9cmV0dXJuIGIubWVtYmVyKGEuTEEoMSkpfHxiLm1lbWJlcihlLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9SX1RPS0VOX1RZUEUpPyEwOiExfSxtaXNtYXRjaDpmdW5jdGlvbihhLGIsYyl7dGhyb3cgdGhpcy5taXNtYXRjaElzVW53YW50ZWRUb2tlbihhLGIpP25ldyBlLmFudGxyLnJ1bnRpbWUuVW53YW50ZWRUb2tlbkV4Y2VwdGlvbihiLGEpOnRoaXMubWlzbWF0Y2hJc01pc3NpbmdUb2tlbihhLGMpP25ldyBlLmFudGxyLnJ1bnRpbWUuTWlzc2luZ1Rva2VuRXhjZXB0aW9uKGIsYSxudWxsKTpuZXcgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbihiLGEpfSxyZXBvcnRFcnJvcjpmdW5jdGlvbihhKXtpZih0aGlzLmlucHV0LnNpemUoKSE9MCl7dmFyIGI9dGhpcy5pbnB1dC5nZXQoYS5pbmRleCksYz0iIixkPTAsZT0wO2IuZ2V0VHlwZSgpPT0tMSYmKGI9dGhpcy5pbnB1dC5nZXQodGhpcy5pbnB1dC5zaXplKCktMSkpLGM9dGhpcy5nZXRFcnJvck1lc3NhZ2UoYSx0aGlzLmdldFRva2VuTmFtZXMoKSksZD1iLmdldFN0YXJ0SW5kZXgoKSxlPWIuZ2V0TGluZSgpLTE7dmFyIGY9e2xpbmU6ZSxtZXNzYWdlOmMsY29sdW1uOmR9O3RoaXMuYWRkRXJyb3IoZil9aWYodGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5KXJldHVybjt0aGlzLnN0YXRlLnN5bnRheEVycm9ycysrLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMCx0aGlzLmRpc3BsYXlSZWNvZ25pdGlvbkVycm9yKHRoaXMuZ2V0VG9rZW5OYW1lcygpLGEpfSxkaXNwbGF5UmVjb2duaXRpb25FcnJvcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0RXJyb3JIZWFkZXIoYiksZD10aGlzLmdldEVycm9yTWVzc2FnZShiLGEpO3RoaXMuZW1pdEVycm9yTWVzc2FnZShjKyIgIitkKX0sZ2V0RXJyb3JIZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUuYW50bHIubGFuZy5pc051bWJlcihhLmxpbmUpfHwoYS5saW5lPTApLCJsaW5lICIrYS5saW5lKyI6IithLmNoYXJQb3NpdGlvbkluTGluZX0sZW1pdEVycm9yTWVzc2FnZTpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKX0sZ2V0RXJyb3JNZXNzYWdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9YSYmYS5nZXRNZXNzYWdlP2EuZ2V0TWVzc2FnZSgpOm51bGwsZCxmO2lmKGEgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuVW53YW50ZWRUb2tlbkV4Y2VwdGlvbil7dmFyIGc9YTtmPSI8dW5rbm93bj4iLGcuZXhwZWN0aW5nPT1lLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GP2Y9IkVPRiI6Zj1iW2cuZXhwZWN0aW5nXSxjPSJleHRyYW5lb3VzIGlucHV0ICIrdGhpcy5nZXRUb2tlbkVycm9yRGlzcGxheShnLmdldFVuZXhwZWN0ZWRUb2tlbigpKSsiIGV4cGVjdGluZyAiK2Z9ZWxzZSBhIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc3NpbmdUb2tlbkV4Y2VwdGlvbj8oZD1hLGY9Ijx1bmtub3duPiIsZC5leHBlY3Rpbmc9PWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0Y/Zj0iRU9GIjpmPWJbZC5leHBlY3RpbmddLGM9Im1pc3NpbmcgIitmKyIgYXQgIit0aGlzLmdldFRva2VuRXJyb3JEaXNwbGF5KGEudG9rZW4pKTphIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbj8oZD1hLGY9Ijx1bmtub3duPiIsZC5leHBlY3Rpbmc9PWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0Y/Zj0iRU9GIjpmPWJbZC5leHBlY3RpbmddLGM9Im1pc21hdGNoZWQgaW5wdXQgIit0aGlzLmdldFRva2VuRXJyb3JEaXNwbGF5KGEudG9rZW4pKyIgZXhwZWN0aW5nICIrZik6YSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbj9jPSJubyB2aWFibGUgYWx0ZXJuYXRpdmUgYXQgaW5wdXQgIit0aGlzLmdldFRva2VuRXJyb3JEaXNwbGF5KGEudG9rZW4pOmEgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uP2M9InJlcXVpcmVkICguLi4pKyBsb29wIGRpZCBub3QgbWF0Y2ggYW55dGhpbmcgYXQgaW5wdXQgIit0aGlzLmdldFRva2VuRXJyb3JEaXNwbGF5KGEudG9rZW4pOmEgaW5zdGFuY2VvZiBlLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbj9jPSJtaXNtYXRjaGVkIGlucHV0ICIrdGhpcy5nZXRUb2tlbkVycm9yRGlzcGxheShhLnRva2VuKSsiIGV4cGVjdGluZyBzZXQgIithLmV4cGVjdGluZzphIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWROb3RTZXRFeGNlcHRpb24/Yz0ibWlzbWF0Y2hlZCBpbnB1dCAiK3RoaXMuZ2V0VG9rZW5FcnJvckRpc3BsYXkoYS50b2tlbikrIiBleHBlY3Rpbmcgc2V0ICIrYS5leHBlY3Rpbmc6YSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24mJihjPSJydWxlICIrYS5ydWxlTmFtZSsiIGZhaWxlZCBwcmVkaWNhdGU6IHsiK2EucHJlZGljYXRlVGV4dCsifT8iKTtyZXR1cm4gY30sZ2V0TnVtYmVyT2ZTeW50YXhFcnJvcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZS5zeW50YXhFcnJvcnN9LGdldFRva2VuRXJyb3JEaXNwbGF5OmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0VGV4dCgpO3JldHVybiBlLmFudGxyLmxhbmcuaXNWYWx1ZShiKXx8KGEuZ2V0VHlwZSgpPT1lLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GP2I9IjxFT0Y+IjpiPSI8IithLmdldFR5cGUoKSsiPiIpLGI9Yi5yZXBsYWNlKC9cbi9nLCJcXG4iKSxiPWIucmVwbGFjZSgvXHIvZywiXFxyIiksYj1iLnJlcGxhY2UoL1x0L2csIlxcdCIpLCInIitiKyInIn0scmVjb3ZlcjpmdW5jdGlvbihhLGIpe3RoaXMuc3RhdGUubGFzdEVycm9ySW5kZXg9PWEuaW5kZXgoKSYmYS5jb25zdW1lKCksdGhpcy5zdGF0ZS5sYXN0RXJyb3JJbmRleD1hLmluZGV4KCk7dmFyIGM9dGhpcy5jb21wdXRlRXJyb3JSZWNvdmVyeVNldCgpO3RoaXMuYmVnaW5SZXN5bmMoKSx0aGlzLmNvbnN1bWVVbnRpbChhLGMpLHRoaXMuZW5kUmVzeW5jKCl9LGJlZ2luUmVzeW5jOmZ1bmN0aW9uKCl7fSxlbmRSZXN5bmM6ZnVuY3Rpb24oKXt9LGNvbXB1dGVFcnJvclJlY292ZXJ5U2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tYmluZUZvbGxvd3MoITEpfSxjb21wdXRlQ29udGV4dFNlbnNpdGl2ZVJ1bGVGT0xMT1c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb21iaW5lRm9sbG93cyghMCl9LGNvbWJpbmVGb2xsb3dzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuc3RhdGUuX2ZzcCxjLGQsZj1uZXcgZS5hbnRsci5ydW50aW1lLkJpdFNldDtmb3IoYz1iO2M+PTA7Yy0tKXtkPXRoaXMuc3RhdGUuZm9sbG93aW5nW2NdLGYub3JJblBsYWNlKGQpO2lmKGEpe2lmKCFkLm1lbWJlcihlLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9SX1RPS0VOX1RZUEUpKWJyZWFrO2M+MCYmZi5yZW1vdmUoZS5hbnRsci5ydW50aW1lLlRva2VuLkVPUl9UT0tFTl9UWVBFKX19cmV0dXJuIGZ9LHJlY292ZXJGcm9tTWlzbWF0Y2hlZFRva2VuOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1udWxsO2lmKHRoaXMubWlzbWF0Y2hJc1Vud2FudGVkVG9rZW4oYSxiKSl7ZD1uZXcgZS5hbnRsci5ydW50aW1lLlVud2FudGVkVG9rZW5FeGNlcHRpb24oYixhKSx0aGlzLmJlZ2luUmVzeW5jKCksYS5jb25zdW1lKCksdGhpcy5lbmRSZXN5bmMoKSx0aGlzLnJlcG9ydEVycm9yKGQpO3ZhciBmPXRoaXMuZ2V0Q3VycmVudElucHV0U3ltYm9sKGEpO3JldHVybiBhLmNvbnN1bWUoKSxmfWlmKHRoaXMubWlzbWF0Y2hJc01pc3NpbmdUb2tlbihhLGMpKXt2YXIgZz10aGlzLmdldE1pc3NpbmdTeW1ib2woYSxkLGIsYyk7cmV0dXJuIGQ9bmV3IGUuYW50bHIucnVudGltZS5NaXNzaW5nVG9rZW5FeGNlcHRpb24oYixhLGcpLHRoaXMucmVwb3J0RXJyb3IoZCksZ310aHJvdyBkPW5ldyBlLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uKGIsYSksZH0scmVjb3ZlckZyb21NaXNtYXRjaGVkU2V0OmZ1bmN0aW9uKGEsYixjKXtpZih0aGlzLm1pc21hdGNoSXNNaXNzaW5nVG9rZW4oYSxjKSlyZXR1cm4gdGhpcy5yZXBvcnRFcnJvcihiKSx0aGlzLmdldE1pc3NpbmdTeW1ib2woYSxiLGUuYW50bHIucnVudGltZS5Ub2tlbi5JTlZBTElEX1RPS0VOX1RZUEUsYyk7dGhyb3cgYn0sZ2V0Q3VycmVudElucHV0U3ltYm9sOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsfSxnZXRNaXNzaW5nU3ltYm9sOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBudWxsfSxjb25zdW1lVW50aWw6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLkxBKDEpO3doaWxlKGMhPWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0YmJiFiLm1lbWJlcihjKSlhLmNvbnN1bWUoKSxjPWEuTEEoMSl9LHB1c2hGb2xsb3c6ZnVuY3Rpb24oYSl7aWYodGhpcy5zdGF0ZS5fZnNwKzE+PXRoaXMuc3RhdGUuZm9sbG93aW5nLmxlbmd0aCl7dmFyIGI9W10sYztmb3IoYz10aGlzLnN0YXRlLmZvbGxvd2luZy5sZW5ndGgtMTtjPj0wO2MtLSliW2NdPXRoaXMuc3RhdGUuZm9sbG93aW5nW2NdO3RoaXMuc3RhdGUuZm9sbG93aW5nPWJ9dGhpcy5zdGF0ZS5fZnNwKyssdGhpcy5zdGF0ZS5mb2xsb3dpbmdbdGhpcy5zdGF0ZS5fZnNwXT1hfSxnZXRSdWxlSW52b2NhdGlvblN0YWNrOmZ1bmN0aW9uKGEsYil7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQuIil9LGdldEJhY2t0cmFja2luZ0xldmVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGUuYmFja3RyYWNraW5nfSxnZXRUb2tlbk5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdldEdyYW1tYXJGaWxlTmFtZTpmdW5jdGlvbigpe3JldHVybiBudWxsfSx0b1N0cmluZ3M6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51bGw7dmFyIGI9W10sYztmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWIucHVzaChhW2NdLmdldFRleHQoKSk7cmV0dXJuIGJ9LGdldFJ1bGVNZW1vaXphdGlvbjpmdW5jdGlvbihhLGIpe3RoaXMuc3RhdGUucnVsZU1lbW9bYV18fCh0aGlzLnN0YXRlLnJ1bGVNZW1vW2FdPXt9KTt2YXIgYz10aGlzLnN0YXRlLnJ1bGVNZW1vW2FdW2JdO3JldHVybiBlLmFudGxyLmxhbmcuaXNOdW1iZXIoYyk/YzplLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuTUVNT19SVUxFX1VOS05PV059LGFscmVhZHlQYXJzZWRSdWxlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5nZXRSdWxlTWVtb2l6YXRpb24oYixhLmluZGV4KCkpO3JldHVybiBjPT1lLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuTUVNT19SVUxFX1VOS05PV04/ITE6KGM9PWUuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5NRU1PX1JVTEVfRkFJTEVEP3RoaXMuc3RhdGUuZmFpbGVkPSEwOmEuc2VlayhjKzEpLCEwKX0sbWVtb2l6ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5zdGF0ZS5mYWlsZWQ/ZS5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLk1FTU9fUlVMRV9GQUlMRUQ6YS5pbmRleCgpLTE7aWYoIWUuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMuc3RhdGUucnVsZU1lbW8pKXRocm93IG5ldyBFcnJvcigiISEhISEhISEhIG1lbW8gYXJyYXkgaXMgbnVsbCBmb3IgIit0aGlzLmdldEdyYW1tYXJGaWxlTmFtZSgpKTtpZihiPj10aGlzLnN0YXRlLnJ1bGVNZW1vLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIiEhISEhISEhISBtZW1vIHNpemUgaXMgIit0aGlzLnN0YXRlLnJ1bGVNZW1vLmxlbmd0aCsiLCBidXQgcnVsZSBpbmRleCBpcyAiK2IpO2UuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMuc3RhdGUucnVsZU1lbW9bYl0pJiYodGhpcy5zdGF0ZS5ydWxlTWVtb1tiXVtjXT1kKX0sZ2V0UnVsZU1lbW9pemF0aW9uQ2FjaGVTaXplOmZ1bmN0aW9uKCl7dmFyIGE9MCxiO2ZvcihiPTA7dGhpcy5zdGF0ZS5ydWxlTWVtbyYmYjx0aGlzLnN0YXRlLnJ1bGVNZW1vLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuc3RhdGUucnVsZU1lbW9bYl07YyYmKGErPWMubGVuZ3RoKX1yZXR1cm4gYX0sdHJhY2VJbjpmdW5jdGlvbihhLGIsYyl7dGhpcy5lbWl0RXJyb3JNZXNzYWdlKCJlbnRlciAiK2ErIiAiK2MpLHRoaXMuc3RhdGUuZmFpbGVkJiZ0aGlzLmVtaXRFcnJvck1lc3NhZ2UoIiBmYWlsZWQ9Iit0aGlzLmZhaWxlZCksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCYmdGhpcy5lbWl0RXJyb3JNZXNzYWdlKCIgYmFja3RyYWNraW5nPSIrdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcpfSx0cmFjZU91dDpmdW5jdGlvbihhLGIsYyl7dGhpcy5lbWl0RXJyb3JNZXNzYWdlKCJleGl0ICIrYSsiICIrYyksdGhpcy5zdGF0ZS5mYWlsZWQmJnRoaXMuZW1pdEVycm9yTWVzc2FnZSgiIGZhaWxlZD0iK3RoaXMuc3RhdGUuZmFpbGVkKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wJiZ0aGlzLmVtaXRFcnJvck1lc3NhZ2UoIiBiYWNrdHJhY2tpbmc9Iit0aGlzLnN0YXRlLmJhY2t0cmFja2luZyl9fSxlLmFudGxyLnJ1bnRpbWUuTGV4ZXI9ZnVuY3Rpb24oYSxiKXtiJiZlLmFudGxyLnJ1bnRpbWUuTGV4ZXIuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYiksYSYmKHRoaXMuaW5wdXQ9YSl9LGUuYW50bHIubGFuZy5leHRlbmQoZS5hbnRsci5ydW50aW1lLkxleGVyLGUuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplcix7cmVzZXQ6ZnVuY3Rpb24oKXtlLmFudGxyLnJ1bnRpbWUuTGV4ZXIuc3VwZXJjbGFzcy5yZXNldC5jYWxsKHRoaXMpLGUuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMuaW5wdXQpJiZ0aGlzLmlucHV0LnNlZWsoMCk7aWYoIWUuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMuc3RhdGUpKXJldHVybjt0aGlzLnN0YXRlLnRva2VuPW51bGwsdGhpcy5zdGF0ZS50eXBlPWUuYW50bHIucnVudGltZS5Ub2tlbi5JTlZBTElEX1RPS0VOX1RZUEUsdGhpcy5zdGF0ZS5jaGFubmVsPWUuYW50bHIucnVudGltZS5Ub2tlbi5ERUZBVUxUX0NIQU5ORUwsdGhpcy5zdGF0ZS50b2tlblN0YXJ0Q2hhckluZGV4PS0xLHRoaXMuc3RhdGUudG9rZW5TdGFydENoYXJQb3NpdGlvbkluTGluZT0tMSx0aGlzLnN0YXRlLnRva2VuU3RhcnRMaW5lPS0xLHRoaXMuc3RhdGUudGV4dD1udWxsfSxuZXh0VG9rZW46ZnVuY3Rpb24oKXtmb3IoOzspe3RoaXMuc3RhdGUudG9rZW49bnVsbCx0aGlzLnN0YXRlLmNoYW5uZWw9ZS5hbnRsci5ydW50aW1lLlRva2VuLkRFRkFVTFRfQ0hBTk5FTCx0aGlzLnN0YXRlLnRva2VuU3RhcnRDaGFySW5kZXg9dGhpcy5pbnB1dC5pbmRleCgpLHRoaXMuc3RhdGUudG9rZW5TdGFydENoYXJQb3NpdGlvbkluTGluZT10aGlzLmlucHV0LmdldENoYXJQb3NpdGlvbkluTGluZSgpLHRoaXMuc3RhdGUudG9rZW5TdGFydExpbmU9dGhpcy5pbnB1dC5nZXRMaW5lKCksdGhpcy5zdGF0ZS50ZXh0PW51bGw7aWYodGhpcy5pbnB1dC5MQSgxKT09PWUuYW50bHIucnVudGltZS5DaGFyU3RyZWFtLkVPRilyZXR1cm4gZS5hbnRsci5ydW50aW1lLlRva2VuLkVPRl9UT0tFTjt0cnl7dGhpcy5tVG9rZW5zKCk7aWYoIWUuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMuc3RhdGUudG9rZW4pKXRoaXMuZW1pdCgpO2Vsc2UgaWYodGhpcy5zdGF0ZS50b2tlbj09ZS5hbnRsci5ydW50aW1lLlRva2VuLlNLSVBfVE9LRU4pY29udGludWU7cmV0dXJuIHRoaXMuc3RhdGUudG9rZW59Y2F0Y2goYSl7aWYoYSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbil0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3ZlcihhKTtlbHNle2lmKCEoYSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpfX19fSxza2lwOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS50b2tlbj1lLmFudGxyLnJ1bnRpbWUuVG9rZW4uU0tJUF9UT0tFTn0sc2V0Q2hhclN0cmVhbTpmdW5jdGlvbihhKXt0aGlzLmlucHV0PW51bGwsdGhpcy5yZXNldCgpLHRoaXMuaW5wdXQ9YX0sZ2V0Q2hhclN0cmVhbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0fSxnZXRTb3VyY2VOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuZ2V0U291cmNlTmFtZSgpfSxlbWl0OmZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApe3ZhciBhPW5ldyBlLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4odGhpcy5pbnB1dCx0aGlzLnN0YXRlLnR5cGUsdGhpcy5zdGF0ZS5jaGFubmVsLHRoaXMuc3RhdGUudG9rZW5TdGFydENoYXJJbmRleCx0aGlzLmdldENoYXJJbmRleCgpLTEpO3JldHVybiBhLnNldExpbmUodGhpcy5zdGF0ZS50b2tlblN0YXJ0TGluZSksYS5zZXRUZXh0KHRoaXMuc3RhdGUudGV4dCksYS5zZXRDaGFyUG9zaXRpb25JbkxpbmUodGhpcy5zdGF0ZS50b2tlblN0YXJ0Q2hhclBvc2l0aW9uSW5MaW5lKSx0aGlzLnN0YXRlLnRva2VuPWEsYX10aGlzLnN0YXRlLnRva2VuPWFyZ3VtZW50c1swXX0sbWF0Y2g6ZnVuY3Rpb24oYSl7dmFyIGI9MCxjO2lmKGUuYW50bHIubGFuZy5pc1N0cmluZyhhKSl3aGlsZShiPGEubGVuZ3RoKXtpZih0aGlzLmlucHV0LkxBKDEpIT1hLmNoYXJBdChiKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXRocm93IGM9bmV3IGUuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24oYS5jaGFyQXQoYiksdGhpcy5pbnB1dCksdGhpcy5yZWNvdmVyKGMpLGN9YisrLHRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZmFpbGVkPSExfWVsc2UgaWYoZS5hbnRsci5sYW5nLmlzTnVtYmVyKGEpKXtpZih0aGlzLmlucHV0LkxBKDEpIT1hKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXt0aGlzLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dGhyb3cgYz1uZXcgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbihhLHRoaXMuaW5wdXQpLHRoaXMucmVjb3ZlcihjKSxjfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZmFpbGVkPSExfX0sbWF0Y2hBbnk6ZnVuY3Rpb24oKXt0aGlzLmlucHV0LmNvbnN1bWUoKX0sbWF0Y2hSYW5nZTpmdW5jdGlvbihhLGIpe2lmKHRoaXMuaW5wdXQuTEEoMSk8YXx8dGhpcy5pbnB1dC5MQSgxKT5iKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXt0aGlzLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dGhyb3cgbXJlPW5ldyBlLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFJhbmdlRXhjZXB0aW9uKGEsYix0aGlzLmlucHV0KSx0aGlzLnJlY292ZXIobXJlKSxtcmV9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5mYWlsZWQ9ITF9LGdldExpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dC5nZXRMaW5lKCl9LGdldENoYXJQb3NpdGlvbkluTGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LmdldENoYXJQb3NpdGlvbkluTGluZSgpfSxnZXRDaGFySW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dC5pbmRleCgpfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuYW50bHIubGFuZy5pc1N0cmluZyh0aGlzLnN0YXRlLnRleHQpP3RoaXMuc3RhdGUudGV4dDp0aGlzLmlucHV0LnN1YnN0cmluZyh0aGlzLnN0YXRlLnRva2VuU3RhcnRDaGFySW5kZXgsdGhpcy5nZXRDaGFySW5kZXgoKS0xKX0sc2V0VGV4dDpmdW5jdGlvbihhKXt0aGlzLnN0YXRlLnRleHQ9YX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oYSl7dGhpcy5kaXNwbGF5UmVjb2duaXRpb25FcnJvcih0aGlzLmdldFRva2VuTmFtZXMoKSxhKX0sZ2V0RXJyb3JNZXNzYWdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9bnVsbDtyZXR1cm4gYSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24/Yz0ibWlzbWF0Y2hlZCBjaGFyYWN0ZXIgIit0aGlzLmdldENoYXJFcnJvckRpc3BsYXkoYS5jKSsiIGV4cGVjdGluZyAiK3RoaXMuZ2V0Q2hhckVycm9yRGlzcGxheShhLmV4cGVjdGluZyk6YSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbj9jPSJubyB2aWFibGUgYWx0ZXJuYXRpdmUgYXQgY2hhcmFjdGVyICIrdGhpcy5nZXRDaGFyRXJyb3JEaXNwbGF5KGEuYyk6YSBpbnN0YW5jZW9mIGUuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24/Yz0icmVxdWlyZWQgKC4uLikrIGxvb3AgZGlkIG5vdCBtYXRjaCBhbnl0aGluZyBhdCBjaGFyYWN0ZXIgIit0aGlzLmdldENoYXJFcnJvckRpc3BsYXkoYS5jKTphIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWROb3RTZXRFeGNlcHRpb24/Yz0ibWlzbWF0Y2hlZCBjaGFyYWN0ZXIgIit0aGlzLmdldENoYXJFcnJvckRpc3BsYXkoYS5jKSsiIGV4cGVjdGluZyBzZXQgIithLmV4cGVjdGluZzphIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24/Yz0ibWlzbWF0Y2hlZCBjaGFyYWN0ZXIgIit0aGlzLmdldENoYXJFcnJvckRpc3BsYXkoYS5jKSsiIGV4cGVjdGluZyBzZXQgIithLmV4cGVjdGluZzphIGluc3RhbmNlb2YgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRSYW5nZUV4Y2VwdGlvbj9jPSJtaXNtYXRjaGVkIGNoYXJhY3RlciAiK3RoaXMuZ2V0Q2hhckVycm9yRGlzcGxheShhLmMpKyIgZXhwZWN0aW5nIHNldCAiK3RoaXMuZ2V0Q2hhckVycm9yRGlzcGxheShhLmEpKyIuLiIrdGhpcy5nZXRDaGFyRXJyb3JEaXNwbGF5KGEuYik6Yz1lLmFudGxyLnJ1bnRpbWUuTGV4ZXIuc3VwZXJjbGFzcy5nZXRFcnJvck1lc3NhZ2UuY2FsbCh0aGlzLGEsYiksY30sZ2V0Q2hhckVycm9yRGlzcGxheTpmdW5jdGlvbihhKXt2YXIgYj1hO3N3aXRjaChiKXtjYXNlIGUuYW50bHIucnVudGltZS5Ub2tlbi5FT0Y6Yj0iPEVPRj4iO2JyZWFrO2Nhc2UiXG4iOmI9IlxcbiI7YnJlYWs7Y2FzZSIJIjpiPSJcXHQiO2JyZWFrO2Nhc2UiXHIiOmI9IlxcciJ9cmV0dXJuIiciK2IrIicifSxyZWNvdmVyOmZ1bmN0aW9uKGEpe3RoaXMuaW5wdXQuY29uc3VtZSgpfSx0cmFjZUluOmZ1bmN0aW9uKGEsYil7dmFyIGM9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmlucHV0LkxUKDEpKSsiIGxpbmU9Iit0aGlzLmdldExpbmUoKSsiOiIrdGhpcy5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKTtlLmFudGxyLnJ1bnRpbWUuTGV4ZXIuc3VwZXJjbGFzcy50cmFjZUluLmNhbGwodGhpcyxhLGIsYyl9LHRyYWNlT3V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmlucHV0LkxUKDEpKSsiIGxpbmU9Iit0aGlzLmdldExpbmUoKSsiOiIrdGhpcy5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKTtlLmFudGxyLnJ1bnRpbWUuTGV4ZXIuc3VwZXJjbGFzcy50cmFjZU91dC5jYWxsKHRoaXMsYSxiLGMpfX0pLGUuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGU9ZnVuY3Rpb24oKXt9LGUuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUucHJvdG90eXBlPXtnZXRTdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0fSxnZXRTdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcH19LGUuYW50bHIucnVudGltZS50cmVlLlRyZWVSdWxlUmV0dXJuU2NvcGU9ZnVuY3Rpb24oKXt9LGUuYW50bHIucnVudGltZS50cmVlLlRyZWVSdWxlUmV0dXJuU2NvcGUucHJvdG90eXBlPXtnZXRTdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0fX0sZS5hbnRsci5ydW50aW1lLlBhcnNlcj1mdW5jdGlvbihhLGIpe2UuYW50bHIucnVudGltZS5QYXJzZXIuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYiksdGhpcy5zZXRUb2tlblN0cmVhbShhKX0sZS5hbnRsci5sYW5nLmV4dGVuZChlLmFudGxyLnJ1bnRpbWUuUGFyc2VyLGUuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplcix7cmVzZXQ6ZnVuY3Rpb24oKXtlLmFudGxyLnJ1bnRpbWUuUGFyc2VyLnN1cGVyY2xhc3MucmVzZXQuY2FsbCh0aGlzKSxlLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLmlucHV0KSYmdGhpcy5pbnB1dC5zZWVrKDApfSxnZXRDdXJyZW50SW5wdXRTeW1ib2w6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuTFQoMSl9LGdldE1pc3NpbmdTeW1ib2w6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGY9IjxtaXNzaW5nICIrdGhpcy5nZXRUb2tlbk5hbWVzKClbY10rIj4iLGc9bmV3IGUuYW50bHIucnVudGltZS5Db21tb25Ub2tlbihjLGYpLGg9YS5MVCgxKSxpO3JldHVybiBoLmdldFR5cGUoKT09PWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0YmJihpPWgsaD1hLkxUKC0xKSxofHwoaD1pKSksZy5saW5lPWguZ2V0TGluZSgpLGcuY2hhclBvc2l0aW9uSW5MaW5lPWguZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCksZy5jaGFubmVsPWUuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUwsZ30sc2V0VG9rZW5TdHJlYW06ZnVuY3Rpb24oYSl7dGhpcy5pbnB1dD1udWxsLHRoaXMucmVzZXQoKSx0aGlzLmlucHV0PWF9LGdldFRva2VuU3RyZWFtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXR9LGdldFNvdXJjZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dC5nZXRTb3VyY2VOYW1lKCl9LHRyYWNlSW46ZnVuY3Rpb24oYSxiKXtlLmFudGxyLnJ1bnRpbWUuUGFyc2VyLnN1cGVyY2xhc3MudHJhY2VJbi5jYWxsKHRoaXMsYSxiLHRoaXMuaW5wdXQuTFQoMSkpfSx0cmFjZU91dDpmdW5jdGlvbihhLGIpe2UuYW50bHIucnVudGltZS5QYXJzZXIuc3VwZXJjbGFzcy50cmFjZU91dC5jYWxsKHRoaXMsYSxiLHRoaXMuaW5wdXQuTFQoMSkpfX0pLGUuYW50bHIucnVudGltZS5ERkE9ZnVuY3Rpb24oKXt9LGUuYW50bHIucnVudGltZS5ERkEucHJvdG90eXBlPXtwcmVkaWN0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubWFyaygpLGM9MCxkLGYsZzt0cnl7Zm9yKDs7KXtkPXRoaXMuc3BlY2lhbFtjXTtpZihkPj0wKXtjPXRoaXMuc3BlY2lhbFN0YXRlVHJhbnNpdGlvbihkLGEpO2lmKGM9PT0tMSlyZXR1cm4gdGhpcy5ub1ZpYWJsZUFsdChjLGEpLDA7YS5jb25zdW1lKCk7Y29udGludWV9aWYodGhpcy5hY2NlcHRbY10+PTEpcmV0dXJuIHRoaXMuYWNjZXB0W2NdO2Y9YS5MQSgxKSxmPT09ZS5hbnRsci5ydW50aW1lLlRva2VuLkVPRj9mPS0xOmUuYW50bHIubGFuZy5pc1N0cmluZyhmKSYmKGY9Zi5jaGFyQ29kZUF0KDApKTtpZihmPj10aGlzLm1pbltjXSYmZjw9dGhpcy5tYXhbY10pe2c9dGhpcy50cmFuc2l0aW9uW2NdW2YtdGhpcy5taW5bY11dO2lmKGc8MCl7aWYodGhpcy5lb3RbY10+PTApe2M9dGhpcy5lb3RbY10sYS5jb25zdW1lKCk7Y29udGludWV9cmV0dXJuIHRoaXMubm9WaWFibGVBbHQoYyxhKSwwfWM9ZyxhLmNvbnN1bWUoKTtjb250aW51ZX1pZih0aGlzLmVvdFtjXT49MCl7Yz10aGlzLmVvdFtjXSxhLmNvbnN1bWUoKTtjb250aW51ZX1yZXR1cm4gZj09ZS5hbnRsci5ydW50aW1lLlRva2VuLkVPRiYmdGhpcy5lb2ZbY10+PTA/dGhpcy5hY2NlcHRbdGhpcy5lb2ZbY11dOih0aGlzLm5vVmlhYmxlQWx0KGMsYSksMCl9fWZpbmFsbHl7YS5yZXdpbmQoYil9fSxub1ZpYWJsZUFsdDpmdW5jdGlvbihhLGIpe2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dmFyIGM9bmV3IGUuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksdGhpcy5kZWNpc2lvbk51bWJlcixhLGIpO3Rocm93IHRoaXMuZXJyb3IoYyksY30sZXJyb3I6ZnVuY3Rpb24oYSl7fSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGEsYil7cmV0dXJuLTF9LGdldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIm4vYSJ9fSxlLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChlLmFudGxyLnJ1bnRpbWUuREZBLHt1bnBhY2tFbmNvZGVkU3RyaW5nOmZ1bmN0aW9uKGEpe3ZhciBiLGM9W10sZD0wLGUsZixnO2ZvcihiPTA7YjxhLmxlbmd0aDtiKz0yKXtlPWEuY2hhckNvZGVBdChiKSxmPWEuY2hhckNvZGVBdChiKzEpLGY9PT02NTUzNSYmKGY9LTEpO2ZvcihnPTE7Zzw9ZTtnKyspY1tkKytdPWZ9cmV0dXJuIGN9LHVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnM6ZnVuY3Rpb24oYSl7cmV0dXJuIGUuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhhKX19KSxlLmFudGxyLnJ1bnRpbWUudHJlZS5UcmVlUGFyc2VyPWZ1bmN0aW9uKGEpe2UuYW50bHIucnVudGltZS50cmVlLlRyZWVQYXJzZXIuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYXJndW1lbnRzWzFdKSx0aGlzLnNldFRyZWVOb2RlU3RyZWFtKGEpfSxmdW5jdGlvbigpe3ZhciBhPWUuYW50bHIucnVudGltZS50cmVlLlRyZWVQYXJzZXI7ZS5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QoYSx7RE9XTjplLmFudGxyLnJ1bnRpbWUuVG9rZW4uRE9XTixVUDplLmFudGxyLnJ1bnRpbWUuVG9rZW4uVVB9KSxlLmFudGxyLmxhbmcuZXh0ZW5kKGEsZS5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLHtyZXNldDpmdW5jdGlvbigpe2Euc3VwZXJjbGFzcy5yZXNldC5jYWxsKHRoaXMpLHRoaXMuaW5wdXQmJnRoaXMuaW5wdXQuc2VlaygwKX0sc2V0VHJlZU5vZGVTdHJlYW06ZnVuY3Rpb24oYSl7dGhpcy5pbnB1dD1hfSxnZXRUcmVlTm9kZVN0cmVhbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0fSxnZXRTb3VyY2VOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuZ2V0U291cmNlTmFtZSgpfSxnZXRDdXJyZW50SW5wdXRTeW1ib2w6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuTFQoMSl9LGdldE1pc3NpbmdTeW1ib2w6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGY9IjxtaXNzaW5nICIrdGhpcy5nZXRUb2tlbk5hbWVzKClbY10rIj4iO3JldHVybiBuZXcgZS5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZShuZXcgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKGMsZikpfSxtYXRjaEFueTpmdW5jdGlvbihiKXt0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITE7dmFyIGM9dGhpcy5pbnB1dC5MVCgxKTtpZih0aGlzLmlucHV0LmdldFRyZWVBZGFwdG9yKCkuZ2V0Q2hpbGRDb3VudChjKT09PTApe3RoaXMuaW5wdXQuY29uc3VtZSgpO3JldHVybn12YXIgZD0wLGY9dGhpcy5pbnB1dC5nZXRUcmVlQWRhcHRvcigpLmdldFR5cGUoYyk7d2hpbGUoZiE9PWUuYW50bHIucnVudGltZS5Ub2tlbi5FT0YmJihmIT09YS5VUHx8ZCE9PTApKXRoaXMuaW5wdXQuY29uc3VtZSgpLGM9dGhpcy5pbnB1dC5MVCgxKSxmPXRoaXMuaW5wdXQuZ2V0VHJlZUFkYXB0b3IoKS5nZXRUeXBlKGMpLGY9PT1hLkRPV04/ZCsrOmY9PT1hLlVQJiZkLS07dGhpcy5pbnB1dC5jb25zdW1lKCl9LG1pc21hdGNoOmZ1bmN0aW9uKGEsYixjKXt0aHJvdyBuZXcgZS5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUcmVlTm9kZUV4Y2VwdGlvbihiLGEpfSxnZXRFcnJvckhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXRHcmFtbWFyRmlsZU5hbWUoKSsiOiBub2RlIGZyb20gIisoYS5hcHByb3hpbWF0ZUxpbmVJbmZvPyJhZnRlciAiOiIiKSsibGluZSAiK2EubGluZSsiOiIrYS5jaGFyUG9zaXRpb25JbkxpbmV9LGdldEVycm9yTWVzc2FnZTpmdW5jdGlvbihiLGMpe3ZhciBkO3JldHVybiB0aGlzIGluc3RhbmNlb2YgYSYmKGQ9Yi5pbnB1dC5nZXRUcmVlQWRhcHRvcigpLGIudG9rZW49ZC5nZXRUb2tlbihiLm5vZGUpLGUuYW50bHIubGFuZy5pc1ZhbHVlKGIudG9rZW4pfHwoYi50b2tlbj1uZXcgZS5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKGQuZ2V0VHlwZShiLm5vZGUpLGQuZ2V0VGV4dChiLm5vZGUpKSkpLGEuc3VwZXJjbGFzcy5nZXRFcnJvck1lc3NhZ2UuY2FsbCh0aGlzLGIsYyl9LHRyYWNlSW46ZnVuY3Rpb24oYixjKXthLnN1cGVyY2xhc3MudHJhY2VJbi5jYWxsKHRoaXMsYixjLHRoaXMuaW5wdXQuTFQoMSkpfSx0cmFjZU91dDpmdW5jdGlvbihiLGMpe2Euc3VwZXJjbGFzcy50cmFjZU91dC5jYWxsKHRoaXMsYixjLHRoaXMuaW5wdXQuTFQoMSkpfX0pfSgpLGIub3JnPWV9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeS9YUXVlcnlMZXhlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL3hxdWVyeS9hbnRscjMtYWxsIiwiYWNlL21vZGUveHF1ZXJ5L1hRRFRMZXhlciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2FudGxyMy1hbGwiKS5vcmcsZT1hKCIuL1hRRFRMZXhlciIpLlhRRFRMZXhlcixmPWZ1bmN0aW9uKGEsYil7Ynx8KGI9bmV3IGQuYW50bHIucnVudGltZS5SZWNvZ25pemVyU2hhcmVkU3RhdGUpLGZ1bmN0aW9uKCl7dGhpcy5pblN0cj0hMX0uY2FsbCh0aGlzKSx0aGlzLmRmYTE5PW5ldyBmLkRGQTE5KHRoaXMpLGYuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSxiKX07ZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QoZix7RU9GOi0xLExfUXVvdEF0dHJDb250ZW50Q2hhcjo0LExfQXBvc0F0dHJDb250ZW50Q2hhcjo1LExfRWxlbWVudENvbnRlbnRDaGFyOjYsTF9DRGF0YVNlY3Rpb246NyxMX1ByZWRlZmluZWRFbnRpdHlSZWY6OCxMX0NoYXJSZWY6OSxFU0NBUEVfTEJSQUNLRVQ6MTAsRVNDQVBFX1JCUkFDS0VUOjExLEVTQ0FQRV9BUE9TOjEyLEVTQ0FQRV9RVU9UOjEzLENEQVRBX1NUQVJUOjE0LENEQVRBX0VORDoxNSxBTkNFU1RPUjoxNixBTkNFU1RPUl9PUl9TRUxGOjE3LEFORDoxOCxBUzoxOSxBU0NFTkRJTkc6MjAsQVQ6MjEsQVRUUklCVVRFOjIyLEJBU0VfVVJJOjIzLEJPVU5EQVJZX1NQQUNFOjI0LEJZOjI1LENBU0U6MjYsQ0FTVDoyNyxDQVNUQUJMRToyOCxDSElMRDoyOSxDT0xMQVRJT046MzAsQ09NTUVOVDozMSxDT05TVFJVQ1RJT046MzIsQ09QWV9OQU1FU1BBQ0VTOjMzLERFQ0xBUkU6MzQsREVGQVVMVDozNSxERVNDRU5EQU5UOjM2LERFU0NFTkRBTlRfT1JfU0VMRjozNyxERVNDRU5ESU5HOjM4LERJVjozOSxET0NVTUVOVDo0MCxET0NVTUVOVF9OT0RFOjQxLEVMRU1FTlQ6NDIsRUxTRTo0MyxFTVBUWTo0NCxFTVBUWV9TRVFVRU5DRTo0NSxFTkNPRElORzo0NixFUTo0NyxFVkVSWTo0OCxFWENFUFQ6NDksRVhURVJOQUw6NTAsRk9MTE9XSU5HOjUxLEZPTExPV0lOR19TSUJMSU5HOjUyLEZPUjo1MyxGVU5DVElPTjo1NCxHRTo1NSxHUkVBVEVTVDo1NixHVDo1NyxJRElWOjU4LElGOjU5LElNUE9SVDo2MCxJTjo2MSxJTkhFUklUOjYyLElOU1RBTkNFOjYzLElOVEVSU0VDVDo2NCxJUzo2NSxJVEVNOjY2LExBWDo2NyxMRTo2OCxMRUFTVDo2OSxMRVQ6NzAsTFQ6NzEsTU9EOjcyLE1PRFVMRTo3MyxOQU1FU1BBQ0U6NzQsTkU6NzUsTk9fSU5IRVJJVDo3NixOT19QUkVTRVJWRTo3NyxOT0RFOjc4LE9GOjc5LE9QVElPTjo4MCxPUjo4MSxPUkRFUjo4MixPUkRFUkVEOjgzLE9SREVSSU5HOjg0LFBBUkVOVDo4NSxQUkVDRURJTkc6ODYsUFJFQ0VESU5HX1NJQkxJTkc6ODcsUFJFU0VSVkU6ODgsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo4OSxSRVRVUk46OTAsU0FUSVNGSUVTOjkxLFNDSEVNQTo5MixTQ0hFTUFfQVRUUklCVVRFOjkzLFNDSEVNQV9FTEVNRU5UOjk0LFNFTEY6OTUsU09NRTo5NixTVEFCTEU6OTcsU1RSSUNUOjk4LFNUUklQOjk5LFRFWFQ6MTAwLFRIRU46MTAxLFRPOjEwMixUUkVBVDoxMDMsVFlQRVNXSVRDSDoxMDQsVU5JT046MTA1LFVOT1JERVJFRDoxMDYsVkFMSURBVEU6MTA3LFZBUklBQkxFOjEwOCxWRVJTSU9OOjEwOSxXSEVSRToxMTAsWFFVRVJZOjExMSxBTExPV0lORzoxMTIsQ0FUQ0g6MTEzLENPTlRFWFQ6MTE0LENPVU5UOjExNSxERUNJTUFMX0ZPUk1BVDoxMTYsREVDSU1BTF9TRVBBUkFUT1I6MTE3LERJR0lUOjExOCxFTkQ6MTE5LEdST1VQOjEyMCxHUk9VUElOR19TRVBBUkFUT1I6MTIxLElORklOSVRZOjEyMixNSU5VU19TSUdOOjEyMyxOQU1FU1BBQ0VfTk9ERToxMjQsTkFOOjEyNSxORVhUOjEyNixPTkxZOjEyNyxQQVRURVJOX1NFUEFSQVRPUjoxMjgsUEVSQ0VOVDoxMjksUEVSX01JTExFOjEzMCxQUkVWSU9VUzoxMzEsU0xJRElORzoxMzIsU1RBUlQ6MTMzLFNXSVRDSDoxMzQsVFJZOjEzNSxUVU1CTElORzoxMzYsVFlQRToxMzcsV0hFTjoxMzgsV0lORE9XOjEzOSxaRVJPX0RJR0lUOjE0MCxBRlRFUjoxNDEsQkVGT1JFOjE0MixDT1BZOjE0MyxERUxFVEU6MTQ0LEZJUlNUOjE0NSxJTlNFUlQ6MTQ2LElOVE86MTQ3LExBU1Q6MTQ4LE1PRElGWToxNDksTk9ERVM6MTUwLFJFTkFNRToxNTEsUkVQTEFDRToxNTIsUkVWQUxJREFUSU9OOjE1MyxTS0lQOjE1NCxVUERBVElORzoxNTUsVkFMVUU6MTU2LFdJVEg6MTU3LEFMTDoxNTgsQU5ZOjE1OSxDT05UQUlOUzoxNjAsQ09OVEVOVDoxNjEsRElBQ1JJVElDUzoxNjIsRElGRkVSRU5UOjE2MyxESVNUQU5DRToxNjQsRU5USVJFOjE2NSxFWEFDVExZOjE2NixGUk9NOjE2NyxGVF9PUFRJT046MTY4LEZUQU5EOjE2OSxGVE5PVDoxNzAsRlRPUjoxNzEsSU5TRU5TSVRJVkU6MTcyLExBTkdVQUdFOjE3MyxMRVZFTFM6MTc0LExPV0VSQ0FTRToxNzUsTU9TVDoxNzYsTk86MTc3LE5PVDoxNzgsT0NDVVJTOjE3OSxQQVJBR1JBUEg6MTgwLFBBUkFHUkFQSFM6MTgxLFBIUkFTRToxODIsUkVMQVRJT05TSElQOjE4MyxTQU1FOjE4NCxTQ09SRToxODUsU0VOU0lUSVZFOjE4NixTRU5URU5DRToxODcsU0VOVEVOQ0VTOjE4OCxTVEVNTUlORzoxODksU1RPUDoxOTAsVEhFU0FVUlVTOjE5MSxUSU1FUzoxOTIsVVBQRVJDQVNFOjE5MyxVU0lORzoxOTQsV0VJR0hUOjE5NSxXSUxEQ0FSRFM6MTk2LFdJVEhPVVQ6MTk3LFdPUkQ6MTk4LFdPUkRTOjE5OSxCUkVBSzoyMDAsQ09OVElOVUU6MjAxLEVYSVQ6MjAyLExPT1A6MjAzLFJFVFVSTklORzoyMDQsV0hJTEU6MjA1LENIRUNLOjIwNixDT0xMRUNUSU9OOjIwNyxDT05TVFJBSU5UOjIwOCxGT1JFQUNIOjIwOSxGT1JFSUdOOjIxMCxJTkRFWDoyMTEsSU5URUdSSVRZOjIxMixLRVk6MjEzLE9OOjIxNCxVTklRVUU6MjE1LEJJTkFSWToyMTYsQU1QX0VSOjIxNyxBUE9TX0VSOjIxOCxRVU9UX0VSOjIxOSxDT05DQVQ6MjIwLExQQVJFTjoyMjEsUlBBUkVOOjIyMixET0xMQVI6MjIzLExCUkFDS0VUOjIyNCxSQlJBQ0tFVDoyMjUsTFNRVUFSRToyMjYsUlNRVUFSRToyMjcsRVFVQUw6MjI4LEJJTkQ6MjI5LE5PVEVRVUFMOjIzMCxBTk5fUEVSQ0VOVDoyMzEsSEFTSDoyMzIsQU1QOjIzMyxDT01NQToyMzQsUVVFU1RJT046MjM1LFNUQVI6MjM2LFBMVVM6MjM3LE1JTlVTOjIzOCxTTUFMTEVSOjIzOSxHUkVBVEVSOjI0MCxTTUFMTEVSRVE6MjQxLEdSRUFURVJFUToyNDIsU01BTExFUl9TTUFMTEVSOjI0MyxHUkVBVEVSX0dSRUFURVI6MjQ0LFNMQVNIOjI0NSxTTEFTSF9TTEFTSDoyNDYsRE9UOjI0NyxET1RfRE9UOjI0OCxDT0xPTjoyNDksQ09MT05fQ09MT046MjUwLEVNUFRZX0NMT1NFX1RBRzoyNTEsQ0xPU0VfVEFHOjI1MixTRU1JQ09MT046MjUzLFZCQVI6MjU0LFBSQUdNQV9TVEFSVDoyNTUsUFJBR01BX0VORDoyNTYsWE1MX0NPTU1FTlRfU1RBUlQ6MjU3LFhNTF9DT01NRU5UX0VORDoyNTgsUElfU1RBUlQ6MjU5LFBJX0VORDoyNjAsQVRUUl9TSUdOOjI2MSxDSEFSUkVGX0RFQzoyNjIsQ0hBUlJFRl9IRVg6MjYzLEFQT1M6MjY0LFFVT1Q6MjY1LE5DTmFtZVN0YXJ0Q2hhcjoyNjYsTkNOYW1lQ2hhcjoyNjcsTF9OQ05hbWU6MjY4LExldHRlcjoyNjksSGV4TGV0dGVyOjI3MCxEaWdpdDoyNzEsRGlnaXRzOjI3MixTOjI3MyxTVToyNzQsTF9QcmFnbWE6Mjc1LExfRGlyQ29tbWVudENvbnN0cnVjdG9yOjI3NixMX0RpclBJQ29uc3RydWN0b3I6Mjc3LExfSW50ZWdlckxpdGVyYWw6Mjc4LExfRGVjaW1hbExpdGVyYWw6Mjc5LExfRG91YmxlTGl0ZXJhbDoyODAsTF9Db21tZW50OjI4MSxMX0FueUNoYXI6MjgyfSksZnVuY3Rpb24oKXt2YXIgYT1kLmFudGxyLnJ1bnRpbWUuVG9rZW4uSElEREVOX0NIQU5ORUwsYj1kLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GO2QuYW50bHIubGFuZy5leHRlbmQoZixlLHtFT0Y6LTEsTF9RdW90QXR0ckNvbnRlbnRDaGFyOjQsTF9BcG9zQXR0ckNvbnRlbnRDaGFyOjUsTF9FbGVtZW50Q29udGVudENoYXI6NixMX0NEYXRhU2VjdGlvbjo3LExfUHJlZGVmaW5lZEVudGl0eVJlZjo4LExfQ2hhclJlZjo5LEVTQ0FQRV9MQlJBQ0tFVDoxMCxFU0NBUEVfUkJSQUNLRVQ6MTEsRVNDQVBFX0FQT1M6MTIsRVNDQVBFX1FVT1Q6MTMsQ0RBVEFfU1RBUlQ6MTQsQ0RBVEFfRU5EOjE1LEFOQ0VTVE9SOjE2LEFOQ0VTVE9SX09SX1NFTEY6MTcsQU5EOjE4LEFTOjE5LEFTQ0VORElORzoyMCxBVDoyMSxBVFRSSUJVVEU6MjIsQkFTRV9VUkk6MjMsQk9VTkRBUllfU1BBQ0U6MjQsQlk6MjUsQ0FTRToyNixDQVNUOjI3LENBU1RBQkxFOjI4LENISUxEOjI5LENPTExBVElPTjozMCxDT01NRU5UOjMxLENPTlNUUlVDVElPTjozMixDT1BZX05BTUVTUEFDRVM6MzMsREVDTEFSRTozNCxERUZBVUxUOjM1LERFU0NFTkRBTlQ6MzYsREVTQ0VOREFOVF9PUl9TRUxGOjM3LERFU0NFTkRJTkc6MzgsRElWOjM5LERPQ1VNRU5UOjQwLERPQ1VNRU5UX05PREU6NDEsRUxFTUVOVDo0MixFTFNFOjQzLEVNUFRZOjQ0LEVNUFRZX1NFUVVFTkNFOjQ1LEVOQ09ESU5HOjQ2LEVROjQ3LEVWRVJZOjQ4LEVYQ0VQVDo0OSxFWFRFUk5BTDo1MCxGT0xMT1dJTkc6NTEsRk9MTE9XSU5HX1NJQkxJTkc6NTIsRk9SOjUzLEZVTkNUSU9OOjU0LEdFOjU1LEdSRUFURVNUOjU2LEdUOjU3LElESVY6NTgsSUY6NTksSU1QT1JUOjYwLElOOjYxLElOSEVSSVQ6NjIsSU5TVEFOQ0U6NjMsSU5URVJTRUNUOjY0LElTOjY1LElURU06NjYsTEFYOjY3LExFOjY4LExFQVNUOjY5LExFVDo3MCxMVDo3MSxNT0Q6NzIsTU9EVUxFOjczLE5BTUVTUEFDRTo3NCxORTo3NSxOT19JTkhFUklUOjc2LE5PX1BSRVNFUlZFOjc3LE5PREU6NzgsT0Y6NzksT1BUSU9OOjgwLE9SOjgxLE9SREVSOjgyLE9SREVSRUQ6ODMsT1JERVJJTkc6ODQsUEFSRU5UOjg1LFBSRUNFRElORzo4NixQUkVDRURJTkdfU0lCTElORzo4NyxQUkVTRVJWRTo4OCxQUk9DRVNTSU5HX0lOU1RSVUNUSU9OOjg5LFJFVFVSTjo5MCxTQVRJU0ZJRVM6OTEsU0NIRU1BOjkyLFNDSEVNQV9BVFRSSUJVVEU6OTMsU0NIRU1BX0VMRU1FTlQ6OTQsU0VMRjo5NSxTT01FOjk2LFNUQUJMRTo5NyxTVFJJQ1Q6OTgsU1RSSVA6OTksVEVYVDoxMDAsVEhFTjoxMDEsVE86MTAyLFRSRUFUOjEwMyxUWVBFU1dJVENIOjEwNCxVTklPTjoxMDUsVU5PUkRFUkVEOjEwNixWQUxJREFURToxMDcsVkFSSUFCTEU6MTA4LFZFUlNJT046MTA5LFdIRVJFOjExMCxYUVVFUlk6MTExLEFMTE9XSU5HOjExMixDQVRDSDoxMTMsQ09OVEVYVDoxMTQsQ09VTlQ6MTE1LERFQ0lNQUxfRk9STUFUOjExNixERUNJTUFMX1NFUEFSQVRPUjoxMTcsRElHSVQ6MTE4LEVORDoxMTksR1JPVVA6MTIwLEdST1VQSU5HX1NFUEFSQVRPUjoxMjEsSU5GSU5JVFk6MTIyLE1JTlVTX1NJR046MTIzLE5BTUVTUEFDRV9OT0RFOjEyNCxOQU46MTI1LE5FWFQ6MTI2LE9OTFk6MTI3LFBBVFRFUk5fU0VQQVJBVE9SOjEyOCxQRVJDRU5UOjEyOSxQRVJfTUlMTEU6MTMwLFBSRVZJT1VTOjEzMSxTTElESU5HOjEzMixTVEFSVDoxMzMsU1dJVENIOjEzNCxUUlk6MTM1LFRVTUJMSU5HOjEzNixUWVBFOjEzNyxXSEVOOjEzOCxXSU5ET1c6MTM5LFpFUk9fRElHSVQ6MTQwLEFGVEVSOjE0MSxCRUZPUkU6MTQyLENPUFk6MTQzLERFTEVURToxNDQsRklSU1Q6MTQ1LElOU0VSVDoxNDYsSU5UTzoxNDcsTEFTVDoxNDgsTU9ESUZZOjE0OSxOT0RFUzoxNTAsUkVOQU1FOjE1MSxSRVBMQUNFOjE1MixSRVZBTElEQVRJT046MTUzLFNLSVA6MTU0LFVQREFUSU5HOjE1NSxWQUxVRToxNTYsV0lUSDoxNTcsQUxMOjE1OCxBTlk6MTU5LENPTlRBSU5TOjE2MCxDT05URU5UOjE2MSxESUFDUklUSUNTOjE2MixESUZGRVJFTlQ6MTYzLERJU1RBTkNFOjE2NCxFTlRJUkU6MTY1LEVYQUNUTFk6MTY2LEZST006MTY3LEZUX09QVElPTjoxNjgsRlRBTkQ6MTY5LEZUTk9UOjE3MCxGVE9SOjE3MSxJTlNFTlNJVElWRToxNzIsTEFOR1VBR0U6MTczLExFVkVMUzoxNzQsTE9XRVJDQVNFOjE3NSxNT1NUOjE3NixOTzoxNzcsTk9UOjE3OCxPQ0NVUlM6MTc5LFBBUkFHUkFQSDoxODAsUEFSQUdSQVBIUzoxODEsUEhSQVNFOjE4MixSRUxBVElPTlNISVA6MTgzLFNBTUU6MTg0LFNDT1JFOjE4NSxTRU5TSVRJVkU6MTg2LFNFTlRFTkNFOjE4NyxTRU5URU5DRVM6MTg4LFNURU1NSU5HOjE4OSxTVE9QOjE5MCxUSEVTQVVSVVM6MTkxLFRJTUVTOjE5MixVUFBFUkNBU0U6MTkzLFVTSU5HOjE5NCxXRUlHSFQ6MTk1LFdJTERDQVJEUzoxOTYsV0lUSE9VVDoxOTcsV09SRDoxOTgsV09SRFM6MTk5LEJSRUFLOjIwMCxDT05USU5VRToyMDEsRVhJVDoyMDIsTE9PUDoyMDMsUkVUVVJOSU5HOjIwNCxXSElMRToyMDUsQ0hFQ0s6MjA2LENPTExFQ1RJT046MjA3LENPTlNUUkFJTlQ6MjA4LEZPUkVBQ0g6MjA5LEZPUkVJR046MjEwLElOREVYOjIxMSxJTlRFR1JJVFk6MjEyLEtFWToyMTMsT046MjE0LFVOSVFVRToyMTUsQklOQVJZOjIxNixBTVBfRVI6MjE3LEFQT1NfRVI6MjE4LFFVT1RfRVI6MjE5LENPTkNBVDoyMjAsTFBBUkVOOjIyMSxSUEFSRU46MjIyLERPTExBUjoyMjMsTEJSQUNLRVQ6MjI0LFJCUkFDS0VUOjIyNSxMU1FVQVJFOjIyNixSU1FVQVJFOjIyNyxFUVVBTDoyMjgsQklORDoyMjksTk9URVFVQUw6MjMwLEFOTl9QRVJDRU5UOjIzMSxIQVNIOjIzMixBTVA6MjMzLENPTU1BOjIzNCxRVUVTVElPTjoyMzUsU1RBUjoyMzYsUExVUzoyMzcsTUlOVVM6MjM4LFNNQUxMRVI6MjM5LEdSRUFURVI6MjQwLFNNQUxMRVJFUToyNDEsR1JFQVRFUkVROjI0MixTTUFMTEVSX1NNQUxMRVI6MjQzLEdSRUFURVJfR1JFQVRFUjoyNDQsU0xBU0g6MjQ1LFNMQVNIX1NMQVNIOjI0NixET1Q6MjQ3LERPVF9ET1Q6MjQ4LENPTE9OOjI0OSxDT0xPTl9DT0xPTjoyNTAsRU1QVFlfQ0xPU0VfVEFHOjI1MSxDTE9TRV9UQUc6MjUyLFNFTUlDT0xPTjoyNTMsVkJBUjoyNTQsUFJBR01BX1NUQVJUOjI1NSxQUkFHTUFfRU5EOjI1NixYTUxfQ09NTUVOVF9TVEFSVDoyNTcsWE1MX0NPTU1FTlRfRU5EOjI1OCxQSV9TVEFSVDoyNTksUElfRU5EOjI2MCxBVFRSX1NJR046MjYxLENIQVJSRUZfREVDOjI2MixDSEFSUkVGX0hFWDoyNjMsQVBPUzoyNjQsUVVPVDoyNjUsTkNOYW1lU3RhcnRDaGFyOjI2NixOQ05hbWVDaGFyOjI2NyxMX05DTmFtZToyNjgsTGV0dGVyOjI2OSxIZXhMZXR0ZXI6MjcwLERpZ2l0OjI3MSxEaWdpdHM6MjcyLFM6MjczLFNVOjI3NCxMX1ByYWdtYToyNzUsTF9EaXJDb21tZW50Q29uc3RydWN0b3I6Mjc2LExfRGlyUElDb25zdHJ1Y3RvcjoyNzcsTF9JbnRlZ2VyTGl0ZXJhbDoyNzgsTF9EZWNpbWFsTGl0ZXJhbDoyNzksTF9Eb3VibGVMaXRlcmFsOjI4MCxMX0NvbW1lbnQ6MjgxLExfQW55Q2hhcjoyODIsZ2V0R3JhbW1hckZpbGVOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuInhxdWVyeS9YUXVlcnlMZXhlci5nIn19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChmLnByb3RvdHlwZSx7bUFOQ0VTVE9SOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQU5DRVNUT1IsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFuY2VzdG9yIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQU5DRVNUT1JfT1JfU0VMRjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFOQ0VTVE9SX09SX1NFTEYsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFuY2VzdG9yLW9yLXNlbGYiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1BTkQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5BTkQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFuZCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUFTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQVMsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFzIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQVNDRU5ESU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQVNDRU5ESU5HLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhc2NlbmRpbmciKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1BVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhdCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUFUVFJJQlVURTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFUVFJJQlVURSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYXR0cmlidXRlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQkFTRV9VUkk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5CQVNFX1VSSSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYmFzZS11cmkiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1CT1VOREFSWV9TUEFDRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkJPVU5EQVJZX1NQQUNFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJib3VuZGFyeS1zcGFjZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUJZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQlksYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImJ5IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ0FTRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNBU0UsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNhc2UiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DQVNUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ0FTVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY2FzdCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNBU1RBQkxFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ0FTVEFCTEUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNhc3RhYmxlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ0hJTEQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DSElMRCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY2hpbGQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DT0xMQVRJT046ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DT0xMQVRJT04sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvbGxhdGlvbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNPTU1FTlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DT01NRU5ULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb21tZW50IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ09OU1RSVUNUSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ09OU1RSVUNUSU9OLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb25zdHJ1Y3Rpb24iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DT1BZX05BTUVTUEFDRVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DT1BZX05BTUVTUEFDRVMsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvcHktbmFtZXNwYWNlcyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbURFQ0xBUkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5ERUNMQVJFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkZWNsYXJlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtREVGQVVMVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkRFRkFVTFQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRlZmF1bHQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ERVNDRU5EQU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuREVTQ0VOREFOVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGVzY2VuZGFudCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbURFU0NFTkRBTlRfT1JfU0VMRjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkRFU0NFTkRBTlRfT1JfU0VMRixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGVzY2VuZGFudC1vci1zZWxmIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtREVTQ0VORElORzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkRFU0NFTkRJTkcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRlc2NlbmRpbmciKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ESVY6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5ESVYsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRpdiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbURPQ1VNRU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRE9DVU1FTlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRvY3VtZW50IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRE9DVU1FTlRfTk9ERTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkRPQ1VNRU5UX05PREUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRvY3VtZW50LW5vZGUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FTEVNRU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRUxFTUVOVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZWxlbWVudCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVMU0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FTFNFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJlbHNlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRU1QVFk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FTVBUWSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZW1wdHkiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FTVBUWV9TRVFVRU5DRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkVNUFRZX1NFUVVFTkNFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJlbXB0eS1zZXF1ZW5jZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVOQ09ESU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRU5DT0RJTkcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImVuY29kaW5nIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRVE6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FUSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZXEiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FVkVSWTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkVWRVJZLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJldmVyeSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVYQ0VQVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkVYQ0VQVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZXhjZXB0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRVhURVJOQUw6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FWFRFUk5BTCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZXh0ZXJuYWwiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1GT0xMT1dJTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5GT0xMT1dJTkcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZvbGxvd2luZyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUZPTExPV0lOR19TSUJMSU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRk9MTE9XSU5HX1NJQkxJTkcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZvbGxvd2luZy1zaWJsaW5nIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRk9SOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRk9SLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmb3IiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1GVU5DVElPTjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkZVTkNUSU9OLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmdW5jdGlvbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUdFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuR0UsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImdlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtR1JFQVRFU1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5HUkVBVEVTVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZ3JlYXRlc3QiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1HVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkdULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJndCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUlESVY6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5JRElWLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpZGl2IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtSUY6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5JRixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaWYiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1JTVBPUlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5JTVBPUlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImltcG9ydCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUlOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuSU4sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImluIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtSU5IRVJJVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLklOSEVSSVQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImluaGVyaXQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1JTlNUQU5DRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLklOU1RBTkNFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbnN0YW5jZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUlOVEVSU0VDVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLklOVEVSU0VDVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaW50ZXJzZWN0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtSVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5JUyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaXMiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1JVEVNOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuSVRFTSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaXRlbSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxBWDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxBWCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibGF4IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibGUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MRUFTVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxFQVNULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJsZWFzdCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxFVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxFVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibGV0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTFQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibHQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1NT0Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5NT0QsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm1vZCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU1PRFVMRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk1PRFVMRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibW9kdWxlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTkFNRVNQQUNFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTkFNRVNQQUNFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJuYW1lc3BhY2UiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ORTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk5FLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJuZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU5PX0lOSEVSSVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5OT19JTkhFUklULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJuby1pbmhlcml0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTk9fUFJFU0VSVkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5OT19QUkVTRVJWRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibm8tcHJlc2VydmUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1OT0RFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTk9ERSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibm9kZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU9GOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuT0YsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm9mIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtT1BUSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuT1BUSU9OLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvcHRpb24iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1PUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk9SLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvciIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU9SREVSOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuT1JERVIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm9yZGVyIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtT1JERVJFRDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk9SREVSRUQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm9yZGVyZWQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1PUkRFUklORzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk9SREVSSU5HLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvcmRlcmluZyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVBBUkVOVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlBBUkVOVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicGFyZW50IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUFJFQ0VESU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUFJFQ0VESU5HLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJwcmVjZWRpbmciKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1QUkVDRURJTkdfU0lCTElORzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlBSRUNFRElOR19TSUJMSU5HLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJwcmVjZWRpbmctc2libGluZyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVBSRVNFUlZFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUFJFU0VSVkUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInByZXNlcnZlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUFJPQ0VTU0lOR19JTlNUUlVDVElPTjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlBST0NFU1NJTkdfSU5TVFJVQ1RJT04sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInByb2Nlc3NpbmctaW5zdHJ1Y3Rpb24iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1SRVRVUk46ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5SRVRVUk4sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInJldHVybiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNBVElTRklFUzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNBVElTRklFUyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2F0aXNmaWVzIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU0NIRU1BOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU0NIRU1BLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzY2hlbWEiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TQ0hFTUFfQVRUUklCVVRFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU0NIRU1BX0FUVFJJQlVURSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2NoZW1hLWF0dHJpYnV0ZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNDSEVNQV9FTEVNRU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU0NIRU1BX0VMRU1FTlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNjaGVtYS1lbGVtZW50IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU0VMRjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNFTEYsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNlbGYiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TT01FOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU09NRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic29tZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNUQUJMRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNUQUJMRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic3RhYmxlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU1RSSUNUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU1RSSUNULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzdHJpY3QiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TVFJJUDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNUUklQLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzdHJpcCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVRFWFQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5URVhULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0ZXh0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVEhFTjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlRIRU4sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInRoZW4iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1UTzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlRPLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0byIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVRSRUFUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuVFJFQVQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInRyZWF0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVFlQRVNXSVRDSDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlRZUEVTV0lUQ0gsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInR5cGVzd2l0Y2giKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1VTklPTjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlVOSU9OLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ1bmlvbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVVOT1JERVJFRDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlVOT1JERVJFRCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidW5vcmRlcmVkIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVkFMSURBVEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5WQUxJREFURSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidmFsaWRhdGUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1WQVJJQUJMRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlZBUklBQkxFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ2YXJpYWJsZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVZFUlNJT046ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5WRVJTSU9OLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ2ZXJzaW9uIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtV0hFUkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5XSEVSRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgid2hlcmUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1YUVVFUlk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5YUVVFUlksYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInhxdWVyeSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUFMTE9XSU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQUxMT1dJTkcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFsbG93aW5nIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ0FUQ0g6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DQVRDSCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY2F0Y2giKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DT05URVhUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ09OVEVYVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY29udGV4dCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNPVU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ09VTlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvdW50IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtREVDSU1BTF9GT1JNQVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5ERUNJTUFMX0ZPUk1BVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGVjaW1hbC1mb3JtYXQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ERUNJTUFMX1NFUEFSQVRPUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkRFQ0lNQUxfU0VQQVJBVE9SLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkZWNpbWFsLXNlcGFyYXRvciIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbURJR0lUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRElHSVQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRpZ2l0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRU5EOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRU5ELGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJlbmQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1HUk9VUDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkdST1VQLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJncm91cCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUdST1VQSU5HX1NFUEFSQVRPUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkdST1VQSU5HX1NFUEFSQVRPUixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZ3JvdXBpbmctc2VwYXJhdG9yIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtSU5GSU5JVFk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5JTkZJTklUWSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaW5maW5pdHkiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1NSU5VU19TSUdOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTUlOVVNfU0lHTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibWludXMtc2lnbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU5BTUVTUEFDRV9OT0RFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTkFNRVNQQUNFX05PREUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm5hbWVzcGFjZS1ub2RlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTkFOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTkFOLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJOYU4iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ORVhUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTkVYVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibmV4dCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU9OTFk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5PTkxZLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvbmx5IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUEFUVEVSTl9TRVBBUkFUT1I6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5QQVRURVJOX1NFUEFSQVRPUixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicGF0dGVybi1zZXBhcmF0b3IiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1QRVJDRU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUEVSQ0VOVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicGVyY2VudCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVBFUl9NSUxMRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlBFUl9NSUxMRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicGVyLW1pbGxlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUFJFVklPVVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5QUkVWSU9VUyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicHJldmlvdXMiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TTElESU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU0xJRElORyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2xpZGluZyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNUQVJUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU1RBUlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInN0YXJ0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU1dJVENIOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU1dJVENILGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzd2l0Y2giKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1UUlk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5UUlksYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInRyeSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVRVTUJMSU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuVFVNQkxJTkcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInR1bWJsaW5nIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVFlQRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlRZUEUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInR5cGUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1XSEVOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuV0hFTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgid2hlbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVdJTkRPVzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLldJTkRPVyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgid2luZG93IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtWkVST19ESUdJVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlpFUk9fRElHSVQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInplcm8tZGlnaXQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1BRlRFUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFGVEVSLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhZnRlciIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUJFRk9SRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkJFRk9SRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYmVmb3JlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ09QWTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNPUFksYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvcHkiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ERUxFVEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5ERUxFVEUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRlbGV0ZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUZJUlNUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRklSU1QsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZpcnN0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtSU5TRVJUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuSU5TRVJULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbnNlcnQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1JTlRPOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuSU5UTyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaW50byIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxBU1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MQVNULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJsYXN0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTU9ESUZZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTU9ESUZZLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJtb2RpZnkiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1OT0RFUzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk5PREVTLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJub2RlcyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVJFTkFNRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlJFTkFNRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicmVuYW1lIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUkVQTEFDRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlJFUExBQ0UsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInJlcGxhY2UiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1SRVZBTElEQVRJT046ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5SRVZBTElEQVRJT04sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInJldmFsaWRhdGlvbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNLSVA6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5TS0lQLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJza2lwIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVVBEQVRJTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5VUERBVElORyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidXBkYXRpbmciKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1WQUxVRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlZBTFVFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ2YWx1ZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVdJVEg6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5XSVRILGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ3aXRoIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQUxMOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQUxMLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhbGwiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1BTlk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5BTlksYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFueSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNPTlRBSU5TOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ09OVEFJTlMsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvbnRhaW5zIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ09OVEVOVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNPTlRFTlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvbnRlbnQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ESUFDUklUSUNTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRElBQ1JJVElDUyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGlhY3JpdGljcyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbURJRkZFUkVOVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkRJRkZFUkVOVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGlmZmVyZW50IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRElTVEFOQ0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5ESVNUQU5DRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGlzdGFuY2UiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FTlRJUkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FTlRJUkUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImVudGlyZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVYQUNUTFk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FWEFDVExZLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJleGFjdGx5IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRlJPTTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkZST00sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZyb20iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1GVF9PUFRJT046ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5GVF9PUFRJT04sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZ0LW9wdGlvbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUZUQU5EOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRlRBTkQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZ0YW5kIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRlROT1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5GVE5PVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZnRub3QiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1GVE9SOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRlRPUixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZnRvciIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUlOU0VOU0lUSVZFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuSU5TRU5TSVRJVkUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImluc2Vuc2l0aXZlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTEFOR1VBR0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MQU5HVUFHRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibGFuZ3VhZ2UiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MRVZFTFM6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MRVZFTFMsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImxldmVscyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxPV0VSQ0FTRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxPV0VSQ0FTRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibG93ZXJjYXNlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTU9TVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk1PU1QsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm1vc3QiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1OTzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk5PLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJubyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU5PVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk5PVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibm90IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtT0NDVVJTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuT0NDVVJTLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvY2N1cnMiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1QQVJBR1JBUEg6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5QQVJBR1JBUEgsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInBhcmFncmFwaCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVBBUkFHUkFQSFM6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5QQVJBR1JBUEhTLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJwYXJhZ3JhcGhzIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUEhSQVNFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUEhSQVNFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJwaHJhc2UiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1SRUxBVElPTlNISVA6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5SRUxBVElPTlNISVAsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInJlbGF0aW9uc2hpcCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNBTUU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5TQU1FLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzYW1lIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU0NPUkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5TQ09SRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2NvcmUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TRU5TSVRJVkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5TRU5TSVRJVkUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNlbnNpdGl2ZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNFTlRFTkNFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU0VOVEVOQ0UsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNlbnRlbmNlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU0VOVEVOQ0VTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU0VOVEVOQ0VTLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzZW50ZW5jZXMiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TVEVNTUlORzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNURU1NSU5HLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzdGVtbWluZyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNUT1A6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5TVE9QLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzdG9wIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVEhFU0FVUlVTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuVEhFU0FVUlVTLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0aGVzYXVydXMiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1USU1FUzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlRJTUVTLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0aW1lcyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVVQUEVSQ0FTRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlVQUEVSQ0FTRSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidXBwZXJjYXNlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVVNJTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5VU0lORyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidXNpbmciKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1XRUlHSFQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5XRUlHSFQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndlaWdodCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVdJTERDQVJEUzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLldJTERDQVJEUyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgid2lsZGNhcmRzIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtV0lUSE9VVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLldJVEhPVVQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndpdGhvdXQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1XT1JEOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuV09SRCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgid29yZCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVdPUkRTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuV09SRFMsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndvcmRzIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQlJFQUs6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5CUkVBSyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYnJlYWsiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DT05USU5VRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNPTlRJTlVFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb250aW51ZSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVYSVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FWElULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJleGl0IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTE9PUDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxPT1AsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImxvb3AiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1SRVRVUk5JTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5SRVRVUk5JTkcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInJldHVybmluZyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVdISUxFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuV0hJTEUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndoaWxlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ0hFQ0s6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DSEVDSyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY2hlY2siKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DT0xMRUNUSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ09MTEVDVElPTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY29sbGVjdGlvbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNPTlNUUkFJTlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DT05TVFJBSU5ULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb25zdHJhaW50IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRk9SRUFDSDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkZPUkVBQ0gsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZvcmVhY2giKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1GT1JFSUdOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRk9SRUlHTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZm9yZWlnbiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUlOREVYOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuSU5ERVgsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImluZGV4IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtSU5URUdSSVRZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuSU5URUdSSVRZLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbnRlZ3JpdHkiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1LRVk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5LRVksYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImtleSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuT04sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm9uIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVU5JUVVFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuVU5JUVVFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ1bmlxdWUiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1CSU5BUlk6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5CSU5BUlksYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImJpbmFyeSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUFNUF9FUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFNUF9FUixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYW1wIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQVBPU19FUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFQT1NfRVIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFwb3MiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1RVU9UX0VSOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUVVPVF9FUixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicXVvdCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNPTkNBVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNPTkNBVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgifHwiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MUEFSRU46ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MUEFSRU4sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIigiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1SUEFSRU46ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5SUEFSRU4sYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIikiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ET0xMQVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5ET0xMQVIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIiQiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MQlJBQ0tFVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxCUkFDS0VULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ7IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUkJSQUNLRVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5SQlJBQ0tFVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgifSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxTUVVBUkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MU1FVQVJFLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJbIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUlNRVUFSRTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlJTUVVBUkUsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIl0iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FUVVBTDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkVRVUFMLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI9IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQklORDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkJJTkQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjo9IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTk9URVFVQUw6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5OT1RFUVVBTCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiIT0iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1BTk5fUEVSQ0VOVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFOTl9QRVJDRU5ULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIlIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtSEFTSDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkhBU0gsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIiMiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1BTVA6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5BTVAsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIiYiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DT01NQTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNPTU1BLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIsIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUVVFU1RJT046ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5RVUVTVElPTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNUQVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5TVEFSLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIqIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUExVUzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlBMVVMsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIisiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1NSU5VUzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLk1JTlVTLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCItIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU01BTExFUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNNQUxMRVIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjwiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1HUkVBVEVSOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuR1JFQVRFUixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNNQUxMRVJFUTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNNQUxMRVJFUSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPD0iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1HUkVBVEVSRVE6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5HUkVBVEVSRVEsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIj49IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU01BTExFUl9TTUFMTEVSOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuU01BTExFUl9TTUFMTEVSLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI8PCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUdSRUFURVJfR1JFQVRFUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkdSRUFURVJfR1JFQVRFUixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPj4iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TTEFTSDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNMQVNILGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIvIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU0xBU0hfU0xBU0g6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5TTEFTSF9TTEFTSCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiLy8iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ET1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5ET1QsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIi4iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1ET1RfRE9UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRE9UX0RPVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiLi4iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DT0xPTjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNPTE9OLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI6IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ09MT05fQ09MT046ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DT0xPTl9DT0xPTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiOjoiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FTVBUWV9DTE9TRV9UQUc6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FTVBUWV9DTE9TRV9UQUcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIi8+IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ0xPU0VfVEFHOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ0xPU0VfVEFHLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI8LyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVNFTUlDT0xPTjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNFTUlDT0xPTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiOyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVZCQVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5WQkFSLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ8IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUFJBR01BX1NUQVJUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUFJBR01BX1NUQVJULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIoIyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVBSQUdNQV9FTkQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5QUkFHTUFfRU5ELGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIjKSIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVhNTF9DT01NRU5UX1NUQVJUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuWE1MX0NPTU1FTlRfU1RBUlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjwhLS0iKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1YTUxfQ09NTUVOVF9FTkQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5YTUxfQ09NTUVOVF9FTkQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIi0tPiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVBJX1NUQVJUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUElfU1RBUlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjw/IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUElfRU5EOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUElfRU5ELGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI/PiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUFUVFJfU0lHTjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFUVFJfU0lHTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiQCIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNIQVJSRUZfREVDOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ0hBUlJFRl9ERUMsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIiYjIiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQ0hBUlJFRl9IRVg6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DSEFSUkVGX0hFWCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiJiN4IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtQVBPUzpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkFQT1MsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIiciKSx0aGlzLmluU3RyfHwodGhpcy5pblN0cj0hMCksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUVVPVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlFVT1QsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goJyInKSx0aGlzLmluU3RyfHwodGhpcy5pblN0cj0hMCksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9OQ05hbWU6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MX05DTmFtZSxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tTkNOYW1lU3RhcnRDaGFyKCk7YTpkb3t2YXIgYz0yLGU9dGhpcy5pbnB1dC5MQSgxKTtpZihlPj0iLSImJmU8PSIuInx8ZT49IjAiJiZlPD0iOSJ8fGU+PSJBIiYmZTw9IloifHxlPT0iXyJ8fGU+PSJhIiYmZTw9InoiKWM9MTtzd2l0Y2goYyl7Y2FzZSAxOnRoaXMubU5DTmFtZUNoYXIoKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTt0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MZXR0ZXI6ZnVuY3Rpb24oKXt0cnl7aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iQSImJnRoaXMuaW5wdXQuTEEoMSk8PSJaInx8dGhpcy5pbnB1dC5MQSgxKT49ImEiJiZ0aGlzLmlucHV0LkxBKDEpPD0ieiIpKXt2YXIgYT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoYSksYX10aGlzLmlucHV0LmNvbnN1bWUoKX1maW5hbGx5e319LG1IZXhMZXR0ZXI6ZnVuY3Rpb24oKXt0cnl7aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iQSImJnRoaXMuaW5wdXQuTEEoMSk8PSJGInx8dGhpcy5pbnB1dC5MQSgxKT49ImEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iZiIpKXt2YXIgYT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoYSksYX10aGlzLmlucHV0LmNvbnN1bWUoKX1maW5hbGx5e319LG1EaWdpdDpmdW5jdGlvbigpe3RyeXt0aGlzLm1hdGNoUmFuZ2UoIjAiLCI5Iil9ZmluYWxseXt9fSxtRGlnaXRzOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPTA7YTpkb3t2YXIgYj0yLGM9dGhpcy5pbnB1dC5MQSgxKTtjPj0iMCImJmM8PSI5IiYmKGI9MSk7c3dpdGNoKGIpe2Nhc2UgMTp0aGlzLm1EaWdpdCgpO2JyZWFrO2RlZmF1bHQ6aWYoYT49MSlicmVhayBhO3ZhciBlPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDIsdGhpcy5pbnB1dCk7dGhyb3cgZX1hKyt9d2hpbGUoITApfWZpbmFsbHl7fX0sbU5DTmFtZVN0YXJ0Q2hhcjpmdW5jdGlvbigpe3RyeXtpZighKHRoaXMuaW5wdXQuTEEoMSk+PSJBIiYmdGhpcy5pbnB1dC5MQSgxKTw9IloifHx0aGlzLmlucHV0LkxBKDEpPT0iXyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9InoiKSl7dmFyIGE9bmV3IGQuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGEpLGF9dGhpcy5pbnB1dC5jb25zdW1lKCl9ZmluYWxseXt9fSxtTkNOYW1lQ2hhcjpmdW5jdGlvbigpe3RyeXtpZighKHRoaXMuaW5wdXQuTEEoMSk+PSItIiYmdGhpcy5pbnB1dC5MQSgxKTw9Ii4ifHx0aGlzLmlucHV0LkxBKDEpPj0iMCImJnRoaXMuaW5wdXQuTEEoMSk8PSI5Inx8dGhpcy5pbnB1dC5MQSgxKT49IkEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iWiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJfInx8dGhpcy5pbnB1dC5MQSgxKT49ImEiJiZ0aGlzLmlucHV0LkxBKDEpPD0ieiIpKXt2YXIgYT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoYSksYX10aGlzLmlucHV0LmNvbnN1bWUoKX1maW5hbGx5e319LG1TOmZ1bmN0aW9uKCl7dHJ5e3ZhciBiPXRoaXMuUyxjPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUwsZT0wO2E6ZG97dmFyIGY9MixnPXRoaXMuaW5wdXQuTEEoMSk7aWYoZz49IgkiJiZnPD0iXG4ifHxnPT0iXHIifHxnPT0iICIpZj0xO3N3aXRjaChmKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk9PSIgIikpe3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihoKSxofXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYoZT49MSlicmVhayBhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDMsdGhpcy5pbnB1dCk7dGhyb3cgaX1lKyt9d2hpbGUoITApO2M9YSx0aGlzLnN0YXRlLnR5cGU9Yix0aGlzLnN0YXRlLmNoYW5uZWw9Y31maW5hbGx5e319LG1TVTpmdW5jdGlvbigpe3RyeXt2YXIgYT0wO2E6ZG97dmFyIGI9MixjPXRoaXMuaW5wdXQuTEEoMSk7aWYoYz49IgkiJiZjPD0iXG4ifHxjPT0iXHIifHxjPT0iICIpYj0xO3N3aXRjaChiKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk9PSIgIikpe3ZhciBlPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihlKSxlfXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYoYT49MSlicmVhayBhO3ZhciBmPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDQsdGhpcy5pbnB1dCk7dGhyb3cgZn1hKyt9d2hpbGUoITApfWZpbmFsbHl7fX0sbUxfUHJhZ21hOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTF9QcmFnbWEsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubVBSQUdNQV9TVEFSVCgpO3ZhciBjPTIsZT10aGlzLmlucHV0LkxBKDEpO2lmKGU+PSIJIiYmZTw9IlxuInx8ZT09IlxyInx8ZT09IiAiKWM9MTtzd2l0Y2goYyl7Y2FzZSAxOnRoaXMubVNVKCl9dGhpcy5tTF9OQ05hbWUoKSx0aGlzLm1DT0xPTigpLHRoaXMubUxfTkNOYW1lKCk7dmFyIGY9MixnPXRoaXMuaW5wdXQuTEEoMSk7aWYoZz49IgkiJiZnPD0iXG4ifHxnPT0iXHIifHxnPT0iICIpZj0xO3N3aXRjaChmKXtjYXNlIDE6dGhpcy5tU1UoKTthOmRve3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PSIjIil7dmFyIGo9dGhpcy5pbnB1dC5MQSgyKTtpZihqPT0iKSIpaD0yO2Vsc2UgaWYoaj49IlwwIiYmajw9IigifHxqPj0iKiImJmo8PSLvv78iKWg9MX1lbHNlIGlmKGk+PSJcMCImJmk8PSciJ3x8aT49IiQiJiZpPD0i77+/IiloPTE7c3dpdGNoKGgpe2Nhc2UgMTp0aGlzLm1hdGNoQW55KCk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCl9dGhpcy5tUFJBR01BX0VORCgpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxfRGlyQ29tbWVudENvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTF9EaXJDb21tZW50Q29uc3RydWN0b3IsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubVhNTF9DT01NRU5UX1NUQVJUKCk7YTpkb3t2YXIgYz0yLGU9dGhpcy5pbnB1dC5MQSgxKTtpZihlPT0iLSIpe3ZhciBmPXRoaXMuaW5wdXQuTEEoMik7aWYoZj09Ii0iKXt2YXIgZz10aGlzLmlucHV0LkxBKDMpO2lmKGc9PSI+IiljPTI7ZWxzZSBpZihnPj0iXDAiJiZnPD0iPSJ8fGc+PSI/IiYmZzw9Iu+/vyIpYz0xfWVsc2UgaWYoZj49IlwwIiYmZjw9IiwifHxmPj0iLiImJmY8PSLvv78iKWM9MX1lbHNlIGlmKGU+PSJcMCImJmU8PSIsInx8ZT49Ii4iJiZlPD0i77+/IiljPTE7c3dpdGNoKGMpe2Nhc2UgMTp0aGlzLm1hdGNoQW55KCk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7dGhpcy5tWE1MX0NPTU1FTlRfRU5EKCksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9EaXJQSUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTF9EaXJQSUNvbnN0cnVjdG9yLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1QSV9TVEFSVCgpO3ZhciBjPTIsZT10aGlzLmlucHV0LkxBKDEpO2lmKGU+PSIJIiYmZTw9IlxuInx8ZT09IlxyInx8ZT09IiAiKWM9MTtzd2l0Y2goYyl7Y2FzZSAxOnRoaXMubVNVKCl9dGhpcy5tTF9OQ05hbWUoKTt2YXIgZj0yLGc9dGhpcy5pbnB1dC5MQSgxKTtpZihnPj0iCSImJmc8PSJcbiJ8fGc9PSJcciJ8fGc9PSIgIilmPTE7c3dpdGNoKGYpe2Nhc2UgMTp0aGlzLm1TVSgpO2E6ZG97dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaT09Ij8iKXt2YXIgaj10aGlzLmlucHV0LkxBKDIpO2lmKGo9PSI+IiloPTI7ZWxzZSBpZihqPj0iXDAiJiZqPD0iPSJ8fGo+PSI/IiYmajw9Iu+/vyIpaD0xfWVsc2UgaWYoaT49IlwwIiYmaTw9Ij4ifHxpPj0iQCImJmk8PSLvv78iKWg9MTtzd2l0Y2goaCl7Y2FzZSAxOnRoaXMubWF0Y2hBbnkoKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKX10aGlzLm1QSV9FTkQoKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MX0ludGVnZXJMaXRlcmFsOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTF9JbnRlZ2VyTGl0ZXJhbCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tRGlnaXRzKCksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9EZWNpbWFsTGl0ZXJhbDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfRGVjaW1hbExpdGVyYWwsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMLGM9MixlPXRoaXMuaW5wdXQuTEEoMSk7aWYoZT09Ii4iKWM9MTtlbHNle2lmKCEoZT49IjAiJiZlPD0iOSIpKXt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEzLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn1jPTJ9c3dpdGNoKGMpe2Nhc2UgMTp0aGlzLm1hdGNoKCIuIiksdGhpcy5tRGlnaXRzKCk7YnJlYWs7Y2FzZSAyOnRoaXMubURpZ2l0cygpLHRoaXMubWF0Y2goIi4iKTthOmRve3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2g+PSIwIiYmaDw9IjkiJiYoZz0xKTtzd2l0Y2goZyl7Y2FzZSAxOnRoaXMubURpZ2l0KCk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCl9dGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9Eb3VibGVMaXRlcmFsOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuTF9Eb3VibGVMaXRlcmFsLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTCxjPTIsZT10aGlzLmlucHV0LkxBKDEpO2lmKGU9PSIuIiljPTE7ZWxzZXtpZighKGU+PSIwIiYmZTw9IjkiKSl7dmFyIGY9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNiwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9Yz0yfXN3aXRjaChjKXtjYXNlIDE6dGhpcy5tYXRjaCgiLiIpLHRoaXMubURpZ2l0cygpO2JyZWFrO2Nhc2UgMjp0aGlzLm1EaWdpdHMoKTt2YXIgZz0yLGg9dGhpcy5pbnB1dC5MQSgxKTtoPT0iLiImJihnPTEpO3N3aXRjaChnKXtjYXNlIDE6dGhpcy5tYXRjaCgiLiIpO2E6ZG97dmFyIGk9MixqPXRoaXMuaW5wdXQuTEEoMSk7aj49IjAiJiZqPD0iOSImJihpPTEpO3N3aXRjaChpKXtjYXNlIDE6dGhpcy5tRGlnaXQoKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKX19aWYodGhpcy5pbnB1dC5MQSgxKSE9IkUiJiZ0aGlzLmlucHV0LkxBKDEpIT0iZSIpe3ZhciBrPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihrKSxrfXRoaXMuaW5wdXQuY29uc3VtZSgpO3ZhciBsPTIsbT10aGlzLmlucHV0LkxBKDEpO2lmKG09PSIrInx8bT09Ii0iKWw9MTtzd2l0Y2gobCl7Y2FzZSAxOmlmKHRoaXMuaW5wdXQuTEEoMSkhPSIrIiYmdGhpcy5pbnB1dC5MQSgxKSE9Ii0iKXt2YXIgaz1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoayksa310aGlzLmlucHV0LmNvbnN1bWUoKX10aGlzLm1EaWdpdHMoKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MX0NvbW1lbnQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGI9dGhpcy5MX0NvbW1lbnQsYz1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEhdGhpcy5pblN0cil0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0NvbW1lbnQiLCIhdGhpcy5pblN0ciIpO3RoaXMubWF0Y2goIig6Iik7YTpkb3t2YXIgZT0zLGY9dGhpcy5pbnB1dC5MQSgxKTtpZihmPT0iOiIpe3ZhciBnPXRoaXMuaW5wdXQuTEEoMik7aWYoZz09IikiKWU9MztlbHNlIGlmKGc+PSJcMCImJmc8PSIoInx8Zz49IioiJiZnPD0i77+/IillPTJ9ZWxzZSBpZihmPT0iKCIpe3ZhciBoPXRoaXMuaW5wdXQuTEEoMik7aWYoaD09IjoiKXt2YXIgaT10aGlzLmlucHV0LkxBKDMpO3RoaXMuaW5TdHI/ZT0yOmU9MX1lbHNlIGlmKGg+PSJcMCImJmg8PSI5Inx8aD49IjsiJiZoPD0i77+/IillPTJ9ZWxzZSBpZihmPj0iXDAiJiZmPD0iJyJ8fGY+PSIpIiYmZjw9IjkifHxmPj0iOyImJmY8PSLvv78iKWU9Mjtzd2l0Y2goZSl7Y2FzZSAxOnRoaXMubUxfQ29tbWVudCgpO2JyZWFrO2Nhc2UgMjp0aGlzLm1hdGNoQW55KCk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7dGhpcy5tYXRjaCgiOikiKSxjPWEsdGhpcy5hZGRDb21tZW50KHRoaXMuc3RhdGUudG9rZW5TdGFydENoYXJJbmRleCx0aGlzLmdldENoYXJJbmRleCgpLTEpLHRoaXMuc3RhdGUudHlwZT1iLHRoaXMuc3RhdGUuY2hhbm5lbD1jfWZpbmFsbHl7fX0sbUxfQW55Q2hhcjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfQW55Q2hhcixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaEFueSgpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVRva2VuczpmdW5jdGlvbigpe3ZhciBhPTI2MDthPXRoaXMuZGZhMTkucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goYSl7Y2FzZSAxOnRoaXMubUFOQ0VTVE9SKCk7YnJlYWs7Y2FzZSAyOnRoaXMubUFOQ0VTVE9SX09SX1NFTEYoKTticmVhaztjYXNlIDM6dGhpcy5tQU5EKCk7YnJlYWs7Y2FzZSA0OnRoaXMubUFTKCk7YnJlYWs7Y2FzZSA1OnRoaXMubUFTQ0VORElORygpO2JyZWFrO2Nhc2UgNjp0aGlzLm1BVCgpO2JyZWFrO2Nhc2UgNzp0aGlzLm1BVFRSSUJVVEUoKTticmVhaztjYXNlIDg6dGhpcy5tQkFTRV9VUkkoKTticmVhaztjYXNlIDk6dGhpcy5tQk9VTkRBUllfU1BBQ0UoKTticmVhaztjYXNlIDEwOnRoaXMubUJZKCk7YnJlYWs7Y2FzZSAxMTp0aGlzLm1DQVNFKCk7YnJlYWs7Y2FzZSAxMjp0aGlzLm1DQVNUKCk7YnJlYWs7Y2FzZSAxMzp0aGlzLm1DQVNUQUJMRSgpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5tQ0hJTEQoKTticmVhaztjYXNlIDE1OnRoaXMubUNPTExBVElPTigpO2JyZWFrO2Nhc2UgMTY6dGhpcy5tQ09NTUVOVCgpO2JyZWFrO2Nhc2UgMTc6dGhpcy5tQ09OU1RSVUNUSU9OKCk7YnJlYWs7Y2FzZSAxODp0aGlzLm1DT1BZX05BTUVTUEFDRVMoKTticmVhaztjYXNlIDE5OnRoaXMubURFQ0xBUkUoKTticmVhaztjYXNlIDIwOnRoaXMubURFRkFVTFQoKTticmVhaztjYXNlIDIxOnRoaXMubURFU0NFTkRBTlQoKTticmVhaztjYXNlIDIyOnRoaXMubURFU0NFTkRBTlRfT1JfU0VMRigpO2JyZWFrO2Nhc2UgMjM6dGhpcy5tREVTQ0VORElORygpO2JyZWFrO2Nhc2UgMjQ6dGhpcy5tRElWKCk7YnJlYWs7Y2FzZSAyNTp0aGlzLm1ET0NVTUVOVCgpO2JyZWFrO2Nhc2UgMjY6dGhpcy5tRE9DVU1FTlRfTk9ERSgpO2JyZWFrO2Nhc2UgMjc6dGhpcy5tRUxFTUVOVCgpO2JyZWFrO2Nhc2UgMjg6dGhpcy5tRUxTRSgpO2JyZWFrO2Nhc2UgMjk6dGhpcy5tRU1QVFkoKTticmVhaztjYXNlIDMwOnRoaXMubUVNUFRZX1NFUVVFTkNFKCk7YnJlYWs7Y2FzZSAzMTp0aGlzLm1FTkNPRElORygpO2JyZWFrO2Nhc2UgMzI6dGhpcy5tRVEoKTticmVhaztjYXNlIDMzOnRoaXMubUVWRVJZKCk7YnJlYWs7Y2FzZSAzNDp0aGlzLm1FWENFUFQoKTticmVhaztjYXNlIDM1OnRoaXMubUVYVEVSTkFMKCk7YnJlYWs7Y2FzZSAzNjp0aGlzLm1GT0xMT1dJTkcoKTticmVhaztjYXNlIDM3OnRoaXMubUZPTExPV0lOR19TSUJMSU5HKCk7YnJlYWs7Y2FzZSAzODp0aGlzLm1GT1IoKTticmVhaztjYXNlIDM5OnRoaXMubUZVTkNUSU9OKCk7YnJlYWs7Y2FzZSA0MDp0aGlzLm1HRSgpO2JyZWFrO2Nhc2UgNDE6dGhpcy5tR1JFQVRFU1QoKTticmVhaztjYXNlIDQyOnRoaXMubUdUKCk7YnJlYWs7Y2FzZSA0Mzp0aGlzLm1JRElWKCk7YnJlYWs7Y2FzZSA0NDp0aGlzLm1JRigpO2JyZWFrO2Nhc2UgNDU6dGhpcy5tSU1QT1JUKCk7YnJlYWs7Y2FzZSA0Njp0aGlzLm1JTigpO2JyZWFrO2Nhc2UgNDc6dGhpcy5tSU5IRVJJVCgpO2JyZWFrO2Nhc2UgNDg6dGhpcy5tSU5TVEFOQ0UoKTticmVhaztjYXNlIDQ5OnRoaXMubUlOVEVSU0VDVCgpO2JyZWFrO2Nhc2UgNTA6dGhpcy5tSVMoKTticmVhaztjYXNlIDUxOnRoaXMubUlURU0oKTticmVhaztjYXNlIDUyOnRoaXMubUxBWCgpO2JyZWFrO2Nhc2UgNTM6dGhpcy5tTEUoKTticmVhaztjYXNlIDU0OnRoaXMubUxFQVNUKCk7YnJlYWs7Y2FzZSA1NTp0aGlzLm1MRVQoKTticmVhaztjYXNlIDU2OnRoaXMubUxUKCk7YnJlYWs7Y2FzZSA1Nzp0aGlzLm1NT0QoKTticmVhaztjYXNlIDU4OnRoaXMubU1PRFVMRSgpO2JyZWFrO2Nhc2UgNTk6dGhpcy5tTkFNRVNQQUNFKCk7YnJlYWs7Y2FzZSA2MDp0aGlzLm1ORSgpO2JyZWFrO2Nhc2UgNjE6dGhpcy5tTk9fSU5IRVJJVCgpO2JyZWFrO2Nhc2UgNjI6dGhpcy5tTk9fUFJFU0VSVkUoKTticmVhaztjYXNlIDYzOnRoaXMubU5PREUoKTticmVhaztjYXNlIDY0OnRoaXMubU9GKCk7YnJlYWs7Y2FzZSA2NTp0aGlzLm1PUFRJT04oKTticmVhaztjYXNlIDY2OnRoaXMubU9SKCk7YnJlYWs7Y2FzZSA2Nzp0aGlzLm1PUkRFUigpO2JyZWFrO2Nhc2UgNjg6dGhpcy5tT1JERVJFRCgpO2JyZWFrO2Nhc2UgNjk6dGhpcy5tT1JERVJJTkcoKTticmVhaztjYXNlIDcwOnRoaXMubVBBUkVOVCgpO2JyZWFrO2Nhc2UgNzE6dGhpcy5tUFJFQ0VESU5HKCk7YnJlYWs7Y2FzZSA3Mjp0aGlzLm1QUkVDRURJTkdfU0lCTElORygpO2JyZWFrO2Nhc2UgNzM6dGhpcy5tUFJFU0VSVkUoKTticmVhaztjYXNlIDc0OnRoaXMubVBST0NFU1NJTkdfSU5TVFJVQ1RJT04oKTticmVhaztjYXNlIDc1OnRoaXMubVJFVFVSTigpO2JyZWFrO2Nhc2UgNzY6dGhpcy5tU0FUSVNGSUVTKCk7YnJlYWs7Y2FzZSA3Nzp0aGlzLm1TQ0hFTUEoKTticmVhaztjYXNlIDc4OnRoaXMubVNDSEVNQV9BVFRSSUJVVEUoKTticmVhaztjYXNlIDc5OnRoaXMubVNDSEVNQV9FTEVNRU5UKCk7YnJlYWs7Y2FzZSA4MDp0aGlzLm1TRUxGKCk7YnJlYWs7Y2FzZSA4MTp0aGlzLm1TT01FKCk7YnJlYWs7Y2FzZSA4Mjp0aGlzLm1TVEFCTEUoKTticmVhaztjYXNlIDgzOnRoaXMubVNUUklDVCgpO2JyZWFrO2Nhc2UgODQ6dGhpcy5tU1RSSVAoKTticmVhaztjYXNlIDg1OnRoaXMubVRFWFQoKTticmVhaztjYXNlIDg2OnRoaXMubVRIRU4oKTticmVhaztjYXNlIDg3OnRoaXMubVRPKCk7YnJlYWs7Y2FzZSA4ODp0aGlzLm1UUkVBVCgpO2JyZWFrO2Nhc2UgODk6dGhpcy5tVFlQRVNXSVRDSCgpO2JyZWFrO2Nhc2UgOTA6dGhpcy5tVU5JT04oKTticmVhaztjYXNlIDkxOnRoaXMubVVOT1JERVJFRCgpO2JyZWFrO2Nhc2UgOTI6dGhpcy5tVkFMSURBVEUoKTticmVhaztjYXNlIDkzOnRoaXMubVZBUklBQkxFKCk7YnJlYWs7Y2FzZSA5NDp0aGlzLm1WRVJTSU9OKCk7YnJlYWs7Y2FzZSA5NTp0aGlzLm1XSEVSRSgpO2JyZWFrO2Nhc2UgOTY6dGhpcy5tWFFVRVJZKCk7YnJlYWs7Y2FzZSA5Nzp0aGlzLm1BTExPV0lORygpO2JyZWFrO2Nhc2UgOTg6dGhpcy5tQ0FUQ0goKTticmVhaztjYXNlIDk5OnRoaXMubUNPTlRFWFQoKTticmVhaztjYXNlIDEwMDp0aGlzLm1DT1VOVCgpO2JyZWFrO2Nhc2UgMTAxOnRoaXMubURFQ0lNQUxfRk9STUFUKCk7YnJlYWs7Y2FzZSAxMDI6dGhpcy5tREVDSU1BTF9TRVBBUkFUT1IoKTticmVhaztjYXNlIDEwMzp0aGlzLm1ESUdJVCgpO2JyZWFrO2Nhc2UgMTA0OnRoaXMubUVORCgpO2JyZWFrO2Nhc2UgMTA1OnRoaXMubUdST1VQKCk7YnJlYWs7Y2FzZSAxMDY6dGhpcy5tR1JPVVBJTkdfU0VQQVJBVE9SKCk7YnJlYWs7Y2FzZSAxMDc6dGhpcy5tSU5GSU5JVFkoKTticmVhaztjYXNlIDEwODp0aGlzLm1NSU5VU19TSUdOKCk7YnJlYWs7Y2FzZSAxMDk6dGhpcy5tTkFNRVNQQUNFX05PREUoKTticmVhaztjYXNlIDExMDp0aGlzLm1OQU4oKTticmVhaztjYXNlIDExMTp0aGlzLm1ORVhUKCk7YnJlYWs7Y2FzZSAxMTI6dGhpcy5tT05MWSgpO2JyZWFrO2Nhc2UgMTEzOnRoaXMubVBBVFRFUk5fU0VQQVJBVE9SKCk7YnJlYWs7Y2FzZSAxMTQ6dGhpcy5tUEVSQ0VOVCgpO2JyZWFrO2Nhc2UgMTE1OnRoaXMubVBFUl9NSUxMRSgpO2JyZWFrO2Nhc2UgMTE2OnRoaXMubVBSRVZJT1VTKCk7YnJlYWs7Y2FzZSAxMTc6dGhpcy5tU0xJRElORygpO2JyZWFrO2Nhc2UgMTE4OnRoaXMubVNUQVJUKCk7YnJlYWs7Y2FzZSAxMTk6dGhpcy5tU1dJVENIKCk7YnJlYWs7Y2FzZSAxMjA6dGhpcy5tVFJZKCk7YnJlYWs7Y2FzZSAxMjE6dGhpcy5tVFVNQkxJTkcoKTticmVhaztjYXNlIDEyMjp0aGlzLm1UWVBFKCk7YnJlYWs7Y2FzZSAxMjM6dGhpcy5tV0hFTigpO2JyZWFrO2Nhc2UgMTI0OnRoaXMubVdJTkRPVygpO2JyZWFrO2Nhc2UgMTI1OnRoaXMubVpFUk9fRElHSVQoKTticmVhaztjYXNlIDEyNjp0aGlzLm1BRlRFUigpO2JyZWFrO2Nhc2UgMTI3OnRoaXMubUJFRk9SRSgpO2JyZWFrO2Nhc2UgMTI4OnRoaXMubUNPUFkoKTticmVhaztjYXNlIDEyOTp0aGlzLm1ERUxFVEUoKTticmVhaztjYXNlIDEzMDp0aGlzLm1GSVJTVCgpO2JyZWFrO2Nhc2UgMTMxOnRoaXMubUlOU0VSVCgpO2JyZWFrO2Nhc2UgMTMyOnRoaXMubUlOVE8oKTticmVhaztjYXNlIDEzMzp0aGlzLm1MQVNUKCk7YnJlYWs7Y2FzZSAxMzQ6dGhpcy5tTU9ESUZZKCk7YnJlYWs7Y2FzZSAxMzU6dGhpcy5tTk9ERVMoKTticmVhaztjYXNlIDEzNjp0aGlzLm1SRU5BTUUoKTticmVhaztjYXNlIDEzNzp0aGlzLm1SRVBMQUNFKCk7YnJlYWs7Y2FzZSAxMzg6dGhpcy5tUkVWQUxJREFUSU9OKCk7YnJlYWs7Y2FzZSAxMzk6dGhpcy5tU0tJUCgpO2JyZWFrO2Nhc2UgMTQwOnRoaXMubVVQREFUSU5HKCk7YnJlYWs7Y2FzZSAxNDE6dGhpcy5tVkFMVUUoKTticmVhaztjYXNlIDE0Mjp0aGlzLm1XSVRIKCk7YnJlYWs7Y2FzZSAxNDM6dGhpcy5tQUxMKCk7YnJlYWs7Y2FzZSAxNDQ6dGhpcy5tQU5ZKCk7YnJlYWs7Y2FzZSAxNDU6dGhpcy5tQ09OVEFJTlMoKTticmVhaztjYXNlIDE0Njp0aGlzLm1DT05URU5UKCk7YnJlYWs7Y2FzZSAxNDc6dGhpcy5tRElBQ1JJVElDUygpO2JyZWFrO2Nhc2UgMTQ4OnRoaXMubURJRkZFUkVOVCgpO2JyZWFrO2Nhc2UgMTQ5OnRoaXMubURJU1RBTkNFKCk7YnJlYWs7Y2FzZSAxNTA6dGhpcy5tRU5USVJFKCk7YnJlYWs7Y2FzZSAxNTE6dGhpcy5tRVhBQ1RMWSgpO2JyZWFrO2Nhc2UgMTUyOnRoaXMubUZST00oKTticmVhaztjYXNlIDE1Mzp0aGlzLm1GVF9PUFRJT04oKTticmVhaztjYXNlIDE1NDp0aGlzLm1GVEFORCgpO2JyZWFrO2Nhc2UgMTU1OnRoaXMubUZUTk9UKCk7YnJlYWs7Y2FzZSAxNTY6dGhpcy5tRlRPUigpO2JyZWFrO2Nhc2UgMTU3OnRoaXMubUlOU0VOU0lUSVZFKCk7YnJlYWs7Y2FzZSAxNTg6dGhpcy5tTEFOR1VBR0UoKTticmVhaztjYXNlIDE1OTp0aGlzLm1MRVZFTFMoKTticmVhaztjYXNlIDE2MDp0aGlzLm1MT1dFUkNBU0UoKTticmVhaztjYXNlIDE2MTp0aGlzLm1NT1NUKCk7YnJlYWs7Y2FzZSAxNjI6dGhpcy5tTk8oKTticmVhaztjYXNlIDE2Mzp0aGlzLm1OT1QoKTticmVhaztjYXNlIDE2NDp0aGlzLm1PQ0NVUlMoKTticmVhaztjYXNlIDE2NTp0aGlzLm1QQVJBR1JBUEgoKTticmVhaztjYXNlIDE2Njp0aGlzLm1QQVJBR1JBUEhTKCk7YnJlYWs7Y2FzZSAxNjc6dGhpcy5tUEhSQVNFKCk7YnJlYWs7Y2FzZSAxNjg6dGhpcy5tUkVMQVRJT05TSElQKCk7YnJlYWs7Y2FzZSAxNjk6dGhpcy5tU0FNRSgpO2JyZWFrO2Nhc2UgMTcwOnRoaXMubVNDT1JFKCk7YnJlYWs7Y2FzZSAxNzE6dGhpcy5tU0VOU0lUSVZFKCk7YnJlYWs7Y2FzZSAxNzI6dGhpcy5tU0VOVEVOQ0UoKTticmVhaztjYXNlIDE3Mzp0aGlzLm1TRU5URU5DRVMoKTticmVhaztjYXNlIDE3NDp0aGlzLm1TVEVNTUlORygpO2JyZWFrO2Nhc2UgMTc1OnRoaXMubVNUT1AoKTticmVhaztjYXNlIDE3Njp0aGlzLm1USEVTQVVSVVMoKTticmVhaztjYXNlIDE3Nzp0aGlzLm1USU1FUygpO2JyZWFrO2Nhc2UgMTc4OnRoaXMubVVQUEVSQ0FTRSgpO2JyZWFrO2Nhc2UgMTc5OnRoaXMubVVTSU5HKCk7YnJlYWs7Y2FzZSAxODA6dGhpcy5tV0VJR0hUKCk7YnJlYWs7Y2FzZSAxODE6dGhpcy5tV0lMRENBUkRTKCk7YnJlYWs7Y2FzZSAxODI6dGhpcy5tV0lUSE9VVCgpO2JyZWFrO2Nhc2UgMTgzOnRoaXMubVdPUkQoKTticmVhaztjYXNlIDE4NDp0aGlzLm1XT1JEUygpO2JyZWFrO2Nhc2UgMTg1OnRoaXMubUJSRUFLKCk7YnJlYWs7Y2FzZSAxODY6dGhpcy5tQ09OVElOVUUoKTticmVhaztjYXNlIDE4Nzp0aGlzLm1FWElUKCk7YnJlYWs7Y2FzZSAxODg6dGhpcy5tTE9PUCgpO2JyZWFrO2Nhc2UgMTg5OnRoaXMubVJFVFVSTklORygpO2JyZWFrO2Nhc2UgMTkwOnRoaXMubVdISUxFKCk7YnJlYWs7Y2FzZSAxOTE6dGhpcy5tQ0hFQ0soKTticmVhaztjYXNlIDE5Mjp0aGlzLm1DT0xMRUNUSU9OKCk7YnJlYWs7Y2FzZSAxOTM6dGhpcy5tQ09OU1RSQUlOVCgpO2JyZWFrO2Nhc2UgMTk0OnRoaXMubUZPUkVBQ0goKTticmVhaztjYXNlIDE5NTp0aGlzLm1GT1JFSUdOKCk7YnJlYWs7Y2FzZSAxOTY6dGhpcy5tSU5ERVgoKTticmVhaztjYXNlIDE5Nzp0aGlzLm1JTlRFR1JJVFkoKTticmVhaztjYXNlIDE5ODp0aGlzLm1LRVkoKTticmVhaztjYXNlIDE5OTp0aGlzLm1PTigpO2JyZWFrO2Nhc2UgMjAwOnRoaXMubVVOSVFVRSgpO2JyZWFrO2Nhc2UgMjAxOnRoaXMubUJJTkFSWSgpO2JyZWFrO2Nhc2UgMjAyOnRoaXMubUFNUF9FUigpO2JyZWFrO2Nhc2UgMjAzOnRoaXMubUFQT1NfRVIoKTticmVhaztjYXNlIDIwNDp0aGlzLm1RVU9UX0VSKCk7YnJlYWs7Y2FzZSAyMDU6dGhpcy5tQ09OQ0FUKCk7YnJlYWs7Y2FzZSAyMDY6dGhpcy5tTFBBUkVOKCk7YnJlYWs7Y2FzZSAyMDc6dGhpcy5tUlBBUkVOKCk7YnJlYWs7Y2FzZSAyMDg6dGhpcy5tRE9MTEFSKCk7YnJlYWs7Y2FzZSAyMDk6dGhpcy5tTEJSQUNLRVQoKTticmVhaztjYXNlIDIxMDp0aGlzLm1SQlJBQ0tFVCgpO2JyZWFrO2Nhc2UgMjExOnRoaXMubUxTUVVBUkUoKTticmVhaztjYXNlIDIxMjp0aGlzLm1SU1FVQVJFKCk7YnJlYWs7Y2FzZSAyMTM6dGhpcy5tRVFVQUwoKTticmVhaztjYXNlIDIxNDp0aGlzLm1CSU5EKCk7YnJlYWs7Y2FzZSAyMTU6dGhpcy5tTk9URVFVQUwoKTticmVhaztjYXNlIDIxNjp0aGlzLm1BTk5fUEVSQ0VOVCgpO2JyZWFrO2Nhc2UgMjE3OnRoaXMubUhBU0goKTticmVhaztjYXNlIDIxODp0aGlzLm1BTVAoKTticmVhaztjYXNlIDIxOTp0aGlzLm1DT01NQSgpO2JyZWFrO2Nhc2UgMjIwOnRoaXMubVFVRVNUSU9OKCk7YnJlYWs7Y2FzZSAyMjE6dGhpcy5tU1RBUigpO2JyZWFrO2Nhc2UgMjIyOnRoaXMubVBMVVMoKTticmVhaztjYXNlIDIyMzp0aGlzLm1NSU5VUygpO2JyZWFrO2Nhc2UgMjI0OnRoaXMubVNNQUxMRVIoKTticmVhaztjYXNlIDIyNTp0aGlzLm1HUkVBVEVSKCk7YnJlYWs7Y2FzZSAyMjY6dGhpcy5tU01BTExFUkVRKCk7YnJlYWs7Y2FzZSAyMjc6dGhpcy5tR1JFQVRFUkVRKCk7YnJlYWs7Y2FzZSAyMjg6dGhpcy5tU01BTExFUl9TTUFMTEVSKCk7YnJlYWs7Y2FzZSAyMjk6dGhpcy5tR1JFQVRFUl9HUkVBVEVSKCk7YnJlYWs7Y2FzZSAyMzA6dGhpcy5tU0xBU0goKTticmVhaztjYXNlIDIzMTp0aGlzLm1TTEFTSF9TTEFTSCgpO2JyZWFrO2Nhc2UgMjMyOnRoaXMubURPVCgpO2JyZWFrO2Nhc2UgMjMzOnRoaXMubURPVF9ET1QoKTticmVhaztjYXNlIDIzNDp0aGlzLm1DT0xPTigpO2JyZWFrO2Nhc2UgMjM1OnRoaXMubUNPTE9OX0NPTE9OKCk7YnJlYWs7Y2FzZSAyMzY6dGhpcy5tRU1QVFlfQ0xPU0VfVEFHKCk7YnJlYWs7Y2FzZSAyMzc6dGhpcy5tQ0xPU0VfVEFHKCk7YnJlYWs7Y2FzZSAyMzg6dGhpcy5tU0VNSUNPTE9OKCk7YnJlYWs7Y2FzZSAyMzk6dGhpcy5tVkJBUigpO2JyZWFrO2Nhc2UgMjQwOnRoaXMubVBSQUdNQV9TVEFSVCgpO2JyZWFrO2Nhc2UgMjQxOnRoaXMubVBSQUdNQV9FTkQoKTticmVhaztjYXNlIDI0Mjp0aGlzLm1YTUxfQ09NTUVOVF9TVEFSVCgpO2JyZWFrO2Nhc2UgMjQzOnRoaXMubVhNTF9DT01NRU5UX0VORCgpO2JyZWFrO2Nhc2UgMjQ0OnRoaXMubVBJX1NUQVJUKCk7YnJlYWs7Y2FzZSAyNDU6dGhpcy5tUElfRU5EKCk7YnJlYWs7Y2FzZSAyNDY6dGhpcy5tQVRUUl9TSUdOKCk7YnJlYWs7Y2FzZSAyNDc6dGhpcy5tQ0hBUlJFRl9ERUMoKTticmVhaztjYXNlIDI0ODp0aGlzLm1DSEFSUkVGX0hFWCgpO2JyZWFrO2Nhc2UgMjQ5OnRoaXMubUFQT1MoKTticmVhaztjYXNlIDI1MDp0aGlzLm1RVU9UKCk7YnJlYWs7Y2FzZSAyNTE6dGhpcy5tTF9OQ05hbWUoKTticmVhaztjYXNlIDI1Mjp0aGlzLm1TKCk7YnJlYWs7Y2FzZSAyNTM6dGhpcy5tTF9QcmFnbWEoKTticmVhaztjYXNlIDI1NDp0aGlzLm1MX0RpckNvbW1lbnRDb25zdHJ1Y3RvcigpO2JyZWFrO2Nhc2UgMjU1OnRoaXMubUxfRGlyUElDb25zdHJ1Y3RvcigpO2JyZWFrO2Nhc2UgMjU2OnRoaXMubUxfSW50ZWdlckxpdGVyYWwoKTticmVhaztjYXNlIDI1Nzp0aGlzLm1MX0RlY2ltYWxMaXRlcmFsKCk7YnJlYWs7Y2FzZSAyNTg6dGhpcy5tTF9Eb3VibGVMaXRlcmFsKCk7YnJlYWs7Y2FzZSAyNTk6dGhpcy5tTF9Db21tZW50KCk7YnJlYWs7Y2FzZSAyNjA6dGhpcy5tTF9BbnlDaGFyKCl9fX0sITApLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGYse0RGQTE5X2VvdFM6IgHvv78YPwHCkQHClAfvv78Bwp4BNwHvv78BwqIBwqQB77+/AcKnAu+/vwHCqwHCsQHCtAHCtwHCuQbvv78Bw4AB77+/AT8Bw4gBw4oEPwHvv78CPwHDkVxmPwHDrgc/AcO9AT8BxIABPwHEggE/AcSJAcSKAj8BxJIBxJMEPwHEmwHEnwHEoAE/AcSjAcSlED8BxYISPwLvv78BxZwQ77+/AcWfXGbvv78BxaEJ77+/AcWjBu+/vwHDgAHFowHvv78BPwHFpgHFpwE/Ae+/vwE/Ae+/vwHFqwE/AcWtAz8B77+/ED8BxoQJPwHGjgE/Ae+/vwY/AcaXBz8B77+/Aj8B77+/AT8B77+/Bj8C77+/AT8BxqsDPwHGrwE/Au+/vwI/Aca1BD8B77+/Aj8Bxr0C77+/Aj8B77+/AT8B77+/HD8B77+/AT8Bx6UTPwHHvAE/Ace+AT9cYu+/vwHFowE/Au+/vwM/Ae+/vwE/Ae+/vwHIhgU/AciMAciOBz8ByJoGPwHvv78GPwHIpwI/Ae+/vwU/AcivAj8B77+/Aj8ByLUDPwHIuQI/Aci8BT8ByYQCPwHJhwHvv78ByYgCPwHvv78CPwHJjQI/Ae+/vwHJkAI/AcmTAj8ByZcB77+/Aj8ByZoRPwHJrAI/AcmvAj8BybIEPwHJuAI/Acm7Acm8Acm9Aj8B77+/AcqBXHI/AcqPAj8BypMCPwHKlwE/Ae+/vwE/Ae+/vwHKmgHKmwQ/AcqhAe+/vwM/AcqlAT8B77+/AT8B77+/AcqoAcqpAcqqXGI/Ae+/vwHKtAU/Acq6BT8B77+/AcuBAj8By4QDPwHvv78EPwHLjAHvv78BPwHLjgHLjwHvv78BPwHLkgHvv78HPwHvv78BPwHLmwLvv78BPwHLnQI/Ae+/vwI/Ae+/vwI/Ae+/vwI/AcumAe+/vwE/AcuqAe+/vxE/Ae+/vwE/Acu9Ae+/vwI/Ae+/vwE/AcyBAT8BzIMBPwHvv78CPwPvv78BPwHMiAE/Ae+/vwE/AcyLAcyMBD8BzJEBPwHMkwI/AcyWAe+/vwHMlwI/Ae+/vwI/AcycAe+/vwI/A++/vwQ/Ae+/vwI/AcylAe+/vwHMpgE/A++/vwk/Ae+/vwQ/Acy2Ae+/vwY/Ae+/vwE/Acy+Ae+/vwHMvwY/Ae+/vwE/Au+/vwI/Ae+/vwHNiQI/Ac2MBD8B77+/AT8B77+/Ac2SAT8BzZQBzZUEPwHvv78BzZoCPwHvv78BzZ0BzZ5cYj8BzacBzakBzaoEPwHNsAHvv78CPwHNswHvv78BzbQB77+/Aj8BzbcBPwHvv78CPwLvv78BzbsDPwHvv78BPwHvv78CPwLvv78BzoICPwHOhQHvv78BzoYHPwLvv78DPwHOkQI/Ac6UAc6VAz8BzpkBPwHOmwE/Ae+/vwQ/Ac6iAj8C77+/AT8BzqYBPwHOqAHOqQQ/Ae+/vwHOrgE/Ae+/vwU/Ae+/vwE/Au+/vwQ/Ae+/vwHOugE/Au+/vwY/Ac+CAT8B77+/AT8C77+/Ac+FBD8B77+/Aj8C77+/AT8Bz44B77+/Az8B77+/BT8Bz5cB77+/Ac+YAT8C77+/AT8Bz5wCPwHPnwHPoAE/Ac+iAj8B77+/Aj8C77+/Ac+nAc+oAT8B77+/AT8B77+/BD8Bz7ABz7IB77+/AT8Bz7QBz7UB77+/AT8C77+/Ac+3AT8Bz7kBPwHvv78Bz7sDPwHPvwHQgAU/Ae+/vwHQhgM/AdCKAdCLAT8B77+/Aj8B77+/Bj8B0JYB0JcB77+/Aj8B0JoBPwHQnAE/AdCeAdCfAu+/vwM/Ae+/vwHQowHQpALvv78BPwHvv78B0KYDPwLvv78GPwHQsAHvv78BPwHvv78BPwLvv78B0LQB77+/AdC1Ae+/vwE/Ae+/vwE/AdC4AdC5Au+/vwHQugE/AdC9Aj8B77+/AdGBAT8B0YQC77+/AT8B0YYB0YcCPwHRigI/AdGNAdGOAu+/vwHRjwE/Ae+/vwHRkQHvv78B0ZIC77+/AdGTAj8C77+/AT8B77+/AdGXAT8B0ZkDPwHRngHRnwHRoAHvv78DPwLvv78CPwPvv78B0aYBPwHvv78B0agBPwHRqgHvv78CPwHvv78BPwLvv78CPwHvv78CPwPvv78B0bID77+/AdGzAj8B77+/AT8B77+/BD8D77+/BD8B0b8B77+/AT8B77+/AdKBAe+/vwc/Au+/vwI/AdKLXGI/Ae+/vwE/Ae+/vwM/AdKYAdKZBD8B77+/BD8B0qIHPwLvv78DPwHSrQE/AdKvAj8B77+/AdKyAj8B0rUEPwHSugE/Ae+/vwHSvAHvv78CPwHvv78CPwHvv78EPwHvv78B04UB77+/Bz8B040B77+/AdOOAT8B05ABPwHTkgHTkwE/Au+/vwHTlQHvv78B05YC77+/AT8C77+/Az8B05sB77+/IixERkExOV9lb2ZTOiLTnO+/vyIsREZBMTlfbWluUzoiAVwwAWYCYQFlAWwBaQFlAWQBYQFpAWEBYwFhAWUBYQFlAW4BYQFlAXEBYQJlAXUBfAEjB++/vwE6AT0B77+/ASkBIwHvv78BPgLvv78BLQEhAT0BLwEuBu+/vwEuAe+/vwFjAi0BbAF0AXABbwHvv78BcwF1AS0BZgFlAW4BcwFlAWwBYwFhAWMBZQFwAWMBLQFlAWEBbAFuAXIBbwItAWUBLQFpAS0BcAItAWUBbgItAW8BZAFuAW0DLQF0Ai0BYwFyAWUCcgFsAW0BaAFsAW0BYQNpAXgBZQEtAWUBcAJtAWkBZAFpAWwBcgFlAWwBaQFyAXUBTgFyAXkBbwLvv78BCRDvv78BeAvvv78BLQEJCe+/vwEwBu+/vwEuATAB77+/AWUCLQFlAe+/vwFyAe+/vwEtAWUBLQFzAWUBbgHvv78BbwJhAWUBYwFsAWMBbAFtAXMBeQFuAWkBYQFjAWUBLQFpAWMBZgF0AXUBbQFlAXQBbwEtAWkB77+/AXICZQFjAXQBbAEtAWMBcwFtAW8BbgFvAXIB77+/AWEBdQHvv78BdgHvv78BbwNlAWkBZQLvv78BbQEtAXQBZwFzAS0BZQLvv78BZQFwAS0BdAF1AWUBdAHvv78BaQFlAS0C77+/AWkBZQHvv78BeQHvv78BdQFhAXQCYwEtAWEBdQFhAWwCYQFpAmUBcgFmAXMBZQFiAWkBbQFwAWQBdAFwAXQBbgHvv78BYQEtAWUBYgFlAW8BcgFhAWUBbgJpAXMBbgFsAWQBaAFkAWcBZAFlAS0BbwEtAXQE77+/AS0D77+/ATABcwLvv78BbgFpAXcB77+/AXIB77+/Ai0BZAFyAWsBcgItAWgBZAFrAWEBZQF0AWEBLQF0AWEBbQF1AWUBdAHvv78BdAFyAWUBYQFtAWUBLQF5AWQB77+/AXIBeQFwAXIBdAEtAW8BYQHvv78CdAEtAXABZAF0AS0BdAFwAS0CcgFhAW4BZwEtAW4BeAEtAe+/vwEtAXUBdAHvv78BbAFyAS0BbAFmAe+/vwEtAnMBLQFuAXIBLQHvv78BbwFyAS0BcgFuAWcDZQFpAmUBbQFzAXIBbQFhAWwBdAFzAS0BbQFlAS0BaQFlAS0BbAF0AWMBbQEtAWkBYwMtAWEBdAHvv78BLQFsAXMBbgF1AWQBdAFyAWcBZAFlAWEBaQFlAS0BZQFvAS0BYwFoAS0BcgHvv78BLQHvv78BLQFcMAF0AWQBYgFpAS0B77+/AXUBYQFlAS0BeQHvv78BYgHvv78DLQF0AWMBbgFyAW4BaQJuAe+/vwEtAXIBYQFsAW4BZQEtAWkBcgFuAWUBbgHvv78BLQFpAWUBLQF0AW4BbAHvv78BdwFjAWcBaQEtAe+/vwF0Ai0B77+/AWUBLQHvv78BdAFpAW4BdAJzAXIB77+/AWkBLQLvv78BYQEtAXMBYwHvv78BZQF5Ae+/vwEtAXAB77+/AWgBZQEtAe+/vwFuAS0B77+/AXMBdAJyAWQBcgFvAXMBbgFpAWUBbgFlAWMCaQFmAe+/vwFhAS0B77+/AXQBbgHvv78BZQEtAXQBLQFpAe+/vwFuAWgD77+/AXUBLQF3Ae+/vwFpAi0CZQFpAWMBLQFhAS0BYgFvAS0B77+/AS0BdwF1Ae+/vwFhAXQBLQHvv78BeQFkA++/vwFvAWkBdQFuAe+/vwJyAS0B77+/AS0BbAPvv78BaQJ0AWECdAFuAXUBYQHvv78BZQFsAXQBZAEtAe+/vwF0AWUBYwFuAXQBcwHvv78BbgEtAe+/vwEtAWEBeQFpAWgBbgFvAe+/vwFpAu+/vwFzAW4B77+/AS0BdAFjAS0BaQFlAWkBdAHvv78BZwHvv78BLQFhAi0BcwFhAWUBcwHvv78BLQFkAW4B77+/Ai0BYQFuAWkBdgF1AXMBdAFsAy0BZQFkAW8BaQEtAe+/vwFpAWMBLQHvv78BLQHvv78BbgFnAS0BcgHvv78BaQFuAu+/vwEtAXIBbgFhAe+/vwF0Ae+/vwFsAW4C77+/AS0BdAFyAS0B77+/AS0BaQFyAW4BdAFnAWkBeQLvv78BZQFvAWkBLQFjAWkCLQFzAWUBbQMtAWEB77+/AWkBbgFlAXQBLQFlAWcC77+/AWwBLQFuAi0BbgFvAXQBZwHvv78BLQFlAe+/vwF0AWMBdAF5AWUB77+/AXMC77+/AWkBYwFyAWUB77+/AS0BZwLvv78BcAEtAW4BZQFzAWkBLQFsAe+/vwFuAu+/vwEtAWEBbgFlAWEB77+/AXYBZQLvv78BZwEtAe+/vwF1AXQBZwHvv78BZQFnAXMCZQEtAe+/vwEtAWQC77+/AWcBLQFnAWUELQFuAW8B77+/AXQBbgLvv78CLQFlAe+/vwFmAe+/vwJuAWMBdAItAe+/vwFxAi0B77+/AWcC77+/AS0BbgItAe+/vwEtAWkBdAF5Ai0BZQFnAWUBaQFyAe+/vwEtAWgBcwFnAi0BbgHvv78BZQFnAe+/vwF0AnMBdAFsAWUCLQHvv78BcwFjAS0BZAEtAWUCLQLvv78BcwFpAW8B77+/Ai0C77+/AXMB77+/AS0BbgFpAXQC77+/AXMBbwFlAXQBZwFzAS0B77+/AW4B77+/AXUC77+/AS0B77+/AS0B77+/AXMB77+/AXYCLQLvv78BLQFuAS0BdAF2Ae+/vwEtAWUBLQLvv78BZwItAWkBaAEtAXQBZQItAu+/vwEtAWgB77+/AS0B77+/AS0C77+/AS0BdAFyAu+/vwFwAe+/vwEtAW8BLQFwAXIBcAMtAe+/vwFvAWUBcwLvv78CZQPvv78BLQFuAe+/vwEtAWUBLQHvv78BcAFzAe+/vwEtAu+/vwFvAWkB77+/AXIBbQPvv78BLQPvv78CLQFhAe+/vwFuAe+/vwFhAW0BYQFvA++/vwFkAW4BaQFwAS0B77+/AW8B77+/AS0B77+/AWECaQFuAXABaQFlAu+/vwFzAWMBLQFjAWECcgFlAWMBYgFhAe+/vwFkAe+/vwFyAWIBbgItAWIBbgJlAe+/vwFlAXQBYQItAWUBbAFyAWUBYQFsAXMC77+/AXUBdAFsAS0BcwEtAXQBcwHvv78BLQFpAWEBLQF0AWkCdAEtAWYB77+/AS0B77+/AW8BZQHvv78BbgF0Ae+/vwFvAW4BcgFlAe+/vwEtAe+/vwFyAWwBZwFvAXIBZwF1AS0B77+/AS0BZgEtAXICLQFjAu+/vwEtAe+/vwEtAu+/vwF0Au+/vwFpAW8BbgEtAe+/vyIsREZBMTlfbWF4UzoiAe+/vwF0AXkCbwF4AXUDdAJvAnIBZQF3AXkBcwFlAW8BcQFhAmUBdQF8AToH77+/Aj0B77+/ASkBIwHvv78BPgLvv78BLQE/Aj4BOQbvv78BZQHvv78BeQJ6AWwBdAFwAW8B77+/AXMBdQF6AWYBZQFuAXQBaQF1AXMBdgFjAXMBcAF0AXoBZQF0AXIBbgFyAm8BegFvAXoBaQF6AXACegFlAXgCegF3AXMBbgFtA3oBdAJ6AWMBdAFvAnIBdgF0AW8BbgFtAXIDaQF4AWUBegF5AXACbQFvAXABaQJyAWkBdAFpAXIBdQFOAXIBeQFvAu+/vwF6EO+/vwF4C++/vwEtAXoJ77+/AWUG77+/AmUB77+/AWUCegFlAe+/vwFyAe+/vwF6AWUBegFzAWUBbgHvv78BbwJhAXQBYwFsAWMBbAFtAXQBeQFuAWwBYQFjAWUBegFpAWMBZgF0AXUBbQFlAXQBbwF6AWkB77+/AXICZQFjAXQBbAF6AWMBcwFtAW8BbgFvAXIB77+/AWEBdQHvv78BdgHvv78BbwFlAXQBbwFpAWUC77+/AW0BegF0AWcBcwF6AWUC77+/AWUBcAF6AXQBdQFlAXQB77+/AXABZQF6Au+/vwFpAWUB77+/AXkB77+/AXUBZQF0AXYCYwFhAXUBYQFsAmEBaQJlAXIBZgF0AWUBcgFpAW0BcAFkAXQBcAF0AXMB77+/AWEBegFlAWIBZQFxAXIBYQFlAW4BdQFpAXMBcgFsAWQBaAFkAWcBZAFlAXoBbwF6AXQE77+/AS0D77+/AWUBcwLvv78BbgFpAXcB77+/AXIB77+/AXoBLQFkAXIBawFyAnoBaAFkAWsCZQF0AWkBegF0AWEBbQF1AWUBdAHvv78BdAFyAWUBYQFtAWUBegF5AWQB77+/AXIBeQFwAXIBdAF6AW8BaQHvv78CdAF6AXABZAF0AXoBdAFwAXoCcgFhAnIBegFuAXgBegHvv78BegF1AXQB77+/AWwBcgF6AWwBZgHvv78BegJzAXoBbgFyAXoB77+/AW8BcgF6AXIBbgFnA2UBaQJlAW0BcwFyAW0BYQFsAXQBcwF6AW0BZQF6AWkBZQF6AWwBdAFwAW0BegFpAWMDegFhAXQB77+/AXoBbAFzAW4BdQFkAXQBcgFnAWQBZQFhAWkBZQF6AWUBbwF6AWMBaAF6AXIB77+/AS0B77+/AXoB77+/AXQBZAFiAWkBegHvv78BdQFhAWUBegF5Ae+/vwFiAe+/vwN6AXQBYwFuAXIBeAFpAm4B77+/AXoBcgFhAWwBbgFlAXoBaQFyAW4BZQFuAe+/vwF6AWkBZQF6AXQBbgFsAe+/vwF3AWMBZwFpAXoB77+/AXQCegHvv78BZQF6Ae+/vwF0AWkBbgF0AnMBcgHvv78BaQF6Au+/vwFhAXoBcwFjAe+/vwFlAXkB77+/AS0BcAHvv78BaAFlAXoB77+/AW4BegHvv78BcwF0AnIBZAFyAW8BcwFuAWkBZQFuAWUBYwJpAWYB77+/AWEBegHvv78BdAFuAe+/vwFlAXoBdAF6AWkB77+/AW4BaAPvv78BdQF6AXcB77+/AWkCegJlAWkBYwF6AWEBegFiAW8BegHvv78BegF3AXUB77+/AWEBdAF6Ae+/vwF5AWQD77+/AW8BaQF1AW4B77+/AnIBegHvv78BegFsA++/vwFpAnQBdQJ0AW4BdQFhAe+/vwFlAWwBdAFkAXoB77+/AXQBZQFjAW4BdAFzAe+/vwFuAXoB77+/AXoBYQF5AWkBaAFuAW8B77+/AWkC77+/AXMBbgHvv78BegF0AWMBegFpAWUBaQF0Ae+/vwFnAe+/vwF6AWECegFzAWEBZQFzAe+/vwF6AWQBbgHvv78CegFhAW4BaQF2AXUBcwF0AWwDegFlAWQBbwFpAXoB77+/AWkBYwF6Ae+/vwF6Ae+/vwFuAWcBegFyAe+/vwFpAW4C77+/AXoBcgFuAWEB77+/AXQB77+/AWwBbgLvv78BegF0AXIBegHvv78BegFpAXIBbgF0AWcBaQF5Au+/vwFlAW8BaQF6AWMBaQJ6AXMBZQFtAXoBLQF6AWkB77+/AWkBbgFlAXQBegFlAWcC77+/AWwBegFuAnoBbgFvAXQBZwHvv78BegFlAe+/vwF0AWMBdAF5AWUB77+/AXMC77+/AWkBYwFyAWUB77+/AXoBZwLvv78BcAEtAW4BZQFzAWkBegFsAe+/vwFuAu+/vwF6AWEBbgJlAe+/vwF2AWUC77+/AWcBegHvv78BdQF0AWcB77+/AWUBZwFzAmUBegHvv78BegFkAu+/vwFnAXoBZwFlAnoBLQF6AW4BbwHvv78BdAFuAu+/vwJ6AWUB77+/AXMB77+/Am4BYwF0AnoB77+/AXECegHvv78BZwLvv78BegFuAXoBLQHvv78BegFpAXQBeQJ6AWUBZwFlAWkBcgHvv78BegFoAXMBZwJ6AW4B77+/AWUBZwHvv78BdAJzAXQBbAFlAnoB77+/AXMBYwF6AWQBegFlAnoC77+/AXMBaQFvAe+/vwJ6Au+/vwFzAe+/vwF6AW4BaQF0Au+/vwFzAW8BZQF0AWcBcwF6Ae+/vwFuAe+/vwF1Au+/vwF6Ae+/vwF6Ae+/vwFzAe+/vwF2AnoC77+/AXoBbgF6AXQBdgHvv78BegFlAXoC77+/AWcCegFpAWgBegF0AWUCegLvv78BegFoAe+/vwF6Ae+/vwF6Au+/vwF6AXQBcgLvv78BcAHvv78BegFvAXoBcAFyAXADegHvv78BbwFlAXMC77+/AmUD77+/AXoBbgHvv78BegFlAXoB77+/AXABcwHvv78BLQLvv78BbwFpAe+/vwFyAW0D77+/AXoD77+/AXoBLQFhAe+/vwFuAe+/vwFhAW0BYQFvA++/vwFkAW4BaQFwAXoB77+/AW8B77+/AXoB77+/AWECaQFuAXABaQFlAu+/vwFzAWMBegFjAWECcgFlAWMBYgFhAe+/vwFkAe+/vwFyAWIBbgJ6AWIBbgJlAe+/vwFlAXQBYQEtAXoBZQFsAXIBZQFhAWwBcwLvv78BdQF0AWwBegFzAXoBdAFzAe+/vwF6AWkBYQF6AXQBaQJ0AXoBZgHvv78BegHvv78BbwFlAe+/vwFuAXQB77+/AW8BbgFyAWUB77+/AXoB77+/AXIBbAFnAW8BcgFnAXUBegHvv78BegFmAXoBcgJ6AWMC77+/AXoB77+/AXoC77+/AXQC77+/AWkBbwFuAXoB77+/IixERkExOV9hY2NlcHRTOiIb77+/AcOPAcOQAcORAcOSAcOTAcOUAcOVAu+/vwHDmALvv78Bw5sB77+/AcOdAcOeBe+/vwHDrgHDtgHDuQHDugHDuwHDvAHvv78BxIQH77+/AcO7UO+/vwHDjQHDrwHvv78BxIMBw44Bw48Bw5ABw5EBw5IBw5MBw5QBw5UBw5YBw6sBw6oBw5cBw5gBw7EBw5kB77+/AcOaAcObAcO1AcOcAcOdAcOeAcOzAcOfAcOiAcOkAcOtAu+/vwHDoAHDowHDpQHDoQHDpwHDrAHDpgHDqQHDqAHvv78Bw64Bw7YBw7kBw7oBw7wBxIAC77+/AcSCBO+/vwEEAe+/vwEGBu+/vwFcbhzvv78BIA7vv78BKALvv78BKgHvv78BLAbvv78BLgEyB++/vwE1ATgH77+/ATwD77+/AcKiAUAC77+/AUIB77+/AcOHHO+/vwFXGe+/vwHDsAHDvQHDuAHDtwHvv78Bw7QBw78BxIEC77+/AQMBwpAD77+/AcKPAe+/vwHDihbvv78BGAnvv78BaFxi77+/ASYT77+/ATQD77+/ATcF77+/ATkH77+/AcKjJ++/vwF4Fu+/vwFuAe+/vwHDhgfvv78Bw4sF77+/AQsB77+/AVxmC++/vwHCgFxm77+/ARwH77+/AcK7Be+/vwHCmAPvv78BwpwC77+/ASsH77+/AcKEAu+/vwEzAcKFBO+/vwHCvALvv78BwqEC77+/AW8D77+/AT8C77+/AXAR77+/AcKpAu+/vwFQAu+/vwFRBe+/vwHCrwLvv78BwosBVQFWA++/vwF6XHLvv78BewPvv78Bwo4D77+/AcK3Au+/vwHDjAHDsgHDvgTvv78BfgPvv78BwrkC77+/AWIBDgHCvwnvv78BZAXvv78BZwbvv78BHQLvv78BIQfvv78BwoIB77+/AcKaAcKbAu+/vwFpXGLvv78Bw4QB77+/ATZcYu+/vwHChwPvv78BQxLvv78BwqoD77+/AXYB77+/AVQE77+/AVgC77+/AcKxAVoE77+/AcKzAe+/vwHCjQLvv78BXwHCvgTvv78BwrhcYu+/vwF/AcOJD++/vwHCgQfvv78BwpYBXCIJ77+/AS0C77+/AcKDBe+/vwHCnwHvv78BOgHChgTvv78BQQLvv78BwqQBRlxi77+/AcKnAe+/vwFLAcKIBe+/vwFNAu+/vwFSAVMC77+/AXcD77+/AcOIBu+/vwF8Au+/vwHCtAFgXG7vv78BEALvv78BYwHCkgPvv78BEwHvv78BFAbvv78BGwPvv78BwpcB77+/AcOCAcODBO+/vwEvC++/vwFEB++/vwFyAu+/vwHCiVxi77+/AXVcYu+/vwFeAcK2A++/vwEBAu+/vwFhAVxiAe+/vwFccgTvv78BwpEBwroH77+/AcKVAe+/vwEZAe+/vwEfASMB77+/AScB77+/ASkB77+/ATAD77+/AWsBwp4F77+/AUUD77+/AUkBdFxu77+/AcKsAcKuAu+/vwF5Ae+/vwHCjAHvv78BXFwBXQPvv78BBQEHAe+/vwEPCe+/vwHClAPvv78BJAHCmQLvv78BMQHDhQHCoALvv78BOwPvv78BwqUC77+/AUcB77+/AXMBwr0C77+/AUwC77+/AcKrAcKtAcKwAe+/vwFbAcKyAcK1A++/vwHDgAHvv78Bw4EE77+/ARUBFwHCkwXvv78BbAHvv78BPQHvv78BwqYH77+/AVkBfQvvv78Bwp0B77+/AT4J77+/ARFcZu+/vwHCigHCqFxi77+/ARpcbu+/vwEJAe+/vwFlAu+/vwEeAu+/vwFtBO+/vwFPAe+/vwESXGLvv78BAgfvv78BTgFmAe+/vwElAe+/vwFxAUgB77+/ARYBagTvv78BSiIsREZBMTlfc3BlY2lhbFM6IgFcMBnvv78BAcel77+/AQLLm++/v30+IixERkExOV90cmFuc2l0aW9uUzpbIgk3AjUCNwE1EjcBNQEjATMBJQEcASQBJgEyARoBGwEpASoBJwErAS8BLlxuNgFcIgEwASwBIQEtASgBMVxyNAEVXGY0AR8BNwEgATcBNAE3AQEBAgEDAQQBBQEGAQcBNAFcYgE0ARcBCQFcbgELAVxmAVxyARgBDgEPARABEQESARMBFAE0ARYBHQEZAR7vvoI3IiwiATwF77+/ATsBPQE4Ae+/vwE+Au+/vwE5AToiLCIBQAPvv78BQwPvv78BRQXvv78BQQLvv78BRAbvv78BQiIsIgFGBu+/vwFHBu+/vwFIIiwiAUkD77+/AUoF77+/AUsiLCIBTAFNAU4C77+/AU8E77+/AVAB77+/AVEiLCIBVAXvv78BUgLvv78BVQHvv78BVgFTIiwiAVdcZu+/vwFYAe+/vwFZIiwiAVoB77+/AVsG77+/AVxcAV0E77+/AV4BXyIsIgFgA++/vwFhCe+/vwFjBO+/vwFiIiwiAWUF77+/AWQiLCIBZgPvv78BZwnvv78BaCIsIgFtAu+/vwFpB++/vwFsAe+/vwFqAe+/vwFrIiwiAW4D77+/AXAC77+/AXEJ77+/AW8iLCIBciIsIgFzAe+/vwF0Ae+/vwF1Be+/vwF6AXgC77+/AXYE77+/AXcC77+/AXkiLCIBewLvv78BfAHCgQXvv78BfQLvv78BfgLvv78BwoAD77+/AX8iLCIBwoIB77+/AcKDAu+/vwHChCIsIgHChQPvv78BwoYiLCIBwokC77+/AcKHAcKIBe+/vwHCiiIsIgHCiyIsIgHCjCIsIgHCjSIsIgHCjiIsIgHCjyIsIgHCkCIsIgHCkhbvv78BwpMiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIBwp0C77+/AcKcIiwiAcKfIiwiIiwiAcKhIiwiAcKjIiwiIiwiAcKmIiwiIiwiIiwiAcKqIiwiAcKvXHLvv78Bwq5cZu+/vwHCrQHCrAHvv78BwrAiLCIBwrIBwrMiLCIBwrUO77+/AcK2IiwiAcK4Ae+/v1xuwroiLCIiLCIiLCIiLCIiLCIiLCIiLCIBw4IB77+/XG7DgQvvv78Bw4Mf77+/AcODIiwiIiwiAcOEAcOFFO+/vwHDhiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78CPwHDhxc/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxM/AcOJBj8iLCIBw4siLCIBw4wiLCIBw40iLCIBw44iLCIiLCIBw48iLCIBw5AiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBw5IiLCIBw5MiLCIBw5QiLCIBw5UBw5YiLCIBw5gD77+/AcOXIiwiAcOZAcOaAcObAe+/vwHDnATvv78Bw50iLCIBw54C77+/AcOfBe+/vwHDoQbvv78Bw6AiLCIBw6QE77+/AcOlAcOjC++/vwHDpgLvv78Bw6IiLCIBw6ciLCIBw6hccu+/vwHDqSIsIgHDqiIsIgHDqwHDrA/vv78Bw60iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBw68iLCIBw7IB77+/AcOwBe+/vwHDs1xu77+/AcOxIiwiAcO0Be+/vwHDtSIsIgHDtiIsIgHDtyIsIgHDuCIsIgHDuTPvv78Bw7pcZu+/vwHDuwHDvCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHDvgnvv78Bw78iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxIEiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxIMiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Az8BxIgBPwHEhwE/AcSEXG4/AcSFAcSGBj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxIsiLCIBxI4E77+/AcSNBO+/vwHEjCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78BxI8SPwHEkAE/AcSRBD8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxJUH77+/AcSUIiwiAcSWDu+/vwHElyIsIgHEmCIsIgHEmSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78XPwHEmgI/IiwiAcScAT8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vwM/AcSdDz8BxJ4GPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHEoSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78DPwHEohY/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vws/AcSkDj8iLCIBxKYiLCIBxKcB77+/AcSoIiwiAcSpCe+/vwHEqiIsIgHEqyIsIgHErCIsIgHEsQHvv78BxK4B77+/AcSvA++/vwHErQHvv78BxLAiLCIBxLMG77+/AcSyIiwiAcS0Bu+/vwHEtSIsIgHEtgHvv78BxLciLCIBxLgiLCIBxLkD77+/AcS7Ce+/vwHEvALvv78BxLoiLCIBxL0iLCIBxL4iLCIBxL8iLCIBxYAiLCIBxYEiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxYMT77+/AcWEIiwiAcWFIiwiAcWGIiwiAcWHIiwiAcWIBe+/vwHFiSIsIgHFigvvv78BxYsiLCIBxYwiLCIBxY0F77+/AcWOIiwiAcWPIiwiAcWQA++/vwHFkSIsIgHFlAHvv78BxZIF77+/AcWTIiwiAcWVIiwiAcWWIiwiAcWXIiwiAcWYIiwiAcWZIiwiAcWaIiwiAcWbIiwiIiwiIiwiAsWdAu+/vwHFnRLvv78BxZ0g77+/GsWdBO+/vwHFnQHvv78axZ0iLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIBxZ4iLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIBxaAiLCICxaIC77+/AcWiEu+/vwHFoiDvv78axaIE77+/AcWiAe+/vxrFoiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIlxuwroL77+/AcODH++/vwHDgyIsIiIsIiIsIiIsIiIsIiIsIiIsIgHDggHvv79cbsOBC++/vwHDgx/vv78Bw4MiLCJcbsWkC++/vwHDgx/vv78Bw4MiLCIiLCIBxaUiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxagiLCIiLCIBxakiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Dj8BxaoLPyIsIgHFrCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHFriIsIgHFryIsIgHFsCIsIiIsIgHFsSIsIgHFsiIsIgHFsyIsIgHFtA7vv78BxbUiLCIBxbYiLCIBxbciLCIBxbgiLCIBxbkiLCIBxboiLCIBxbsBxbwiLCIBxb0iLCIBxb4iLCIBxoAC77+/AcW/IiwiAcaBIiwiAcaCIiwiAcaDIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcaFIiwiAcaGIiwiAcaHIiwiAcaIIiwiAcaJIiwiAcaKIiwiAcaLIiwiAcaMIiwiAcaNIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcaPIiwiIiwiAcaQIiwiAcaRIiwiAcaSIiwiAcaTIiwiAcaUIiwiAcaVIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vwQ/AcaWFT8iLCIBxpgiLCIBxpkiLCIBxpoiLCIBxpsiLCIBxpwiLCIBxp0iLCIBxp4iLCIiLCIBxp8iLCIBxqAiLCIiLCIBxqEiLCIiLCIBxqIiLCIBxqMiLCIBxqUO77+/AcakIiwiAcamCe+/vwHGpyIsIgHGqCIsIgHGqSIsIiIsIiIsIgHGqiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHGrCIsIgHGrSIsIgHGriIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHGsCIsIiIsIiIsIgHGsSIsIgHGsiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv79cYj8BxrQLPwHGswU/IiwiAca2IiwiAca3IiwiAca4IiwiAca5IiwiIiwiAca6Bu+/vwHGuyIsIgHGvCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgHGviIsIgHGvyIsIiIsIgHHgCIsIiIsIgHHgSIsIgHHgwPvv78Bx4IiLCIBx4QiLCIBx4UP77+/AceGAu+/vwHHhyIsIgHHiCIsIgHHijXvv78Bx4kiLCIBx4siLCIBx4wiLCIBx40iLCIBx44iLCIBx48iLCIBx5AiLCIBx5EiLCIBx5IiLCIBx5MiLCIBx5QiLCIBx5UiLCIBx5YBx5ciLCIBx5giLCIBx5kP77+/AceaIiwiAcebIiwiAcecIiwiAcedIiwiAceeIiwiAcefIiwiAcegIiwiAcehIiwiAceiBO+/vwHHoyIsIiIsIgHHpCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHHpiIsIgHHpyIsIgHHqCIsIgHHqQHvv78Bx6oiLCIBx6siLCIBx6wiLCIBx60iLCIBx64iLCIBx68L77+/AcewIiwiAcexIiwiAceyIiwiAce0A++/vwHHsyIsIgHHtSIsIgHHtiIsIgHHtyIsIgHHuCIsIgHHuSIsIgHHuiIsIgHHuyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHHvSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHHvyIsIiIsIiIsIiIsIiIsIgHIgCIsIiIsIiIsIiIsIlxuxaQL77+/AcODH++/vwHDgyIsIgHIgSIsIiIsIiIsIgHIgiIsIgHIgyIsIgHIhCIsIiIsIgHIhSIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHIhyIsIgHIiCIsIgHIiSIsIgHIiiIsIgHIiyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78ByI0ZPyIsIgHIjyIsIgHIkCIsIgHIkSIsIgHIkgPvv78ByJMiLCIByJQiLCIByJUiLCIByJcD77+/AciWA++/vwHImCIsIgHImQE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHImyIsIgHInCIsIgHInSIsIgHIniIsIgHInyIsIgHIoCIsIiIsIgHIoSIsIgHIoiIsIgHIoyIsIgHIpCIsIgHIpSIsIgHIpiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHIqCIsIgHIqSIsIiIsIgHIqiIsIgHIqyIsIgHIrCIsIgHIrSIsIgHIriIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHIsCIsIgHIsQfvv78ByLIiLCIiLCIByLMiLCIByLQiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByLYiLCIByLciLCIByLgiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByLoiLCIByLsiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByL0iLCIByL4iLCIByL8iLCIByYED77+/AcmAIiwiAcmDXG7vv78ByYIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByYUiLCIByYYiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByYkiLCIByYoiLCIiLCIByYsiLCIByYwiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByY4iLCIByY8iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByZEiLCIByZIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByZQiLCIByZUiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Ej8ByZYHPyIsIiIsIgHJmCIsIgHJmSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHJmyIsIgHJnCIsIgHJnSIsIgHJniIsIgHJnyIsIgHJoCIsIgHJoSIsIgHJoiIsIgHJoyIsIgHJpCIsIgHJpSIsIgHJpiIsIgHJpyIsIgHJqCIsIgHJqSIsIgHJqiIsIgHJqyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHJrSIsIgHJriIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHJsCIsIgHJsSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHJsyIsIgHJtCIsIgHJtVxm77+/Acm2IiwiAcm3IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcm5IiwiAcm6IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcm+IiwiAcm/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxI/AcqABz8iLCIByoIiLCIByoMiLCIByoQiLCIByoUiLCIByoYiLCIByociLCIByogiLCIByokiLCIByooiLCIByosiLCIByowiLCIByo0iLCIByo4iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBypAiLCIBypEiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Dj8BypILPyIsIgHKlCIsIgHKlSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78SPwHKlgc/IiwiAcqYIiwiIiwiAcqZIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiXDDKnCIsIgHKnSIsIgHKniIsIgHKnyIsIgHKoCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHKoiIsIgHKoyIsIgHKpCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHKpiIsIiIsIgHKpyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHKqyIsIgHKrCIsIgHKrSIsIgHKriIsIgHKsAnvv78Byq8iLCIByrEiLCIByrIiLCIByrMiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByrUiLCIByrYiLCIByrciLCIByrgiLCIByrkiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByrsiLCIByrwiLCIByr0iLCIByr4iLCIByr8iLCIiLCIBy4ABPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBy4IiLCIBy4MiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBy4UiLCIBy4YiLCIBy4ciLCIiLCIBy4giLCIBy4kiLCIBy4oiLCIBy4siLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBy40iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBy5AiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/XGI/AcuRET8iLCIiLCIBy5MiLCIBy5QiLCIBy5UiLCIBy5YiLCIBy5ciLCIBy5giLCIBy5kiLCIiLCIBy5oiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIiLCIBy5wiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBy54iLCIBy58iLCIiLCIBy6AiLCIBy6EiLCIiLCIBy6IiLCIBy6MiLCIiLCIBy6QiLCIBy6UiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBy6ciLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/BD8By6gDPwHLqRE/IiwiIiwiAcurIiwiAcusIiwiAcutIiwiAcuuIiwiAcuvIiwiAcuwIiwiAcuxIiwiAcuyIiwiAcuzIiwiAcu0IiwiAcu1IiwiAcu2IiwiAcu3IiwiAcu4IiwiAcu5IiwiAcu6IiwiAcu7IiwiIiwiAcu8IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAcu+IiwiAcu/IiwiIiwiAcyAIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcyCIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcyEIiwiIiwiAcyFIiwiAcyGIiwiIiwiIiwiIiwiAcyHIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcyJIiwiIiwiAcyKIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcyNIiwiAcyOIiwiAcyPIiwiAcyQIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcySIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcyUIiwiAcyVIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcyYIiwiAcyZIiwiIiwiAcyaIiwiAcybIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAcydIiwiAcyeIiwiIiwiIiwiIiwiAcyfIiwiAcygIiwiAcyhIiwiAcyiIiwiIiwiAcyjIiwiAcykIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcynIiwiIiwiIiwiIiwiAcyoIiwiAcypIiwiAcyqIiwiAcysE++/vwHMqyIsIgHMrSIsIgHMriIsIgHMryIsIgHMsCIsIgHMsSIsIiIsIgHMsiIsIgHMsyIsIgHMtCIsIgHMtSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHMtyIsIgHMuCIsIgHMuSIsIgHMuiIsIgHMuyIsIgHMvCIsIiIsIgHMvSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNgCIsIgHNgSIsIgHNgiIsIgHNgyIsIgHNhCIsIgHNhSIsIiIsIgHNhiIsIiIsIiIsIgHNhyIsIgHNiCIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNiiIsIgHNiyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNjSIsIgHNjiIsIgHNjyIsIgHNkCIsIiIsIgHNkSIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNkyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNliIsIgHNlyIsIgHNmCIsIgHNmSIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNmyIsIgHNnCIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNnyIsIgHNoCIsIgHNoSIsIgHNoiIsIgHNoyIsIgHNpCIsIgHNpSIsIgHNpiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv79cYj8BzagRPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNqyIsIgHNrCIsIgHNrSIsIgHNriIsIgHNrwE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHNsSIsIgHNsiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHNtSIsIgHNtiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNuCIsIiIsIgHNuSIsIgHNuiIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHNvCIsIgHNvSIsIgHNviIsIiIsIgHNvyIsIiIsIgHOgCIsIgHOgSIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHOgyIsIgHOhCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHOhyIsIgHOiCIsIgHOiSIsIgHOiiIsIgHOiyIsIgHOjCIsIgHOjSIsIiIsIiIsIgHOjiIsIgHOjyIsIgHOkCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHOkiIsIgHOkyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHOliIsIgHOlyIsIgHOmCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHOmiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHOnAfvv78Bzp0iLCIiLCIBzp4iLCIBzp8iLCIBzqAiLCIBzqEiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzqMiLCIBzqQiLCIiLCIiLCIBzqUiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzqciLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzqoiLCIBzqsiLCIBzqwiLCIBzq0iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzq8iLCIiLCIBzrAiLCIBzrEiLCIBzrIiLCIBzrMiLCIBzrQiLCIiLCIBzrUiLCIiLCIiLCIBzrYiLCIBzrciLCIBzrgiLCIBzrkiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzrsiLCIiLCIiLCIBzrwiLCIBzr0iLCIBzr4iLCIBzr8iLCIBz4AiLCIBz4EiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBz4MiLCIiLCIBz4QiLCIiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBz4YiLCIBz4ciLCIBz4giLCIBz4kD77+/Ac+KIiwiIiwiAc+LIiwiAc+MIiwiIiwiIiwiAc+NIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAc+PIiwiAc+QIiwiAc+RIiwiIiwiAc+SIiwiAc+TIiwiAc+UIiwiAc+VIiwiAc+WIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+ZIiwiIiwiIiwiAc+aIiwiAc+bAT8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+dIiwiAc+eIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+hIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+jIiwiAc+kIiwiIiwiAc+lIiwiAc+mIiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+pIiwiIiwiAc+qXGbvv78Bz6siLCIiLCIBz6wiLCIBz60iLCIBz64iLCIBz68iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBz7EBPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBz7MiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBz7YiLCIiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBz7giLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBz7oiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBz7wiLCIBz70iLCIBz74iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0IEiLCIB0IIiLCIB0IMiLCIB0IQiLCIB0IUiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0IciLCIB0IgiLCIB0IkiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0IwiLCIiLCIB0I0iLCIB0I4iLCIiLCIB0I8iLCIB0JAiLCIB0JEiLCIB0JIiLCIB0JMiLCIB0JQiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Ej8B0JUHPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHQmCIsIgHQmSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHQmyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHQnSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgHQoCIsIgHQoSIsIgHQoiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgHQpSIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHQpyIsIgHQqCIsIgHQqSIsIiIsIiIsIgHQqiIsIgHQqyIsIgHQrCIsIgHQrSIsIgHQriIsIgHQryIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHQsSIsIiIsIgHQsiIsIiIsIiIsIgHQswE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHQtiIsIiIsIgHQtyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHQuyIsIgHQvAE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHQviIsIgHQvyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78SPwHRgAc/IiwiAdGCIiwiAdGDAT8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiIiwiAdGFIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGIIiwiAdGJIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGLIiwiAdGMIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGQIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGUIiwiAdGVIiwiIiwiIiwiAdGWIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGYIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGaIiwiAdGbIiwiAdGcIiwiAdGdAT8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAdGhIiwiAdGiIiwiAdGjIiwiIiwiIiwiAdGkIiwiAdGlIiwiIiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGnIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdGpIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAdGrIiwiAdGsIiwiIiwiAdGtIiwiIiwiIiwiAdGuIiwiAdGvIiwiIiwiAdGwIiwiAdGxIiwiIiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdG0IiwiAdG1IiwiIiwiAdG2IiwiIiwiAdG3IiwiAdG4IiwiAdG5IiwiAdG6IiwiIiwiIiwiIiwiAdG7IiwiAdG8IiwiAdG9IiwiAdG+IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAdKAIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAdKCIiwiAdKDIiwiAdKEIiwiAdKFIiwiAdKGIiwiAdKHIiwiAdKIIiwiIiwiIiwiAdKJIiwiAdKKIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdKMIiwiAdKNIiwiAdKOIiwiAdKPIiwiAdKQIiwiAdKRIiwiAdKSIiwiAdKTIiwiIiwiAdKUIiwiIiwiAdKVIiwiAdKWIiwiAdKXIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdKaIiwiAdKbIiwiAdKcIiwiAdKdIiwiIiwiAdKeIiwiAdKfIiwiAdKgIiwiAdKhIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdKjIiwiAdKkIiwiAdKlIiwiAdKmIiwiAdKnIiwiAdKoIiwiAdKpIiwiIiwiIiwiAdKqIiwiAdKrIiwiAdKsIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdKuIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdKwIiwiAdKxIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdKzIiwiAdK0IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdK2IiwiAdK3IiwiAdK4IiwiAdK5IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdK7IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAdK9IiwiAdK+IiwiIiwiAdK/IiwiAdOAIiwiIiwiAdOBIiwiAdOCIiwiAdODIiwiAdOEIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAdOGIiwiAdOHIiwiAdOIIiwiAdOJIiwiAdOKIiwiAdOLIiwiAdOMIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdOPIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdORIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdOUIiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiIiwiAdOXIiwiIiwiIiwiAdOYIiwiAdOZIiwiAdOaIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChmLHtERkExOV9lb3Q6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKGYuREZBMTlfZW90UyksREZBMTlfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhmLkRGQTE5X2VvZlMpLERGQTE5X21pbjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMoZi5ERkExOV9taW5TKSxERkExOV9tYXg6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKGYuREZBMTlfbWF4UyksREZBMTlfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhmLkRGQTE5X2FjY2VwdFMpLERGQTE5X3NwZWNpYWw6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKGYuREZBMTlfc3BlY2lhbFMpLERGQTE5X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1bXSxiLGM9Zi5ERkExOV90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKGI9MDtiPGM7YisrKWEucHVzaChkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcoZi5ERkExOV90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSksZi5ERkExOT1mdW5jdGlvbihhKXt0aGlzLnJlY29nbml6ZXI9YSx0aGlzLmRlY2lzaW9uTnVtYmVyPTE5LHRoaXMuZW90PWYuREZBMTlfZW90LHRoaXMuZW9mPWYuREZBMTlfZW9mLHRoaXMubWluPWYuREZBMTlfbWluLHRoaXMubWF4PWYuREZBMTlfbWF4LHRoaXMuYWNjZXB0PWYuREZBMTlfYWNjZXB0LHRoaXMuc3BlY2lhbD1mLkRGQTE5X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPWYuREZBMTlfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChmLkRGQTE5LGQuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjE6MTogVG9rZW5zIDogKCBBTkNFU1RPUiB8IEFOQ0VTVE9SX09SX1NFTEYgfCBBTkQgfCBBUyB8IEFTQ0VORElORyB8IEFUIHwgQVRUUklCVVRFIHwgQkFTRV9VUkkgfCBCT1VOREFSWV9TUEFDRSB8IEJZIHwgQ0FTRSB8IENBU1QgfCBDQVNUQUJMRSB8IENISUxEIHwgQ09MTEFUSU9OIHwgQ09NTUVOVCB8IENPTlNUUlVDVElPTiB8IENPUFlfTkFNRVNQQUNFUyB8IERFQ0xBUkUgfCBERUZBVUxUIHwgREVTQ0VOREFOVCB8IERFU0NFTkRBTlRfT1JfU0VMRiB8IERFU0NFTkRJTkcgfCBESVYgfCBET0NVTUVOVCB8IERPQ1VNRU5UX05PREUgfCBFTEVNRU5UIHwgRUxTRSB8IEVNUFRZIHwgRU1QVFlfU0VRVUVOQ0UgfCBFTkNPRElORyB8IEVRIHwgRVZFUlkgfCBFWENFUFQgfCBFWFRFUk5BTCB8IEZPTExPV0lORyB8IEZPTExPV0lOR19TSUJMSU5HIHwgRk9SIHwgRlVOQ1RJT04gfCBHRSB8IEdSRUFURVNUIHwgR1QgfCBJRElWIHwgSUYgfCBJTVBPUlQgfCBJTiB8IElOSEVSSVQgfCBJTlNUQU5DRSB8IElOVEVSU0VDVCB8IElTIHwgSVRFTSB8IExBWCB8IExFIHwgTEVBU1QgfCBMRVQgfCBMVCB8IE1PRCB8IE1PRFVMRSB8IE5BTUVTUEFDRSB8IE5FIHwgTk9fSU5IRVJJVCB8IE5PX1BSRVNFUlZFIHwgTk9ERSB8IE9GIHwgT1BUSU9OIHwgT1IgfCBPUkRFUiB8IE9SREVSRUQgfCBPUkRFUklORyB8IFBBUkVOVCB8IFBSRUNFRElORyB8IFBSRUNFRElOR19TSUJMSU5HIHwgUFJFU0VSVkUgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OIHwgUkVUVVJOIHwgU0FUSVNGSUVTIHwgU0NIRU1BIHwgU0NIRU1BX0FUVFJJQlVURSB8IFNDSEVNQV9FTEVNRU5UIHwgU0VMRiB8IFNPTUUgfCBTVEFCTEUgfCBTVFJJQ1QgfCBTVFJJUCB8IFRFWFQgfCBUSEVOIHwgVE8gfCBUUkVBVCB8IFRZUEVTV0lUQ0ggfCBVTklPTiB8IFVOT1JERVJFRCB8IFZBTElEQVRFIHwgVkFSSUFCTEUgfCBWRVJTSU9OIHwgV0hFUkUgfCBYUVVFUlkgfCBBTExPV0lORyB8IENBVENIIHwgQ09OVEVYVCB8IENPVU5UIHwgREVDSU1BTF9GT1JNQVQgfCBERUNJTUFMX1NFUEFSQVRPUiB8IERJR0lUIHwgRU5EIHwgR1JPVVAgfCBHUk9VUElOR19TRVBBUkFUT1IgfCBJTkZJTklUWSB8IE1JTlVTX1NJR04gfCBOQU1FU1BBQ0VfTk9ERSB8IE5BTiB8IE5FWFQgfCBPTkxZIHwgUEFUVEVSTl9TRVBBUkFUT1IgfCBQRVJDRU5UIHwgUEVSX01JTExFIHwgUFJFVklPVVMgfCBTTElESU5HIHwgU1RBUlQgfCBTV0lUQ0ggfCBUUlkgfCBUVU1CTElORyB8IFRZUEUgfCBXSEVOIHwgV0lORE9XIHwgWkVST19ESUdJVCB8IEFGVEVSIHwgQkVGT1JFIHwgQ09QWSB8IERFTEVURSB8IEZJUlNUIHwgSU5TRVJUIHwgSU5UTyB8IExBU1QgfCBNT0RJRlkgfCBOT0RFUyB8IFJFTkFNRSB8IFJFUExBQ0UgfCBSRVZBTElEQVRJT04gfCBTS0lQIHwgVVBEQVRJTkcgfCBWQUxVRSB8IFdJVEggfCBBTEwgfCBBTlkgfCBDT05UQUlOUyB8IENPTlRFTlQgfCBESUFDUklUSUNTIHwgRElGRkVSRU5UIHwgRElTVEFOQ0UgfCBFTlRJUkUgfCBFWEFDVExZIHwgRlJPTSB8IEZUX09QVElPTiB8IEZUQU5EIHwgRlROT1QgfCBGVE9SIHwgSU5TRU5TSVRJVkUgfCBMQU5HVUFHRSB8IExFVkVMUyB8IExPV0VSQ0FTRSB8IE1PU1QgfCBOTyB8IE5PVCB8IE9DQ1VSUyB8IFBBUkFHUkFQSCB8IFBBUkFHUkFQSFMgfCBQSFJBU0UgfCBSRUxBVElPTlNISVAgfCBTQU1FIHwgU0NPUkUgfCBTRU5TSVRJVkUgfCBTRU5URU5DRSB8IFNFTlRFTkNFUyB8IFNURU1NSU5HIHwgU1RPUCB8IFRIRVNBVVJVUyB8IFRJTUVTIHwgVVBQRVJDQVNFIHwgVVNJTkcgfCBXRUlHSFQgfCBXSUxEQ0FSRFMgfCBXSVRIT1VUIHwgV09SRCB8IFdPUkRTIHwgQlJFQUsgfCBDT05USU5VRSB8IEVYSVQgfCBMT09QIHwgUkVUVVJOSU5HIHwgV0hJTEUgfCBDSEVDSyB8IENPTExFQ1RJT04gfCBDT05TVFJBSU5UIHwgRk9SRUFDSCB8IEZPUkVJR04gfCBJTkRFWCB8IElOVEVHUklUWSB8IEtFWSB8IE9OIHwgVU5JUVVFIHwgQklOQVJZIHwgQU1QX0VSIHwgQVBPU19FUiB8IFFVT1RfRVIgfCBDT05DQVQgfCBMUEFSRU4gfCBSUEFSRU4gfCBET0xMQVIgfCBMQlJBQ0tFVCB8IFJCUkFDS0VUIHwgTFNRVUFSRSB8IFJTUVVBUkUgfCBFUVVBTCB8IEJJTkQgfCBOT1RFUVVBTCB8IEFOTl9QRVJDRU5UIHwgSEFTSCB8IEFNUCB8IENPTU1BIHwgUVVFU1RJT04gfCBTVEFSIHwgUExVUyB8IE1JTlVTIHwgU01BTExFUiB8IEdSRUFURVIgfCBTTUFMTEVSRVEgfCBHUkVBVEVSRVEgfCBTTUFMTEVSX1NNQUxMRVIgfCBHUkVBVEVSX0dSRUFURVIgfCBTTEFTSCB8IFNMQVNIX1NMQVNIIHwgRE9UIHwgRE9UX0RPVCB8IENPTE9OIHwgQ09MT05fQ09MT04gfCBFTVBUWV9DTE9TRV9UQUcgfCBDTE9TRV9UQUcgfCBTRU1JQ09MT04gfCBWQkFSIHwgUFJBR01BX1NUQVJUIHwgUFJBR01BX0VORCB8IFhNTF9DT01NRU5UX1NUQVJUIHwgWE1MX0NPTU1FTlRfRU5EIHwgUElfU1RBUlQgfCBQSV9FTkQgfCBBVFRSX1NJR04gfCBDSEFSUkVGX0RFQyB8IENIQVJSRUZfSEVYIHwgQVBPUyB8IFFVT1QgfCBMX05DTmFtZSB8IFMgfCBMX1ByYWdtYSB8IExfRGlyQ29tbWVudENvbnN0cnVjdG9yIHwgTF9EaXJQSUNvbnN0cnVjdG9yIHwgTF9JbnRlZ2VyTGl0ZXJhbCB8IExfRGVjaW1hbExpdGVyYWwgfCBMX0RvdWJsZUxpdGVyYWwgfCBMX0NvbW1lbnQgfCBMX0FueUNoYXIgKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9YSxlPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDp2YXIgYz1iLkxBKDEpO2E9LTE7aWYoYz09ImEiKWE9MTtlbHNlIGlmKGM9PSJiIilhPTI7ZWxzZSBpZihjPT0iYyIpYT0zO2Vsc2UgaWYoYz09ImQiKWE9NDtlbHNlIGlmKGM9PSJlIilhPTU7ZWxzZSBpZihjPT0iZiIpYT02O2Vsc2UgaWYoYz09ImciKWE9NztlbHNlIGlmKGM9PSJpIilhPTg7ZWxzZSBpZihjPT0ibCIpYT05O2Vsc2UgaWYoYz09Im0iKWE9MTA7ZWxzZSBpZihjPT0ibiIpYT0xMTtlbHNlIGlmKGM9PSJvIilhPTEyO2Vsc2UgaWYoYz09InAiKWE9MTM7ZWxzZSBpZihjPT0iciIpYT0xNDtlbHNlIGlmKGM9PSJzIilhPTE1O2Vsc2UgaWYoYz09InQiKWE9MTY7ZWxzZSBpZihjPT0idSIpYT0xNztlbHNlIGlmKGM9PSJ2IilhPTE4O2Vsc2UgaWYoYz09InciKWE9MTk7ZWxzZSBpZihjPT0ieCIpYT0yMDtlbHNlIGlmKGM9PSJOIilhPTIxO2Vsc2UgaWYoYz09InoiKWE9MjI7ZWxzZSBpZihjPT0iayIpYT0yMztlbHNlIGlmKGM9PSJxIilhPTI0O2Vsc2UgaWYoYz09InwiKWE9MjU7ZWxzZSBpZihjPT0iKCIpYT0yNjtlbHNlIGlmKGM9PSIpIilhPTI3O2Vsc2UgaWYoYz09IiQiKWE9Mjg7ZWxzZSBpZihjPT0ieyIpYT0yOTtlbHNlIGlmKGM9PSJ9IilhPTMwO2Vsc2UgaWYoYz09IlsiKWE9MzE7ZWxzZSBpZihjPT0iXSIpYT0zMjtlbHNlIGlmKGM9PSI9IilhPTMzO2Vsc2UgaWYoYz09IjoiKWE9MzQ7ZWxzZSBpZihjPT0iISIpYT0zNTtlbHNlIGlmKGM9PSIlIilhPTM2O2Vsc2UgaWYoYz09IiMiKWE9Mzc7ZWxzZSBpZihjPT0iJiIpYT0zODtlbHNlIGlmKGM9PSIsIilhPTM5O2Vsc2UgaWYoYz09Ij8iKWE9NDA7ZWxzZSBpZihjPT0iKiIpYT00MTtlbHNlIGlmKGM9PSIrIilhPTQyO2Vsc2UgaWYoYz09Ii0iKWE9NDM7ZWxzZSBpZihjPT0iPCIpYT00NDtlbHNlIGlmKGM9PSI+IilhPTQ1O2Vsc2UgaWYoYz09Ii8iKWE9NDY7ZWxzZSBpZihjPT0iLiIpYT00NztlbHNlIGlmKGM9PSI7IilhPTQ4O2Vsc2UgaWYoYz09IkAiKWE9NDk7ZWxzZSBpZihjPT0iJyIpYT01MDtlbHNlIGlmKGM9PSciJylhPTUxO2Vsc2UgaWYoYz49IkEiJiZjPD0iTSJ8fGM+PSJPIiYmYzw9IloifHxjPT0iXyJ8fGM9PSJoInx8Yz09ImoifHxjPT0ieSIpYT01MjtlbHNlIGlmKGM+PSIJIiYmYzw9IlxuInx8Yz09IlxyInx8Yz09IiAiKWE9NTM7ZWxzZSBpZihjPj0iMCImJmM8PSI5IilhPTU0O2Vsc2UgaWYoYz49IlwwIiYmYzw9IlxiInx8Yz49IgsiJiZjPD0iXGYifHxjPj0iDiImJmM8PSIfInx8Yz09IlxcInx8Yz09Il4ifHxjPT0iYCJ8fGM+PSJ+IiYmYzw9Iu+/vyIpYT01NTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTp2YXIgZD1iLkxBKDEpLGU9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxkPT0iIyI/YT0xNDY6ZD09IjoiJiYhdGhpcy5pblN0cj9hPTE0NzphPTE0OCxiLnNlZWsoZSk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDI6dmFyIGY9Yi5MQSgxKTthPS0xLGY+PSJcMCImJmY8PSLvv78iP2E9NjY4OmE9NjY3O2lmKGE+PTApcmV0dXJuIGF9fS5jYWxsKHRoaXMucmVjb2duaXplcixhLGIpO2lmKCFkLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZSkpcmV0dXJuIGU7dmFyIGY9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMTksYyxiKTt0aHJvdyB0aGlzLmVycm9yKGYpLGZ9LGR1bW15Om51bGx9KX0oKSxiLlhRdWVyeUxleGVyPWZ9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeS9YUURUTGV4ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS94cXVlcnkvYW50bHIzLWFsbCJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2FudGxyMy1hbGwiKS5vcmcsZT1iLlhRRFRMZXhlcj1mdW5jdGlvbihhLGIpe2Uuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSxiKX07ZC5hbnRsci5sYW5nLmV4dGVuZChlLGQuYW50bHIucnVudGltZS5MZXhlcix7Y29tbWVudHM6W10sYWRkQ29tbWVudDpmdW5jdGlvbihhLGIpe3RoaXMuY29tbWVudHMucHVzaCh7c3RhcnQ6YSxzdG9wOmJ9KX0saXNXc0V4cGxpY2l0OiExLHNldElzV3NFeHBsaWNpdDpmdW5jdGlvbihhKXt0aGlzLmlzV3NFeHBsaWNpdD1hfSxhZGRUb1N0YWNrOmZ1bmN0aW9uKGEpe2EucHVzaCh0aGlzKX0scmV3aW5kVG9JbmRleDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmlucHV0O2Iuc2VlayhhKX19KX0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5L1hRdWVyeVBhcnNlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL3hxdWVyeS9hbnRscjMtYWxsIiwiYWNlL21vZGUveHF1ZXJ5L1N0cmluZ0xleGVyIiwiYWNlL21vZGUveHF1ZXJ5L1hNTExleGVyIiwiYWNlL21vZGUveHF1ZXJ5L1hRdWVyeUxleGVyIiwiYWNlL21vZGUveHF1ZXJ5L1hRRFRQYXJzZXIiLCJhY2UvbW9kZS94cXVlcnkvUG9zaXRpb24iXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9hbnRscjMtYWxsIikub3JnLGU9YSgiLi9TdHJpbmdMZXhlciIpLlN0cmluZ0xleGVyLGY9YSgiLi9YTUxMZXhlciIpLlhNTExleGVyLGc9YSgiLi9YUXVlcnlMZXhlciIpLlhRdWVyeUxleGVyLGg9YSgiLi9YUURUUGFyc2VyIikuWFFEVFBhcnNlcixqPWEoIi4vUG9zaXRpb24iKS5Qb3NpdGlvbixrPWZ1bmN0aW9uKCl7fSxsPSEwLG09ITAsbj0hMCxvPSExLHA9ZnVuY3Rpb24oYSxiKXtifHwoYj1uZXcgZC5hbnRsci5ydW50aW1lLlJlY29nbml6ZXJTaGFyZWRTdGF0ZSksZnVuY3Rpb24oKXt0aGlzLmlzSW5BdHRyPSExLHRoaXMuZXJyb3JzPVtdLHRoaXMuaGFzRXJyb3JzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3JzLmxlbmd0aD4wfSx0aGlzLmFkZEVycm9yPWZ1bmN0aW9uKGEpe3RoaXMuZXJyb3JzLnB1c2goYSl9LHRoaXMuZ2V0RXJyb3JzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3JzfSx0aGlzLnNvdXJjZT1udWxsLHRoaXMuc2V0U291cmNlPWZ1bmN0aW9uKGEpe3RoaXMuc291cmNlPWEsdGhpcy5oaWdobGlnaHRlci5zZXRTb3VyY2UoYSl9LHRoaXMubGV4ZXJTdGFjaz1uZXcgQXJyYXksdGhpcy5sYz1mdW5jdGlvbihhKXtyZXR1cm4gYX0sdGhpcy5wb3BMZXhlcj1mdW5jdGlvbigpe2lmKHRoaXMubGV4ZXJTdGFjay5sZW5ndGg9PTApcmV0dXJuO3RoaXMuZ2V0VG9rZW5TdHJlYW0oKS5tYXJrKCk7dmFyIGE9dGhpcy5nZXRUb2tlblN0cmVhbSgpLmdldFRva2VuU291cmNlKCksYj10aGlzLmxleGVyU3RhY2sucG9wKCk7YSBpbnN0YW5jZW9mIGUmJmIgaW5zdGFuY2VvZiBnJiYoYi5pblN0cj0hMSksdGhpcy5nZXRUb2tlblN0cmVhbSgpLnNldFRva2VuU291cmNlKGIpfSx0aGlzLnB1c2hYUXVlcnlMZXhlcj1mdW5jdGlvbigpe3hxdWVyeUxleGVyPW5ldyBnKHRoaXMuc291cmNlKSx0aGlzLnB1c2hMZXhlcih4cXVlcnlMZXhlcil9LHRoaXMucHVzaFN0cmluZ0xleGVyPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBlKHRoaXMuc291cmNlKTtiLmluQXBvc1N0cj1hLGIuaW5RdW90U3RyPSFhLGIuc2V0SXNXc0V4cGxpY2l0KCEwKSx0aGlzLnB1c2hMZXhlcihiKX0sdGhpcy5wdXNoWE1MTGV4ZXI9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgZih0aGlzLnNvdXJjZSk7YS5zZXRJc1dzRXhwbGljaXQoITApLHRoaXMucHVzaExleGVyKGEpfSx0aGlzLnB1c2hMZXhlcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldFRva2VuU3RyZWFtKCkuZ2V0VG9rZW5Tb3VyY2UoKTtiLmFkZFRvU3RhY2sodGhpcy5sZXhlclN0YWNrKSx0aGlzLmdldFRva2VuU3RyZWFtKCkuc2V0VG9rZW5Tb3VyY2UoYSl9LHRoaXMuc2V0V3NFeHBsaWNpdD1mdW5jdGlvbihhKXt0aGlzLmdldFRva2VuU3RyZWFtKCkuc2V0V3NFeHBsaWNpdChhKX0sdGhpcy5hcD1mdW5jdGlvbihhKXt0aGlzLmFkZFRva2VuKGEsInhtbF9wZSIpfSx0aGlzLmF4PWZ1bmN0aW9uKGEsYil7dGhpcy5oaWdobGlnaHRlci5hZGRUb2tlbihhLmdldFN0YXJ0SW5kZXgoKSxiLmdldFN0b3BJbmRleCgpLCJ4bWxfcGUiKX0sdGhpcy5hdD1mdW5jdGlvbihhLGIpe3RoaXMuaGlnaGxpZ2h0ZXIuYWRkVG9rZW4oYS5nZXRTdGFydEluZGV4KCksYi5nZXRTdG9wSW5kZXgoKSwibWV0YS50YWciKX0sdGhpcy5hdj1mdW5jdGlvbihhLGIpe3RoaXMuaGlnaGxpZ2h0ZXIuYWRkVG9rZW4oYS5nZXRTdGFydEluZGV4KCksYi5nZXRTdG9wSW5kZXgoKSwidmFyaWFibGUiKX0sdGhpcy5hZj1mdW5jdGlvbihhLGIpe3RoaXMuaGlnaGxpZ2h0ZXIuYWRkVG9rZW4oYS5nZXRTdGFydEluZGV4KCksYi5nZXRTdG9wSW5kZXgoKSwic3VwcG9ydC5mdW5jdGlvbiIpfSx0aGlzLmFvPWZ1bmN0aW9uKGEpe3RoaXMuYWRkVG9rZW4oYSwia2V5d29yZC5vcGVyYXRvciIpfSx0aGlzLmFrPWZ1bmN0aW9uKGEpe3RoaXMuYWRkVG9rZW4oYSwia2V5d29yZCIpfSx0aGlzLmFkPWZ1bmN0aW9uKGEpe3RoaXMuYWRkVG9rZW4oYSwiY29uc3RhbnQiKX0sdGhpcy5hZGRTdHJpbmc9ZnVuY3Rpb24oYSxiKXtiPT11bmRlZmluZWQ/dGhpcy5hZGRUb2tlbihhLCJzdHJpbmciKTp0aGlzLmhpZ2hsaWdodGVyLmFkZFRva2VuKGEuZ2V0U3RhcnRJbmRleCgpLGIuZ2V0U3RvcEluZGV4KCksInN0cmluZyIpfSx0aGlzLmFjPWZ1bmN0aW9uKGEpe3RoaXMuYWRkVG9rZW4oYSwiY29tbWVudCIpfSx0aGlzLmFkZFRva2VuPWZ1bmN0aW9uKGEsYil7aWYoZC5hbnRsci5sYW5nLmlzQXJyYXkoYSkpZm9yKGkgaW4gYSl0aGlzLmhpZ2hsaWdodGVyLmFkZFRva2VuKGFbaV0uZ2V0U3RhcnRJbmRleCgpLGFbaV0uZ2V0U3RvcEluZGV4KCksYik7ZWxzZSBhIT1udWxsJiZ0aGlzLmhpZ2hsaWdodGVyLmFkZFRva2VuKGEuZ2V0U3RhcnRJbmRleCgpLGEuZ2V0U3RvcEluZGV4KCksYil9fS5jYWxsKHRoaXMpLHAuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSxiKSx0aGlzLmRmYTE9bmV3IHAuREZBMSh0aGlzKSx0aGlzLmRmYTI9bmV3IHAuREZBMih0aGlzKSx0aGlzLmRmYTY9bmV3IHAuREZBNih0aGlzKSx0aGlzLmRmYTk9bmV3IHAuREZBOSh0aGlzKSx0aGlzLmRmYTQ0PW5ldyBwLkRGQTQ0KHRoaXMpLHRoaXMuZGZhNDY9bmV3IHAuREZBNDYodGhpcyksdGhpcy5kZmExMTc9bmV3IHAuREZBMTE3KHRoaXMpLHRoaXMuZGZhMTE5PW5ldyBwLkRGQTExOSh0aGlzKSx0aGlzLmRmYTEyMT1uZXcgcC5ERkExMjEodGhpcyksdGhpcy5kZmExMjY9bmV3IHAuREZBMTI2KHRoaXMpLHRoaXMuZGZhMTM0PW5ldyBwLkRGQTEzNCh0aGlzKSx0aGlzLmRmYTE2Mj1uZXcgcC5ERkExNjIodGhpcyksdGhpcy5kZmExNjQ9bmV3IHAuREZBMTY0KHRoaXMpLHRoaXMuZGZhMjE4PW5ldyBwLkRGQTIxOCh0aGlzKSx0aGlzLmRmYTIzNz1uZXcgcC5ERkEyMzcodGhpcyksdGhpcy5kZmEyNTM9bmV3IHAuREZBMjUzKHRoaXMpLHRoaXMuYWRhcHRvcj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZUFkYXB0b3J9O2QuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0VPRjotMSxMX1F1b3RBdHRyQ29udGVudENoYXI6NCxMX0Fwb3NBdHRyQ29udGVudENoYXI6NSxMX0VsZW1lbnRDb250ZW50Q2hhcjo2LExfQ0RhdGFTZWN0aW9uOjcsTF9QcmVkZWZpbmVkRW50aXR5UmVmOjgsTF9DaGFyUmVmOjksRVNDQVBFX0xCUkFDS0VUOjEwLEVTQ0FQRV9SQlJBQ0tFVDoxMSxFU0NBUEVfQVBPUzoxMixFU0NBUEVfUVVPVDoxMyxDREFUQV9TVEFSVDoxNCxDREFUQV9FTkQ6MTUsQU5DRVNUT1I6MTYsQU5DRVNUT1JfT1JfU0VMRjoxNyxBTkQ6MTgsQVM6MTksQVNDRU5ESU5HOjIwLEFUOjIxLEFUVFJJQlVURToyMixCQVNFX1VSSToyMyxCT1VOREFSWV9TUEFDRToyNCxCWToyNSxDQVNFOjI2LENBU1Q6MjcsQ0FTVEFCTEU6MjgsQ0hJTEQ6MjksQ09MTEFUSU9OOjMwLENPTU1FTlQ6MzEsQ09OU1RSVUNUSU9OOjMyLENPUFlfTkFNRVNQQUNFUzozMyxERUNMQVJFOjM0LERFRkFVTFQ6MzUsREVTQ0VOREFOVDozNixERVNDRU5EQU5UX09SX1NFTEY6MzcsREVTQ0VORElORzozOCxESVY6MzksRE9DVU1FTlQ6NDAsRE9DVU1FTlRfTk9ERTo0MSxFTEVNRU5UOjQyLEVMU0U6NDMsRU1QVFk6NDQsRU1QVFlfU0VRVUVOQ0U6NDUsRU5DT0RJTkc6NDYsRVE6NDcsRVZFUlk6NDgsRVhDRVBUOjQ5LEVYVEVSTkFMOjUwLEZPTExPV0lORzo1MSxGT0xMT1dJTkdfU0lCTElORzo1MixGT1I6NTMsRlVOQ1RJT046NTQsR0U6NTUsR1JFQVRFU1Q6NTYsR1Q6NTcsSURJVjo1OCxJRjo1OSxJTVBPUlQ6NjAsSU46NjEsSU5IRVJJVDo2MixJTlNUQU5DRTo2MyxJTlRFUlNFQ1Q6NjQsSVM6NjUsSVRFTTo2NixMQVg6NjcsTEU6NjgsTEVBU1Q6NjksTEVUOjcwLExUOjcxLE1PRDo3MixNT0RVTEU6NzMsTkFNRVNQQUNFOjc0LE5FOjc1LE5PX0lOSEVSSVQ6NzYsTk9fUFJFU0VSVkU6NzcsTk9ERTo3OCxPRjo3OSxPUFRJT046ODAsT1I6ODEsT1JERVI6ODIsT1JERVJFRDo4MyxPUkRFUklORzo4NCxQQVJFTlQ6ODUsUFJFQ0VESU5HOjg2LFBSRUNFRElOR19TSUJMSU5HOjg3LFBSRVNFUlZFOjg4LFBST0NFU1NJTkdfSU5TVFJVQ1RJT046ODksUkVUVVJOOjkwLFNBVElTRklFUzo5MSxTQ0hFTUE6OTIsU0NIRU1BX0FUVFJJQlVURTo5MyxTQ0hFTUFfRUxFTUVOVDo5NCxTRUxGOjk1LFNPTUU6OTYsU1RBQkxFOjk3LFNUUklDVDo5OCxTVFJJUDo5OSxURVhUOjEwMCxUSEVOOjEwMSxUTzoxMDIsVFJFQVQ6MTAzLFRZUEVTV0lUQ0g6MTA0LFVOSU9OOjEwNSxVTk9SREVSRUQ6MTA2LFZBTElEQVRFOjEwNyxWQVJJQUJMRToxMDgsVkVSU0lPTjoxMDksV0hFUkU6MTEwLFhRVUVSWToxMTEsQUxMT1dJTkc6MTEyLENBVENIOjExMyxDT05URVhUOjExNCxDT1VOVDoxMTUsREVDSU1BTF9GT1JNQVQ6MTE2LERFQ0lNQUxfU0VQQVJBVE9SOjExNyxESUdJVDoxMTgsRU5EOjExOSxHUk9VUDoxMjAsR1JPVVBJTkdfU0VQQVJBVE9SOjEyMSxJTkZJTklUWToxMjIsTUlOVVNfU0lHTjoxMjMsTkFNRVNQQUNFX05PREU6MTI0LE5BTjoxMjUsTkVYVDoxMjYsT05MWToxMjcsUEFUVEVSTl9TRVBBUkFUT1I6MTI4LFBFUkNFTlQ6MTI5LFBFUl9NSUxMRToxMzAsUFJFVklPVVM6MTMxLFNMSURJTkc6MTMyLFNUQVJUOjEzMyxTV0lUQ0g6MTM0LFRSWToxMzUsVFVNQkxJTkc6MTM2LFRZUEU6MTM3LFdIRU46MTM4LFdJTkRPVzoxMzksWkVST19ESUdJVDoxNDAsQUZURVI6MTQxLEJFRk9SRToxNDIsQ09QWToxNDMsREVMRVRFOjE0NCxGSVJTVDoxNDUsSU5TRVJUOjE0NixJTlRPOjE0NyxMQVNUOjE0OCxNT0RJRlk6MTQ5LE5PREVTOjE1MCxSRU5BTUU6MTUxLFJFUExBQ0U6MTUyLFJFVkFMSURBVElPTjoxNTMsU0tJUDoxNTQsVVBEQVRJTkc6MTU1LFZBTFVFOjE1NixXSVRIOjE1NyxBTEw6MTU4LEFOWToxNTksQ09OVEFJTlM6MTYwLENPTlRFTlQ6MTYxLERJQUNSSVRJQ1M6MTYyLERJRkZFUkVOVDoxNjMsRElTVEFOQ0U6MTY0LEVOVElSRToxNjUsRVhBQ1RMWToxNjYsRlJPTToxNjcsRlRfT1BUSU9OOjE2OCxGVEFORDoxNjksRlROT1Q6MTcwLEZUT1I6MTcxLElOU0VOU0lUSVZFOjE3MixMQU5HVUFHRToxNzMsTEVWRUxTOjE3NCxMT1dFUkNBU0U6MTc1LE1PU1Q6MTc2LE5POjE3NyxOT1Q6MTc4LE9DQ1VSUzoxNzksUEFSQUdSQVBIOjE4MCxQQVJBR1JBUEhTOjE4MSxQSFJBU0U6MTgyLFJFTEFUSU9OU0hJUDoxODMsU0FNRToxODQsU0NPUkU6MTg1LFNFTlNJVElWRToxODYsU0VOVEVOQ0U6MTg3LFNFTlRFTkNFUzoxODgsU1RFTU1JTkc6MTg5LFNUT1A6MTkwLFRIRVNBVVJVUzoxOTEsVElNRVM6MTkyLFVQUEVSQ0FTRToxOTMsVVNJTkc6MTk0LFdFSUdIVDoxOTUsV0lMRENBUkRTOjE5NixXSVRIT1VUOjE5NyxXT1JEOjE5OCxXT1JEUzoxOTksQlJFQUs6MjAwLENPTlRJTlVFOjIwMSxFWElUOjIwMixMT09QOjIwMyxSRVRVUk5JTkc6MjA0LFdISUxFOjIwNSxDSEVDSzoyMDYsQ09MTEVDVElPTjoyMDcsQ09OU1RSQUlOVDoyMDgsRk9SRUFDSDoyMDksRk9SRUlHTjoyMTAsSU5ERVg6MjExLElOVEVHUklUWToyMTIsS0VZOjIxMyxPTjoyMTQsVU5JUVVFOjIxNSxCSU5BUlk6MjE2LEFNUF9FUjoyMTcsQVBPU19FUjoyMTgsUVVPVF9FUjoyMTksQ09OQ0FUOjIyMCxMUEFSRU46MjIxLFJQQVJFTjoyMjIsRE9MTEFSOjIyMyxMQlJBQ0tFVDoyMjQsUkJSQUNLRVQ6MjI1LExTUVVBUkU6MjI2LFJTUVVBUkU6MjI3LEVRVUFMOjIyOCxCSU5EOjIyOSxOT1RFUVVBTDoyMzAsQU5OX1BFUkNFTlQ6MjMxLEhBU0g6MjMyLEFNUDoyMzMsQ09NTUE6MjM0LFFVRVNUSU9OOjIzNSxTVEFSOjIzNixQTFVTOjIzNyxNSU5VUzoyMzgsU01BTExFUjoyMzksR1JFQVRFUjoyNDAsU01BTExFUkVROjI0MSxHUkVBVEVSRVE6MjQyLFNNQUxMRVJfU01BTExFUjoyNDMsR1JFQVRFUl9HUkVBVEVSOjI0NCxTTEFTSDoyNDUsU0xBU0hfU0xBU0g6MjQ2LERPVDoyNDcsRE9UX0RPVDoyNDgsQ09MT046MjQ5LENPTE9OX0NPTE9OOjI1MCxFTVBUWV9DTE9TRV9UQUc6MjUxLENMT1NFX1RBRzoyNTIsU0VNSUNPTE9OOjI1MyxWQkFSOjI1NCxQUkFHTUFfU1RBUlQ6MjU1LFBSQUdNQV9FTkQ6MjU2LFhNTF9DT01NRU5UX1NUQVJUOjI1NyxYTUxfQ09NTUVOVF9FTkQ6MjU4LFBJX1NUQVJUOjI1OSxQSV9FTkQ6MjYwLEFUVFJfU0lHTjoyNjEsQ0hBUlJFRl9ERUM6MjYyLENIQVJSRUZfSEVYOjI2MyxBUE9TOjI2NCxRVU9UOjI2NSxOQ05hbWVTdGFydENoYXI6MjY2LE5DTmFtZUNoYXI6MjY3LExfTkNOYW1lOjI2OCxMZXR0ZXI6MjY5LEhleExldHRlcjoyNzAsRGlnaXQ6MjcxLERpZ2l0czoyNzIsUzoyNzMsU1U6Mjc0LExfUHJhZ21hOjI3NSxMX0RpckNvbW1lbnRDb25zdHJ1Y3RvcjoyNzYsTF9EaXJQSUNvbnN0cnVjdG9yOjI3NyxMX0ludGVnZXJMaXRlcmFsOjI3OCxMX0RlY2ltYWxMaXRlcmFsOjI3OSxMX0RvdWJsZUxpdGVyYWw6MjgwLExfQ29tbWVudDoyODEsTF9BbnlDaGFyOjI4MixMX1F1b3RTdHJpbmdMaXRlcmFsQ2hhcjoyODMsTF9BcG9zU3RyaW5nTGl0ZXJhbENoYXI6Mjg0LExpYnJhcnlNb2R1bGU6Mjg1LE1haW5Nb2R1bGU6Mjg2LFZlcnNpb25EZWNsOjI4NyxWZXJzaW9uRGVjbEVuY29kaW5nOjI4OCxWZXJzaW9uRGVjbFZlcnNpb246Mjg5LE1vZHVsZURlY2w6MjkwLFByb2xvZzoyOTEsRGVmYXVsdE5hbWVzcGFjZURlY2xzOjI5MixEZWZhdWx0TmFtZXNwYWNlRGVjbDoyOTMsU2V0dGVyczoyOTQsU2V0dGVyOjI5NSxOYW1lc3BhY2VEZWNsczoyOTYsTmFtZXNwYWNlRGVjbDoyOTcsSW1wb3J0czoyOTgsRlRPcHRpb25EZWNsczoyOTksU2NoZW1hSW1wb3J0OjMwMCxTY2hlbWFQcmVmaXg6MzAxLE5hbWVzcGFjZU5hbWU6MzAyLERlZmF1bHRFbGVtZW50TmFtZXNwYWNlOjMwMyxBdEhpbnRzOjMwNCxNb2R1bGVJbXBvcnQ6MzA1LEJhc2VVUklEZWNsOjMwNixPcmRlcmVkRGVjbHM6MzA3LFZhckRlY2w6MzA4LFZhclR5cGU6MzA5LFZhclZhbHVlOjMxMCxWYXJEZWZhdWx0VmFsdWU6MzExLFZhclZhcmlhYmxlRGVjbDozMTIsRnVuY3Rpb25EZWNsOjMxMyxQYXJhbUxpc3Q6MzE0LFJldHVyblR5cGU6MzE1LE9wdGlvbkRlY2w6MzE2LFR5cGVEZWNsYXJhdGlvbjozMTcsUGFyYW06MzE4LEVuY2xvc2VkRXhwcjozMTksUXVlcnlCb2R5OjMyMCxVbmFyeUV4cHI6MzIxLERpckVsZW1Db25zdHJ1Y3RvcjozMjIsRGlyQXR0cmlidXRlTGlzdDozMjMsRGlyQXR0cmlidXRlVmFsdWU6MzI0LERpckVsZW1Db250ZW50OjMyNSxDb21tb25Db250ZW50OjMyNixTZXF1ZW5jZVR5cGU6MzI3LEVtcHR5U2VxdWVuY2VUZXN0OjMyOCxLaW5kVGVzdDozMjksSXRlbVRlc3Q6MzMwLEZ1bmN0aW9uVGVzdDozMzEsQXRvbWljVHlwZTozMzIsQXRvbWljT3JVbmlvblR5cGU6MzMzLFN0cmluZ0xpdGVyYWw6MzM0LEVsZW1lbnRDb250ZW50Q2hhcjozMzUsQXR0cmlidXRlVmFsdWVDaGFyOjMzNixRTmFtZTozMzcsQmxvY2tFeHByOjMzOCxCaW5hcnlUZXN0OjMzOSxFWFBMSUNJVExZOjM0MH0pLGZ1bmN0aW9uKCl7dmFyIGE9LTEsYj00LGM9NSxlPTYsZj03LGc9OCxpPTksaj0xMCxxPTExLHI9MTIscz0xMyx0PTE0LHU9MTUsdj0xNix3PTE3LHg9MTgseT0xOSx6PTIwLEE9MjEsQj0yMixDPTIzLEQ9MjQsRT0yNSxGPTI2LEc9MjcsSD0yOCxJPTI5LEo9MzAsSz0zMSxMPTMyLE09MzMsTj0zNCxPPTM1LFA9MzYsUT0zNyxSPTM4LFM9MzksVD00MCxVPTQxLFY9NDIsVz00MyxYPTQ0LFk9NDUsWj00NiwkPTQ3LF89NDgsYWI9NDksYmI9NTAsY2I9NTEsZGI9NTIsZWI9NTMsZmI9NTQsZ2I9NTUsaGI9NTYsaWI9NTcsamI9NTgsa2I9NTksbGI9NjAsbWI9NjEsbmI9NjIsb2I9NjMscGI9NjQscWI9NjUscmI9NjYsc2I9NjcsdGI9NjgsdWI9NjksdmI9NzAsd2I9NzEseGI9NzIseWI9NzMsemI9NzQsQWI9NzUsQmI9NzYsQ2I9NzcsRGI9NzgsRWI9NzksRmI9ODAsR2I9ODEsSGI9ODIsSWI9ODMsSmI9ODQsS2I9ODUsTGI9ODYsTWI9ODcsTmI9ODgsT2I9ODksUGI9OTAsUWI9OTEsUmI9OTIsU2I9OTMsVGI9OTQsVWI9OTUsVmI9OTYsV2I9OTcsWGI9OTgsWWI9OTksWmI9MTAwLCRiPTEwMSxfYj0xMDIsYWM9MTAzLGJjPTEwNCxjYz0xMDUsZGM9MTA2LGVjPTEwNyxmYz0xMDgsZ2M9MTA5LGhjPTExMCxpYz0xMTEsamM9MTEyLGtjPTExMyxsYz0xMTQsbWM9MTE1LG5jPTExNixvYz0xMTcscGM9MTE4LHFjPTExOSxyYz0xMjAsc2M9MTIxLHRjPTEyMix1Yz0xMjMsdmM9MTI0LHdjPTEyNSx4Yz0xMjYseWM9MTI3LHpjPTEyOCxBYz0xMjksQmM9MTMwLENjPTEzMSxEYz0xMzIsRWM9MTMzLEZjPTEzNCxHYz0xMzUsSGM9MTM2LEljPTEzNyxKYz0xMzgsS2M9MTM5LExjPTE0MCxNYz0xNDEsTmM9MTQyLE9jPTE0MyxQYz0xNDQsUWM9MTQ1LFJjPTE0NixTYz0xNDcsVGM9MTQ4LFVjPTE0OSxWYz0xNTAsV2M9MTUxLFhjPTE1MixZYz0xNTMsWmM9MTU0LCRjPTE1NSxfYz0xNTYsYWQ9MTU3LGJkPTE1OCxjZD0xNTksZGQ9MTYwLGVkPTE2MSxmZD0xNjIsZ2Q9MTYzLGhkPTE2NCxpZD0xNjUsamQ9MTY2LGtkPTE2NyxsZD0xNjgsbWQ9MTY5LG5kPTE3MCxvZD0xNzEscGQ9MTcyLHFkPTE3MyxyZD0xNzQsc2Q9MTc1LHRkPTE3Nix1ZD0xNzcsdmQ9MTc4LHdkPTE3OSx4ZD0xODAseWQ9MTgxLHpkPTE4MixBZD0xODMsQmQ9MTg0LENkPTE4NSxEZD0xODYsRWQ9MTg3LEZkPTE4OCxHZD0xODksSGQ9MTkwLElkPTE5MSxKZD0xOTIsS2Q9MTkzLExkPTE5NCxNZD0xOTUsTmQ9MTk2LE9kPTE5NyxQZD0xOTgsUWQ9MTk5LFJkPTIwMCxTZD0yMDEsVGQ9MjAyLFVkPTIwMyxWZD0yMDQsV2Q9MjA1LFhkPTIwNixZZD0yMDcsWmQ9MjA4LCRkPTIwOSxfZD0yMTAsYWU9MjExLGJlPTIxMixjZT0yMTMsZGU9MjE0LGVlPTIxNSxmZT0yMTYsZ2U9MjE3LGhlPTIxOCxpZT0yMTksamU9MjIwLGtlPTIyMSxsZT0yMjIsbWU9MjIzLG5lPTIyNCxvZT0yMjUscGU9MjI2LHFlPTIyNyxyZT0yMjgsc2U9MjI5LHRlPTIzMCx1ZT0yMzEsdmU9MjMyLHdlPTIzMyx4ZT0yMzQseWU9MjM1LHplPTIzNixBZT0yMzcsQmU9MjM4LENlPTIzOSxEZT0yNDAsRWU9MjQxLEZlPTI0MixHZT0yNDMsSGU9MjQ0LEllPTI0NSxKZT0yNDYsS2U9MjQ3LExlPTI0OCxNZT0yNDksTmU9MjUwLE9lPTI1MSxQZT0yNTIsUWU9MjUzLFJlPTI1NCxTZT0yNTUsVGU9MjU2LFVlPTI1NyxWZT0yNTgsV2U9MjU5LFhlPTI2MCxZZT0yNjEsWmU9MjYyLCRlPTI2MyxfZT0yNjQsYWY9MjY1LGJmPTI2NixjZj0yNjcsZGY9MjY4LGVmPTI2OSxmZj0yNzAsZ2Y9MjcxLGhmPTI3MixqZj0yNzMsa2Y9Mjc0LGxmPTI3NSxtZj0yNzYsbmY9Mjc3LG9mPTI3OCxwZj0yNzkscWY9MjgwLHJmPTI4MSxzZj0yODIsdGY9MjgzLHVmPTI4NCx2Zj0yODUsd2Y9Mjg2LHhmPTI4Nyx5Zj0yODgsemY9Mjg5LEFmPTI5MCxCZj0yOTEsQ2Y9MjkyLERmPTI5MyxFZj0yOTQsRmY9Mjk1LEdmPTI5NixIZj0yOTcsSWY9Mjk4LEpmPTI5OSxLZj0zMDAsTGY9MzAxLE1mPTMwMixOZj0zMDMsT2Y9MzA0LFBmPTMwNSxRZj0zMDYsUmY9MzA3LFNmPTMwOCxUZj0zMDksVWY9MzEwLFZmPTMxMSxXZj0zMTIsWGY9MzEzLFlmPTMxNCxaZj0zMTUsJGY9MzE2LF9mPTMxNyxhZz0zMTgsYmc9MzE5LGNnPTMyMCxkZz0zMjEsZWc9MzIyLGZnPTMyMyxnZz0zMjQsaGc9MzI1LGlnPTMyNixqZz0zMjcsa2c9MzI4LGxnPTMyOSxtZz0zMzAsbmc9MzMxLG9nPTMzMixwZz0zMzMscWc9MzM0LHJnPTMzNSxzZz0zMzYsdGc9MzM3LHVnPTMzOCx2Zz0zMzksd2c9MzQwO2QuYW50bHIubGFuZy5leHRlbmQocCxoLHtzZXRUcmVlQWRhcHRvcjpmdW5jdGlvbihhKXt0aGlzLmFkYXB0b3I9YX0sZ2V0VHJlZUFkYXB0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGFwdG9yfSxnZXRUb2tlbk5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHAudG9rZW5OYW1lc30sZ2V0R3JhbW1hckZpbGVOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuInhxdWVyeS9YUXVlcnlQYXJzZXIuZyJ9fSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocC5wcm90b3R5cGUse3BfTW9kdWxlX3JldHVybjpmdW5jdGlvbigpe3AucF9Nb2R1bGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Nb2R1bGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX01vZHVsZTpmdW5jdGlvbigpe3ZhciBiPW5ldyBwLnBfTW9kdWxlX3JldHVybjtiLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFT0YiKSxrPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfVmVyc2lvbkRlY2wiKSxsPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfTGlicmFyeU1vZHVsZSIpLG09bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9NYWluTW9kdWxlIik7dHJ5e3ZhciBuPTI7bj10aGlzLmRmYTEucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2gobil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1ZlcnNpb25EZWNsX2luX3BfTW9kdWxlNTA3KSxmPXRoaXMucF9WZXJzaW9uRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmay5hZGQoZi5nZXRUcmVlKCkpfXZhciBvPTI7bz10aGlzLmRmYTIucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2gobyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0xpYnJhcnlNb2R1bGVfaW5fcF9Nb2R1bGU1NDApLGc9dGhpcy5wX0xpYnJhcnlNb2R1bGUoZj9mLnRyZWU6bnVsbCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZsLmFkZChnLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtiLnRyZWU9Yzt2YXIgcT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixiIT1udWxsP2IudHJlZTpudWxsKTtjPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnP2cudHJlZTpudWxsKSxiLnRyZWU9Y31icmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTWFpbk1vZHVsZV9pbl9wX01vZHVsZTU2MyksaD10aGlzLnBfTWFpbk1vZHVsZShmP2YudHJlZTpudWxsKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm0uYWRkKGguZ2V0VHJlZSgpKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2IudHJlZT1jO3ZhciBxPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGIhPW51bGw/Yi50cmVlOm51bGwpO2M9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGg/aC50cmVlOm51bGwpLGIudHJlZT1jfX1lPXRoaXMubWF0Y2godGhpcy5pbnB1dCxhLHAuRk9MTE9XX0VPRl9pbl9wX01vZHVsZTU4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZqLmFkZChlKSxiLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYyksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhiLnRyZWUsYi5zdGFydCxiLnN0b3ApKX1jYXRjaChyKXtpZighKHIgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHI7dGhpcy5yZXBvcnRFcnJvcihyKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxyKSxiLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGIuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscil9ZmluYWxseXt9cmV0dXJuIGJ9LHBfVmVyc2lvbkRlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1ZlcnNpb25EZWNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfVmVyc2lvbkRlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ZlcnNpb25EZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9WZXJzaW9uRGVjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEVOQ09ESU5HIiksaz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFZFUlNJT04iKSxsPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gU0VNSUNPTE9OIiksbT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFhRVUVSWSIpLG49bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TdHJpbmdMaXRlcmFsIik7dHJ5e2M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGljLHAuRk9MTE9XX1hRVUVSWV9pbl9wX1ZlcnNpb25EZWNsNjE1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm0uYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTt2YXIgbz0yLHE9dGhpcy5pbnB1dC5MQSgxKTtpZihxPT1aKW89MTtlbHNle2lmKHEhPWdjKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciByPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNCwwLHRoaXMuaW5wdXQpO3Rocm93IHJ9bz0yfXN3aXRjaChvKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWixwLkZPTExPV19FTkNPRElOR19pbl9wX1ZlcnNpb25EZWNsNjIzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmouYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfVmVyc2lvbkRlY2w2MjkpLGY9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm4uYWRkKGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZ2MscC5GT0xMT1dfVkVSU0lPTl9pbl9wX1ZlcnNpb25EZWNsNjUwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmsuYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfVmVyc2lvbkRlY2w2NTYpLGc9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm4uYWRkKGcuZ2V0VHJlZSgpKTt2YXIgcz0yLHQ9dGhpcy5pbnB1dC5MQSgxKTt0PT1aJiYocz0xKTtzd2l0Y2gocyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFoscC5GT0xMT1dfRU5DT0RJTkdfaW5fcF9WZXJzaW9uRGVjbDY2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZqLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX1ZlcnNpb25EZWNsNjY3KSxmPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZuLmFkZChmLmdldFRyZWUoKSl9fWU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFlLHAuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX1ZlcnNpb25EZWNsNjczKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmwuYWRkKGUpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7YS50cmVlPWI7dmFyIHU9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsYSE9bnVsbD9hLnRyZWU6bnVsbCksdj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gdmVyIixnIT1udWxsP2cudHJlZTpudWxsKSx3PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBlbmMiLGYhPW51bGw/Zi50cmVlOm51bGwpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciB4PXRoaXMuYWRhcHRvci5uaWwoKTt4PXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoeGYsIlZlcnNpb25EZWNsIikseCk7dmFyIHk9dGhpcy5hZGFwdG9yLm5pbCgpO3k9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZSh6ZiwiVmVyc2lvbkRlY2xWZXJzaW9uIikseSksdi5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh5LHYubmV4dFRyZWUoKSksdi5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh4LHkpO3ZhciB5PXRoaXMuYWRhcHRvci5uaWwoKTt5PXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoeWYsIlZlcnNpb25EZWNsRW5jb2RpbmciKSx5KSx3Lmhhc05leHQoKSYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHksdy5uZXh0VHJlZSgpKSx3LnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHgseSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIseCksYS50cmVlPWJ9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goeil7aWYoISh6IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB6O3RoaXMucmVwb3J0RXJyb3IoeiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQseiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHopfWZpbmFsbHl7fXJldHVybiBhfSxwX01haW5Nb2R1bGVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX01haW5Nb2R1bGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9NYWluTW9kdWxlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9NYWluTW9kdWxlOmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBwLnBfTWFpbk1vZHVsZV9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBtX1F1ZXJ5Qm9keSIpLGg9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcG1fUHJvbG9nIik7dHJ5e3RoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Qcm9sb2dfaW5fcF9NYWluTW9kdWxlNzM5KSxlPXRoaXMucG1fUHJvbG9nKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZoLmFkZChlLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX1F1ZXJ5Qm9keV9pbl9wX01haW5Nb2R1bGU3NDEpLGY9dGhpcy5wbV9RdWVyeUJvZHkoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmcuYWRkKGYuZ2V0VHJlZSgpKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2IudHJlZT1jO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGIhPW51bGw/Yi50cmVlOm51bGwpO2M9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBqPXRoaXMuYWRhcHRvci5uaWwoKTtqPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUod2YsIk1haW5Nb2R1bGUiKSxqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaixhKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaixoLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGopLGIudHJlZT1jfWIuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYn0scF9MaWJyYXJ5TW9kdWxlX3JldHVybjpmdW5jdGlvbigpe3AucF9MaWJyYXJ5TW9kdWxlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfTGlicmFyeU1vZHVsZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTGlicmFyeU1vZHVsZTpmdW5jdGlvbihhKXt2YXIgYj1uZXcgcC5wX0xpYnJhcnlNb2R1bGVfcmV0dXJuO2Iuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYz1udWxsLGU9bnVsbCxmPW51bGwsZz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwbV9Qcm9sb2ciKSxoPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfTW9kdWxlRGVjbCIpO3RyeXt0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Nb2R1bGVEZWNsX2luX3BfTGlicmFyeU1vZHVsZTc5NyksZT10aGlzLnBfTW9kdWxlRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaC5hZGQoZS5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Qcm9sb2dfaW5fcF9MaWJyYXJ5TW9kdWxlNzk5KSxmPXRoaXMucG1fUHJvbG9nKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZnLmFkZChmLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtiLnRyZWU9Yzt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixiIT1udWxsP2IudHJlZTpudWxsKTtjPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaj10aGlzLmFkYXB0b3IubmlsKCk7aj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHZmLCJMaWJyYXJ5TW9kdWxlIiksaiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGosYSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGosaC5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaixnLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGopLGIudHJlZT1jfWIuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYn0scF9Nb2R1bGVEZWNsX3JldHVybjpmdW5jdGlvbigpe3AucF9Nb2R1bGVEZWNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfTW9kdWxlRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTW9kdWxlRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfTW9kdWxlRGVjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFNFTUlDT0xPTiIpLG49bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBNT0RVTEUiKSxvPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTkFNRVNQQUNFIikscT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEVRVUFMIikscj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX05DTmFtZSIpLHM9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TdHJpbmdMaXRlcmFsIik7dHJ5e2Y9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHliLHAuRk9MTE9XX01PRFVMRV9pbl9wX01vZHVsZURlY2w4NTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbi5hZGQoZiksZC5hbnRsci5sYW5nLmlzTnVsbChnKSYmKGc9W10pLGcucHVzaChmKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6YixwLkZPTExPV19OQU1FU1BBQ0VfaW5fcF9Nb2R1bGVEZWNsODU5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm8uYWRkKGYpLGQuYW50bHIubGFuZy5pc051bGwoZykmJihnPVtdKSxnLnB1c2goZiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGcpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05DTmFtZV9pbl9wX01vZHVsZURlY2w4NjMpLGg9dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmci5hZGQoaC5nZXRUcmVlKCkpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHJlLHAuRk9MTE9XX0VRVUFMX2luX3BfTW9kdWxlRGVjbDg2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZxLmFkZChjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfTW9kdWxlRGVjbDg2NyksaT10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmcy5hZGQoaS5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFlLHAuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX01vZHVsZURlY2w4NjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbS5hZGQoZSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgdD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgdT10aGlzLmFkYXB0b3IubmlsKCk7dT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKEFmLCJNb2R1bGVEZWNsIiksdSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHUsci5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodSxzLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHUpLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHYpe2lmKCEodiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdjt0aGlzLnJlcG9ydEVycm9yKHYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHYpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx2KX1maW5hbGx5e31yZXR1cm4gYX0scG1fUHJvbG9nX3JldHVybjpmdW5jdGlvbigpe3AucG1fUHJvbG9nX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBtX1Byb2xvZ19yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX1Byb2xvZzpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX1Byb2xvZ19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbj1udWxsLG89bnVsbCxxPW51bGwscj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwbV9OYW1lc3BhY2VEZWNsIikscz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX0ltcG9ydCIpLHQ9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TZXR0ZXIiKSx1PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBtX0RlZmF1bHROYW1lc3BhY2VEZWNsIiksdj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwZ19PcmRlcmVkRGVjbCIpLHc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcG1fRlRPcHRpb25EZWNsIik7dHJ5e2E6ZG97dmFyIHg9Mjt4PXRoaXMuZGZhNi5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaCh4KXtjYXNlIDE6dmFyIHk9NSx6PXRoaXMuaW5wdXQuTEEoMSk7aWYoej09Til7dmFyIEE9dGhpcy5pbnB1dC5MQSgyKTtpZihBPT1ZYyYmdGhpcy5sYyhtKSl5PTI7ZWxzZSBpZihBPT1sZCl5PTU7ZWxzZSBpZihBPT1PKXt2YXIgQj10aGlzLmlucHV0LkxBKDMpO2lmKEI9PVZ8fEI9PWZiKXk9MTtlbHNle2lmKEIhPUomJkIhPUhiJiZCIT1uYyl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgRT1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDUsNSx0aGlzLmlucHV0KTt0aHJvdyBFfXk9Mn19ZWxzZSBpZihBPj1DJiZBPD1EfHxBPj1MJiZBPD1NfHxBPT1KYnx8QT09bmMpeT0yO2Vsc2V7aWYoQSE9emIpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIEU9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw1LDEsdGhpcy5pbnB1dCk7dGhyb3cgRX15PTN9fWVsc2V7aWYoeiE9bGIpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIEU9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw1LDAsdGhpcy5pbnB1dCk7dGhyb3cgRX15PTR9c3dpdGNoKHkpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcG1fRGVmYXVsdE5hbWVzcGFjZURlY2xfaW5fcG1fUHJvbG9nOTI4KSxqPXRoaXMucG1fRGVmYXVsdE5hbWVzcGFjZURlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnUuYWRkKGouZ2V0VHJlZSgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGMpJiYoYz1bXSksYy5wdXNoKGouZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2V0dGVyX2luX3BtX1Byb2xvZzkzNCksaz10aGlzLnBfU2V0dGVyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0LmFkZChrLmdldFRyZWUoKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChrLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9OYW1lc3BhY2VEZWNsX2luX3BtX1Byb2xvZzk0MCksbD10aGlzLnBtX05hbWVzcGFjZURlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnIuYWRkKGwuZ2V0VHJlZSgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGYpJiYoZj1bXSksZi5wdXNoKGwuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW1wb3J0X2luX3BtX1Byb2xvZzk0Niksbj10aGlzLnBfSW1wb3J0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZzLmFkZChuLmdldFRyZWUoKSksZC5hbnRsci5sYW5nLmlzTnVsbChnKSYmKGc9W10pLGcucHVzaChuLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9GVE9wdGlvbkRlY2xfaW5fcG1fUHJvbG9nOTUyKSxvPXRoaXMucG1fRlRPcHRpb25EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ3LmFkZChvLmdldFRyZWUoKSksZC5hbnRsci5sYW5nLmlzTnVsbChoKSYmKGg9W10pLGgucHVzaChvLmdldFRyZWUoKSl9YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7Yjpkb3t2YXIgRj0yLEc9dGhpcy5pbnB1dC5MQSgxKTtpZihHPT1OKXt2YXIgSD10aGlzLmlucHV0LkxBKDIpO2lmKEg9PWZifHxIPT1GYnx8SD09ZmN8fEg9PWxjfHxIPT0kY3x8SD09WWR8fEg+PWFlJiZIPD1iZXx8SD09dWUpRj0xfXN3aXRjaChGKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BnX09yZGVyZWREZWNsX2luX3BtX1Byb2xvZzk1OSkscT10aGlzLnBnX09yZGVyZWREZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ2LmFkZChxLmdldFRyZWUoKSksZC5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChxLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBifX13aGlsZSghMCk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgST1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKSxLPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBvZCIsaSksUD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gZnRvIixoKSxRPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBzIixlKSxSPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBuZCIsZiksUz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gZG5kIixjKSxUPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBpIixnKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgVT10aGlzLmFkYXB0b3IubmlsKCk7VT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKEJmLCJQcm9sb2ciKSxVKTt2YXIgVz10aGlzLmFkYXB0b3IubmlsKCk7Vz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKENmLCJEZWZhdWx0TmFtZXNwYWNlRGVjbHMiKSxXKTt3aGlsZShTLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVyxTLm5leHRUcmVlKCkpO1MucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVSxXKTt2YXIgVz10aGlzLmFkYXB0b3IubmlsKCk7Vz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKEVmLCJTZXR0ZXJzIiksVyk7d2hpbGUoUS5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKFcsUS5uZXh0VHJlZSgpKTtRLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKFUsVyk7dmFyIFc9dGhpcy5hZGFwdG9yLm5pbCgpO1c9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShHZiwiTmFtZXNwYWNlRGVjbHMiKSxXKTt3aGlsZShSLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVyxSLm5leHRUcmVlKCkpO1IucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVSxXKTt2YXIgVz10aGlzLmFkYXB0b3IubmlsKCk7Vz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKElmLCJJbXBvcnRzIiksVyk7d2hpbGUoVC5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKFcsVC5uZXh0VHJlZSgpKTtULnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKFUsVyk7dmFyIFc9dGhpcy5hZGFwdG9yLm5pbCgpO1c9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShKZiwiRlRPcHRpb25EZWNscyIpLFcpO3doaWxlKFAuaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChXLFAubmV4dFRyZWUoKSk7UC5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChVLFcpO3ZhciBXPXRoaXMuYWRhcHRvci5uaWwoKTtXPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoUmYsIk9yZGVyZWREZWNscyIpLFcpO3doaWxlKEsuaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChXLEsubmV4dFRyZWUoKSk7Sy5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChVLFcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLFUpLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKFgpe2lmKCEoWCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgWDt0aGlzLnJlcG9ydEVycm9yKFgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LFgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxYKX1maW5hbGx5e31yZXR1cm4gYX0scGdfT3JkZXJlZERlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wZ19PcmRlcmVkRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wZ19PcmRlcmVkRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBnX09yZGVyZWREZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucGdfT3JkZXJlZERlY2xfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXt2YXIgZz0zLGg9dGhpcy5pbnB1dC5MQSgxKTtpZihoIT1OKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsOCwwLHRoaXMuaW5wdXQpO3Rocm93IGl9c3dpdGNoKHRoaXMuaW5wdXQuTEEoMikpe2Nhc2UgbGM6Zz0xO2JyZWFrO2Nhc2UgZmI6Y2FzZSBmYzpjYXNlICRjOmNhc2UgWWQ6Y2FzZSBhZTpjYXNlIGJlOmNhc2UgdWU6Zz0yO2JyZWFrO2Nhc2UgRmI6Zz0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDgsMSx0aGlzLmlucHV0KTt0aHJvdyBpfXN3aXRjaChnKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX0NvbnRleHRJdGVtRGVjbF9pbl9wZ19PcmRlcmVkRGVjbDEyNzQpLGM9dGhpcy5wbV9Db250ZXh0SXRlbURlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX0Fubm90YXRlZERlY2xfaW5fcGdfT3JkZXJlZERlY2wxMjg2KSxlPXRoaXMucG1fQW5ub3RhdGVkRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcG1fT3B0aW9uRGVjbF9pbl9wZ19PcmRlcmVkRGVjbDEyOTgpLGY9dGhpcy5wbV9PcHRpb25EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX1NldHRlcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU2V0dGVyX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfU2V0dGVyX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TZXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1NldHRlcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGw7dHJ5e3ZhciBuPTk7bj10aGlzLmRmYTkucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2gobil7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Cb3VuZGFyeVNwYWNlRGVjbF9pbl9wX1NldHRlcjEzMjgpLGM9dGhpcy5wbV9Cb3VuZGFyeVNwYWNlRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcG1fRGVmYXVsdENvbGxhdGlvbkRlY2xfaW5fcF9TZXR0ZXIxMzQwKSxlPXRoaXMucG1fRGVmYXVsdENvbGxhdGlvbkRlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX0Jhc2VVUklEZWNsX2luX3BfU2V0dGVyMTM1MiksZj10aGlzLnBtX0Jhc2VVUklEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Db25zdHJ1Y3Rpb25EZWNsX2luX3BfU2V0dGVyMTM2NCksZz10aGlzLnBtX0NvbnN0cnVjdGlvbkRlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX09yZGVyaW5nTW9kZURlY2xfaW5fcF9TZXR0ZXIxMzc2KSxoPXRoaXMucG1fT3JkZXJpbmdNb2RlRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcG1fRW1wdHlPcmRlckRlY2xfaW5fcF9TZXR0ZXIxMzg4KSxpPXRoaXMucG1fRW1wdHlPcmRlckRlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDc6Yj10aGlzLmFkYXB0b3IubmlsKCk7aWYoIXRoaXMubGMobSkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwicF9TZXR0ZXIiLCJ0aGlzLmxjKFhRVSkiKX10aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcG1fUmV2YWxpZGF0aW9uRGVjbF9pbl9wX1NldHRlcjE0MDMpLGo9dGhpcy5wbV9SZXZhbGlkYXRpb25EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA4OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Db3B5TmFtZXNwYWNlc0RlY2xfaW5fcF9TZXR0ZXIxNDE1KSxrPXRoaXMucG1fQ29weU5hbWVzcGFjZXNEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA5OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9EZWNpbWFsRm9ybWF0RGVjbF9pbl9wX1NldHRlcjE0MjcpLGw9dGhpcy5wbV9EZWNpbWFsRm9ybWF0RGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbC5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQm91bmRhcnlTcGFjZURlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9Cb3VuZGFyeVNwYWNlRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wbV9Cb3VuZGFyeVNwYWNlRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0JvdW5kYXJ5U3BhY2VEZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fQm91bmRhcnlTcGFjZURlY2xfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTixwLkZPTExPV19ERUNMQVJFX2luX3BtX0JvdW5kYXJ5U3BhY2VEZWNsMTQ1OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRCxwLkZPTExPV19CT1VOREFSWV9TUEFDRV9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0NjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpO3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PU5iKWg9MTtlbHNle2lmKGkhPVliKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTAsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1zd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5iLHAuRk9MTE9XX1BSRVNFUlZFX2luX3BtX0JvdW5kYXJ5U3BhY2VEZWNsMTQ3NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFliLHAuRk9MTE9XX1NUUklQX2luX3BtX0JvdW5kYXJ5U3BhY2VEZWNsMTQ4NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyl9ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0JvdW5kYXJ5U3BhY2VEZWNsMTQ5MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBtX0RlZmF1bHRDb2xsYXRpb25EZWNsX3JldHVybjpmdW5jdGlvbigpe3AucG1fRGVmYXVsdENvbGxhdGlvbkRlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fRGVmYXVsdENvbGxhdGlvbkRlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9EZWZhdWx0Q29sbGF0aW9uRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX0RlZmF1bHRDb2xsYXRpb25EZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOLHAuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTE5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPLHAuRk9MTE9XX0RFRkFVTFRfaW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTI1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxKLHAuRk9MTE9XX0NPTExBVElPTl9pbl9wbV9EZWZhdWx0Q29sbGF0aW9uRGVjbDE1MzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTM1KSxmPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUzNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBtX0Jhc2VVUklEZWNsX3JldHVybjpmdW5jdGlvbigpe3AucG1fQmFzZVVSSURlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fQmFzZVVSSURlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9CYXNlVVJJRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX0Jhc2VVUklEZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBERUNMQVJFIiksaj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFNFTUlDT0xPTiIpLGs9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBCQVNFX1VSSSIpLGw9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TdHJpbmdMaXRlcmFsIik7dHJ5e2M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE4scC5GT0xMT1dfREVDTEFSRV9pbl9wbV9CYXNlVVJJRGVjbDE1NzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaS5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMscC5GT0xMT1dfQkFTRV9VUklfaW5fcG1fQmFzZVVSSURlY2wxNTc5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmsuYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX0Jhc2VVUklEZWNsMTU4NSksZj10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbC5hZGQoZi5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFlLHAuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9CYXNlVVJJRGVjbDE1ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmai5hZGQoZSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgbT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gc2wiLGYhPW51bGw/Zi50cmVlOm51bGwpLG49bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsYSE9bnVsbD9hLnRyZWU6bnVsbCk7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIG89dGhpcy5hZGFwdG9yLm5pbCgpO289dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShRZiwiQmFzZVVSSURlY2wiKSxvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobyxtLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHEpe2lmKCEocSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcTt0aGlzLnJlcG9ydEVycm9yKHEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHEpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxxKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQ29uc3RydWN0aW9uRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX0NvbnN0cnVjdGlvbkRlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fQ29uc3RydWN0aW9uRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbnN0cnVjdGlvbkRlY2w6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9Db25zdHJ1Y3Rpb25EZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE4scC5GT0xMT1dfREVDTEFSRV9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY0MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTCxwLkZPTExPV19DT05TVFJVQ1RJT05faW5fcG1fQ29uc3RydWN0aW9uRGVjbDE2NDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpO3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PVliKWg9MTtlbHNle2lmKGkhPU5iKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTEsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1zd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFliLHAuRk9MTE9XX1NUUklQX2luX3BtX0NvbnN0cnVjdGlvbkRlY2wxNjU1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpO2JyZWFrO2Nhc2UgMjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOYixwLkZPTExPV19QUkVTRVJWRV9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0NvbnN0cnVjdGlvbkRlY2wxNjY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scG1fT3JkZXJpbmdNb2RlRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX09yZGVyaW5nTW9kZURlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fT3JkZXJpbmdNb2RlRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX09yZGVyaW5nTW9kZURlY2w6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9PcmRlcmluZ01vZGVEZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE4scC5GT0xMT1dfREVDTEFSRV9pbl9wbV9PcmRlcmluZ01vZGVEZWNsMTY5Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSmIscC5GT0xMT1dfT1JERVJJTkdfaW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE3MDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpO3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PUliKWg9MTtlbHNle2lmKGkhPWRjKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTIsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1zd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEliLHAuRk9MTE9XX09SREVSRURfaW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE3MTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRjLHAuRk9MTE9XX1VOT1JERVJFRF9pbl9wbV9PcmRlcmluZ01vZGVEZWNsMTcxNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX09yZGVyaW5nTW9kZURlY2wxNzI0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scG1fRW1wdHlPcmRlckRlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9FbXB0eU9yZGVyRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wbV9FbXB0eU9yZGVyRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0VtcHR5T3JkZXJEZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fRW1wdHlPcmRlckRlY2xfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTixwLkZPTExPV19ERUNMQVJFX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc1Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTyxwLkZPTExPV19ERUZBVUxUX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc1OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSGIscC5GT0xMT1dfT1JERVJfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzY0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxYLHAuRk9MTE9XX0VNUFRZX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc3MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaT09aGIpaD0xO2Vsc2V7aWYoaSE9dWIpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMywwLHRoaXMuaW5wdXQpO3Rocm93IGp9aD0yfXN3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGIscC5GT0xMT1dfR1JFQVRFU1RfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzc5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpO2JyZWFrO2Nhc2UgMjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx1YixwLkZPTExPV19MRUFTVF9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3ODUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFlLHAuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3OTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwbV9Db3B5TmFtZXNwYWNlc0RlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9Db3B5TmFtZXNwYWNlc0RlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fQ29weU5hbWVzcGFjZXNEZWNsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fQ29weU5hbWVzcGFjZXNEZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fQ29weU5hbWVzcGFjZXNEZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOLHAuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTSxwLkZPTExPV19DT1BZX05BTUVTUEFDRVNfaW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgyNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUHJlc2VydmVNb2RlX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MzApLGc9dGhpcy5wX1ByZXNlcnZlTW9kZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW5oZXJpdE1vZGVfaW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgzNCksaD10aGlzLnBfSW5oZXJpdE1vZGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZSxwLkZPTExPV19TRU1JQ09MT05faW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfUHJlc2VydmVNb2RlX3JldHVybjpmdW5jdGlvbigpe3AucF9QcmVzZXJ2ZU1vZGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9QcmVzZXJ2ZU1vZGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ByZXNlcnZlTW9kZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfUHJlc2VydmVNb2RlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGc9MixoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD09TmIpZz0xO2Vsc2V7aWYoaCE9Q2Ipe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGk9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNCwwLHRoaXMuaW5wdXQpO3Rocm93IGl9Zz0yfXN3aXRjaChnKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTmIscC5GT0xMT1dfUFJFU0VSVkVfaW5fcF9QcmVzZXJ2ZU1vZGUxODY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LENiLHAuRk9MTE9XX05PX1BSRVNFUlZFX2luX3BfUHJlc2VydmVNb2RlMTg3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfSW5oZXJpdE1vZGVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0luaGVyaXRNb2RlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfSW5oZXJpdE1vZGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luaGVyaXRNb2RlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Jbmhlcml0TW9kZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg9PW5iKWc9MTtlbHNle2lmKGghPUJiKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTUsMCx0aGlzLmlucHV0KTt0aHJvdyBpfWc9Mn1zd2l0Y2goZyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5iLHAuRk9MTE9XX0lOSEVSSVRfaW5fcF9Jbmhlcml0TW9kZTE5MDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQmIscC5GT0xMT1dfTk9fSU5IRVJJVF9pbl9wX0luaGVyaXRNb2RlMTkwOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBtX0RlY2ltYWxGb3JtYXREZWNsX3JldHVybjpmdW5jdGlvbigpe3AucG1fRGVjaW1hbEZvcm1hdERlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fRGVjaW1hbEZvcm1hdERlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9EZWNpbWFsRm9ybWF0RGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX0RlY2ltYWxGb3JtYXREZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTixwLkZPTExPV19ERUNMQVJFX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk0OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7dmFyIG09MixuPXRoaXMuaW5wdXQuTEEoMSk7aWYobj09bmMpbT0xO2Vsc2V7aWYobiE9Tyl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE2LDAsdGhpcy5pbnB1dCk7dGhyb3cgb31tPTJ9c3dpdGNoKG0pe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuYyxwLkZPTExPV19ERUNJTUFMX0ZPUk1BVF9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5NTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk2MCksZz10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTyxwLkZPTExPV19ERUZBVUxUX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmMscC5GT0xMT1dfREVDSU1BTF9GT1JNQVRfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKX1hOmRve3ZhciBxPTIscj10aGlzLmlucHV0LkxBKDEpO2lmKHI+PW9jJiZyPD1wY3x8cj49c2MmJnI8PXVjfHxyPT13Y3x8cj49emMmJnI8PUJjfHxyPT1MYylxPTE7c3dpdGNoKHEpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9ERlByb3BlcnR5TmFtZV9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5ODEpLGg9dGhpcy5wX0RGUHJvcGVydHlOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQscmUscC5GT0xMT1dfRVFVQUxfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTgzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTg1KSxpPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk4OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChzKXtpZighKHMgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHM7dGhpcy5yZXBvcnRFcnJvcihzKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxzKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscyl9ZmluYWxseXt9cmV0dXJuIGF9LHBfREZQcm9wZXJ0eU5hbWVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0RGUHJvcGVydHlOYW1lX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfREZQcm9wZXJ0eU5hbWVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0RGUHJvcGVydHlOYW1lOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9ERlByb3BlcnR5TmFtZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGY9MTA7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2Ugb2M6Zj0xO2JyZWFrO2Nhc2Ugc2M6Zj0yO2JyZWFrO2Nhc2UgdGM6Zj0zO2JyZWFrO2Nhc2UgdWM6Zj00O2JyZWFrO2Nhc2Ugd2M6Zj01O2JyZWFrO2Nhc2UgQWM6Zj02O2JyZWFrO2Nhc2UgQmM6Zj03O2JyZWFrO2Nhc2UgTGM6Zj04O2JyZWFrO2Nhc2UgcGM6Zj05O2JyZWFrO2Nhc2UgemM6Zj0xMDticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGc9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxOCwwLHRoaXMuaW5wdXQpO3Rocm93IGd9c3dpdGNoKGYpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvYyxwLkZPTExPV19ERUNJTUFMX1NFUEFSQVRPUl9pbl9wX0RGUHJvcGVydHlOYW1lMjAxOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2MscC5GT0xMT1dfR1JPVVBJTkdfU0VQQVJBVE9SX2luX3BfREZQcm9wZXJ0eU5hbWUyMDI0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpO2JyZWFrO2Nhc2UgMzpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0YyxwLkZPTExPV19JTkZJTklUWV9pbl9wX0RGUHJvcGVydHlOYW1lMjAzMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDQ6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdWMscC5GT0xMT1dfTUlOVVNfU0lHTl9pbl9wX0RGUHJvcGVydHlOYW1lMjAzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDU6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsd2MscC5GT0xMT1dfTkFOX2luX3BfREZQcm9wZXJ0eU5hbWUyMDQyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpO2JyZWFrO2Nhc2UgNjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBYyxwLkZPTExPV19QRVJDRU5UX2luX3BfREZQcm9wZXJ0eU5hbWUyMDQ4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpO2JyZWFrO2Nhc2UgNzpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxCYyxwLkZPTExPV19QRVJfTUlMTEVfaW5fcF9ERlByb3BlcnR5TmFtZTIwNTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSk7YnJlYWs7Y2FzZSA4OmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LExjLHAuRk9MTE9XX1pFUk9fRElHSVRfaW5fcF9ERlByb3BlcnR5TmFtZTIwNjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSk7YnJlYWs7Y2FzZSA5OmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBjLHAuRk9MTE9XX0RJR0lUX2luX3BfREZQcm9wZXJ0eU5hbWUyMDY2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpO2JyZWFrO2Nhc2UgMTA6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemMscC5GT0xMT1dfUEFUVEVSTl9TRVBBUkFUT1JfaW5fcF9ERlByb3BlcnR5TmFtZTIwNzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gYX0scF9JbXBvcnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ltcG9ydF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ltcG9ydF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW1wb3J0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JbXBvcnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e3ZhciBmPTIsZz10aGlzLmlucHV0LkxBKDEpO2lmKGchPWxiKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTksMCx0aGlzLmlucHV0KTt0aHJvdyBpfXZhciBoPXRoaXMuaW5wdXQuTEEoMik7aWYoaD09UmIpZj0xO2Vsc2V7aWYoaCE9eWIpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGk9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxOSwxLHRoaXMuaW5wdXQpO3Rocm93IGl9Zj0yfXN3aXRjaChmKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX1NjaGVtYUltcG9ydF9pbl9wX0ltcG9ydDIxMDEpLGM9dGhpcy5wbV9TY2hlbWFJbXBvcnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX01vZHVsZUltcG9ydF9pbl9wX0ltcG9ydDIxMDUpLGU9dGhpcy5wbV9Nb2R1bGVJbXBvcnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBtX1NjaGVtYUltcG9ydF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX1NjaGVtYUltcG9ydF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wbV9TY2hlbWFJbXBvcnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9TY2hlbWFJbXBvcnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9TY2hlbWFJbXBvcnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQVQiKSxvPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gSU1QT1JUIikscT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFNDSEVNQSIpLHI9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBTRU1JQ09MT04iKSxzPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQ09NTUEiKSx0PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfU2NoZW1hUHJlZml4IiksdT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1N0cmluZ0xpdGVyYWwiKTt0cnl7Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGIscC5GT0xMT1dfSU1QT1JUX2luX3BtX1NjaGVtYUltcG9ydDIxNDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFJiLHAuRk9MTE9XX1NDSEVNQV9pbl9wbV9TY2hlbWFJbXBvcnQyMTQ3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnEuYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTt2YXIgdj0yLHc9dGhpcy5pbnB1dC5MQSgxKTtpZih3PT1PfHx3PT16Yil2PTE7c3dpdGNoKHYpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TY2hlbWFQcmVmaXhfaW5fcG1fU2NoZW1hSW1wb3J0MjE1MyksaD10aGlzLnBfU2NoZW1hUHJlZml4KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0LmFkZChoLmdldFRyZWUoKSl9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9TY2hlbWFJbXBvcnQyMTU4KSxpPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ1LmFkZChpLmdldFRyZWUoKSk7dmFyIHg9Mix5PXRoaXMuaW5wdXQuTEEoMSk7eT09QSYmKHg9MSk7c3dpdGNoKHgpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBLHAuRk9MTE9XX0FUX2luX3BtX1NjaGVtYUltcG9ydDIxNjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbi5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fU2NoZW1hSW1wb3J0MjE2OSksaj10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQoai5nZXRUcmVlKCkpLGQuYW50bHIubGFuZy5pc051bGwoZykmJihnPVtdKSxnLnB1c2goai5nZXRUcmVlKCkpO2E6ZG97dmFyIHo9MixCPXRoaXMuaW5wdXQuTEEoMSk7Qj09eGUmJih6PTEpO3N3aXRjaCh6KXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQseGUscC5GT0xMT1dfQ09NTUFfaW5fcG1fU2NoZW1hSW1wb3J0MjE3Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZzLmFkZChlKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX1NjaGVtYUltcG9ydDIxNzYpLGo9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnUuYWRkKGouZ2V0VHJlZSgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGcpJiYoZz1bXSksZy5wdXNoKGouZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKX1mPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZSxwLkZPTExPV19TRU1JQ09MT05faW5fcG1fU2NoZW1hSW1wb3J0MjE4Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZyLmFkZChmKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1iO3ZhciBDPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpLEQ9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHNwIixoIT1udWxsP2gudHJlZTpudWxsKSxFPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiB1cyIsaSE9bnVsbD9pLnRyZWU6bnVsbCksRj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gYWgiLGcpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBHPXRoaXMuYWRhcHRvci5uaWwoKTtHPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoS2YsIlNjaGVtYUltcG9ydCIpLEcpO3ZhciBIPXRoaXMuYWRhcHRvci5uaWwoKTtIPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoTGYsIlNjaGVtYVByZWZpeCIpLEgpLEQuaGFzTmV4dCgpJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoSCxELm5leHRUcmVlKCkpLEQucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRyxIKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRyxFLm5leHRUcmVlKCkpO3ZhciBIPXRoaXMuYWRhcHRvci5uaWwoKTtIPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoT2YsIkF0SGludHMiKSxIKTt3aGlsZShGLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoSCxGLm5leHRUcmVlKCkpO0YucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRyxIKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixHKSxhLnRyZWU9Yn1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChJKXtpZighKEkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEk7dGhpcy5yZXBvcnRFcnJvcihJKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxJKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksSSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU2NoZW1hUHJlZml4X3JldHVybjpmdW5jdGlvbigpe3AucF9TY2hlbWFQcmVmaXhfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9TY2hlbWFQcmVmaXhfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NjaGVtYVByZWZpeDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfU2NoZW1hUHJlZml4X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFTEVNRU5UIiksaj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIE5BTUVTUEFDRSIpLGs9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFUVVBTCIpLGw9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBERUZBVUxUIiksbT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX05DTmFtZSIpO3RyeXt2YXIgbj0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvPT16YiluPTE7ZWxzZXtpZihvIT1PKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBxPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjMsMCx0aGlzLmlucHV0KTt0aHJvdyBxfW49Mn1zd2l0Y2gobil7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHpiLHAuRk9MTE9XX05BTUVTUEFDRV9pbl9wX1NjaGVtYVByZWZpeDIyNTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmai5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05DTmFtZV9pbl9wX1NjaGVtYVByZWZpeDIyNTgpLGY9dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbS5hZGQoZi5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHJlLHAuRk9MTE9XX0VRVUFMX2luX3BfU2NoZW1hUHJlZml4MjI2MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZrLmFkZChlKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1iO3ZhciByPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpLHM9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIG5uIixmIT1udWxsP2YudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgdD10aGlzLmFkYXB0b3IubmlsKCk7dD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKE1mLCJOYW1lc3BhY2VOYW1lIiksdCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix0KSxhLnRyZWU9Yn1icmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTyxwLkZPTExPV19ERUZBVUxUX2luX3BfU2NoZW1hUHJlZml4MjI5OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZsLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVixwLkZPTExPV19FTEVNRU5UX2luX3BfU2NoZW1hUHJlZml4MjMwNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZpLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemIscC5GT0xMT1dfTkFNRVNQQUNFX2luX3BfU2NoZW1hUHJlZml4MjMxMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZqLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgcj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix0aGlzLmFkYXB0b3IuY3JlYXRlKE5mLCJEZWZhdWx0RWxlbWVudE5hbWVzcGFjZSIpKSxhLnRyZWU9Yn19YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBhfSxwbV9Nb2R1bGVJbXBvcnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9Nb2R1bGVJbXBvcnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fTW9kdWxlSW1wb3J0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fTW9kdWxlSW1wb3J0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fTW9kdWxlSW1wb3J0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1udWxsLG89bnVsbCxxPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQVQiKSxyPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gSU1QT1JUIikscz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFNFTUlDT0xPTiIpLHQ9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBNT0RVTEUiKSx1PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQ09NTUEiKSx2PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTkFNRVNQQUNFIiksdz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEVRVUFMIikseD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX05DTmFtZSIpLHk9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TdHJpbmdMaXRlcmFsIik7dHJ5e2M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxiLHAuRk9MTE9XX0lNUE9SVF9pbl9wbV9Nb2R1bGVJbXBvcnQyMzYxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnIuYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5YixwLkZPTExPV19NT0RVTEVfaW5fcG1fTW9kdWxlSW1wb3J0MjM2Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0LmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7dmFyIHo9MixCPXRoaXMuaW5wdXQuTEEoMSk7Qj09emImJih6PTEpO3N3aXRjaCh6KXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemIscC5GT0xMT1dfTkFNRVNQQUNFX2luX3BtX01vZHVsZUltcG9ydDIzNzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdi5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05DTmFtZV9pbl9wbV9Nb2R1bGVJbXBvcnQyMzgwKSxpPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnguYWRkKGkuZ2V0VHJlZSgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxyZSxwLkZPTExPV19FUVVBTF9pbl9wbV9Nb2R1bGVJbXBvcnQyMzgyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJncuYWRkKGUpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fTW9kdWxlSW1wb3J0MjM4OCksaj10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeS5hZGQoai5nZXRUcmVlKCkpO3ZhciBDPTIsRD10aGlzLmlucHV0LkxBKDEpO0Q9PUEmJihDPTEpO3N3aXRjaChDKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQSxwLkZPTExPV19BVF9pbl9wbV9Nb2R1bGVJbXBvcnQyMzkzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnEuYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX01vZHVsZUltcG9ydDIzOTkpLGs9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnkuYWRkKGsuZ2V0VHJlZSgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGgpJiYoaD1bXSksaC5wdXNoKGsuZ2V0VHJlZSgpKTthOmRve3ZhciBFPTIsRj10aGlzLmlucHV0LkxBKDEpO0Y9PXhlJiYoRT0xKTtzd2l0Y2goRSl7Y2FzZSAxOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BtX01vZHVsZUltcG9ydDI0MDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQoZiksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9Nb2R1bGVJbXBvcnQyNDA2KSxrPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ5LmFkZChrLmdldFRyZWUoKSksZC5hbnRsci5sYW5nLmlzTnVsbChoKSYmKGg9W10pLGgucHVzaChrLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCl9Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX01vZHVsZUltcG9ydDI0MTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmcy5hZGQoZyk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgRz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKSxIPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBubiIsaSE9bnVsbD9pLnRyZWU6bnVsbCksST1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gdXMiLGohPW51bGw/ai50cmVlOm51bGwpLEo9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIGFoIixoKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgSz10aGlzLmFkYXB0b3IubmlsKCk7Sz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKFBmLCJNb2R1bGVJbXBvcnQiKSxLKTt2YXIgTD10aGlzLmFkYXB0b3IubmlsKCk7TD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKE1mLCJOYW1lc3BhY2VOYW1lIiksTCksSC5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChMLEgubmV4dFRyZWUoKSksSC5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChLLEwpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChLLEkubmV4dFRyZWUoKSk7dmFyIEw9dGhpcy5hZGFwdG9yLm5pbCgpO0w9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShPZiwiQXRIaW50cyIpLEwpO3doaWxlKEouaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChMLEoubmV4dFRyZWUoKSk7Si5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChLLEwpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLEspLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKE0pe2lmKCEoTSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTTt0aGlzLnJlcG9ydEVycm9yKE0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LE0pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxNKX1maW5hbGx5e31yZXR1cm4gYX0scG1fTmFtZXNwYWNlRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX05hbWVzcGFjZURlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fTmFtZXNwYWNlRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX05hbWVzcGFjZURlY2w6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9OYW1lc3BhY2VEZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBERUNMQVJFIiksbT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFNFTUlDT0xPTiIpLG49bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBOQU1FU1BBQ0UiKSxvPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRVFVQUwiKSxxPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfTkNOYW1lIikscj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1N0cmluZ0xpdGVyYWwiKTt0cnl7Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTixwLkZPTExPV19ERUNMQVJFX2luX3BtX05hbWVzcGFjZURlY2wyNDgxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmwuYWRkKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6YixwLkZPTExPV19OQU1FU1BBQ0VfaW5fcG1fTmFtZXNwYWNlRGVjbDI0ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbi5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05DTmFtZV9pbl9wbV9OYW1lc3BhY2VEZWNsMjQ5MyksZz10aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZxLmFkZChnLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQscmUscC5GT0xMT1dfRVFVQUxfaW5fcG1fTmFtZXNwYWNlRGVjbDI0OTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQoZSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9OYW1lc3BhY2VEZWNsMjQ5OSksaD10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmci5hZGQoaC5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFlLHAuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9OYW1lc3BhY2VEZWNsMjUwMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZtLmFkZChmKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1iO3ZhciBzPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpLHQ9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIG5uIixnIT1udWxsP2cudHJlZTpudWxsKSx1PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiB1cyIsaCE9bnVsbD9oLnRyZWU6bnVsbCk7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHY9dGhpcy5hZGFwdG9yLm5pbCgpO3Y9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShIZiwiTmFtZXNwYWNlRGVjbCIpLHYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh2LHQubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHYsdS5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix2KSxhLnRyZWU9Yn1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaCh3KXtpZighKHcgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHc7dGhpcy5yZXBvcnRFcnJvcih3KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx3KSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdyl9ZmluYWxseXt9cmV0dXJuIGF9LHBtX0RlZmF1bHROYW1lc3BhY2VEZWNsX3JldHVybjpmdW5jdGlvbigpe3AucG1fRGVmYXVsdE5hbWVzcGFjZURlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fRGVmYXVsdE5hbWVzcGFjZURlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX0RlZmF1bHROYW1lc3BhY2VEZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOLHAuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTU4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPLHAuRk9MTE9XX0RFRkFVTFRfaW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTY0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTt2YXIgaT0yLGo9dGhpcy5pbnB1dC5MQSgxKTtpZihqPT1WKWk9MTtlbHNle2lmKGohPWZiKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBrPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjcsMCx0aGlzLmlucHV0KTt0aHJvdyBrfWk9Mn1zd2l0Y2goaSl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFYscC5GT0xMT1dfRUxFTUVOVF9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1NzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGZiLHAuRk9MTE9XX0ZVTkNUSU9OX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU3Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemIscC5GT0xMT1dfTkFNRVNQQUNFX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU4NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1ODgpLGY9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZSxwLkZPTExPV19TRU1JQ09MT05faW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTkwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQW5ub3RhdGVkRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX0Fubm90YXRlZERlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fQW5ub3RhdGVkRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0Fubm90YXRlZERlY2w6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9Bbm5vdGF0ZWREZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTixwLkZPTExPV19ERUNMQVJFX2luX3BtX0Fubm90YXRlZERlY2wyNjE4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PXVlJiYoaj0xKTtzd2l0Y2goail7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0Fubm90YXRpb25faW5fcG1fQW5ub3RhdGVkRGVjbDI2MjIpLGY9dGhpcy5wX0Fubm90YXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTt0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcGdfQW5ub3RhdGVkRGVjbF9pbl9wbV9Bbm5vdGF0ZWREZWNsMjYyNSksZz10aGlzLnBnX0Fubm90YXRlZERlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZSxwLkZPTExPV19TRU1JQ09MT05faW5fcG1fQW5ub3RhdGVkRGVjbDI2MjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBhfSxwZ19Bbm5vdGF0ZWREZWNsX3JldHVybjpmdW5jdGlvbigpe3AucGdfQW5ub3RhdGVkRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wZ19Bbm5vdGF0ZWREZWNsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscGdfQW5ub3RhdGVkRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBnX0Fubm90YXRlZERlY2xfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e3ZhciBpPTUsaj10aGlzLmlucHV0LkxBKDEpO2lmKGo9PWZjKWk9MTtlbHNlIGlmKGo9PSRjJiZ0aGlzLmxjKG0pKWk9MjtlbHNlIGlmKGo9PWZiKWk9MjtlbHNlIGlmKGo9PVlkJiZ0aGlzLmxjKG4pKWk9MztlbHNlIGlmKGo9PWFlJiZ0aGlzLmxjKG4pKWk9NDtlbHNle2lmKGohPWJlfHwhdGhpcy5sYyhuKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDI5LDAsdGhpcy5pbnB1dCk7dGhyb3cga31pPTV9c3dpdGNoKGkpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJEZWNsX2luX3BnX0Fubm90YXRlZERlY2wyNjUxKSxjPXRoaXMucF9WYXJEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9GdW5jdGlvbkRlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI2NjMpLGU9dGhpcy5wbV9GdW5jdGlvbkRlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCk7aWYoIXRoaXMubGMobikpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwicGdfQW5ub3RhdGVkRGVjbCIsInRoaXMubGMoWk9SQkEpIil9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29sbGVjdGlvbkRlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI2NzgpLGY9dGhpcy5wX0NvbGxlY3Rpb25EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpO2lmKCF0aGlzLmxjKG4pKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3Rocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBnX0Fubm90YXRlZERlY2wiLCJ0aGlzLmxjKFpPUkJBKSIpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0luZGV4RGVjbF9pbl9wZ19Bbm5vdGF0ZWREZWNsMjY5MyksZz10aGlzLnBfSW5kZXhEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OmI9dGhpcy5hZGFwdG9yLm5pbCgpO2lmKCF0aGlzLmxjKG4pKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3Rocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBnX0Fubm90YXRlZERlY2wiLCJ0aGlzLmxjKFpPUkJBKSIpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0lDRGVjbF9pbl9wZ19Bbm5vdGF0ZWREZWNsMjcwOCksaD10aGlzLnBfSUNEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBhfSxwX0Fubm90YXRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0Fubm90YXRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Bbm5vdGF0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Bbm5vdGF0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Bbm5vdGF0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx1ZSxwLkZPTExPV19BTk5fUEVSQ0VOVF9pbl9wX0Fubm90YXRpb24yNzM0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfQW5ub3RhdGlvbjI3MzYpLGg9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSk7dmFyIG89MixxPXRoaXMuaW5wdXQuTEEoMSk7cT09a2UmJihvPTEpO3N3aXRjaChvKXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3BfQW5ub3RhdGlvbjI3MzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTGl0ZXJhbF9pbl9wX0Fubm90YXRpb24yNzQxKSxpPXRoaXMucF9MaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YTpkb3t2YXIgcj0yLHM9dGhpcy5pbnB1dC5MQSgxKTtzPT14ZSYmKHI9MSk7c3dpdGNoKHIpe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCx4ZSxwLkZPTExPV19DT01NQV9pbl9wX0Fubm90YXRpb24yNzQ0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0xpdGVyYWxfaW5fcF9Bbm5vdGF0aW9uMjc0Niksaj10aGlzLnBfTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2c9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX0Fubm90YXRpb24yNzUwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihuPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbikpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHQpe2lmKCEodCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdDt0aGlzLnJlcG9ydEVycm9yKHQpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHQpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx0KX1maW5hbGx5e31yZXR1cm4gYX0scF9WYXJEZWNsX3JldHVybjpmdW5jdGlvbigpe3AucF9WYXJEZWNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfVmFyRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVmFyRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVmFyRGVjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbCxvPW51bGwscT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIERPTExBUiIpLHI9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFWFRFUk5BTCIpLHM9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBWQVJJQUJMRSIpLHQ9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBCSU5EIiksdT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1R5cGVEZWNsYXJhdGlvbiIpLHY9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9RTmFtZSIpLHc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9WYXJEZWZhdWx0VmFsdWUiKSx4PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfVmFyVmFsdWUiKTt0cnl7Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZmMscC5GT0xMT1dfVkFSSUFCTEVfaW5fcF9WYXJEZWNsMjc4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZzLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfVmFyRGVjbDI3ODYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmcS5hZGQoZSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9WYXJEZWNsMjc5MCksaD10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnYuYWRkKGguZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoZSxoP2guc3RvcDpudWxsKTt2YXIgej0yLEE9dGhpcy5pbnB1dC5MQSgxKTtBPT15JiYoej0xKTtzd2l0Y2goeil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1ZhckRlY2wyNzk2KSxpPXRoaXMucF9UeXBlRGVjbGFyYXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnUuYWRkKGkuZ2V0VHJlZSgpKX12YXIgQj0yLEM9dGhpcy5pbnB1dC5MQSgxKTtpZihDPT1zZSlCPTE7ZWxzZXtpZihDIT1iYil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgRD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDM0LDAsdGhpcy5pbnB1dCk7dGhyb3cgRH1CPTJ9c3dpdGNoKEIpe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzZSxwLkZPTExPV19CSU5EX2luX3BfVmFyRGVjbDI4MDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdC5hZGQoZiksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFyVmFsdWVfaW5fcF9WYXJEZWNsMjgwNSksaj10aGlzLnBfVmFyVmFsdWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnguYWRkKGouZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYmIscC5GT0xMT1dfRVhURVJOQUxfaW5fcF9WYXJEZWNsMjgxMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZyLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7dmFyIEU9MixGPXRoaXMuaW5wdXQuTEEoMSk7Rj09c2UmJihFPTEpO3N3aXRjaChFKXtjYXNlIDE6Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2UscC5GT0xMT1dfQklORF9pbl9wX1ZhckRlY2wyODE4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnQuYWRkKGcpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1ZhckRlZmF1bHRWYWx1ZV9pbl9wX1ZhckRlY2wyODIyKSxrPXRoaXMucF9WYXJEZWZhdWx0VmFsdWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJncuYWRkKGsuZ2V0VHJlZSgpKX19aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgRz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcW4iLGghPW51bGw/aC50cmVlOm51bGwpLEg9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHZ2IixqIT1udWxsP2oudHJlZTpudWxsKSxJPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpLEo9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHZkdiIsayE9bnVsbD9rLnRyZWU6bnVsbCksSz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gdGQiLGkhPW51bGw/aS50cmVlOm51bGwpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBMPXRoaXMuYWRhcHRvci5uaWwoKTtMPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoU2YsIlZhckRlY2wiKSxMKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoTCxHLm5leHRUcmVlKCkpO3ZhciBNPXRoaXMuYWRhcHRvci5uaWwoKTtNPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoVGYsIlZhclR5cGUiKSxNKSxLLmhhc05leHQoKSYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKE0sSy5uZXh0VHJlZSgpKSxLLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKEwsTSk7dmFyIE09dGhpcy5hZGFwdG9yLm5pbCgpO009dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShVZiwiVmFyVmFsdWUiKSxNKSxILmhhc05leHQoKSYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKE0sSC5uZXh0VHJlZSgpKSxILnJlc2V0KCk7dmFyIE49dGhpcy5hZGFwdG9yLm5pbCgpO049dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShWZiwiVmFyRGVmYXVsdFZhbHVlIiksTiksSi5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChOLEoubmV4dFRyZWUoKSksSi5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChNLE4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChMLE0pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLEwpLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKE8pe2lmKCEoTyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTzt0aGlzLnJlcG9ydEVycm9yKE8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LE8pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxPKX1maW5hbGx5e31yZXR1cm4gYX0scF9WYXJWYWx1ZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVmFyVmFsdWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9WYXJWYWx1ZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVmFyVmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1ZhclZhbHVlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9WYXJWYWx1ZTI5MDEpLGM9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9WYXJEZWZhdWx0VmFsdWVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1ZhckRlZmF1bHRWYWx1ZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1ZhckRlZmF1bHRWYWx1ZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVmFyRGVmYXVsdFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9WYXJEZWZhdWx0VmFsdWVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1ZhckRlZmF1bHRWYWx1ZTI5MjgpLGM9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQ29udGV4dEl0ZW1EZWNsX3JldHVybjpmdW5jdGlvbigpe3AucG1fQ29udGV4dEl0ZW1EZWNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBtX0NvbnRleHRJdGVtRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbnRleHRJdGVtRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX0NvbnRleHRJdGVtRGVjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTixwLkZPTExPV19ERUNMQVJFX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5NTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxjLHAuRk9MTE9XX0NPTlRFWFRfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk2Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscmIscC5GT0xMT1dfSVRFTV9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTY5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTt2YXIgbz0yLHE9dGhpcy5pbnB1dC5MQSgxKTtxPT15JiYobz0xKTtzd2l0Y2gobyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHkscC5GT0xMT1dfQVNfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk3Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSXRlbVR5cGVfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk4MCksaD10aGlzLnBfSXRlbVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKX12YXIgcj0yLHM9dGhpcy5pbnB1dC5MQSgxKTtpZihzPT1zZSlyPTE7ZWxzZXtpZihzIT1iYil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgdD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDM3LDAsdGhpcy5pbnB1dCk7dGhyb3cgdH1yPTJ9c3dpdGNoKHIpe2Nhc2UgMTplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzZSxwLkZPTExPV19CSU5EX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5ODYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFyVmFsdWVfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk4OCksaT10aGlzLnBfVmFyVmFsdWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYmIscC5GT0xMT1dfRVhURVJOQUxfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk5Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7dmFyIHU9Mix2PXRoaXMuaW5wdXQuTEEoMSk7dj09c2UmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2UscC5GT0xMT1dfQklORF9pbl9wbV9Db250ZXh0SXRlbURlY2wzMDAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1ZhckRlZmF1bHRWYWx1ZV9pbl9wbV9Db250ZXh0SXRlbURlY2wzMDAzKSxqPXRoaXMucF9WYXJEZWZhdWx0VmFsdWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKX19Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0NvbnRleHRJdGVtRGVjbDMwMDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG49dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixuKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godyl7aWYoISh3IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB3O3RoaXMucmVwb3J0RXJyb3IodyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHcpfWZpbmFsbHl7fXJldHVybiBhfSxwbV9GdW5jdGlvbkRlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9GdW5jdGlvbkRlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fRnVuY3Rpb25EZWNsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fRnVuY3Rpb25EZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fRnVuY3Rpb25EZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxuPW51bGwsbz1udWxsLHE9bnVsbCxyPW51bGwscz1udWxsLHQ9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBGVU5DVElPTiIpLHU9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBMQlJBQ0tFVCIpLHY9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBBUyIpLHc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBSUEFSRU4iKSx4PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRVhURVJOQUwiKSx6PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUkJSQUNLRVQiKSxBPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTFBBUkVOIiksQj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFVQREFUSU5HIiksQz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHIiKSxEPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfUGFyYW1MaXN0IiksRT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwZ19GUU5hbWUiKSxGPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfU2VxdWVuY2VUeXBlIik7dHJ5e3ZhciBHPTIsSD10aGlzLmlucHV0LkxBKDEpO0g9PSRjJiZ0aGlzLmxjKG0pJiYoRz0xKTtzd2l0Y2goRyl7Y2FzZSAxOmlmKCF0aGlzLmxjKG0pKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3Rocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBtX0Z1bmN0aW9uRGVjbCIsInRoaXMubGMoWFFVKSIpfWM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LCRjLHAuRk9MTE9XX1VQREFUSU5HX2luX3BtX0Z1bmN0aW9uRGVjbDMwNDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmQi5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpfWM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGZiLHAuRk9MTE9XX0ZVTkNUSU9OX2luX3BtX0Z1bmN0aW9uRGVjbDMwNTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdC5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wZ19GUU5hbWVfaW5fcG1fRnVuY3Rpb25EZWNsMzA1NiksaT10aGlzLnBnX0ZRTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmRS5hZGQoaS5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wbV9GdW5jdGlvbkRlY2wzMDU4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJkEuYWRkKGUpO3ZhciBJPTIsSj10aGlzLmlucHV0LkxBKDEpO0o9PW1lJiYoST0xKTtzd2l0Y2goSSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1BhcmFtTGlzdF9pbl9wbV9GdW5jdGlvbkRlY2wzMDYyKSxqPXRoaXMucF9QYXJhbUxpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJkQuYWRkKGouZ2V0VHJlZSgpKX1mPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcG1fRnVuY3Rpb25EZWNsMzA2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ3LmFkZChmKTt2YXIgSz0yLEw9dGhpcy5pbnB1dC5MQSgxKTtMPT15JiYoSz0xKTtzd2l0Y2goSyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHkscC5GT0xMT1dfQVNfaW5fcG1fRnVuY3Rpb25EZWNsMzA3MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ2LmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BtX0Z1bmN0aW9uRGVjbDMwNzYpLGs9dGhpcy5wX1NlcXVlbmNlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmRi5hZGQoay5nZXRUcmVlKCkpfXZhciBNPTIsTj10aGlzLmlucHV0LkxBKDEpO2lmKE49PW5lKU09MTtlbHNle2lmKE4hPWJiKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBPPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNDEsMCx0aGlzLmlucHV0KTt0aHJvdyBPfU09Mn1zd2l0Y2goTSl7Y2FzZSAxOmc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BtX0Z1bmN0aW9uRGVjbDMwODEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQoZyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9GdW5jdGlvbkRlY2wzMDg1KSxsPXRoaXMucF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZDLmFkZChsLmdldFRyZWUoKSksaD10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcG1fRnVuY3Rpb25EZWNsMzA4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ6LmFkZChoKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYmIscC5GT0xMT1dfRVhURVJOQUxfaW5fcG1fRnVuY3Rpb25EZWNsMzA5Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ4LmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyl9aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgUD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gc29lIixsIT1udWxsP2wudHJlZTpudWxsKSxRPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBxbiIsaSE9bnVsbD9pLnRyZWU6bnVsbCksUj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKSxTPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBwbCIsaiE9bnVsbD9qLnRyZWU6bnVsbCksVD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gc3QiLGshPW51bGw/ay50cmVlOm51bGwpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBVPXRoaXMuYWRhcHRvci5uaWwoKTtVPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoWGYsIkZ1bmN0aW9uRGVjbCIpLFUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChVLFEubmV4dFRyZWUoKSk7dmFyIFY9dGhpcy5hZGFwdG9yLm5pbCgpO1Y9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShZZiwiUGFyYW1MaXN0IiksViksUy5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChWLFMubmV4dFRyZWUoKSksUy5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChVLFYpO3ZhciBWPXRoaXMuYWRhcHRvci5uaWwoKTtWPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoWmYsIlJldHVyblR5cGUiKSxWKSxULmhhc05leHQoKSYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKFYsVC5uZXh0VHJlZSgpKSxULnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKFUsViksUC5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChVLFAubmV4dFRyZWUoKSksUC5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLFUpLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKFcpe2lmKCEoVyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgVzt0aGlzLnJlcG9ydEVycm9yKFcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LFcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxXKX1maW5hbGx5e31yZXR1cm4gYX0scF9QYXJhbUxpc3RfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1BhcmFtTGlzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1BhcmFtTGlzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUGFyYW1MaXN0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QYXJhbUxpc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQ09NTUEiKSxpPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfUGFyYW0iKTt0cnl7dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUGFyYW1faW5fcF9QYXJhbUxpc3QzMTcwKSxmPXRoaXMucF9QYXJhbSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaS5hZGQoZi5nZXRUcmVlKCkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goZi5nZXRUcmVlKCkpO2E6ZG97dmFyIGo9MixrPXRoaXMuaW5wdXQuTEEoMSk7az09eGUmJihqPTEpO3N3aXRjaChqKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseGUscC5GT0xMT1dfQ09NTUFfaW5fcF9QYXJhbUxpc3QzMTczKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmguYWRkKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1BhcmFtX2luX3BfUGFyYW1MaXN0MzE3NyksZj10aGlzLnBfUGFyYW0oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmkuYWRkKGYuZ2V0VHJlZSgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1iO3ZhciBsPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpLG09bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHAiLGUpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO2lmKCFtLmhhc05leHQoKSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUVhcmx5RXhpdEV4Y2VwdGlvbjt3aGlsZShtLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtLm5leHRUcmVlKCkpO20ucmVzZXQoKSxhLnRyZWU9Yn1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG47dGhpcy5yZXBvcnRFcnJvcihuKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxuKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbil9ZmluYWxseXt9cmV0dXJuIGF9LHBfUGFyYW1fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1BhcmFtX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUGFyYW1fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1BhcmFtOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QYXJhbV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBET0xMQVIiKSxpPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfVHlwZURlY2xhcmF0aW9uIiksaj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1FOYW1lIik7dHJ5e2M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1BhcmFtMzIzNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZoLmFkZChjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX1BhcmFtMzI0MSksZT10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmouYWRkKGUuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoYyxlP2Uuc3RvcDpudWxsKTt2YXIgaz0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT15JiYoaz0xKTtzd2l0Y2goayl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1BhcmFtMzI0NyksZj10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZpLmFkZChmLmdldFRyZWUoKSl9aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgbT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcW4iLGUhPW51bGw/ZS50cmVlOm51bGwpLG49bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsYSE9bnVsbD9hLnRyZWU6bnVsbCksbz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gdGQiLGYhPW51bGw/Zi50cmVlOm51bGwpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBxPXRoaXMuYWRhcHRvci5uaWwoKTtxPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoYWcsIlBhcmFtIikscSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHEsbS5uZXh0VHJlZSgpKSxvLmhhc05leHQoKSYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHEsby5uZXh0VHJlZSgpKSxvLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscSksYS50cmVlPWJ9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyByO3RoaXMucmVwb3J0RXJyb3IociksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsciksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHIpfWZpbmFsbHl7fXJldHVybiBhfSxwbV9GdW5jdGlvbkJvZHlfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9GdW5jdGlvbkJvZHlfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fRnVuY3Rpb25Cb2R5X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fRnVuY3Rpb25Cb2R5OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fRnVuY3Rpb25Cb2R5X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0VuY2xvc2VkRXhwcl9pbl9wbV9GdW5jdGlvbkJvZHkzMzAzKSxjPXRoaXMucF9FbmNsb3NlZEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRW5jbG9zZWRFeHByX3JldHVybjpmdW5jdGlvbigpe3AucF9FbmNsb3NlZEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9FbmNsb3NlZEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0VuY2xvc2VkRXhwcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRW5jbG9zZWRFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBMQlJBQ0tFVCIpLGo9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBSQlJBQ0tFVCIpLGs9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9FeHByIik7dHJ5e2M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BfRW5jbG9zZWRFeHByMzMzMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZpLmFkZChjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BfRW5jbG9zZWRFeHByMzMzMiksZj10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZrLmFkZChmLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcF9FbmNsb3NlZEV4cHIzMzM1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmouYWRkKGUpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7YS50cmVlPWI7dmFyIGw9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsYSE9bnVsbD9hLnRyZWU6bnVsbCk7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIG09dGhpcy5hZGFwdG9yLm5pbCgpO209dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShiZywiRW5jbG9zZWRFeHByIiksbSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG0say5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSxhLnRyZWU9Yn1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG47dGhpcy5yZXBvcnRFcnJvcihuKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxuKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbil9ZmluYWxseXt9cmV0dXJuIGF9LHBtX09wdGlvbkRlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9PcHRpb25EZWNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBtX09wdGlvbkRlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9PcHRpb25EZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fT3B0aW9uRGVjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE4scC5GT0xMT1dfREVDTEFSRV9pbl9wbV9PcHRpb25EZWNsMzM4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRmIscC5GT0xMT1dfT1BUSU9OX2luX3BtX09wdGlvbkRlY2wzMzkzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wbV9PcHRpb25EZWNsMzM5NyksZj10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX09wdGlvbkRlY2wzMzk5KSxnPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX09wdGlvbkRlY2wzNDAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scG1fUXVlcnlCb2R5X3JldHVybjpmdW5jdGlvbigpe3AucG1fUXVlcnlCb2R5X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBtX1F1ZXJ5Qm9keV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX1F1ZXJ5Qm9keTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX1F1ZXJ5Qm9keV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7dmFyIGY9MjtmPXRoaXMuZGZhNDQucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goZil7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpO2lmKCF0aGlzLmxjKGwpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3Rocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBtX1F1ZXJ5Qm9keSIsInRoaXMubGMoWFFTKSIpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Byb2dyYW1faW5fcG1fUXVlcnlCb2R5MzQzMCksYz10aGlzLnBfUHJvZ3JhbSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BtX1F1ZXJ5Qm9keTM0NDIpLGU9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gYX0scF9FeHByX3JldHVybjpmdW5jdGlvbigpe3AucF9FeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRXhwcjpmdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBwLnBfRXhwcl9yZXR1cm47Yy5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtlPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfRXhwcjM0NzgpLGc9dGhpcy5wX0V4cHJTaW5nbGUoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGM7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoZSxnLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYhYil0aHJvdyBuZXcgazthOmRve3ZhciBqPTIsbD10aGlzLmlucHV0LkxBKDEpO2w9PXhlJiYoaj0xKTtzd2l0Y2goail7Y2FzZSAxOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BfRXhwcjM0OTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBjO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoZSxpKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0V4cHIzNDk2KSxoPXRoaXMucF9FeHByU2luZ2xlKGEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBjO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGUsaC5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Muc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhlKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGMudHJlZSxjLnN0YXJ0LGMuc3RvcCkpfWNhdGNoKG0pe2lmKG0gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pcmVwb3J0RXJyb3IobSkscmVjb3Zlcih0aGlzLmlucHV0LG0pLGMudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYy5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxtKTtlbHNle2lmKCEobSBpbnN0YW5jZW9mIGspKXRocm93IG07ZT10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGUsZy5nZXRUcmVlKCkpLGMuc3RvcD10aGlzLmlucHV0LkxUKC0xKSxjLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhlKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGMudHJlZSxjLnN0YXJ0LGMuc3RvcCl9fWZpbmFsbHl7fXJldHVybiBjfSxwX0V4cHJTaW5nbGVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0V4cHJTaW5nbGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9FeHByU2luZ2xlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FeHByU2luZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBwLnBfRXhwclNpbmdsZV9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGw7dHJ5e3ZhciBrPTY7az10aGlzLmRmYTQ2LnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKGspe2Nhc2UgMTpjPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GTFdPUkh5YnJpZF9pbl9wX0V4cHJTaW5nbGUzNTYzKSxlPXRoaXMucF9GTFdPUkh5YnJpZChhKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yz10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSWZIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzU5MyksZj10aGlzLnBfSWZIeWJyaWQoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOmM9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N3aXRjaEh5YnJpZF9pbl9wX0V4cHJTaW5nbGUzNjE5KSxnPXRoaXMucF9Td2l0Y2hIeWJyaWQoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmM9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVzd2l0Y2hIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzY0MSksaD10aGlzLnBfVHlwZXN3aXRjaEh5YnJpZChhKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGguZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6Yz10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVHJ5Q2F0Y2hIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzY2OCksaT10aGlzLnBfVHJ5Q2F0Y2hIeWJyaWQoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA2OmM9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW1wbGVfaW5fcF9FeHByU2luZ2xlMzY4MSksaj10aGlzLnBfRXhwclNpbXBsZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsai5nZXRUcmVlKCkpfWIuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYn0scF9GTFdPUkh5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRkxXT1JIeWJyaWRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GTFdPUkh5YnJpZF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRkxXT1JIeWJyaWQ6ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHAucF9GTFdPUkh5YnJpZF9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2M9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0luaXRpYWxDbGF1c2VfaW5fcF9GTFdPUkh5YnJpZDM3MDgpLGU9dGhpcy5wX0luaXRpYWxDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGUuZ2V0VHJlZSgpKTthOmRve3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PWVifHxpPT12Ynx8aT09SGJ8fGk9PVdifHxpPT1oY3x8aT09bWN8fGk9PXJjKWg9MTtzd2l0Y2goaCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ludGVybWVkaWF0ZUNsYXVzZV9pbl9wX0ZMV09SSHlicmlkMzcxMCksZj10aGlzLnBfSW50ZXJtZWRpYXRlQ2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxmLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUmV0dXJuSHlicmlkX2luX3BfRkxXT1JIeWJyaWQzNzEzKSxnPXRoaXMucF9SZXR1cm5IeWJyaWQoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnLmdldFRyZWUoKSksYi5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGIudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYi50cmVlLGIuc3RhcnQsYi5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYi50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxiLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBifSxwX0luaXRpYWxDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0luaXRpYWxDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Jbml0aWFsQ2xhdXNlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Jbml0aWFsQ2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Jbml0aWFsQ2xhdXNlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7dmFyIGc9MyxoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD09ZWIpe3ZhciBpPXRoaXMuaW5wdXQuTEEoMik7aWYoaT09bWUpZz0xO2Vsc2V7aWYoaSE9RGMmJmkhPUhjKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNDgsMSx0aGlzLmlucHV0KTt0aHJvdyBqfWc9M319ZWxzZXtpZihoIT12Yil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDQ4LDAsdGhpcy5pbnB1dCk7dGhyb3cgan1nPTJ9c3dpdGNoKGcpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Gb3JDbGF1c2VfaW5fcF9Jbml0aWFsQ2xhdXNlMzc0MCksYz10aGlzLnBfRm9yQ2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0xldENsYXVzZV9pbl9wX0luaXRpYWxDbGF1c2UzNzQ0KSxlPXRoaXMucF9MZXRDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfV2luZG93Q2xhdXNlX2luX3BfSW5pdGlhbENsYXVzZTM3NDgpLGY9dGhpcy5wX1dpbmRvd0NsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9JbnRlcm1lZGlhdGVDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ludGVybWVkaWF0ZUNsYXVzZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ludGVybWVkaWF0ZUNsYXVzZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW50ZXJtZWRpYXRlQ2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JbnRlcm1lZGlhdGVDbGF1c2VfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e3ZhciBpPTU7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgZWI6Y2FzZSB2YjppPTE7YnJlYWs7Y2FzZSBoYzppPTI7YnJlYWs7Y2FzZSByYzppPTM7YnJlYWs7Y2FzZSBIYjpjYXNlIFdiOmk9NDticmVhaztjYXNlIG1jOmk9NTticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw0OSwwLHRoaXMuaW5wdXQpO3Rocm93IGp9c3dpdGNoKGkpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Jbml0aWFsQ2xhdXNlX2luX3BfSW50ZXJtZWRpYXRlQ2xhdXNlMzc3NCksYz10aGlzLnBfSW5pdGlhbENsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9XaGVyZUNsYXVzZV9pbl9wX0ludGVybWVkaWF0ZUNsYXVzZTM3NzgpLGU9dGhpcy5wX1doZXJlQ2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0dyb3VwQnlDbGF1c2VfaW5fcF9JbnRlcm1lZGlhdGVDbGF1c2UzNzgyKSxmPXRoaXMucF9Hcm91cEJ5Q2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX09yZGVyQnlDbGF1c2VfaW5fcF9JbnRlcm1lZGlhdGVDbGF1c2UzNzg2KSxnPXRoaXMucF9PcmRlckJ5Q2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0NvdW50Q2xhdXNlX2luX3BfSW50ZXJtZWRpYXRlQ2xhdXNlMzc5MCksaD10aGlzLnBfQ291bnRDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU3RyaW5nQ29uY2F0RXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU3RyaW5nQ29uY2F0RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1N0cmluZ0NvbmNhdEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N0cmluZ0NvbmNhdEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1N0cmluZ0NvbmNhdEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUmFuZ2VFeHByX2luX3BfU3RyaW5nQ29uY2F0RXhwcjM4MTEpLGU9dGhpcy5wX1JhbmdlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2E6ZG97dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09amUmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsamUscC5GT0xMT1dfQ09OQ0FUX2luX3BfU3RyaW5nQ29uY2F0RXhwcjM4MTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFvKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1JhbmdlRXhwcl9pbl9wX1N0cmluZ0NvbmNhdEV4cHIzODIxKSxmPXRoaXMucF9SYW5nZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfRm9yQ2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3AucF9Gb3JDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Gb3JDbGF1c2VfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZvckNsYXVzZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRm9yQ2xhdXNlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZWIscC5GT0xMT1dfRk9SX2luX3BfRm9yQ2xhdXNlMzg0OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRm9yQmluZGluZ19pbl9wX0ZvckNsYXVzZTM4NTIpLGY9dGhpcy5wX0ZvckJpbmRpbmcoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PXhlJiYoaj0xKTtzd2l0Y2goail7Y2FzZSAxOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BfRm9yQ2xhdXNlMzg1NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Gb3JCaW5kaW5nX2luX3BfRm9yQ2xhdXNlMzg1NyksZz10aGlzLnBfRm9yQmluZGluZygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scF9Gb3JCaW5kaW5nX3JldHVybjpmdW5jdGlvbigpe3AucF9Gb3JCaW5kaW5nX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRm9yQmluZGluZ19yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRm9yQmluZGluZzpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRm9yQmluZGluZ19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9Gb3JCaW5kaW5nMzg4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfRm9yQmluZGluZzM4OTEpLGY9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoYyxmP2Yuc3RvcDpudWxsKTt2YXIgbj0yLG89dGhpcy5pbnB1dC5MQSgxKTtvPT15JiYobj0xKTtzd2l0Y2gobil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX0ZvckJpbmRpbmczODk1KSxnPXRoaXMucF9UeXBlRGVjbGFyYXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKX12YXIgcT0yLHI9dGhpcy5pbnB1dC5MQSgxKTtyPT1qYyYmKHE9MSk7c3dpdGNoKHEpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BbGxvd2luZ0VtcHR5X2luX3BfRm9yQmluZGluZzM4OTgpLGg9dGhpcy5wX0FsbG93aW5nRW1wdHkoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKX12YXIgcz0yLHQ9dGhpcy5pbnB1dC5MQSgxKTt0PT1BJiYocz0xKTtzd2l0Y2gocyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Bvc2l0aW9uYWxWYXJfaW5fcF9Gb3JCaW5kaW5nMzkwMSksaT10aGlzLnBfUG9zaXRpb25hbFZhcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpfXZhciB1PTIsdj10aGlzLmlucHV0LkxBKDEpO3Y9PUNkJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUU2NvcmVWYXJfaW5fcF9Gb3JCaW5kaW5nMzkwNCksaj10aGlzLnBfRlRTY29yZVZhcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpfWU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1iLHAuRk9MTE9XX0lOX2luX3BfRm9yQmluZGluZzM5MDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Gb3JCaW5kaW5nMzkxMyksaz10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godyl7aWYoISh3IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB3O3RoaXMucmVwb3J0RXJyb3IodyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0FsbG93aW5nRW1wdHlfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0FsbG93aW5nRW1wdHlfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9BbGxvd2luZ0VtcHR5X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BbGxvd2luZ0VtcHR5OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9BbGxvd2luZ0VtcHR5X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxqYyxwLkZPTExPV19BTExPV0lOR19pbl9wX0FsbG93aW5nRW1wdHkzOTQyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxYLHAuRk9MTE9XX0VNUFRZX2luX3BfQWxsb3dpbmdFbXB0eTM5NDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gYX0scF9Qb3NpdGlvbmFsVmFyX3JldHVybjpmdW5jdGlvbigpe3AucF9Qb3NpdGlvbmFsVmFyX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUG9zaXRpb25hbFZhcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUG9zaXRpb25hbFZhcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfUG9zaXRpb25hbFZhcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQSxwLkZPTExPV19BVF9pbl9wX1Bvc2l0aW9uYWxWYXIzOTc4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9Qb3NpdGlvbmFsVmFyMzk4NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfUG9zaXRpb25hbFZhcjM5ODgpLGY9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoZSxmP2Yuc3RvcDpudWxsKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfTGV0Q2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3AucF9MZXRDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9MZXRDbGF1c2VfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0xldENsYXVzZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfTGV0Q2xhdXNlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmIscC5GT0xMT1dfTEVUX2luX3BfTGV0Q2xhdXNlNDAxOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTGV0QmluZGluZ19pbl9wX0xldENsYXVzZTQwMjIpLGY9dGhpcy5wX0xldEJpbmRpbmcoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PXhlJiYoaj0xKTtzd2l0Y2goail7Y2FzZSAxOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BfTGV0Q2xhdXNlNDAyNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9MZXRCaW5kaW5nX2luX3BfTGV0Q2xhdXNlNDAyNyksZz10aGlzLnBfTGV0QmluZGluZygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scF9MZXRCaW5kaW5nX3JldHVybjpmdW5jdGlvbigpe3AucF9MZXRCaW5kaW5nX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfTGV0QmluZGluZ19yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTGV0QmluZGluZzpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfTGV0QmluZGluZ19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGw9MixtPXRoaXMuaW5wdXQuTEEoMSk7aWYobT09bWUpbD0xO2Vsc2V7aWYobSE9Q2Qpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIG49bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw1OCwwLHRoaXMuaW5wdXQpO3Rocm93IG59bD0yfXN3aXRjaChsKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfTGV0QmluZGluZzQwNjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0xldEJpbmRpbmc0MDY1KSxmPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGMsZj9mLnN0b3A6bnVsbCk7dmFyIG89MixxPXRoaXMuaW5wdXQuTEEoMSk7cT09eSYmKG89MSk7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9MZXRCaW5kaW5nNDA2OSksZz10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSl9YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUU2NvcmVWYXJfaW5fcF9MZXRCaW5kaW5nNDA3NSksaD10aGlzLnBfRlRTY29yZVZhcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpfWU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHNlLHAuRk9MTE9XX0JJTkRfaW5fcF9MZXRCaW5kaW5nNDA3OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfTGV0QmluZGluZzQwODEpLGk9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcjt0aGlzLnJlcG9ydEVycm9yKHIpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHIpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxyKX1maW5hbGx5e31yZXR1cm4gYX0scF9XaW5kb3dDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1dpbmRvd0NsYXVzZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1dpbmRvd0NsYXVzZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfV2luZG93Q2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9XaW5kb3dDbGF1c2VfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZWIscC5GT0xMT1dfRk9SX2luX3BfV2luZG93Q2xhdXNlNDExMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaT09SGMpaD0xO2Vsc2V7aWYoaSE9RGMpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw1OSwwLHRoaXMuaW5wdXQpO3Rocm93IGp9aD0yfXN3aXRjaChoKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2VfaW5fcF9XaW5kb3dDbGF1c2U0MTE1KSxlPXRoaXMucF9UdW1ibGluZ1dpbmRvd0NsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TbGlkaW5nV2luZG93Q2xhdXNlX2luX3BfV2luZG93Q2xhdXNlNDExOSksZj10aGlzLnBfU2xpZGluZ1dpbmRvd0NsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9UdW1ibGluZ1dpbmRvd0NsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVHVtYmxpbmdXaW5kb3dDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9UdW1ibGluZ1dpbmRvd0NsYXVzZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHVtYmxpbmdXaW5kb3dDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1R1bWJsaW5nV2luZG93Q2xhdXNlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSGMscC5GT0xMT1dfVFVNQkxJTkdfaW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxNTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEtjLHAuRk9MTE9XX1dJTkRPV19pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE2Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Zhck5hbWVfaW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxNzIpLGY9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoZSxmP2Yuc3RvcDpudWxsKTt2YXIgbT0yLG49dGhpcy5pbnB1dC5MQSgxKTtuPT15JiYobT0xKTtzd2l0Y2gobSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE3NiksZz10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSl9Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWIscC5GT0xMT1dfSU5faW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxODEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxODUpLGg9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTg4KSxpPXRoaXMucF9XaW5kb3dTdGFydENvbmRpdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpO3ZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO2lmKHE9PXFjfHxxPT15YylvPTE7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9XaW5kb3dFbmRDb25kaXRpb25faW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxOTApLGo9dGhpcy5wX1dpbmRvd0VuZENvbmRpdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcjt0aGlzLnJlcG9ydEVycm9yKHIpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHIpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxyKX1maW5hbGx5e31yZXR1cm4gYX0scF9TbGlkaW5nV2luZG93Q2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3AucF9TbGlkaW5nV2luZG93Q2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfU2xpZGluZ1dpbmRvd0NsYXVzZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU2xpZGluZ1dpbmRvd0NsYXVzZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfU2xpZGluZ1dpbmRvd0NsYXVzZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LERjLHAuRk9MTE9XX1NMSURJTkdfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDIxOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsS2MscC5GT0xMT1dfV0lORE9XX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyMjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjMxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Zhck5hbWVfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDIzNSksZj10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihlLGY/Zi5zdG9wOm51bGwpO3ZhciBtPTIsbj10aGlzLmlucHV0LkxBKDEpO249PXkmJihtPTEpO3N3aXRjaChtKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyMzkpLGc9dGhpcy5wX1R5cGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpfWM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1iLHAuRk9MTE9XX0lOX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNDQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDI0OCksaD10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfV2luZG93U3RhcnRDb25kaXRpb25faW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDI1MSksaT10aGlzLnBfV2luZG93U3RhcnRDb25kaXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKTt2YXIgbz0yLHE9dGhpcy5pbnB1dC5MQSgxKTtpZihxPT1xY3x8cT09eWMpbz0xO3N3aXRjaChvKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfV2luZG93RW5kQ29uZGl0aW9uX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNTMpLGo9dGhpcy5wX1dpbmRvd0VuZENvbmRpdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcjt0aGlzLnJlcG9ydEVycm9yKHIpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHIpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxyKX1maW5hbGx5e31yZXR1cm4gYX0scF9XaW5kb3dTdGFydENvbmRpdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfV2luZG93U3RhcnRDb25kaXRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9XaW5kb3dTdGFydENvbmRpdGlvbl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfV2luZG93U3RhcnRDb25kaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEVjLHAuRk9MTE9XX1NUQVJUX2luX3BfV2luZG93U3RhcnRDb25kaXRpb240MjgyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9XaW5kb3dWYXJzX2luX3BfV2luZG93U3RhcnRDb25kaXRpb240Mjg2KSxlPXRoaXMucF9XaW5kb3dWYXJzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSmMscC5GT0xMT1dfV0hFTl9pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI5NCksZj10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBhfSxwX1dpbmRvd0VuZENvbmRpdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfV2luZG93RW5kQ29uZGl0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfV2luZG93RW5kQ29uZGl0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9XaW5kb3dFbmRDb25kaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1dpbmRvd0VuZENvbmRpdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpPT15YyYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5YyxwLkZPTExPV19PTkxZX2luX3BfV2luZG93RW5kQ29uZGl0aW9uNDMyNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyl9Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscWMscC5GT0xMT1dfRU5EX2luX3BfV2luZG93RW5kQ29uZGl0aW9uNDMzMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfV2luZG93VmFyc19pbl9wX1dpbmRvd0VuZENvbmRpdGlvbjQzMzYpLGU9dGhpcy5wX1dpbmRvd1ZhcnMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxKYyxwLkZPTExPV19XSEVOX2luX3BfV2luZG93RW5kQ29uZGl0aW9uNDM0MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1dpbmRvd0VuZENvbmRpdGlvbjQzNDQpLGY9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9XaW5kb3dWYXJzX3JldHVybjpmdW5jdGlvbigpe3AucF9XaW5kb3dWYXJzX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfV2luZG93VmFyc19yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfV2luZG93VmFyczpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfV2luZG93VmFyc19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbCxvPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBxPTIscj10aGlzLmlucHV0LkxBKDEpO3I9PW1lJiYocT0xKTtzd2l0Y2gocSl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1dpbmRvd1ZhcnM0Mzc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0N1cnJlbnRJdGVtX2luX3BfV2luZG93VmFyczQzNzgpLGg9dGhpcy5wX0N1cnJlbnRJdGVtKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGMsaD9oLnN0b3A6bnVsbCl9dmFyIHM9Mix0PXRoaXMuaW5wdXQuTEEoMSk7dD09QSYmKHM9MSk7c3dpdGNoKHMpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Qb3NpdGlvbmFsVmFyX2luX3BfV2luZG93VmFyczQzODQpLGk9dGhpcy5wX1Bvc2l0aW9uYWxWYXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKX12YXIgdT0yLHY9dGhpcy5pbnB1dC5MQSgxKTt2PT1DYyYmKHU9MSk7c3dpdGNoKHUpe2Nhc2UgMTplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxDYyxwLkZPTExPV19QUkVWSU9VU19pbl9wX1dpbmRvd1ZhcnM0MzkwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9XaW5kb3dWYXJzNDM5NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9QcmV2aW91c0l0ZW1faW5fcF9XaW5kb3dWYXJzNDM5Niksaj10aGlzLnBfUHJldmlvdXNJdGVtKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqLmdldFRyZWUoKSl9dmFyIHc9Mix4PXRoaXMuaW5wdXQuTEEoMSk7eD09eGMmJih3PTEpO3N3aXRjaCh3KXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQseGMscC5GT0xMT1dfTkVYVF9pbl9wX1dpbmRvd1ZhcnM0NDAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9XaW5kb3dWYXJzNDQwNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OZXh0SXRlbV9pbl9wX1dpbmRvd1ZhcnM0NDA5KSxrPXRoaXMucF9OZXh0SXRlbSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsay5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHkpe2lmKCEoeSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgeTt0aGlzLnJlcG9ydEVycm9yKHkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHkpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx5KX1maW5hbGx5e31yZXR1cm4gYX0scF9DdXJyZW50SXRlbV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ3VycmVudEl0ZW1fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9DdXJyZW50SXRlbV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ3VycmVudEl0ZW06ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0N1cnJlbnRJdGVtX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfQ3VycmVudEl0ZW00NDM3KSxjPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9QcmV2aW91c0l0ZW1fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1ByZXZpb3VzSXRlbV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1ByZXZpb3VzSXRlbV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUHJldmlvdXNJdGVtOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QcmV2aW91c0l0ZW1fcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9QcmV2aW91c0l0ZW00NDYzKSxjPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9OZXh0SXRlbV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfTmV4dEl0ZW1fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9OZXh0SXRlbV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTmV4dEl0ZW06ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX05leHRJdGVtX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfTmV4dEl0ZW00NDg5KSxjPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9Db3VudENsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ291bnRDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Db3VudENsYXVzZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ291bnRDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0NvdW50Q2xhdXNlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtYyxwLkZPTExPV19DT1VOVF9pbl9wX0NvdW50Q2xhdXNlNDUxNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfQ291bnRDbGF1c2U0NTIzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Zhck5hbWVfaW5fcF9Db3VudENsYXVzZTQ1MjcpLGY9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoZSxmP2Yuc3RvcDpudWxsKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfV2hlcmVDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1doZXJlQ2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfV2hlcmVDbGF1c2VfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1doZXJlQ2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9XaGVyZUNsYXVzZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhjLHAuRk9MTE9XX1dIRVJFX2luX3BfV2hlcmVDbGF1c2U0NTY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfV2hlcmVDbGF1c2U0NTY5KSxlPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGF9LHBfR3JvdXBCeUNsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfR3JvdXBCeUNsYXVzZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0dyb3VwQnlDbGF1c2VfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0dyb3VwQnlDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0dyb3VwQnlDbGF1c2VfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxyYyxwLkZPTExPV19HUk9VUF9pbl9wX0dyb3VwQnlDbGF1c2U0NTk4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxFLHAuRk9MTE9XX0JZX2luX3BfR3JvdXBCeUNsYXVzZTQ2MDQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0dyb3VwaW5nU3BlY0xpc3RfaW5fcF9Hcm91cEJ5Q2xhdXNlNDYwOCksZT10aGlzLnBfR3JvdXBpbmdTcGVjTGlzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gYX0scF9Hcm91cGluZ1NwZWNMaXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9Hcm91cGluZ1NwZWNMaXN0X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfR3JvdXBpbmdTcGVjTGlzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfR3JvdXBpbmdTcGVjTGlzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfR3JvdXBpbmdTcGVjTGlzdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Hcm91cGluZ1NwZWNfaW5fcF9Hcm91cGluZ1NwZWNMaXN0NDYzNCksZT10aGlzLnBfR3JvdXBpbmdTcGVjKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YTpkb3t2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpPT14ZSYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx4ZSxwLkZPTExPV19DT01NQV9pbl9wX0dyb3VwaW5nU3BlY0xpc3Q0NjM3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0dyb3VwaW5nU3BlY19pbl9wX0dyb3VwaW5nU3BlY0xpc3Q0NjM5KSxmPXRoaXMucF9Hcm91cGluZ1NwZWMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfR3JvdXBpbmdTcGVjX3JldHVybjpmdW5jdGlvbigpe3AucF9Hcm91cGluZ1NwZWNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Hcm91cGluZ1NwZWNfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0dyb3VwaW5nU3BlYzpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfR3JvdXBpbmdTcGVjX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfR3JvdXBpbmdTcGVjNDY2OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfR3JvdXBpbmdTcGVjNDY3MyksZj10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihjLGY/Zi5zdG9wOm51bGwpO3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PUomJihqPTEpO3N3aXRjaChqKXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSixwLkZPTExPV19DT0xMQVRJT05faW5fcF9Hcm91cGluZ1NwZWM0NjgwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfR3JvdXBpbmdTcGVjNDY4NCksZz10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scF9PcmRlckJ5Q2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3AucF9PcmRlckJ5Q2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfT3JkZXJCeUNsYXVzZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfT3JkZXJCeUNsYXVzZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfT3JkZXJCeUNsYXVzZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPT1IYiloPTE7ZWxzZXtpZihpIT1XYil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDcxLDAsdGhpcy5pbnB1dCk7dGhyb3cgan1oPTJ9c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxIYixwLkZPTExPV19PUkRFUl9pbl9wX09yZGVyQnlDbGF1c2U0NzE2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRSxwLkZPTExPV19CWV9pbl9wX09yZGVyQnlDbGF1c2U0NzIwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFdiLHAuRk9MTE9XX1NUQUJMRV9pbl9wX09yZGVyQnlDbGF1c2U0NzI4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSGIscC5GT0xMT1dfT1JERVJfaW5fcF9PcmRlckJ5Q2xhdXNlNDczMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEUscC5GT0xMT1dfQllfaW5fcF9PcmRlckJ5Q2xhdXNlNDczNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9PcmRlclNwZWNMaXN0X2luX3BfT3JkZXJCeUNsYXVzZTQ3NDIpLGY9dGhpcy5wX09yZGVyU3BlY0xpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfT3JkZXJTcGVjTGlzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfT3JkZXJTcGVjTGlzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX09yZGVyU3BlY0xpc3RfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX09yZGVyU3BlY0xpc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX09yZGVyU3BlY0xpc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfT3JkZXJTcGVjX2luX3BfT3JkZXJTcGVjTGlzdDQ3NjgpLGU9dGhpcy5wX09yZGVyU3BlYygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2E6ZG97dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09eGUmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseGUscC5GT0xMT1dfQ09NTUFfaW5fcF9PcmRlclNwZWNMaXN0NDc3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9PcmRlclNwZWNfaW5fcF9PcmRlclNwZWNMaXN0NDc3MyksZj10aGlzLnBfT3JkZXJTcGVjKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX09yZGVyU3BlY19yZXR1cm46ZnVuY3Rpb24oKXtwLnBfT3JkZXJTcGVjX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfT3JkZXJTcGVjX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9PcmRlclNwZWM6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX09yZGVyU3BlY19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX09yZGVyU3BlYzQ4MDEpLGM9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX09yZGVyTW9kaWZpZXJfaW5fcF9PcmRlclNwZWM0ODA0KSxlPXRoaXMucF9PcmRlck1vZGlmaWVyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBhfSxwX09yZGVyTW9kaWZpZXJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX09yZGVyTW9kaWZpZXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9PcmRlck1vZGlmaWVyX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9PcmRlck1vZGlmaWVyOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9PcmRlck1vZGlmaWVyX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBoPTMsaT10aGlzLmlucHV0LkxBKDEpO2k9PXo/aD0xOmk9PVImJihoPTIpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseixwLkZPTExPV19BU0NFTkRJTkdfaW5fcF9PcmRlck1vZGlmaWVyNDgzMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO2JyZWFrO2Nhc2UgMjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxSLHAuRk9MTE9XX0RFU0NFTkRJTkdfaW5fcF9PcmRlck1vZGlmaWVyNDgzOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PVgmJihqPTEpO3N3aXRjaChqKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWCxwLkZPTExPV19FTVBUWV9pbl9wX09yZGVyTW9kaWZpZXI0ODQ2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7dmFyIGw9MixtPXRoaXMuaW5wdXQuTEEoMSk7aWYobT09aGIpbD0xO2Vsc2V7aWYobSE9dWIpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIG49bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw3NCwwLHRoaXMuaW5wdXQpO3Rocm93IG59bD0yfXN3aXRjaChsKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGIscC5GT0xMT1dfR1JFQVRFU1RfaW5fcF9PcmRlck1vZGlmaWVyNDg1MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO2JyZWFrO2Nhc2UgMjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx1YixwLkZPTExPV19MRUFTVF9pbl9wX09yZGVyTW9kaWZpZXI0ODU3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyl9fXZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO3E9PUomJihvPTEpO3N3aXRjaChvKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSixwLkZPTExPV19DT0xMQVRJT05faW5fcF9PcmRlck1vZGlmaWVyNDg2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9PcmRlck1vZGlmaWVyNDg2NyksZj10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChyKXtpZighKHIgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHI7dGhpcy5yZXBvcnRFcnJvcihyKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxyKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscil9ZmluYWxseXt9cmV0dXJuIGF9LHBfUmV0dXJuSHlicmlkX3JldHVybjpmdW5jdGlvbigpe3AucF9SZXR1cm5IeWJyaWRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9SZXR1cm5IeWJyaWRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1JldHVybkh5YnJpZDpmdW5jdGlvbihhKXt2YXIgYj1uZXcgcC5wX1JldHVybkh5YnJpZF9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2M9dGhpcy5hZGFwdG9yLm5pbCgpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFBiLHAuRk9MTE9XX1JFVFVSTl9pbl9wX1JldHVybkh5YnJpZDQ5MDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0h5YnJpZF9pbl9wX1JldHVybkh5YnJpZDQ5MDQpLGY9dGhpcy5wX0h5YnJpZChhLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGYuZ2V0VHJlZSgpKSxiLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYyksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhiLnRyZWUsYi5zdGFydCxiLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxiLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGIuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGJ9LHBfUXVhbnRpZmllZEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1F1YW50aWZpZWRFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUXVhbnRpZmllZEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1F1YW50aWZpZWRFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9RdWFudGlmaWVkRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbCxvPW51bGwscT1udWxsLHI9bnVsbCxzPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciB0PTIsdT10aGlzLmlucHV0LkxBKDEpO2lmKHU9PVZiKXQ9MTtlbHNle2lmKHUhPV8pe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHY9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw3NywwLHRoaXMuaW5wdXQpO3Rocm93IHZ9dD0yfXN3aXRjaCh0KXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVmIscC5GT0xMT1dfU09NRV9pbl9wX1F1YW50aWZpZWRFeHByNDkzNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsXyxwLkZPTExPV19FVkVSWV9pbl9wX1F1YW50aWZpZWRFeHByNDk0MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfUXVhbnRpZmllZEV4cHI0OTQ3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihxPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Zhck5hbWVfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NTEpLGg9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoZSxoP2guc3RvcDpudWxsKTt2YXIgdz0yLHg9dGhpcy5pbnB1dC5MQSgxKTt4PT15JiYodz0xKTtzd2l0Y2godyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1F1YW50aWZpZWRFeHByNDk1NSksaj10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqLmdldFRyZWUoKSl9Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWIscC5GT0xMT1dfSU5faW5fcF9RdWFudGlmaWVkRXhwcjQ5NjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NjQpLGs9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsay5nZXRUcmVlKCkpO2E6ZG97dmFyIHo9MixBPXRoaXMuaW5wdXQuTEEoMSk7QT09eGUmJih6PTEpO3N3aXRjaCh6KXtjYXNlIDE6Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseGUscC5GT0xMT1dfQ09NTUFfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NjgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixzKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfUXVhbnRpZmllZEV4cHI0OTcyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihyPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscikpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfUXVhbnRpZmllZEV4cHI0OTc2KSxpPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihmLGk/aS5zdG9wOm51bGwpO3ZhciBCPTIsQz10aGlzLmlucHV0LkxBKDEpO0M9PXkmJihCPTEpO3N3aXRjaChCKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfUXVhbnRpZmllZEV4cHI0OTgwKSxsPXRoaXMucF9UeXBlRGVjbGFyYXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwuZ2V0VHJlZSgpKX1jPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtYixwLkZPTExPV19JTl9pbl9wX1F1YW50aWZpZWRFeHByNDk4NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1F1YW50aWZpZWRFeHByNDk4OSksbT10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWIscC5GT0xMT1dfU0FUSVNGSUVTX2luX3BfUXVhbnRpZmllZEV4cHI0OTk2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfUXVhbnRpZmllZEV4cHI1MDAwKSxuPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4uZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChEKXtpZighKEQgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEQ7dGhpcy5yZXBvcnRFcnJvcihEKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxEKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksRCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU3dpdGNoSHlicmlkX3JldHVybjpmdW5jdGlvbigpe3AucF9Td2l0Y2hIeWJyaWRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Td2l0Y2hIeWJyaWRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N3aXRjaEh5YnJpZDpmdW5jdGlvbihhKXt2YXIgYj1uZXcgcC5wX1N3aXRjaEh5YnJpZF9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGw7dHJ5e2M9dGhpcy5hZGFwdG9yLm5pbCgpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEZjLHAuRk9MTE9XX1NXSVRDSF9pbl9wX1N3aXRjaEh5YnJpZDUwMzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX1N3aXRjaEh5YnJpZDUwMzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxsKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX1N3aXRjaEh5YnJpZDUwMzYpLGg9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaC5nZXRUcmVlKCkpLGc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX1N3aXRjaEh5YnJpZDUwMzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxtKSk7dmFyIG49MDthOmRve3ZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO3E9PUYmJihvPTEpO3N3aXRjaChvKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3dpdGNoQ2FzZUh5YnJpZF9pbl9wX1N3aXRjaEh5YnJpZDUwNDEpLGk9dGhpcy5wX1N3aXRjaENhc2VIeWJyaWQoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxpLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihuPj0xKWJyZWFrIGE7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYjt2YXIgcj1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig4MSx0aGlzLmlucHV0KTt0aHJvdyByfW4rK313aGlsZSghMCk7ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTyxwLkZPTExPV19ERUZBVUxUX2luX3BfU3dpdGNoSHlicmlkNTA0Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUGIscC5GT0xMT1dfUkVUVVJOX2luX3BfU3dpdGNoSHlicmlkNTA1Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSHlicmlkX2luX3BfU3dpdGNoSHlicmlkNTA1Nyksaj10aGlzLnBfSHlicmlkKGEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsai5nZXRUcmVlKCkpLGIuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKHMpe2lmKCEocyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgczt0aGlzLnJlcG9ydEVycm9yKHMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHMpLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxzKX1maW5hbGx5e31yZXR1cm4gYn0scF9Td2l0Y2hDYXNlSHlicmlkX3JldHVybjpmdW5jdGlvbigpe3AucF9Td2l0Y2hDYXNlSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfU3dpdGNoQ2FzZUh5YnJpZF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU3dpdGNoQ2FzZUh5YnJpZDpmdW5jdGlvbihhKXt2YXIgYj1uZXcgcC5wX1N3aXRjaENhc2VIeWJyaWRfcmV0dXJuO2Iuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbDt0cnl7Yz10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGk9MDthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PUYmJihqPTEpO3N3aXRjaChqKXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRixwLkZPTExPV19DQVNFX2luX3BfU3dpdGNoQ2FzZUh5YnJpZDUwODgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N3aXRjaENhc2VPcGVyYW5kX2luX3BfU3dpdGNoQ2FzZUh5YnJpZDUwOTIpLGY9dGhpcy5wX1N3aXRjaENhc2VPcGVyYW5kKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxmLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihpPj0xKWJyZWFrIGE7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYjt2YXIgbD1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig4Mix0aGlzLmlucHV0KTt0aHJvdyBsfWkrK313aGlsZSghMCk7ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUGIscC5GT0xMT1dfUkVUVVJOX2luX3BfU3dpdGNoQ2FzZUh5YnJpZDUwOTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0h5YnJpZF9pbl9wX1N3aXRjaENhc2VIeWJyaWQ1MTAyKSxnPXRoaXMucF9IeWJyaWQoYSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnLmdldFRyZWUoKSksYi5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGIudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYi50cmVlLGIuc3RhcnQsYi5zdG9wKSl9Y2F0Y2gobSl7aWYoIShtIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBtO3RoaXMucmVwb3J0RXJyb3IobSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbSksYi50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxiLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG0pfWZpbmFsbHl7fXJldHVybiBifSxwX1N3aXRjaENhc2VPcGVyYW5kX3JldHVybjpmdW5jdGlvbigpe3AucF9Td2l0Y2hDYXNlT3BlcmFuZF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1N3aXRjaENhc2VPcGVyYW5kX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Td2l0Y2hDYXNlT3BlcmFuZDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfU3dpdGNoQ2FzZU9wZXJhbmRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1N3aXRjaENhc2VPcGVyYW5kNTEyOSksYz10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO3RoaXMucmVwb3J0RXJyb3IoZSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGUpfWZpbmFsbHl7fXJldHVybiBhfSxwX1R5cGVzd2l0Y2hIeWJyaWRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1R5cGVzd2l0Y2hIeWJyaWRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9UeXBlc3dpdGNoSHlicmlkX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UeXBlc3dpdGNoSHlicmlkOmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBwLnBfVHlwZXN3aXRjaEh5YnJpZF9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1udWxsLG89bnVsbCxxPW51bGw7dHJ5e2M9dGhpcy5hZGFwdG9yLm5pbCgpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJjLHAuRk9MTE9XX1RZUEVTV0lUQ0hfaW5fcF9UeXBlc3dpdGNoSHlicmlkNTE1OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLG0pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksZz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxvKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTY1KSxqPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGouZ2V0VHJlZSgpKSxoPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcF9UeXBlc3dpdGNoSHlicmlkNTE2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocT10aGlzLmFkYXB0b3IuY3JlYXRlKGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLHEpKTt2YXIgcj0wO2E6ZG97dmFyIHM9Mix0PXRoaXMuaW5wdXQuTEEoMSk7dD09RiYmKHM9MSk7c3dpdGNoKHMpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9DYXNlSHlicmlkX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNzApLGs9dGhpcy5wX0Nhc2VIeWJyaWQoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxrLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihyPj0xKWJyZWFrIGE7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYjt2YXIgdT1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig4Myx0aGlzLmlucHV0KTt0aHJvdyB1fXIrK313aGlsZSghMCk7ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTyxwLkZPTExPV19ERUZBVUxUX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxtKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpO3ZhciB2PTIsdz10aGlzLmlucHV0LkxBKDEpO3c9PW1lJiYodj0xKTtzd2l0Y2godil7Y2FzZSAxOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTgzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihuPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsbikpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Zhck5hbWVfaW5fcF9UeXBlc3dpdGNoSHlicmlkNTE4NyksaT10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaS5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihmLGk/aS5zdG9wOm51bGwpfWU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFBiLHAuRk9MTE9XX1JFVFVSTl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTk1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsbSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9IeWJyaWRfaW5fcF9UeXBlc3dpdGNoSHlicmlkNTE5OSksbD10aGlzLnBfSHlicmlkKGEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsbC5nZXRUcmVlKCkpLGIuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKHgpe2lmKCEoeCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgeDt0aGlzLnJlcG9ydEVycm9yKHgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHgpLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx4KX1maW5hbGx5e31yZXR1cm4gYn0scF9DYXNlSHlicmlkX3JldHVybjpmdW5jdGlvbigpe3AucF9DYXNlSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQ2FzZUh5YnJpZF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ2FzZUh5YnJpZDpmdW5jdGlvbihhKXt2YXIgYj1uZXcgcC5wX0Nhc2VIeWJyaWRfcmV0dXJuO2Iuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbDt0cnl7Yz10aGlzLmFkYXB0b3IubmlsKCksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRixwLkZPTExPV19DQVNFX2luX3BfQ2FzZUh5YnJpZDUyMjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxqKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpO3ZhciBsPTIsbT10aGlzLmlucHV0LkxBKDEpO209PW1lJiYobD0xKTtzd2l0Y2gobCl7Y2FzZSAxOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX0Nhc2VIeWJyaWQ1MjM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Zhck5hbWVfaW5fcF9DYXNlSHlicmlkNTI0MCksZz10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsZy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihmLGc/Zy5zdG9wOm51bGwpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHkscC5GT0xMT1dfQVNfaW5fcF9DYXNlSHlicmlkNTI0Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSl9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2VxdWVuY2VUeXBlVW5pb25faW5fcF9DYXNlSHlicmlkNTI1MiksaD10aGlzLnBfU2VxdWVuY2VUeXBlVW5pb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGguZ2V0VHJlZSgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQYixwLkZPTExPV19SRVRVUk5faW5fcF9DYXNlSHlicmlkNTI1Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0Nhc2VIeWJyaWQ1MjYwKSxpPXRoaXMucF9FeHByU2luZ2xlKCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGkuZ2V0VHJlZSgpKSxiLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYyksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhiLnRyZWUsYi5zdGFydCxiLnN0b3ApKX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG47dGhpcy5yZXBvcnRFcnJvcihuKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxuKSxiLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGIuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbil9ZmluYWxseXt9cmV0dXJuIGJ9LHBfU2VxdWVuY2VUeXBlVW5pb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1NlcXVlbmNlVHlwZVVuaW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfU2VxdWVuY2VUeXBlVW5pb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NlcXVlbmNlVHlwZVVuaW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9TZXF1ZW5jZVR5cGVVbmlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9TZXF1ZW5jZVR5cGVVbmlvbjUyODcpLGU9dGhpcy5wX1NlcXVlbmNlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2E6ZG97dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09UmUmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUmUscC5GT0xMT1dfVkJBUl9pbl9wX1NlcXVlbmNlVHlwZVVuaW9uNTI5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9TZXF1ZW5jZVR5cGVVbmlvbjUyOTIpLGY9dGhpcy5wX1NlcXVlbmNlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9JZkh5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSWZIeWJyaWRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JZkh5YnJpZF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSWZIeWJyaWQ6ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHAucF9JZkh5YnJpZF9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGw7dHJ5e2M9dGhpcy5hZGFwdG9yLm5pbCgpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtiLHAuRk9MTE9XX0lGX2luX3BfSWZIeWJyaWQ1MzIzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9JZkh5YnJpZDUzMjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxsKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX0lmSHlicmlkNTMyOSksaD10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxoLmdldFRyZWUoKSksZz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfSWZIeWJyaWQ1MzMyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsbSkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LCRiLHAuRk9MTE9XX1RIRU5faW5fcF9JZkh5YnJpZDUzMzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0h5YnJpZF9pbl9wX0lmSHlicmlkNTM0MCksaT10aGlzLnBfSHlicmlkKGEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaS5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFcscC5GT0xMT1dfRUxTRV9pbl9wX0lmSHlicmlkNTM0NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSHlicmlkX2luX3BfSWZIeWJyaWQ1MzQ5KSxqPXRoaXMucF9IeWJyaWQoYSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxqLmdldFRyZWUoKSksYi5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGIudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYi50cmVlLGIuc3RhcnQsYi5zdG9wKSl9Y2F0Y2gobil7aWYoIShuIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBuO3RoaXMucmVwb3J0RXJyb3IobiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbiksYi50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxiLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG4pfWZpbmFsbHl7fXJldHVybiBifSxwX1RyeUNhdGNoRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVHJ5Q2F0Y2hFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfVHJ5Q2F0Y2hFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UcnlDYXRjaEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1RyeUNhdGNoRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVHJ5Q2xhdXNlX2luX3BfVHJ5Q2F0Y2hFeHByNTM3NiksYz10aGlzLnBfVHJ5Q2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7dmFyIGY9MDthOmRve3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PWtjJiYoZz0xKTtzd2l0Y2goZyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0NhdGNoQ2xhdXNlX2luX3BfVHJ5Q2F0Y2hFeHByNTM3OCksZT10aGlzLnBfQ2F0Y2hDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmlmKGY+PTEpYnJlYWsgYTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDg3LHRoaXMuaW5wdXQpO3Rocm93IGl9ZisrfXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfVHJ5Q2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3AucF9UcnlDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9UcnlDbGF1c2VfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1RyeUNsYXVzZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVHJ5Q2xhdXNlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEdjLHAuRk9MTE9XX1RSWV9pbl9wX1RyeUNsYXVzZTU0MDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BfVHJ5Q2xhdXNlNTQxMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UcnlUYXJnZXRFeHByX2luX3BfVHJ5Q2xhdXNlNTQxMyksZz10aGlzLnBfVHJ5VGFyZ2V0RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BfVHJ5Q2xhdXNlNTQxNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfVHJ5VGFyZ2V0RXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVHJ5VGFyZ2V0RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1RyeVRhcmdldEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1RyeVRhcmdldEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1RyeVRhcmdldEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX1RyeVRhcmdldEV4cHI1NDQxKSxjPXRoaXMucF9FeHByKCExLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQ2F0Y2hDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0NhdGNoQ2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQ2F0Y2hDbGF1c2VfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NhdGNoQ2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9DYXRjaENsYXVzZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2MscC5GT0xMT1dfQ0FUQ0hfaW5fcF9DYXRjaENsYXVzZTU0NzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0NhdGNoRXJyb3JMaXN0X2luX3BfQ2F0Y2hDbGF1c2U1NDc0KSxnPXRoaXMucF9DYXRjaEVycm9yTGlzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BfQ2F0Y2hDbGF1c2U1NDc2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcF9DYXRjaENsYXVzZTU0NzgpLGg9dGhpcy5wX0V4cHIoITEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BfQ2F0Y2hDbGF1c2U1NDgxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scF9DYXRjaEVycm9yTGlzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ2F0Y2hFcnJvckxpc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9DYXRjaEVycm9yTGlzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ2F0Y2hFcnJvckxpc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0NhdGNoRXJyb3JMaXN0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk+PXYmJmk8PVpjfHxpPj1fYyYmaTw9aWV8fGk9PXplfHxpPj1fZSYmaTw9YWZ8fGk9PWRmfHxpPT13ZyloPTE7ZWxzZXtpZihpIT1uZXx8IXRoaXMubGMobykpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw4OSwwLHRoaXMuaW5wdXQpO3Rocm93IGp9aD0yfXN3aXRjaChoKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTmFtZVRlc3RfaW5fcF9DYXRjaEVycm9yTGlzdDU1MDcpLGU9dGhpcy5wX05hbWVUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YTpkb3t2YXIgaz0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1SZSYmKGs9MSk7c3dpdGNoKGspe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxSZSxwLkZPTExPV19WQkFSX2luX3BfQ2F0Y2hFcnJvckxpc3Q1NTEwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05hbWVUZXN0X2luX3BfQ2F0Y2hFcnJvckxpc3Q1NTEyKSxmPXRoaXMucF9OYW1lVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKTtpZighdGhpcy5sYyhvKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJwX0NhdGNoRXJyb3JMaXN0IiwidGhpcy5sYyhNTFMpIil9fWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG0pe2lmKCEobSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbTt0aGlzLnJlcG9ydEVycm9yKG0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG0pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxtKX1maW5hbGx5e31yZXR1cm4gYX0scF9PckV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX09yRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX09yRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfT3JFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9PckV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQW5kRXhwcl9pbl9wX09yRXhwcjU1NTcpLGU9dGhpcy5wX0FuZEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTthOmRve3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2k9PUdiJiYoaD0xKTtzd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEdiLHAuRk9MTE9XX09SX2luX3BfT3JFeHByNTU2Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQW5kRXhwcl9pbl9wX09yRXhwcjU1NjcpLGY9dGhpcy5wX0FuZEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfQW5kRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQW5kRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0FuZEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FuZEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0FuZEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29tcGFyaXNvbkV4cHJfaW5fcF9BbmRFeHByNTU5NiksZT10aGlzLnBfQ29tcGFyaXNvbkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTthOmRve3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2k9PXgmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseCxwLkZPTExPV19BTkRfaW5fcF9BbmRFeHByNTYwMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29tcGFyaXNvbkV4cHJfaW5fcF9BbmRFeHByNTYwNiksZj10aGlzLnBfQ29tcGFyaXNvbkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfQ29tcGFyaXNvbkV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0NvbXBhcmlzb25FeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQ29tcGFyaXNvbkV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NvbXBhcmlzb25FeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Db21wYXJpc29uRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRDb250YWluc0V4cHJfaW5fcF9Db21wYXJpc29uRXhwcjU2MzYpLGM9dGhpcy5wX0ZUQ29udGFpbnNFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7dmFyIGk9MixqPXRoaXMuaW5wdXQuTEEoMSk7aWYoaj09JHx8aj09Z2J8fGo9PWlifHxqPT1xYnx8aj09dGJ8fGo9PXdifHxqPT1BYnx8aj09cmV8fGo9PXRlfHxqPj1DZSYmajw9SGUpaT0xO3N3aXRjaChpKXtjYXNlIDE6dmFyIGs9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSAkOmNhc2UgZ2I6Y2FzZSBpYjpjYXNlIHRiOmNhc2Ugd2I6Y2FzZSBBYjprPTE7YnJlYWs7Y2FzZSByZTpjYXNlIHRlOmNhc2UgQ2U6Y2FzZSBEZTpjYXNlIEVlOmNhc2UgRmU6az0yO2JyZWFrO2Nhc2UgcWI6Y2FzZSBHZTpjYXNlIEhlOms9MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGw9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw5MiwwLHRoaXMuaW5wdXQpO3Rocm93IGx9c3dpdGNoKGspe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYWx1ZUNvbXBfaW5fcF9Db21wYXJpc29uRXhwcjU2NDEpLGU9dGhpcy5wX1ZhbHVlQ29tcCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9HZW5lcmFsQ29tcF9pbl9wX0NvbXBhcmlzb25FeHByNTY0NSksZj10aGlzLnBfR2VuZXJhbENvbXAoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTm9kZUNvbXBfaW5fcF9Db21wYXJpc29uRXhwcjU2NDkpLGc9dGhpcy5wX05vZGVDb21wKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSl9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRDb250YWluc0V4cHJfaW5fcF9Db21wYXJpc29uRXhwcjU2NTIpLGg9dGhpcy5wX0ZUQ29udGFpbnNFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobSl7aWYoIShtIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBtO3RoaXMucmVwb3J0RXJyb3IobSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG0pfWZpbmFsbHl7fXJldHVybiBhfSxwX1JhbmdlRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUmFuZ2VFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUmFuZ2VFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9SYW5nZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1JhbmdlRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9SYW5nZUV4cHI1NjgxKSxlPXRoaXMucF9BZGRpdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTt2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpPT1fYiYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfYixwLkZPTExPV19UT19pbl9wX1JhbmdlRXhwcjU2ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX1JhbmdlRXhwcjU2OTEpLGY9dGhpcy5wX0FkZGl0aXZlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9BZGRpdGl2ZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0FkZGl0aXZlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0FkZGl0aXZlRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQWRkaXRpdmVFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9BZGRpdGl2ZUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTXVsdGlwbGljYXRpdmVFeHByX2luX3BfQWRkaXRpdmVFeHByNTcyMCksZT10aGlzLnBfTXVsdGlwbGljYXRpdmVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YTpkb3t2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpPj1BZSYmaTw9QmUmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6dmFyIGo9MixrPXRoaXMuaW5wdXQuTEEoMSk7aWYoaz09QWUpaj0xO2Vsc2V7aWYoayE9QmUpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGw9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw5NSwwLHRoaXMuaW5wdXQpO3Rocm93IGx9aj0yfXN3aXRjaChqKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQWUscC5GT0xMT1dfUExVU19pbl9wX0FkZGl0aXZlRXhwcjU3MjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFvKGMpO2JyZWFrO2Nhc2UgMjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxCZSxwLkZPTExPV19NSU5VU19pbl9wX0FkZGl0aXZlRXhwcjU3MzUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFvKGMpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX011bHRpcGxpY2F0aXZlRXhwcl9pbl9wX0FkZGl0aXZlRXhwcjU3NDApLGY9dGhpcy5wX011bHRpcGxpY2F0aXZlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG0pe2lmKCEobSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbTt0aGlzLnJlcG9ydEVycm9yKG0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG0pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxtKX1maW5hbGx5e31yZXR1cm4gYX0scF9NdWx0aXBsaWNhdGl2ZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX011bHRpcGxpY2F0aXZlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX011bHRpcGxpY2F0aXZlRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTXVsdGlwbGljYXRpdmVFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9NdWx0aXBsaWNhdGl2ZUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9VbmlvbkV4cHJfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1NzY5KSxmPXRoaXMucF9VbmlvbkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2lmKGs9PVN8fGs9PWpifHxrPT14Ynx8az09emUpaj0xO3N3aXRjaChqKXtjYXNlIDE6dmFyIGw9MixtPXRoaXMuaW5wdXQuTEEoMSk7aWYobT09emUpbD0xO2Vsc2V7aWYobSE9UyYmbSE9amImJm0hPXhiKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBuPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsOTgsMCx0aGlzLmlucHV0KTt0aHJvdyBufWw9Mn1zd2l0Y2gobCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHplLHAuRk9MTE9XX1NUQVJfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1Nzc2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hbyhjKTticmVhaztjYXNlIDI6dmFyIG89Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBTOm89MTticmVhaztjYXNlIGpiOm89MjticmVhaztjYXNlIHhiOm89MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIG49bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw5NywwLHRoaXMuaW5wdXQpO3Rocm93IG59c3dpdGNoKG8pe2Nhc2UgMTplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxTLHAuRk9MTE9XX0RJVl9pbl9wX011bHRpcGxpY2F0aXZlRXhwcjU3ODUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSk7YnJlYWs7Y2FzZSAyOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGpiLHAuRk9MTE9XX0lESVZfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1NzkxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpO2JyZWFrO2Nhc2UgMzplPXRoaXMubWF0Y2godGhpcy5pbnB1dCx4YixwLkZPTExPV19NT0RfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1Nzk3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKX10aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9VbmlvbkV4cHJfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1ODAzKSxnPXRoaXMucF9VbmlvbkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChxKXtpZighKHEgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHE7dGhpcy5yZXBvcnRFcnJvcihxKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxxKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfVW5pb25FeHByX3JldHVybjpmdW5jdGlvbigpe3AucF9VbmlvbkV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9VbmlvbkV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1VuaW9uRXhwcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVW5pb25FeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW50ZXJzZWN0RXhjZXB0RXhwcl9pbl9wX1VuaW9uRXhwcjU4MzIpLGY9dGhpcy5wX0ludGVyc2VjdEV4Y2VwdEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2lmKGs9PWNjfHxrPT1SZSlqPTE7c3dpdGNoKGope2Nhc2UgMTp2YXIgbD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPT1jYylsPTE7ZWxzZXtpZihtIT1SZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEwMCwwLHRoaXMuaW5wdXQpO3Rocm93IG59bD0yfXN3aXRjaChsKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2MscC5GT0xMT1dfVU5JT05faW5fcF9VbmlvbkV4cHI1ODM5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTticmVhaztjYXNlIDI6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUmUscC5GT0xMT1dfVkJBUl9pbl9wX1VuaW9uRXhwcjU4NDUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSl9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW50ZXJzZWN0RXhjZXB0RXhwcl9pbl9wX1VuaW9uRXhwcjU4NDgpLGc9dGhpcy5wX0ludGVyc2VjdEV4Y2VwdEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGF9LHBfSW50ZXJzZWN0RXhjZXB0RXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSW50ZXJzZWN0RXhjZXB0RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ludGVyc2VjdEV4Y2VwdEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ludGVyc2VjdEV4Y2VwdEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ludGVyc2VjdEV4Y2VwdEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW5zdGFuY2VvZkV4cHJfaW5fcF9JbnRlcnNlY3RFeGNlcHRFeHByNTg3NyksZT10aGlzLnBfSW5zdGFuY2VvZkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTthOmRve3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PWFifHxpPT1wYiloPTE7c3dpdGNoKGgpe2Nhc2UgMTp2YXIgaj0yLGs9dGhpcy5pbnB1dC5MQSgxKTtpZihrPT1wYilqPTE7ZWxzZXtpZihrIT1hYil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEwMiwwLHRoaXMuaW5wdXQpO3Rocm93IGx9aj0yfXN3aXRjaChqKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGIscC5GT0xMT1dfSU5URVJTRUNUX2luX3BfSW50ZXJzZWN0RXhjZXB0RXhwcjU4ODQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGFiLHAuRk9MTE9XX0VYQ0VQVF9pbl9wX0ludGVyc2VjdEV4Y2VwdEV4cHI1ODkwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JbnN0YW5jZW9mRXhwcl9pbl9wX0ludGVyc2VjdEV4Y2VwdEV4cHI1ODk1KSxmPXRoaXMucF9JbnN0YW5jZW9mRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG0pe2lmKCEobSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbTt0aGlzLnJlcG9ydEVycm9yKG0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG0pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxtKX1maW5hbGx5e31yZXR1cm4gYX0scF9JbnN0YW5jZW9mRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSW5zdGFuY2VvZkV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JbnN0YW5jZW9mRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW5zdGFuY2VvZkV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0luc3RhbmNlb2ZFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1RyZWF0RXhwcl9pbl9wX0luc3RhbmNlb2ZFeHByNTkyNCksZT10aGlzLnBfVHJlYXRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09b2ImJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2IscC5GT0xMT1dfSU5TVEFOQ0VfaW5fcF9JbnN0YW5jZW9mRXhwcjU5MzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEViLHAuRk9MTE9XX09GX2luX3BfSW5zdGFuY2VvZkV4cHI1OTM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9JbnN0YW5jZW9mRXhwcjU5NDApLGY9dGhpcy5wX1NlcXVlbmNlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9UcmVhdEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1RyZWF0RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1RyZWF0RXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHJlYXRFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9UcmVhdEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ2FzdGFibGVFeHByX2luX3BfVHJlYXRFeHByNTk2OCksZT10aGlzLnBfQ2FzdGFibGVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09YWMmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYWMscC5GT0xMT1dfVFJFQVRfaW5fcF9UcmVhdEV4cHI1OTc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5LHAuRk9MTE9XX0FTX2luX3BfVHJlYXRFeHByNTk4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfVHJlYXRFeHByNTk4NCksZj10aGlzLnBfU2VxdWVuY2VUeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0Nhc3RhYmxlRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ2FzdGFibGVFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQ2FzdGFibGVFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9DYXN0YWJsZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0Nhc3RhYmxlRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9DYXN0RXhwcl9pbl9wX0Nhc3RhYmxlRXhwcjYwMjEpLGU9dGhpcy5wX0Nhc3RFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09SCYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxILHAuRk9MTE9XX0NBU1RBQkxFX2luX3BfQ2FzdGFibGVFeHByNjAyNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseSxwLkZPTExPV19BU19pbl9wX0Nhc3RhYmxlRXhwcjYwMzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1NpbmdsZVR5cGVfaW5fcF9DYXN0YWJsZUV4cHI2MDM3KSxmPXRoaXMucF9TaW5nbGVUeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0Nhc3RFeHByX3JldHVybjpmdW5jdGlvbigpe3AucF9DYXN0RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0Nhc3RFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9DYXN0RXhwcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQ2FzdEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVW5hcnlFeHByX2luX3BfQ2FzdEV4cHI2MDc0KSxlPXRoaXMucF9VbmFyeUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTt2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpPT1HJiYoaD0xKTtzd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEcscC5GT0xMT1dfQ0FTVF9pbl9wX0Nhc3RFeHByNjA4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseSxwLkZPTExPV19BU19pbl9wX0Nhc3RFeHByNjA4Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2luZ2xlVHlwZV9pbl9wX0Nhc3RFeHByNjA5MCksZj10aGlzLnBfU2luZ2xlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9VbmFyeUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1VuYXJ5RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1VuYXJ5RXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVW5hcnlFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9VbmFyeUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBQTFVTIiksaD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIE1JTlVTIiksaT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1ZhbHVlRXhwciIpO3RyeXthOmRve3ZhciBqPTMsaz10aGlzLmlucHV0LkxBKDEpO2s9PUFlP2o9MTprPT1CZSYmKGo9Mik7c3dpdGNoKGope2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBZSxwLkZPTExPV19QTFVTX2luX3BfVW5hcnlFeHByNjEyMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZnLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYW8oYyk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEJlLHAuRk9MTE9XX01JTlVTX2luX3BfVW5hcnlFeHByNjEzMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZoLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYW8oYyk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFsdWVFeHByX2luX3BfVW5hcnlFeHByNjEzNSksZT10aGlzLnBfVmFsdWVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZpLmFkZChlLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgbD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbT10aGlzLmFkYXB0b3IubmlsKCk7bT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGRnLCJVbmFyeUV4cHIiKSxtKTt3aGlsZShnLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobSxnLm5leHROb2RlKCkpO2cucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobSxpLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0pLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbjt0aGlzLnJlcG9ydEVycm9yKG4pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG4pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxuKX1maW5hbGx5e31yZXR1cm4gYX0scF9WYWx1ZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1ZhbHVlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1ZhbHVlRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVmFsdWVFeHByOmZ1bmN0aW9uKCl7dmFyIGI9bmV3IHAucF9WYWx1ZUV4cHJfcmV0dXJuO2Iuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXt2YXIgaD0zO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIGVjOnZhciBpPXRoaXMuaW5wdXQuTEEoMik7aWYoaT09c2ImJnRoaXMuc3lucHJlZDZfWFF1ZXJ5UGFyc2VyKCkpaD0xO2Vsc2UgaWYoaT09WGImJnRoaXMuc3lucHJlZDZfWFF1ZXJ5UGFyc2VyKCkpaD0xO2Vsc2UgaWYoaT09SWMmJnRoaXMuc3lucHJlZDZfWFF1ZXJ5UGFyc2VyKCkpaD0xO2Vsc2UgaWYoaT09bmUmJnRoaXMuc3lucHJlZDZfWFF1ZXJ5UGFyc2VyKCkpaD0xO2Vsc2V7aWYoIShpPT1hfHxpPj14JiZpPD16fHxpPj1GJiZpPD1IfHxpPT1KfHxpPT1PfHxpPj1SJiZpPD1TfHxpPT1YfHxpPT0kfHxpPT1hYnx8aT09ZWJ8fGk9PWdifHxpPj1pYiYmaTw9amJ8fGk+PW9iJiZpPD1xYnx8aT09dGJ8fGk+PXZiJiZpPD14Ynx8aT09QWJ8fGk+PUdiJiZpPD1IYnx8aT49UGImJmk8PVFifHxpPT1XYnx8aT49X2ImJmk8PWFjfHxpPT1jY3x8aT09aGN8fGk9PW1jfHxpPj1xYyYmaTw9cmN8fGk9PXljfHxpPT1FY3x8aT49TWMmJmk8PU5jfHxpPT1TY3x8aT09VWN8fGk9PWFkfHxpPT1kZHx8aT09eWR8fGk9PUZkfHxpPT1KZHx8aT09UWR8fGk+PWplJiZpPD1sZXx8aT49b2UmJmk8PXJlfHxpPT10ZXx8aT09eGV8fGk+PXplJiZpPD1KZXx8aT09TWV8fGk+PVFlJiZpPD1SZSkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGI7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMDksMSx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1icmVhaztjYXNlIHY6Y2FzZSB3OmNhc2UgeDpjYXNlIHk6Y2FzZSB6OmNhc2UgQTpjYXNlIEI6Y2FzZSBDOmNhc2UgRDpjYXNlIEU6Y2FzZSBGOmNhc2UgRzpjYXNlIEg6Y2FzZSBJOmNhc2UgSjpjYXNlIEs6Y2FzZSBMOmNhc2UgTTpjYXNlIE46Y2FzZSBPOmNhc2UgUDpjYXNlIFE6Y2FzZSBSOmNhc2UgUzpjYXNlIFQ6Y2FzZSBVOmNhc2UgVjpjYXNlIFc6Y2FzZSBYOmNhc2UgWTpjYXNlIFo6Y2FzZSAkOmNhc2UgXzpjYXNlIGFiOmNhc2UgYmI6Y2FzZSBjYjpjYXNlIGRiOmNhc2UgZWI6Y2FzZSBmYjpjYXNlIGdiOmNhc2UgaGI6Y2FzZSBpYjpjYXNlIGpiOmNhc2Uga2I6Y2FzZSBsYjpjYXNlIG1iOmNhc2UgbmI6Y2FzZSBvYjpjYXNlIHBiOmNhc2UgcWI6Y2FzZSByYjpjYXNlIHNiOmNhc2UgdGI6Y2FzZSB1YjpjYXNlIHZiOmNhc2Ugd2I6Y2FzZSB4YjpjYXNlIHliOmNhc2UgemI6Y2FzZSBBYjpjYXNlIEJiOmNhc2UgQ2I6Y2FzZSBEYjpjYXNlIEViOmNhc2UgRmI6Y2FzZSBHYjpjYXNlIEhiOmNhc2UgSWI6Y2FzZSBKYjpjYXNlIEtiOmNhc2UgTGI6Y2FzZSBNYjpjYXNlIE5iOmNhc2UgT2I6Y2FzZSBQYjpjYXNlIFFiOmNhc2UgUmI6Y2FzZSBTYjpjYXNlIFRiOmNhc2UgVWI6Y2FzZSBWYjpjYXNlIFdiOmNhc2UgWGI6Y2FzZSBZYjpjYXNlIFpiOmNhc2UgJGI6Y2FzZSBfYjpjYXNlIGFjOmNhc2UgYmM6Y2FzZSBjYzpjYXNlIGRjOmNhc2UgZmM6Y2FzZSBnYzpjYXNlIGhjOmNhc2UgaWM6Y2FzZSBqYzpjYXNlIGtjOmNhc2UgbGM6Y2FzZSBtYzpjYXNlIG5jOmNhc2Ugb2M6Y2FzZSBwYzpjYXNlIHFjOmNhc2UgcmM6Y2FzZSBzYzpjYXNlIHRjOmNhc2UgdWM6Y2FzZSB2YzpjYXNlIHdjOmNhc2UgeGM6Y2FzZSB5YzpjYXNlIHpjOmNhc2UgQWM6Y2FzZSBCYzpjYXNlIENjOmNhc2UgRGM6Y2FzZSBFYzpjYXNlIEZjOmNhc2UgR2M6Y2FzZSBIYzpjYXNlIEljOmNhc2UgSmM6Y2FzZSBLYzpjYXNlIExjOmNhc2UgTWM6Y2FzZSBOYzpjYXNlIE9jOmNhc2UgUGM6Y2FzZSBRYzpjYXNlIFJjOmNhc2UgU2M6Y2FzZSBUYzpjYXNlIFVjOmNhc2UgVmM6Y2FzZSBXYzpjYXNlIFhjOmNhc2UgWWM6Y2FzZSBaYzpjYXNlICRjOmNhc2UgX2M6Y2FzZSBhZDpjYXNlIGJkOmNhc2UgY2Q6Y2FzZSBkZDpjYXNlIGVkOmNhc2UgZmQ6Y2FzZSBnZDpjYXNlIGhkOmNhc2UgaWQ6Y2FzZSBqZDpjYXNlIGtkOmNhc2UgbGQ6Y2FzZSBtZDpjYXNlIG5kOmNhc2Ugb2Q6Y2FzZSBwZDpjYXNlIHFkOmNhc2UgcmQ6Y2FzZSBzZDpjYXNlIHRkOmNhc2UgdWQ6Y2FzZSB2ZDpjYXNlIHdkOmNhc2UgeGQ6Y2FzZSB5ZDpjYXNlIHpkOmNhc2UgQWQ6Y2FzZSBCZDpjYXNlIENkOmNhc2UgRGQ6Y2FzZSBFZDpjYXNlIEZkOmNhc2UgR2Q6Y2FzZSBIZDpjYXNlIElkOmNhc2UgSmQ6Y2FzZSBLZDpjYXNlIExkOmNhc2UgTWQ6Y2FzZSBOZDpjYXNlIE9kOmNhc2UgUGQ6Y2FzZSBRZDpjYXNlIFJkOmNhc2UgU2Q6Y2FzZSBUZDpjYXNlIFVkOmNhc2UgVmQ6Y2FzZSBXZDpjYXNlIFhkOmNhc2UgWWQ6Y2FzZSBaZDpjYXNlICRkOmNhc2UgX2Q6Y2FzZSBhZTpjYXNlIGJlOmNhc2UgY2U6Y2FzZSBkZTpjYXNlIGVlOmNhc2UgZmU6Y2FzZSBnZTpjYXNlIGhlOmNhc2UgaWU6Y2FzZSBrZTpjYXNlIG1lOmNhc2UgbmU6Y2FzZSB6ZTpjYXNlIENlOmNhc2UgSWU6Y2FzZSBKZTpjYXNlIEtlOmNhc2UgTGU6Y2FzZSBZZTpjYXNlIF9lOmNhc2UgYWY6Y2FzZSBkZjpjYXNlIG1mOmNhc2UgbmY6Y2FzZSBvZjpjYXNlIHBmOmNhc2UgcWY6Y2FzZSB3ZzpoPTI7YnJlYWs7Y2FzZSBsZjpoPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxiO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTA5LDAsdGhpcy5pbnB1dCk7dGhyb3cgan1zd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1ZhbGlkYXRlRXhwcl9pbl9wX1ZhbHVlRXhwcjYyMDUpLGU9dGhpcy5wX1ZhbGlkYXRlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpjPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9QYXRoRXhwcl9pbl9wX1ZhbHVlRXhwcjYyMTcpLGY9dGhpcy5wX1BhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOmM9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4dGVuc2lvbkV4cHJfaW5fcF9WYWx1ZUV4cHI2MjI5KSxnPXRoaXMucF9FeHRlbnNpb25FeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnLmdldFRyZWUoKSl9Yi5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGIudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYi50cmVlLGIuc3RhcnQsYi5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYi50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxiLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBifSxwX0dlbmVyYWxDb21wX3JldHVybjpmdW5jdGlvbigpe3AucF9HZW5lcmFsQ29tcF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0dlbmVyYWxDb21wX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9HZW5lcmFsQ29tcDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfR2VuZXJhbENvbXBfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBmPTY7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgcmU6Zj0xO2JyZWFrO2Nhc2UgdGU6Zj0yO2JyZWFrO2Nhc2UgQ2U6Zj0zO2JyZWFrO2Nhc2UgRWU6Zj00O2JyZWFrO2Nhc2UgRGU6Zj01O2JyZWFrO2Nhc2UgRmU6Zj02O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgZz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDExMCwwLHRoaXMuaW5wdXQpO3Rocm93IGd9c3dpdGNoKGYpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxyZSxwLkZPTExPV19FUVVBTF9pbl9wX0dlbmVyYWxDb21wNjI1OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdGUscC5GT0xMT1dfTk9URVFVQUxfaW5fcF9HZW5lcmFsQ29tcDYyNjQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSk7YnJlYWs7Y2FzZSAzOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LENlLHAuRk9MTE9XX1NNQUxMRVJfaW5fcF9HZW5lcmFsQ29tcDYyNzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSk7YnJlYWs7Y2FzZSA0OmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEVlLHAuRk9MTE9XX1NNQUxMRVJFUV9pbl9wX0dlbmVyYWxDb21wNjI3Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDU6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRGUscC5GT0xMT1dfR1JFQVRFUl9pbl9wX0dlbmVyYWxDb21wNjI4Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDY6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRmUscC5GT0xMT1dfR1JFQVRFUkVRX2luX3BfR2VuZXJhbENvbXA2Mjg4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hbyhjKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfVmFsdWVDb21wX3JldHVybjpmdW5jdGlvbigpe3AucF9WYWx1ZUNvbXBfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9WYWx1ZUNvbXBfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ZhbHVlQ29tcDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVmFsdWVDb21wX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgZj02O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlICQ6Zj0xO2JyZWFrO2Nhc2UgQWI6Zj0yO2JyZWFrO2Nhc2Ugd2I6Zj0zO2JyZWFrO2Nhc2UgdGI6Zj00O2JyZWFrO2Nhc2UgaWI6Zj01O2JyZWFrO2Nhc2UgZ2I6Zj02O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgZz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDExMSwwLHRoaXMuaW5wdXQpO3Rocm93IGd9c3dpdGNoKGYpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCwkLHAuRk9MTE9XX0VRX2luX3BfVmFsdWVDb21wNjMyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQWIscC5GT0xMT1dfTkVfaW5fcF9WYWx1ZUNvbXA2MzI2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpO2JyZWFrO2Nhc2UgMzpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx3YixwLkZPTExPV19MVF9pbl9wX1ZhbHVlQ29tcDYzMzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSk7YnJlYWs7Y2FzZSA0OmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHRiLHAuRk9MTE9XX0xFX2luX3BfVmFsdWVDb21wNjMzOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKTticmVhaztjYXNlIDU6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaWIscC5GT0xMT1dfR1RfaW5fcF9WYWx1ZUNvbXA2MzQ0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpO2JyZWFrO2Nhc2UgNjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxnYixwLkZPTExPV19HRV9pbl9wX1ZhbHVlQ29tcDYzNTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gYX0scF9Ob2RlQ29tcF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfTm9kZUNvbXBfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Ob2RlQ29tcF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTm9kZUNvbXA6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX05vZGVDb21wX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7dmFyIGo9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBxYjpqPTE7YnJlYWs7Y2FzZSBHZTpqPTI7YnJlYWs7Y2FzZSBIZTpqPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBrPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTEyLDAsdGhpcy5pbnB1dCk7dGhyb3cga31zd2l0Y2goail7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHFiLHAuRk9MTE9XX0lTX2luX3BfTm9kZUNvbXA2MzgxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsR2UscC5GT0xMT1dfU01BTExFUl9TTUFMTEVSX2luX3BfTm9kZUNvbXA2Mzg3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxIZSxwLkZPTExPV19HUkVBVEVSX0dSRUFURVJfaW5fcF9Ob2RlQ29tcDYzOTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBhfSxwX1ZhbGlkYXRlRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVmFsaWRhdGVFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfVmFsaWRhdGVFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9WYWxpZGF0ZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1ZhbGlkYXRlRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGVjLHAuRk9MTE9XX1ZBTElEQVRFX2luX3BfVmFsaWRhdGVFeHByNjQxOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyk7dmFyIG09MyxuPXRoaXMuaW5wdXQuTEEoMSk7bj09c2J8fG49PVhiP209MTpuPT1JYyYmKG09Mik7c3dpdGNoKG0pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYWxpZGF0aW9uTW9kZV9pbl9wX1ZhbGlkYXRlRXhwcjY0MjUpLGc9dGhpcy5wX1ZhbGlkYXRpb25Nb2RlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEljLHAuRk9MTE9XX1RZUEVfaW5fcF9WYWxpZGF0ZUV4cHI2NDMxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UeXBlTmFtZV9pbl9wX1ZhbGlkYXRlRXhwcjY0MzUpLGg9dGhpcy5wX1R5cGVOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSl9ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcF9WYWxpZGF0ZUV4cHI2NDQwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcF9WYWxpZGF0ZUV4cHI2NDQyKSxpPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZSxwLkZPTExPV19SQlJBQ0tFVF9pbl9wX1ZhbGlkYXRlRXhwcjY0NDUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobyl7aWYoIShvIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBvO3RoaXMucmVwb3J0RXJyb3IobyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG8pfWZpbmFsbHl7fXJldHVybiBhfSxwX1ZhbGlkYXRpb25Nb2RlX3JldHVybjpmdW5jdGlvbigpe3AucF9WYWxpZGF0aW9uTW9kZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1ZhbGlkYXRpb25Nb2RlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9WYWxpZGF0aW9uTW9kZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVmFsaWRhdGlvbk1vZGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBmPTIsZz10aGlzLmlucHV0LkxBKDEpO2lmKGc9PXNiKWY9MTtlbHNle2lmKGchPVhiKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTE0LDAsdGhpcy5pbnB1dCk7dGhyb3cgaH1mPTJ9c3dpdGNoKGYpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzYixwLkZPTExPV19MQVhfaW5fcF9WYWxpZGF0aW9uTW9kZTY0NzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFhiLHAuRk9MTE9XX1NUUklDVF9pbl9wX1ZhbGlkYXRpb25Nb2RlNjQ4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBhfSxwX0V4dGVuc2lvbkV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0V4dGVuc2lvbkV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9FeHRlbnNpb25FeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FeHRlbnNpb25FeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9FeHRlbnNpb25FeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBrPTA7YTpkb3t2YXIgbD0yLG09dGhpcy5pbnB1dC5MQSgxKTttPT1sZiYmKGw9MSk7c3dpdGNoKGwpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZixwLkZPTExPV19MX1ByYWdtYV9pbl9wX0V4dGVuc2lvbkV4cHI2NTA5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpO2JyZWFrO2RlZmF1bHQ6aWYoaz49MSlicmVhayBhO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIG49bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMTE1LHRoaXMuaW5wdXQpO3Rocm93IG59aysrfXdoaWxlKCEwKTtlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wX0V4dGVuc2lvbkV4cHI2NTEyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpO3ZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO2lmKHE+PXYmJnE8PWllfHxxPT1rZXx8cT49bWUmJnE8PW5lfHxxPj16ZSYmcTw9Q2V8fHE+PUllJiZxPD1MZXx8cT09WWV8fHE+PV9lJiZxPD1hZnx8cT09ZGZ8fHE+PWxmJiZxPD1xZnx8cT09d2cpbz0xO3N3aXRjaChvKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX0V4dGVuc2lvbkV4cHI2NTE0KSxnPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKX1mPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZSxwLkZPTExPV19SQlJBQ0tFVF9pbl9wX0V4dGVuc2lvbkV4cHI2NTE4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcjt0aGlzLnJlcG9ydEVycm9yKHIpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHIpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxyKX1maW5hbGx5e31yZXR1cm4gYX0scF9QYXRoRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUGF0aEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9QYXRoRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUGF0aEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1BhdGhFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbDt0cnl7dmFyIG09NDttPXRoaXMuZGZhMTE3LnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKG0pe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJZSxwLkZPTExPV19TTEFTSF9pbl9wX1BhdGhFeHByNjU2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9SZWxhdGl2ZVBhdGhFeHByX2luX3BfUGF0aEV4cHI2NTYzKSxnPXRoaXMucF9SZWxhdGl2ZVBhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEllLHAuRk9MTE9XX1NMQVNIX2luX3BfUGF0aEV4cHI2NTc2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxKZSxwLkZPTExPV19TTEFTSF9TTEFTSF9pbl9wX1BhdGhFeHByNjU4OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9SZWxhdGl2ZVBhdGhFeHByX2luX3BfUGF0aEV4cHI2NTkwKSxoPXRoaXMucF9SZWxhdGl2ZVBhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1JlbGF0aXZlUGF0aEV4cHJfaW5fcF9QYXRoRXhwcjY2MDIpLGk9dGhpcy5wX1JlbGF0aXZlUGF0aEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG47dGhpcy5yZXBvcnRFcnJvcihuKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxuKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbil9ZmluYWxseXt9cmV0dXJuIGF9LHBfUmVsYXRpdmVQYXRoRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUmVsYXRpdmVQYXRoRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1JlbGF0aXZlUGF0aEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1JlbGF0aXZlUGF0aEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1JlbGF0aXZlUGF0aEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RlcEV4cHJfaW5fcF9SZWxhdGl2ZVBhdGhFeHByNjYzMCksZT10aGlzLnBfU3RlcEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTthOmRve3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2k+PUllJiZpPD1KZSYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMuaW5wdXQuTFQoMSk7aWYoISh0aGlzLmlucHV0LkxBKDEpPj1JZSYmdGhpcy5pbnB1dC5MQSgxKTw9SmUpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IGp9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix0aGlzLmFkYXB0b3IuY3JlYXRlKGMpKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RlcEV4cHJfaW5fcF9SZWxhdGl2ZVBhdGhFeHByNjY0MSksZj10aGlzLnBfU3RlcEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU3RlcEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1N0ZXBFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfU3RlcEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N0ZXBFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9TdGVwRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGw7dHJ5e3ZhciBqPTY7aj10aGlzLmRmYTExOS5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChqKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUG9zdGZpeEV4cHJfaW5fcF9TdGVwRXhwcjY2OTUpLGM9dGhpcy5wX1Bvc3RmaXhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2ODA5KSxlPXRoaXMucF9Qb3N0Zml4RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BeGlzU3RlcF9pbl9wX1N0ZXBFeHByNjgyNyksZj10aGlzLnBfQXhpc1N0ZXAoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUG9zdGZpeEV4cHJfaW5fcF9TdGVwRXhwcjY4NDgpLGc9dGhpcy5wX1Bvc3RmaXhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2ODY2KSxoPXRoaXMucF9Qb3N0Zml4RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BeGlzU3RlcF9pbl9wX1N0ZXBFeHByNjg3OCksaT10aGlzLnBfQXhpc1N0ZXAoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQXhpc1N0ZXBfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0F4aXNTdGVwX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQXhpc1N0ZXBfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0F4aXNTdGVwOmZ1bmN0aW9uKCl7dmFyIGI9bmV3IHAucF9BeGlzU3RlcF9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2M9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBoPTI7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgS2I6dmFyIGk9dGhpcy5pbnB1dC5MQSgyKTtpZihpPT1OZSloPTE7ZWxzZXtpZighKGk9PWF8fGk+PXgmJmk8PXp8fGk+PUUmJmk8PUh8fGk9PUp8fGk9PU98fGk+PVImJmk8PVN8fGk9PVh8fGk9PSR8fGk9PWFifHxpPT1lYnx8aT09Z2J8fGk+PWliJiZpPD1qYnx8aT49b2ImJmk8PXFifHxpPT10Ynx8aT49dmImJmk8PXhifHxpPT1BYnx8aT49R2ImJmk8PUhifHxpPj1QYiYmaTw9UWJ8fGk9PVdifHxpPj1fYiYmaTw9YWN8fGk9PWNjfHxpPT1oY3x8aT09bWN8fGk+PXFjJiZpPD1yY3x8aT09eWN8fGk9PUVjfHxpPj1NYyYmaTw9TmN8fGk9PVNjfHxpPT1VY3x8aT09YWR8fGk9PWRkfHxpPT15ZHx8aT09RmR8fGk9PUpkfHxpPT1RZHx8aT09amV8fGk9PWxlfHxpPj1vZSYmaTw9cmV8fGk9PXRlfHxpPT14ZXx8aT49emUmJmk8PUplfHxpPT1NZXx8aT49UWUmJmk8PVJlKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYjt2YXIgaj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyMCwxLHRoaXMuaW5wdXQpO3Rocm93IGp9aD0yfWJyZWFrO2Nhc2Ugdjp2YXIgaz10aGlzLmlucHV0LkxBKDIpO2lmKGs9PU5lKWg9MTtlbHNle2lmKCEoaz09YXx8az49eCYmazw9enx8az49RSYmazw9SHx8az09Snx8az09T3x8az49UiYmazw9U3x8az09WHx8az09JHx8az09YWJ8fGs9PWVifHxrPT1nYnx8az49aWImJms8PWpifHxrPj1vYiYmazw9cWJ8fGs9PXRifHxrPj12YiYmazw9eGJ8fGs9PUFifHxrPj1HYiYmazw9SGJ8fGs+PVBiJiZrPD1RYnx8az09V2J8fGs+PV9iJiZrPD1hY3x8az09Y2N8fGs9PWhjfHxrPT1tY3x8az49cWMmJms8PXJjfHxrPT15Y3x8az09RWN8fGs+PU1jJiZrPD1OY3x8az09U2N8fGs9PVVjfHxrPT1hZHx8az09ZGR8fGs9PXlkfHxrPT1GZHx8az09SmR8fGs9PVFkfHxrPT1qZXx8az09bGV8fGs+PW9lJiZrPD1yZXx8az09dGV8fGs9PXhlfHxrPj16ZSYmazw9SmV8fGs9PU1lfHxrPj1RZSYmazw9UmUpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxiO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTIwLDIsdGhpcy5pbnB1dCk7dGhyb3cgan1oPTJ9YnJlYWs7Y2FzZSBNYjp2YXIgbD10aGlzLmlucHV0LkxBKDIpO2lmKGw9PU5lKWg9MTtlbHNle2lmKCEobD09YXx8bD49eCYmbDw9enx8bD49RSYmbDw9SHx8bD09Snx8bD09T3x8bD49UiYmbDw9U3x8bD09WHx8bD09JHx8bD09YWJ8fGw9PWVifHxsPT1nYnx8bD49aWImJmw8PWpifHxsPj1vYiYmbDw9cWJ8fGw9PXRifHxsPj12YiYmbDw9eGJ8fGw9PUFifHxsPj1HYiYmbDw9SGJ8fGw+PVBiJiZsPD1RYnx8bD09V2J8fGw+PV9iJiZsPD1hY3x8bD09Y2N8fGw9PWhjfHxsPT1tY3x8bD49cWMmJmw8PXJjfHxsPT15Y3x8bD09RWN8fGw+PU1jJiZsPD1OY3x8bD09U2N8fGw9PVVjfHxsPT1hZHx8bD09ZGR8fGw9PXlkfHxsPT1GZHx8bD09SmR8fGw9PVFkfHxsPT1qZXx8bD09bGV8fGw+PW9lJiZsPD1yZXx8bD09dGV8fGw9PXhlfHxsPj16ZSYmbDw9SmV8fGw9PU1lfHxsPj1RZSYmbDw9UmUpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxiO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTIwLDMsdGhpcy5pbnB1dCk7dGhyb3cgan1oPTJ9YnJlYWs7Y2FzZSBMYjp2YXIgbT10aGlzLmlucHV0LkxBKDIpO2lmKG09PU5lKWg9MTtlbHNle2lmKCEobT09YXx8bT49eCYmbTw9enx8bT49RSYmbTw9SHx8bT09Snx8bT09T3x8bT49UiYmbTw9U3x8bT09WHx8bT09JHx8bT09YWJ8fG09PWVifHxtPT1nYnx8bT49aWImJm08PWpifHxtPj1vYiYmbTw9cWJ8fG09PXRifHxtPj12YiYmbTw9eGJ8fG09PUFifHxtPj1HYiYmbTw9SGJ8fG0+PVBiJiZtPD1RYnx8bT09V2J8fG0+PV9iJiZtPD1hY3x8bT09Y2N8fG09PWhjfHxtPT1tY3x8bT49cWMmJm08PXJjfHxtPT15Y3x8bT09RWN8fG0+PU1jJiZtPD1OY3x8bT09U2N8fG09PVVjfHxtPT1hZHx8bT09ZGR8fG09PXlkfHxtPT1GZHx8bT09SmR8fG09PVFkfHxtPT1qZXx8bT09bGV8fG0+PW9lJiZtPD1yZXx8bT09dGV8fG09PXhlfHxtPj16ZSYmbTw9SmV8fG09PU1lfHxtPj1RZSYmbTw9UmUpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxiO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTIwLDQsdGhpcy5pbnB1dCk7dGhyb3cgan1oPTJ9YnJlYWs7Y2FzZSB3OnZhciBuPXRoaXMuaW5wdXQuTEEoMik7aWYobj09TmUpaD0xO2Vsc2V7aWYoIShuPT1hfHxuPj14JiZuPD16fHxuPj1FJiZuPD1IfHxuPT1KfHxuPT1PfHxuPj1SJiZuPD1TfHxuPT1YfHxuPT0kfHxuPT1hYnx8bj09ZWJ8fG49PWdifHxuPj1pYiYmbjw9amJ8fG4+PW9iJiZuPD1xYnx8bj09dGJ8fG4+PXZiJiZuPD14Ynx8bj09QWJ8fG4+PUdiJiZuPD1IYnx8bj49UGImJm48PVFifHxuPT1XYnx8bj49X2ImJm48PWFjfHxuPT1jY3x8bj09aGN8fG49PW1jfHxuPj1xYyYmbjw9cmN8fG49PXljfHxuPT1FY3x8bj49TWMmJm48PU5jfHxuPT1TY3x8bj09VWN8fG49PWFkfHxuPT1kZHx8bj09eWR8fG49PUZkfHxuPT1KZHx8bj09UWR8fG49PWplfHxuPT1sZXx8bj49b2UmJm48PXJlfHxuPT10ZXx8bj09eGV8fG4+PXplJiZuPD1KZXx8bj09TWV8fG4+PVFlJiZuPD1SZSkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGI7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMjAsNSx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1icmVhaztjYXNlIExlOmg9MTticmVhaztjYXNlIHg6Y2FzZSB5OmNhc2UgejpjYXNlIEE6Y2FzZSBCOmNhc2UgQzpjYXNlIEQ6Y2FzZSBFOmNhc2UgRjpjYXNlIEc6Y2FzZSBIOmNhc2UgSTpjYXNlIEo6Y2FzZSBLOmNhc2UgTDpjYXNlIE06Y2FzZSBOOmNhc2UgTzpjYXNlIFA6Y2FzZSBROmNhc2UgUjpjYXNlIFM6Y2FzZSBUOmNhc2UgVTpjYXNlIFY6Y2FzZSBXOmNhc2UgWDpjYXNlIFk6Y2FzZSBaOmNhc2UgJDpjYXNlIF86Y2FzZSBhYjpjYXNlIGJiOmNhc2UgY2I6Y2FzZSBkYjpjYXNlIGViOmNhc2UgZmI6Y2FzZSBnYjpjYXNlIGhiOmNhc2UgaWI6Y2FzZSBqYjpjYXNlIGtiOmNhc2UgbGI6Y2FzZSBtYjpjYXNlIG5iOmNhc2Ugb2I6Y2FzZSBwYjpjYXNlIHFiOmNhc2UgcmI6Y2FzZSBzYjpjYXNlIHRiOmNhc2UgdWI6Y2FzZSB2YjpjYXNlIHdiOmNhc2UgeGI6Y2FzZSB5YjpjYXNlIHpiOmNhc2UgQWI6Y2FzZSBCYjpjYXNlIENiOmNhc2UgRGI6Y2FzZSBFYjpjYXNlIEZiOmNhc2UgR2I6Y2FzZSBIYjpjYXNlIEliOmNhc2UgSmI6Y2FzZSBOYjpjYXNlIE9iOmNhc2UgUGI6Y2FzZSBRYjpjYXNlIFJiOmNhc2UgU2I6Y2FzZSBUYjpjYXNlIFViOmNhc2UgVmI6Y2FzZSBXYjpjYXNlIFhiOmNhc2UgWWI6Y2FzZSBaYjpjYXNlICRiOmNhc2UgX2I6Y2FzZSBhYzpjYXNlIGJjOmNhc2UgY2M6Y2FzZSBkYzpjYXNlIGVjOmNhc2UgZmM6Y2FzZSBnYzpjYXNlIGhjOmNhc2UgaWM6Y2FzZSBqYzpjYXNlIGtjOmNhc2UgbGM6Y2FzZSBtYzpjYXNlIG5jOmNhc2Ugb2M6Y2FzZSBwYzpjYXNlIHFjOmNhc2UgcmM6Y2FzZSBzYzpjYXNlIHRjOmNhc2UgdWM6Y2FzZSB2YzpjYXNlIHdjOmNhc2UgeGM6Y2FzZSB5YzpjYXNlIHpjOmNhc2UgQWM6Y2FzZSBCYzpjYXNlIENjOmNhc2UgRGM6Y2FzZSBFYzpjYXNlIEZjOmNhc2UgR2M6Y2FzZSBIYzpjYXNlIEljOmNhc2UgSmM6Y2FzZSBLYzpjYXNlIExjOmNhc2UgTWM6Y2FzZSBOYzpjYXNlIE9jOmNhc2UgUGM6Y2FzZSBRYzpjYXNlIFJjOmNhc2UgU2M6Y2FzZSBUYzpjYXNlIFVjOmNhc2UgVmM6Y2FzZSBXYzpjYXNlIFhjOmNhc2UgWWM6Y2FzZSBaYzpjYXNlIF9jOmNhc2UgYWQ6Y2FzZSBiZDpjYXNlIGNkOmNhc2UgZGQ6Y2FzZSBlZDpjYXNlIGZkOmNhc2UgZ2Q6Y2FzZSBoZDpjYXNlIGlkOmNhc2UgamQ6Y2FzZSBrZDpjYXNlIGxkOmNhc2UgbWQ6Y2FzZSBuZDpjYXNlIG9kOmNhc2UgcGQ6Y2FzZSBxZDpjYXNlIHJkOmNhc2Ugc2Q6Y2FzZSB0ZDpjYXNlIHVkOmNhc2UgdmQ6Y2FzZSB3ZDpjYXNlIHhkOmNhc2UgeWQ6Y2FzZSB6ZDpjYXNlIEFkOmNhc2UgQmQ6Y2FzZSBDZDpjYXNlIERkOmNhc2UgRWQ6Y2FzZSBGZDpjYXNlIEdkOmNhc2UgSGQ6Y2FzZSBJZDpjYXNlIEpkOmNhc2UgS2Q6Y2FzZSBMZDpjYXNlIE1kOmNhc2UgTmQ6Y2FzZSBPZDpjYXNlIFBkOmNhc2UgUWQ6Y2FzZSBSZDpjYXNlIFNkOmNhc2UgVGQ6Y2FzZSBVZDpjYXNlIFZkOmNhc2UgV2Q6Y2FzZSBYZDpjYXNlIFlkOmNhc2UgWmQ6Y2FzZSAkZDpjYXNlIF9kOmNhc2UgYWU6Y2FzZSBiZTpjYXNlIGNlOmNhc2UgZGU6Y2FzZSBlZTpjYXNlIGZlOmNhc2UgZ2U6Y2FzZSBoZTpjYXNlIGllOmNhc2UgemU6Y2FzZSBZZTpjYXNlIF9lOmNhc2UgYWY6Y2FzZSBkZjpjYXNlIHdnOmg9MjticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGI7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMjAsMCx0aGlzLmlucHV0KTt0aHJvdyBqfXN3aXRjaChoKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUmV2ZXJzZVN0ZXBfaW5fcF9BeGlzU3RlcDY5MDUpLGU9dGhpcy5wX1JldmVyc2VTdGVwKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxlLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZvcndhcmRTdGVwX2luX3BfQXhpc1N0ZXA2OTA5KSxmPXRoaXMucF9Gb3J3YXJkU3RlcCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsZi5nZXRUcmVlKCkpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1ByZWRpY2F0ZUxpc3RfaW5fcF9BeGlzU3RlcDY5MTIpLGc9dGhpcy5wX1ByZWRpY2F0ZUxpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGcuZ2V0VHJlZSgpKSxiLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYyksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhiLnRyZWUsYi5zdGFydCxiLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxiLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGIuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGJ9LHBfRm9yd2FyZFN0ZXBfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZvcndhcmRTdGVwX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRm9yd2FyZFN0ZXBfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZvcndhcmRTdGVwOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Gb3J3YXJkU3RlcF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e3ZhciBnPTI7Zz10aGlzLmRmYTEyMS5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChnKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRm9yd2FyZEF4aXNfaW5fcF9Gb3J3YXJkU3RlcDY5MzgpLGM9dGhpcy5wX0ZvcndhcmRBeGlzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTm9kZVRlc3RfaW5fcF9Gb3J3YXJkU3RlcDY5NDApLGU9dGhpcy5wX05vZGVUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0FiYnJldkZvcndhcmRTdGVwX2luX3BfRm9yd2FyZFN0ZXA2OTUyKSxmPXRoaXMucF9BYmJyZXZGb3J3YXJkU3RlcCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gYX0scF9Gb3J3YXJkQXhpc19yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRm9yd2FyZEF4aXNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Gb3J3YXJkQXhpc19yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRm9yd2FyZEF4aXM6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZvcndhcmRBeGlzX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1udWxsLG89bnVsbCxxPW51bGwscj1udWxsLHM9bnVsbCx0PW51bGwsdT1udWxsLHY9bnVsbCx3PW51bGwseD1udWxsLHk9bnVsbCx6PW51bGwsQT1udWxsLEM9bnVsbCxEPW51bGwsRT1udWxsLEY9bnVsbCxHPW51bGw7dHJ5e3ZhciBIPTc7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgSTpIPTE7YnJlYWs7Y2FzZSBQOkg9MjticmVhaztjYXNlIEI6SD0zO2JyZWFrO2Nhc2UgVWI6SD00O2JyZWFrO2Nhc2UgUTpIPTU7YnJlYWs7Y2FzZSBkYjpIPTY7YnJlYWs7Y2FzZSBjYjpIPTc7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBKPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTIyLDAsdGhpcy5pbnB1dCk7dGhyb3cgSn1zd2l0Y2goSCl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEkscC5GT0xMT1dfQ0hJTERfaW5fcF9Gb3J3YXJkQXhpczY5NzgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixzKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTmUscC5GT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczY5ODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix0KSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFAscC5GT0xMT1dfREVTQ0VOREFOVF9pbl9wX0ZvcndhcmRBeGlzNjk5Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHUpKSxnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOZSxwLkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNjk5NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodj10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHYpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksaD10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQixwLkZPTExPV19BVFRSSUJVVEVfaW5fcF9Gb3J3YXJkQXhpczcwMDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHc9dGhpcy5hZGFwdG9yLmNyZWF0ZShoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix3KSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTmUscC5GT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczcwMDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHg9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix4KSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpLGo9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFViLHAuRk9MTE9XX1NFTEZfaW5fcF9Gb3J3YXJkQXhpczcwMjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHk9dGhpcy5hZGFwdG9yLmNyZWF0ZShqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix5KSksaz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTmUscC5GT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczcwMjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHo9dGhpcy5hZGFwdG9yLmNyZWF0ZShrKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix6KSk7YnJlYWs7Y2FzZSA1OmI9dGhpcy5hZGFwdG9yLm5pbCgpLGw9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFEscC5GT0xMT1dfREVTQ0VOREFOVF9PUl9TRUxGX2luX3BfRm9yd2FyZEF4aXM3MDM0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihBPXRoaXMuYWRhcHRvci5jcmVhdGUobCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsQSkpLG09dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5lLHAuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM3MDM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihDPXRoaXMuYWRhcHRvci5jcmVhdGUobSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsQykpO2JyZWFrO2Nhc2UgNjpiPXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkYixwLkZPTExPV19GT0xMT1dJTkdfU0lCTElOR19pbl9wX0ZvcndhcmRBeGlzNzA0OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoRD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLEQpKSxvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOZSxwLkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzA1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoRT10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLEUpKTticmVhaztjYXNlIDc6Yj10aGlzLmFkYXB0b3IubmlsKCkscT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2IscC5GT0xMT1dfRk9MTE9XSU5HX2luX3BfRm9yd2FyZEF4aXM3MDYyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihGPXRoaXMuYWRhcHRvci5jcmVhdGUocSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsRikpLHI9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5lLHAuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM3MDY0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihHPXRoaXMuYWRhcHRvci5jcmVhdGUociksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsRykpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKEspe2lmKCEoSyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgSzt0aGlzLnJlcG9ydEVycm9yKEspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LEspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxLKX1maW5hbGx5e31yZXR1cm4gYX0scF9BYmJyZXZGb3J3YXJkU3RlcF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQWJicmV2Rm9yd2FyZFN0ZXBfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9BYmJyZXZGb3J3YXJkU3RlcF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQWJicmV2Rm9yd2FyZFN0ZXA6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0FiYnJldkZvcndhcmRTdGVwX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGc9MixoPXRoaXMuaW5wdXQuTEEoMSk7aD09WWUmJihnPTEpO3N3aXRjaChnKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWWUscC5GT0xMT1dfQVRUUl9TSUdOX2luX3BfQWJicmV2Rm9yd2FyZFN0ZXA3MDkwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05vZGVUZXN0X2luX3BfQWJicmV2Rm9yd2FyZFN0ZXA3MDkzKSxlPXRoaXMucF9Ob2RlVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gYX0scF9SZXZlcnNlU3RlcF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUmV2ZXJzZVN0ZXBfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9SZXZlcnNlU3RlcF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUmV2ZXJzZVN0ZXA6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1JldmVyc2VTdGVwX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7dmFyIGc9MixoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD49diYmaDw9d3x8aD49S2ImJmg8PU1iKWc9MTtlbHNle2lmKGghPUxlKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTI0LDAsdGhpcy5pbnB1dCk7dGhyb3cgaX1nPTJ9c3dpdGNoKGcpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9SZXZlcnNlQXhpc19pbl9wX1JldmVyc2VTdGVwNzExOSksYz10aGlzLnBfUmV2ZXJzZUF4aXMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Ob2RlVGVzdF9pbl9wX1JldmVyc2VTdGVwNzEyMSksZT10aGlzLnBfTm9kZVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQWJicmV2UmV2ZXJzZVN0ZXBfaW5fcF9SZXZlcnNlU3RlcDcxMzMpLGY9dGhpcy5wX0FiYnJldlJldmVyc2VTdGVwKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX1JldmVyc2VBeGlzX3JldHVybjpmdW5jdGlvbigpe3AucF9SZXZlcnNlQXhpc19yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1JldmVyc2VBeGlzX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9SZXZlcnNlQXhpczpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfUmV2ZXJzZUF4aXNfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwsbz1udWxsLHE9bnVsbCxyPW51bGwscz1udWxsLHQ9bnVsbCx1PW51bGwseD1udWxsLHk9bnVsbCx6PW51bGw7dHJ5e3ZhciBBPTU7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgS2I6QT0xO2JyZWFrO2Nhc2UgdjpBPTI7YnJlYWs7Y2FzZSBNYjpBPTM7YnJlYWs7Y2FzZSBMYjpBPTQ7YnJlYWs7Y2FzZSB3OkE9NTticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIEI9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMjUsMCx0aGlzLmlucHV0KTt0aHJvdyBCfXN3aXRjaChBKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsS2IscC5GT0xMT1dfUEFSRU5UX2luX3BfUmV2ZXJzZUF4aXM3MTU5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihuPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbikpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5lLHAuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MTYxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2LHAuRk9MTE9XX0FOQ0VTVE9SX2luX3BfUmV2ZXJzZUF4aXM3MTczKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihxPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscSkpLGc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5lLHAuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MTc1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihyPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscikpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSxoPXRoaXMubWF0Y2godGhpcy5pbnB1dCxNYixwLkZPTExPV19QUkVDRURJTkdfU0lCTElOR19pbl9wX1JldmVyc2VBeGlzNzE4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHMpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOZSxwLkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX1JldmVyc2VBeGlzNzE4OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHQpKTticmVhaztjYXNlIDQ6Yj10aGlzLmFkYXB0b3IubmlsKCksaj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTGIscC5GT0xMT1dfUFJFQ0VESU5HX2luX3BfUmV2ZXJzZUF4aXM3MjAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsdSkpLGs9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5lLHAuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MjAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih4PXRoaXMuYWRhcHRvci5jcmVhdGUoayksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIseCkpO2JyZWFrO2Nhc2UgNTpiPXRoaXMuYWRhcHRvci5uaWwoKSxsPXRoaXMubWF0Y2godGhpcy5pbnB1dCx3LHAuRk9MTE9XX0FOQ0VTVE9SX09SX1NFTEZfaW5fcF9SZXZlcnNlQXhpczcyMTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHk9dGhpcy5hZGFwdG9yLmNyZWF0ZShsKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix5KSksbT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTmUscC5GT0xMT1dfQ09MT05fQ09MT05faW5fcF9SZXZlcnNlQXhpczcyMTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHo9dGhpcy5hZGFwdG9yLmNyZWF0ZShtKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix6KSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goQyl7aWYoIShDIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBDO3RoaXMucmVwb3J0RXJyb3IoQyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsQyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLEMpfWZpbmFsbHl7fXJldHVybiBhfSxwX0FiYnJldlJldmVyc2VTdGVwX3JldHVybjpmdW5jdGlvbigpe3AucF9BYmJyZXZSZXZlcnNlU3RlcF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0FiYnJldlJldmVyc2VTdGVwX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BYmJyZXZSZXZlcnNlU3RlcDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQWJicmV2UmV2ZXJzZVN0ZXBfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LExlLHAuRk9MTE9XX0RPVF9ET1RfaW5fcF9BYmJyZXZSZXZlcnNlU3RlcDcyNDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBhfSxwX05vZGVUZXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9Ob2RlVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX05vZGVUZXN0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Ob2RlVGVzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfTm9kZVRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e3ZhciBmPTI7Zj10aGlzLmRmYTEyNi5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChmKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfS2luZFRlc3RfaW5fcF9Ob2RlVGVzdDcyNjkpLGM9dGhpcy5wX0tpbmRUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05hbWVUZXN0X2luX3BfTm9kZVRlc3Q3MjczKSxlPXRoaXMucF9OYW1lVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gYX0scF9OYW1lVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfTmFtZVRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9OYW1lVGVzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTmFtZVRlc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX05hbWVUZXN0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7dmFyIGc9MyxoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD09emUmJnRoaXMuc3lucHJlZDEzX1hRdWVyeVBhcnNlcigpKWc9MTtlbHNlIGlmKGg+PXYmJmg8PVpjfHxoPj1fYyYmaDw9aWV8fGg9PWRmfHxoPT13Zyl7dmFyIGk9dGhpcy5pbnB1dC5MQSgyKTtpZihpPT1NZSYmdGhpcy5zeW5wcmVkMTNfWFF1ZXJ5UGFyc2VyKCkpZz0xO2Vsc2UgaWYodGhpcy5zeW5wcmVkMTRfWFF1ZXJ5UGFyc2VyKCkpZz0yO2Vsc2V7aWYoIXRoaXMuc3lucHJlZDE1X1hRdWVyeVBhcnNlcigpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTI3LDIsdGhpcy5pbnB1dCk7dGhyb3cgan1nPTN9fWVsc2UgaWYoaD09YWYmJnRoaXMuc3lucHJlZDEzX1hRdWVyeVBhcnNlcigpKWc9MTtlbHNle2lmKGghPV9lfHwhdGhpcy5zeW5wcmVkMTNfWFF1ZXJ5UGFyc2VyKCkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMjcsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWc9MX1zd2l0Y2goZyl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1dpbGRjYXJkX2luX3BfTmFtZVRlc3Q3MzA1KSxjPXRoaXMucF9XaWxkY2FyZCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX05hbWVUZXN0NzMyNiksZT10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9OYW1lVGVzdDczNDQpLGY9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX1dpbGRjYXJkX3JldHVybjpmdW5jdGlvbigpe3AucF9XaWxkY2FyZF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1dpbGRjYXJkX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9XaWxkY2FyZDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfV2lsZGNhcmRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwsbz1udWxsLHE9bnVsbCxyPW51bGwscz1udWxsO3RoaXMuc2V0V3NFeHBsaWNpdCghMCk7dHJ5e3ZhciB0PTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgemU6dD0xO2JyZWFrO2Nhc2UgdjpjYXNlIHc6Y2FzZSB4OmNhc2UgeTpjYXNlIHo6Y2FzZSBBOmNhc2UgQjpjYXNlIEM6Y2FzZSBEOmNhc2UgRTpjYXNlIEY6Y2FzZSBHOmNhc2UgSDpjYXNlIEk6Y2FzZSBKOmNhc2UgSzpjYXNlIEw6Y2FzZSBNOmNhc2UgTjpjYXNlIE86Y2FzZSBQOmNhc2UgUTpjYXNlIFI6Y2FzZSBTOmNhc2UgVDpjYXNlIFU6Y2FzZSBWOmNhc2UgVzpjYXNlIFg6Y2FzZSBZOmNhc2UgWjpjYXNlICQ6Y2FzZSBfOmNhc2UgYWI6Y2FzZSBiYjpjYXNlIGNiOmNhc2UgZGI6Y2FzZSBlYjpjYXNlIGZiOmNhc2UgZ2I6Y2FzZSBoYjpjYXNlIGliOmNhc2UgamI6Y2FzZSBrYjpjYXNlIGxiOmNhc2UgbWI6Y2FzZSBuYjpjYXNlIG9iOmNhc2UgcGI6Y2FzZSBxYjpjYXNlIHJiOmNhc2Ugc2I6Y2FzZSB0YjpjYXNlIHViOmNhc2UgdmI6Y2FzZSB3YjpjYXNlIHhiOmNhc2UgeWI6Y2FzZSB6YjpjYXNlIEFiOmNhc2UgQmI6Y2FzZSBDYjpjYXNlIERiOmNhc2UgRWI6Y2FzZSBGYjpjYXNlIEdiOmNhc2UgSGI6Y2FzZSBJYjpjYXNlIEpiOmNhc2UgS2I6Y2FzZSBMYjpjYXNlIE1iOmNhc2UgTmI6Y2FzZSBPYjpjYXNlIFBiOmNhc2UgUWI6Y2FzZSBSYjpjYXNlIFNiOmNhc2UgVGI6Y2FzZSBVYjpjYXNlIFZiOmNhc2UgV2I6Y2FzZSBYYjpjYXNlIFliOmNhc2UgWmI6Y2FzZSAkYjpjYXNlIF9iOmNhc2UgYWM6Y2FzZSBiYzpjYXNlIGNjOmNhc2UgZGM6Y2FzZSBlYzpjYXNlIGZjOmNhc2UgZ2M6Y2FzZSBoYzpjYXNlIGljOmNhc2UgamM6Y2FzZSBrYzpjYXNlIGxjOmNhc2UgbWM6Y2FzZSBuYzpjYXNlIG9jOmNhc2UgcGM6Y2FzZSBxYzpjYXNlIHJjOmNhc2Ugc2M6Y2FzZSB0YzpjYXNlIHVjOmNhc2UgdmM6Y2FzZSB3YzpjYXNlIHhjOmNhc2UgeWM6Y2FzZSB6YzpjYXNlIEFjOmNhc2UgQmM6Y2FzZSBDYzpjYXNlIERjOmNhc2UgRWM6Y2FzZSBGYzpjYXNlIEdjOmNhc2UgSGM6Y2FzZSBJYzpjYXNlIEpjOmNhc2UgS2M6Y2FzZSBMYzpjYXNlIE1jOmNhc2UgTmM6Y2FzZSBPYzpjYXNlIFBjOmNhc2UgUWM6Y2FzZSBSYzpjYXNlIFNjOmNhc2UgVGM6Y2FzZSBVYzpjYXNlIFZjOmNhc2UgV2M6Y2FzZSBYYzpjYXNlIFljOmNhc2UgWmM6Y2FzZSBfYzpjYXNlIGFkOmNhc2UgYmQ6Y2FzZSBjZDpjYXNlIGRkOmNhc2UgZWQ6Y2FzZSBmZDpjYXNlIGdkOmNhc2UgaGQ6Y2FzZSBpZDpjYXNlIGpkOmNhc2Uga2Q6Y2FzZSBsZDpjYXNlIG1kOmNhc2UgbmQ6Y2FzZSBvZDpjYXNlIHBkOmNhc2UgcWQ6Y2FzZSByZDpjYXNlIHNkOmNhc2UgdGQ6Y2FzZSB1ZDpjYXNlIHZkOmNhc2Ugd2Q6Y2FzZSB4ZDpjYXNlIHlkOmNhc2UgemQ6Y2FzZSBBZDpjYXNlIEJkOmNhc2UgQ2Q6Y2FzZSBEZDpjYXNlIEVkOmNhc2UgRmQ6Y2FzZSBHZDpjYXNlIEhkOmNhc2UgSWQ6Y2FzZSBKZDpjYXNlIEtkOmNhc2UgTGQ6Y2FzZSBNZDpjYXNlIE5kOmNhc2UgT2Q6Y2FzZSBQZDpjYXNlIFFkOmNhc2UgUmQ6Y2FzZSBTZDpjYXNlIFRkOmNhc2UgVWQ6Y2FzZSBWZDpjYXNlIFdkOmNhc2UgWGQ6Y2FzZSBZZDpjYXNlIFpkOmNhc2UgJGQ6Y2FzZSBfZDpjYXNlIGFlOmNhc2UgYmU6Y2FzZSBjZTpjYXNlIGRlOmNhc2UgZWU6Y2FzZSBmZTpjYXNlIGdlOmNhc2UgaGU6Y2FzZSBpZTpjYXNlIGRmOmNhc2Ugd2c6dD0yO2JyZWFrO2Nhc2UgX2U6Y2FzZSBhZjp0PTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciB1PW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTI5LDAsdGhpcy5pbnB1dCk7dGhyb3cgdX1zd2l0Y2godCl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHplLHAuRk9MTE9XX1NUQVJfaW5fcF9XaWxkY2FyZDczNzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSk7dmFyICRjPTIsamU9dGhpcy5pbnB1dC5MQSgxKTtqZT09TWUmJigkYz0xKTtzd2l0Y2goJGMpe2Nhc2UgMTplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxNZSxwLkZPTExPV19DT0xPTl9pbl9wX1dpbGRjYXJkNzM3Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobj10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fcF9XaWxkY2FyZDczNzkpLGo9dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpfWJyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fcF9XaWxkY2FyZDczOTMpLGs9dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsay5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE1lLHAuRk9MTE9XX0NPTE9OX2luX3BfV2lsZGNhcmQ3Mzk1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLGc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHplLHAuRk9MTE9XX1NUQVJfaW5fcF9XaWxkY2FyZDczOTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHE9dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixxKSk7YnJlYWs7Y2FzZSAzOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9XaWxkY2FyZDc0MDkpLGw9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwuZ2V0VHJlZSgpKSxoPXRoaXMubWF0Y2godGhpcy5pbnB1dCxNZSxwLkZPTExPV19DT0xPTl9pbl9wX1dpbGRjYXJkNzQxMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocj10aGlzLmFkYXB0b3IuY3JlYXRlKGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHIpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6ZSxwLkZPTExPV19TVEFSX2luX3BfV2lsZGNhcmQ3NDEzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscykpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGtlKXtpZighKGtlIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrZTt0aGlzLnJlcG9ydEVycm9yKGtlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrZSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGtlKX1maW5hbGx5e3RoaXMuc2V0V3NFeHBsaWNpdCghMSl9cmV0dXJuIGF9LHBfUG9zdGZpeEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1Bvc3RmaXhFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUG9zdGZpeEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1Bvc3RmaXhFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Qb3N0Zml4RXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUHJpbWFyeUV4cHJfaW5fcF9Qb3N0Zml4RXhwcjc0NTEpLGM9dGhpcy5wX1ByaW1hcnlFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YTpkb3t2YXIgZj0yLGc9dGhpcy5pbnB1dC5MQSgxKTtnPT1wZSYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9QcmVkaWNhdGVfaW5fcF9Qb3N0Zml4RXhwcjc0NTQpLGU9dGhpcy5wX1ByZWRpY2F0ZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gYX0scF9Bcmd1bWVudExpc3RfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0FyZ3VtZW50TGlzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0FyZ3VtZW50TGlzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXJndW1lbnRMaXN0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Bcmd1bWVudExpc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX0FyZ3VtZW50TGlzdDc0OTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSk7dmFyIGw9MixtPXRoaXMuaW5wdXQuTEEoMSk7aWYobT49diYmbTw9aWV8fG09PWtlfHxtPj1tZSYmbTw9bmV8fG0+PXllJiZtPD1DZXx8bT49SWUmJm08PUxlfHxtPT1ZZXx8bT49X2UmJm08PWFmfHxtPT1kZnx8bT49bGYmJm08PXFmfHxtPT13ZylsPTE7c3dpdGNoKGwpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Bcmd1bWVudF9pbl9wX0FyZ3VtZW50TGlzdDc0OTgpLGc9dGhpcy5wX0FyZ3VtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YTpkb3t2YXIgbj0yLG89dGhpcy5pbnB1dC5MQSgxKTtvPT14ZSYmKG49MSk7c3dpdGNoKG4pe2Nhc2UgMTplPXRoaXMubWF0Y2godGhpcy5pbnB1dCx4ZSxwLkZPTExPV19DT01NQV9pbl9wX0FyZ3VtZW50TGlzdDc1MDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQXJndW1lbnRfaW5fcF9Bcmd1bWVudExpc3Q3NTAzKSxoPXRoaXMucF9Bcmd1bWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApfWY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX0FyZ3VtZW50TGlzdDc1MDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gocSl7aWYoIShxIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBxO3RoaXMucmVwb3J0RXJyb3IocSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHEpfWZpbmFsbHl7fXJldHVybiBhfSxwX1ByZWRpY2F0ZUxpc3RfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1ByZWRpY2F0ZUxpc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9QcmVkaWNhdGVMaXN0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9QcmVkaWNhdGVMaXN0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QcmVkaWNhdGVMaXN0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO2E6ZG97dmFyIGU9MixmPXRoaXMuaW5wdXQuTEEoMSk7Zj09cGUmJihlPTEpO3N3aXRjaChlKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUHJlZGljYXRlX2luX3BfUHJlZGljYXRlTGlzdDc1MzUpLGM9dGhpcy5wX1ByZWRpY2F0ZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gYX0scF9QcmVkaWNhdGVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1ByZWRpY2F0ZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1ByZWRpY2F0ZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUHJlZGljYXRlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QcmVkaWNhdGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBlLHAuRk9MTE9XX0xTUVVBUkVfaW5fcF9QcmVkaWNhdGU3NTYyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcF9QcmVkaWNhdGU3NTY0KSxmPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxZSxwLkZPTExPV19SU1FVQVJFX2luX3BfUHJlZGljYXRlNzU2Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfUHJpbWFyeUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1ByaW1hcnlFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUHJpbWFyeUV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ByaW1hcnlFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QcmltYXJ5RXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGw7dHJ5e3ZhciBtPTk7bT10aGlzLmRmYTEzNC5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChtKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUGFyZW50aGVzaXplZEV4cHJfaW5fcF9QcmltYXJ5RXhwcjc2MDApLGM9dGhpcy5wX1BhcmVudGhlc2l6ZWRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0xpdGVyYWxfaW5fcF9QcmltYXJ5RXhwcjc2MTIpLGU9dGhpcy5wX0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFyUmVmX2luX3BfUHJpbWFyeUV4cHI3NjI0KSxmPXRoaXMucF9WYXJSZWYoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29udGV4dEl0ZW1FeHByX2luX3BfUHJpbWFyeUV4cHI3NjM2KSxnPXRoaXMucF9Db250ZXh0SXRlbUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRnVuY3Rpb25DYWxsX2luX3BfUHJpbWFyeUV4cHI3NjQ4KSxoPXRoaXMucF9GdW5jdGlvbkNhbGwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKTticmVhaztjYXNlIDY6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfT3JkZXJlZEV4cHJfaW5fcF9QcmltYXJ5RXhwcjc2NjApLGk9dGhpcy5wX09yZGVyZWRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA3OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Vub3JkZXJlZEV4cHJfaW5fcF9QcmltYXJ5RXhwcjc2NzIpLGo9dGhpcy5wX1Vub3JkZXJlZEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKTticmVhaztjYXNlIDg6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29uc3RydWN0b3JfaW5fcF9QcmltYXJ5RXhwcjc2ODQpLGs9dGhpcy5wX0NvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA5OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0Jsb2NrRXhwcl9pbl9wX1ByaW1hcnlFeHByNzY5OCksbD10aGlzLnBfQmxvY2tFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobil7aWYoIShuIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBuO3RoaXMucmVwb3J0RXJyb3IobiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG4pfWZpbmFsbHl7fXJldHVybiBhfSxwX0xpdGVyYWxfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0xpdGVyYWxfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9MaXRlcmFsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9MaXRlcmFsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9MaXRlcmFsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXt2YXIgZj0yLGc9dGhpcy5pbnB1dC5MQSgxKTtpZihnPj1vZiYmZzw9cWYpZj0xO2Vsc2V7aWYoIShnPj1fZSYmZzw9YWYpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTM1LDAsdGhpcy5pbnB1dCk7dGhyb3cgaH1mPTJ9c3dpdGNoKGYpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OdW1lcmljTGl0ZXJhbF9pbl9wX0xpdGVyYWw3NzI0KSxjPXRoaXMucF9OdW1lcmljTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfTGl0ZXJhbDc3MjgpLGU9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfTnVtZXJpY0xpdGVyYWxfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX051bWVyaWNMaXRlcmFsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfTnVtZXJpY0xpdGVyYWxfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX051bWVyaWNMaXRlcmFsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9OdW1lcmljTGl0ZXJhbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e3ZhciBnPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2Ugb2Y6Zz0xO2JyZWFrO2Nhc2UgcGY6Zz0yO2JyZWFrO2Nhc2UgcWY6Zz0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEzNiwwLHRoaXMuaW5wdXQpO3Rocm93IGh9c3dpdGNoKGcpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZixwLkZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfTnVtZXJpY0xpdGVyYWw3NzU2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkKGUpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwZixwLkZPTExPV19MX0RlY2ltYWxMaXRlcmFsX2luX3BfTnVtZXJpY0xpdGVyYWw3NzY0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkKGUpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxZixwLkZPTExPV19MX0RvdWJsZUxpdGVyYWxfaW5fcF9OdW1lcmljTGl0ZXJhbDc3NzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWQoZSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBhfSxwX1ZhclJlZl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVmFyUmVmX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfVmFyUmVmX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9WYXJSZWY6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1ZhclJlZl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1ZhclJlZjc4MTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1ZhclJlZjc4MTQpLGU9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoYyxlP2Uuc3RvcDpudWxsKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGF9LHBfVmFyTmFtZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVmFyTmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1Zhck5hbWVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1Zhck5hbWU6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1Zhck5hbWVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9WYXJOYW1lNzg0MiksYz10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfUGFyZW50aGVzaXplZEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1BhcmVudGhlc2l6ZWRFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUGFyZW50aGVzaXplZEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1BhcmVudGhlc2l6ZWRFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QYXJlbnRoZXNpemVkRXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3BfUGFyZW50aGVzaXplZEV4cHI3ODY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpO3ZhciBpPTIsaj10aGlzLmlucHV0LkxBKDEpO2lmKGo+PXYmJmo8PWllfHxqPT1rZXx8aj49bWUmJmo8PW5lfHxqPj16ZSYmajw9Q2V8fGo+PUllJiZqPD1MZXx8aj09WWV8fGo+PV9lJiZqPD1hZnx8aj09ZGZ8fGo+PWxmJiZqPD1xZnx8aj09d2cpaT0xO3N3aXRjaChpKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX1BhcmVudGhlc2l6ZWRFeHByNzg3MCksZj10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfUGFyZW50aGVzaXplZEV4cHI3ODc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9Db250ZXh0SXRlbUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0NvbnRleHRJdGVtRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0NvbnRleHRJdGVtRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ29udGV4dEl0ZW1FeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Db250ZXh0SXRlbUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEtlLHAuRk9MTE9XX0RPVF9pbl9wX0NvbnRleHRJdGVtRXhwcjc5MDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBhfSxwX09yZGVyZWRFeHByX3JldHVybjpmdW5jdGlvbigpe3AucF9PcmRlcmVkRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX09yZGVyZWRFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9PcmRlcmVkRXhwcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfT3JkZXJlZEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSWIscC5GT0xMT1dfT1JERVJFRF9pbl9wX09yZGVyZWRFeHByNzkyOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcF9PcmRlcmVkRXhwcjc5MzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX09yZGVyZWRFeHByNzkzNCksZz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcF9PcmRlcmVkRXhwcjc5MzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX1Vub3JkZXJlZEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1Vub3JkZXJlZEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Vbm9yZGVyZWRFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Vbm9yZGVyZWRFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Vbm9yZGVyZWRFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRjLHAuRk9MTE9XX1VOT1JERVJFRF9pbl9wX1Vub3JkZXJlZEV4cHI3OTY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wX1Vub3JkZXJlZEV4cHI3OTY5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcF9Vbm9yZGVyZWRFeHByNzk3MSksZz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcF9Vbm9yZGVyZWRFeHByNzk3NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRnVuY3Rpb25DYWxsX3JldHVybjpmdW5jdGlvbigpe3AucF9GdW5jdGlvbkNhbGxfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GdW5jdGlvbkNhbGxfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0Z1bmN0aW9uQ2FsbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRnVuY3Rpb25DYWxsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcGdfRlFOYW1lX2luX3BfRnVuY3Rpb25DYWxsODAwMyksYz10aGlzLnBnX0ZRTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZihjP2Muc3RhcnQ6bnVsbCxjP2Muc3RvcDpudWxsKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Bcmd1bWVudExpc3RfaW5fcF9GdW5jdGlvbkNhbGw4MDA4KSxlPXRoaXMucF9Bcmd1bWVudExpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGF9LHBfQXJndW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0FyZ3VtZW50X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQXJndW1lbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FyZ3VtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Bcmd1bWVudF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7dmFyIGY9MixnPXRoaXMuaW5wdXQuTEEoMSk7aWYoZz49diYmZzw9aWV8fGc9PWtlfHxnPj1tZSYmZzw9bmV8fGc+PXplJiZnPD1DZXx8Zz49SWUmJmc8PUxlfHxnPT1ZZXx8Zz49X2UmJmc8PWFmfHxnPT1kZnx8Zz49bGYmJmc8PXFmfHxnPT13ZylmPTE7ZWxzZXtpZihnIT15ZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEzOCwwLHRoaXMuaW5wdXQpO3Rocm93IGh9Zj0yfXN3aXRjaChmKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0FyZ3VtZW50ODAzNCksYz10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0FyZ3VtZW50UGxhY2Vob2xkZXJfaW5fcF9Bcmd1bWVudDgwMzkpLGU9dGhpcy5wX0FyZ3VtZW50UGxhY2Vob2xkZXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQXJndW1lbnRQbGFjZWhvbGRlcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQXJndW1lbnRQbGFjZWhvbGRlcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0FyZ3VtZW50UGxhY2Vob2xkZXJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FyZ3VtZW50UGxhY2Vob2xkZXI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0FyZ3VtZW50UGxhY2Vob2xkZXJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHllLHAuRk9MTE9XX1FVRVNUSU9OX2luX3BfQXJndW1lbnRQbGFjZWhvbGRlcjgwNjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBhfSxwX0NvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3AucF9Db25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0NvbnN0cnVjdG9yX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQ29uc3RydWN0b3JfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e3ZhciBmPTIsZz10aGlzLmlucHV0LkxBKDEpO2lmKGc9PUNlfHxnPj1tZiYmZzw9bmYpZj0xO2Vsc2UgaWYoZz09Qnx8Zz09S3x8Zz09VHx8Zz09Vnx8Zz09emJ8fGc9PU9ifHxnPT1aYilmPTI7ZWxzZXtpZihnIT1mZXx8IXRoaXMubGMobykpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGg9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMzksMCx0aGlzLmlucHV0KTt0aHJvdyBofWY9Mn1zd2l0Y2goZil7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0RpcmVjdENvbnN0cnVjdG9yX2luX3BfQ29uc3RydWN0b3I4MDkxKSxjPXRoaXMucF9EaXJlY3RDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Db21wdXRlZENvbnN0cnVjdG9yX2luX3BfQ29uc3RydWN0b3I4MTAzKSxlPXRoaXMucF9Db21wdXRlZENvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBhfSxwX0RpcmVjdENvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3AucF9EaXJlY3RDb25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0RpcmVjdENvbnN0cnVjdG9yX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9EaXJlY3RDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRGlyZWN0Q29uc3RydWN0b3JfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXt2YXIgZz0zO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIENlOmc9MTticmVhaztjYXNlIG1mOmc9MjticmVhaztjYXNlIG5mOmc9MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGg9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNDAsMCx0aGlzLmlucHV0KTt0aHJvdyBofXN3aXRjaChnKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRGlyRWxlbUNvbnN0cnVjdG9yX2luX3BfRGlyZWN0Q29uc3RydWN0b3I4MTI5KSxjPXRoaXMucF9EaXJFbGVtQ29uc3RydWN0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRGlyQ29tbWVudENvbnN0cnVjdG9yX2luX3BfRGlyZWN0Q29uc3RydWN0b3I4MTQxKSxlPXRoaXMucF9EaXJDb21tZW50Q29uc3RydWN0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRGlyUElDb25zdHJ1Y3Rvcl9pbl9wX0RpcmVjdENvbnN0cnVjdG9yODE1MyksZj10aGlzLnBfRGlyUElDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gYX0scF9EaXJFbGVtQ29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0RpckVsZW1Db25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0RpckVsZW1Db25zdHJ1Y3Rvcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRGlyRWxlbUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9EaXJFbGVtQ29uc3RydWN0b3JfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbCxvPW51bGwscj1udWxsLHM9bnVsbCx0PW51bGwsdT1udWxsLHY9bnVsbCx3PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQ0xPU0VfVEFHIikseD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEdSRUFURVIiKSx5PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUyIpLHo9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFTVBUWV9DTE9TRV9UQUciKSxBPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gU01BTExFUiIpLEI9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9EaXJBdHRyaWJ1dGVMaXN0IiksQz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwbV9EaXJFbGVtQ29udGVudCIpLEQ9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9RTmFtZSIpO3RyeXtjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxDZSxwLkZPTExPV19TTUFMTEVSX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODE4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZBLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMucHVzaFhNTExleGVyKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9EaXJFbGVtQ29uc3RydWN0b3I4MTk2KSxrPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmRC5hZGQoay5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdChrP2suc3RhcnQ6bnVsbCxrP2suc3RvcDpudWxsKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9EaXJBdHRyaWJ1dGVMaXN0X2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIwMSksbT10aGlzLnBfRGlyQXR0cmlidXRlTGlzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmQi5hZGQobS5nZXRUcmVlKCkpO3ZhciBFPTIsRj10aGlzLmlucHV0LkxBKDEpO2lmKEY9PU9lKUU9MTtlbHNle2lmKEYhPURlKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBHPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTQzLDAsdGhpcy5pbnB1dCk7dGhyb3cgR31FPTJ9c3dpdGNoKEUpe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPZSxwLkZPTExPV19FTVBUWV9DTE9TRV9UQUdfaW5fcF9EaXJFbGVtQ29uc3RydWN0b3I4MjE1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnouYWRkKGYpO2JyZWFrO2Nhc2UgMjpnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxEZSxwLkZPTExPV19HUkVBVEVSX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ4LmFkZChnKTthOmRve3ZhciBIPTIsST10aGlzLmlucHV0LkxBKDEpO2lmKEk+PWUmJkk8PXF8fEk9PW5lfHxJPT1DZXx8ST49bWYmJkk8PW5mKUg9MTtzd2l0Y2goSCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9EaXJFbGVtQ29udGVudF9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMjIpLG49dGhpcy5wbV9EaXJFbGVtQ29udGVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmQy5hZGQobi5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2g9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFBlLHAuRk9MTE9XX0NMT1NFX1RBR19pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdy5hZGQoaCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9EaXJFbGVtQ29uc3RydWN0b3I4MjI5KSxsPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmRC5hZGQobC5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdChsP2wuc3RhcnQ6bnVsbCxsP2wuc3RvcDpudWxsKTt2YXIgSj0yLEs9dGhpcy5pbnB1dC5MQSgxKTtLPT1qZiYmKEo9MSk7c3dpdGNoKEope2Nhc2UgMTppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxqZixwLkZPTExPV19TX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIzMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ5LmFkZChpKX1qPXRoaXMubWF0Y2godGhpcy5pbnB1dCxEZSxwLkZPTExPV19HUkVBVEVSX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ4LmFkZChqKX1pZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1iO3ZhciBMPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBNPXRoaXMuYWRhcHRvci5uaWwoKTtNPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoZWcsIkRpckVsZW1Db25zdHJ1Y3RvciIpLE0pO3ZhciBOPXRoaXMuYWRhcHRvci5uaWwoKTtOPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoZmcsIkRpckF0dHJpYnV0ZUxpc3QiKSxOKTt3aGlsZShCLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoTixCLm5leHRUcmVlKCkpO0IucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoTSxOKTt2YXIgTj10aGlzLmFkYXB0b3IubmlsKCk7Tj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGhnLCJEaXJFbGVtQ29udGVudCIpLE4pO3doaWxlKEMuaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChOLEMubmV4dFRyZWUoKSk7Qy5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChNLE4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLE0pLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKE8pe2lmKCEoTyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTzt0aGlzLnJlcG9ydEVycm9yKE8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LE8pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxPKX1maW5hbGx5e3RoaXMucG9wTGV4ZXIoKX1yZXR1cm4gYX0scF9EaXJBdHRyaWJ1dGVMaXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9EaXJBdHRyaWJ1dGVMaXN0X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRGlyQXR0cmlidXRlTGlzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRGlyQXR0cmlidXRlTGlzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRGlyQXR0cmlidXRlTGlzdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTthOmRve3ZhciBuPTIsbz10aGlzLmlucHV0LkxBKDEpO289PWpmJiYobj0xKTtzd2l0Y2gobil7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGpmLHAuRk9MTE9XX1NfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMxMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKTt2YXIgcT0yLHI9dGhpcy5pbnB1dC5MQSgxKTtpZihyPj12JiZyPD1aY3x8cj49X2MmJnI8PWllfHxyPT1kZnx8cj09d2cpcT0xO3N3aXRjaChxKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMxOCksaD10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXQoaD9oLnN0YXJ0Om51bGwsaD9oLnN0b3A6bnVsbCk7dmFyIHM9Mix0PXRoaXMuaW5wdXQuTEEoMSk7dD09amYmJihzPTEpO3N3aXRjaChzKXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsamYscC5GT0xMT1dfU19pbl9wX0RpckF0dHJpYnV0ZUxpc3Q4MzIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpfWY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHJlLHAuRk9MTE9XX0VRVUFMX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSk7dmFyIHU9Mix3PXRoaXMuaW5wdXQuTEEoMSk7dz09amYmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsamYscC5GT0xMT1dfU19pbl9wX0RpckF0dHJpYnV0ZUxpc3Q4MzI3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0RpckF0dHJpYnV0ZVZhbHVlX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMzIpLGk9dGhpcy5wX0RpckF0dHJpYnV0ZVZhbHVlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSl9YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goeCl7aWYoISh4IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB4O3RoaXMucmVwb3J0RXJyb3IoeCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQseCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0RpckF0dHJpYnV0ZVZhbHVlX3JldHVybjpmdW5jdGlvbigpe3AucF9EaXJBdHRyaWJ1dGVWYWx1ZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0RpckF0dHJpYnV0ZVZhbHVlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9EaXJBdHRyaWJ1dGVWYWx1ZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRGlyQXR0cmlidXRlVmFsdWVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgZT1udWxsLGY9bnVsbCxoPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEVTQ0FQRV9RVU9UIiksbz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEFQT1MiKSx0PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRVNDQVBFX0FQT1MiKSx1PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUVVPVCIpLHY9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9RdW90QXR0clZhbHVlQ29udGVudCIpLHc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9BcG9zQXR0clZhbHVlQ29udGVudCIpO3RyeXt2YXIgeD0yLHk9dGhpcy5pbnB1dC5MQSgxKTtpZih5PT1hZil4PTE7ZWxzZXtpZih5IT1fZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgej1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE1MCwwLHRoaXMuaW5wdXQpO3Rocm93IHp9eD0yfXN3aXRjaCh4KXtjYXNlIDE6Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYWYscC5GT0xMT1dfUVVPVF9pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODM2Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ1LmFkZChmKSxkLmFudGxyLmxhbmcuaXNOdWxsKGgpJiYoaD1bXSksaC5wdXNoKGYpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHRoaXMuaXNJbkF0dHI9ITApO2E6ZG97dmFyIEE9NDtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBzOkE9MTticmVhaztjYXNlIF9lOkE9MjticmVhaztjYXNlIGI6Y2FzZSBnOmNhc2UgaTpjYXNlIGo6Y2FzZSBxOmNhc2UgbmU6QT0zfXN3aXRjaChBKXtjYXNlIDE6Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscyxwLkZPTExPV19FU0NBUEVfUVVPVF9pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODM3Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZuLmFkZChmKSxkLmFudGxyLmxhbmcuaXNOdWxsKGgpJiYoaD1bXSksaC5wdXNoKGYpO2JyZWFrO2Nhc2UgMjpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfZSxwLkZPTExPV19BUE9TX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4Mzc5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm8uYWRkKGYpLGQuYW50bHIubGFuZy5pc051bGwoaCkmJihoPVtdKSxoLnB1c2goZik7YnJlYWs7Y2FzZSAzOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1F1b3RBdHRyVmFsdWVDb250ZW50X2luX3BfRGlyQXR0cmlidXRlVmFsdWU4MzgzKSxrPXRoaXMucF9RdW90QXR0clZhbHVlQ29udGVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdi5hZGQoay5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Y9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGFmLHAuRk9MTE9XX1FVT1RfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTgzODkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQoZiksZC5hbnRsci5sYW5nLmlzTnVsbChoKSYmKGg9W10pLGgucHVzaChmKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0aGlzLmlzSW5BdHRyPSExKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRkVG9rZW4oaCwic3RyaW5nIik7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9ZTt2YXIgQj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtlPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgQz10aGlzLmFkYXB0b3IubmlsKCk7Qz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGdnLCJEaXJBdHRyaWJ1dGVWYWx1ZSIpLEMpO3doaWxlKHYuaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChDLHYubmV4dFRyZWUoKSk7di5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChlLEMpLGEudHJlZT1lfWJyZWFrO2Nhc2UgMjpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfZSxwLkZPTExPV19BUE9TX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDM0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm8uYWRkKGYpLGQuYW50bHIubGFuZy5pc051bGwoaCkmJihoPVtdKSxoLnB1c2goZiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodGhpcy5pc0luQXR0cj0hMCk7Yjpkb3t2YXIgRD00O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIHI6RD0xO2JyZWFrO2Nhc2UgYWY6RD0yO2JyZWFrO2Nhc2UgYzpjYXNlIGc6Y2FzZSBpOmNhc2UgajpjYXNlIHE6Y2FzZSBuZTpEPTN9c3dpdGNoKEQpe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxyLHAuRk9MTE9XX0VTQ0FQRV9BUE9TX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDQxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnQuYWRkKGYpLGQuYW50bHIubGFuZy5pc051bGwoaCkmJihoPVtdKSxoLnB1c2goZik7YnJlYWs7Y2FzZSAyOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGFmLHAuRk9MTE9XX1FVT1RfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTg0NDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQoZiksZC5hbnRsci5sYW5nLmlzTnVsbChoKSYmKGg9W10pLGgucHVzaChmKTticmVhaztjYXNlIDM6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQXBvc0F0dHJWYWx1ZUNvbnRlbnRfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTg0NTEpLGw9dGhpcy5wX0Fwb3NBdHRyVmFsdWVDb250ZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ3LmFkZChsLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBifX13aGlsZSghMCk7Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsX2UscC5GT0xMT1dfQVBPU19pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODQ1Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZvLmFkZChmKSxkLmFudGxyLmxhbmcuaXNOdWxsKGgpJiYoaD1bXSksaC5wdXNoKGYpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHRoaXMuaXNJbkF0dHI9ITEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGRUb2tlbihoLCJzdHJpbmciKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1lO3ZhciBCPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpO2U9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBDPXRoaXMuYWRhcHRvci5uaWwoKTtDPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoZ2csIkRpckF0dHJpYnV0ZVZhbHVlIiksQyk7d2hpbGUody5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKEMsdy5uZXh0VHJlZSgpKTt3LnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGUsQyksYS50cmVlPWV9fWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhlKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKEUpe2lmKCEoRSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgRTt0aGlzLnJlcG9ydEVycm9yKEUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LEUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxFKX1maW5hbGx5e31yZXR1cm4gYX0scF9RdW90QXR0clZhbHVlQ29udGVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUXVvdEF0dHJWYWx1ZUNvbnRlbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9RdW90QXR0clZhbHVlQ29udGVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUXVvdEF0dHJWYWx1ZUNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1F1b3RBdHRyVmFsdWVDb250ZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXt2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPT1iKWg9MTtlbHNle2lmKCEoaT49ZyYmaTw9cXx8aT09bmUpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTUxLDAsdGhpcy5pbnB1dCk7dGhyb3cgan1oPTJ9c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RdW90QXR0ckNvbnRlbnRDaGFyX2luX3BfUXVvdEF0dHJWYWx1ZUNvbnRlbnQ4NTE1KSxlPXRoaXMucF9RdW90QXR0ckNvbnRlbnRDaGFyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxlLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkZFN0cmluZyhlP2Uuc3RhcnQ6bnVsbCxlP2Uuc3RvcDpudWxsKTticmVhaztjYXNlIDI6Yz10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX0NvbW1vbkNvbnRlbnRfaW5fcF9RdW90QXR0clZhbHVlQ29udGVudDg1MjEpLGY9dGhpcy5wbV9Db21tb25Db250ZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX0Fwb3NBdHRyVmFsdWVDb250ZW50X3JldHVybjpmdW5jdGlvbigpe3AucF9BcG9zQXR0clZhbHVlQ29udGVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0Fwb3NBdHRyVmFsdWVDb250ZW50X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BcG9zQXR0clZhbHVlQ29udGVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQXBvc0F0dHJWYWx1ZUNvbnRlbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PWMpaD0xO2Vsc2V7aWYoIShpPj1nJiZpPD1xfHxpPT1uZSkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNTIsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1zd2l0Y2goaCl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0Fwb3NBdHRyQ29udGVudENoYXJfaW5fcF9BcG9zQXR0clZhbHVlQ29udGVudDg1NDkpLGU9dGhpcy5wX0Fwb3NBdHRyQ29udGVudENoYXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRkU3RyaW5nKGU/ZS5zdGFydDpudWxsLGU/ZS5zdG9wOm51bGwpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcG1fQ29tbW9uQ29udGVudF9pbl9wX0Fwb3NBdHRyVmFsdWVDb250ZW50ODU1NSksZj10aGlzLnBtX0NvbW1vbkNvbnRlbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBtX0RpckVsZW1Db250ZW50X3JldHVybjpmdW5jdGlvbigpe3AucG1fRGlyRWxlbUNvbnRlbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fRGlyRWxlbUNvbnRlbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9EaXJFbGVtQ29udGVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX0RpckVsZW1Db250ZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsaD1udWxsLGs9bnVsbCxsPW51bGw7dHJ5e3ZhciBtPTQ7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgQ2U6Y2FzZSBtZjpjYXNlIG5mOm09MTticmVhaztjYXNlIGY6bT0yO2JyZWFrO2Nhc2UgZzpjYXNlIGk6Y2FzZSBqOmNhc2UgcTpjYXNlIG5lOm09MzticmVhaztjYXNlIGU6bT00O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE1MywwLHRoaXMuaW5wdXQpO3Rocm93IG59c3dpdGNoKG0pe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9EaXJlY3RDb25zdHJ1Y3Rvcl9pbl9wbV9EaXJFbGVtQ29udGVudDg1ODEpLGM9dGhpcy5wX0RpcmVjdENvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0NEYXRhU2VjdGlvbl9pbl9wbV9EaXJFbGVtQ29udGVudDg1OTMpLGg9dGhpcy5wX0NEYXRhU2VjdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcG1fQ29tbW9uQ29udGVudF9pbl9wbV9EaXJFbGVtQ29udGVudDg2MDUpLGs9dGhpcy5wbV9Db21tb25Db250ZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0VsZW1lbnRDb250ZW50Q2hhcl9pbl9wbV9EaXJFbGVtQ29udGVudDg2MTcpLGw9dGhpcy5wX0VsZW1lbnRDb250ZW50Q2hhcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbC5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQ29tbW9uQ29udGVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX0NvbW1vbkNvbnRlbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fQ29tbW9uQ29udGVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbW1vbkNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9Db21tb25Db250ZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxoPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGw7dHJ5e3ZhciBuPTU7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgZzpuPTE7YnJlYWs7Y2FzZSBpOm49MjticmVhaztjYXNlIGo6bj0zO2JyZWFrO2Nhc2UgcTpuPTQ7YnJlYWs7Y2FzZSBuZTpuPTU7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBvPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTU0LDAsdGhpcy5pbnB1dCk7dGhyb3cgb31zd2l0Y2gobil7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGcscC5GT0xMT1dfTF9QcmVkZWZpbmVkRW50aXR5UmVmX2luX3BtX0NvbW1vbkNvbnRlbnQ4NjQ1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxpLHAuRk9MTE9XX0xfQ2hhclJlZl9pbl9wbV9Db21tb25Db250ZW50ODY1Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0pKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaixwLkZPTExPV19FU0NBUEVfTEJSQUNLRVRfaW5fcG1fQ29tbW9uQ29udGVudDg2NzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmlzSW5BdHRyJiZ0aGlzLmFkZFRva2VuKGMsInN0cmluZyIpO2JyZWFrO2Nhc2UgNDpiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxLHAuRk9MTE9XX0VTQ0FQRV9SQlJBQ0tFVF9pbl9wbV9Db21tb25Db250ZW50ODY4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuaXNJbkF0dHImJnRoaXMuYWRkVG9rZW4oYywic3RyaW5nIik7YnJlYWs7Y2FzZSA1OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wZ19FbmNsb3NlZEV4cHJYbWxfaW5fcG1fQ29tbW9uQ29udGVudDg3MDEpLGg9dGhpcy5wZ19FbmNsb3NlZEV4cHJYbWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChyKXtpZighKHIgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHI7dGhpcy5yZXBvcnRFcnJvcihyKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxyKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscil9ZmluYWxseXt9cmV0dXJuIGF9LHBnX0VuY2xvc2VkRXhwclhtbF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBnX0VuY2xvc2VkRXhwclhtbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wZ19FbmNsb3NlZEV4cHJYbWxfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwZ19FbmNsb3NlZEV4cHJYbWw6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wZ19FbmNsb3NlZEV4cHJYbWxfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BnX0VuY2xvc2VkRXhwclhtbDg3MzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLnB1c2hYUXVlcnlMZXhlcigpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcGdfRW5jbG9zZWRFeHByWG1sODc0OSksZj10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BnX0VuY2xvc2VkRXhwclhtbDg3NjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLnBvcExleGVyKCksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBhfSxwX0RpckNvbW1lbnRDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRGlyQ29tbWVudENvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRGlyQ29tbWVudENvbnN0cnVjdG9yX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9EaXJDb21tZW50Q29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0RpckNvbW1lbnRDb25zdHJ1Y3Rvcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWYscC5GT0xMT1dfTF9EaXJDb21tZW50Q29uc3RydWN0b3JfaW5fcF9EaXJDb21tZW50Q29uc3RydWN0b3I4Nzk0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hYyhjKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGF9LHBfRGlyUElDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRGlyUElDb25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0RpclBJQ29uc3RydWN0b3JfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0RpclBJQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0RpclBJQ29uc3RydWN0b3JfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5mLHAuRk9MTE9XX0xfRGlyUElDb25zdHJ1Y3Rvcl9pbl9wX0RpclBJQ29uc3RydWN0b3I4ODMwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hcChjKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGF9LHBfQ0RhdGFTZWN0aW9uX3JldHVybjpmdW5jdGlvbigpe3AucF9DRGF0YVNlY3Rpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9DRGF0YVNlY3Rpb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NEYXRhU2VjdGlvbjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQ0RhdGFTZWN0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxmLHAuRk9MTE9XX0xfQ0RhdGFTZWN0aW9uX2luX3BfQ0RhdGFTZWN0aW9uODg2Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWMoYyksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0NvbXB1dGVkQ29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0NvbXB1dGVkQ29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Db21wdXRlZENvbnN0cnVjdG9yX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db21wdXRlZENvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Db21wdXRlZENvbnN0cnVjdG9yX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsO3RyeXt2YXIgbD04LG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPT1UKWw9MTtlbHNlIGlmKG09PVYpbD0yO2Vsc2UgaWYobT09QilsPTM7ZWxzZSBpZihtPT16YilsPTQ7ZWxzZSBpZihtPT1aYilsPTU7ZWxzZSBpZihtPT1LKWw9NjtlbHNlIGlmKG09PU9iKWw9NztlbHNle2lmKG0hPWZlfHwhdGhpcy5sYyhvKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE1NSwwLHRoaXMuaW5wdXQpO3Rocm93IG59bD04fXN3aXRjaChsKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BtX0NvbXBEb2NDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTAxKSxjPXRoaXMucG1fQ29tcERvY0NvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Db21wRWxlbUNvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5MTMpLGU9dGhpcy5wbV9Db21wRWxlbUNvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Db21wQXR0ckNvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5MjUpLGY9dGhpcy5wbV9Db21wQXR0ckNvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTM3KSxnPXRoaXMucF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29tcFRleHRDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTQ5KSxoPXRoaXMucF9Db21wVGV4dENvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA2OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5NjEpLGk9dGhpcy5wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA3OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Db21wUElDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTczKSxqPXRoaXMucG1fQ29tcFBJQ29uc3RydWN0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKTticmVhaztjYXNlIDg6Yj10aGlzLmFkYXB0b3IubmlsKCk7aWYoIXRoaXMubGMobykpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwicF9Db21wdXRlZENvbnN0cnVjdG9yIiwidGhpcy5sYyhNTFMpIil9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29tcEJpbmFyeUNvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5ODgpLGs9dGhpcy5wX0NvbXBCaW5hcnlDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsay5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHEpe2lmKCEocSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcTt0aGlzLnJlcG9ydEVycm9yKHEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHEpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxxKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQ29tcERvY0NvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3AucG1fQ29tcERvY0NvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBtX0NvbXBEb2NDb25zdHJ1Y3Rvcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbXBEb2NDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX0NvbXBEb2NDb25zdHJ1Y3Rvcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxULHAuRk9MTE9XX0RPQ1VNRU5UX2luX3BtX0NvbXBEb2NDb25zdHJ1Y3RvcjkwMTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBEb2NDb25zdHJ1Y3RvcjkwMjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db21wRG9jQ29uc3RydWN0b3I5MDIzKSxnPXRoaXMucF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcERvY0NvbnN0cnVjdG9yOTAyNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBtX0NvbXBFbGVtQ29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9Db21wRWxlbUNvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBtX0NvbXBFbGVtQ29uc3RydWN0b3JfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db21wRWxlbUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fQ29tcEVsZW1Db25zdHJ1Y3Rvcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbCxvPW51bGwscT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxWLHAuRk9MTE9XX0VMRU1FTlRfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwNjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpO3ZhciByPTIscz10aGlzLmlucHV0LkxBKDEpO2lmKHM+PXYmJnM8PVpjfHxzPj1fYyYmczw9aWV8fHM9PWRmfHxzPT13ZylyPTE7ZWxzZXtpZihzIT1uZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgdD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE1NiwwLHRoaXMuaW5wdXQpO3Rocm93IHR9cj0yfXN3aXRjaChyKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwNjYpLGk9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDcxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwNzMpLGo9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDc2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihuPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbikpfWc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDgwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wbV9Db250ZW50RXhwcl9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA4Miksaz10aGlzLnBtX0NvbnRlbnRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSksaD10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwODQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHE9dGhpcy5hZGFwdG9yLmNyZWF0ZShoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixxKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBhfSxwbV9Db250ZW50RXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX0NvbnRlbnRFeHByX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBtX0NvbnRlbnRFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fQ29udGVudEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9Db250ZW50RXhwcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BtX0NvbnRlbnRFeHByOTExMSksYz10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQ29tcEF0dHJDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX0NvbXBBdHRyQ29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fQ29tcEF0dHJDb25zdHJ1Y3Rvcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbXBBdHRyQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9Db21wQXR0ckNvbnN0cnVjdG9yX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1udWxsLG89bnVsbCxxPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEIscC5GT0xMT1dfQVRUUklCVVRFX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTQwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTt2YXIgcj0yLHM9dGhpcy5pbnB1dC5MQSgxKTtpZihzPj12JiZzPD1aY3x8cz49X2MmJnM8PWllfHxzPT1kZnx8cz09d2cpcj0xO2Vsc2V7aWYocyE9bmUpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHQ9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNTcsMCx0aGlzLmlucHV0KTt0aHJvdyB0fXI9Mn1zd2l0Y2gocil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTQ1KSxpPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTUyKSxqPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZSxwLkZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE1NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4pKX1nPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE1OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTYxKSxrPXRoaXMucF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSksaD10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHE9dGhpcy5hZGFwdG9yLmNyZWF0ZShoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixxKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBhfSxwX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3Rvcl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbCxvPW51bGwscT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6YixwLkZPTExPV19OQU1FU1BBQ0VfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MTkxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTt2YXIgcj0yLHM9dGhpcy5pbnB1dC5MQSgxKTtpZihzPj12JiZzPD1aY3x8cz49X2MmJnM8PWllfHxzPT1kZnx8cz09d2cpcj0xO2Vsc2V7aWYocyE9bmUpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHQ9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNTgsMCx0aGlzLmlucHV0KTt0aHJvdyB0fXI9Mn1zd2l0Y2gocil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1ByZWZpeF9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkxOTYpLGk9dGhpcy5wX1ByZWZpeCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUHJlZml4RXhwcl9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMDMpLGo9dGhpcy5wX1ByZWZpeEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZSxwLkZPTExPV19SQlJBQ0tFVF9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMDUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG49dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixuKSl9Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjA5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpO3ZhciB1PTIsdz10aGlzLmlucHV0LkxBKDEpO2lmKHc+PXYmJnc8PWllfHx3PT1rZXx8dz49bWUmJnc8PW5lfHx3Pj16ZSYmdzw9Q2V8fHc+PUllJiZ3PD1MZXx8dz09WWV8fHc+PV9lJiZ3PD1hZnx8dz09ZGZ8fHc+PWxmJiZ3PD1xZnx8dz09d2cpdT0xO3N3aXRjaCh1KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVVJJRXhwcl9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMTEpLGs9dGhpcy5wX1VSSUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGsuZ2V0VHJlZSgpKX1oPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZSxwLkZPTExPV19SQlJBQ0tFVF9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHE9dGhpcy5hZGFwdG9yLmNyZWF0ZShoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixxKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goeCl7aWYoISh4IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB4O3RoaXMucmVwb3J0RXJyb3IoeCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQseCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHgpfWZpbmFsbHl7fXJldHVybiBhfSxwX1ByZWZpeF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUHJlZml4X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUHJlZml4X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9QcmVmaXg6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1ByZWZpeF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fcF9QcmVmaXg5MjQwKSxjPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfUHJlZml4RXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUHJlZml4RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1ByZWZpeEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ByZWZpeEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1ByZWZpeEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX1ByZWZpeEV4cHI5MjY2KSxjPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfVVJJRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVVJJRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1VSSUV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1VSSUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1VSSUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX1VSSUV4cHI5MjkzKSxjPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQ29tcFRleHRDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ29tcFRleHRDb25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0NvbXBUZXh0Q29uc3RydWN0b3JfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NvbXBUZXh0Q29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0NvbXBUZXh0Q29uc3RydWN0b3JfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWmIscC5GT0xMT1dfVEVYVF9pbl9wX0NvbXBUZXh0Q29uc3RydWN0b3I5MzIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wX0NvbXBUZXh0Q29uc3RydWN0b3I5MzI2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcF9Db21wVGV4dENvbnN0cnVjdG9yOTMyOCksZz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcF9Db21wVGV4dENvbnN0cnVjdG9yOTMzMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQ29tcEJpbmFyeUNvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3AucF9Db21wQmluYXJ5Q29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Db21wQmluYXJ5Q29uc3RydWN0b3JfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NvbXBCaW5hcnlDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQ29tcEJpbmFyeUNvbnN0cnVjdG9yX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGZlLHAuRk9MTE9XX0JJTkFSWV9pbl9wX0NvbXBCaW5hcnlDb25zdHJ1Y3RvcjkzNTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BfQ29tcEJpbmFyeUNvbnN0cnVjdG9yOTM2Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BfQ29tcEJpbmFyeUNvbnN0cnVjdG9yOTM2NSksZz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcF9Db21wQmluYXJ5Q29uc3RydWN0b3I5MzY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBtX0NvbXBDb21tZW50Q29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbXBDb21tZW50Q29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEsscC5GT0xMT1dfQ09NTUVOVF9pbl9wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yOTM5Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcjk0MDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yOTQwMyksZz10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBDb21tZW50Q29uc3RydWN0b3I5NDA1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scG1fQ29tcFBJQ29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9Db21wUElDb25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wbV9Db21wUElDb25zdHJ1Y3Rvcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbXBQSUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fQ29tcFBJQ29uc3RydWN0b3JfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwsbz1udWxsLHE9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsT2IscC5GT0xMT1dfUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0MzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpO3ZhciByPTIscz10aGlzLmlucHV0LkxBKDEpO2lmKHM+PXYmJnM8PVpjfHxzPj1fYyYmczw9aWV8fHM9PWRmfHxzPT13ZylyPTE7ZWxzZXtpZihzIT1uZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgdD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE2MCwwLHRoaXMuaW5wdXQpO3Rocm93IHR9cj0yfXN3aXRjaChyKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTkNOYW1lX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQzOSksaT10aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ0NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ0Niksaj10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcFBJQ29uc3RydWN0b3I5NDQ5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihuPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbikpfWc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5lLHAuRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ1Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ1NSksaz10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsay5nZXRUcmVlKCkpLGg9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ1Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocT10aGlzLmFkYXB0b3IuY3JlYXRlKGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHEpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU2luZ2xlVHlwZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU2luZ2xlVHlwZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1NpbmdsZVR5cGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NpbmdsZVR5cGU6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1NpbmdsZVR5cGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BdG9taWNPclVuaW9uVHlwZV9pbl9wX1NpbmdsZVR5cGU5NTAxKSxlPXRoaXMucF9BdG9taWNPclVuaW9uVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PXllJiYoZz0xKTtzd2l0Y2goZyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHllLHAuRk9MTE9XX1FVRVNUSU9OX2luX3BfU2luZ2xlVHlwZTk1MDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBhfSxwX1R5cGVEZWNsYXJhdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVHlwZURlY2xhcmF0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfVHlwZURlY2xhcmF0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UeXBlRGVjbGFyYXRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1R5cGVEZWNsYXJhdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEFTIiksaD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1NlcXVlbmNlVHlwZSIpO3RyeXtjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5LHAuRk9MTE9XX0FTX2luX3BfVHlwZURlY2xhcmF0aW9uOTUzMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZnLmFkZChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfVHlwZURlY2xhcmF0aW9uOTUzOCksZT10aGlzLnBfU2VxdWVuY2VUeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZoLmFkZChlLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKSxqPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBzdCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGs9dGhpcy5hZGFwdG9yLm5pbCgpO2s9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShfZiwiVHlwZURlY2xhcmF0aW9uIiksayksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGssai5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSxhLnRyZWU9Yn1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU2VxdWVuY2VUeXBlX3JldHVybjpmdW5jdGlvbigpe3AucF9TZXF1ZW5jZVR5cGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9TZXF1ZW5jZVR5cGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NlcXVlbmNlVHlwZTpmdW5jdGlvbigpe3ZhciBiPW5ldyBwLnBfU2VxdWVuY2VUeXBlX3JldHVybjtiLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFTVBUWV9TRVFVRU5DRSIpLG49bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBSUEFSRU4iKSxvPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTFBBUkVOIikscT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX0l0ZW1UeXBlIikscj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX09jY3VycmVuY2VJbmRpY2F0b3IiKTt0cnl7dmFyIHM9Mix0PXRoaXMuaW5wdXQuTEEoMSk7aWYodD09WSl7dmFyIHU9dGhpcy5pbnB1dC5MQSgyKTtpZih1PT1rZSlzPTE7ZWxzZXtpZighKHU9PWF8fHU+PXgmJnU8PUF8fHU9PUZ8fHU9PUp8fHU9PU98fHU+PVImJnU8PVN8fHU9PVh8fHU9PSR8fHU+PWFiJiZ1PD1iYnx8dT09ZWJ8fHU9PWdifHx1Pj1pYiYmdTw9amJ8fHU9PW1ifHx1Pj1vYiYmdTw9cWJ8fHU9PXRifHx1Pj12YiYmdTw9eGJ8fHU9PUFifHx1Pj1HYiYmdTw9SGJ8fHU+PVBiJiZ1PD1RYnx8dT09V2J8fHU9PV9ifHx1PT1jY3x8dT09aGN8fHU9PWpjfHx1PT1tY3x8dT49cWMmJnU8PXJjfHx1PT15Y3x8dT09RWN8fHU+PU1jJiZ1PD1OY3x8dT09U2N8fHU9PVVjfHx1PT1hZHx8dT09ZGR8fHU9PXlkfHx1PT1DZHx8dT09RmR8fHU9PUpkfHx1PT1RZHx8dT09amV8fHU9PWxlfHx1Pj1uZSYmdTw9b2V8fHU+PXFlJiZ1PD10ZXx8dT49eGUmJnU8PUhlfHx1PT1NZXx8dT49UWUmJnU8PVJlKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYjt2YXIgdz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE2MywxLHRoaXMuaW5wdXQpO3Rocm93IHd9cz0yfX1lbHNle2lmKCEodD49diYmdDw9WHx8dD49WiYmdDw9WmN8fHQ+PV9jJiZ0PD1pZXx8dD09a2V8fHQ9PWRmfHx0PT13Zykpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGI7dmFyIHc9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNjMsMCx0aGlzLmlucHV0KTt0aHJvdyB3fXM9Mn1zd2l0Y2gocyl7Y2FzZSAxOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFkscC5GT0xMT1dfRU1QVFlfU0VRVUVOQ0VfaW5fcF9TZXF1ZW5jZVR5cGU5NTkxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm0uYWRkKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9TZXF1ZW5jZVR5cGU5NTk3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm8uYWRkKGYpLGc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX1NlcXVlbmNlVHlwZTk2MDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbi5hZGQoZyk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtiLnRyZWU9Yzt2YXIgeT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHIiLGcpLHo9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBsIixmKSxCPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gayIsZSksQz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixiIT1udWxsP2IudHJlZTpudWxsKTtjPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgRD10aGlzLmFkYXB0b3IubmlsKCk7RD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGpnLCJTZXF1ZW5jZVR5cGUiKSxEKTt2YXIgRT10aGlzLmFkYXB0b3IubmlsKCk7RT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGtnLCJFbXB0eVNlcXVlbmNlVGVzdCIpLEUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChFLEIubmV4dE5vZGUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKEUsei5uZXh0Tm9kZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRSx5Lm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChELEUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLEQpLGIudHJlZT1jfWJyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JdGVtVHlwZV9pbl9wX1NlcXVlbmNlVHlwZTk2NTApLGg9dGhpcy5wX0l0ZW1UeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZxLmFkZChoLmdldFRyZWUoKSk7dmFyIEc9MjtHPXRoaXMuZGZhMTYyLnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKEcpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3BfU2VxdWVuY2VUeXBlOTY2MSksaT10aGlzLnBfT2NjdXJyZW5jZUluZGljYXRvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmci5hZGQoaS5nZXRUcmVlKCkpfWlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7Yi50cmVlPWM7dmFyIEM9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsYiE9bnVsbD9iLnRyZWU6bnVsbCksSD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gaXQiLGghPW51bGw/aC50cmVlOm51bGwpLEk9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIG9pIixpIT1udWxsP2kudHJlZTpudWxsKTtjPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgRD10aGlzLmFkYXB0b3IubmlsKCk7RD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGpnLCJTZXF1ZW5jZVR5cGUiKSxEKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRCxILm5leHRUcmVlKCkpLEkuaGFzTmV4dCgpJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRCxJLm5leHRUcmVlKCkpLEkucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxEKSxiLnRyZWU9Y319Yi5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGIudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYi50cmVlLGIuc3RhcnQsYi5zdG9wKSl9Y2F0Y2goSyl7aWYoIShLIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBLO3RoaXMucmVwb3J0RXJyb3IoSyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsSyksYi50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxiLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLEspfWZpbmFsbHl7fXJldHVybiBifSxwX09jY3VycmVuY2VJbmRpY2F0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX09jY3VycmVuY2VJbmRpY2F0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9PY2N1cnJlbmNlSW5kaWNhdG9yX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9PY2N1cnJlbmNlSW5kaWNhdG9yOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9PY2N1cnJlbmNlSW5kaWNhdG9yX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMuaW5wdXQuTFQoMSk7aWYoISh0aGlzLmlucHV0LkxBKDEpPj15ZSYmdGhpcy5pbnB1dC5MQSgxKTw9QWUpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBmPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IGZ9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix0aGlzLmFkYXB0b3IuY3JlYXRlKGMpKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0l0ZW1UeXBlX3JldHVybjpmdW5jdGlvbigpe3AucF9JdGVtVHlwZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0l0ZW1UeXBlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JdGVtVHlwZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfSXRlbVR5cGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwscT1udWxsLHI9bnVsbCxzPW51bGwsdD1udWxsLHU9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBSUEFSRU4iKSx2PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gSVRFTSIpLHc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBCSU5BUlkiKSx4PW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTFBBUkVOIikseT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX0tpbmRUZXN0Iik7dHJ5e3ZhciB6PTU7ej10aGlzLmRmYTE2NC5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaCh6KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfS2luZFRlc3RfaW5fcF9JdGVtVHlwZTk3NjMpLGo9dGhpcy5wX0tpbmRUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ5LmFkZChqLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgQT1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgQj10aGlzLmFkYXB0b3IubmlsKCk7Qj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGxnLCJLaW5kVGVzdCIpLEIpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChCLHkubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsQiksYS50cmVlPWJ9YnJlYWs7Y2FzZSAyOmlmKCF0aGlzLmxjKG8pKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3Rocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBfSXRlbVR5cGUiLCJ0aGlzLmxjKE1MUykiKX1jPXRoaXMubWF0Y2godGhpcy5pbnB1dCxmZSxwLkZPTExPV19CSU5BUllfaW5fcF9JdGVtVHlwZTk4MDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdy5hZGQoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3BfSXRlbVR5cGU5ODA1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnguYWRkKGUpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX0l0ZW1UeXBlOTgwNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ1LmFkZChmKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1iO3ZhciBBPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBCPXRoaXMuYWRhcHRvci5uaWwoKTtCPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUodmcsIkJpbmFyeVRlc3QiKSxCKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoQix3Lm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChCLHgubmV4dE5vZGUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKEIsdS5uZXh0Tm9kZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixCKSxhLnRyZWU9Yn1icmVhaztjYXNlIDM6Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscmIscC5GT0xMT1dfSVRFTV9pbl9wX0l0ZW1UeXBlOTg0OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ2LmFkZChnKSxoPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9JdGVtVHlwZTk4NTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeC5hZGQoaCksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfSXRlbVR5cGU5ODUzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnUuYWRkKGkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7YS50cmVlPWI7dmFyIEE9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsYSE9bnVsbD9hLnRyZWU6bnVsbCk7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIEI9dGhpcy5hZGFwdG9yLm5pbCgpO0I9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShtZywiSXRlbVRlc3QiKSxCKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoQix2Lm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChCLHgubmV4dE5vZGUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKEIsdS5uZXh0Tm9kZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixCKSxhLnRyZWU9Yn1icmVhaztjYXNlIDQ6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQXRvbWljT3JVbmlvblR5cGVfaW5fcF9JdGVtVHlwZTk4OTcpLGs9dGhpcy5wX0F0b21pY09yVW5pb25UeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZV9pbl9wX0l0ZW1UeXBlOTkwOSksbD10aGlzLnBfUGFyZW50aGVzaXplZEl0ZW1UeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goQyl7aWYoIShDIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBDO3RoaXMucmVwb3J0RXJyb3IoQyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsQyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLEMpfWZpbmFsbHl7fXJldHVybiBhfSxwX0F0b21pY09yVW5pb25UeXBlX3JldHVybjpmdW5jdGlvbigpe3AucF9BdG9taWNPclVuaW9uVHlwZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0F0b21pY09yVW5pb25UeXBlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BdG9taWNPclVuaW9uVHlwZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQXRvbWljT3JVbmlvblR5cGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfUU5hbWUiKTt0cnl7dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9BdG9taWNPclVuaW9uVHlwZTk5MzUpLGM9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZlLmFkZChjLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgZz10aGlzLmFkYXB0b3IubmlsKCk7Zz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHBnLCJBdG9taWNPclVuaW9uVHlwZSIpLGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChnLGUubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZyksYS50cmVlPWJ9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0tpbmRUZXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9LaW5kVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0tpbmRUZXN0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9LaW5kVGVzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfS2luZFRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbDt0cnl7dmFyIG49MTA7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgVTpuPTE7YnJlYWs7Y2FzZSBWOm49MjticmVhaztjYXNlIEI6bj0zO2JyZWFrO2Nhc2UgVGI6bj00O2JyZWFrO2Nhc2UgU2I6bj01O2JyZWFrO2Nhc2UgT2I6bj02O2JyZWFrO2Nhc2UgSzpuPTc7YnJlYWs7Y2FzZSBaYjpuPTg7YnJlYWs7Y2FzZSB2YzpuPTk7YnJlYWs7Y2FzZSBEYjpuPTEwO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE2NSwwLHRoaXMuaW5wdXQpO3Rocm93IG99c3dpdGNoKG4pe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Eb2N1bWVudFRlc3RfaW5fcF9LaW5kVGVzdDk5ODUpLGM9dGhpcy5wX0RvY3VtZW50VGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FbGVtZW50VGVzdF9pbl9wX0tpbmRUZXN0OTk5NyksZT10aGlzLnBfRWxlbWVudFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQXR0cmlidXRlVGVzdF9pbl9wX0tpbmRUZXN0MTAwMDkpLGY9dGhpcy5wX0F0dHJpYnV0ZVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2NoZW1hRWxlbWVudFRlc3RfaW5fcF9LaW5kVGVzdDEwMDIxKSxnPXRoaXMucF9TY2hlbWFFbGVtZW50VGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TY2hlbWFBdHRyaWJ1dGVUZXN0X2luX3BfS2luZFRlc3QxMDAzMyksaD10aGlzLnBfU2NoZW1hQXR0cmlidXRlVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9QSVRlc3RfaW5fcF9LaW5kVGVzdDEwMDQ1KSxpPXRoaXMucF9QSVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDc6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29tbWVudFRlc3RfaW5fcF9LaW5kVGVzdDEwMDU3KSxqPXRoaXMucF9Db21tZW50VGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgODpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UZXh0VGVzdF9pbl9wX0tpbmRUZXN0MTAwNjkpLGs9dGhpcy5wX1RleHRUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA5OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05hbWVzcGFjZU5vZGVUZXN0X2luX3BfS2luZFRlc3QxMDA4MSksbD10aGlzLnBfTmFtZXNwYWNlTm9kZVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwuZ2V0VHJlZSgpKTticmVhaztjYXNlIDEwOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0FueUtpbmRUZXN0X2luX3BfS2luZFRlc3QxMDA5MyksbT10aGlzLnBfQW55S2luZFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0uZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChxKXtpZighKHEgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHE7dGhpcy5yZXBvcnRFcnJvcihxKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxxKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQW55S2luZFRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0FueUtpbmRUZXN0X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQW55S2luZFRlc3RfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FueUtpbmRUZXN0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9BbnlLaW5kVGVzdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LERiLHAuRk9MTE9XX05PREVfaW5fcF9BbnlLaW5kVGVzdDEwMTE5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX0FueUtpbmRUZXN0MTAxMjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfQW55S2luZFRlc3QxMDEyMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfRG9jdW1lbnRUZXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9Eb2N1bWVudFRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Eb2N1bWVudFRlc3RfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0RvY3VtZW50VGVzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRG9jdW1lbnRUZXN0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxVLHAuRk9MTE9XX0RPQ1VNRU5UX05PREVfaW5fcF9Eb2N1bWVudFRlc3QxMDE0OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9Eb2N1bWVudFRlc3QxMDE1MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKTt2YXIgbD0zLG09dGhpcy5pbnB1dC5MQSgxKTttPT1WP2w9MTptPT1UYiYmKGw9Mik7c3dpdGNoKGwpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FbGVtZW50VGVzdF9pbl9wX0RvY3VtZW50VGVzdDEwMTU0KSxnPXRoaXMucF9FbGVtZW50VGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TY2hlbWFFbGVtZW50VGVzdF9pbl9wX0RvY3VtZW50VGVzdDEwMTU4KSxoPXRoaXMucF9TY2hlbWFFbGVtZW50VGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpfWY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX0RvY3VtZW50VGVzdDEwMTYyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbjt0aGlzLnJlcG9ydEVycm9yKG4pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG4pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxuKX1maW5hbGx5e31yZXR1cm4gYX0scF9UZXh0VGVzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVGV4dFRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9UZXh0VGVzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVGV4dFRlc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1RleHRUZXN0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWmIscC5GT0xMT1dfVEVYVF9pbl9wX1RleHRUZXN0MTAxODgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3BfVGV4dFRlc3QxMDE5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcF9UZXh0VGVzdDEwMTkyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9Db21tZW50VGVzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ29tbWVudFRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Db21tZW50VGVzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ29tbWVudFRlc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0NvbW1lbnRUZXN0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSyxwLkZPTExPV19DT01NRU5UX2luX3BfQ29tbWVudFRlc3QxMDIxOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9Db21tZW50VGVzdDEwMjIwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX0NvbW1lbnRUZXN0MTAyMjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX05hbWVzcGFjZU5vZGVUZXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9OYW1lc3BhY2VOb2RlVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX05hbWVzcGFjZU5vZGVUZXN0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9OYW1lc3BhY2VOb2RlVGVzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfTmFtZXNwYWNlTm9kZVRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2YyxwLkZPTExPV19OQU1FU1BBQ0VfTk9ERV9pbl9wX05hbWVzcGFjZU5vZGVUZXN0MTAyNDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3BfTmFtZXNwYWNlTm9kZVRlc3QxMDI1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcF9OYW1lc3BhY2VOb2RlVGVzdDEwMjUyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9QSVRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1BJVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1BJVGVzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUElUZXN0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QSVRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE9iLHAuRk9MTE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT05faW5fcF9QSVRlc3QxMDI3OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9QSVRlc3QxMDI4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKTt2YXIgbD0zLG09dGhpcy5pbnB1dC5MQSgxKTttPj12JiZtPD1aY3x8bT49X2MmJm08PWllfHxtPT1kZnx8bT09d2c/bD0xOm0+PV9lJiZtPD1hZiYmKGw9Mik7c3dpdGNoKGwpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fcF9QSVRlc3QxMDI4MyksZz10aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9QSVRlc3QxMDI4NyksaD10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpfWY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX1BJVGVzdDEwMjkxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbjt0aGlzLnJlcG9ydEVycm9yKG4pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG4pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxuKX1maW5hbGx5e31yZXR1cm4gYX0scF9BdHRyaWJ1dGVUZXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9BdHRyaWJ1dGVUZXN0X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQXR0cmlidXRlVGVzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXR0cmlidXRlVGVzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQXR0cmlidXRlVGVzdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxCLHAuRk9MTE9XX0FUVFJJQlVURV9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMxNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9BdHRyaWJ1dGVUZXN0MTAzMTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSk7dmFyIG49MixvPXRoaXMuaW5wdXQuTEEoMSk7aWYobz49diYmbzw9WmN8fG8+PV9jJiZvPD1pZXx8bz09emV8fG89PWRmfHxvPT13ZyluPTE7c3dpdGNoKG4pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BdHRyaWJOYW1lT3JXaWxkY2FyZF9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMyMiksaD10aGlzLnBfQXR0cmliTmFtZU9yV2lsZGNhcmQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKTt2YXIgcT0yLHI9dGhpcy5pbnB1dC5MQSgxKTtyPT14ZSYmKHE9MSk7c3dpdGNoKHEpe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCx4ZSxwLkZPTExPV19DT01NQV9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMyNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UeXBlTmFtZV9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMyNyksaT10aGlzLnBfVHlwZU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKX19Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfQXR0cmlidXRlVGVzdDEwMzMzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHMpe2lmKCEocyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgczt0aGlzLnJlcG9ydEVycm9yKHMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHMpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxzKX1maW5hbGx5e31yZXR1cm4gYX0scF9BdHRyaWJOYW1lT3JXaWxkY2FyZF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQXR0cmliTmFtZU9yV2lsZGNhcmRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9BdHRyaWJOYW1lT3JXaWxkY2FyZF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXR0cmliTmFtZU9yV2lsZGNhcmQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0F0dHJpYk5hbWVPcldpbGRjYXJkX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7dmFyIGc9MixoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD49diYmaDw9WmN8fGg+PV9jJiZoPD1pZXx8aD09ZGZ8fGg9PXdnKWc9MTtlbHNle2lmKGghPXplKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTcwLDAsdGhpcy5pbnB1dCk7dGhyb3cgaX1nPTJ9c3dpdGNoKGcpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BdHRyaWJ1dGVOYW1lX2luX3BfQXR0cmliTmFtZU9yV2lsZGNhcmQxMDM2MSksZT10aGlzLnBfQXR0cmlidXRlTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6ZSxwLkZPTExPV19TVEFSX2luX3BfQXR0cmliTmFtZU9yV2lsZGNhcmQxMDM2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfU2NoZW1hQXR0cmlidXRlVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU2NoZW1hQXR0cmlidXRlVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1NjaGVtYUF0dHJpYnV0ZVRlc3RfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NjaGVtYUF0dHJpYnV0ZVRlc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1NjaGVtYUF0dHJpYnV0ZVRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsU2IscC5GT0xMT1dfU0NIRU1BX0FUVFJJQlVURV9pbl9wX1NjaGVtYUF0dHJpYnV0ZVRlc3QxMDM5MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9TY2hlbWFBdHRyaWJ1dGVUZXN0MTAzOTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQXR0cmlidXRlRGVjbGFyYXRpb25faW5fcF9TY2hlbWFBdHRyaWJ1dGVUZXN0MTAzOTUpLGc9dGhpcy5wX0F0dHJpYnV0ZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfU2NoZW1hQXR0cmlidXRlVGVzdDEwMzk3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9BdHRyaWJ1dGVEZWNsYXJhdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQXR0cmlidXRlRGVjbGFyYXRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9BdHRyaWJ1dGVEZWNsYXJhdGlvbl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXR0cmlidXRlRGVjbGFyYXRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0F0dHJpYnV0ZURlY2xhcmF0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0F0dHJpYnV0ZU5hbWVfaW5fcF9BdHRyaWJ1dGVEZWNsYXJhdGlvbjEwNDIzKSxjPXRoaXMucF9BdHRyaWJ1dGVOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO3RoaXMucmVwb3J0RXJyb3IoZSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGUpfWZpbmFsbHl7fXJldHVybiBhfSxwX0VsZW1lbnRUZXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9FbGVtZW50VGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0VsZW1lbnRUZXN0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FbGVtZW50VGVzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRWxlbWVudFRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwsbz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxWLHAuRk9MTE9XX0VMRU1FTlRfaW5fcF9FbGVtZW50VGVzdDEwNDQ5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX0VsZW1lbnRUZXN0MTA0NTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSk7dmFyIHE9MixyPXRoaXMuaW5wdXQuTEEoMSk7aWYocj49diYmcjw9WmN8fHI+PV9jJiZyPD1pZXx8cj09emV8fHI9PWRmfHxyPT13ZylxPTE7c3dpdGNoKHEpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FbGVtZW50TmFtZU9yV2lsZGNhcmRfaW5fcF9FbGVtZW50VGVzdDEwNDU0KSxpPXRoaXMucF9FbGVtZW50TmFtZU9yV2lsZGNhcmQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKTt2YXIgcz0yLHQ9dGhpcy5pbnB1dC5MQSgxKTt0PT14ZSYmKHM9MSk7c3dpdGNoKHMpe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCx4ZSxwLkZPTExPV19DT01NQV9pbl9wX0VsZW1lbnRUZXN0MTA0NTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVHlwZU5hbWVfaW5fcF9FbGVtZW50VGVzdDEwNDU5KSxqPXRoaXMucF9UeXBlTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpO3ZhciB1PTIsdz10aGlzLmlucHV0LkxBKDEpO3c9PXllJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOmc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHllLHAuRk9MTE9XX1FVRVNUSU9OX2luX3BfRWxlbWVudFRlc3QxMDQ2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobj10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4pKX19fWg9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX0VsZW1lbnRUZXN0MTA0NjgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixvKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goeCl7aWYoISh4IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB4O3RoaXMucmVwb3J0RXJyb3IoeCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQseCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0VsZW1lbnROYW1lT3JXaWxkY2FyZF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRWxlbWVudE5hbWVPcldpbGRjYXJkX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRWxlbWVudE5hbWVPcldpbGRjYXJkX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FbGVtZW50TmFtZU9yV2lsZGNhcmQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0VsZW1lbnROYW1lT3JXaWxkY2FyZF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg+PXYmJmg8PVpjfHxoPj1fYyYmaDw9aWV8fGg9PWRmfHxoPT13ZylnPTE7ZWxzZXtpZihoIT16ZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE3NCwwLHRoaXMuaW5wdXQpO3Rocm93IGl9Zz0yfXN3aXRjaChnKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9FbGVtZW50TmFtZU9yV2lsZGNhcmQxMDQ5NCksZT10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemUscC5GT0xMT1dfU1RBUl9pbl9wX0VsZW1lbnROYW1lT3JXaWxkY2FyZDEwNDk4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9TY2hlbWFFbGVtZW50VGVzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU2NoZW1hRWxlbWVudFRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9TY2hlbWFFbGVtZW50VGVzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU2NoZW1hRWxlbWVudFRlc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1NjaGVtYUVsZW1lbnRUZXN0X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRiLHAuRk9MTE9XX1NDSEVNQV9FTEVNRU5UX2luX3BfU2NoZW1hRWxlbWVudFRlc3QxMDUxNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9TY2hlbWFFbGVtZW50VGVzdDEwNTE4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0VsZW1lbnREZWNsYXJhdGlvbl9pbl9wX1NjaGVtYUVsZW1lbnRUZXN0MTA1MjApLGc9dGhpcy5wX0VsZW1lbnREZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX1NjaGVtYUVsZW1lbnRUZXN0MTA1MjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX0VsZW1lbnREZWNsYXJhdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRWxlbWVudERlY2xhcmF0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRWxlbWVudERlY2xhcmF0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FbGVtZW50RGVjbGFyYXRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0VsZW1lbnREZWNsYXJhdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FbGVtZW50TmFtZV9pbl9wX0VsZW1lbnREZWNsYXJhdGlvbjEwNTQ4KSxjPXRoaXMucF9FbGVtZW50TmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9BdHRyaWJ1dGVOYW1lX3JldHVybjpmdW5jdGlvbigpe3AucF9BdHRyaWJ1dGVOYW1lX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQXR0cmlidXRlTmFtZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXR0cmlidXRlTmFtZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQXR0cmlidXRlTmFtZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX0F0dHJpYnV0ZU5hbWUxMDU3NCksYz10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRWxlbWVudE5hbWVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0VsZW1lbnROYW1lX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRWxlbWVudE5hbWVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0VsZW1lbnROYW1lOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9FbGVtZW50TmFtZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX0VsZW1lbnROYW1lMTA2MDApLGM9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO3RoaXMucmVwb3J0RXJyb3IoZSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGUpfWZpbmFsbHl7fXJldHVybiBhfSxwX1R5cGVOYW1lX3JldHVybjpmdW5jdGlvbigpe3AucF9UeXBlTmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1R5cGVOYW1lX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UeXBlTmFtZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVHlwZU5hbWVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9UeXBlTmFtZTEwNjI2KSxjPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9GdW5jdGlvblRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0Z1bmN0aW9uVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0Z1bmN0aW9uVGVzdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRnVuY3Rpb25UZXN0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GdW5jdGlvblRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTthOmRve3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PXVlJiYoZz0xKTtzd2l0Y2goZyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0Fubm90YXRpb25faW5fcF9GdW5jdGlvblRlc3QxMDY1MiksYz10aGlzLnBfQW5ub3RhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO3ZhciBpPTIsaj10aGlzLmlucHV0LkxBKDEpO2lmKGohPWZiKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBtPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTc2LDAsdGhpcy5pbnB1dCk7dGhyb3cgbX12YXIgaz10aGlzLmlucHV0LkxBKDIpO2lmKGshPWtlKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBtPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTc2LDEsdGhpcy5pbnB1dCk7dGhyb3cgbX12YXIgbD10aGlzLmlucHV0LkxBKDMpO2lmKGw9PXplKWk9MTtlbHNle2lmKCEobD49diYmbDw9WmN8fGw+PV9jJiZsPD1pZXx8bD49a2UmJmw8PWxlfHxsPT1kZnx8bD09d2cpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBtPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTc2LDIsdGhpcy5pbnB1dCk7dGhyb3cgbX1pPTJ9c3dpdGNoKGkpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BbnlGdW5jdGlvblRlc3RfaW5fcF9GdW5jdGlvblRlc3QxMDY1NiksZT10aGlzLnBfQW55RnVuY3Rpb25UZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVkRnVuY3Rpb25UZXN0X2luX3BfRnVuY3Rpb25UZXN0MTA2NjApLGY9dGhpcy5wX1R5cGVkRnVuY3Rpb25UZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobil7aWYoIShuIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBuO3RoaXMucmVwb3J0RXJyb3IobiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG4pfWZpbmFsbHl7fXJldHVybiBhfSxwX0FueUZ1bmN0aW9uVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQW55RnVuY3Rpb25UZXN0X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQW55RnVuY3Rpb25UZXN0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BbnlGdW5jdGlvblRlc3Q6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0FueUZ1bmN0aW9uVGVzdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZmIscC5GT0xMT1dfRlVOQ1RJT05faW5fcF9BbnlGdW5jdGlvblRlc3QxMDY4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9BbnlGdW5jdGlvblRlc3QxMDY4OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6ZSxwLkZPTExPV19TVEFSX2luX3BfQW55RnVuY3Rpb25UZXN0MTA2OTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksZz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfQW55RnVuY3Rpb25UZXN0MTA2OTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBhfSxwX1R5cGVkRnVuY3Rpb25UZXN0X3JldHVybjpmdW5jdGlvbigpe3AucF9UeXBlZEZ1bmN0aW9uVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1R5cGVkRnVuY3Rpb25UZXN0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UeXBlZEZ1bmN0aW9uVGVzdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVHlwZWRGdW5jdGlvblRlc3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwsbz1udWxsLHE9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZmIscC5GT0xMT1dfRlVOQ1RJT05faW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzE5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3MjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSk7dmFyIHI9MixzPXRoaXMuaW5wdXQuTEEoMSk7aWYocz49diYmczw9WmN8fHM+PV9jJiZzPD1pZXx8cz09a2V8fHM9PWRmfHxzPT13ZylyPTE7c3dpdGNoKHIpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzI0KSxpPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKTthOmRve3ZhciB0PTIsdT10aGlzLmlucHV0LkxBKDEpO3U9PXhlJiYodD0xKTtzd2l0Y2godCl7Y2FzZSAxOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDcyNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzI5KSxqPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKX1nPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzM1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLGg9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHkscC5GT0xMT1dfQVNfaW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzM3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihxPXRoaXMuYWRhcHRvci5jcmVhdGUoaCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3MzkpLGs9dGhpcy5wX1NlcXVlbmNlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsay5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHcpe2lmKCEodyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdzt0aGlzLnJlcG9ydEVycm9yKHcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx3KX1maW5hbGx5e31yZXR1cm4gYX0scF9QYXJlbnRoZXNpemVkSXRlbVR5cGVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUGFyZW50aGVzaXplZEl0ZW1UeXBlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9QYXJlbnRoZXNpemVkSXRlbVR5cGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZTEwNzY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0l0ZW1UeXBlX2luX3BfUGFyZW50aGVzaXplZEl0ZW1UeXBlMTA3NjcpLGY9dGhpcy5wX0l0ZW1UeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfUGFyZW50aGVzaXplZEl0ZW1UeXBlMTA3NjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBhfSxwX1N0cmluZ0xpdGVyYWxfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1N0cmluZ0xpdGVyYWxfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9TdHJpbmdMaXRlcmFsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TdHJpbmdMaXRlcmFsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9TdHJpbmdMaXRlcmFsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEFQT1MiKSxvPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUVVPVCIpLHE9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcGdfUXVvdFN0cmluZ0xpdGVyYWxDb250ZW50Iikscj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwZ19BcG9zU3RyaW5nTGl0ZXJhbENvbnRlbnQiKTt0cnl7dmFyIHM9Mix0PXRoaXMuaW5wdXQuTEEoMSk7aWYodD09YWYpcz0xO2Vsc2V7aWYodCE9X2Upe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHU9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNzksMCx0aGlzLmlucHV0KTt0aHJvdyB1fXM9Mn1zd2l0Y2gocyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGFmLHAuRk9MTE9XX1FVT1RfaW5fcF9TdHJpbmdMaXRlcmFsMTA4MjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQoYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLnB1c2hTdHJpbmdMZXhlcighMSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudF9pbl9wX1N0cmluZ0xpdGVyYWwxMDgyNCksaD10aGlzLnBnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmcS5hZGQoaC5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGFmLHAuRk9MTE9XX1FVT1RfaW5fcF9TdHJpbmdMaXRlcmFsMTA4MjYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQoZSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLnBvcExleGVyKCk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgdj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgdz10aGlzLmFkYXB0b3IubmlsKCk7dz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHFnLCJTdHJpbmdMaXRlcmFsIiksdyk7d2hpbGUocS5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKHcscS5uZXh0VHJlZSgpKTtxLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsdyksYS50cmVlPWJ9YnJlYWs7Y2FzZSAyOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9lLHAuRk9MTE9XX0FQT1NfaW5fcF9TdHJpbmdMaXRlcmFsMTA4NjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbi5hZGQoZiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLnB1c2hTdHJpbmdMZXhlcighMCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudF9pbl9wX1N0cmluZ0xpdGVyYWwxMDg2OSksaT10aGlzLnBnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmci5hZGQoaS5nZXRUcmVlKCkpLGc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9lLHAuRk9MTE9XX0FQT1NfaW5fcF9TdHJpbmdMaXRlcmFsMTA4NzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbi5hZGQoZyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLnBvcExleGVyKCk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgdj1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgdz10aGlzLmFkYXB0b3IubmlsKCk7dz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHFnLCJTdHJpbmdMaXRlcmFsIiksdyk7d2hpbGUoci5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKHcsci5uZXh0VHJlZSgpKTtyLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsdyksYS50cmVlPWJ9fWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHgpe2lmKCEoeCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgeDt0aGlzLnJlcG9ydEVycm9yKHgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx4KX1maW5hbGx5e3RoaXMuYWRkU3RyaW5nKGEuc3RhcnQsYS5zdG9wKX1yZXR1cm4gYX0scGdfUXVvdFN0cmluZ0xpdGVyYWxDb250ZW50X3JldHVybjpmdW5jdGlvbigpe3AucGdfUXVvdFN0cmluZ0xpdGVyYWxDb250ZW50X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yz10aGlzLmFkYXB0b3IubmlsKCk7YTpkb3t2YXIgZz0yLGg9dGhpcy5pbnB1dC5MQSgxKTtpZihoPj1iJiZoPD12ZXx8aD49eGUmJmg8PV9lfHxoPj1iZiYmaDw9d2cpZz0xO3N3aXRjaChnKXtjYXNlIDE6ZT10aGlzLmlucHV0LkxUKDEpO2lmKCEodGhpcy5pbnB1dC5MQSgxKT49YiYmdGhpcy5pbnB1dC5MQSgxKTw9dmV8fHRoaXMuaW5wdXQuTEEoMSk+PXhlJiZ0aGlzLmlucHV0LkxBKDEpPD1fZXx8dGhpcy5pbnB1dC5MQSgxKT49YmYmJnRoaXMuaW5wdXQuTEEoMSk8PXdnKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBpfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsdGhpcy5hZGFwdG9yLmNyZWF0ZShlKSksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scGdfQXBvc1N0cmluZ0xpdGVyYWxDb250ZW50X3JldHVybjpmdW5jdGlvbigpe3AucGdfQXBvc1N0cmluZ0xpdGVyYWxDb250ZW50X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yz10aGlzLmFkYXB0b3IubmlsKCk7YTpkb3t2YXIgZz0yLGg9dGhpcy5pbnB1dC5MQSgxKTtpZihoPj1iJiZoPD12ZXx8aD49eGUmJmg8PSRlfHxoPj1hZiYmaDw9d2cpZz0xO3N3aXRjaChnKXtjYXNlIDE6ZT10aGlzLmlucHV0LkxUKDEpO2lmKCEodGhpcy5pbnB1dC5MQSgxKT49YiYmdGhpcy5pbnB1dC5MQSgxKTw9dmV8fHRoaXMuaW5wdXQuTEEoMSk+PXhlJiZ0aGlzLmlucHV0LkxBKDEpPD0kZXx8dGhpcy5pbnB1dC5MQSgxKT49YWYmJnRoaXMuaW5wdXQuTEEoMSk8PXdnKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBpfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsdGhpcy5hZGFwdG9yLmNyZWF0ZShlKSksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9FbGVtZW50Q29udGVudENoYXJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0VsZW1lbnRDb250ZW50Q2hhcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0VsZW1lbnRDb250ZW50Q2hhcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRWxlbWVudENvbnRlbnRDaGFyOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9FbGVtZW50Q29udGVudENoYXJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGUscC5GT0xMT1dfTF9FbGVtZW50Q29udGVudENoYXJfaW5fcF9FbGVtZW50Q29udGVudENoYXIxMTA0Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGF9LHBfUXVvdEF0dHJDb250ZW50Q2hhcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUXVvdEF0dHJDb250ZW50Q2hhcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1F1b3RBdHRyQ29udGVudENoYXJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1F1b3RBdHRyQ29udGVudENoYXI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1F1b3RBdHRyQ29udGVudENoYXJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYz1udWxsLGU9bnVsbCxmPW51bGwsZz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIExfUXVvdEF0dHJDb250ZW50Q2hhciIpO3RyeXtlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxiLHAuRk9MTE9XX0xfUXVvdEF0dHJDb250ZW50Q2hhcl9pbl9wX1F1b3RBdHRyQ29udGVudENoYXIxMTA3Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZnLmFkZChlKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1jO3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpO2M9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBpPXRoaXMuYWRhcHRvci5uaWwoKTtpPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoc2csIkF0dHJpYnV0ZVZhbHVlQ2hhciIpLGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChpLGcubmV4dE5vZGUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaSksYS50cmVlPWN9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0Fwb3NBdHRyQ29udGVudENoYXJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0Fwb3NBdHRyQ29udGVudENoYXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9BcG9zQXR0ckNvbnRlbnRDaGFyX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BcG9zQXR0ckNvbnRlbnRDaGFyOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9BcG9zQXR0ckNvbnRlbnRDaGFyX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxlPW51bGwsZj1udWxsLGc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBMX0Fwb3NBdHRyQ29udGVudENoYXIiKTt0cnl7ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYyxwLkZPTExPV19MX0Fwb3NBdHRyQ29udGVudENoYXJfaW5fcF9BcG9zQXR0ckNvbnRlbnRDaGFyMTExMjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmZy5hZGQoZSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXthLnRyZWU9Yjt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixhIT1udWxsP2EudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaT10aGlzLmFkYXB0b3IubmlsKCk7aT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHNnLCJBdHRyaWJ1dGVWYWx1ZUNoYXIiKSxpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaSxnLm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpLGEudHJlZT1ifWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9RTmFtZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUU5hbWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9RTmFtZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUU5hbWU6ZnVuY3Rpb24oKXt2YXIgYj1uZXcgcC5wX1FOYW1lX3JldHVybjtiLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9OQ05hbWUiKTt0aGlzLnNldFdzRXhwbGljaXQoITApO3RyeXt2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZighKGk+PXYmJmk8PVpjfHxpPj1fYyYmaTw9aWV8fGk9PWRmfHxpPT13Zykpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGI7dmFyIGs9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxODIsMCx0aGlzLmlucHV0KTt0aHJvdyBrfXZhciBqPXRoaXMuaW5wdXQuTEEoMik7aWYoaj09TWUpaD0xO2Vsc2V7aWYoIShqPT1hfHxqPj14JiZqPD1BfHxqPj1FJiZqPD1IfHxqPT1KfHxqPT1PfHxqPj1SJiZqPD1TfHxqPT1YfHxqPT0kfHxqPj1hYiYmajw9YmJ8fGo+PWViJiZqPD1nYnx8aj49aWImJmo8PWpifHxqPT1tYnx8aj49b2ImJmo8PXFifHxqPT10Ynx8aj49dmImJmo8PXhifHxqPT1BYnx8aj09RGJ8fGo+PUdiJiZqPD1IYnx8aj49UGImJmo8PVFifHxqPT1XYnx8aj49X2ImJmo8PWFjfHxqPT1jY3x8aj09ZmN8fGo9PWhjfHxqPT1qY3x8aj09bWN8fGo+PW9jJiZqPD11Y3x8aj49d2MmJmo8PUNjfHxqPT1FY3x8aj09SmN8fGo+PUxjJiZqPD1OY3x8aj09U2N8fGo9PVVjfHxqPT0kY3x8aj09YWR8fGo9PWRkfHxqPT15ZHx8aj09Q2R8fGo9PUZkfHxqPT1KZHx8aj09UWR8fGo+PVhkJiZqPD1ZZHx8aj49JGQmJmo8PWRlfHxqPj1qZSYmajw9dWV8fGo+PXhlJiZqPD1KZXx8aj09T2V8fGo+PVFlJiZqPD1SZXx8aj49X2UmJmo8PWFmfHxqPT1qZikpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGI7dmFyIGs9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxODIsMSx0aGlzLmlucHV0KTt0aHJvdyBrfWg9Mn1zd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wZ19RTmFtZV9pbl9wX1FOYW1lMTEyMDgpLGU9dGhpcy5wZ19RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fcF9RTmFtZTExMjIwKSxmPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmcuYWRkKGYuZ2V0VHJlZSgpKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2IudHJlZT1jO3ZhciBsPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGIhPW51bGw/Yi50cmVlOm51bGwpO2M9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBtPXRoaXMuYWRhcHRvci5uaWwoKTttPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUodGcsIlFOYW1lIiksbSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG0sZy5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxtKSxiLnRyZWU9Y319Yi5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGIudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGMpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYi50cmVlLGIuc3RhcnQsYi5zdG9wKSl9Y2F0Y2gobil7aWYoIShuIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBuO3RoaXMucmVwb3J0RXJyb3IobiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbiksYi50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxiLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG4pfWZpbmFsbHl7dGhpcy5zZXRXc0V4cGxpY2l0KCExKX1yZXR1cm4gYn0scGdfRlFOYW1lX3JldHVybjpmdW5jdGlvbigpe3AucGdfRlFOYW1lX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBnX0ZRTmFtZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBnX0ZRTmFtZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBnX0ZRTmFtZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfRk5DTmFtZSIpO3RyeXt2YXIgZz0yO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIHY6Y2FzZSB3OmNhc2UgeDpjYXNlIHk6Y2FzZSB6OmNhc2UgQTpjYXNlIEM6Y2FzZSBEOmNhc2UgRTpjYXNlIEY6Y2FzZSBHOmNhc2UgSDpjYXNlIEk6Y2FzZSBKOmNhc2UgTDpjYXNlIE06Y2FzZSBOOmNhc2UgTzpjYXNlIFA6Y2FzZSBROmNhc2UgUjpjYXNlIFM6Y2FzZSBUOmNhc2UgVzpjYXNlIFg6Y2FzZSBaOmNhc2UgJDpjYXNlIF86Y2FzZSBhYjpjYXNlIGJiOmNhc2UgY2I6Y2FzZSBkYjpjYXNlIGViOmNhc2UgZmI6Y2FzZSBnYjpjYXNlIGhiOmNhc2UgaWI6Y2FzZSBqYjpjYXNlIGxiOmNhc2UgbWI6Y2FzZSBuYjpjYXNlIG9iOmNhc2UgcGI6Y2FzZSBxYjpjYXNlIHNiOmNhc2UgdGI6Y2FzZSB1YjpjYXNlIHZiOmNhc2Ugd2I6Y2FzZSB4YjpjYXNlIHliOmNhc2UgemI6Y2FzZSBBYjpjYXNlIEJiOmNhc2UgQ2I6Y2FzZSBFYjpjYXNlIEZiOmNhc2UgR2I6Y2FzZSBIYjpjYXNlIEliOmNhc2UgSmI6Y2FzZSBLYjpjYXNlIExiOmNhc2UgTWI6Y2FzZSBOYjpjYXNlIFBiOmNhc2UgUWI6Y2FzZSBSYjpjYXNlIFViOmNhc2UgVmI6Y2FzZSBXYjpjYXNlIFhiOmNhc2UgWWI6Y2FzZSAkYjpjYXNlIF9iOmNhc2UgYWM6Y2FzZSBjYzpjYXNlIGRjOmNhc2UgZWM6Y2FzZSBmYzpjYXNlIGdjOmNhc2UgaGM6Y2FzZSBpYzpjYXNlIGpjOmNhc2Uga2M6Y2FzZSBsYzpjYXNlIG1jOmNhc2UgbmM6Y2FzZSBvYzpjYXNlIHBjOmNhc2UgcWM6Y2FzZSByYzpjYXNlIHNjOmNhc2UgdGM6Y2FzZSB1YzpjYXNlIHdjOmNhc2UgeGM6Y2FzZSB5YzpjYXNlIHpjOmNhc2UgQWM6Y2FzZSBCYzpjYXNlIENjOmNhc2UgRGM6Y2FzZSBFYzpjYXNlIEdjOmNhc2UgSGM6Y2FzZSBJYzpjYXNlIEpjOmNhc2UgS2M6Y2FzZSBMYzpjYXNlIE1jOmNhc2UgTmM6Y2FzZSBPYzpjYXNlIFBjOmNhc2UgUWM6Y2FzZSBSYzpjYXNlIFNjOmNhc2UgVGM6Y2FzZSBVYzpjYXNlIFZjOmNhc2UgV2M6Y2FzZSBYYzpjYXNlIFljOmNhc2UgWmM6Y2FzZSBfYzpjYXNlIGFkOmNhc2UgYmQ6Y2FzZSBjZDpjYXNlIGRkOmNhc2UgZWQ6Y2FzZSBmZDpjYXNlIGdkOmNhc2UgaGQ6Y2FzZSBpZDpjYXNlIGpkOmNhc2Uga2Q6Y2FzZSBsZDpjYXNlIG1kOmNhc2UgbmQ6Y2FzZSBvZDpjYXNlIHBkOmNhc2UgcWQ6Y2FzZSByZDpjYXNlIHNkOmNhc2UgdGQ6Y2FzZSB1ZDpjYXNlIHZkOmNhc2Ugd2Q6Y2FzZSB4ZDpjYXNlIHlkOmNhc2UgemQ6Y2FzZSBBZDpjYXNlIEJkOmNhc2UgQ2Q6Y2FzZSBEZDpjYXNlIEVkOmNhc2UgRmQ6Y2FzZSBHZDpjYXNlIEhkOmNhc2UgSWQ6Y2FzZSBKZDpjYXNlIEtkOmNhc2UgTGQ6Y2FzZSBNZDpjYXNlIE5kOmNhc2UgT2Q6Y2FzZSBQZDpjYXNlIFFkOmNhc2UgUmQ6Y2FzZSBTZDpjYXNlIFRkOmNhc2UgVWQ6Y2FzZSBWZDpjYXNlIFhkOmNhc2UgWWQ6Y2FzZSBaZDpjYXNlICRkOmNhc2UgX2Q6Y2FzZSBhZTpjYXNlIGJlOmNhc2UgY2U6Y2FzZSBkZTpjYXNlIGVlOmNhc2UgZmU6Y2FzZSBnZTpjYXNlIGhlOmNhc2UgaWU6Y2FzZSBkZjpjYXNlIHdnOnZhciBoPXRoaXMuaW5wdXQuTEEoMik7aWYoaD09TWUpZz0xO2Vsc2V7aWYoaCE9a2Upe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGk9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxODMsMSx0aGlzLmlucHV0KTt0aHJvdyBpfWc9Mn1icmVhaztjYXNlIEI6Y2FzZSBLOmNhc2UgVTpjYXNlIFY6Y2FzZSBZOmNhc2Uga2I6Y2FzZSByYjpjYXNlIERiOmNhc2UgT2I6Y2FzZSBTYjpjYXNlIFRiOmNhc2UgWmI6Y2FzZSBiYzpjYXNlIHZjOmNhc2UgRmM6Y2FzZSBXZDpnPTE7YnJlYWs7Y2FzZSAkYzpnPTI7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTgzLDAsdGhpcy5pbnB1dCk7dGhyb3cgaX1zd2l0Y2goZyl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wZ19RTmFtZV9pbl9wZ19GUU5hbWUxMTI4MSksYz10aGlzLnBnX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZOQ05hbWVfaW5fcGdfRlFOYW1lMTEyOTMpLGU9dGhpcy5wX0ZOQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmYuYWRkKGUuZ2V0VHJlZSgpKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2EudHJlZT1iO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGEhPW51bGw/YS50cmVlOm51bGwpO2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBrPXRoaXMuYWRhcHRvci5uaWwoKTtrPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUodGcsIlFOYW1lIiksayksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGssZi5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSxhLnRyZWU9Yn19YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBhfSxwZ19RTmFtZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBnX1FOYW1lX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBnX1FOYW1lX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscGdfUU5hbWU6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wZ19RTmFtZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBDT0xPTiIpLGk9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9OQ05hbWUiKTt0cnl7dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTkNOYW1lX2luX3BnX1FOYW1lMTEzMzcpLGU9dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaS5hZGQoZS5nZXRUcmVlKCkpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE1lLHAuRk9MTE9XX0NPTE9OX2luX3BnX1FOYW1lMTEzMzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaC5hZGQoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfTkNOYW1lX2luX3BnX1FOYW1lMTEzNDMpLGY9dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaS5hZGQoZi5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7YS50cmVlPWI7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsYSE9bnVsbD9hLnRyZWU6bnVsbCksaz1uZXcgZC5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gbm4iLGUhPW51bGw/ZS50cmVlOm51bGwpLGw9bmV3IGQuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIG5sIixmIT1udWxsP2YudHJlZTpudWxsKTtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbT10aGlzLmFkYXB0b3IubmlsKCk7bT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHRnLCJRTmFtZSIpLG0pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChtLGsubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG0sbC5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSxhLnRyZWU9Yn1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG47dGhpcy5yZXBvcnRFcnJvcihuKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxuKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbil9ZmluYWxseXt9cmV0dXJuIGF9LHBfTkNOYW1lX3JldHVybjpmdW5jdGlvbigpe3AucF9OQ05hbWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9OQ05hbWVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX05DTmFtZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfTkNOYW1lX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMuaW5wdXQuTFQoMSk7aWYoISh0aGlzLmlucHV0LkxBKDEpPj12JiZ0aGlzLmlucHV0LkxBKDEpPD1aY3x8dGhpcy5pbnB1dC5MQSgxKT49X2MmJnRoaXMuaW5wdXQuTEEoMSk8PWllfHx0aGlzLmlucHV0LkxBKDEpPT1kZnx8dGhpcy5pbnB1dC5MQSgxKT09d2cpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBmPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IGZ9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix0aGlzLmFkYXB0b3IuY3JlYXRlKGMpKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZOQ05hbWVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZOQ05hbWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GTkNOYW1lX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GTkNOYW1lOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GTkNOYW1lX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMuaW5wdXQuTFQoMSk7aWYoISh0aGlzLmlucHV0LkxBKDEpPj12JiZ0aGlzLmlucHV0LkxBKDEpPD1BfHx0aGlzLmlucHV0LkxBKDEpPj1DJiZ0aGlzLmlucHV0LkxBKDEpPD1KfHx0aGlzLmlucHV0LkxBKDEpPj1MJiZ0aGlzLmlucHV0LkxBKDEpPD1UfHx0aGlzLmlucHV0LkxBKDEpPj1XJiZ0aGlzLmlucHV0LkxBKDEpPD1YfHx0aGlzLmlucHV0LkxBKDEpPj1aJiZ0aGlzLmlucHV0LkxBKDEpPD1qYnx8dGhpcy5pbnB1dC5MQSgxKT49bGImJnRoaXMuaW5wdXQuTEEoMSk8PXFifHx0aGlzLmlucHV0LkxBKDEpPj1zYiYmdGhpcy5pbnB1dC5MQSgxKTw9Q2J8fHRoaXMuaW5wdXQuTEEoMSk+PUViJiZ0aGlzLmlucHV0LkxBKDEpPD1OYnx8dGhpcy5pbnB1dC5MQSgxKT49UGImJnRoaXMuaW5wdXQuTEEoMSk8PVJifHx0aGlzLmlucHV0LkxBKDEpPj1VYiYmdGhpcy5pbnB1dC5MQSgxKTw9WWJ8fHRoaXMuaW5wdXQuTEEoMSk+PSRiJiZ0aGlzLmlucHV0LkxBKDEpPD1hY3x8dGhpcy5pbnB1dC5MQSgxKT49Y2MmJnRoaXMuaW5wdXQuTEEoMSk8PXVjfHx0aGlzLmlucHV0LkxBKDEpPj13YyYmdGhpcy5pbnB1dC5MQSgxKTw9RWN8fHRoaXMuaW5wdXQuTEEoMSk+PUdjJiZ0aGlzLmlucHV0LkxBKDEpPD1WZHx8dGhpcy5pbnB1dC5MQSgxKT49WGQmJnRoaXMuaW5wdXQuTEEoMSk8PWllfHx0aGlzLmlucHV0LkxBKDEpPT1kZnx8dGhpcy5pbnB1dC5MQSgxKT09d2cpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBmPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IGZ9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix0aGlzLmFkYXB0b3IuY3JlYXRlKGMpKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBhfSxwZ19VcGRhdGVFeHByX3JldHVybjpmdW5jdGlvbigpe3AucGdfVXBkYXRlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wZ19VcGRhdGVFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscGdfVXBkYXRlRXhwcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBnX1VwZGF0ZUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e3ZhciBpPTU7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgUmM6aT0xO2JyZWFrO2Nhc2UgUGM6aT0yO2JyZWFrO2Nhc2UgV2M6aT0zO2JyZWFrO2Nhc2UgWGM6aT00O2JyZWFrO2Nhc2UgT2M6aT01O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE4NCwwLHRoaXMuaW5wdXQpO3Rocm93IGp9c3dpdGNoKGkpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JbnNlcnRFeHByX2luX3BnX1VwZGF0ZUV4cHIxMzMzNCksYz10aGlzLnBfSW5zZXJ0RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9EZWxldGVFeHByX2luX3BnX1VwZGF0ZUV4cHIxMzM0NiksZT10aGlzLnBfRGVsZXRlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9SZW5hbWVFeHByX2luX3BnX1VwZGF0ZUV4cHIxMzM1OCksZj10aGlzLnBfUmVuYW1lRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9SZXBsYWNlRXhwcl9pbl9wZ19VcGRhdGVFeHByMTMzNzApLGc9dGhpcy5wX1JlcGxhY2VFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1RyYW5zZm9ybUV4cHJfaW5fcGdfVXBkYXRlRXhwcjEzMzgyKSxoPXRoaXMucF9UcmFuc2Zvcm1FeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwbV9SZXZhbGlkYXRpb25EZWNsX3JldHVybjpmdW5jdGlvbigpe3AucG1fUmV2YWxpZGF0aW9uRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wbV9SZXZhbGlkYXRpb25EZWNsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fUmV2YWxpZGF0aW9uRGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBtX1JldmFsaWRhdGlvbkRlY2xfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE4scC5GT0xMT1dfREVDTEFSRV9pbl9wbV9SZXZhbGlkYXRpb25EZWNsMTM0MTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksZC5hbnRsci5sYW5nLmlzTnVsbChmKSYmKGY9W10pLGYucHVzaChlKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxZYyxwLkZPTExPV19SRVZBTElEQVRJT05faW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDE0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGQuYW50bHIubGFuZy5pc051bGwoZikmJihmPVtdKSxmLnB1c2goZSk7dmFyIGk9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBYYjppPTE7YnJlYWs7Y2FzZSBzYjppPTI7YnJlYWs7Y2FzZSBaYzppPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTg1LDAsdGhpcy5pbnB1dCk7dGhyb3cgan1zd2l0Y2goaSl7Y2FzZSAxOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFhiLHAuRk9MTE9XX1NUUklDVF9pbl9wbV9SZXZhbGlkYXRpb25EZWNsMTM0MTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksZC5hbnRsci5sYW5nLmlzTnVsbChmKSYmKGY9W10pLGYucHVzaChlKTticmVhaztjYXNlIDI6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2IscC5GT0xMT1dfTEFYX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQyNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGYpJiYoZj1bXSksZi5wdXNoKGUpO2JyZWFrO2Nhc2UgMzplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxaYyxwLkZPTExPV19TS0lQX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQzMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGYpJiYoZj1bXSksZi5wdXNoKGUpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhmKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZSxwLkZPTExPV19TRU1JQ09MT05faW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlX3JldHVybjpmdW5jdGlvbigpe3AucF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfSW5zZXJ0RXhwclRhcmdldENob2ljZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW5zZXJ0RXhwclRhcmdldENob2ljZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfSW5zZXJ0RXhwclRhcmdldENob2ljZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsO3RyeXt2YXIgaz0zO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIHk6Y2FzZSBTYzprPTE7YnJlYWs7Y2FzZSBNYzprPTI7YnJlYWs7Y2FzZSBOYzprPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBsPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTg4LDAsdGhpcy5pbnB1dCk7dGhyb3cgbH1zd2l0Y2goayl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBtPTIsbj10aGlzLmlucHV0LkxBKDEpO249PXkmJihtPTEpO3N3aXRjaChtKXtjYXNlIDE6Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQseSxwLkZPTExPV19BU19pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzQ2Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxkLmFudGxyLmxhbmcuaXNOdWxsKGcpJiYoZz1bXSksZy5wdXNoKGYpO3ZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO2lmKHE9PVFjKW89MTtlbHNle2lmKHEhPVRjKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBsPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTg2LDAsdGhpcy5pbnB1dCk7dGhyb3cgbH1vPTJ9c3dpdGNoKG8pe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRYyxwLkZPTExPV19GSVJTVF9pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzQ3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxkLmFudGxyLmxhbmcuaXNOdWxsKGcpJiYoZz1bXSksZy5wdXNoKGYpO2JyZWFrO2Nhc2UgMjpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUYyxwLkZPTExPV19MQVNUX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNDc3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLGQuYW50bHIubGFuZy5pc051bGwoZykmJihnPVtdKSxnLnB1c2goZil9fWY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFNjLHAuRk9MTE9XX0lOVE9faW5fcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlMTM0ODQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksZC5hbnRsci5sYW5nLmlzTnVsbChnKSYmKGc9W10pLGcucHVzaChmKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZyk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE1jLHAuRk9MTE9XX0FGVEVSX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNTAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTmMscC5GT0xMT1dfQkVGT1JFX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNTE3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChyKXtpZighKHIgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHI7dGhpcy5yZXBvcnRFcnJvcihyKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxyKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscil9ZmluYWxseXt9cmV0dXJuIGF9LHBfSW5zZXJ0RXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSW5zZXJ0RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0luc2VydEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luc2VydEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0luc2VydEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxSYyxwLkZPTExPV19JTlNFUlRfaW5fcF9JbnNlcnRFeHByMTM1NDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTt2YXIgaj0yLGs9dGhpcy5pbnB1dC5MQSgxKTtpZihrPT1EYilqPTE7ZWxzZXtpZihrIT1WYyl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE4OSwwLHRoaXMuaW5wdXQpO3Rocm93IGx9aj0yfXN3aXRjaChqKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRGIscC5GT0xMT1dfTk9ERV9pbl9wX0luc2VydEV4cHIxMzU1Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO2JyZWFrO2Nhc2UgMjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxWYyxwLkZPTExPV19OT0RFU19pbl9wX0luc2VydEV4cHIxMzU1OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1NvdXJjZUV4cHJfaW5fcF9JbnNlcnRFeHByMTM1NjEpLGY9dGhpcy5wX1NvdXJjZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlX2luX3BfSW5zZXJ0RXhwcjEzNTYzKSxnPXRoaXMucF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVGFyZ2V0RXhwcl9pbl9wX0luc2VydEV4cHIxMzU2NSksaD10aGlzLnBfVGFyZ2V0RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChtKXtpZighKG0gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG07dGhpcy5yZXBvcnRFcnJvcihtKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxtKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRGVsZXRlRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRGVsZXRlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0RlbGV0ZUV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0RlbGV0ZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0RlbGV0ZUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUGMscC5GT0xMT1dfREVMRVRFX2luX3BfRGVsZXRlRXhwcjEzNTk1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaT09RGIpaD0xO2Vsc2V7aWYoaSE9VmMpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxOTAsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1zd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LERiLHAuRk9MTE9XX05PREVfaW5fcF9EZWxldGVFeHByMTM2MDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVmMscC5GT0xMT1dfTk9ERVNfaW5fcF9EZWxldGVFeHByMTM2MDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKX10aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UYXJnZXRFeHByX2luX3BfRGVsZXRlRXhwcjEzNjA5KSxmPXRoaXMucF9UYXJnZXRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9SZXBsYWNlRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUmVwbGFjZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9SZXBsYWNlRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUmVwbGFjZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1JlcGxhY2VFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxYYyxwLkZPTExPV19SRVBMQUNFX2luX3BfUmVwbGFjZUV4cHIxMzYzOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO3ZhciBpPTIsaj10aGlzLmlucHV0LkxBKDEpO2o9PV9jJiYoaT0xKTtzd2l0Y2goaSl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9jLHAuRk9MTE9XX1ZBTFVFX2luX3BfUmVwbGFjZUV4cHIxMzY0NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEViLHAuRk9MTE9XX09GX2luX3BfUmVwbGFjZUV4cHIxMzY0OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfWM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LERiLHAuRk9MTE9XX05PREVfaW5fcF9SZXBsYWNlRXhwcjEzNjU0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1JlcGxhY2VFeHByMTM2NTYpLGY9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGFkLHAuRk9MTE9XX1dJVEhfaW5fcF9SZXBsYWNlRXhwcjEzNjYxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1JlcGxhY2VFeHByMTM2NjMpLGc9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfUmVuYW1lRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfUmVuYW1lRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1JlbmFtZUV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1JlbmFtZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1JlbmFtZUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFdjLHAuRk9MTE9XX1JFTkFNRV9pbl9wX1JlbmFtZUV4cHIxMzY5NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LERiLHAuRk9MTE9XX05PREVfaW5fcF9SZW5hbWVFeHByMTM2OTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UYXJnZXRFeHByX2luX3BfUmVuYW1lRXhwcjEzNzAwKSxmPXRoaXMucF9UYXJnZXRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseSxwLkZPTExPV19BU19pbl9wX1JlbmFtZUV4cHIxMzcwNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX05ld05hbWVFeHByX2luX3BfUmVuYW1lRXhwcjEzNzA2KSxnPXRoaXMucF9OZXdOYW1lRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU291cmNlRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU291cmNlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1NvdXJjZUV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NvdXJjZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1NvdXJjZUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1NvdXJjZUV4cHIxMzczNCksYz10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO3RoaXMucmVwb3J0RXJyb3IoZSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGUpfWZpbmFsbHl7fXJldHVybiBhfSxwX1RhcmdldEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1RhcmdldEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9UYXJnZXRFeHByX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UYXJnZXRFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9UYXJnZXRFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9UYXJnZXRFeHByMTM3NjEpLGM9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9OZXdOYW1lRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfTmV3TmFtZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9OZXdOYW1lRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTmV3TmFtZUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX05ld05hbWVFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9OZXdOYW1lRXhwcjEzNzg4KSxjPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfVHJhbnNmb3JtRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVHJhbnNmb3JtRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1RyYW5zZm9ybUV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1RyYW5zZm9ybUV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1RyYW5zZm9ybUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwsbz1udWxsLHE9bnVsbCxyPW51bGwscz1udWxsLHQ9bnVsbCx1PW51bGwsdj1udWxsLHc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsT2MscC5GT0xMT1dfQ09QWV9pbl9wX1RyYW5zZm9ybUV4cHIxMzgxNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodz10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGopJiYoaj1bXSksai5wdXNoKGkpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1RyYW5zZm9ybUV4cHIxMzgyMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHIpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfVHJhbnNmb3JtRXhwcjEzODI1KSxrPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGMsaz9rLnN0b3A6bnVsbCksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2UscC5GT0xMT1dfQklORF9pbl9wX1RyYW5zZm9ybUV4cHIxMzgyOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodD10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHQpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODMxKSxtPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0uZ2V0VHJlZSgpKTthOmRve3ZhciB4PTIseT10aGlzLmlucHV0LkxBKDEpO3k9PXhlJiYoeD0xKTtzd2l0Y2goeCl7Y2FzZSAxOmc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BfVHJhbnNmb3JtRXhwcjEzODM1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsdSkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1RyYW5zZm9ybUV4cHIxMzgzOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHMpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfVHJhbnNmb3JtRXhwcjEzODQzKSxsPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGUsbD9sLnN0b3A6bnVsbCksaD10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2UscC5GT0xMT1dfQklORF9pbl9wX1RyYW5zZm9ybUV4cHIxMzg0Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodj10aGlzLmFkYXB0b3IuY3JlYXRlKGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHYpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODQ5KSxuPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4uZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTtpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxVYyxwLkZPTExPV19NT0RJRllfaW5fcF9UcmFuc2Zvcm1FeHByMTM4NTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHc9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix3KSksZC5hbnRsci5sYW5nLmlzTnVsbChqKSYmKGo9W10pLGoucHVzaChpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODU4KSxvPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8uZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQYixwLkZPTExPV19SRVRVUk5faW5fcF9UcmFuc2Zvcm1FeHByMTM4NjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHc9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix3KSksZC5hbnRsci5sYW5nLmlzTnVsbChqKSYmKGo9W10pLGoucHVzaChpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODY1KSxxPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHEuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaiksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goeil7aWYoISh6IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB6O3RoaXMucmVwb3J0RXJyb3IoeiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQseiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHopfWZpbmFsbHl7fXJldHVybiBhfSxwbV9GVE9wdGlvbkRlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wbV9GVE9wdGlvbkRlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucG1fRlRPcHRpb25EZWNsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fRlRPcHRpb25EZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucG1fRlRPcHRpb25EZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTixwLkZPTExPV19ERUNMQVJFX2luX3BtX0ZUT3B0aW9uRGVjbDEzOTAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGQuYW50bHIubGFuZy5pc051bGwoZikmJihmPVtdKSxmLnB1c2goZSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGQscC5GT0xMT1dfRlRfT1BUSU9OX2luX3BtX0ZUT3B0aW9uRGVjbDEzOTA3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGQuYW50bHIubGFuZy5pc051bGwoZikmJihmPVtdKSxmLnB1c2goZSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRNYXRjaE9wdGlvbnNfaW5fcG1fRlRPcHRpb25EZWNsMTM5MDkpLGc9dGhpcy5wX0ZUTWF0Y2hPcHRpb25zKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0ZUT3B0aW9uRGVjbDEzOTExKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhmKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRTY29yZVZhcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRTY29yZVZhcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUU2NvcmVWYXJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUU2NvcmVWYXI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUU2NvcmVWYXJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LENkLHAuRk9MTE9XX1NDT1JFX2luX3BfRlRTY29yZVZhcjEzOTQxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9GVFNjb3JlVmFyMTM5NDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0ZUU2NvcmVWYXIxMzk1MSksZj10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihlLGY/Zi5zdG9wOm51bGwpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVENvbnRhaW5zRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRDb250YWluc0V4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVENvbnRhaW5zRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRDb250YWluc0V4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUQ29udGFpbnNFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nQ29uY2F0RXhwcl9pbl9wX0ZUQ29udGFpbnNFeHByMTM5NzkpLGY9dGhpcy5wX1N0cmluZ0NvbmNhdEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTt2YXIgaj0yLGs9dGhpcy5pbnB1dC5MQSgxKTtrPT1kZCYmKGo9MSk7c3dpdGNoKGope2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkZCxwLkZPTExPV19DT05UQUlOU19pbl9wX0ZUQ29udGFpbnNFeHByMTM5ODUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxaYixwLkZPTExPV19URVhUX2luX3BfRlRDb250YWluc0V4cHIxMzk4OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFNlbGVjdGlvbl9pbl9wX0ZUQ29udGFpbnNFeHByMTM5OTMpLGc9dGhpcy5wX0ZUU2VsZWN0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7dmFyIGw9MixtPXRoaXMuaW5wdXQuTEEoMSk7bT09T2QmJihsPTEpO3N3aXRjaChsKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRJZ25vcmVPcHRpb25faW5fcF9GVENvbnRhaW5zRXhwcjEzOTk1KSxoPXRoaXMucF9GVElnbm9yZU9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpfX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG47dGhpcy5yZXBvcnRFcnJvcihuKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxuKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbil9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRTZWxlY3Rpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUU2VsZWN0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRTZWxlY3Rpb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVFNlbGVjdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRPcl9pbl9wX0ZUU2VsZWN0aW9uMTQwMjUpLGM9dGhpcy5wX0ZUT3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKTthOmRve3ZhciBmPTIsZz10aGlzLmlucHV0LkxBKDEpO2lmKGc9PUF8fGc9PUlifHxnPT1LY3x8Zz49Z2QmJmc8PWlkfHxnPT1CZClmPTE7c3dpdGNoKGYpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFBvc0ZpbHRlcl9pbl9wX0ZUU2VsZWN0aW9uMTQwMjcpLGU9dGhpcy5wX0ZUUG9zRmlsdGVyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUV2VpZ2h0X3JldHVybjpmdW5jdGlvbigpe3AucF9GVFdlaWdodF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUV2VpZ2h0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFdlaWdodDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRXZWlnaHRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTWQscC5GT0xMT1dfV0VJR0hUX2luX3BfRlRXZWlnaHQxNDA1Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcF9GVFdlaWdodDE0MDYwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcF9GVFdlaWdodDE0MDYyKSxnPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZSxwLkZPTExPV19SQlJBQ0tFVF9pbl9wX0ZUV2VpZ2h0MTQwNjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUT3JfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUT3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVE9yX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVE9yOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVE9yX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUQW5kX2luX3BfRlRPcjE0MDkxKSxlPXRoaXMucF9GVEFuZCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2E6ZG97dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09b2QmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2QscC5GT0xMT1dfRlRPUl9pbl9wX0ZUT3IxNDA5Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRBbmRfaW5fcF9GVE9yMTQxMDEpLGY9dGhpcy5wX0ZUQW5kKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUQW5kX3JldHVybjpmdW5jdGlvbigpe3AucF9GVEFuZF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUQW5kX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVEFuZDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRBbmRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRNaWxkTm90X2luX3BfRlRBbmQxNDEzMCksZT10aGlzLnBfRlRNaWxkTm90KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YTpkb3t2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpPT1tZCYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZCxwLkZPTExPV19GVEFORF9pbl9wX0ZUQW5kMTQxMzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUTWlsZE5vdF9pbl9wX0ZUQW5kMTQxNDApLGY9dGhpcy5wX0ZUTWlsZE5vdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVE1pbGROb3RfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUTWlsZE5vdF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUTWlsZE5vdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRNaWxkTm90OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVE1pbGROb3RfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUVW5hcnlOb3RfaW5fcF9GVE1pbGROb3QxNDE2OSksZj10aGlzLnBfRlRVbmFyeU5vdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2E6ZG97dmFyIGk9MixqPXRoaXMuaW5wdXQuTEEoMSk7aj09dmQmJihpPTEpO3N3aXRjaChpKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmQscC5GT0xMT1dfTk9UX2luX3BfRlRNaWxkTm90MTQxNzUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtYixwLkZPTExPV19JTl9pbl9wX0ZUTWlsZE5vdDE0MTc5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUVW5hcnlOb3RfaW5fcF9GVE1pbGROb3QxNDE4MyksZz10aGlzLnBfRlRVbmFyeU5vdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Euc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVFVuYXJ5Tm90X3JldHVybjpmdW5jdGlvbigpe3AucF9GVFVuYXJ5Tm90X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRVbmFyeU5vdF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRVbmFyeU5vdDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRVbmFyeU5vdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PW5kJiYoZz0xKTtzd2l0Y2goZyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5kLHAuRk9MTE9XX0ZUTk9UX2luX3BfRlRVbmFyeU5vdDE0MjE2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKX10aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFByaW1hcnlXaXRoT3B0aW9uc19pbl9wX0ZUVW5hcnlOb3QxNDIyMyksZT10aGlzLnBfRlRQcmltYXJ5V2l0aE9wdGlvbnMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRQcmltYXJ5V2l0aE9wdGlvbnNfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUUHJpbWFyeVdpdGhPcHRpb25zX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRQcmltYXJ5V2l0aE9wdGlvbnNfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUUHJpbWFyeVdpdGhPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVFByaW1hcnlXaXRoT3B0aW9uc19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUUHJpbWFyeV9pbl9wX0ZUUHJpbWFyeVdpdGhPcHRpb25zMTQyNDkpLGM9dGhpcy5wX0ZUUHJpbWFyeSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PUxkJiYoZz0xKTtzd2l0Y2goZyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUTWF0Y2hPcHRpb25zX2luX3BfRlRQcmltYXJ5V2l0aE9wdGlvbnMxNDI1MSksZT10aGlzLnBfRlRNYXRjaE9wdGlvbnMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKX12YXIgaT0yLGo9dGhpcy5pbnB1dC5MQSgxKTtqPT1NZCYmKGk9MSk7c3dpdGNoKGkpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFdlaWdodF9pbl9wX0ZUUHJpbWFyeVdpdGhPcHRpb25zMTQyNTQpLGY9dGhpcy5wX0ZUV2VpZ2h0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUUHJpbWFyeV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRQcmltYXJ5X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRQcmltYXJ5X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFByaW1hcnk6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUUHJpbWFyeV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbDt0cnl7dmFyIGw9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBuZTpjYXNlIF9lOmNhc2UgYWY6bD0xO2JyZWFrO2Nhc2Uga2U6bD0yO2JyZWFrO2Nhc2UgbGY6bD0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbT1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIwMywwLHRoaXMuaW5wdXQpO3Rocm93IG19c3dpdGNoKGwpe2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFdvcmRzX2luX3BfRlRQcmltYXJ5MTQyODUpLGY9dGhpcy5wX0ZUV29yZHMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTt2YXIgbj0yLG89dGhpcy5pbnB1dC5MQSgxKTtvPT13ZCYmKG49MSk7c3dpdGNoKG4pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFRpbWVzX2luX3BfRlRQcmltYXJ5MTQyODcpLGc9dGhpcy5wX0ZUVGltZXMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKX1icmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3BfRlRQcmltYXJ5MTQzMDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRTZWxlY3Rpb25faW5fcF9GVFByaW1hcnkxNDMwNCksaD10aGlzLnBfRlRTZWxlY3Rpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcF9GVFByaW1hcnkxNDMwNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKTticmVhaztjYXNlIDM6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRFeHRlbnNpb25TZWxlY3Rpb25faW5fcF9GVFByaW1hcnkxNDMxOSksaT10aGlzLnBfRlRFeHRlbnNpb25TZWxlY3Rpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChxKXtpZighKHEgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHE7dGhpcy5yZXBvcnRFcnJvcihxKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxxKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRXb3Jkc19yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRXb3Jkc19yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUV29yZHNfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUV29yZHM6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUV29yZHNfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUV29yZHNWYWx1ZV9pbl9wX0ZUV29yZHMxNDM0NSksYz10aGlzLnBfRlRXb3Jkc1ZhbHVlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7dmFyIGY9MixnPXRoaXMuaW5wdXQuTEEoMSk7aWYoZz49YmQmJmc8PWNkfHxnPT16ZClmPTE7c3dpdGNoKGYpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVEFueWFsbE9wdGlvbl9pbl9wX0ZUV29yZHMxNDM0NyksZT10aGlzLnBfRlRBbnlhbGxPcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRXb3Jkc1ZhbHVlX3JldHVybjpmdW5jdGlvbigpe3AucF9GVFdvcmRzVmFsdWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVFdvcmRzVmFsdWVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUV29yZHNWYWx1ZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRXb3Jkc1ZhbHVlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7dmFyIGo9MixrPXRoaXMuaW5wdXQuTEEoMSk7aWYoaz49X2UmJms8PWFmKWo9MTtlbHNle2lmKGshPW5lKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBsPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjA1LDAsdGhpcy5pbnB1dCk7dGhyb3cgbH1qPTJ9c3dpdGNoKGope2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRXb3Jkc1ZhbHVlMTQzNzQpLGY9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcF9GVFdvcmRzVmFsdWUxNDM4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BfRlRXb3Jkc1ZhbHVlMTQzODkpLGc9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BfRlRXb3Jkc1ZhbHVlMTQzOTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobSl7aWYoIShtIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBtO3RoaXMucmVwb3J0RXJyb3IobSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG0pfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZURXh0ZW5zaW9uU2VsZWN0aW9uX3JldHVybjpmdW5jdGlvbigpe3AucF9GVEV4dGVuc2lvblNlbGVjdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVEV4dGVuc2lvblNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRFeHRlbnNpb25TZWxlY3Rpb25fcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGs9MDthOmRve3ZhciBsPTIsbT10aGlzLmlucHV0LkxBKDEpO209PWxmJiYobD0xKTtzd2l0Y2gobCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxmLHAuRk9MTE9XX0xfUHJhZ21hX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQxOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKTticmVhaztkZWZhdWx0OmlmKGs+PTEpYnJlYWsgYTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBuPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDIwNix0aGlzLmlucHV0KTt0aHJvdyBufWsrK313aGlsZSghMCk7ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcF9GVEV4dGVuc2lvblNlbGVjdGlvbjE0NDIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpO3ZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO2lmKHE9PW5kfHxxPT1rZXx8cT09bmV8fHE+PV9lJiZxPD1hZnx8cT09bGYpbz0xO3N3aXRjaChvKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRTZWxlY3Rpb25faW5fcF9GVEV4dGVuc2lvblNlbGVjdGlvbjE0NDI0KSxnPXRoaXMucF9GVFNlbGVjdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpfWY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9lLHAuRk9MTE9XX1JCUkFDS0VUX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQyNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChyKXtpZighKHIgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHI7dGhpcy5yZXBvcnRFcnJvcihyKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxyKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscil9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRBbnlhbGxPcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUQW55YWxsT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRBbnlhbGxPcHRpb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUQW55YWxsT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVEFueWFsbE9wdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGk9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBjZDppPTE7YnJlYWs7Y2FzZSBiZDppPTI7YnJlYWs7Y2FzZSB6ZDppPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjEwLDAsdGhpcy5pbnB1dCk7dGhyb3cgan1zd2l0Y2goaSl7Y2FzZSAxOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNkLHAuRk9MTE9XX0FOWV9pbl9wX0ZUQW55YWxsT3B0aW9uMTQ0NTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksZC5hbnRsci5sYW5nLmlzTnVsbChmKSYmKGY9W10pLGYucHVzaChlKTt2YXIgaz0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1QZCYmKGs9MSk7c3dpdGNoKGspe2Nhc2UgMTplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQZCxwLkZPTExPV19XT1JEX2luX3BfRlRBbnlhbGxPcHRpb24xNDQ2Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGYpJiYoZj1bXSksZi5wdXNoKGUpfWJyZWFrO2Nhc2UgMjplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxiZCxwLkZPTExPV19BTExfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDcxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGQuYW50bHIubGFuZy5pc051bGwoZikmJihmPVtdKSxmLnB1c2goZSk7dmFyIG09MixuPXRoaXMuaW5wdXQuTEEoMSk7bj09UWQmJihtPTEpO3N3aXRjaChtKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWQscC5GT0xMT1dfV09SRFNfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDczKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpfWJyZWFrO2Nhc2UgMzplPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6ZCxwLkZPTExPV19QSFJBU0VfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDgxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGQuYW50bHIubGFuZy5pc051bGwoZikmJihmPVtdKSxmLnB1c2goZSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGYpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVFRpbWVzX3JldHVybjpmdW5jdGlvbigpe3AucF9GVFRpbWVzX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRUaW1lc19yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRUaW1lczpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRUaW1lc19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx3ZCxwLkZPTExPV19PQ0NVUlNfaW5fcF9GVFRpbWVzMTQ1MTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFJhbmdlX2luX3BfRlRUaW1lczE0NTE1KSxmPXRoaXMucF9GVFJhbmdlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSmQscC5GT0xMT1dfVElNRVNfaW5fcF9GVFRpbWVzMTQ1MTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUUmFuZ2VfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUUmFuZ2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVFJhbmdlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFJhbmdlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVFJhbmdlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbD00O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIGpkOmw9MTticmVhaztjYXNlIEE6dmFyIG09dGhpcy5pbnB1dC5MQSgyKTtpZihtPT11YilsPTI7ZWxzZXtpZihtIT10ZCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxMSwyLHRoaXMuaW5wdXQpO3Rocm93IG59bD0zfWJyZWFrO2Nhc2Uga2Q6bD00O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxMSwwLHRoaXMuaW5wdXQpO3Rocm93IG59c3dpdGNoKGwpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxqZCxwLkZPTExPV19FWEFDVExZX2luX3BfRlRSYW5nZTE0NTUyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQWRkaXRpdmVFeHByX2luX3BfRlRSYW5nZTE0NTU0KSxmPXRoaXMucF9BZGRpdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQSxwLkZPTExPV19BVF9pbl9wX0ZUUmFuZ2UxNDU3Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHViLHAuRk9MTE9XX0xFQVNUX2luX3BfRlRSYW5nZTE0NTc2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQWRkaXRpdmVFeHByX2luX3BfRlRSYW5nZTE0NTc4KSxnPXRoaXMucF9BZGRpdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQSxwLkZPTExPV19BVF9pbl9wX0ZUUmFuZ2UxNDU5Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHRkLHAuRk9MTE9XX01PU1RfaW5fcF9GVFJhbmdlMTQ2MDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFJhbmdlMTQ2MDIpLGg9dGhpcy5wX0FkZGl0aXZlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZCxwLkZPTExPV19GUk9NX2luX3BfRlRSYW5nZTE0NjIwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQWRkaXRpdmVFeHByX2luX3BfRlRSYW5nZTE0NjIyKSxpPXRoaXMucF9BZGRpdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfYixwLkZPTExPV19UT19pbl9wX0ZUUmFuZ2UxNDYyNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDYyOCksaj10aGlzLnBfQWRkaXRpdmVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqLmdldFRyZWUoKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVFBvc0ZpbHRlcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRQb3NGaWx0ZXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVFBvc0ZpbHRlcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRQb3NGaWx0ZXI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUUG9zRmlsdGVyX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXt2YXIgaT01O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIEliOmk9MTticmVhaztjYXNlIEtjOmk9MjticmVhaztjYXNlIGhkOmk9MzticmVhaztjYXNlIGdkOmNhc2UgQmQ6aT00O2JyZWFrO2Nhc2UgQTpjYXNlIGlkOmk9NTticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTIsMCx0aGlzLmlucHV0KTt0aHJvdyBqfXN3aXRjaChpKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRPcmRlcl9pbl9wX0ZUUG9zRmlsdGVyMTQ2NTkpLGM9dGhpcy5wX0ZUT3JkZXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRXaW5kb3dfaW5fcF9GVFBvc0ZpbHRlcjE0NjYzKSxlPXRoaXMucF9GVFdpbmRvdygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVERpc3RhbmNlX2luX3BfRlRQb3NGaWx0ZXIxNDY2NyksZj10aGlzLnBfRlREaXN0YW5jZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFNjb3BlX2luX3BfRlRQb3NGaWx0ZXIxNDY3MSksZz10aGlzLnBfRlRTY29wZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVENvbnRlbnRfaW5fcF9GVFBvc0ZpbHRlcjE0Njc1KSxoPXRoaXMucF9GVENvbnRlbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRPcmRlcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRPcmRlcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUT3JkZXJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUT3JkZXI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUT3JkZXJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEliLHAuRk9MTE9XX09SREVSRURfaW5fcF9GVE9yZGVyMTQ3MDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGU9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVFdpbmRvd19yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRXaW5kb3dfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVFdpbmRvd19yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRXaW5kb3c6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUV2luZG93X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEtjLHAuRk9MTE9XX1dJTkRPV19pbl9wX0ZUV2luZG93MTQ3MzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUV2luZG93MTQ3MzcpLGU9dGhpcy5wX0FkZGl0aXZlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUVW5pdF9pbl9wX0ZUV2luZG93MTQ3MzkpLGY9dGhpcy5wX0ZUVW5pdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVERpc3RhbmNlX3JldHVybjpmdW5jdGlvbigpe3AucF9GVERpc3RhbmNlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlREaXN0YW5jZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlREaXN0YW5jZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlREaXN0YW5jZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoZCxwLkZPTExPV19ESVNUQU5DRV9pbl9wX0ZURGlzdGFuY2UxNDc2Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRSYW5nZV9pbl9wX0ZURGlzdGFuY2UxNDc3MSksZT10aGlzLnBfRlRSYW5nZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUVW5pdF9pbl9wX0ZURGlzdGFuY2UxNDc3MyksZj10aGlzLnBfRlRVbml0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUVW5pdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRVbml0X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRVbml0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFVuaXQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUVW5pdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBnPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgUWQ6Zz0xO2JyZWFrO2Nhc2UgRmQ6Zz0yO2JyZWFrO2Nhc2UgeWQ6Zz0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxMywwLHRoaXMuaW5wdXQpO3Rocm93IGh9c3dpdGNoKGcpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZCxwLkZPTExPV19XT1JEU19pbl9wX0ZUVW5pdDE0ODAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEZkLHAuRk9MTE9XX1NFTlRFTkNFU19pbl9wX0ZUVW5pdDE0ODA5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7YnJlYWs7Y2FzZSAzOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHlkLHAuRk9MTE9XX1BBUkFHUkFQSFNfaW5fcF9GVFVuaXQxNDgxNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRTY29wZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRTY29wZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUU2NvcGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUU2NvcGU6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUU2NvcGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaT09QmQpaD0xO2Vsc2V7aWYoaSE9Z2Qpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTQsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWg9Mn1zd2l0Y2goaCl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEJkLHAuRk9MTE9XX1NBTUVfaW5fcF9GVFNjb3BlMTQ4NDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZ2QscC5GT0xMT1dfRElGRkVSRU5UX2luX3BfRlRTY29wZTE0ODU0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUQmlnVW5pdF9pbl9wX0ZUU2NvcGUxNDg1OSksZj10aGlzLnBfRlRCaWdVbml0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUQmlnVW5pdF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRCaWdVbml0X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRCaWdVbml0X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVEJpZ1VuaXQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUQmlnVW5pdF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg9PUVkKWc9MTtlbHNle2lmKGghPXhkKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjE1LDAsdGhpcy5pbnB1dCk7dGhyb3cgaX1nPTJ9c3dpdGNoKGcpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxFZCxwLkZPTExPV19TRU5URU5DRV9pbl9wX0ZUQmlnVW5pdDE0ODg5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhkLHAuRk9MTE9XX1BBUkFHUkFQSF9pbl9wX0ZUQmlnVW5pdDE0ODk1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVENvbnRlbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUQ29udGVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUQ29udGVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRDb250ZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVENvbnRlbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgZz0zLGg9dGhpcy5pbnB1dC5MQSgxKTtpZihoPT1BKXt2YXIgaT10aGlzLmlucHV0LkxBKDIpO2lmKGk9PUVjKWc9MTtlbHNle2lmKGkhPXFjKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBqPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjE2LDEsdGhpcy5pbnB1dCk7dGhyb3cgan1nPTJ9fWVsc2V7aWYoaCE9aWQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTYsMCx0aGlzLmlucHV0KTt0aHJvdyBqfWc9M31zd2l0Y2goZyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEEscC5GT0xMT1dfQVRfaW5fcF9GVENvbnRlbnQxNDkzMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEVjLHAuRk9MTE9XX1NUQVJUX2luX3BfRlRDb250ZW50MTQ5MzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQSxwLkZPTExPV19BVF9pbl9wX0ZUQ29udGVudDE0OTQyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscWMscC5GT0xMT1dfRU5EX2luX3BfRlRDb250ZW50MTQ5NDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDM6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaWQscC5GT0xMT1dfRU5USVJFX2luX3BfRlRDb250ZW50MTQ5NTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxlZCxwLkZPTExPV19DT05URU5UX2luX3BfRlRDb250ZW50MTQ5NTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUTWF0Y2hPcHRpb25zX3JldHVybjpmdW5jdGlvbigpe3AucF9GVE1hdGNoT3B0aW9uc19yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUTWF0Y2hPcHRpb25zX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVE1hdGNoT3B0aW9uczpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRNYXRjaE9wdGlvbnNfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgZz0wO2E6ZG97dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT09TGQmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTGQscC5GT0xMT1dfVVNJTkdfaW5fcF9GVE1hdGNoT3B0aW9uczE0OTkyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVE1hdGNoT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbnMxNDk5NiksZT10aGlzLnBfRlRNYXRjaE9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6aWYoZz49MSlicmVhayBhO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMjE3LHRoaXMuaW5wdXQpO3Rocm93IGp9ZysrfXdoaWxlKCEwKTthLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChrKXtpZighKGsgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGs7dGhpcy5yZXBvcnRFcnJvcihrKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxrKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksayl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRNYXRjaE9wdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRNYXRjaE9wdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUTWF0Y2hPcHRpb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUTWF0Y2hPcHRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUTWF0Y2hPcHRpb25fcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGw7dHJ5e3ZhciBsPTg7bD10aGlzLmRmYTIxOC5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChsKXtjYXNlIDE6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRMYW5ndWFnZU9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTAyNCksYz10aGlzLnBfRlRMYW5ndWFnZU9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFdpbGRDYXJkT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDM2KSxlPXRoaXMucF9GVFdpbGRDYXJkT3B0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUVGhlc2F1cnVzT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDQ4KSxmPXRoaXMucF9GVFRoZXNhdXJ1c09wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFN0ZW1PcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwNjApLGc9dGhpcy5wX0ZUU3RlbU9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVENhc2VPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwNzIpLGg9dGhpcy5wX0ZUQ2FzZU9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVERpYWNyaXRpY3NPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwODQpLGk9dGhpcy5wX0ZURGlhY3JpdGljc09wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNzpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFN0b3BXb3JkT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDk2KSxqPXRoaXMucF9GVFN0b3BXb3JkT3B0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA4OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZURXh0ZW5zaW9uT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MTA4KSxrPXRoaXMucF9GVEV4dGVuc2lvbk9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsay5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG0pe2lmKCEobSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbTt0aGlzLnJlcG9ydEVycm9yKG0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG0pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxtKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVENhc2VPcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUQ2FzZU9wdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUQ2FzZU9wdGlvbl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRDYXNlT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVENhc2VPcHRpb25fcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgZz00O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIEY6dmFyIGg9dGhpcy5pbnB1dC5MQSgyKTtpZihoPT1wZClnPTE7ZWxzZXtpZihoIT1EZCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxOSwxLHRoaXMuaW5wdXQpO3Rocm93IGl9Zz0yfWJyZWFrO2Nhc2Ugc2Q6Zz0zO2JyZWFrO2Nhc2UgS2Q6Zz00O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaT1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxOSwwLHRoaXMuaW5wdXQpO3Rocm93IGl9c3dpdGNoKGcpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxGLHAuRk9MTE9XX0NBU0VfaW5fcF9GVENhc2VPcHRpb24xNTEzOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBkLHAuRk9MTE9XX0lOU0VOU0lUSVZFX2luX3BfRlRDYXNlT3B0aW9uMTUxNDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRixwLkZPTExPV19DQVNFX2luX3BfRlRDYXNlT3B0aW9uMTUxNjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxEZCxwLkZPTExPV19TRU5TSVRJVkVfaW5fcF9GVENhc2VPcHRpb24xNTE2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO2JyZWFrO2Nhc2UgMzpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzZCxwLkZPTExPV19MT1dFUkNBU0VfaW5fcF9GVENhc2VPcHRpb24xNTE4Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO2JyZWFrO2Nhc2UgNDpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxLZCxwLkZPTExPV19VUFBFUkNBU0VfaW5fcF9GVENhc2VPcHRpb24xNTE5OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlREaWFjcml0aWNzT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3AucF9GVERpYWNyaXRpY3NPcHRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVERpYWNyaXRpY3NPcHRpb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZURGlhY3JpdGljc09wdGlvbjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlREaWFjcml0aWNzT3B0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGc9MixoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaCE9ZmQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMjAsMCx0aGlzLmlucHV0KTt0aHJvdyBqfXZhciBpPXRoaXMuaW5wdXQuTEEoMik7aWYoaT09cGQpZz0xO2Vsc2V7aWYoaSE9RGQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGo9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMjAsMSx0aGlzLmlucHV0KTt0aHJvdyBqfWc9Mn1zd2l0Y2goZyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGZkLHAuRk9MTE9XX0RJQUNSSVRJQ1NfaW5fcF9GVERpYWNyaXRpY3NPcHRpb24xNTIzMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBkLHAuRk9MTE9XX0lOU0VOU0lUSVZFX2luX3BfRlREaWFjcml0aWNzT3B0aW9uMTUyMzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZmQscC5GT0xMT1dfRElBQ1JJVElDU19pbl9wX0ZURGlhY3JpdGljc09wdGlvbjE1MjU1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRGQscC5GT0xMT1dfU0VOU0lUSVZFX2luX3BfRlREaWFjcml0aWNzT3B0aW9uMTUyNTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUU3RlbU9wdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRTdGVtT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRTdGVtT3B0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFN0ZW1PcHRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUU3RlbU9wdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg9PUdkKWc9MTtlbHNle2lmKGghPXVkKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBpPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjIxLDAsdGhpcy5pbnB1dCk7dGhyb3cgaX1nPTJ9c3dpdGNoKGcpe2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxHZCxwLkZPTExPV19TVEVNTUlOR19pbl9wX0ZUU3RlbU9wdGlvbjE1Mjk0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHVkLHAuRk9MTE9XX05PX2luX3BfRlRTdGVtT3B0aW9uMTUzMDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxHZCxwLkZPTExPV19TVEVNTUlOR19pbl9wX0ZUU3RlbU9wdGlvbjE1MzA1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVFRoZXNhdXJ1c09wdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRUaGVzYXVydXNPcHRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVFRoZXNhdXJ1c09wdGlvbl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRUaGVzYXVydXNPcHRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUVGhlc2F1cnVzT3B0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1udWxsLG89bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHE9MyxyPXRoaXMuaW5wdXQuTEEoMSk7aWYocj09SWQpe3ZhciBzPXRoaXMuaW5wdXQuTEEoMik7aWYocz09a2UpcT0yO2Vsc2V7aWYocyE9QSYmcyE9Tyl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgdD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIyNSwxLHRoaXMuaW5wdXQpO3Rocm93IHR9cT0xfX1lbHNle2lmKHIhPXVkKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciB0PW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjI1LDAsdGhpcy5pbnB1dCk7dGhyb3cgdH1xPTN9c3dpdGNoKHEpe2Nhc2UgMTpnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJZCxwLkZPTExPV19USEVTQVVSVVNfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzQxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLGQuYW50bHIubGFuZy5pc051bGwoaCkmJihoPVtdKSxoLnB1c2goZyk7dmFyIHU9Mix2PXRoaXMuaW5wdXQuTEEoMSk7aWYodj09QSl1PTE7ZWxzZXtpZih2IT1PKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciB0PW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjIyLDAsdGhpcy5pbnB1dCk7dGhyb3cgdH11PTJ9c3dpdGNoKHUpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFRoZXNhdXJ1c0lEX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM0NCksaT10aGlzLnBfRlRUaGVzYXVydXNJRCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPLHAuRk9MTE9XX0RFRkFVTFRfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzUwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLGQuYW50bHIubGFuZy5pc051bGwoaCkmJihoPVtdKSxoLnB1c2goZyl9YnJlYWs7Y2FzZSAyOmc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LElkLHAuRk9MTE9XX1RIRVNBVVJVU19pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixvKSksZC5hbnRsci5sYW5nLmlzTnVsbChoKSYmKGg9W10pLGgucHVzaChnKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzcxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpO3ZhciB3PTIseD10aGlzLmlucHV0LkxBKDEpO2lmKHg9PUEpdz0xO2Vsc2V7aWYoeCE9Tyl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgdD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIyMywwLHRoaXMuaW5wdXQpO3Rocm93IHR9dz0yfXN3aXRjaCh3KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRUaGVzYXVydXNJRF9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNzQpLGo9dGhpcy5wX0ZUVGhlc2F1cnVzSUQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTyxwLkZPTExPV19ERUZBVUxUX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKSxkLmFudGxyLmxhbmcuaXNOdWxsKGgpJiYoaD1bXSksaC5wdXNoKGcpfWE6ZG97dmFyIHk9Mix6PXRoaXMuaW5wdXQuTEEoMSk7ej09eGUmJih5PTEpO3N3aXRjaCh5KXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQseGUscC5GT0xMT1dfQ09NTUFfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1Mzg0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUVGhlc2F1cnVzSURfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1Mzg2KSxrPXRoaXMucF9GVFRoZXNhdXJ1c0lEKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4pKTticmVhaztjYXNlIDM6Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdWQscC5GT0xMT1dfTk9faW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1NDA4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLGQuYW50bHIubGFuZy5pc051bGwoaCkmJihoPVtdKSxoLnB1c2goZyksZz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSWQscC5GT0xMT1dfVEhFU0FVUlVTX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTQxMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8pKSxkLmFudGxyLmxhbmcuaXNOdWxsKGgpJiYoaD1bXSksaC5wdXNoKGcpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhoKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChCKXtpZighKEIgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEI7dGhpcy5yZXBvcnRFcnJvcihCKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxCKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksQil9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRUaGVzYXVydXNJRF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRUaGVzYXVydXNJRF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUVGhlc2F1cnVzSURfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUVGhlc2F1cnVzSUQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUVGhlc2F1cnVzSURfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBLHAuRk9MTE9XX0FUX2luX3BfRlRUaGVzYXVydXNJRDE1NDQ1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUVGhlc2F1cnVzSUQxNTQ0NyksZj10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpO3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PUFkJiYoaj0xKTtzd2l0Y2goail7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEFkLHAuRk9MTE9XX1JFTEFUSU9OU0hJUF9pbl9wX0ZUVGhlc2F1cnVzSUQxNTQ1Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NTQpLGc9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKX12YXIgbD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPj1qZCYmbTw9a2QpbD0xO2Vsc2UgaWYobT09QSl7dmFyIG49dGhpcy5pbnB1dC5MQSgyKTtpZihuPT11Ynx8bj09dGQpbD0xfXN3aXRjaChsKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRMaXRlcmFsUmFuZ2VfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NTkpLGg9dGhpcy5wX0ZUTGl0ZXJhbFJhbmdlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscmQscC5GT0xMT1dfTEVWRUxTX2luX3BfRlRUaGVzYXVydXNJRDE1NDYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVExpdGVyYWxSYW5nZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRlRMaXRlcmFsUmFuZ2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVExpdGVyYWxSYW5nZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRMaXRlcmFsUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZUTGl0ZXJhbFJhbmdlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbCxtPW51bGwsbj1udWxsLG89bnVsbCxxPW51bGwscj1udWxsLHM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHQ9NDtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBqZDp0PTE7YnJlYWs7Y2FzZSBBOnZhciB1PXRoaXMuaW5wdXQuTEEoMik7aWYodT09dWIpdD0yO2Vsc2V7aWYodSE9dGQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHY9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMjgsMix0aGlzLmlucHV0KTt0aHJvdyB2fXQ9M31icmVhaztjYXNlIGtkOnQ9NDticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHY9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMjgsMCx0aGlzLmlucHV0KTt0aHJvdyB2fXN3aXRjaCh0KXtjYXNlIDE6aj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsamQscC5GT0xMT1dfRVhBQ1RMWV9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU0OTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixzKSksZC5hbnRsci5sYW5nLmlzTnVsbChrKSYmKGs9W10pLGsucHVzaChqKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZixwLkZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTUwMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGwpKTticmVhaztjYXNlIDI6aj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQSxwLkZPTExPV19BVF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1MTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixzKSksZC5hbnRsci5sYW5nLmlzTnVsbChrKSYmKGs9W10pLGsucHVzaChqKSxqPXRoaXMubWF0Y2godGhpcy5pbnB1dCx1YixwLkZPTExPV19MRUFTVF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1MjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixzKSksZC5hbnRsci5sYW5nLmlzTnVsbChrKSYmKGs9W10pLGsucHVzaChqKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZixwLkZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTUyNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0pKTticmVhaztjYXNlIDM6aj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQSxwLkZPTExPV19BVF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixzKSksZC5hbnRsci5sYW5nLmlzTnVsbChrKSYmKGs9W10pLGsucHVzaChqKSxqPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0ZCxwLkZPTExPV19NT1NUX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU0Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKGopLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHMpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGspJiYoaz1bXSksay5wdXNoKGopLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9mLHAuRk9MTE9XX0xfSW50ZWdlckxpdGVyYWxfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTQ4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihuPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbikpO2JyZWFrO2Nhc2UgNDpqPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZCxwLkZPTExPV19GUk9NX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU2Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKGopLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHMpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGspJiYoaz1bXSksay5wdXNoKGopLGc9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9mLHAuRk9MTE9XX0xfSW50ZWdlckxpdGVyYWxfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbykpLGg9dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9iLHAuRk9MTE9XX1RPX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU3MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocT10aGlzLmFkYXB0b3IuY3JlYXRlKGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHEpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZixwLkZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU3Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocj10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHIpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoayksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godyl7aWYoISh3IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB3O3RoaXMucmVwb3J0RXJyb3IodyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUU3RvcFdvcmRPcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUU3RvcFdvcmRPcHRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVFN0b3BXb3JkT3B0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFN0b3BXb3JkT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVFN0b3BXb3JkT3B0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGo9MyxrPXRoaXMuaW5wdXQuTEEoMSk7aWYoaz09SGQpe3ZhciBsPXRoaXMuaW5wdXQuTEEoMik7aWYobCE9UWQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIG49bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMzEsMSx0aGlzLmlucHV0KTt0aHJvdyBufXZhciBtPXRoaXMuaW5wdXQuTEEoMyk7aWYobT09TylqPTI7ZWxzZXtpZihtIT1BJiZtIT1rZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgbj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIzMSwzLHRoaXMuaW5wdXQpO3Rocm93IG59aj0xfX1lbHNle2lmKGshPXVkKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBuPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjMxLDAsdGhpcy5pbnB1dCk7dGhyb3cgbn1qPTN9c3dpdGNoKGope2Nhc2UgMTpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxIZCxwLkZPTExPV19TVE9QX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjA4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWQscC5GT0xMT1dfV09SRFNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFN0b3BXb3Jkc19pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTYxNCksZj10aGlzLnBfRlRTdG9wV29yZHMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTthOmRve3ZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO2lmKHE9PWFifHxxPT1jYylvPTE7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9GVFN0b3BXb3Jkc0luY2xFeGNsX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjE2KSxnPXRoaXMucF9GVFN0b3BXb3Jkc0luY2xFeGNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7YnJlYWs7Y2FzZSAyOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEhkLHAuRk9MTE9XX1NUT1BfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MzUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZCxwLkZPTExPV19XT1JEU19pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTYzOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE8scC5GT0xMT1dfREVGQVVMVF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTY0Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO2I6ZG97dmFyIHI9MixzPXRoaXMuaW5wdXQuTEEoMSk7aWYocz09YWJ8fHM9PWNjKXI9MTtzd2l0Y2gocil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ZUU3RvcFdvcmRzSW5jbEV4Y2xfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2NDUpLGg9dGhpcy5wX0ZUU3RvcFdvcmRzSW5jbEV4Y2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGJ9fXdoaWxlKCEwKTticmVhaztjYXNlIDM6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdWQscC5GT0xMT1dfTk9faW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2NjQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxIZCxwLkZPTExPV19TVE9QX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWQscC5GT0xMT1dfV09SRFNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2NzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godCl7aWYoISh0IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB0O3RoaXMucmVwb3J0RXJyb3IodCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHQpfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUU3RvcFdvcmRzX3JldHVybjpmdW5jdGlvbigpe3AucF9GVFN0b3BXb3Jkc19yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0ZUU3RvcFdvcmRzX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFN0b3BXb3JkczpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRTdG9wV29yZHNfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGw7dHJ5e3ZhciBvPTIscT10aGlzLmlucHV0LkxBKDEpO2lmKHE9PUEpbz0xO2Vsc2V7aWYocSE9a2Upe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHI9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMzMsMCx0aGlzLmlucHV0KTt0aHJvdyByfW89Mn1zd2l0Y2gobyl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEEscC5GT0xMT1dfQVRfaW5fcF9GVFN0b3BXb3JkczE1NzA2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRTdG9wV29yZHMxNTcxMCksaD10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fcF9GVFN0b3BXb3JkczE1NzI0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVFN0b3BXb3JkczE1NzI2KSxpPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YTpkb3t2YXIgcz0yLHQ9dGhpcy5pbnB1dC5MQSgxKTt0PT14ZSYmKHM9MSk7c3dpdGNoKHMpe2Nhc2UgMTpmPXRoaXMubWF0Y2godGhpcy5pbnB1dCx4ZSxwLkZPTExPV19DT01NQV9pbl9wX0ZUU3RvcFdvcmRzMTU3MjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixtKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUU3RvcFdvcmRzMTU3MzEpLGo9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGouZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTtnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcF9GVFN0b3BXb3JkczE1NzM1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihuPXRoaXMuYWRhcHRvci5jcmVhdGUoZyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbikpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gYX0scF9GVFN0b3BXb3Jkc0luY2xFeGNsX3JldHVybjpmdW5jdGlvbigpe3AucF9GVFN0b3BXb3Jkc0luY2xFeGNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRTdG9wV29yZHNJbmNsRXhjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRTdG9wV29yZHNJbmNsRXhjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRTdG9wV29yZHNJbmNsRXhjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPT1jYyloPTE7ZWxzZXtpZihpIT1hYil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIzNCwwLHRoaXMuaW5wdXQpO3Rocm93IGp9aD0yfXN3aXRjaChoKXtjYXNlIDE6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2MscC5GT0xMT1dfVU5JT05faW5fcF9GVFN0b3BXb3Jkc0luY2xFeGNsMTU3NjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksZC5hbnRsci5sYW5nLmlzTnVsbChlKSYmKGU9W10pLGUucHVzaChjKTticmVhaztjYXNlIDI6Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYWIscC5GT0xMT1dfRVhDRVBUX2luX3BfRlRTdG9wV29yZHNJbmNsRXhjbDE1NzczKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyl9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRlRTdG9wV29yZHNfaW5fcF9GVFN0b3BXb3Jkc0luY2xFeGNsMTU3NzYpLGY9dGhpcy5wX0ZUU3RvcFdvcmRzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9GVExhbmd1YWdlT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3AucF9GVExhbmd1YWdlT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRMYW5ndWFnZU9wdGlvbl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRMYW5ndWFnZU9wdGlvbjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfRlRMYW5ndWFnZU9wdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHFkLHAuRk9MTE9XX0xBTkdVQUdFX2luX3BfRlRMYW5ndWFnZU9wdGlvbjE1ODA4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRMYW5ndWFnZU9wdGlvbjE1ODEyKSxlPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0ZUV2lsZENhcmRPcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUV2lsZENhcmRPcHRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GVFdpbGRDYXJkT3B0aW9uX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFdpbGRDYXJkT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVFdpbGRDYXJkT3B0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGc9MixoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD09TmQpZz0xO2Vsc2V7aWYoaCE9dWQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGk9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMzUsMCx0aGlzLmlucHV0KTt0aHJvdyBpfWc9Mn1zd2l0Y2goZyl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5kLHAuRk9MTE9XX1dJTERDQVJEU19pbl9wX0ZUV2lsZENhcmRPcHRpb24xNTg0Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpO2JyZWFrO2Nhc2UgMjpjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx1ZCxwLkZPTExPV19OT19pbl9wX0ZUV2lsZENhcmRPcHRpb24xNTg0OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE5kLHAuRk9MTE9XX1dJTERDQVJEU19pbl9wX0ZUV2lsZENhcmRPcHRpb24xNTg1Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRFeHRlbnNpb25PcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZURXh0ZW5zaW9uT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRFeHRlbnNpb25PcHRpb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZURXh0ZW5zaW9uT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVEV4dGVuc2lvbk9wdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxGYixwLkZPTExPV19PUFRJT05faW5fcF9GVEV4dGVuc2lvbk9wdGlvbjE1ODg2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX0ZURXh0ZW5zaW9uT3B0aW9uMTU4OTApLGU9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZURXh0ZW5zaW9uT3B0aW9uMTU4OTIpLGY9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRlRJZ25vcmVPcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0ZUSWdub3JlT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfRlRJZ25vcmVPcHRpb25fcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUSWdub3JlT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9GVElnbm9yZU9wdGlvbl9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPZCxwLkZPTExPV19XSVRIT1VUX2luX3BfRlRJZ25vcmVPcHRpb24xNTkyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxkLmFudGxyLmxhbmcuaXNOdWxsKGUpJiYoZT1bXSksZS5wdXNoKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGVkLHAuRk9MTE9XX0NPTlRFTlRfaW5fcF9GVElnbm9yZU9wdGlvbjE1OTI0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLGQuYW50bHIubGFuZy5pc051bGwoZSkmJihlPVtdKSxlLnB1c2goYyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1VuaW9uRXhwcl9pbl9wX0ZUSWdub3JlT3B0aW9uMTU5MjgpLGY9dGhpcy5wX1VuaW9uRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gYX0scF9Qcm9ncmFtX3JldHVybjpmdW5jdGlvbigpe3AucF9Qcm9ncmFtX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfUHJvZ3JhbV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUHJvZ3JhbTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfUHJvZ3JhbV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BfUHJvZ3JhbTE1OTYwKSxjPXRoaXMucF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO3RoaXMucmVwb3J0RXJyb3IoZSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGUpfWZpbmFsbHl7fXJldHVybiBhfSxwX1N0YXRlbWVudHNfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1N0YXRlbWVudHNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9TdGF0ZW1lbnRzX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TdGF0ZW1lbnRzOmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBwLnBfU3RhdGVtZW50c19yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsO3RyeXtjPXRoaXMuYWRhcHRvci5uaWwoKTthOmRve3ZhciBmPTIsZz10aGlzLmlucHV0LkxBKDEpO2lmKGc+PXYmJmc8PWllfHxnPT1rZXx8Zz49bWUmJmc8PW5lfHxnPT11ZXx8Zz49emUmJmc8PUNlfHxnPj1JZSYmZzw9TGV8fGc9PVllfHxnPj1fZSYmZzw9YWZ8fGc9PWRmfHxnPj1sZiYmZzw9cWZ8fGc9PXdnKWY9MTtzd2l0Y2goZil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0h5YnJpZF9pbl9wX1N0YXRlbWVudHMxNTk4NyksZT10aGlzLnBfSHlicmlkKGEsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsZS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO2Iuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gYn0scF9TdGF0ZW1lbnRzQW5kRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU3RhdGVtZW50c0FuZEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9TdGF0ZW1lbnRzQW5kRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU3RhdGVtZW50c0FuZEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1N0YXRlbWVudHNBbmRFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0YXRlbWVudHNfaW5fcF9TdGF0ZW1lbnRzQW5kRXhwcjE2MDE1KSxjPXRoaXMucF9TdGF0ZW1lbnRzKCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHI6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RhdGVtZW50c19pbl9wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHIxNjA0MiksYz10aGlzLnBfU3RhdGVtZW50cyghMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO3RoaXMucmVwb3J0RXJyb3IoZSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGUpfWZpbmFsbHl7fXJldHVybiBhfSxwX0h5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfSHlicmlkX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9IeWJyaWQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgcC5wX0h5YnJpZF9yZXR1cm47Yy5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7dmFyIGg9MjtoPXRoaXMuZGZhMjM3LnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKGgpe2Nhc2UgMTplPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9IeWJyaWRFeHByU2luZ2xlX2luX3BfSHlicmlkMTYwNjkpLGY9dGhpcy5wX0h5YnJpZEV4cHJTaW5nbGUoYSxiKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYzt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChlLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6ZT10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RhdGVtZW50X2luX3BfSHlicmlkMTYwODIpLGc9dGhpcy5wX1N0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBjO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGUsZy5nZXRUcmVlKCkpfWMuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhlKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGMudHJlZSxjLnN0YXJ0LGMuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt2YXIgaj10aGlzLnBfU3RlcEV4cHIoKTtlPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoZSxqLmdldFRyZWUoKSksYy5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLGMudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGUpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYy50cmVlLGMuc3RhcnQsYy5zdG9wKX1maW5hbGx5e31yZXR1cm4gY30scF9TdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1N0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1N0YXRlbWVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9TdGF0ZW1lbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXt2YXIgaj02O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIG1lOmo9MTticmVhaztjYXNlIFJkOmo9MjticmVhaztjYXNlIFNkOmo9MzticmVhaztjYXNlIFRkOmo9NDticmVhaztjYXNlIGZjOmNhc2UgdWU6aj01O2JyZWFrO2Nhc2UgV2Q6aj02O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIzOCwwLHRoaXMuaW5wdXQpO3Rocm93IGt9c3dpdGNoKGope2Nhc2UgMTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9Bc3NpZ25TdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjExMyksYz10aGlzLnBfQXNzaWduU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0JyZWFrU3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxMjUpLGU9dGhpcy5wX0JyZWFrU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0NvbnRpbnVlU3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxMzcpLGY9dGhpcy5wX0NvbnRpbnVlU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4aXRTdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjE0OSksZz10aGlzLnBfRXhpdFN0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJEZWNsU3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxNjEpLGg9dGhpcy5wX1ZhckRlY2xTdGF0ZW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKTticmVhaztjYXNlIDY6Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfV2hpbGVTdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjE3MyksaT10aGlzLnBfV2hpbGVTdGF0ZW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfSHlicmlkRXhwclNpbmdsZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSHlicmlkRXhwclNpbmdsZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0h5YnJpZEV4cHJTaW5nbGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0h5YnJpZEV4cHJTaW5nbGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgcC5wX0h5YnJpZEV4cHJTaW5nbGVfcmV0dXJuO2Muc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXtlPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BfSHlicmlkRXhwclNpbmdsZTE2MjAwKSxnPXRoaXMucF9FeHByKGEsYiksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGM7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoZSxnLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKWlmKGF8fHRoaXMuaW5wdXQuTFQoMSkuZ2V0VHlwZSgpIT1RZSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKHRoaXMuaW5wdXQpO2Y9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFlLHAuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0h5YnJpZEV4cHJTaW5nbGUxNjIxNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGM7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChlLGgpKSxjLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYy50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoZSksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhjLnRyZWUsYy5zdGFydCxjLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7ZT10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGUsZy5nZXRUcmVlKCkpLGMuc3RvcD10aGlzLmlucHV0LkxUKC0xKSxjLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhlKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGMudHJlZSxjLnN0YXJ0LGMuc3RvcCl9ZmluYWxseXt9cmV0dXJuIGN9LHBfQXBwbHlTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0FwcGx5U3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQXBwbHlTdGF0ZW1lbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FwcGx5U3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9BcHBseVN0YXRlbWVudF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJTaW1wbGVfaW5fcF9BcHBseVN0YXRlbWVudDE2MjY1KSxlPXRoaXMucF9FeHByU2ltcGxlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BfQXBwbHlTdGF0ZW1lbnQxNjI2Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQXNzaWduU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3AucF9Bc3NpZ25TdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Bc3NpZ25TdGF0ZW1lbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0Fzc2lnblN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQXNzaWduU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9Bc3NpZ25TdGF0ZW1lbnQxNjI5NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfQXNzaWduU3RhdGVtZW50MTYyOTkpLGc9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoYyxnP2cuc3RvcDpudWxsKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzZSxwLkZPTExPV19CSU5EX2luX3BfQXNzaWduU3RhdGVtZW50MTYzMDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0Fzc2lnblN0YXRlbWVudDE2MzA1KSxoPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRZSxwLkZPTExPV19TRU1JQ09MT05faW5fcF9Bc3NpZ25TdGF0ZW1lbnQxNjMwOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQmxvY2tTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0Jsb2NrU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQmxvY2tTdGF0ZW1lbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0Jsb2NrU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9CbG9ja1N0YXRlbWVudF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fcF9CbG9ja1N0YXRlbWVudDE2MzM0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0YXRlbWVudHNfaW5fcF9CbG9ja1N0YXRlbWVudDE2MzM2KSxmPXRoaXMucF9TdGF0ZW1lbnRzKCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvZSxwLkZPTExPV19SQlJBQ0tFVF9pbl9wX0Jsb2NrU3RhdGVtZW50MTYzMzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBhfSxwX0Jsb2NrSHlicmlkX3JldHVybjpmdW5jdGlvbigpe3AucF9CbG9ja0h5YnJpZF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0Jsb2NrSHlicmlkX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9CbG9ja0h5YnJpZDpmdW5jdGlvbihhKXt2YXIgYj1uZXcgcC5wX0Jsb2NrSHlicmlkX3JldHVybjtiLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtjPXRoaXMuYWRhcHRvci5uaWwoKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wX0Jsb2NrSHlicmlkMTYzNjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBiO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3RhdGVtZW50c19pbl9wX0Jsb2NrSHlicmlkMTYzNjcpLGc9dGhpcy5wX1N0YXRlbWVudHMoYSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcF9CbG9ja0h5YnJpZDE2MzcwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaSkpLGIuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKGope2lmKCEoaiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgajt0aGlzLnJlcG9ydEVycm9yKGopLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGopLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxqKX1maW5hbGx5e31yZXR1cm4gYn0scF9CcmVha1N0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQnJlYWtTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9CcmVha1N0YXRlbWVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQnJlYWtTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0JyZWFrU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFJkLHAuRk9MTE9XX0JSRUFLX2luX3BfQnJlYWtTdGF0ZW1lbnQxNjM5OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVWQscC5GT0xMT1dfTE9PUF9pbl9wX0JyZWFrU3RhdGVtZW50MTY0MDQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFlLHAuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0JyZWFrU3RhdGVtZW50MTY0MDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0NvbnRpbnVlU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3AucF9Db250aW51ZVN0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0NvbnRpbnVlU3RhdGVtZW50X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db250aW51ZVN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQ29udGludWVTdGF0ZW1lbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsU2QscC5GT0xMT1dfQ09OVElOVUVfaW5fcF9Db250aW51ZVN0YXRlbWVudDE2NDM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxVZCxwLkZPTExPV19MT09QX2luX3BfQ29udGludWVTdGF0ZW1lbnQxNjQ0Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BfQ29udGludWVTdGF0ZW1lbnQxNjQ0Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRXhpdFN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRXhpdFN0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0V4aXRTdGF0ZW1lbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0V4aXRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0V4aXRTdGF0ZW1lbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRkLHAuRk9MTE9XX0VYSVRfaW5fcF9FeGl0U3RhdGVtZW50MTY0NzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFZkLHAuRk9MTE9XX1JFVFVSTklOR19pbl9wX0V4aXRTdGF0ZW1lbnQxNjQ4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0V4aXRTdGF0ZW1lbnQxNjQ4NCksZj10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BfRXhpdFN0YXRlbWVudDE2NDg3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gYX0scF9GTFdPUlN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRkxXT1JTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9GTFdPUlN0YXRlbWVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRkxXT1JTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0ZMV09SU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW5pdGlhbENsYXVzZV9pbl9wX0ZMV09SU3RhdGVtZW50MTY1MTMpLGM9dGhpcy5wX0luaXRpYWxDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKTthOmRve3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg9PWVifHxoPT12Ynx8aD09SGJ8fGg9PVdifHxoPT1oY3x8aD09bWN8fGg9PXJjKWc9MTtzd2l0Y2goZyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0ludGVybWVkaWF0ZUNsYXVzZV9pbl9wX0ZMV09SU3RhdGVtZW50MTY1MTUpLGU9dGhpcy5wX0ludGVybWVkaWF0ZUNsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO3RoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1JldHVyblN0YXRlbWVudF9pbl9wX0ZMV09SU3RhdGVtZW50MTY1MTgpLGY9dGhpcy5wX1JldHVyblN0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gYX0scF9SZXR1cm5TdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1JldHVyblN0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1JldHVyblN0YXRlbWVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUmV0dXJuU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9SZXR1cm5TdGF0ZW1lbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQYixwLkZPTExPV19SRVRVUk5faW5fcF9SZXR1cm5TdGF0ZW1lbnQxNjU1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSHlicmlkX2luX3BfUmV0dXJuU3RhdGVtZW50MTY1NTQpLGU9dGhpcy5wX0h5YnJpZCghMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0lmU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3AucF9JZlN0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0lmU3RhdGVtZW50X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JZlN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfSWZTdGF0ZW1lbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrYixwLkZPTExPV19JRl9pbl9wX0lmU3RhdGVtZW50MTY1ODMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX0lmU3RhdGVtZW50MTY1ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX0lmU3RhdGVtZW50MTY1ODkpLGc9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX0lmU3RhdGVtZW50MTY1OTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsJGIscC5GT0xMT1dfVEhFTl9pbl9wX0lmU3RhdGVtZW50MTY1OTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0h5YnJpZF9pbl9wX0lmU3RhdGVtZW50MTY2MDApLGg9dGhpcy5wX0h5YnJpZCghMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVyxwLkZPTExPV19FTFNFX2luX3BfSWZTdGF0ZW1lbnQxNjYwNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSHlicmlkX2luX3BfSWZTdGF0ZW1lbnQxNjYwOSksaT10aGlzLnBfSHlicmlkKCExLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChtKXtpZighKG0gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG07dGhpcy5yZXBvcnRFcnJvcihtKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxtKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfU3dpdGNoU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3AucF9Td2l0Y2hTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Td2l0Y2hTdGF0ZW1lbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N3aXRjaFN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfU3dpdGNoU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRmMscC5GT0xMT1dfU1dJVENIX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2MzgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjQyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihrPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0V4cHJfaW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY0NCksZz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbGUscC5GT0xMT1dfUlBBUkVOX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2NDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSk7dmFyIG09MDthOmRve3ZhciBuPTIsbz10aGlzLmlucHV0LkxBKDEpO289PUYmJihuPTEpO3N3aXRjaChuKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3dpdGNoQ2FzZVN0YXRlbWVudF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjQ5KSxoPXRoaXMucF9Td2l0Y2hDYXNlU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihtPj0xKWJyZWFrIGE7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgcT1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigyNDAsdGhpcy5pbnB1dCk7dGhyb3cgcX1tKyt9d2hpbGUoITApO2M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE8scC5GT0xMT1dfREVGQVVMVF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjU0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQYixwLkZPTExPV19SRVRVUk5faW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY2MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSHlicmlkX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2NjQpLGk9dGhpcy5wX0h5YnJpZCghMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyByO3RoaXMucmVwb3J0RXJyb3IociksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsciksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHIpfWZpbmFsbHl7fXJldHVybiBhfSxwX1N3aXRjaENhc2VTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX1N3aXRjaENhc2VTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9Td2l0Y2hDYXNlU3RhdGVtZW50X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Td2l0Y2hDYXNlU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Td2l0Y2hDYXNlU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBoPTA7YTpkb3t2YXIgaT0yLGo9dGhpcy5pbnB1dC5MQSgxKTtqPT1GJiYoaT0xKTtzd2l0Y2goaSl7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEYscC5GT0xMT1dfQ0FTRV9pbl9wX1N3aXRjaENhc2VTdGF0ZW1lbnQxNjY5NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU3dpdGNoQ2FzZU9wZXJhbmRfaW5fcF9Td2l0Y2hDYXNlU3RhdGVtZW50MTY2OTgpLGU9dGhpcy5wX1N3aXRjaENhc2VPcGVyYW5kKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihoPj0xKWJyZWFrIGE7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt2YXIgaz1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigyNDEsdGhpcy5pbnB1dCk7dGhyb3cga31oKyt9d2hpbGUoITApO2M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFBiLHAuRk9MTE9XX1JFVFVSTl9pbl9wX1N3aXRjaENhc2VTdGF0ZW1lbnQxNjcwNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSHlicmlkX2luX3BfU3dpdGNoQ2FzZVN0YXRlbWVudDE2NzA4KSxmPXRoaXMucF9IeWJyaWQoITEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scF9UcnlDYXRjaFN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVHJ5Q2F0Y2hTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9UcnlDYXRjaFN0YXRlbWVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHJ5Q2F0Y2hTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1RyeUNhdGNoU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxHYyxwLkZPTExPV19UUllfaW5fcF9UcnlDYXRjaFN0YXRlbWVudDE2NzM3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9CbG9ja1N0YXRlbWVudF9pbl9wX1RyeUNhdGNoU3RhdGVtZW50MTY3NDEpLGU9dGhpcy5wX0Jsb2NrU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7dmFyIGk9MDthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PWtjJiYoaj0xKTtzd2l0Y2goail7Y2FzZSAxOmM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtjLHAuRk9MTE9XX0NBVENIX2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjc0Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ2F0Y2hFcnJvckxpc3RfaW5fcF9UcnlDYXRjaFN0YXRlbWVudDE2NzUwKSxmPXRoaXMucF9DYXRjaEVycm9yTGlzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0Jsb2NrU3RhdGVtZW50X2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjc1MiksZz10aGlzLnBfQmxvY2tTdGF0ZW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmlmKGk+PTEpYnJlYWsgYTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBsPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDI0Mix0aGlzLmlucHV0KTt0aHJvdyBsfWkrK313aGlsZSghMCk7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKG0pe2lmKCEobSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbTt0aGlzLnJlcG9ydEVycm9yKG0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG0pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxtKX1maW5hbGx5e31yZXR1cm4gYX0scF9UcnlDYXRjaEh5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVHJ5Q2F0Y2hIeWJyaWRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9UcnlDYXRjaEh5YnJpZF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHJ5Q2F0Y2hIeWJyaWQ6ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHAucF9UcnlDYXRjaEh5YnJpZF9yZXR1cm47Yi5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yz10aGlzLmFkYXB0b3IubmlsKCksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsR2MscC5GT0xMT1dfVFJZX2luX3BfVHJ5Q2F0Y2hIeWJyaWQxNjc4NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGkpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoZSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQmxvY2tIeWJyaWRfaW5fcF9UcnlDYXRjaEh5YnJpZDE2Nzg4KSxmPXRoaXMucF9CbG9ja0h5YnJpZChhKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGYuZ2V0VHJlZSgpKTt2YXIgaj0wO2E6ZG97dmFyIGs9MixsPXRoaXMuaW5wdXQuTEEoMSk7bD09a2MmJihrPTEpO3N3aXRjaChrKXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2MscC5GT0xMT1dfQ0FUQ0hfaW5fcF9UcnlDYXRjaEh5YnJpZDE2Nzk0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGMsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9DYXRjaEVycm9yTGlzdF9pbl9wX1RyeUNhdGNoSHlicmlkMTY3OTgpLGc9dGhpcy5wX0NhdGNoRXJyb3JMaXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGI7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYyxnLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQmxvY2tIeWJyaWRfaW5fcF9UcnlDYXRjaEh5YnJpZDE2ODAwKSxoPXRoaXMucF9CbG9ja0h5YnJpZChhKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChjLGguZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmlmKGo+PTEpYnJlYWsgYTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxiO3ZhciBtPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDI0Myx0aGlzLmlucHV0KTt0aHJvdyBtfWorK313aGlsZSghMCk7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGUpLGIuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhjKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGIudHJlZSxiLnN0YXJ0LGIuc3RvcCkpfWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbjt0aGlzLnJlcG9ydEVycm9yKG4pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG4pLGIudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYi5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxuKX1maW5hbGx5e31yZXR1cm4gYn0scF9UeXBlc3dpdGNoU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3AucF9UeXBlc3dpdGNoU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfVHlwZXN3aXRjaFN0YXRlbWVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHlwZXN3aXRjaFN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfVHlwZXN3aXRjaFN0YXRlbWVudF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsLGs9bnVsbCxsPW51bGwsbT1udWxsLG49bnVsbCxvPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJjLHAuRk9MTE9XX1RZUEVTV0lUQ0hfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4MzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjgzNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG4pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODM5KSxpPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKSxnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsZSxwLkZPTExPV19SUEFSRU5faW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShnKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixvKSk7dmFyIHE9MDthOmRve3ZhciByPTIscz10aGlzLmlucHV0LkxBKDEpO3M9PUYmJihyPTEpO3N3aXRjaChyKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ2FzZVN0YXRlbWVudF9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg0NCksaj10aGlzLnBfQ2FzZVN0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsai5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6aWYocT49MSlicmVhayBhO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIHQ9bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMjQ0LHRoaXMuaW5wdXQpO3Rocm93IHR9cSsrfXdoaWxlKCEwKTtjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPLHAuRk9MTE9XX0RFRkFVTFRfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpO3ZhciB1PTIsdj10aGlzLmlucHV0LkxBKDEpO3Y9PW1lJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOmU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg1Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0pKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODYwKSxoPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGUsaD9oLnN0b3A6bnVsbCl9Yz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUGIscC5GT0xMT1dfUkVUVVJOX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9IeWJyaWRfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NzIpLGs9dGhpcy5wX0h5YnJpZCghMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2godyl7aWYoISh3IGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB3O3RoaXMucmVwb3J0RXJyb3IodyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0Nhc2VTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0Nhc2VTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9DYXNlU3RhdGVtZW50X3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9DYXNlU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9DYXNlU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsLGw9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRixwLkZPTExPV19DQVNFX2luX3BfQ2FzZVN0YXRlbWVudDE2OTAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKTt2YXIgbT0yLG49dGhpcy5pbnB1dC5MQSgxKTtuPT1tZSYmKG09MSk7c3dpdGNoKG0pe2Nhc2UgMTplPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9DYXNlU3RhdGVtZW50MTY5MDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0Nhc2VTdGF0ZW1lbnQxNjkxMiksZz10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihlLGc/Zy5zdG9wOm51bGwpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHkscC5GT0xMT1dfQVNfaW5fcF9DYXNlU3RhdGVtZW50MTY5MTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsKSl9dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfQ2FzZVN0YXRlbWVudDE2OTIwKSxoPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQYixwLkZPTExPV19SRVRVUk5faW5fcF9DYXNlU3RhdGVtZW50MTY5MjQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0h5YnJpZF9pbl9wX0Nhc2VTdGF0ZW1lbnQxNjkyOCksaT10aGlzLnBfSHlicmlkKCExLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGF9LHBfVmFyRGVjbFN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfVmFyRGVjbFN0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX1ZhckRlY2xTdGF0ZW1lbnRfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ZhckRlY2xTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1ZhckRlY2xTdGF0ZW1lbnRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsLGo9bnVsbCxrPW51bGwsbD1udWxsLG09bnVsbCxuPW51bGwsbz1udWxsLHE9bnVsbCxyPW51bGwscz1udWxsLHQ9bnVsbCx1PW51bGwsdj1udWxsLHc9bnVsbCx4PW51bGwsej1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKTthOmRve3ZhciBBPTIsQj10aGlzLmlucHV0LkxBKDEpO0I9PXVlJiYoQT0xKTtzd2l0Y2goQSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0Fubm90YXRpb25faW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NTUpLG09dGhpcy5wX0Fubm90YXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG0uZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGF9fXdoaWxlKCEwKTtjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxmYyxwLkZPTExPV19WQVJJQUJMRV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk2MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTY2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0PXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsdCkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1Zhck5hbWVfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NzApLGs9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGsuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoZSxrP2suc3RvcDpudWxsKTt2YXIgQz0yLEQ9dGhpcy5pbnB1dC5MQSgxKTtEPT15JiYoQz0xKTtzd2l0Y2goQyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk3NCksbj10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixuLmdldFRyZWUoKSl9dmFyIEU9MixGPXRoaXMuaW5wdXQuTEEoMSk7Rj09c2UmJihFPTEpO3N3aXRjaChFKXtjYXNlIDE6Zz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2UscC5GT0xMT1dfQklORF9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk3OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodj10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHYpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTgwKSxvPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLG8uZ2V0VHJlZSgpKX1iOmRve3ZhciBHPTIsSD10aGlzLmlucHV0LkxBKDEpO0g9PXhlJiYoRz0xKTtzd2l0Y2goRyl7Y2FzZSAxOmg9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhlLHAuRk9MTE9XX0NPTU1BX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTk2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih3PXRoaXMuYWRhcHRvci5jcmVhdGUoaCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsdykpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG1lLHAuRk9MTE9XX0RPTExBUl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAwMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHUpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9WYXJOYW1lX2luX3BfVmFyRGVjbFN0YXRlbWVudDE3MDA0KSxsPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixsLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGYsbD9sLnN0b3A6bnVsbCk7dmFyIEk9MixKPXRoaXMuaW5wdXQuTEEoMSk7Sj09eSYmKEk9MSk7c3dpdGNoKEkpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMDgpLHE9dGhpcy5wX1R5cGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIscS5nZXRUcmVlKCkpfXZhciBLPTIsTD10aGlzLmlucHV0LkxBKDEpO0w9PXNlJiYoSz0xKTtzd2l0Y2goSyl7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHNlLHAuRk9MTE9XX0JJTkRfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHg9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYix4KSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAxNCkscj10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixyLmdldFRyZWUoKSl9YnJlYWs7ZGVmYXVsdDpicmVhayBifX13aGlsZSghMCk7aj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUWUscC5GT0xMT1dfU0VNSUNPTE9OX2luX3BfVmFyRGVjbFN0YXRlbWVudDE3MDMxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih6PXRoaXMuYWRhcHRvci5jcmVhdGUoaiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIseikpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKE0pe2lmKCEoTSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTTt0aGlzLnJlcG9ydEVycm9yKE0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LE0pLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxNKX1maW5hbGx5e31yZXR1cm4gYX0scF9XaGlsZVN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfV2hpbGVTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9XaGlsZVN0YXRlbWVudF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfV2hpbGVTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX1doaWxlU3RhdGVtZW50X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxXZCxwLkZPTExPV19XSElMRV9pbl9wX1doaWxlU3RhdGVtZW50MTcwNTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLGU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9wX1doaWxlU3RhdGVtZW50MTcwNjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGo9dGhpcy5hZGFwdG9yLmNyZWF0ZShlKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixqKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfRXhwcl9pbl9wX1doaWxlU3RhdGVtZW50MTcwNjUpLGc9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxlLHAuRk9MTE9XX1JQQVJFTl9pbl9wX1doaWxlU3RhdGVtZW50MTcwNjgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGs9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixrKSksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSHlicmlkX2luX3BfV2hpbGVTdGF0ZW1lbnQxNzA3MCksaD10aGlzLnBfSHlicmlkKCExLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGguZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfRXhwclNpbXBsZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfRXhwclNpbXBsZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0V4cHJTaW1wbGVfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0V4cHJTaW1wbGU6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0V4cHJTaW1wbGVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXt2YXIgZz0zO2c9dGhpcy5kZmEyNTMucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goZyl7Y2FzZSAxOmI9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1F1YW50aWZpZWRFeHByX2luX3BfRXhwclNpbXBsZTE3MDk3KSxjPXRoaXMucF9RdWFudGlmaWVkRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9PckV4cHJfaW5fcF9FeHByU2ltcGxlMTcxMDkpLGU9dGhpcy5wX09yRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpiPXRoaXMuYWRhcHRvci5uaWwoKTtpZighdGhpcy5sYyhtKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsYTt0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJwX0V4cHJTaW1wbGUiLCJ0aGlzLmxjKFhRVSkiKX10aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcGdfVXBkYXRlRXhwcl9pbl9wX0V4cHJTaW1wbGUxNzEyNCksZj10aGlzLnBnX1VwZGF0ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQmxvY2tFeHByX3JldHVybjpmdW5jdGlvbigpe3AucF9CbG9ja0V4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9CbG9ja0V4cHJfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0Jsb2NrRXhwcjpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfQmxvY2tFeHByX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9wX0Jsb2NrRXhwcjE3MTUwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihnPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZykpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1N0YXRlbWVudHNBbmRFeHByX2luX3BfQmxvY2tFeHByMTcxNTIpLGY9dGhpcy5wX1N0YXRlbWVudHNBbmRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2UscC5GT0xMT1dfUkJSQUNLRVRfaW5fcF9CbG9ja0V4cHIxNzE1NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfQ29sbGVjdGlvbkRlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0NvbGxlY3Rpb25EZWNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQ29sbGVjdGlvbkRlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NvbGxlY3Rpb25EZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9Db2xsZWN0aW9uRGVjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxZZCxwLkZPTExPV19DT0xMRUNUSU9OX2luX3BfQ29sbGVjdGlvbkRlY2wxNzE4NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fcF9Db2xsZWN0aW9uRGVjbDE3MTg5KSxlPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2k9PXkmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQ29sbGVjdGlvblR5cGVEZWNsX2luX3BfQ29sbGVjdGlvbkRlY2wxNzE5MSksZj10aGlzLnBfQ29sbGVjdGlvblR5cGVEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0NvbGxlY3Rpb25UeXBlRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfQ29sbGVjdGlvblR5cGVEZWNsX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfQ29sbGVjdGlvblR5cGVEZWNsX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db2xsZWN0aW9uVHlwZURlY2w6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0NvbGxlY3Rpb25UeXBlRGVjbF9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5LHAuRk9MTE9XX0FTX2luX3BfQ29sbGVjdGlvblR5cGVEZWNsMTcyMjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0tpbmRUZXN0X2luX3BfQ29sbGVjdGlvblR5cGVEZWNsMTcyMjQpLGU9dGhpcy5wX0tpbmRUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7dmFyIGg9MixpPXRoaXMuaW5wdXQuTEEoMSk7aT49eWUmJmk8PUFlJiZ0aGlzLnN5bnByZWQxOF9YUXVlcnlQYXJzZXIoKSYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3BfQ29sbGVjdGlvblR5cGVEZWNsMTcyMzMpLGY9dGhpcy5wX09jY3VycmVuY2VJbmRpY2F0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKX1hLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfSW5kZXhEZWNsX3JldHVybjpmdW5jdGlvbigpe3AucF9JbmRleERlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JbmRleERlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luZGV4RGVjbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfSW5kZXhEZWNsX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbCxqPW51bGwsaz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxhZSxwLkZPTExPV19JTkRFWF9pbl9wX0luZGV4RGVjbDE3MjYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihqPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JbmRleE5hbWVfaW5fcF9JbmRleERlY2wxNzI2NyksZj10aGlzLnBfSW5kZXhOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGUscC5GT0xMT1dfT05faW5fcF9JbmRleERlY2wxNzI3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVmMscC5GT0xMT1dfTk9ERVNfaW5fcF9JbmRleERlY2wxNzI3Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW5kZXhEb21haW5FeHByX2luX3BfSW5kZXhEZWNsMTcyODEpLGc9dGhpcy5wX0luZGV4RG9tYWluRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEUscC5GT0xMT1dfQllfaW5fcF9JbmRleERlY2wxNzI4NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW5kZXhLZXlTcGVjX2luX3BfSW5kZXhEZWNsMTcyODkpLGg9dGhpcy5wX0luZGV4S2V5U3BlYygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpO2E6ZG97dmFyIGw9MixtPXRoaXMuaW5wdXQuTEEoMSk7bT09eGUmJihsPTEpO3N3aXRjaChsKXtjYXNlIDE6ZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQseGUscC5GT0xMT1dfQ09NTUFfaW5fcF9JbmRleERlY2wxNzI5Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaz10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGspKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JbmRleEtleVNwZWNfaW5fcF9JbmRleERlY2wxNzI5NCksaT10aGlzLnBfSW5kZXhLZXlTcGVjKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBhfX13aGlsZSghMCk7YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2gobil7aWYoIShuIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBuO3RoaXMucmVwb3J0RXJyb3IobiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG4pfWZpbmFsbHl7fXJldHVybiBhfSxwX0luZGV4TmFtZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSW5kZXhOYW1lX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfSW5kZXhOYW1lX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JbmRleE5hbWU6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0luZGV4TmFtZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX0luZGV4TmFtZTE3MzIxKSxjPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9JbmRleERvbWFpbkV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0luZGV4RG9tYWluRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0luZGV4RG9tYWluRXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW5kZXhEb21haW5FeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JbmRleERvbWFpbkV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9JbmRleERvbWFpbkV4cHIxNzM0NiksYz10aGlzLnBfUGF0aEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfSW5kZXhLZXlTcGVjX3JldHVybjpmdW5jdGlvbigpe3AucF9JbmRleEtleVNwZWNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JbmRleEtleVNwZWNfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luZGV4S2V5U3BlYzpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfSW5kZXhLZXlTcGVjX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW5kZXhLZXlFeHByX2luX3BfSW5kZXhLZXlTcGVjMTczNzEpLGM9dGhpcy5wX0luZGV4S2V5RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PXkmJihnPTEpO3N3aXRjaChnKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSW5kZXhLZXlUeXBlRGVjbF9pbl9wX0luZGV4S2V5U3BlYzE3MzczKSxlPXRoaXMucF9JbmRleEtleVR5cGVEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSl9dmFyIGk9MixqPXRoaXMuaW5wdXQuTEEoMSk7aj09SiYmKGk9MSk7c3dpdGNoKGkpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JbmRleEtleUNvbGxhdGlvbl9pbl9wX0luZGV4S2V5U3BlYzE3Mzc2KSxmPXRoaXMucF9JbmRleEtleUNvbGxhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0scF9JbmRleEtleUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0luZGV4S2V5RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0luZGV4S2V5RXhwcl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW5kZXhLZXlFeHByOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JbmRleEtleUV4cHJfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9JbmRleEtleUV4cHIxNzQwMiksYz10aGlzLnBfUGF0aEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGMuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxlKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZSl9ZmluYWxseXt9cmV0dXJuIGF9LHBfSW5kZXhLZXlUeXBlRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSW5kZXhLZXlUeXBlRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0luZGV4S2V5VHlwZURlY2xfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luZGV4S2V5VHlwZURlY2w6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0luZGV4S2V5VHlwZURlY2xfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQseSxwLkZPTExPV19BU19pbl9wX0luZGV4S2V5VHlwZURlY2wxNzQyOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfQXRvbWljVHlwZV9pbl9wX0luZGV4S2V5VHlwZURlY2wxNzQzMyksZT10aGlzLnBfQXRvbWljVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpO3ZhciBoPTIsaT10aGlzLmlucHV0LkxBKDEpO2k+PXllJiZpPD1BZSYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3BfSW5kZXhLZXlUeXBlRGVjbDE3NDM1KSxmPXRoaXMucF9PY2N1cnJlbmNlSW5kaWNhdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSl9YS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0F0b21pY1R5cGVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0F0b21pY1R5cGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9BdG9taWNUeXBlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BdG9taWNUeXBlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9BdG9taWNUeXBlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfQXRvbWljVHlwZTE3NDYxKSxjPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsYy5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZTt0aGlzLnJlcG9ydEVycm9yKGUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGUpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxlKX1maW5hbGx5e31yZXR1cm4gYX0scF9JbmRleEtleUNvbGxhdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSW5kZXhLZXlDb2xsYXRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JbmRleEtleUNvbGxhdGlvbl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW5kZXhLZXlDb2xsYXRpb246ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0luZGV4S2V5Q29sbGF0aW9uX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSixwLkZPTExPV19DT0xMQVRJT05faW5fcF9JbmRleEtleUNvbGxhdGlvbjE3NDg4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfSW5kZXhLZXlDb2xsYXRpb24xNzQ5MiksZT10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gYX0scF9JQ0RlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0lDRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0lDRGVjbF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNEZWNsOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JQ0RlY2xfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJlLHAuRk9MTE9XX0lOVEVHUklUWV9pbl9wX0lDRGVjbDE3NTE5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxaZCxwLkZPTExPV19DT05TVFJBSU5UX2luX3BfSUNEZWNsMTc1MjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfSUNEZWNsMTc1MjkpLGU9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7dmFyIGk9MixqPXRoaXMuaW5wdXQuTEEoMSk7aWYoaj09ZGUpaT0xO2Vsc2V7aWYoaiE9X2Qpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGE7dmFyIGs9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyNjAsMCx0aGlzLmlucHV0KTt0aHJvdyBrfWk9Mn1zd2l0Y2goaSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0lDQ29sbGVjdGlvbl9pbl9wX0lDRGVjbDE3NTMyKSxmPXRoaXMucF9JQ0NvbGxlY3Rpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSUNGb3JlaWduS2V5X2luX3BfSUNEZWNsMTc1MzYpLGc9dGhpcy5wX0lDRm9yZWlnbktleSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZy5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scF9JQ0NvbGxlY3Rpb25fcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0lDQ29sbGVjdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0lDQ29sbGVjdGlvbl9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNDb2xsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JQ0NvbGxlY3Rpb25fcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkZSxwLkZPTExPV19PTl9pbl9wX0lDQ29sbGVjdGlvbjE3NTY0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxZZCxwLkZPTExPV19DT0xMRUNUSU9OX2luX3BfSUNDb2xsZWN0aW9uMTc1NzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfSUNDb2xsZWN0aW9uMTc1NzQpLGU9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSk7dmFyIGo9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBtZTpqPTE7YnJlYWs7Y2FzZSBEYjpqPTI7YnJlYWs7Y2FzZSAkZDpqPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxhO3ZhciBrPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjYxLDAsdGhpcy5pbnB1dCk7dGhyb3cga31zd2l0Y2goail7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0lDQ29sbFNlcXVlbmNlX2luX3BfSUNDb2xsZWN0aW9uMTc1NzcpLGY9dGhpcy5wX0lDQ29sbFNlcXVlbmNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0lDQ29sbFNlcXVlbmNlVW5pcXVlX2luX3BfSUNDb2xsZWN0aW9uMTc1ODEpLGc9dGhpcy5wX0lDQ29sbFNlcXVlbmNlVW5pcXVlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0lDQ29sbE5vZGVfaW5fcF9JQ0NvbGxlY3Rpb24xNzU4NSksaD10aGlzLnBfSUNDb2xsTm9kZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpfWEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gYX0scF9JQ0NvbGxTZXF1ZW5jZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSUNDb2xsU2VxdWVuY2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JQ0NvbGxTZXF1ZW5jZV9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNDb2xsU2VxdWVuY2U6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0lDQ29sbFNlcXVlbmNlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfSUNDb2xsU2VxdWVuY2UxNzYxMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbFNlcXVlbmNlMTc2MTcpLGY9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGMsZj9mLnN0b3A6bnVsbCksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWGQscC5GT0xMT1dfQ0hFQ0tfaW5fcF9JQ0NvbGxTZXF1ZW5jZTE3NjIzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhlKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfSUNDb2xsU2VxdWVuY2UxNzYyNyksZz10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0lDQ29sbFNlcXVlbmNlVW5pcXVlX3JldHVybjpmdW5jdGlvbigpe3AucF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZV9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0lDQ29sbFNlcXVlbmNlVW5pcXVlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfSUNDb2xsU2VxdWVuY2VVbmlxdWVfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsLGc9bnVsbCxoPW51bGwsaT1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxEYixwLkZPTExPV19OT0RFX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY1NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGkpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2NjUpLGY9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGUsZj9mLnN0b3A6bnVsbCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWGQscC5GT0xMT1dfQ0hFQ0tfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3NjcxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxlZSxwLkZPTExPV19VTklRVUVfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3Njc3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjZSxwLkZPTExPV19LRVlfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3NjgzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9QYXRoRXhwcl9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2ODcpLGc9dGhpcy5wX1BhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goail7aWYoIShqIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBqO3RoaXMucmVwb3J0RXJyb3IoaiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaiksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGopfWZpbmFsbHl7fXJldHVybiBhfSxwX0lDQ29sbE5vZGVfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0lDQ29sbE5vZGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JQ0NvbGxOb2RlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JQ0NvbGxOb2RlOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JQ0NvbGxOb2RlX3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGwsaD1udWxsLGk9bnVsbDt0cnl7Yj10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsJGQscC5GT0xMT1dfRk9SRUFDSF9pbl9wX0lDQ29sbE5vZGUxNzcxNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRGIscC5GT0xMT1dfTk9ERV9pbl9wX0lDQ29sbE5vZGUxNzcyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksZT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3BfSUNDb2xsTm9kZTE3NzI2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfSUNDb2xsTm9kZTE3NzMwKSxmPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihlLGY/Zi5zdG9wOm51bGwpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFhkLHAuRk9MTE9XX0NIRUNLX2luX3BfSUNDb2xsTm9kZTE3NzM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfSUNDb2xsTm9kZTE3NzQwKSxnPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcuZ2V0VHJlZSgpKSxhLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoYiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhhLnRyZWUsYS5zdGFydCxhLnN0b3ApKX1jYXRjaChqKXtpZighKGogaW5zdGFuY2VvZiBkLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGo7dGhpcy5yZXBvcnRFcnJvcihqKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxqKSxhLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGEuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksail9ZmluYWxseXt9cmV0dXJuIGF9LHBfSUNGb3JlaWduS2V5X3JldHVybjpmdW5jdGlvbigpe3AucF9JQ0ZvcmVpZ25LZXlfcmV0dXJuPWZ1bmN0aW9uKCl7fSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAucF9JQ0ZvcmVpZ25LZXlfcmV0dXJuLGQuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0lDRm9yZWlnbktleTpmdW5jdGlvbigpe3ZhciBhPW5ldyBwLnBfSUNGb3JlaWduS2V5X3JldHVybjthLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGI9bnVsbCxjPW51bGwsZT1udWxsLGY9bnVsbCxnPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9kLHAuRk9MTE9XX0ZPUkVJR05faW5fcF9JQ0ZvcmVpZ25LZXkxNzc2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGcpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2UscC5GT0xMT1dfS0VZX2luX3BfSUNGb3JlaWduS2V5MTc3NzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX0lDRm9yZWlnbktleVNvdXJjZV9pbl9wX0lDRm9yZWlnbktleTE3Nzc4KSxlPXRoaXMucF9JQ0ZvcmVpZ25LZXlTb3VyY2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGUuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JQ0ZvcmVpZ25LZXlUYXJnZXRfaW5fcF9JQ0ZvcmVpZ25LZXkxNzc4MCksZj10aGlzLnBfSUNGb3JlaWduS2V5VGFyZ2V0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixmLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBhfSxwX0lDRm9yZWlnbktleVNvdXJjZV9yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSUNGb3JlaWduS2V5U291cmNlX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfSUNGb3JlaWduS2V5U291cmNlX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JQ0ZvcmVpZ25LZXlTb3VyY2U6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0lDRm9yZWlnbktleVNvdXJjZV9yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGw7dHJ5e2I9dGhpcy5hZGFwdG9yLm5pbCgpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtkLHAuRk9MTE9XX0ZST01faW5fcF9JQ0ZvcmVpZ25LZXlTb3VyY2UxNzgwNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoYyksdGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfSUNGb3JlaWduS2V5VmFsdWVzX2luX3BfSUNGb3JlaWduS2V5U291cmNlMTc4MTEpLGU9dGhpcy5wX0lDRm9yZWlnbktleVZhbHVlcygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZS5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gYX0scF9JQ0ZvcmVpZ25LZXlUYXJnZXRfcmV0dXJuOmZ1bmN0aW9uKCl7cC5wX0lDRm9yZWlnbktleVRhcmdldF9yZXR1cm49ZnVuY3Rpb24oKXt9LGQuYW50bHIubGFuZy5leHRlbmQocC5wX0lDRm9yZWlnbktleVRhcmdldF9yZXR1cm4sZC5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNGb3JlaWduS2V5VGFyZ2V0OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IHAucF9JQ0ZvcmVpZ25LZXlUYXJnZXRfcmV0dXJuO2Euc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgYj1udWxsLGM9bnVsbCxlPW51bGwsZj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfYixwLkZPTExPV19UT19pbl9wX0lDRm9yZWlnbktleVRhcmdldDE3ODM4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9JQ0ZvcmVpZ25LZXlWYWx1ZXNfaW5fcF9JQ0ZvcmVpZ25LZXlUYXJnZXQxNzg0MiksZT10aGlzLnBfSUNGb3JlaWduS2V5VmFsdWVzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixlLmdldFRyZWUoKSksYS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGEudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGIpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoYS50cmVlLGEuc3RhcnQsYS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2YgZC5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksYS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxhLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBhfSxwX0lDRm9yZWlnbktleVZhbHVlc19yZXR1cm46ZnVuY3Rpb24oKXtwLnBfSUNGb3JlaWduS2V5VmFsdWVzX3JldHVybj1mdW5jdGlvbigpe30sZC5hbnRsci5sYW5nLmV4dGVuZChwLnBfSUNGb3JlaWduS2V5VmFsdWVzX3JldHVybixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JQ0ZvcmVpZ25LZXlWYWx1ZXM6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgcC5wX0lDRm9yZWlnbktleVZhbHVlc19yZXR1cm47YS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBiPW51bGwsYz1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bnVsbCxpPW51bGwsaj1udWxsO3RyeXtiPXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxZZCxwLkZPTExPV19DT0xMRUNUSU9OX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4NjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShjKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixpKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGMpLHRoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4NzMpLGc9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYixnLmdldFRyZWUoKSksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRGIscC5GT0xMT1dfTk9ERV9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODc3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSxlPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtZSxwLkZPTExPV19ET0xMQVJfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg4Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGE7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaj10aGlzLmFkYXB0b3IuY3JlYXRlKGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLGopKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9RTmFtZV9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODg3KSxmPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsZi5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihlLGY/Zi5zdG9wOm51bGwpLGM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNlLHAuRk9MTE9XX0tFWV9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODkzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gYTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhjKSx0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9QYXRoRXhwcl9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODk3KSxoPXRoaXMucF9QYXRoRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBhO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGIsaC5nZXRUcmVlKCkpLGEuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhiKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGEudHJlZSxhLnN0YXJ0LGEuc3RvcCkpfWNhdGNoKGspe2lmKCEoayBpbnN0YW5jZW9mIGQuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgazt0aGlzLnJlcG9ydEVycm9yKGspLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGspLGEudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsYS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxrKX1maW5hbGx5e31yZXR1cm4gYX0sc3lucHJlZDFfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dmFyIGE9MixiPXRoaXMuaW5wdXQuTEEoMSk7aWYoYj09ZWIpe3ZhciBjPXRoaXMuaW5wdXQuTEEoMik7aWYoYz09bWUpYT0xO2Vsc2V7aWYoYyE9RGMmJmMhPUhjKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXt0aGlzLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dmFyIGU9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyNjIsMSx0aGlzLmlucHV0KTt0aHJvdyBlfWE9Mn19ZWxzZXtpZihiIT12Yil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXZhciBlPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjYyLDAsdGhpcy5pbnB1dCk7dGhyb3cgZX1hPTF9c3dpdGNoKGEpe2Nhc2UgMTppZih0aGlzLmlucHV0LkxBKDEpIT1lYiYmdGhpcy5pbnB1dC5MQSgxKSE9dmIpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn12YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBmfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMSx0aGlzLm1hdGNoKHRoaXMuaW5wdXQsbWUscC5GT0xMT1dfRE9MTEFSX2luX3N5bnByZWQxX1hRdWVyeVBhcnNlcjM1NDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjticmVhaztjYXNlIDI6dGhpcy5tYXRjaCh0aGlzLmlucHV0LGViLHAuRk9MTE9XX0ZPUl9pbl9zeW5wcmVkMV9YUXVlcnlQYXJzZXIzNTQ5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm47aWYodGhpcy5pbnB1dC5MQSgxKSE9RGMmJnRoaXMuaW5wdXQuTEEoMSkhPUhjKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXt0aGlzLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dmFyIGY9bmV3IGQuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgZn10aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITF9fSxzeW5wcmVkMl9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2IscC5GT0xMT1dfSUZfaW5fc3lucHJlZDJfWFF1ZXJ5UGFyc2VyMzU3Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO3RoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fc3lucHJlZDJfWFF1ZXJ5UGFyc2VyMzU3OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkM19YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsRmMscC5GT0xMT1dfU1dJVENIX2luX3N5bnByZWQzX1hRdWVyeVBhcnNlcjM2MDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3N5bnByZWQzX1hRdWVyeVBhcnNlcjM2MDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDRfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJjLHAuRk9MTE9XX1RZUEVTV0lUQ0hfaW5fc3lucHJlZDRfWFF1ZXJ5UGFyc2VyMzYzMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO3RoaXMubWF0Y2godGhpcy5pbnB1dCxrZSxwLkZPTExPV19MUEFSRU5faW5fc3lucHJlZDRfWFF1ZXJ5UGFyc2VyMzYzNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkNV9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsR2MscC5GT0xMT1dfVFJZX2luX3N5bnByZWQ1X1hRdWVyeVBhcnNlcjM2NTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fc3lucHJlZDVfWFF1ZXJ5UGFyc2VyMzY1Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkNl9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsZWMscC5GT0xMT1dfVkFMSURBVEVfaW5fc3lucHJlZDZfWFF1ZXJ5UGFyc2VyNjE4OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO3ZhciBhPTMsYj10aGlzLmlucHV0LkxBKDEpO2I9PXNifHxiPT1YYj9hPTE6Yj09SWMmJihhPTIpO3N3aXRjaChhKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfVmFsaWRhdGlvbk1vZGVfaW5fc3lucHJlZDZfWFF1ZXJ5UGFyc2VyNjE5MyksdGhpcy5wX1ZhbGlkYXRpb25Nb2RlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO2JyZWFrO2Nhc2UgMjp0aGlzLm1hdGNoKHRoaXMuaW5wdXQsSWMscC5GT0xMT1dfVFlQRV9pbl9zeW5wcmVkNl9YUXVlcnlQYXJzZXI2MTk3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59fSxzeW5wcmVkN19YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsSWUscC5GT0xMT1dfU0xBU0hfaW5fc3lucHJlZDdfWFF1ZXJ5UGFyc2VyNjU1Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO3RoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1JlbGF0aXZlUGF0aEV4cHJfaW5fc3lucHJlZDdfWFF1ZXJ5UGFyc2VyNjU1NSksdGhpcy5wX1JlbGF0aXZlUGF0aEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQ4X1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe2lmKCEodGhpcy5pbnB1dC5MQSgxKT09a2V8fHRoaXMuaW5wdXQuTEEoMSk+PW1lJiZ0aGlzLmlucHV0LkxBKDEpPD1uZXx8dGhpcy5pbnB1dC5MQSgxKT09Q2V8fHRoaXMuaW5wdXQuTEEoMSk+PV9lJiZ0aGlzLmlucHV0LkxBKDEpPD1hZikpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn12YXIgYT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBhfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMX0sc3lucHJlZDlfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dmFyIGE9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBCOmNhc2UgVjphPTE7YnJlYWs7Y2FzZSB6YjpjYXNlIE9iOmE9MjticmVhaztjYXNlIEs6Y2FzZSBUOmNhc2UgWmI6YT0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXZhciBiPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjY2LDAsdGhpcy5pbnB1dCk7dGhyb3cgYn1zd2l0Y2goYSl7Y2FzZSAxOmlmKHRoaXMuaW5wdXQuTEEoMSkhPUImJnRoaXMuaW5wdXQuTEEoMSkhPVYpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn12YXIgYz1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBjfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMTt2YXIgZT0yLGY9dGhpcy5pbnB1dC5MQSgxKTtpZihmPj12JiZmPD1aY3x8Zj49X2MmJmY8PWllfHxmPT1kZnx8Zj09d2cpZT0xO3N3aXRjaChlKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUU5hbWVfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjczMCksdGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufXRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9zeW5wcmVkOV9YUXVlcnlQYXJzZXI2NzMzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm47YnJlYWs7Y2FzZSAyOmlmKHRoaXMuaW5wdXQuTEEoMSkhPXpiJiZ0aGlzLmlucHV0LkxBKDEpIT1PYil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXZhciBjPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IGN9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExO3ZhciBnPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg+PXYmJmg8PVpjfHxoPj1fYyYmaDw9aWV8fGg9PWRmfHxoPT13ZylnPTE7c3dpdGNoKGcpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc1OSksdGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbmUscC5GT0xMT1dfTEJSQUNLRVRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc2Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO2JyZWFrO2Nhc2UgMzppZih0aGlzLmlucHV0LkxBKDEpIT1LJiZ0aGlzLmlucHV0LkxBKDEpIT1UJiZ0aGlzLmlucHV0LkxBKDEpIT1aYil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXZhciBjPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IGN9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExLHRoaXMubWF0Y2godGhpcy5pbnB1dCxuZSxwLkZPTExPV19MQlJBQ0tFVF9pbl9zeW5wcmVkOV9YUXVlcnlQYXJzZXI2NzkyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59fSxzeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfS2luZFRlc3RfaW5fc3lucHJlZDEwX1hRdWVyeVBhcnNlcjY4MjIpLHRoaXMucF9LaW5kVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDExX1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3RoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1FOYW1lX2luX3N5bnByZWQxMV9YUXVlcnlQYXJzZXI2ODQxKSx0aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm47dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtlLHAuRk9MTE9XX0xQQVJFTl9pbl9zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyNjg0Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5wdXNoRm9sbG93KHAuRk9MTE9XX3BfUHJpbWFyeUV4cHJfaW5fc3lucHJlZDEyX1hRdWVyeVBhcnNlcjY4NjEpLHRoaXMucF9QcmltYXJ5RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDEzX1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3RoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX1dpbGRjYXJkX2luX3N5bnByZWQxM19YUXVlcnlQYXJzZXI3MzAwKSx0aGlzLnBfV2lsZGNhcmQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQxNF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fc3lucHJlZDE0X1hRdWVyeVBhcnNlcjczMTkpLHRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm47dGhpcy5tYXRjaCh0aGlzLmlucHV0LE1lLHAuRk9MTE9XX0NPTE9OX2luX3N5bnByZWQxNF9YUXVlcnlQYXJzZXI3MzIxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQxNV9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9OQ05hbWVfaW5fc3lucHJlZDE1X1hRdWVyeVBhcnNlcjczMzkpLHRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQxNl9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2UscC5GT0xMT1dfTFBBUkVOX2luX3N5bnByZWQxNl9YUXVlcnlQYXJzZXI3NTk1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQxN19YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLnB1c2hGb2xsb3cocC5GT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3N5bnByZWQxN19YUXVlcnlQYXJzZXI5NjU0KSx0aGlzLnBfT2NjdXJyZW5jZUluZGljYXRvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDE4X1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3RoaXMucHVzaEZvbGxvdyhwLkZPTExPV19wX09jY3VycmVuY2VJbmRpY2F0b3JfaW5fc3lucHJlZDE4X1hRdWVyeVBhcnNlcjE3MjI4KSx0aGlzLnBfT2NjdXJyZW5jZUluZGljYXRvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDNfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgYT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkM19YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkMTVfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgYT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMTVfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2goYil7YWxlcnQoImltcG9zc2libGU6ICIrYi50b1N0cmluZygpKX12YXIgYz0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsY30sc3lucHJlZDdfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgYT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkN19YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkOV9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKGIpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK2IudG9TdHJpbmcoKSl9dmFyIGM9IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChhKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLGN9LHN5bnByZWQxMF9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkMTdfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgYT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMTdfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2goYil7YWxlcnQoImltcG9zc2libGU6ICIrYi50b1N0cmluZygpKX12YXIgYz0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsY30sc3lucHJlZDVfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgYT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkNV9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgYT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2goYil7YWxlcnQoImltcG9zc2libGU6ICIrYi50b1N0cmluZygpKX12YXIgYz0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsY30sc3lucHJlZDE2X1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGE9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDE2X1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKGIpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK2IudG9TdHJpbmcoKSl9dmFyIGM9IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChhKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLGN9LHN5bnByZWQxNF9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQxNF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkNl9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQ2X1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKGIpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK2IudG9TdHJpbmcoKSl9dmFyIGM9IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChhKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLGN9LHN5bnByZWQxOF9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQxOF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkOF9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKGIpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK2IudG9TdHJpbmcoKSl9dmFyIGM9IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChhKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLGN9LHN5bnByZWQxM19YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQxM19YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkNF9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQ0X1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKGIpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK2IudG9TdHJpbmcoKSl9dmFyIGM9IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChhKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLGN9LHN5bnByZWQxMV9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaChiKXthbGVydCgiaW1wb3NzaWJsZTogIitiLnRvU3RyaW5nKCkpfXZhciBjPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoYSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxjfSxzeW5wcmVkMV9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBhPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQxX1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKGIpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK2IudG9TdHJpbmcoKSl9dmFyIGM9IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChhKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLGN9LHN5bnByZWQyX1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGE9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDJfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2goYil7YWxlcnQoImltcG9zc2libGU6ICIrYi50b1N0cmluZygpKX12YXIgYz0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsY319LCEwKSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExX2VvdFM6Ilxu77+/IixERkExX2VvZlM6IgEFAQlcYu+/vyIsREZBMV9taW5TOiIBEAESXGLvv78iLERGQTFfbWF4UzoiAcWUAcO+XGLvv78iLERGQTFfYWNjZXB0UzoiAu+/vwQCAQEDAiIsREZBMV9zcGVjaWFsUzoiAQEBXDBcYu+/v30+IixERkExX3RyYW5zaXRpb25TOlsiAgIEBAECBgQBAgEEAQICBAECAQQCAgIEAwIFBAECAgQDAgUEAgIJBAECAgQCAgMEAQIEBAECAQQDAgEEAQIDBAQCAwQBAgMEAQIBBAMCAgQBAVxmBAECCQQCAgcEAgIBBAECBAQCAgIEAQIsBAMCAgQBAlxuBAECAwQB77+/AQIB77+/AgIG77+/AQME77+/BAIF77+/BAJcZu+/vwECAu+/vwICAu+/vwEEBu+/vwYCO++/vwEEIiwiAQdcYu+/vwIHXG7vv78BBwbvv78BBgEHAe+/vwEHBe+/vwEHAe+/vwIHBO+/vwMHAu+/vwEHAu+/vwIHAu+/vwEHBe+/vwEHFO+/vwIHAe+/vwEHA++/vwEGMu+/vwEHO++/vwIHBO+/vwEHAe+/vwEHAe+/vwEHA++/vwEHAe+/vwsHAu+/vwEHA++/vwFcYgEHIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExX2VvdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExX2VvdFMpLERGQTFfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTFfZW9mUyksREZBMV9taW46ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBMV9taW5TKSxERkExX21heDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkExX21heFMpLERGQTFfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTFfYWNjZXB0UyksREZBMV9zcGVjaWFsOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTFfc3BlY2lhbFMpLERGQTFfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVtdLGIsYz1wLkRGQTFfdHJhbnNpdGlvblMubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKylhLnB1c2goZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMV90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkExPWZ1bmN0aW9uKGEpe3RoaXMucmVjb2duaXplcj1hLHRoaXMuZGVjaXNpb25OdW1iZXI9MSx0aGlzLmVvdD1wLkRGQTFfZW90LHRoaXMuZW9mPXAuREZBMV9lb2YsdGhpcy5taW49cC5ERkExX21pbix0aGlzLm1heD1wLkRGQTFfbWF4LHRoaXMuYWNjZXB0PXAuREZBMV9hY2NlcHQsdGhpcy5zcGVjaWFsPXAuREZBMV9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1wLkRGQTFfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTEsZC5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMjk2OjEzOiAodmQ9IHBfVmVyc2lvbkRlY2wgKT8ifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGIsYyl7dmFyIGU9YixmPWZ1bmN0aW9uKGIsYyl7c3dpdGNoKGIpe2Nhc2UgMDp2YXIgZD1jLkxBKDEpLGU9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSxkPT1afHxkPT1nYz9iPTY6ZD09eHx8ZD49RyYmZDw9SHx8ZD09U3x8ZD09JHx8ZD09YWJ8fGQ9PWdifHxkPj1pYiYmZDw9amJ8fGQ+PW9iJiZkPD1xYnx8ZD09dGJ8fGQ+PXdiJiZkPD14Ynx8ZD09QWJ8fGQ9PUdifHxkPj1fYiYmZDw9YWN8fGQ9PWNjfHxkPT1kZHx8ZD49amUmJmQ8PWtlfHxkPT1wZXx8ZD09cmV8fGQ9PXRlfHxkPT14ZXx8ZD49emUmJmQ8PUplfHxkPT1NZXx8ZD09UmU/Yj03OmQ9PVFlJiZ0aGlzLmxjKGwpP2I9ODpkPT1hJiYoYj05KSxjLnNlZWsoZSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDE6dmFyIGY9Yy5MQSgxKSxnPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsZj09aWM/Yj0xOmY+PXYmJmY8PXd8fGY9PUJ8fGY9PUl8fGY9PUt8fGY9PU58fGY+PVAmJmY8PVF8fGY+PVQmJmY8PVZ8fGY9PV98fGY+PWNiJiZmPD1lYnx8Zj49a2ImJmY8PWxifHxmPT12Ynx8Zj49eWImJmY8PXpifHxmPT1EYnx8Zj09SWJ8fGY+PUtiJiZmPD1NYnx8Zj09T2J8fGY+PVNiJiZmPD1WYnx8Zj09WmJ8fGY9PWJjfHxmPj1kYyYmZjw9ZmN8fGY9PXZjfHxmPj1GYyYmZjw9R2N8fGY+PU9jJiZmPD1QY3x8Zj09UmN8fGY+PVdjJiZmPD1YY3x8Zj09JGN8fGY+PVJkJiZmPD1UZHx8Zj09V2R8fGY9PWZlfHxmPT1rZXx8Zj49bWUmJmY8PW5lfHxmPj16ZSYmZjw9Q2V8fGY+PUllJiZmPD1MZXx8Zj09WWV8fGY+PV9lJiZmPD1hZnx8Zj49bGYmJmY8PXFmP2I9MjpmPT11ZSYmdGhpcy5sYyhsKT9iPTM6Zj49eCYmZjw9QXx8Zj49QyYmZjw9SHx8Zj09Snx8Zj49TCYmZjw9TXx8Zj09T3x8Zj49UiYmZjw9U3x8Zj49VyYmZjw9JHx8Zj49YWImJmY8PWJifHxmPj1mYiYmZjw9amJ8fGY+PW1iJiZmPD11Ynx8Zj49d2ImJmY8PXhifHxmPj1BYiYmZjw9Q2J8fGY+PUViJiZmPD1IYnx8Zj09SmJ8fGY9PU5ifHxmPj1QYiYmZjw9UmJ8fGY+PVdiJiZmPD1ZYnx8Zj49JGImJmY8PWFjfHxmPT1jY3x8Zj49Z2MmJmY8PWhjfHxmPj1qYyYmZjw9dWN8fGY+PXdjJiZmPD1FY3x8Zj49SGMmJmY8PU5jfHxmPT1RY3x8Zj49U2MmJmY8PVZjfHxmPj1ZYyYmZjw9WmN8fGY+PV9jJiZmPD1RZHx8Zj49VWQmJmY8PVZkfHxmPj1YZCYmZjw9ZWV8fGY+PWdlJiZmPD1pZXx8Zj09ZGZ8fGY9PXdnP2I9NDpmPT1hJiZ0aGlzLmxjKGwpJiYoYj01KSxjLnNlZWsoZyk7aWYoYj49MClyZXR1cm4gYn19LmNhbGwodGhpcy5yZWNvZ25pemVyLGIsYyk7aWYoIWQuYW50bHIubGFuZy5pc1VuZGVmaW5lZChmKSlyZXR1cm4gZjtpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITAsLTE7dmFyIGc9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMSxlLGMpO3Rocm93IHRoaXMuZXJyb3IoZyksZ30sZHVtbXk6bnVsbH0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTJfZW90UzoiXG7vv78iLERGQTJfZW9mUzoiAQUBCVxi77+/IixERkEyX21pblM6IgEQARJcYu+/vyIsREZBMl9tYXhTOiIBxZQBw75cYu+/vyIsREZBMl9hY2NlcHRTOiIC77+/BAIBAQMCIixERkEyX3NwZWNpYWxTOiIBAQFcMFxi77+/fT4iLERGQTJfdHJhbnNpdGlvblM6WyICAgQEAQIGBAECAQQBAgIEAQIBBAICAgQDAgUEAQICBAMCBQQCAgkEAQICBAEBAQIDBAECBAQBAgEEAwIBBAECAwQEAgMEAQIDBAECAQQDAg8EAQIJBAICBwQCAgEEAQIEBAICAgQBAiwEAwICBAECXG4EAQIDBAHvv78BAgHvv78CAgbvv78BAwTvv78EAgXvv78EAlxm77+/AQIC77+/AgIC77+/AQQG77+/BgI777+/AQQiLCIBB1xi77+/Agdcbu+/vwEHB++/vwEHAe+/vwEHBe+/vwEHAe+/vwIHBO+/vwMHAu+/vwEHAu+/vwIHAe+/vwEGAQcF77+/AQcU77+/AgcB77+/AQc277+/AQc777+/AgcE77+/AQcB77+/AQcB77+/AQcD77+/AQcB77+/CwcC77+/AQcD77+/AVxiAQciLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiXX0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTJfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTJfZW90UyksREZBMl9lb2Y6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMl9lb2ZTKSxERkEyX21pbjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkEyX21pblMpLERGQTJfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTJfbWF4UyksREZBMl9hY2NlcHQ6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMl9hY2NlcHRTKSxERkEyX3NwZWNpYWw6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMl9zcGVjaWFsUyksREZBMl90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPXAuREZBMl90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKGI9MDtiPGM7YisrKWEucHVzaChkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkEyX3RyYW5zaXRpb25TW2JdKSk7cmV0dXJuIGF9KCl9KSxwLkRGQTI9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj0yLHRoaXMuZW90PXAuREZBMl9lb3QsdGhpcy5lb2Y9cC5ERkEyX2VvZix0aGlzLm1pbj1wLkRGQTJfbWluLHRoaXMubWF4PXAuREZBMl9tYXgsdGhpcy5hY2NlcHQ9cC5ERkEyX2FjY2VwdCx0aGlzLnNwZWNpYWw9cC5ERkEyX3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXAuREZBMl90cmFuc2l0aW9ufSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAuREZBMixkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIyOTc6MTM6IChsbT0gcF9MaWJyYXJ5TW9kdWxlWyR2ZC50cmVlXSAtPiB8IG1tPSBwX01haW5Nb2R1bGVbJHZkLnRyZWVdIC0+KSJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24oYixjKXt2YXIgZT1iLGY9ZnVuY3Rpb24oYixjKXtzd2l0Y2goYil7Y2FzZSAwOnZhciBkPWMuTEEoMSksZT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLGQ9PXpiP2I9NjpkPT14fHxkPj1HJiZkPD1IfHxkPT1TfHxkPT0kfHxkPT1hYnx8ZD09Z2J8fGQ+PWliJiZkPD1qYnx8ZD49b2ImJmQ8PXFifHxkPT10Ynx8ZD49d2ImJmQ8PXhifHxkPT1BYnx8ZD09R2J8fGQ+PV9iJiZkPD1hY3x8ZD09Y2N8fGQ9PWRkfHxkPj1qZSYmZDw9a2V8fGQ9PXBlfHxkPT1yZXx8ZD09dGV8fGQ9PXhlfHxkPj16ZSYmZDw9SmV8fGQ9PU1lfHxkPT1SZT9iPTc6ZD09UWUmJnRoaXMubGMobCk/Yj04OmQ9PWEmJihiPTkpLGMuc2VlayhlKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMTp2YXIgZj1jLkxBKDEpLGc9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSxmPT15Yj9iPTE6Zj49diYmZjw9d3x8Zj09Qnx8Zj09SXx8Zj09S3x8Zj09Tnx8Zj49UCYmZjw9UXx8Zj49VCYmZjw9Vnx8Zj09X3x8Zj49Y2ImJmY8PWVifHxmPj1rYiYmZjw9bGJ8fGY9PXZifHxmPT16Ynx8Zj09RGJ8fGY9PUlifHxmPj1LYiYmZjw9TWJ8fGY9PU9ifHxmPj1TYiYmZjw9VmJ8fGY9PVpifHxmPT1iY3x8Zj49ZGMmJmY8PWZjfHxmPT12Y3x8Zj49RmMmJmY8PUdjfHxmPj1PYyYmZjw9UGN8fGY9PVJjfHxmPj1XYyYmZjw9WGN8fGY9PSRjfHxmPj1SZCYmZjw9VGR8fGY9PVdkfHxmPT1mZXx8Zj09a2V8fGY+PW1lJiZmPD1uZXx8Zj49emUmJmY8PUNlfHxmPj1JZSYmZjw9TGV8fGY9PVllfHxmPj1fZSYmZjw9YWZ8fGY+PWxmJiZmPD1xZj9iPTI6Zj09dWUmJnRoaXMubGMobCk/Yj0zOmY+PXgmJmY8PUF8fGY+PUMmJmY8PUh8fGY9PUp8fGY+PUwmJmY8PU18fGY9PU98fGY+PVImJmY8PVN8fGY+PVcmJmY8PSR8fGY+PWFiJiZmPD1iYnx8Zj49ZmImJmY8PWpifHxmPj1tYiYmZjw9dWJ8fGY+PXdiJiZmPD14Ynx8Zj49QWImJmY8PUNifHxmPj1FYiYmZjw9SGJ8fGY9PUpifHxmPT1OYnx8Zj49UGImJmY8PVJifHxmPj1XYiYmZjw9WWJ8fGY+PSRiJiZmPD1hY3x8Zj09Y2N8fGY+PWdjJiZmPD11Y3x8Zj49d2MmJmY8PUVjfHxmPj1IYyYmZjw9TmN8fGY9PVFjfHxmPj1TYyYmZjw9VmN8fGY+PVljJiZmPD1aY3x8Zj49X2MmJmY8PVFkfHxmPj1VZCYmZjw9VmR8fGY+PVhkJiZmPD1lZXx8Zj49Z2UmJmY8PWllfHxmPT1kZnx8Zj09d2c/Yj00OmY9PWEmJnRoaXMubGMobCkmJihiPTUpLGMuc2VlayhnKTtpZihiPj0wKXJldHVybiBifX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsYixjKTtpZighZC5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGYpKXJldHVybiBmO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgZz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwyLGUsYyk7dGhyb3cgdGhpcy5lcnJvcihnKSxnfSxkdW1teTpudWxsfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBNl9lb3RTOiJcbu+/vyIsREZBNl9lb2ZTOiIBBQEJAu+/vwEJBe+/vyIsREZBNl9taW5TOiIBEAESAu+/vwESBe+/vyIsREZBNl9tYXhTOiIBxZQBw74C77+/AcO+Be+/vyIsREZBNl9hY2NlcHRTOiIC77+/AgIB77+/AQICAQICIixERkE2X3NwZWNpYWxTOiIBAgEBAu+/vwFcMAXvv799PiIsREZBNl90cmFuc2l0aW9uUzpbIgICBAUBAgYFAQIBBQECAgUBAQEFAgICBQMCBQUBAgIFAwIFBQECAQQJBQECAwUBAgMFAQIEBQECAQUDAgEFAQIDBQQCAwUBAgMFAQIBBQMCDwUBAgkFAgIHBQICAQUBAgQFAgICBQECLAUDAgIFAQJcbgUBAgMFAe+/vwECAe+/vwICBu+/vwEDBO+/vwQCBe+/vwQCXGbvv78BAgLvv78CAgLvv78BBQbvv78GAjvvv78BBSIsIgEFBO+/vwIHAu+/vwIFA++/vwIHAe+/vwEHA++/vwEFB++/vwEFAe+/vwEFBO+/vwIFAe+/vwIFBO+/vwMFAu+/vwEFAu+/vwIFAe+/vwEHAQUE77+/AgUC77+/AQcR77+/AgUB77+/AQUC77+/AQUF77+/AQUB77+/AQck77+/AQYB77+/AQUE77+/AQUH77+/AQcm77+/AQUD77+/AgUH77+/AgUE77+/AQUB77+/AQUB77+/AgUC77+/AQUB77+/CwUC77+/AQUD77+/AVxiAQUiLCIiLCIiLCIBCVxi77+/Aglcbu+/vwEJB++/vwEJAe+/vwEJBe+/vwEJAe+/vwIJBO+/vwMJAu+/vwEJAu+/vwIJAQcB77+/AQkF77+/AQlcbu+/vwEHCe+/vwIJAe+/vwEJNu+/vwEJO++/vwIJBO+/vwEJAe+/vwEJAe+/vwEJA++/vwEJAe+/vwsJAu+/vwEJA++/vwFcYgEJIiwiIiwiIiwiIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkE2X2VvdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkE2X2VvdFMpLERGQTZfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTZfZW9mUyksREZBNl9taW46ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBNl9taW5TKSxERkE2X21heDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkE2X21heFMpLERGQTZfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTZfYWNjZXB0UyksREZBNl9zcGVjaWFsOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTZfc3BlY2lhbFMpLERGQTZfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVtdLGIsYz1wLkRGQTZfdHJhbnNpdGlvblMubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKylhLnB1c2goZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBNl90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkE2PWZ1bmN0aW9uKGEpe3RoaXMucmVjb2duaXplcj1hLHRoaXMuZGVjaXNpb25OdW1iZXI9Nix0aGlzLmVvdD1wLkRGQTZfZW90LHRoaXMuZW9mPXAuREZBNl9lb2YsdGhpcy5taW49cC5ERkE2X21pbix0aGlzLm1heD1wLkRGQTZfbWF4LHRoaXMuYWNjZXB0PXAuREZBNl9hY2NlcHQsdGhpcy5zcGVjaWFsPXAuREZBNl9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1wLkRGQTZfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTYsZC5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iKCkqIGxvb3BiYWNrIG9mIDMzMjoxMTogKCAoZG5kKz0gcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wgfCBzKz0gcF9TZXR0ZXIgfCBuZCs9IHBtX05hbWVzcGFjZURlY2wgfCBpKz0gcF9JbXBvcnQgfCBmdG8rPSBwbV9GVE9wdGlvbkRlY2wgKSApKiJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24oYixjKXt2YXIgZT1iLGY9ZnVuY3Rpb24oYixjKXtzd2l0Y2goYil7Y2FzZSAwOnZhciBkPWMuTEEoMSksZT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xO2lmKGQ9PWF8fGQ9PXh8fGQ+PUcmJmQ8PUh8fGQ9PVN8fGQ9PSR8fGQ9PWFifHxkPT1nYnx8ZD49aWImJmQ8PWpifHxkPj1vYiYmZDw9cWJ8fGQ9PXRifHxkPj13YiYmZDw9eGJ8fGQ9PUFifHxkPT1HYnx8ZD49X2ImJmQ8PWFjfHxkPT1jY3x8ZD09ZGR8fGQ+PWplJiZkPD1rZXx8ZD09cGV8fGQ9PXJlfHxkPT10ZXx8ZD09eGV8fGQ+PXplJiZkPD1KZXx8ZD09TWV8fGQ9PVJlKWI9OTtlbHNlIGlmKGQ9PVFlJiZ0aGlzLmxjKGwpKWI9ODtlbHNlIGlmKGQ9PXlifHxkPT1SYiliPTc7Yy5zZWVrKGUpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAxOnZhciBmPWMuTEEoMSksZz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLGY9PVljJiZ0aGlzLmxjKG0pP2I9NjpmPj1DJiZmPD1EfHxmPj1MJiZmPD1NfHxmPT1PfHxmPT16Ynx8Zj09SmJ8fGY9PW5jfHxmPT1sZD9iPTc6Zj09eHx8Zj49RyYmZjw9SHx8Zj09U3x8Zj09JHx8Zj09YWJ8fGY+PWZiJiZmPD1nYnx8Zj49aWImJmY8PWpifHxmPj1vYiYmZjw9cWJ8fGY9PXRifHxmPj13YiYmZjw9eGJ8fGY9PUFifHxmPj1GYiYmZjw9R2J8fGY+PV9iJiZmPD1hY3x8Zj09Y2N8fGY9PWZjfHxmPT1sY3x8Zj09JGN8fGY9PWRkfHxmPT1ZZHx8Zj49YWUmJmY8PWJlfHxmPj1qZSYmZjw9a2V8fGY9PXBlfHxmPT1yZXx8Zj49dGUmJmY8PXVlfHxmPT14ZXx8Zj49emUmJmY8PUplfHxmPT1NZXx8Zj09UmU/Yj01OmY9PVFlJiZ0aGlzLmxjKGwpP2I9ODpmPT1hJiYoYj05KSxjLnNlZWsoZyk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDI6dmFyIGg9Yy5MQSgxKSxpPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTE7aWYoaD09TiliPTE7ZWxzZSBpZihoPj12JiZoPD13fHxoPT1CfHxoPT1JfHxoPT1LfHxoPj1QJiZoPD1RfHxoPj1UJiZoPD1WfHxoPT1ffHxoPj1jYiYmaDw9ZWJ8fGg9PWtifHxoPT12Ynx8aD09emJ8fGg9PURifHxoPT1JYnx8aD49S2ImJmg8PU1ifHxoPT1PYnx8aD49U2ImJmg8PVZifHxoPT1aYnx8aD09YmN8fGg+PWRjJiZoPD1mY3x8aD09dmN8fGg+PUZjJiZoPD1HY3x8aD49T2MmJmg8PVBjfHxoPT1SY3x8aD49V2MmJmg8PVhjfHxoPT0kY3x8aD49UmQmJmg8PVRkfHxoPT1XZHx8aD09ZmV8fGg9PWtlfHxoPj1tZSYmaDw9bmV8fGg+PXplJiZoPD1DZXx8aD49SWUmJmg8PUxlfHxoPT1ZZXx8aD49X2UmJmg8PWFmfHxoPj1sZiYmaDw9cWYpYj0yO2Vsc2UgaWYoaD09dWUmJnRoaXMubGMobCkpYj0zO2Vsc2UgaWYoaD09bGIpYj00O2Vsc2UgaWYoaD09YXx8aD49eCYmaDw9QXx8aD49QyYmaDw9SHx8aD09Snx8aD49TCYmaDw9TXx8aD09T3x8aD49UiYmaDw9U3x8aD49VyYmaDw9JHx8aD49YWImJmg8PWJifHxoPj1mYiYmaDw9amJ8fGg+PW1iJiZoPD11Ynx8aD49d2ImJmg8PXlifHxoPj1BYiYmaDw9Q2J8fGg+PUViJiZoPD1IYnx8aD09SmJ8fGg9PU5ifHxoPj1QYiYmaDw9UmJ8fGg+PVdiJiZoPD1ZYnx8aD49JGImJmg8PWFjfHxoPT1jY3x8aD49Z2MmJmg8PXVjfHxoPj13YyYmaDw9RWN8fGg+PUhjJiZoPD1OY3x8aD09UWN8fGg+PVNjJiZoPD1WY3x8aD49WWMmJmg8PVpjfHxoPj1fYyYmaDw9UWR8fGg+PVVkJiZoPD1WZHx8aD49WGQmJmg8PWVlfHxoPj1nZSYmaDw9aWV8fGg9PWRmfHxoPT13ZyliPTU7Yy5zZWVrKGkpO2lmKGI+PTApcmV0dXJuIGJ9fS5jYWxsKHRoaXMucmVjb2duaXplcixiLGMpO2lmKCFkLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZikpcmV0dXJuIGY7aWYodGhpcy5yZWNvZ25pemVyLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnJlY29nbml6ZXIuc3RhdGUuZmFpbGVkPSEwLC0xO3ZhciBnPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDYsZSxjKTt0aHJvdyB0aGlzLmVycm9yKGcpLGd9LGR1bW15Om51bGx9KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkE5X2VvdFM6Ilxm77+/IixERkE5X2VvZlM6Ilxm77+/IixERkE5X21pblM6JwEiARcC77+/AR4H77+/JyxERkE5X21heFM6JwEiAcKZAu+/vwF0B++/vycsREZBOV9hY2NlcHRTOiIC77+/AQcBAQHvv78BAwEEAQUBXGIBCQECAQYiLERGQTlfc3BlY2lhbFM6IgHvv78BXDBcbu+/v30+IixERkE5X3RyYW5zaXRpb25TOlsiAQEiLCIBBQEDB++/vwEGAVxiAe+/vwEEMO+/vwEHH++/vwEJJO+/vwECIiwiIiwiIiwiAVxuM++/vwELIe+/vwEJIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkE5X2VvdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkE5X2VvdFMpLERGQTlfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTlfZW9mUyksREZBOV9taW46ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBOV9taW5TKSxERkE5X21heDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkE5X21heFMpLERGQTlfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTlfYWNjZXB0UyksREZBOV9zcGVjaWFsOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTlfc3BlY2lhbFMpLERGQTlfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVtdLGIsYz1wLkRGQTlfdHJhbnNpdGlvblMubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKylhLnB1c2goZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBOV90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkE5PWZ1bmN0aW9uKGEpe3RoaXMucmVjb2duaXplcj1hLHRoaXMuZGVjaXNpb25OdW1iZXI9OSx0aGlzLmVvdD1wLkRGQTlfZW90LHRoaXMuZW9mPXAuREZBOV9lb2YsdGhpcy5taW49cC5ERkE5X21pbix0aGlzLm1heD1wLkRGQTlfbWF4LHRoaXMuYWNjZXB0PXAuREZBOV9hY2NlcHQsdGhpcy5zcGVjaWFsPXAuREZBOV9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1wLkRGQTlfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTksZC5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMzU4OjE6IHBfU2V0dGVyIDogKCBwbV9Cb3VuZGFyeVNwYWNlRGVjbCB8IHBtX0RlZmF1bHRDb2xsYXRpb25EZWNsIHwgcG1fQmFzZVVSSURlY2wgfCBwbV9Db25zdHJ1Y3Rpb25EZWNsIHwgcG1fT3JkZXJpbmdNb2RlRGVjbCB8IHBtX0VtcHR5T3JkZXJEZWNsIHwgey4uLn0/ID0+IHBtX1JldmFsaWRhdGlvbkRlY2wgfCBwbV9Db3B5TmFtZXNwYWNlc0RlY2wgfCBwbV9EZWNpbWFsRm9ybWF0RGVjbCApOyJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLGU9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnZhciBjPWIuTEEoMSksZD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLGM9PVljJiZ0aGlzLmxjKG0pP2E9MjpjPT1EP2E9MzpjPT1PP2E9NDpjPT1DP2E9NTpjPT1MP2E9NjpjPT1KYj9hPTc6Yz09TT9hPTg6Yz09bmMmJihhPTkpLGIuc2VlayhkKTtpZihhPj0wKXJldHVybiBhfX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsYSxiKTtpZighZC5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGUpKXJldHVybiBlO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSw5LGMsYik7dGhyb3cgdGhpcy5lcnJvcihmKSxmfSxkdW1teTpudWxsfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBNDRfZW90UzoiSO+/vyIsREZBNDRfZW9mUzoiAUNH77+/IixERkE0NF9taW5TOiIBEEJcMAHvv78CXDAC77+/IixERkE0NF9tYXhTOiIBxZRCXDAB77+/AlwwAu+/vyIsREZBNDRfYWNjZXB0UzoiQ++/vwEBA++/vwECIixERkE0NF9zcGVjaWFsUzoiAVwwAQEBAgEDAQQBBQEGAQcBXGIBCQFcbgELAVxmAVxyAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQFcIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIB77+/AUMBRALvv799PiIsREZBNDRfdHJhbnNpdGlvblM6WyIBJwEqBEQBHwZEASsBRAFcIgREAS0BLwJEARoBJAEXAkQBRQJEAVxiAkQBMQEwAQEFRAEDBkQBRQNEAQIDRAEeA0QBNwREARYBRAElASkBKAFEASMDRAE1ATQBLgEHA0QBIANEAQUBRAEZAQsBQg9EATYJRAEEAQYHRAE+ATsBRAEyBEQBPAE9AkQBGCxEAT8BQAFBAkQBOFxuRAEhA0QB77+/AQ4B77+/ARQBJgbvv78BQwTvv78BOQEJAVxuARsF77+/AVxmAVxyARUBLFxm77+/ATMC77+/ARMBEgLvv78BRAbvv78BOgEcAR0BDwEQARE777+/AUQiLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIiLCIB77+/IiwiAe+/vyIsIiIsIiJdfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBNDRfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTQ0X2VvdFMpLERGQTQ0X2VvZjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkE0NF9lb2ZTKSxERkE0NF9taW46ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBNDRfbWluUyksREZBNDRfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTQ0X21heFMpLERGQTQ0X2FjY2VwdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkE0NF9hY2NlcHRTKSxERkE0NF9zcGVjaWFsOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTQ0X3NwZWNpYWxTKSxERkE0NF90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPXAuREZBNDRfdHJhbnNpdGlvblMubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKylhLnB1c2goZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBNDRfdHJhbnNpdGlvblNbYl0pKTtyZXR1cm4gYX0oKX0pLHAuREZBNDQ9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj00NCx0aGlzLmVvdD1wLkRGQTQ0X2VvdCx0aGlzLmVvZj1wLkRGQTQ0X2VvZix0aGlzLm1pbj1wLkRGQTQ0X21pbix0aGlzLm1heD1wLkRGQTQ0X21heCx0aGlzLmFjY2VwdD1wLkRGQTQ0X2FjY2VwdCx0aGlzLnNwZWNpYWw9cC5ERkE0NF9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1wLkRGQTQ0X3RyYW5zaXRpb259LGQuYW50bHIubGFuZy5leHRlbmQocC5ERkE0NCxkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiI1Mzc6MTogcG1fUXVlcnlCb2R5IDogKHsuLi59PyA9PiBwX1Byb2dyYW0gfCBwX0V4cHJbdHJ1ZSx0cnVlXSApOyJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24oYixjKXt2YXIgZT1iLGY9ZnVuY3Rpb24oYixjKXtzd2l0Y2goYil7Y2FzZSAwOnZhciBkPWMuTEEoMSksZT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xO2lmKGQ9PWViKWI9MTtlbHNlIGlmKGQ9PXZiKWI9MjtlbHNlIGlmKGQ9PWtiKWI9MztlbHNlIGlmKGQ9PUZjKWI9NDtlbHNlIGlmKGQ9PWJjKWI9NTtlbHNlIGlmKGQ9PUdjKWI9NjtlbHNlIGlmKGQ9PVZiKWI9NztlbHNlIGlmKGQ9PV8pYj04O2Vsc2UgaWYoZD09QWUpYj05O2Vsc2UgaWYoZD09QmUpYj0xMDtlbHNlIGlmKGQ9PWVjKWI9MTE7ZWxzZSBpZihkPT1JZSliPTEyO2Vsc2UgaWYoZD09SmUpYj0xMztlbHNlIGlmKGQ9PWtlKWI9MTQ7ZWxzZSBpZihkPT1vZiliPTE1O2Vsc2UgaWYoZD09cGYpYj0xNjtlbHNlIGlmKGQ9PXFmKWI9MTc7ZWxzZSBpZihkPT1hZiliPTE4O2Vsc2UgaWYoZD09X2UpYj0xOTtlbHNlIGlmKGQ9PW1lKWI9MjA7ZWxzZSBpZihkPT1LZSliPTIxO2Vsc2UgaWYoZD09SWIpYj0yMjtlbHNlIGlmKGQ9PVYpYj0yMztlbHNlIGlmKGQ9PSRjKWI9MjQ7ZWxzZSBpZihkPT1kYyliPTI1O2Vsc2UgaWYoZD09VCliPTI2O2Vsc2UgaWYoZD09Q2UpYj0yNztlbHNlIGlmKGQ9PW1mKWI9Mjg7ZWxzZSBpZihkPT1uZiliPTI5O2Vsc2UgaWYoZD09emIpYj0zMDtlbHNlIGlmKGQ9PUIpYj0zMTtlbHNlIGlmKGQ9PVpiKWI9MzI7ZWxzZSBpZihkPT1mZSliPTMzO2Vsc2UgaWYoZD09SyliPTM0O2Vsc2UgaWYoZD09T2IpYj0zNTtlbHNlIGlmKGQ9PVUpYj0zNjtlbHNlIGlmKGQ9PUtiKWI9Mzc7ZWxzZSBpZihkPT1uZSliPTM4O2Vsc2UgaWYoZD09diliPTM5O2Vsc2UgaWYoZD09TWIpYj00MDtlbHNlIGlmKGQ9PUxiKWI9NDE7ZWxzZSBpZihkPT13KWI9NDI7ZWxzZSBpZihkPT1JKWI9NDM7ZWxzZSBpZihkPT1MZSliPTQ0O2Vsc2UgaWYoZD09UCliPTQ1O2Vsc2UgaWYoZD09VWIpYj00NjtlbHNlIGlmKGQ9PVEpYj00NztlbHNlIGlmKGQ9PWRiKWI9NDg7ZWxzZSBpZihkPT1jYiliPTQ5O2Vsc2UgaWYoZD09UmMpYj01MDtlbHNlIGlmKGQ9PVllKWI9NTE7ZWxzZSBpZihkPT1UYiliPTUyO2Vsc2UgaWYoZD09U2IpYj01MztlbHNlIGlmKGQ9PXZjKWI9NTQ7ZWxzZSBpZihkPT1EYiliPTU1O2Vsc2UgaWYoZD09V2QpYj01NjtlbHNlIGlmKGQ9PXplKWI9NTc7ZWxzZSBpZihkPT1sZiliPTU4O2Vsc2UgaWYoZD09UGMpYj01OTtlbHNlIGlmKGQ9PVdjKWI9NjA7ZWxzZSBpZihkPT1YYyliPTYxO2Vsc2UgaWYoZD09T2MpYj02MjtlbHNlIGlmKGQ9PVJkKWI9NjM7ZWxzZSBpZihkPT1TZCliPTY0O2Vsc2UgaWYoZD09VGQpYj02NTtlbHNlIGlmKGQ9PWZjKWI9NjY7ZWxzZSBpZihkIT1hJiZkIT11ZXx8IXRoaXMubGMobCkpe2lmKGQ+PXgmJmQ8PUF8fGQ+PUMmJmQ8PUh8fGQ9PUp8fGQ+PUwmJmQ8PU98fGQ+PVImJmQ8PVN8fGQ+PVcmJmQ8PVh8fGQ+PVomJmQ8PSR8fGQ+PWFiJiZkPD1iYnx8ZD49ZmImJmQ8PWpifHxkPj1sYiYmZDw9cWJ8fGQ+PXNiJiZkPD11Ynx8ZD49d2ImJmQ8PXlifHxkPj1BYiYmZDw9Q2J8fGQ+PUViJiZkPD1IYnx8ZD09SmJ8fGQ9PU5ifHxkPj1QYiYmZDw9UmJ8fGQ+PVdiJiZkPD1ZYnx8ZD49JGImJmQ8PWFjfHxkPT1jY3x8ZD49Z2MmJmQ8PXVjfHxkPj13YyYmZDw9RWN8fGQ+PUhjJiZkPD1OY3x8ZD09UWN8fGQ+PVNjJiZkPD1WY3x8ZD49WWMmJmQ8PVpjfHxkPj1fYyYmZDw9UWR8fGQ+PVVkJiZkPD1WZHx8ZD49WGQmJmQ8PWVlfHxkPj1nZSYmZDw9aWV8fGQ9PWRmfHxkPT13ZyliPTY4O2Vsc2UgaWYoZD09WXx8ZD09cmIpYj02OX1lbHNlIGI9Njc7Yy5zZWVrKGUpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAxOnZhciBmPWMuTEEoMSksZz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhnKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMjp2YXIgaD1jLkxBKDEpLGk9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoaSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDM6dmFyIGo9Yy5MQSgxKSxrPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKGspO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA0OnZhciBuPWMuTEEoMSkscD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhwKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNTp2YXIgcT1jLkxBKDEpLHI9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsocik7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDY6dmFyIHM9Yy5MQSgxKSx0PWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKHQpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA3OnZhciB1PWMuTEEoMSkseT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2Vlayh5KTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgODp2YXIgej1jLkxBKDEpLEQ9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoRCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDk6dmFyIEU9Yy5MQSgxKSxGPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKEYpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAxMDp2YXIgRz1jLkxBKDEpLE09Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoTSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDExOnZhciBOPWMuTEEoMSksZ2I9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoZ2IpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAxMjp2YXIgaGI9Yy5MQSgxKSxpYj1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhpYik7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDEzOnZhciBtYj1jLkxBKDEpLG5iPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKG5iKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMTQ6dmFyIG9iPWMuTEEoMSkscGI9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsocGIpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAxNTp2YXIgdGI9Yy5MQSgxKSx4Yj1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2Vlayh4Yik7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDE2OnZhciBCYj1jLkxBKDEpLEZiPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKEZiKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMTc6dmFyIEdiPWMuTEEoMSksUWI9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoUWIpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAxODp2YXIgWGI9Yy5MQSgxKSxfYj1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhfYik7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDE5OnZhciBoYz1jLkxBKDEpLGljPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKGljKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMjA6dmFyIGpjPWMuTEEoMSksa2M9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoa2MpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAyMTp2YXIgbGM9Yy5MQSgxKSxtYz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhtYyk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDIyOnZhciBuYz1jLkxBKDEpLG9jPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKG9jKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMjM6dmFyIHBjPWMuTEEoMSkscWM9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsocWMpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAyNDp2YXIgcmM9Yy5MQSgxKSxzYz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhzYyk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDI1OnZhciB0Yz1jLkxBKDEpLHhjPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKHhjKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMjY6dmFyIHljPWMuTEEoMSksemM9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoemMpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAyNzp2YXIgQWM9Yy5MQSgxKSxCYz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhCYyk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDI4OnZhciBDYz1jLkxBKDEpLERjPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKERjKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMjk6dmFyIEljPWMuTEEoMSksSmM9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoSmMpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAzMDp2YXIgS2M9Yy5MQSgxKSxMYz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhMYyk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDMxOnZhciBNYz1jLkxBKDEpLFRjPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKFRjKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMzI6dmFyIFVjPWMuTEEoMSksYWQ9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoYWQpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAzMzp2YXIgYmQ9Yy5MQSgxKSxjZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCl8fHRoaXMubGMobCkmJnRoaXMubGMobyl8fHRoaXMubGMobCkmJnRoaXMubGMobyl8fHRoaXMubGMobCkmJnRoaXMubGMobyl8fHRoaXMubGMobCkmJnRoaXMubGMobyk/Yj02NzpiPTcxLGMuc2VlayhjZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDM0OnZhciBkZD1jLkxBKDEpLGVkPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKGVkKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMzU6dmFyIGZkPWMuTEEoMSksZ2Q9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoZ2QpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAzNjp2YXIgaGQ9Yy5MQSgxKSxpZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhpZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDM3OnZhciBqZD1jLkxBKDEpLGtkPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKGtkKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMzg6dmFyIGxkPWMuTEEoMSksbWQ9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsobWQpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAzOTp2YXIgbmQ9Yy5MQSgxKSxvZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhvZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDQwOnZhciBwZD1jLkxBKDEpLHFkPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKHFkKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNDE6dmFyIHJkPWMuTEEoMSksc2Q9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoc2QpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA0Mjp2YXIgdGQ9Yy5MQSgxKSx1ZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2Vlayh1ZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDQzOnZhciB2ZD1jLkxBKDEpLHdkPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKHdkKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNDQ6dmFyIHhkPWMuTEEoMSkseWQ9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoeWQpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA0NTp2YXIgemQ9Yy5MQSgxKSxBZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhBZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDQ2OnZhciBCZD1jLkxBKDEpLENkPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKENkKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNDc6dmFyIERkPWMuTEEoMSksRWQ9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoRWQpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA0ODp2YXIgRmQ9Yy5MQSgxKSxHZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhHZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDQ5OnZhciBIZD1jLkxBKDEpLElkPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKElkKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNTA6dmFyIEpkPWMuTEEoMSksS2Q9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpfHx0aGlzLmxjKGwpJiZ0aGlzLmxjKG0pP2I9Njc6Yj03MSxjLnNlZWsoS2QpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA1MTp2YXIgTGQ9Yy5MQSgxKSxNZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhNZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDUyOnZhciBOZD1jLkxBKDEpLE9kPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKE9kKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNTM6dmFyIFBkPWMuTEEoMSksWWQ9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoWWQpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA1NDp2YXIgWmQ9Yy5MQSgxKSwkZD1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlaygkZCk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDU1OnZhciBfZD1jLkxBKDEpLGFlPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKGFlKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNTY6dmFyIGJlPWMuTEEoMSksY2U9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoY2UpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA1Nzp2YXIgZGU9Yy5MQSgxKSxoZT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhoZSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDU4OnZhciBqZT1jLkxBKDEpLGxlPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKGxlKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNTk6dmFyIG9lPWMuTEEoMSkscGU9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpfHx0aGlzLmxjKGwpJiZ0aGlzLmxjKG0pP2I9Njc6Yj03MSxjLnNlZWsocGUpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA2MDp2YXIgcWU9Yy5MQSgxKSxyZT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCl8fHRoaXMubGMobCkmJnRoaXMubGMobSk/Yj02NzpiPTcxLGMuc2VlayhyZSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDYxOnZhciBzZT1jLkxBKDEpLHRlPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKXx8dGhpcy5sYyhsKSYmdGhpcy5sYyhtKT9iPTY3OmI9NzEsYy5zZWVrKHRlKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNjI6dmFyIHZlPWMuTEEoMSksd2U9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpfHx0aGlzLmxjKGwpJiZ0aGlzLmxjKG0pP2I9Njc6Yj03MSxjLnNlZWsod2UpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA2Mzp2YXIgeGU9Yy5MQSgxKSx5ZT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2Vlayh5ZSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDY0OnZhciBEZT1jLkxBKDEpLEVlPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKEVlKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNjU6dmFyIEZlPWMuTEEoMSksR2U9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoR2UpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSA2Njp2YXIgSGU9Yy5MQSgxKSxNZT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMubGMobCk/Yj02NzpiPTcxLGMuc2VlayhNZSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDY3OnZhciBOZT1jLkxBKDEpLE9lPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5sYyhsKT9iPTY3OmI9NzEsYy5zZWVrKE9lKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNjg6dmFyIFBlPWMuTEEoMSksUWU9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSx0aGlzLmxjKGwpP2I9Njc6Yj03MSxjLnNlZWsoUWUpO2lmKGI+PTApcmV0dXJuIGJ9fS5jYWxsKHRoaXMucmVjb2duaXplcixiLGMpO2lmKCFkLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZikpcmV0dXJuIGY7aWYodGhpcy5yZWNvZ25pemVyLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnJlY29nbml6ZXIuc3RhdGUuZmFpbGVkPSEwLC0xO3ZhciBnPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDQ0LGUsYyk7dGhyb3cgdGhpcy5lcnJvcihnKSxnfSxkdW1teTpudWxsfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBNDZfZW90UzoiEe+/vyIsREZBNDZfZW9mUzoiAe+/vwYHXG7vv78iLERGQTQ2X21pblM6IgEQBhJcbu+/vyIsREZBNDZfbWF4UzoiAcWUBsO+XG7vv78iLERGQTQ2X2FjY2VwdFM6Igfvv78BBgUBAQIBAwEEAQUiLERGQTQ2X3NwZWNpYWxTOiIB77+/AQIBAQFcMAEEAQUBA1xu77+/fT4iLERGQTQ2X3RyYW5zaXRpb25TOlsiJQcBAQUHAQNcbgcBAiEHAQUdBwEEAQZUBwHvv78BBwHvv78CBwvvv78EBwXvv78EB1xm77+/AQcC77+/AgcC77+/AQcG77+/Bgc777+/AQciLCIDBwXvv78DBwHvv78BBwTvv78BBwLvv78CBwTvv78BBwLvv78BBwHvv78BBwPvv78BBwHvv78BBwHvv78CBwTvv78DBwLvv78BBwHvv78DBwLvv78BBwXvv78CBwfvv78CBwXvv78BBwTvv78CBwHvv78BBwTvv78BBwTvv78BBwPvv78CBwbvv78BBwTvv78BXG4BBwLvv78BCQTvv78CBwTvv78BBwHvv78BBwfvv78BBwLvv78BBzvvv78DBwFcYgHvv78EBwHvv78BBwPvv78BBwHvv78LBwLvv78BBwPvv78CByIsJwMHBe+/vwMHAe+/vwEHBO+/vwEHAu+/vwIHBO+/vwEHAu+/vwEHAe+/vwEHA++/vwEHAe+/vwEHAe+/vwIHBO+/vwMHAu+/vwEHAe+/vwMHAu+/vwEHBe+/vwIHB++/vwIHBe+/vwEHBO+/vwIHAe+/vwEHBO+/vwEHBO+/vwEHA++/vwIHBu+/vwEHBe+/vwEHB++/vwIHBO+/vwEHAe+/vwEHB++/vwEHAu+/vwEHGO+/vwFcZiLvv78DBwELAe+/vwQHAe+/vwEHA++/vwEHAe+/vwsHAu+/vwEHA++/vwIHJywiAwcF77+/AwcB77+/AQcE77+/AQcC77+/AgcE77+/AQcC77+/AQcB77+/AQcD77+/AQcB77+/AQcB77+/AgcE77+/AwcC77+/AQcB77+/AwcC77+/AQcF77+/AgcH77+/AgcF77+/AQcE77+/AgcB77+/AQcE77+/AQcE77+/AQcD77+/AgcG77+/AQcF77+/AQcH77+/AgcE77+/AQcB77+/AQcH77+/AQcC77+/AQc777+/AQcBXHIBBwLvv78EBwHvv78BBwPvv78BBwHvv78LBwLvv78BBwPvv78CByIsIgMHBe+/vwMHAe+/vwEHBO+/vwEHAu+/vwIHBO+/vwEHAu+/vwEHAe+/vwEHA++/vwEHAe+/vwEHAe+/vwIHBO+/vwMHAu+/vwEHAe+/vwMHAu+/vwEHBe+/vwIHB++/vwIHBe+/vwEHBO+/vwIHAe+/vwEHBO+/vwEHBO+/vwEHA++/vwIHBu+/vwEHBe+/vwEHB++/vwIHBO+/vwEHAe+/vwEHB++/vwEHAu+/vwEHO++/vwEHAQ4BBwLvv78EBwHvv78BBwPvv78BBwHvv78LBwLvv78BBwPvv78CByIsIgMHBe+/vwMHAe+/vwEHBO+/vwEHAu+/vwIHBO+/vwEHAu+/vwEHAe+/vwEHA++/vwEHAe+/vwEHAe+/vwIHBO+/vwMHAu+/vwEHAe+/vwMHAu+/vwEHBe+/vwIHB++/vwIHBe+/vwEHBO+/vwIHAe+/vwEHBO+/vwEHBO+/vwEHA++/vwIHBu+/vwEHBe+/vwEHB++/vwIHBO+/vwEHAe+/vwEHB++/vwEHAu+/vwEHO++/vwEHAQ8BBwLvv78EBwHvv78BBwPvv78BBwHvv78LBwLvv78BBwPvv78CByIsIgMHBe+/vwMHAe+/vwEHBO+/vwEHAu+/vwIHBO+/vwEHAu+/vwEHAe+/vwEHA++/vwEHAe+/vwEHAe+/vwIHBO+/vwMHAu+/vwEHAe+/vwMHAu+/vwEHBe+/vwIHB++/vwIHBe+/vwEHBO+/vwIHAe+/vwEHBO+/vwEHBO+/vwEHA++/vwIHBu+/vwEHBe+/vwEHB++/vwIHBO+/vwEHAe+/vwEHB++/vwEHAu+/vwEHO++/vwMHAe+/vwEQBAcB77+/AQcD77+/AQcB77+/CwcC77+/AQcD77+/AgciLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiXX0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTQ2X2VvdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkE0Nl9lb3RTKSxERkE0Nl9lb2Y6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBNDZfZW9mUyksREZBNDZfbWluOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTQ2X21pblMpLERGQTQ2X21heDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkE0Nl9tYXhTKSxERkE0Nl9hY2NlcHQ6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBNDZfYWNjZXB0UyksREZBNDZfc3BlY2lhbDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkE0Nl9zcGVjaWFsUyksREZBNDZfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVtdLGIsYz1wLkRGQTQ2X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IoYj0wO2I8YztiKyspYS5wdXNoKGQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTQ2X3RyYW5zaXRpb25TW2JdKSk7cmV0dXJuIGF9KCl9KSxwLkRGQTQ2PWZ1bmN0aW9uKGEpe3RoaXMucmVjb2duaXplcj1hLHRoaXMuZGVjaXNpb25OdW1iZXI9NDYsdGhpcy5lb3Q9cC5ERkE0Nl9lb3QsdGhpcy5lb2Y9cC5ERkE0Nl9lb2YsdGhpcy5taW49cC5ERkE0Nl9taW4sdGhpcy5tYXg9cC5ERkE0Nl9tYXgsdGhpcy5hY2NlcHQ9cC5ERkE0Nl9hY2NlcHQsdGhpcy5zcGVjaWFsPXAuREZBNDZfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249cC5ERkE0Nl90cmFuc2l0aW9ufSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAuREZBNDYsZC5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iNTczOjE6IHBfRXhwclNpbmdsZVtzdHJpY3RdIDogKCAoICggKCBGT1IgfCBMRVQgKSBET0xMQVIgKSB8ICggRk9SICggVFVNQkxJTkcgfCBTTElESU5HICkgKSApPT4gcF9GTFdPUkh5YnJpZFskc3RyaWN0XSB8ICggSUYgTFBBUkVOICk9PiBwX0lmSHlicmlkWyRzdHJpY3RdIHwgKCBTV0lUQ0ggTFBBUkVOICk9PiBwX1N3aXRjaEh5YnJpZFskc3RyaWN0XSB8ICggVFlQRVNXSVRDSCBMUEFSRU4gKT0+IHBfVHlwZXN3aXRjaEh5YnJpZFskc3RyaWN0XSB8ICggVFJZIExCUkFDS0VUICk9PiBwX1RyeUNhdGNoSHlicmlkWyRzdHJpY3RdIHwgcF9FeHByU2ltcGxlICk7In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbihiLGMpe3ZhciBlPWIsZj1mdW5jdGlvbihiLGMpe3N3aXRjaChiKXtjYXNlIDA6dmFyIGQ9Yy5MQSgxKSxlPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTE7aWYoZD09a2UmJnRoaXMuc3lucHJlZDJfWFF1ZXJ5UGFyc2VyKCkpYj0xMztlbHNlIGlmKGQ9PWF8fGQ+PXgmJmQ8PXp8fGQ+PUYmJmQ8PUh8fGQ9PUp8fGQ9PU98fGQ+PVImJmQ8PVN8fGQ9PVh8fGQ9PSR8fGQ9PWFifHxkPT1lYnx8ZD09Z2J8fGQ+PWliJiZkPD1qYnx8ZD49b2ImJmQ8PXFifHxkPT10Ynx8ZD49dmImJmQ8PXhifHxkPT1BYnx8ZD49R2ImJmQ8PUhifHxkPj1QYiYmZDw9UWJ8fGQ9PVdifHxkPj1fYiYmZDw9YWN8fGQ9PWNjfHxkPT1oY3x8ZD09bWN8fGQ+PXFjJiZkPD1yY3x8ZD09eWN8fGQ9PUVjfHxkPj1NYyYmZDw9TmN8fGQ9PVNjfHxkPT1VY3x8ZD09YWR8fGQ9PWRkfHxkPT1qZXx8ZD09bGV8fGQ+PW9lJiZkPD1yZXx8ZD09dGV8fGQ9PXhlfHxkPj16ZSYmZDw9SmV8fGQ9PU1lfHxkPj1RZSYmZDw9UmUpYj03O2Muc2VlayhlKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMTp2YXIgZj1jLkxBKDEpLGc9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMTtpZihmPT1tZSYmdGhpcy5zeW5wcmVkMV9YUXVlcnlQYXJzZXIoKSliPTExO2Vsc2UgaWYoZj09Q2QmJnRoaXMuc3lucHJlZDFfWFF1ZXJ5UGFyc2VyKCkpYj0xMjtlbHNlIGlmKGY9PWF8fGY+PXgmJmY8PXp8fGY+PUYmJmY8PUh8fGY9PUp8fGY9PU98fGY+PVImJmY8PVN8fGY9PVh8fGY9PSR8fGY9PWFifHxmPT1lYnx8Zj09Z2J8fGY+PWliJiZmPD1qYnx8Zj49b2ImJmY8PXFifHxmPT10Ynx8Zj49dmImJmY8PXhifHxmPT1BYnx8Zj49R2ImJmY8PUhifHxmPj1QYiYmZjw9UWJ8fGY9PVdifHxmPj1fYiYmZjw9YWN8fGY9PWNjfHxmPT1oY3x8Zj09bWN8fGY+PXFjJiZmPD1yY3x8Zj09eWN8fGY9PUVjfHxmPj1NYyYmZjw9TmN8fGY9PVNjfHxmPT1VY3x8Zj09YWR8fGY9PWRkfHxmPj1qZSYmZjw9bGV8fGY+PW9lJiZmPD1yZXx8Zj09dGV8fGY9PXhlfHxmPj16ZSYmZjw9SmV8fGY9PU1lfHxmPj1RZSYmZjw9UmUpYj03O2Muc2VlayhnKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgMjp2YXIgaD1jLkxBKDEpLGk9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMTtpZihoPT1tZSYmdGhpcy5zeW5wcmVkMV9YUXVlcnlQYXJzZXIoKSliPTg7ZWxzZSBpZihoPT1IYyYmdGhpcy5zeW5wcmVkMV9YUXVlcnlQYXJzZXIoKSliPTk7ZWxzZSBpZihoPT1EYyYmdGhpcy5zeW5wcmVkMV9YUXVlcnlQYXJzZXIoKSliPTEwO2Vsc2UgaWYoaD09YXx8aD49eCYmaDw9enx8aD49RiYmaDw9SHx8aD09Snx8aD09T3x8aD49UiYmaDw9U3x8aD09WHx8aD09JHx8aD09YWJ8fGg9PWVifHxoPT1nYnx8aD49aWImJmg8PWpifHxoPj1vYiYmaDw9cWJ8fGg9PXRifHxoPj12YiYmaDw9eGJ8fGg9PUFifHxoPj1HYiYmaDw9SGJ8fGg+PVBiJiZoPD1RYnx8aD09V2J8fGg+PV9iJiZoPD1hY3x8aD09Y2N8fGg9PWhjfHxoPT1tY3x8aD49cWMmJmg8PXJjfHxoPT15Y3x8aD09RWN8fGg+PU1jJiZoPD1OY3x8aD09U2N8fGg9PVVjfHxoPT1hZHx8aD09ZGR8fGg+PWplJiZoPD1sZXx8aD49b2UmJmg8PXJlfHxoPT10ZXx8aD09eGV8fGg+PXplJiZoPD1KZXx8aD09TWV8fGg+PVFlJiZoPD1SZSliPTc7Yy5zZWVrKGkpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAzOnZhciBqPWMuTEEoMSksaz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xO2lmKGo9PW5lJiZ0aGlzLnN5bnByZWQ1X1hRdWVyeVBhcnNlcigpKWI9MTY7ZWxzZSBpZihqPT1hfHxqPj14JiZqPD16fHxqPj1GJiZqPD1IfHxqPT1KfHxqPT1PfHxqPj1SJiZqPD1TfHxqPT1YfHxqPT0kfHxqPT1hYnx8aj09ZWJ8fGo9PWdifHxqPj1pYiYmajw9amJ8fGo+PW9iJiZqPD1xYnx8aj09dGJ8fGo+PXZiJiZqPD14Ynx8aj09QWJ8fGo+PUdiJiZqPD1IYnx8aj49UGImJmo8PVFifHxqPT1XYnx8aj49X2ImJmo8PWFjfHxqPT1jY3x8aj09aGN8fGo9PW1jfHxqPj1xYyYmajw9cmN8fGo9PXljfHxqPT1FY3x8aj49TWMmJmo8PU5jfHxqPT1TY3x8aj09VWN8fGo9PWFkfHxqPT1kZHx8aj49amUmJmo8PWxlfHxqPj1vZSYmajw9cmV8fGo9PXRlfHxqPT14ZXx8aj49emUmJmo8PUplfHxqPT1NZXx8aj49UWUmJmo8PVJlKWI9NztjLnNlZWsoayk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDQ6dmFyIGw9Yy5MQSgxKSxtPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTE7aWYobD09a2UmJnRoaXMuc3lucHJlZDNfWFF1ZXJ5UGFyc2VyKCkpYj0xNDtlbHNlIGlmKGw9PWF8fGw+PXgmJmw8PXp8fGw+PUYmJmw8PUh8fGw9PUp8fGw9PU98fGw+PVImJmw8PVN8fGw9PVh8fGw9PSR8fGw9PWFifHxsPT1lYnx8bD09Z2J8fGw+PWliJiZsPD1qYnx8bD49b2ImJmw8PXFifHxsPT10Ynx8bD49dmImJmw8PXhifHxsPT1BYnx8bD49R2ImJmw8PUhifHxsPj1QYiYmbDw9UWJ8fGw9PVdifHxsPj1fYiYmbDw9YWN8fGw9PWNjfHxsPT1oY3x8bD09bWN8fGw+PXFjJiZsPD1yY3x8bD09eWN8fGw9PUVjfHxsPj1NYyYmbDw9TmN8fGw9PVNjfHxsPT1VY3x8bD09YWR8fGw9PWRkfHxsPT1qZXx8bD09bGV8fGw+PW9lJiZsPD1yZXx8bD09dGV8fGw9PXhlfHxsPj16ZSYmbDw9SmV8fGw9PU1lfHxsPj1RZSYmbDw9UmUpYj03O2Muc2VlayhtKTtpZihiPj0wKXJldHVybiBiO2JyZWFrO2Nhc2UgNTp2YXIgbj1jLkxBKDEpLG89Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMTtpZihuPT1rZSYmdGhpcy5zeW5wcmVkNF9YUXVlcnlQYXJzZXIoKSliPTE1O2Vsc2UgaWYobj09YXx8bj49eCYmbjw9enx8bj49RiYmbjw9SHx8bj09Snx8bj09T3x8bj49UiYmbjw9U3x8bj09WHx8bj09JHx8bj09YWJ8fG49PWVifHxuPT1nYnx8bj49aWImJm48PWpifHxuPj1vYiYmbjw9cWJ8fG49PXRifHxuPj12YiYmbjw9eGJ8fG49PUFifHxuPj1HYiYmbjw9SGJ8fG4+PVBiJiZuPD1RYnx8bj09V2J8fG4+PV9iJiZuPD1hY3x8bj09Y2N8fG49PWhjfHxuPT1tY3x8bj49cWMmJm48PXJjfHxuPT15Y3x8bj09RWN8fG4+PU1jJiZuPD1OY3x8bj09U2N8fG49PVVjfHxuPT1hZHx8bj09ZGR8fG49PWplfHxuPT1sZXx8bj49b2UmJm48PXJlfHxuPT10ZXx8bj09eGV8fG4+PXplJiZuPD1KZXx8bj09TWV8fG4+PVFlJiZuPD1SZSliPTc7Yy5zZWVrKG8pO2lmKGI+PTApcmV0dXJuIGJ9fS5jYWxsKHRoaXMucmVjb2duaXplcixiLGMpO2lmKCFkLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZikpcmV0dXJuIGY7aWYodGhpcy5yZWNvZ25pemVyLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnJlY29nbml6ZXIuc3RhdGUuZmFpbGVkPSEwLC0xO3ZhciBnPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDQ2LGUsYyk7dGhyb3cgdGhpcy5lcnJvcihnKSxnfSxkdW1teTpudWxsfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBMTE3X2VvdFM6IjHvv78iLERGQTExN19lb2ZTOiIx77+/IixERkExMTdfbWluUzoiARABXDAv77+/IixERkExMTdfbWF4UzoiAcWUAVwwL++/vyIsREZBMTE3X2FjY2VwdFM6IgLvv78BAwEEK++/vwEBAQIiLERGQTExN19zcGVjaWFsUzoiAe+/vwFcMC/vv799PiIsREZBMTE3X3RyYW5zaXRpb25TOlsiw4wDAe+/vwEDAe+/vwIDC++/vwEDAu+/vwEDBe+/vwEBAQICA1xm77+/AQMC77+/AgMC77+/AQMH77+/BQM777+/AQMiLCIB77+/IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExMTdfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTExN19lb3RTKSxERkExMTdfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTExN19lb2ZTKSxERkExMTdfbWluOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTExN19taW5TKSxERkExMTdfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTExN19tYXhTKSxERkExMTdfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTExN19hY2NlcHRTKSxERkExMTdfc3BlY2lhbDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExMTdfc3BlY2lhbFMpLERGQTExN190cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPXAuREZBMTE3X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IoYj0wO2I8YztiKyspYS5wdXNoKGQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTExN190cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkExMTc9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj0xMTcsdGhpcy5lb3Q9cC5ERkExMTdfZW90LHRoaXMuZW9mPXAuREZBMTE3X2VvZix0aGlzLm1pbj1wLkRGQTExN19taW4sdGhpcy5tYXg9cC5ERkExMTdfbWF4LHRoaXMuYWNjZXB0PXAuREZBMTE3X2FjY2VwdCx0aGlzLnNwZWNpYWw9cC5ERkExMTdfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249cC5ERkExMTdfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTExNyxkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiI5MDg6MTogcF9QYXRoRXhwciA6ICggKCBTTEFTSCBwX1JlbGF0aXZlUGF0aEV4cHIgKT0+ICggU0xBU0ggcF9SZWxhdGl2ZVBhdGhFeHByICkgfCBTTEFTSCB8IFNMQVNIX1NMQVNIIHBfUmVsYXRpdmVQYXRoRXhwciB8IHBfUmVsYXRpdmVQYXRoRXhwciApOyJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLGU9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnZhciBjPWIuTEEoMSksZD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDdfWFF1ZXJ5UGFyc2VyKCk/YT00NzphPTQ4LGIuc2VlayhkKTtpZihhPj0wKXJldHVybiBhfX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsYSxiKTtpZighZC5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGUpKXJldHVybiBlO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwxMTcsYyxiKTt0aHJvdyB0aGlzLmVycm9yKGYpLGZ9LGR1bW15Om51bGx9KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExMTlfZW90UzoiM++/vyIsREZBMTE5X2VvZlM6IjPvv78iLERGQTExOV9taW5TOiIBECxcMAbvv78iLERGQTExOV9tYXhTOiIBxZQsXDAG77+/IixERkExMTlfYWNjZXB0UzoiLe+/vwEBAQIBBAEFAQMBBiIsREZBMTE5X3NwZWNpYWxTOiIB77+/AVwwAQEBAgEDAQQBBQEGAQcBXGIBCQFcbgELAVxmAVxyAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQFcIgEjASQBJQEmAScBKAEpASoBKwbvv799PiIsREZBMTE5X3RyYW5zaXRpb25TOlsiARoBHQQlARIGJQEeASUBFQQlASABXCICJQFccgEXAVxuAiUBKwUlASQBIwYlASsGJQErByUBEQMlASoEJQEJASUBGAEcARsBJQEWAyUBKAEnASEEJQETAyUBKwElAVxmESUBKQklASsUJQELMSUBK1xuJQEUAyUB77+/AQEB77+/AQcBGQvvv78BLALvv78BDgfvv78BXGIBH1xm77+/ASYC77+/AQYBBQLvv78BJQfvv78BDwEQAQIBAwEEO++/vwElIiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIiLCIiLCIiLCIiLCIiLCIiXX0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTExOV9lb3Q6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTE5X2VvdFMpLERGQTExOV9lb2Y6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTE5X2VvZlMpLERGQTExOV9taW46ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBMTE5X21pblMpLERGQTExOV9tYXg6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBMTE5X21heFMpLERGQTExOV9hY2NlcHQ6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTE5X2FjY2VwdFMpLERGQTExOV9zcGVjaWFsOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTExOV9zcGVjaWFsUyksREZBMTE5X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1bXSxiLGM9cC5ERkExMTlfdHJhbnNpdGlvblMubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKylhLnB1c2goZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTE5X3RyYW5zaXRpb25TW2JdKSk7cmV0dXJuIGF9KCl9KSxwLkRGQTExOT1mdW5jdGlvbihhKXt0aGlzLnJlY29nbml6ZXI9YSx0aGlzLmRlY2lzaW9uTnVtYmVyPTExOSx0aGlzLmVvdD1wLkRGQTExOV9lb3QsdGhpcy5lb2Y9cC5ERkExMTlfZW9mLHRoaXMubWluPXAuREZBMTE5X21pbix0aGlzLm1heD1wLkRGQTExOV9tYXgsdGhpcy5hY2NlcHQ9cC5ERkExMTlfYWNjZXB0LHRoaXMuc3BlY2lhbD1wLkRGQTExOV9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1wLkRGQTExOV90cmFuc2l0aW9ufSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAuREZBMTE5LGQuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjkyMToxOiBwX1N0ZXBFeHByIDogKCAoIExCUkFDS0VUIHwgTFBBUkVOIHwgU01BTExFUiB8IFFVT1QgfCBBUE9TIHwgRE9MTEFSICk9PiBwX1Bvc3RmaXhFeHByIHwgKCAoICggRUxFTUVOVCB8IEFUVFJJQlVURSApICggcF9RTmFtZSApPyBMQlJBQ0tFVCApIHwgKCAoIE5BTUVTUEFDRSB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT04gKSAoIHBfTkNOYW1lICk/IExCUkFDS0VUICkgfCAoICggRE9DVU1FTlQgfCBURVhUIHwgQ09NTUVOVCApIExCUkFDS0VUICkgKT0+IHBfUG9zdGZpeEV4cHIgfCAoIHBfS2luZFRlc3QgKT0+IHBfQXhpc1N0ZXAgfCAoIHBfUU5hbWUgTFBBUkVOICk9PiBwX1Bvc3RmaXhFeHByIHwgKCBwX1ByaW1hcnlFeHByICk9PiBwX1Bvc3RmaXhFeHByIHwgcF9BeGlzU3RlcCApOyJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLGU9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnZhciBjPWIuTEEoMSksZD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/YT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2E9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGE9NDgpLGIuc2VlayhkKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTp2YXIgZT1iLkxBKDEpLGY9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihhPTQ4KSxiLnNlZWsoZik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDI6dmFyIGc9Yi5MQSgxKSxoPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9hPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpJiYoYT00OCksYi5zZWVrKGgpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAzOnZhciBpPWIuTEEoMSksaj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/YT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2E9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGE9NDgpLGIuc2VlayhqKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNDp2YXIgaz1iLkxBKDEpLGw9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKGwpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSA1OnZhciBtPWIuTEEoMSksbj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/YT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2E9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/YT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9hPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpP2E9NDg6YT01MCxiLnNlZWsobik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDY6dmFyIHA9Yi5MQSgxKSxxPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9hPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpJiYoYT00OCksYi5zZWVrKHEpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSA3OnZhciByPWIuTEEoMSkscz1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/YT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2E9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGE9NDgpLGIuc2VlayhzKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgODp2YXIgdD1iLkxBKDEpLHU9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKHUpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSA5OnZhciB2PWIuTEEoMSksdz1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/YT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2E9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/YT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9hPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpP2E9NDg6YT01MCxiLnNlZWsodyk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDEwOnZhciB4PWIuTEEoMSkseT1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/YT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2E9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGE9NDgpLGIuc2Vlayh5KTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTE6dmFyIHo9Yi5MQSgxKSxBPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/YT00ODphPTUwLGIuc2VlayhBKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTI6dmFyIEI9Yi5MQSgxKSxDPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/YT00ODphPTUwLGIuc2VlayhDKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTM6dmFyIEQ9Yi5MQSgxKSxFPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9hPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpJiYoYT00OCksYi5zZWVrKEUpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxNDp2YXIgRj1iLkxBKDEpLEc9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihhPTQ4KSxiLnNlZWsoRyk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDE1OnZhciBIPWIuTEEoMSksST1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/YT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2E9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGE9NDgpLGIuc2VlayhJKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTY6dmFyIEo9Yi5MQSgxKSxLPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/YT00ODphPTUwLGIuc2VlayhLKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTc6dmFyIEw9Yi5MQSgxKSxNPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/YT00ODphPTUwLGIuc2VlayhNKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTg6dmFyIE49Yi5MQSgxKSxPPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/YT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/YT00ODphPTUwLGIuc2VlayhPKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTk6dmFyIFA9Yi5MQSgxKSxRPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKXx8dGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKSYmdGhpcy5sYyhvKT9hPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCl8fHRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCkmJnRoaXMubGMobyk/YT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpfHx0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKSYmdGhpcy5sYyhvKT9hPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpJiZ0aGlzLmxjKG8pfHx0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKFEpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyMDp2YXIgUj1iLkxBKDEpLFM9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKFMpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyMTp2YXIgVD1iLkxBKDEpLFU9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKFUpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyMjp2YXIgVj1iLkxBKDEpLFc9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKFcpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyMzp2YXIgWD1iLkxBKDEpLFk9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKFkpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyNDp2YXIgWj1iLkxBKDEpLCQ9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2E9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihhPTQ4KSxiLnNlZWsoJCk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDI1OnZhciBfPWIuTEEoMSksYWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKGFiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjY6dmFyIGJiPWIuTEEoMSksY2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKGNiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjc6dmFyIGRiPWIuTEEoMSksZWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKGViKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjg6dmFyIGZiPWIuTEEoMSksZ2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKGdiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjk6dmFyIGhiPWIuTEEoMSksaWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKGliKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzA6dmFyIGpiPWIuTEEoMSksa2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OmE9NTAsYi5zZWVrKGtiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzE6dmFyIGxiPWIuTEEoMSksbWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKG1iKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzI6dmFyIG5iPWIuTEEoMSksb2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKG9iKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzM6dmFyIHBiPWIuTEEoMSkscWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKHFiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzQ6dmFyIHJiPWIuTEEoMSksc2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKHNiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzU6dmFyIHRiPWIuTEEoMSksdWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKHViKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzY6dmFyIHZiPWIuTEEoMSksd2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKHdiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzc6dmFyIHhiPWIuTEEoMSkseWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OmE9NTAsYi5zZWVrKHliKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzg6dmFyIHpiPWIuTEEoMSksQWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKEFiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzk6dmFyIEJiPWIuTEEoMSksQ2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKENiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNDA6dmFyIERiPWIuTEEoMSksRWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKEViKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNDE6dmFyIEZiPWIuTEEoMSksR2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKEdiKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNDI6dmFyIEhiPWIuTEEoMSksSWI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2E9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9hPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2E9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/YT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9hPTQ4OmE9NTAsYi5zZWVrKEliKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNDM6dmFyIEpiPWIuTEEoMSksS2I9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9hPTQ5OmE9NTAsYi5zZWVrKEtiKTtpZihhPj0wKXJldHVybiBhfX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsYSxiKTtpZighZC5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGUpKXJldHVybiBlO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwxMTksYyxiKTt0aHJvdyB0aGlzLmVycm9yKGYpLGZ9LGR1bW15Om51bGx9KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExMjFfZW90UzoiXG7vv78iLERGQTEyMV9lb2ZTOiIB77+/B1xiAu+/vyIsREZBMTIxX21pblM6IgEQBxIC77+/IixERkExMjFfbWF4UzoiAcWUB8O+Au+/vyIsREZBMTIxX2FjY2VwdFM6Ilxi77+/AQIBASIsREZBMTIxX3NwZWNpYWxTOiJcbu+/v30+IixERkExMjFfdHJhbnNpdGlvblM6WyIGXGIBAwZcYgEBBlxiAQIBBVxyXGIBBwEGKlxiAQQ7XGIB77+/QFxiEO+/vwFcYhjvv78BXGIC77+/AlxiAu+/vwFcYkfvv78BXGIiLCIDXGIE77+/BFxiAe+/vwFcYgTvv78BXGIC77+/AlxiBO+/vwFcYgLvv78BXGIB77+/AVxiA++/vwFcYgHvv78BXGIB77+/AlxiBO+/vwNcYgLvv78BXGIB77+/A1xiAu+/vwFcYgXvv78CXGIH77+/AlxiBe+/vwFcYgTvv78CXGIB77+/AVxiBO+/vwFcYgTvv78BXGID77+/AlxiBu+/vwFcYgXvv78BXGIH77+/AlxiBO+/vwFcYgHvv78BXGIH77+/AVxiAu+/vwFcYhTvv78BXGIG77+/AVxiA++/vwFcYgbvv78BXGIU77+/AVxiAe+/vwFcYgLvv78EXGIB77+/AVxiA++/vwFcYgHvv78LXGIC77+/AVxiAQkC77+/AlxiIiwiA1xiBO+/vwRcYgHvv78BXGIE77+/AVxiAu+/vwJcYgTvv78BXGIC77+/AVxiAe+/vwFcYgPvv78BXGIB77+/AVxiAe+/vwJcYgTvv78DXGIC77+/AVxiAe+/vwNcYgLvv78BXGIF77+/AlxiB++/vwJcYgXvv78BXGIE77+/AlxiAe+/vwFcYgTvv78BXGIE77+/AVxiA++/vwJcYgbvv78BXGIF77+/AVxiB++/vwJcYgTvv78BXGIB77+/AVxiB++/vwFcYgLvv78BXGIU77+/AVxiBu+/vwFcYgPvv78BXGIG77+/AVxiFO+/vwFcYgHvv78BXGIC77+/BFxiAe+/vwFcYgPvv78BXGIB77+/C1xiAu+/vwFcYgEJAu+/vwJcYiIsIgNcYgTvv78EXGIB77+/AVxiBO+/vwFcYgLvv78CXGIE77+/AVxiAu+/vwFcYgHvv78BXGID77+/AVxiAe+/vwFcYgHvv78CXGIE77+/A1xiAu+/vwFcYgHvv78DXGIC77+/AVxiBe+/vwJcYgfvv78CXGIF77+/AVxiBO+/vwJcYgHvv78BXGIE77+/AVxiBO+/vwFcYgPvv78CXGIG77+/AVxiBe+/vwFcYgfvv78CXGIE77+/AVxiAe+/vwFcYgfvv78BXGIC77+/AVxiFO+/vwFcYgbvv78BXGID77+/AVxiBu+/vwFcYhTvv78DXGIC77+/BFxiAe+/vwFcYgPvv78BXGIB77+/C1xiAu+/vwFcYgEJAu+/vwJcYiIsIgNcYgTvv78EXGIB77+/AVxiBO+/vwFcYgLvv78CXGIE77+/AVxiAu+/vwFcYgHvv78BXGID77+/AVxiAe+/vwFcYgHvv78CXGIE77+/A1xiAu+/vwFcYgHvv78DXGIC77+/AVxiBe+/vwJcYgfvv78CXGIF77+/AVxiBO+/vwJcYgHvv78BXGIE77+/AVxiBO+/vwFcYgPvv78CXGIG77+/AVxiBe+/vwFcYgfvv78CXGIE77+/AVxiAe+/vwFcYgfvv78BXGIC77+/AVxiFO+/vwFcYgbvv78BXGID77+/AVxiBu+/vwFcYhTvv78BXGIB77+/AVxiAu+/vwRcYgHvv78BXGID77+/AVxiAe+/vwtcYgLvv78BXGIBCQLvv78CXGIiLCIDXGIE77+/BFxiAe+/vwFcYgTvv78BXGIC77+/AlxiBO+/vwFcYgLvv78BXGIB77+/AVxiA++/vwFcYgHvv78BXGIB77+/AlxiBO+/vwNcYgLvv78BXGIB77+/A1xiAu+/vwFcYgXvv78CXGIH77+/AlxiBe+/vwFcYgTvv78CXGIB77+/AVxiBO+/vwFcYgTvv78BXGID77+/AlxiBu+/vwFcYgXvv78BXGIH77+/AlxiBO+/vwFcYgHvv78BXGIH77+/AVxiAu+/vwFcYhTvv78BXGIG77+/AVxiA++/vwFcYgbvv78BXGIU77+/AVxiAe+/vwFcYgLvv78EXGIB77+/AVxiA++/vwFcYgHvv78LXGIC77+/AVxiAQkC77+/AlxiIiwiA1xiBO+/vwRcYgHvv78BXGIE77+/AVxiAu+/vwJcYgTvv78BXGIC77+/AVxiAe+/vwFcYgPvv78BXGIB77+/AVxiAe+/vwJcYgTvv78DXGIC77+/AVxiAe+/vwNcYgLvv78BXGIF77+/AlxiB++/vwJcYgXvv78BXGIE77+/AlxiAe+/vwFcYgTvv78BXGIE77+/AVxiA++/vwJcYgbvv78BXGIF77+/AVxiB++/vwJcYgTvv78BXGIB77+/AVxiB++/vwFcYgLvv78BXGIU77+/AVxiBu+/vwFcYgPvv78BXGIG77+/AVxiFO+/vwFcYgHvv78BXGIC77+/BFxiAe+/vwFcYgPvv78BXGIB77+/C1xiAu+/vwFcYgEJAu+/vwJcYiIsIgNcYgTvv78EXGIB77+/AVxiBO+/vwFcYgLvv78CXGIE77+/AVxiAu+/vwFcYgHvv78BXGID77+/AVxiAe+/vwFcYgHvv78CXGIE77+/A1xiAu+/vwFcYgHvv78DXGIC77+/AVxiBe+/vwJcYgfvv78CXGIF77+/AVxiBO+/vwJcYgHvv78BXGIE77+/AVxiBO+/vwFcYgPvv78CXGIG77+/AVxiBe+/vwFcYgfvv78CXGIE77+/AVxiAe+/vwFcYgfvv78BXGIC77+/AVxiFO+/vwFcYgbvv78BXGID77+/AVxiBu+/vwFcYhTvv78BXGIB77+/AVxiAu+/vwRcYgHvv78BXGID77+/AVxiAe+/vwtcYgLvv78BXGIBCQLvv78CXGIiLCIiLCIiXX0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTEyMV9lb3Q6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTIxX2VvdFMpLERGQTEyMV9lb2Y6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTIxX2VvZlMpLERGQTEyMV9taW46ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBMTIxX21pblMpLERGQTEyMV9tYXg6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBMTIxX21heFMpLERGQTEyMV9hY2NlcHQ6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTIxX2FjY2VwdFMpLERGQTEyMV9zcGVjaWFsOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTEyMV9zcGVjaWFsUyksREZBMTIxX3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1bXSxiLGM9cC5ERkExMjFfdHJhbnNpdGlvblMubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKylhLnB1c2goZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTIxX3RyYW5zaXRpb25TW2JdKSk7cmV0dXJuIGF9KCl9KSxwLkRGQTEyMT1mdW5jdGlvbihhKXt0aGlzLnJlY29nbml6ZXI9YSx0aGlzLmRlY2lzaW9uTnVtYmVyPTEyMSx0aGlzLmVvdD1wLkRGQTEyMV9lb3QsdGhpcy5lb2Y9cC5ERkExMjFfZW9mLHRoaXMubWluPXAuREZBMTIxX21pbix0aGlzLm1heD1wLkRGQTEyMV9tYXgsdGhpcy5hY2NlcHQ9cC5ERkExMjFfYWNjZXB0LHRoaXMuc3BlY2lhbD1wLkRGQTEyMV9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1wLkRGQTEyMV90cmFuc2l0aW9ufSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAuREZBMTIxLGQuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjk0MDoxOiBwX0ZvcndhcmRTdGVwIDogKCBwX0ZvcndhcmRBeGlzIHBfTm9kZVRlc3QgfCBwX0FiYnJldkZvcndhcmRTdGVwICk7In0sZHVtbXk6bnVsbH0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTEyNl9lb3RTOiJccu+/vyIsREZBMTI2X2VvZlM6IgHvv79cbgsC77+/IixERkExMjZfbWluUzoiARBcbhIC77+/IixERkExMjZfbWF4UzoiAcWUXG7DvgLvv78iLERGQTEyNl9hY2NlcHRTOiIL77+/AQIBASIsREZBMTI2X3NwZWNpYWxTOiJccu+/v30+IixERkExMjZfdHJhbnNpdGlvblM6WyIGCwEDXGILAQcJCwEBAQIjCwFcblxuCwEGAwsBBQEEBQsBXGIXCwEJHgsB77+/QAsQ77+/AQsb77+/AgsC77+/AQtH77+/AQsiLCIDCwTvv78ECwHvv78BCwTvv78BCwLvv78CCwTvv78BCwLvv78BCwHvv78BCwPvv78BCwHvv78BCwHvv78CCwTvv78DCwLvv78BCwHvv78DCwLvv78BCwXvv78CCwfvv78CCwXvv78BCwTvv78CCwHvv78BCwTvv78BCwTvv78BCwPvv78CCwbvv78BCwXvv78BCwfvv78CCwTvv78BCwHvv78BCwfvv78BCwLvv78BCxTvv78BCwbvv78BCwPvv78BCwbvv78BCxTvv78BCwFcZgELAu+/vwQLAe+/vwELA++/vwELAe+/vwsLAu+/vwELA++/vwILIiwiAwsE77+/BAsB77+/AQsE77+/AQsC77+/AgsE77+/AQsC77+/AQsB77+/AQsD77+/AQsB77+/AQsB77+/AgsE77+/AwsC77+/AQsB77+/AwsC77+/AQsF77+/AgsH77+/AgsF77+/AQsE77+/AgsB77+/AQsE77+/AQsE77+/AQsD77+/AgsG77+/AQsF77+/AQsH77+/AgsE77+/AQsB77+/AQsH77+/AQsC77+/AQsU77+/AQsG77+/AQsD77+/AQsG77+/AQsU77+/AQsBXGYBCwLvv78ECwHvv78BCwPvv78BCwHvv78LCwLvv78BCwPvv78CCyIsIgMLBO+/vwQLAe+/vwELBO+/vwELAu+/vwILBO+/vwELAu+/vwELAe+/vwELA++/vwELAe+/vwELAe+/vwILBO+/vwMLAu+/vwELAe+/vwMLAu+/vwELBe+/vwILB++/vwILBe+/vwELBO+/vwILAe+/vwELBO+/vwELBO+/vwELA++/vwILBu+/vwELBe+/vwELB++/vwILBO+/vwELAe+/vwELB++/vwELAu+/vwELFO+/vwELBu+/vwELA++/vwELBu+/vwELFO+/vwELAVxmAQsC77+/BAsB77+/AQsD77+/AQsB77+/CwsC77+/AQsD77+/AgsiLCIDCwTvv78ECwHvv78BCwTvv78BCwLvv78CCwTvv78BCwLvv78BCwHvv78BCwPvv78BCwHvv78BCwHvv78CCwTvv78DCwLvv78BCwHvv78DCwLvv78BCwXvv78CCwfvv78CCwXvv78BCwTvv78CCwHvv78BCwTvv78BCwTvv78BCwPvv78CCwbvv78BCwXvv78BCwfvv78CCwTvv78BCwHvv78BCwfvv78BCwLvv78BCxTvv78BCwbvv78BCwPvv78BCwbvv78BCxTvv78BCwFcZgELAu+/vwQLAe+/vwELA++/vwELAe+/vwsLAu+/vwELA++/vwILIiwiAwsE77+/BAsB77+/AQsE77+/AQsC77+/AgsE77+/AQsC77+/AQsB77+/AQsD77+/AQsB77+/AQsB77+/AgsE77+/AwsC77+/AQsB77+/AwsC77+/AQsF77+/AgsH77+/AgsF77+/AQsE77+/AgsB77+/AQsE77+/AQsE77+/AQsD77+/AgsG77+/AQsF77+/AQsH77+/AgsE77+/AQsB77+/AQsH77+/AQsC77+/AQsU77+/AQsG77+/AQsD77+/AQsG77+/AQsU77+/AQsBXGYBCwLvv78ECwHvv78BCwPvv78BCwHvv78LCwLvv78BCwPvv78CCyIsIgMLBO+/vwQLAe+/vwELBO+/vwELAu+/vwILBO+/vwELAu+/vwELAe+/vwELA++/vwELAe+/vwELAe+/vwILBO+/vwMLAu+/vwELAe+/vwMLAu+/vwELBe+/vwILB++/vwILBe+/vwELBO+/vwILAe+/vwELBO+/vwELBO+/vwELA++/vwILBu+/vwELBe+/vwELB++/vwILBO+/vwELAe+/vwELB++/vwELAu+/vwELFO+/vwELBu+/vwELA++/vwELBu+/vwELFO+/vwELAVxmAQsC77+/BAsB77+/AQsD77+/AQsB77+/CwsC77+/AQsD77+/AgsiLCIDCwTvv78ECwHvv78BCwTvv78BCwLvv78CCwTvv78BCwLvv78BCwHvv78BCwPvv78BCwHvv78BCwHvv78CCwTvv78DCwLvv78BCwHvv78DCwLvv78BCwXvv78CCwfvv78CCwXvv78BCwTvv78CCwHvv78BCwTvv78BCwTvv78BCwPvv78CCwbvv78BCwXvv78BCwfvv78CCwTvv78BCwHvv78BCwfvv78BCwLvv78BCxTvv78BCwbvv78BCwPvv78BCwbvv78BCxTvv78BCwFcZgELAu+/vwQLAe+/vwELA++/vwELAe+/vwsLAu+/vwELA++/vwILIiwiAwsE77+/BAsB77+/AQsE77+/AQsC77+/AgsE77+/AQsC77+/AQsB77+/AQsD77+/AQsB77+/AQsB77+/AgsE77+/AwsC77+/AQsB77+/AwsC77+/AQsF77+/AgsH77+/AgsF77+/AQsE77+/AgsB77+/AQsE77+/AQsE77+/AQsD77+/AgsG77+/AQsF77+/AQsH77+/AgsE77+/AQsB77+/AQsH77+/AQsC77+/AQsU77+/AQsG77+/AQsD77+/AQsG77+/AQsU77+/AQsBXGYBCwLvv78ECwHvv78BCwPvv78BCwHvv78LCwLvv78BCwPvv78CCyIsIgMLBO+/vwQLAe+/vwELBO+/vwELAu+/vwILBO+/vwELAu+/vwELAe+/vwELA++/vwELAe+/vwELAe+/vwILBO+/vwMLAu+/vwELAe+/vwMLAu+/vwELBe+/vwILB++/vwILBe+/vwELBO+/vwILAe+/vwELBO+/vwELBO+/vwELA++/vwILBu+/vwELBe+/vwELB++/vwILBO+/vwELAe+/vwELB++/vwELAu+/vwELFO+/vwELBu+/vwELA++/vwELBu+/vwELFO+/vwELAVxmAQsC77+/BAsB77+/AQsD77+/AQsB77+/CwsC77+/AQsD77+/AgsiLCIDCwTvv78ECwHvv78BCwTvv78BCwLvv78CCwTvv78BCwLvv78BCwHvv78BCwPvv78BCwHvv78BCwHvv78CCwTvv78DCwLvv78BCwHvv78DCwLvv78BCwXvv78CCwfvv78CCwXvv78BCwTvv78CCwHvv78BCwTvv78BCwTvv78BCwPvv78CCwbvv78BCwXvv78BCwfvv78CCwTvv78BCwHvv78BCwfvv78BCwLvv78BCxTvv78BCwbvv78BCwPvv78BCwbvv78BCxTvv78BCwFcZgELAu+/vwQLAe+/vwELA++/vwELAe+/vwsLAu+/vwELA++/vwILIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExMjZfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTEyNl9lb3RTKSxERkExMjZfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTEyNl9lb2ZTKSxERkExMjZfbWluOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTEyNl9taW5TKSxERkExMjZfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTEyNl9tYXhTKSxERkExMjZfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTEyNl9hY2NlcHRTKSxERkExMjZfc3BlY2lhbDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExMjZfc3BlY2lhbFMpLERGQTEyNl90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPXAuREZBMTI2X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IoYj0wO2I8YztiKyspYS5wdXNoKGQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTEyNl90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkExMjY9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj0xMjYsdGhpcy5lb3Q9cC5ERkExMjZfZW90LHRoaXMuZW9mPXAuREZBMTI2X2VvZix0aGlzLm1pbj1wLkRGQTEyNl9taW4sdGhpcy5tYXg9cC5ERkExMjZfbWF4LHRoaXMuYWNjZXB0PXAuREZBMTI2X2FjY2VwdCx0aGlzLnNwZWNpYWw9cC5ERkExMjZfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249cC5ERkExMjZfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTEyNixkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiI5ODI6MTogcF9Ob2RlVGVzdCA6ICggcF9LaW5kVGVzdCB8IHBfTmFtZVRlc3QgKTsifSxkdW1teTpudWxsfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBMTM0X2VvdFM6Ihbvv78iLERGQTEzNF9lb2ZTOiIW77+/IixERkExMzRfbWluUzoiARAE77+/AcOdARAB77+/AsOdAe+/vwIQAcOgAcOdAcOgARAF77+/IixERkExMzRfbWF4UzoiAcWUBO+/vwHDuQHFlAHvv78Cw7kB77+/AsWUA8O5AcWUBe+/vyIsREZBMTM0X2FjY2VwdFM6IgHvv78BAQECAQMBBALvv78BBQLvv78BXGIG77+/AQkBBgEHAlxiIixERkExMzRfc3BlY2lhbFM6IgEBXHLvv78BXDAH77+/fT4iLERGQTEzNF90cmFuc2l0aW9uUzpbIgYHAVxmXGIHAQ9cYgcBCQEHAQYfBwELXGIHAQUFBwEQXG4HAVxyBQcBXGJtBwEOAwcB77+/AQEB77+/AQMBEQ7vv78BXG4H77+/AQQQ77+/AgIC77+/AQcH77+/AlxuAwI777+/AQciLCIiLCIiLCIiLCIiLCIBBwLvv78BEhjvv78BByIsIsKLXG4B77+/QFxuBO+/vwFcbhjvv78BBxLvv78BXG5H77+/AVxuIiwiIiwiAQcC77+/ARMY77+/AQciLCIBBwLvv78BXG4Y77+/AQciLCIiLCLCi1xuAe+/v0BcbgHvv78BBwLvv78BXG4Y77+/AQcS77+/AVxuR++/vwFcbiIsIsKLXG4B77+/QFxuBO+/vwFcbhjvv78BBxLvv78BXG5H77+/AVxuIiwiAVxuGO+/vwEHIiwiAQcC77+/ARQY77+/AQciLCIBFRjvv78BByIsIsKLFQHvv79AFQTvv78BFRjvv78BBxLvv78BFUfvv78BFSIsIiIsIiIsIiIsIiIsIiJdfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBMTM0X2VvdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExMzRfZW90UyksREZBMTM0X2VvZjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExMzRfZW9mUyksREZBMTM0X21pbjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkExMzRfbWluUyksREZBMTM0X21heDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkExMzRfbWF4UyksREZBMTM0X2FjY2VwdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExMzRfYWNjZXB0UyksREZBMTM0X3NwZWNpYWw6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMTM0X3NwZWNpYWxTKSxERkExMzRfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVtdLGIsYz1wLkRGQTEzNF90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKGI9MDtiPGM7YisrKWEucHVzaChkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExMzRfdHJhbnNpdGlvblNbYl0pKTtyZXR1cm4gYX0oKX0pLHAuREZBMTM0PWZ1bmN0aW9uKGEpe3RoaXMucmVjb2duaXplcj1hLHRoaXMuZGVjaXNpb25OdW1iZXI9MTM0LHRoaXMuZW90PXAuREZBMTM0X2VvdCx0aGlzLmVvZj1wLkRGQTEzNF9lb2YsdGhpcy5taW49cC5ERkExMzRfbWluLHRoaXMubWF4PXAuREZBMTM0X21heCx0aGlzLmFjY2VwdD1wLkRGQTEzNF9hY2NlcHQsdGhpcy5zcGVjaWFsPXAuREZBMTM0X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXAuREZBMTM0X3RyYW5zaXRpb259LGQuYW50bHIubGFuZy5leHRlbmQocC5ERkExMzQsZC5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMTAyNjoxOiBwX1ByaW1hcnlFeHByIDogKCAoIExQQVJFTiApPT4gcF9QYXJlbnRoZXNpemVkRXhwciB8IHBfTGl0ZXJhbCB8IHBfVmFyUmVmIHwgcF9Db250ZXh0SXRlbUV4cHIgfCBwX0Z1bmN0aW9uQ2FsbCB8IHBfT3JkZXJlZEV4cHIgfCBwX1Vub3JkZXJlZEV4cHIgfCBwX0NvbnN0cnVjdG9yIHwgcF9CbG9ja0V4cHIgKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9YSxlPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDp2YXIgYz1iLkxBKDEpLGQ9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxjPT1rZXx8Yz09TWU/YT03OmM9PW5lJiZ0aGlzLmxjKG8pJiYoYT0yMCksYi5zZWVrKGQpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxOnZhciBlPWIuTEEoMSksZj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLGU9PWtlJiZ0aGlzLnN5bnByZWQxNl9YUXVlcnlQYXJzZXIoKT9hPTE6ZT49X2UmJmU8PWFmfHxlPj1vZiYmZTw9cWY/YT0yOmU9PW1lP2E9MzplPT1LZT9hPTQ6ZT09SWI/YT01OmU9PVY/YT02OmU+PXYmJmU8PUF8fGU+PUMmJmU8PUp8fGU+PUwmJmU8PVN8fGU9PVV8fGU+PVcmJmU8PXlifHxlPj1BYiYmZTw9SGJ8fGU+PUpiJiZlPD1OYnx8ZT49UGImJmU8PVlifHxlPj0kYiYmZTw9Y2N8fGU+PWVjJiZlPD1lZXx8ZT49Z2UmJmU8PWllfHxlPT1kZnx8ZT09d2c/YT03OmU9PWRjP2E9ODplPT1UP2E9OTplPT1DZXx8ZT49bWYmJmU8PW5mP2E9MTA6ZT09emI/YT0xMTplPT1CP2E9MTI6ZT09WmI/YT0xMzplPT1mZT9hPTE0OmU9PUs/YT0xNTplPT1PYj9hPTE2OmU9PW5lJiYoYT0xNyksYi5zZWVrKGYpO2lmKGE+PTApcmV0dXJuIGF9fS5jYWxsKHRoaXMucmVjb2duaXplcixhLGIpO2lmKCFkLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZSkpcmV0dXJuIGU7aWYodGhpcy5yZWNvZ25pemVyLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnJlY29nbml6ZXIuc3RhdGUuZmFpbGVkPSEwLC0xO3ZhciBmPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDEzNCxjLGIpO3Rocm93IHRoaXMuZXJyb3IoZiksZn0sZHVtbXk6bnVsbH0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTE2Ml9lb3RTOiJK77+/IixERkExNjJfZW9mUzoiAQJJ77+/IixERkExNjJfbWluUzoiARIBXDAH77+/AVwwQO+/vyIsREZBMTYyX21heFM6IgHDvgFcMAfvv78BXDBA77+/IixERkExNjJfYWNjZXB0UzoiAu+/vwECXG7vv78BATzvv78iLERGQTE2Ml9zcGVjaWFsUzoiAVwwAQEH77+/AQJA77+/fT4iLERGQTE2Ml90cmFuc2l0aW9uUzpbIgQCBO+/vwECA++/vwECBO+/vwECAu+/vwICBO+/vwECAu+/vwECAe+/vwICAu+/vwECAe+/vwECAe+/vwICAu+/vwECAe+/vwMCAu+/vwECAe+/vwMCAu+/vwECBe+/vwICB++/vwICBe+/vwECBO+/vwECAu+/vwECBO+/vwECAe+/vwECAu+/vwECA++/vwICBu+/vwECBe+/vwECB++/vwICBO+/vwECAe+/vwECB++/vwECAu+/vwECFO+/vwECA++/vwECAu+/vwECA++/vwECBu+/vwECFO+/vwECAe+/vwECAe+/vwICAe+/vwQCA++/vwECAVxyAQEBCQcCXGLvv78CAiIsIgHvv78iLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIB77+/IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExNjJfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2Ml9lb3RTKSxERkExNjJfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2Ml9lb2ZTKSxERkExNjJfbWluOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTE2Ml9taW5TKSxERkExNjJfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTE2Ml9tYXhTKSxERkExNjJfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2Ml9hY2NlcHRTKSxERkExNjJfc3BlY2lhbDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExNjJfc3BlY2lhbFMpLERGQTE2Ml90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPXAuREZBMTYyX3RyYW5zaXRpb25TLmxlbmd0aDtmb3IoYj0wO2I8YztiKyspYS5wdXNoKGQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2Ml90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkExNjI9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj0xNjIsdGhpcy5lb3Q9cC5ERkExNjJfZW90LHRoaXMuZW9mPXAuREZBMTYyX2VvZix0aGlzLm1pbj1wLkRGQTE2Ml9taW4sdGhpcy5tYXg9cC5ERkExNjJfbWF4LHRoaXMuYWNjZXB0PXAuREZBMTYyX2FjY2VwdCx0aGlzLnNwZWNpYWw9cC5ERkExNjJfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249cC5ERkExNjJfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTE2MixkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIxMzA2OjI1OiAoICggcF9PY2N1cnJlbmNlSW5kaWNhdG9yICk9Pm9pPSBwX09jY3VycmVuY2VJbmRpY2F0b3IgKT8ifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGIsYyl7dmFyIGU9YixmPWZ1bmN0aW9uKGIsYyl7c3dpdGNoKGIpe2Nhc2UgMDp2YXIgZD1jLkxBKDEpLGU9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMSxkPT16ZT9iPTE6ZD09YXx8ZD49eCYmZDw9QXx8ZD09Rnx8ZD09Snx8ZD09T3x8ZD49UiYmZDw9U3x8ZD09WHx8ZD09JHx8ZD49YWImJmQ8PWJifHxkPT1lYnx8ZD09Z2J8fGQ+PWliJiZkPD1qYnx8ZD09bWJ8fGQ+PW9iJiZkPD1xYnx8ZD09dGJ8fGQ+PXZiJiZkPD14Ynx8ZD09QWJ8fGQ+PUdiJiZkPD1IYnx8ZD49UGImJmQ8PVFifHxkPT1XYnx8ZD09X2J8fGQ9PWNjfHxkPT1oY3x8ZD09amN8fGQ9PW1jfHxkPj1xYyYmZDw9cmN8fGQ9PXljfHxkPT1FY3x8ZD49TWMmJmQ8PU5jfHxkPT1TY3x8ZD09VWN8fGQ9PWFkfHxkPT1kZHx8ZD09eWR8fGQ9PUNkfHxkPT1GZHx8ZD09SmR8fGQ9PVFkfHxkPT1qZXx8ZD09bGV8fGQ+PW5lJiZkPD1vZXx8ZD49cWUmJmQ8PXRlfHxkPT14ZXx8ZD49QmUmJmQ8PUhlfHxkPj1RZSYmZDw9UmU/Yj0yOmQ9PUFlP2I9OTpkPT15ZSYmdGhpcy5zeW5wcmVkMTdfWFF1ZXJ5UGFyc2VyKCkmJihiPTEzKSxjLnNlZWsoZSk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDE6dmFyIGY9Yy5MQSgxKSxnPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsdGhpcy5zeW5wcmVkMTdfWFF1ZXJ5UGFyc2VyKCk/Yj0xMzpiPTIsYy5zZWVrKGcpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAyOnZhciBoPWMuTEEoMSksaT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLHRoaXMuc3lucHJlZDE3X1hRdWVyeVBhcnNlcigpP2I9MTM6Yj0yLGMuc2VlayhpKTtpZihiPj0wKXJldHVybiBifX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsYixjKTtpZighZC5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGYpKXJldHVybiBmO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgZz1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwxNjIsZSxjKTt0aHJvdyB0aGlzLmVycm9yKGcpLGd9LGR1bW15Om51bGx9KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExNjRfZW90UzoiEu+/vyIsREZBMTY0X2VvZlM6IgHvv79cZlxyBe+/vyIsREZBMTY0X21pblM6IgEQXGYSBe+/vyIsREZBMTY0X21heFM6IgHFlFxmw74F77+/IixERkExNjRfYWNjZXB0UzoiXHLvv78BBAEFAQEBAgEDIixERkExNjRfc3BlY2lhbFM6Igvvv78BXDAG77+/fT4iLERGQTE2NF90cmFuc2l0aW9uUzpbIgZccgEDXGJccgEHCVxyAQEBAhdccgFcZgtccgFcblxuXHIBBgNccgEFAQQFXHIBXGIXXHIBCR5ccgHvv788XHIBCwNccgHvv78BDi7vv78BXHJH77+/AVxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEPAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyAQ8BXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBDwFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEPAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyAQ8BXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBDwFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEPAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyAQ8BXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBDwFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEPAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyARABXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBEQFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiIiwiIiwiIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkExNjRfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2NF9lb3RTKSxERkExNjRfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2NF9lb2ZTKSxERkExNjRfbWluOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTE2NF9taW5TKSxERkExNjRfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTE2NF9tYXhTKSxERkExNjRfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2NF9hY2NlcHRTKSxERkExNjRfc3BlY2lhbDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkExNjRfc3BlY2lhbFMpLERGQTE2NF90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPXAuREZBMTY0X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IoYj0wO2I8YztiKyspYS5wdXNoKGQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTE2NF90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkExNjQ9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj0xNjQsdGhpcy5lb3Q9cC5ERkExNjRfZW90LHRoaXMuZW9mPXAuREZBMTY0X2VvZix0aGlzLm1pbj1wLkRGQTE2NF9taW4sdGhpcy5tYXg9cC5ERkExNjRfbWF4LHRoaXMuYWNjZXB0PXAuREZBMTY0X2FjY2VwdCx0aGlzLnNwZWNpYWw9cC5ERkExNjRfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249cC5ERkExNjRfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTE2NCxkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIxMzE2OjE6IHBfSXRlbVR5cGUgOiAoIHBfS2luZFRlc3QgLT4gXiggS2luZFRlc3QgcF9LaW5kVGVzdCApIHwgey4uLn0/ID0+ICggQklOQVJZIExQQVJFTiBSUEFSRU4gKSAtPiBeKCBCaW5hcnlUZXN0IEJJTkFSWSBMUEFSRU4gUlBBUkVOICkgfCAoIElURU0gTFBBUkVOIFJQQVJFTiApIC0+IF4oIEl0ZW1UZXN0IElURU0gTFBBUkVOIFJQQVJFTiApIHwgcF9BdG9taWNPclVuaW9uVHlwZSB8IHBfUGFyZW50aGVzaXplZEl0ZW1UeXBlICk7In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbihiLGMpe3ZhciBlPWIsZj1mdW5jdGlvbihiLGMpe3N3aXRjaChiKXtjYXNlIDA6dmFyIGQ9Yy5MQSgxKSxlPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTE7aWYoZD09a2UmJnRoaXMubGMobykpYj0xNjtlbHNlIGlmKGQ9PWF8fGQ+PXgmJmQ8PUF8fGQ9PUZ8fGQ9PUp8fGQ9PU98fGQ+PVImJmQ8PVN8fGQ9PVh8fGQ9PSR8fGQ+PWFiJiZkPD1iYnx8ZD09ZWJ8fGQ9PWdifHxkPj1pYiYmZDw9amJ8fGQ9PW1ifHxkPj1vYiYmZDw9cWJ8fGQ9PXRifHxkPj12YiYmZDw9eGJ8fGQ9PUFifHxkPj1HYiYmZDw9SGJ8fGQ+PVBiJiZkPD1RYnx8ZD09V2J8fGQ9PV9ifHxkPT1jY3x8ZD09aGN8fGQ9PWpjfHxkPT1tY3x8ZD49cWMmJmQ8PXJjfHxkPT15Y3x8ZD09RWN8fGQ+PU1jJiZkPD1OY3x8ZD09U2N8fGQ9PVVjfHxkPT1hZHx8ZD09ZGR8fGQ9PXlkfHxkPT1DZHx8ZD09RmR8fGQ9PUpkfHxkPT1RZHx8ZD09amV8fGQ9PWxlfHxkPj1uZSYmZDw9b2V8fGQ+PXFlJiZkPD10ZXx8ZD49eGUmJmQ8PUhlfHxkPT1NZXx8ZD49UWUmJmQ8PVJlKWI9MTM7Yy5zZWVrKGUpO2lmKGI+PTApcmV0dXJuIGJ9fS5jYWxsKHRoaXMucmVjb2duaXplcixiLGMpO2lmKCFkLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZikpcmV0dXJuIGY7aWYodGhpcy5yZWNvZ25pemVyLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnJlY29nbml6ZXIuc3RhdGUuZmFpbGVkPSEwLC0xO3ZhciBnPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDE2NCxlLGMpO3Rocm93IHRoaXMuZXJyb3IoZyksZ30sZHVtbXk6bnVsbH0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTIxOF9lb3RTOiJcbu+/vyIsREZBMjE4X2VvZlM6Ilxu77+/IixERkEyMThfbWluUzoiARoC77+/AcK9Bu+/vyIsREZBMjE4X21heFM6IgHDhALvv78Bw4QG77+/IixERkEyMThfYWNjZXB0UzoiAe+/vwEBAQIB77+/AQMBBAEFAQYBBwFcYiIsREZBMjE4X3NwZWNpYWxTOiJcbu+/v30+IixERkEyMThfdHJhbnNpdGlvblM6WyIBBjXvv78BCVHvv78BB1xu77+/AQEB77+/AQYB77+/AQML77+/AQUBXGIBBAHvv78BBgLvv78BAiIsIiIsIiIsIgEFAVxiAQQE77+/AQIiLCIiLCIiLCIiLCIiLCIiLCIiXX0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTIxOF9lb3Q6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMjE4X2VvdFMpLERGQTIxOF9lb2Y6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMjE4X2VvZlMpLERGQTIxOF9taW46ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBMjE4X21pblMpLERGQTIxOF9tYXg6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHAuREZBMjE4X21heFMpLERGQTIxOF9hY2NlcHQ6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMjE4X2FjY2VwdFMpLERGQTIxOF9zcGVjaWFsOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTIxOF9zcGVjaWFsUyksREZBMjE4X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1bXSxiLGM9cC5ERkEyMThfdHJhbnNpdGlvblMubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKylhLnB1c2goZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMjE4X3RyYW5zaXRpb25TW2JdKSk7cmV0dXJuIGF9KCl9KSxwLkRGQTIxOD1mdW5jdGlvbihhKXt0aGlzLnJlY29nbml6ZXI9YSx0aGlzLmRlY2lzaW9uTnVtYmVyPTIxOCx0aGlzLmVvdD1wLkRGQTIxOF9lb3QsdGhpcy5lb2Y9cC5ERkEyMThfZW9mLHRoaXMubWluPXAuREZBMjE4X21pbix0aGlzLm1heD1wLkRGQTIxOF9tYXgsdGhpcy5hY2NlcHQ9cC5ERkEyMThfYWNjZXB0LHRoaXMuc3BlY2lhbD1wLkRGQTIxOF9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1wLkRGQTIxOF90cmFuc2l0aW9ufSxkLmFudGxyLmxhbmcuZXh0ZW5kKHAuREZBMjE4LGQuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjE4NTI6MTogcF9GVE1hdGNoT3B0aW9uIDogKCBwX0ZUTGFuZ3VhZ2VPcHRpb24gfCBwX0ZUV2lsZENhcmRPcHRpb24gfCBwX0ZUVGhlc2F1cnVzT3B0aW9uIHwgcF9GVFN0ZW1PcHRpb24gfCBwX0ZUQ2FzZU9wdGlvbiB8IHBfRlREaWFjcml0aWNzT3B0aW9uIHwgcF9GVFN0b3BXb3JkT3B0aW9uIHwgcF9GVEV4dGVuc2lvbk9wdGlvbiApOyJ9LGR1bW15Om51bGx9KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkEyMzdfZW90UzoiXGbvv78iLERGQTIzN19lb2ZTOiJcZu+/vyIsREZBMjM3X21pblM6IgEQAe+/vwEQBRIB77+/ARIBEAESIixERkEyMzdfbWF4UzoiAcWUAe+/vwHFlAXDvgHvv78Bw74BxZQBw74iLERGQTIzN19hY2NlcHRTOiIB77+/AQEG77+/AQID77+/IixERkEyMzdfc3BlY2lhbFM6Ilxm77+/fT4iLERGQTIzN190cmFuc2l0aW9uUzpbIlxcAQEHWwEBBAEFAQYCAQEDDgEB77+/AQEB77+/AQIBAQbvv78BXGIE77+/BAEF77+/BAFcZu+/vwEBAu+/vwIBAu+/vwEBBu+/vwYBO++/vwEBIiwiIiwiwosJAe+/v0AJMO+/vwEJR++/vwEJIiwiAQFcYu+/vwIBXG7vv78BAQfvv78BAQHvv78BAQXvv78BAQHvv78CAQTvv78DAQLvv78BAQLvv78CAQLvv78BAQXvv78BARTvv78CAQHvv78BATbvv78BATvvv78BAQFcYgTvv78BAQHvv78BAQHvv78BAQPvv78BAQHvv78LAQLvv78BAQPvv78CASIsIgEBXGLvv78CAVxu77+/AQEH77+/AQEB77+/AQEF77+/AQEB77+/AgEE77+/AwEC77+/AQEC77+/AgEC77+/AQEF77+/AQEU77+/AgEB77+/AQE277+/AQEq77+/AVxiEO+/vwIBBO+/vwEBAe+/vwEBAe+/vwEBA++/vwEBAe+/vwsBAu+/vwEBA++/vwIBIiwiAQFcYu+/vwIBXG7vv78BAQfvv78BAQHvv78BAQXvv78BAQHvv78CAQTvv78DAQLvv78BAQLvv78CAQLvv78BAQXvv78BARTvv78CAQHvv78BATbvv78BASrvv78BXGIQ77+/AgEE77+/AQEB77+/AQEB77+/AQED77+/AQEB77+/CwEC77+/AQED77+/AgEiLCIBAVxi77+/AgFcbu+/vwEBB++/vwEBAe+/vwEBBe+/vwEBAe+/vwIBBO+/vwMBAu+/vwEBAu+/vwIBAu+/vwEBBe+/vwEBFO+/vwIBAe+/vwEBNu+/vwEBK++/vwFcYg/vv78CAQTvv78BAQHvv78BAQHvv78BAQPvv78BAQHvv78LAQLvv78BAQPvv78CASIsIgEBXGLvv78CAVxu77+/AQEH77+/AQEB77+/AQEF77+/AQEB77+/AgEE77+/AwEC77+/AQEC77+/AgEC77+/AQEF77+/AQEU77+/AgEB77+/AQE277+/AQE777+/AgEB77+/AVxiAu+/vwEBAe+/vwEBAe+/vwEBA++/vwEBAe+/vwsBAu+/vwEBA++/vwIBIiwiIiwiAQFcYu+/vwIBXG7vv78BAQfvv78BAQHvv78BAQXvv78BAQHvv78CAQTvv78DAQLvv78BAQLvv78CAQLvv78BAQXvv78BARTvv78CAQHvv78BATbvv78BATvvv78BAQXvv78BAQHvv78BAQFcYgEBA++/vwEBAe+/vwsBAu+/vwFcbgPvv78CASIsIsKLCwHvv79ACzDvv78BC0fvv78BCyIsIgEBXGLvv78CAVxu77+/AQEH77+/AQEB77+/AQEF77+/AQEB77+/AgEE77+/AwEC77+/AQEC77+/AgEC77+/AQEF77+/AQEU77+/AgEB77+/AQE277+/AQE777+/AQEF77+/AQEB77+/AQEBXGIBAQPvv78BAQHvv78LAQbvv78CASJdfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7REZBMjM3X2VvdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkEyMzdfZW90UyksREZBMjM3X2VvZjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkEyMzdfZW9mUyksREZBMjM3X21pbjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkEyMzdfbWluUyksREZBMjM3X21heDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocC5ERkEyMzdfbWF4UyksREZBMjM3X2FjY2VwdDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkEyMzdfYWNjZXB0UyksREZBMjM3X3NwZWNpYWw6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHAuREZBMjM3X3NwZWNpYWxTKSxERkEyMzdfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVtdLGIsYz1wLkRGQTIzN190cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKGI9MDtiPGM7YisrKWEucHVzaChkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkEyMzdfdHJhbnNpdGlvblNbYl0pKTtyZXR1cm4gYX0oKX0pLHAuREZBMjM3PWZ1bmN0aW9uKGEpe3RoaXMucmVjb2duaXplcj1hLHRoaXMuZGVjaXNpb25OdW1iZXI9MjM3LHRoaXMuZW90PXAuREZBMjM3X2VvdCx0aGlzLmVvZj1wLkRGQTIzN19lb2YsdGhpcy5taW49cC5ERkEyMzdfbWluLHRoaXMubWF4PXAuREZBMjM3X21heCx0aGlzLmFjY2VwdD1wLkRGQTIzN19hY2NlcHQsdGhpcy5zcGVjaWFsPXAuREZBMjM3X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXAuREZBMjM3X3RyYW5zaXRpb259LGQuYW50bHIubGFuZy5leHRlbmQocC5ERkEyMzcsZC5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMTk2NjoxOiBwX0h5YnJpZFtzdHJpY3QsIGFsbG93Q29uY2F0XSA6ICggcF9IeWJyaWRFeHByU2luZ2xlWyRzdHJpY3QsJGFsbG93Q29uY2F0XSB8IHBfU3RhdGVtZW50ICk7In0sZHVtbXk6bnVsbH0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHAse0RGQTI1M19lb3RTOiIL77+/IixERkEyNTNfZW9mUzoiAe+/vwIDAe+/vwUDAu+/vyIsREZBMjUzX21pblM6IgEQAhIB77+/BRIC77+/IixERkEyNTNfbWF4UzoiAcWUAsO+Ae+/vwXDvgLvv78iLERGQTI1M19hY2NlcHRTOiID77+/AQIF77+/AQEBAyIsREZBMjUzX3NwZWNpYWxTOiIE77+/AQIBAQEDAQQBXDAC77+/fT4iLERGQTI1M190cmFuc2l0aW9uUzpbIiADAQIvAwEBLgMBXGIBBQEDAQQEAwEGAQdDAwHvv78BAwHvv78CAwvvv78EAwXvv78EA1xm77+/AQMC77+/AgMC77+/AQMG77+/BgM777+/AQMiLCIDAwXvv78DAwHvv78BAwTvv78BAwLvv78CAwTvv78BAwLvv78BAwHvv78BAwPvv78BAwHvv78BAwHvv78CAwTvv78DAwLvv78BAwHvv78DAwLvv78BAwXvv78CAwfvv78CAwXvv78BAwTvv78CAwHvv78BAwTvv78BAwTvv78BAwPvv78CAwbvv78BAwXvv78BAwfvv78CAwTvv78BAwHvv78BAwfvv78BAwLvv78BAzvvv78DAwEJAe+/vwQDAe+/vwEDA++/vwEDAe+/vwsDAu+/vwEDA++/vwIDIiwiAwMF77+/AwMB77+/AQME77+/AQMC77+/AgME77+/AQMC77+/AQMB77+/AQMD77+/AQMB77+/AQMB77+/AgME77+/AwMC77+/AQMB77+/AwMC77+/AQMF77+/AgMH77+/AgMF77+/AQME77+/AgMB77+/AQME77+/AQME77+/AQMD77+/AgMG77+/AQMF77+/AQMH77+/AgME77+/AQMB77+/AQMH77+/AQMC77+/AQM777+/AwMBCQHvv78EAwHvv78BAwPvv78BAwHvv78LAwLvv78BAwPvv78CAyIsIiIsIgMDBe+/vwMDAe+/vwEDBO+/vwEDAu+/vwIDBO+/vwEDAu+/vwEDAe+/vwEDA++/vwEDAe+/vwEDAe+/vwIDBO+/vwMDAu+/vwEDAe+/vwMDAu+/vwEDAu+/vwFcbgLvv78CAwfvv78CAwXvv78BAwTvv78CAwHvv78BAwTvv78BAwTvv78BAwPvv78CAwbvv78BAwXvv78BAwfvv78CAwTvv78BAwHvv78BAwFcbgbvv78BAwLvv78BAzvvv78DAwLvv78EAwHvv78BAwPvv78BAwHvv78LAwLvv78BAwPvv78CAyIsIgMDBe+/vwMDAe+/vwEDBO+/vwEDAu+/vwIDBO+/vwEDAu+/vwEDAe+/vwEDA++/vwEDAe+/vwEDAe+/vwIDBO+/vwMDAu+/vwEDAe+/vwMDAu+/vwEDAu+/vwFcbgLvv78CAwfvv78CAwXvv78BAwTvv78CAwHvv78BAwTvv78BAwTvv78BAwPvv78CAwbvv78BAwXvv78BAwfvv78CAwTvv78BAwHvv78BAwFcbgbvv78BAwLvv78BAzvvv78DAwLvv78EAwHvv78BAwPvv78BAwHvv78LAwLvv78BAwPvv78CAyIsIgMDBe+/vwMDAe+/vwEDBO+/vwEDAu+/vwIDBO+/vwEDAu+/vwEDAe+/vwEDA++/vwEDAe+/vwEDAe+/vwIDBO+/vwMDAu+/vwEDAe+/vwMDAu+/vwEDAu+/vwFcbgLvv78CAwfvv78CAwXvv78BAwTvv78CAwHvv78BAwTvv78BAwTvv78BAwPvv78CAwbvv78BAwXvv78BAwfvv78CAwTvv78BAwHvv78BAwfvv78BAwLvv78BAzvvv78DAwLvv78EAwHvv78BAwPvv78BAwHvv78LAwLvv78BAwPvv78CAyIsIgMDBe+/vwMDAe+/vwEDBO+/vwEDAu+/vwIDBO+/vwEDAu+/vwEDAe+/vwEDA++/vwEDAe+/vwEDAe+/vwIDBO+/vwMDAu+/vwEDAe+/vwMDAu+/vwEDAu+/vwFcbgLvv78CAwfvv78CAwXvv78BAwTvv78CAwHvv78BAwTvv78BAwTvv78BAwPvv78CAwbvv78BAwXvv78BAwfvv78CAwTvv78BAwHvv78BAwbvv78BXG4BAwLvv78BAzvvv78DAwLvv78EAwHvv78BAwPvv78BAwHvv78LAwLvv78BAwPvv78CAyIsIgMDBe+/vwMDAe+/vwEDBO+/vwEDAu+/vwIDBO+/vwEDAu+/vwEDAe+/vwEDA++/vwEDAe+/vwEDAe+/vwIDBO+/vwMDAu+/vwEDAe+/vwMDAu+/vwEDBe+/vwIDB++/vwIDBe+/vwEDBO+/vwIDAe+/vwEDBO+/vwEDBO+/vwEDA++/vwIDBu+/vwEDBe+/vwEDB++/vwIDBO+/vwEDAe+/vwEDB++/vwEDAu+/vwEDO++/vwMDAVxuAe+/vwQDAe+/vwEDA++/vwEDAe+/vwsDAu+/vwEDA++/vwIDIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChwLHtERkEyNTNfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTI1M19lb3RTKSxERkEyNTNfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTI1M19lb2ZTKSxERkEyNTNfbWluOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTI1M19taW5TKSxERkEyNTNfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhwLkRGQTI1M19tYXhTKSxERkEyNTNfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTI1M19hY2NlcHRTKSxERkEyNTNfc3BlY2lhbDpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocC5ERkEyNTNfc3BlY2lhbFMpLERGQTI1M190cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPXAuREZBMjUzX3RyYW5zaXRpb25TLmxlbmd0aDtmb3IoYj0wO2I8YztiKyspYS5wdXNoKGQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhwLkRGQTI1M190cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSkscC5ERkEyNTM9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj0yNTMsdGhpcy5lb3Q9cC5ERkEyNTNfZW90LHRoaXMuZW9mPXAuREZBMjUzX2VvZix0aGlzLm1pbj1wLkRGQTI1M19taW4sdGhpcy5tYXg9cC5ERkEyNTNfbWF4LHRoaXMuYWNjZXB0PXAuREZBMjUzX2FjY2VwdCx0aGlzLnNwZWNpYWw9cC5ERkEyNTNfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249cC5ERkEyNTNfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChwLkRGQTI1MyxkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIyMTE4OjE6IHBfRXhwclNpbXBsZSA6ICggcF9RdWFudGlmaWVkRXhwciB8IHBfT3JFeHByIHwgey4uLn0/ID0+IHBnX1VwZGF0ZUV4cHIgKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGIsYyl7dmFyIGU9YixmPWZ1bmN0aW9uKGIsYyl7c3dpdGNoKGIpe2Nhc2UgMDp2YXIgZD1jLkxBKDEpLGU9Yy5pbmRleCgpO2MucmV3aW5kKCksYj0tMTtpZihkPT1tZSYmdGhpcy5sYyhtKSliPTEwO2Vsc2UgaWYoZD09YXx8ZD49eCYmZDw9enx8ZD49RiYmZDw9SHx8ZD09Snx8ZD09T3x8ZD49UiYmZDw9U3x8ZD09WHx8ZD09JHx8ZD09YWJ8fGQ9PWVifHxkPT1nYnx8ZD49aWImJmQ8PWpifHxkPj1vYiYmZDw9cWJ8fGQ9PXRifHxkPj12YiYmZDw9eGJ8fGQ9PUFifHxkPj1HYiYmZDw9SGJ8fGQ+PVBiJiZkPD1RYnx8ZD09V2J8fGQ+PV9iJiZkPD1hY3x8ZD09Y2N8fGQ9PWhjfHxkPT1tY3x8ZD49cWMmJmQ8PXJjfHxkPT15Y3x8ZD09RWN8fGQ+PU1jJiZkPD1OY3x8ZD09U2N8fGQ9PVVjfHxkPT1hZHx8ZD09ZGR8fGQ+PWplJiZkPD1sZXx8ZD49b2UmJmQ8PXJlfHxkPT10ZXx8ZD09eGV8fGQ+PXplJiZkPD1KZXx8ZD09TWV8fGQ+PVFlJiZkPD1SZSliPTM7Yy5zZWVrKGUpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAxOnZhciBmPWMuTEEoMSksZz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLGY9PWF8fGY+PXgmJmY8PXp8fGY+PUYmJmY8PUh8fGY9PUp8fGY9PU98fGY+PVImJmY8PVN8fGY9PVh8fGY9PSR8fGY9PWFifHxmPT1lYnx8Zj09Z2J8fGY+PWliJiZmPD1qYnx8Zj49b2ImJmY8PXFifHxmPT10Ynx8Zj49dmImJmY8PXhifHxmPT1BYnx8Zj49R2ImJmY8PUhifHxmPj1QYiYmZjw9UWJ8fGY9PVdifHxmPj1fYiYmZjw9YWN8fGY9PWNjfHxmPT1oY3x8Zj09bWN8fGY+PXFjJiZmPD1yY3x8Zj09eWN8fGY9PUVjfHxmPj1NYyYmZjw9TmN8fGY9PVNjfHxmPT1VY3x8Zj09YWR8fGY9PWRkfHxmPj1qZSYmZjw9bGV8fGY+PW9lJiZmPD1yZXx8Zj09dGV8fGY9PXhlfHxmPj16ZSYmZjw9SmV8fGY9PU1lfHxmPj1RZSYmZjw9UmU/Yj0zOihmPT1EYnx8Zj09VmMpJiZ0aGlzLmxjKG0pJiYoYj0xMCksYy5zZWVrKGcpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAyOnZhciBoPWMuTEEoMSksaT1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xLGg9PWF8fGg+PXgmJmg8PXp8fGg+PUYmJmg8PUh8fGg9PUp8fGg9PU98fGg+PVImJmg8PVN8fGg9PVh8fGg9PSR8fGg9PWFifHxoPT1lYnx8aD09Z2J8fGg+PWliJiZoPD1qYnx8aD49b2ImJmg8PXFifHxoPT10Ynx8aD49dmImJmg8PXhifHxoPT1BYnx8aD49R2ImJmg8PUhifHxoPj1QYiYmaDw9UWJ8fGg9PVdifHxoPj1fYiYmaDw9YWN8fGg9PWNjfHxoPT1oY3x8aD09bWN8fGg+PXFjJiZoPD1yY3x8aD09eWN8fGg9PUVjfHxoPj1NYyYmaDw9TmN8fGg9PVNjfHxoPT1VY3x8aD09YWR8fGg9PWRkfHxoPj1qZSYmaDw9bGV8fGg+PW9lJiZoPD1yZXx8aD09dGV8fGg9PXhlfHxoPj16ZSYmaDw9SmV8fGg9PU1lfHxoPj1RZSYmaDw9UmU/Yj0zOihoPT1EYnx8aD09VmMpJiZ0aGlzLmxjKG0pJiYoYj0xMCksYy5zZWVrKGkpO2lmKGI+PTApcmV0dXJuIGI7YnJlYWs7Y2FzZSAzOnZhciBqPWMuTEEoMSksaz1jLmluZGV4KCk7Yy5yZXdpbmQoKSxiPS0xO2lmKGo9PURiJiZ0aGlzLmxjKG0pKWI9MTA7ZWxzZSBpZihqPT1hfHxqPj14JiZqPD16fHxqPj1GJiZqPD1IfHxqPT1KfHxqPT1PfHxqPj1SJiZqPD1TfHxqPT1YfHxqPT0kfHxqPT1hYnx8aj09ZWJ8fGo9PWdifHxqPj1pYiYmajw9amJ8fGo+PW9iJiZqPD1xYnx8aj09dGJ8fGo+PXZiJiZqPD14Ynx8aj09QWJ8fGo+PUdiJiZqPD1IYnx8aj49UGImJmo8PVFifHxqPT1XYnx8aj49X2ImJmo8PWFjfHxqPT1jY3x8aj09aGN8fGo9PW1jfHxqPj1xYyYmajw9cmN8fGo9PXljfHxqPT1FY3x8aj49TWMmJmo8PU5jfHxqPT1TY3x8aj09VWN8fGo9PWFkfHxqPT1kZHx8aj49amUmJmo8PWxlfHxqPj1vZSYmajw9cmV8fGo9PXRlfHxqPT14ZXx8aj49emUmJmo8PUplfHxqPT1NZXx8aj49UWUmJmo8PVJlKWI9MztjLnNlZWsoayk7aWYoYj49MClyZXR1cm4gYjticmVhaztjYXNlIDQ6dmFyIGw9Yy5MQSgxKSxuPWMuaW5kZXgoKTtjLnJld2luZCgpLGI9LTEsbD09YXx8bD49eCYmbDw9enx8bD49RiYmbDw9SHx8bD09Snx8bD09T3x8bD49UiYmbDw9U3x8bD09WHx8bD09JHx8bD09YWJ8fGw9PWVifHxsPT1nYnx8bD49aWImJmw8PWpifHxsPj1vYiYmbDw9cWJ8fGw9PXRifHxsPj12YiYmbDw9eGJ8fGw9PUFifHxsPj1HYiYmbDw9SGJ8fGw+PVBiJiZsPD1RYnx8bD09V2J8fGw+PV9iJiZsPD1hY3x8bD09Y2N8fGw9PWhjfHxsPT1tY3x8bD49cWMmJmw8PXJjfHxsPT15Y3x8bD09RWN8fGw+PU1jJiZsPD1OY3x8bD09U2N8fGw9PVVjfHxsPT1hZHx8bD09ZGR8fGw+PWplJiZsPD1sZXx8bD49b2UmJmw8PXJlfHxsPT10ZXx8bD09eGV8fGw+PXplJiZsPD1KZXx8bD09TWV8fGw+PVFlJiZsPD1SZT9iPTM6KGw9PURifHxsPT1fYykmJnRoaXMubGMobSkmJihiPTEwKSxjLnNlZWsobik7aWYoYj49MClyZXR1cm4gYn19LmNhbGwodGhpcy5yZWNvZ25pemVyLGIsYyk7aWYoIWQuYW50bHIubGFuZy5pc1VuZGVmaW5lZChmKSlyZXR1cm4gZjtpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITAsLTE7dmFyIGc9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMjUzLGUsYyk7dGhyb3cgdGhpcy5lcnJvcihnKSxnfSxkdW1teTpudWxsfSksZC5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QocCx7dG9rZW5OYW1lczpbIjxpbnZhbGlkPiIsIjxFT1I+IiwiPERPV04+IiwiPFVQPiIsIkxfUXVvdEF0dHJDb250ZW50Q2hhciIsIkxfQXBvc0F0dHJDb250ZW50Q2hhciIsIkxfRWxlbWVudENvbnRlbnRDaGFyIiwiTF9DRGF0YVNlY3Rpb24iLCJMX1ByZWRlZmluZWRFbnRpdHlSZWYiLCJMX0NoYXJSZWYiLCJFU0NBUEVfTEJSQUNLRVQiLCJFU0NBUEVfUkJSQUNLRVQiLCJFU0NBUEVfQVBPUyIsIkVTQ0FQRV9RVU9UIiwiQ0RBVEFfU1RBUlQiLCJDREFUQV9FTkQiLCJBTkNFU1RPUiIsIkFOQ0VTVE9SX09SX1NFTEYiLCJBTkQiLCJBUyIsIkFTQ0VORElORyIsIkFUIiwiQVRUUklCVVRFIiwiQkFTRV9VUkkiLCJCT1VOREFSWV9TUEFDRSIsIkJZIiwiQ0FTRSIsIkNBU1QiLCJDQVNUQUJMRSIsIkNISUxEIiwiQ09MTEFUSU9OIiwiQ09NTUVOVCIsIkNPTlNUUlVDVElPTiIsIkNPUFlfTkFNRVNQQUNFUyIsIkRFQ0xBUkUiLCJERUZBVUxUIiwiREVTQ0VOREFOVCIsIkRFU0NFTkRBTlRfT1JfU0VMRiIsIkRFU0NFTkRJTkciLCJESVYiLCJET0NVTUVOVCIsIkRPQ1VNRU5UX05PREUiLCJFTEVNRU5UIiwiRUxTRSIsIkVNUFRZIiwiRU1QVFlfU0VRVUVOQ0UiLCJFTkNPRElORyIsIkVRIiwiRVZFUlkiLCJFWENFUFQiLCJFWFRFUk5BTCIsIkZPTExPV0lORyIsIkZPTExPV0lOR19TSUJMSU5HIiwiRk9SIiwiRlVOQ1RJT04iLCJHRSIsIkdSRUFURVNUIiwiR1QiLCJJRElWIiwiSUYiLCJJTVBPUlQiLCJJTiIsIklOSEVSSVQiLCJJTlNUQU5DRSIsIklOVEVSU0VDVCIsIklTIiwiSVRFTSIsIkxBWCIsIkxFIiwiTEVBU1QiLCJMRVQiLCJMVCIsIk1PRCIsIk1PRFVMRSIsIk5BTUVTUEFDRSIsIk5FIiwiTk9fSU5IRVJJVCIsIk5PX1BSRVNFUlZFIiwiTk9ERSIsIk9GIiwiT1BUSU9OIiwiT1IiLCJPUkRFUiIsIk9SREVSRUQiLCJPUkRFUklORyIsIlBBUkVOVCIsIlBSRUNFRElORyIsIlBSRUNFRElOR19TSUJMSU5HIiwiUFJFU0VSVkUiLCJQUk9DRVNTSU5HX0lOU1RSVUNUSU9OIiwiUkVUVVJOIiwiU0FUSVNGSUVTIiwiU0NIRU1BIiwiU0NIRU1BX0FUVFJJQlVURSIsIlNDSEVNQV9FTEVNRU5UIiwiU0VMRiIsIlNPTUUiLCJTVEFCTEUiLCJTVFJJQ1QiLCJTVFJJUCIsIlRFWFQiLCJUSEVOIiwiVE8iLCJUUkVBVCIsIlRZUEVTV0lUQ0giLCJVTklPTiIsIlVOT1JERVJFRCIsIlZBTElEQVRFIiwiVkFSSUFCTEUiLCJWRVJTSU9OIiwiV0hFUkUiLCJYUVVFUlkiLCJBTExPV0lORyIsIkNBVENIIiwiQ09OVEVYVCIsIkNPVU5UIiwiREVDSU1BTF9GT1JNQVQiLCJERUNJTUFMX1NFUEFSQVRPUiIsIkRJR0lUIiwiRU5EIiwiR1JPVVAiLCJHUk9VUElOR19TRVBBUkFUT1IiLCJJTkZJTklUWSIsIk1JTlVTX1NJR04iLCJOQU1FU1BBQ0VfTk9ERSIsIk5BTiIsIk5FWFQiLCJPTkxZIiwiUEFUVEVSTl9TRVBBUkFUT1IiLCJQRVJDRU5UIiwiUEVSX01JTExFIiwiUFJFVklPVVMiLCJTTElESU5HIiwiU1RBUlQiLCJTV0lUQ0giLCJUUlkiLCJUVU1CTElORyIsIlRZUEUiLCJXSEVOIiwiV0lORE9XIiwiWkVST19ESUdJVCIsIkFGVEVSIiwiQkVGT1JFIiwiQ09QWSIsIkRFTEVURSIsIkZJUlNUIiwiSU5TRVJUIiwiSU5UTyIsIkxBU1QiLCJNT0RJRlkiLCJOT0RFUyIsIlJFTkFNRSIsIlJFUExBQ0UiLCJSRVZBTElEQVRJT04iLCJTS0lQIiwiVVBEQVRJTkciLCJWQUxVRSIsIldJVEgiLCJBTEwiLCJBTlkiLCJDT05UQUlOUyIsIkNPTlRFTlQiLCJESUFDUklUSUNTIiwiRElGRkVSRU5UIiwiRElTVEFOQ0UiLCJFTlRJUkUiLCJFWEFDVExZIiwiRlJPTSIsIkZUX09QVElPTiIsIkZUQU5EIiwiRlROT1QiLCJGVE9SIiwiSU5TRU5TSVRJVkUiLCJMQU5HVUFHRSIsIkxFVkVMUyIsIkxPV0VSQ0FTRSIsIk1PU1QiLCJOTyIsIk5PVCIsIk9DQ1VSUyIsIlBBUkFHUkFQSCIsIlBBUkFHUkFQSFMiLCJQSFJBU0UiLCJSRUxBVElPTlNISVAiLCJTQU1FIiwiU0NPUkUiLCJTRU5TSVRJVkUiLCJTRU5URU5DRSIsIlNFTlRFTkNFUyIsIlNURU1NSU5HIiwiU1RPUCIsIlRIRVNBVVJVUyIsIlRJTUVTIiwiVVBQRVJDQVNFIiwiVVNJTkciLCJXRUlHSFQiLCJXSUxEQ0FSRFMiLCJXSVRIT1VUIiwiV09SRCIsIldPUkRTIiwiQlJFQUsiLCJDT05USU5VRSIsIkVYSVQiLCJMT09QIiwiUkVUVVJOSU5HIiwiV0hJTEUiLCJDSEVDSyIsIkNPTExFQ1RJT04iLCJDT05TVFJBSU5UIiwiRk9SRUFDSCIsIkZPUkVJR04iLCJJTkRFWCIsIklOVEVHUklUWSIsIktFWSIsIk9OIiwiVU5JUVVFIiwiQklOQVJZIiwiQU1QX0VSIiwiQVBPU19FUiIsIlFVT1RfRVIiLCJDT05DQVQiLCJMUEFSRU4iLCJSUEFSRU4iLCJET0xMQVIiLCJMQlJBQ0tFVCIsIlJCUkFDS0VUIiwiTFNRVUFSRSIsIlJTUVVBUkUiLCJFUVVBTCIsIkJJTkQiLCJOT1RFUVVBTCIsIkFOTl9QRVJDRU5UIiwiSEFTSCIsIkFNUCIsIkNPTU1BIiwiUVVFU1RJT04iLCJTVEFSIiwiUExVUyIsIk1JTlVTIiwiU01BTExFUiIsIkdSRUFURVIiLCJTTUFMTEVSRVEiLCJHUkVBVEVSRVEiLCJTTUFMTEVSX1NNQUxMRVIiLCJHUkVBVEVSX0dSRUFURVIiLCJTTEFTSCIsIlNMQVNIX1NMQVNIIiwiRE9UIiwiRE9UX0RPVCIsIkNPTE9OIiwiQ09MT05fQ09MT04iLCJFTVBUWV9DTE9TRV9UQUciLCJDTE9TRV9UQUciLCJTRU1JQ09MT04iLCJWQkFSIiwiUFJBR01BX1NUQVJUIiwiUFJBR01BX0VORCIsIlhNTF9DT01NRU5UX1NUQVJUIiwiWE1MX0NPTU1FTlRfRU5EIiwiUElfU1RBUlQiLCJQSV9FTkQiLCJBVFRSX1NJR04iLCJDSEFSUkVGX0RFQyIsIkNIQVJSRUZfSEVYIiwiQVBPUyIsIlFVT1QiLCJOQ05hbWVTdGFydENoYXIiLCJOQ05hbWVDaGFyIiwiTF9OQ05hbWUiLCJMZXR0ZXIiLCJIZXhMZXR0ZXIiLCJEaWdpdCIsIkRpZ2l0cyIsIlMiLCJTVSIsIkxfUHJhZ21hIiwiTF9EaXJDb21tZW50Q29uc3RydWN0b3IiLCJMX0RpclBJQ29uc3RydWN0b3IiLCJMX0ludGVnZXJMaXRlcmFsIiwiTF9EZWNpbWFsTGl0ZXJhbCIsIkxfRG91YmxlTGl0ZXJhbCIsIkxfQ29tbWVudCIsIkxfQW55Q2hhciIsIkxfUXVvdFN0cmluZ0xpdGVyYWxDaGFyIiwiTF9BcG9zU3RyaW5nTGl0ZXJhbENoYXIiLCJMaWJyYXJ5TW9kdWxlIiwiTWFpbk1vZHVsZSIsIlZlcnNpb25EZWNsIiwiVmVyc2lvbkRlY2xFbmNvZGluZyIsIlZlcnNpb25EZWNsVmVyc2lvbiIsIk1vZHVsZURlY2wiLCJQcm9sb2ciLCJEZWZhdWx0TmFtZXNwYWNlRGVjbHMiLCJEZWZhdWx0TmFtZXNwYWNlRGVjbCIsIlNldHRlcnMiLCJTZXR0ZXIiLCJOYW1lc3BhY2VEZWNscyIsIk5hbWVzcGFjZURlY2wiLCJJbXBvcnRzIiwiRlRPcHRpb25EZWNscyIsIlNjaGVtYUltcG9ydCIsIlNjaGVtYVByZWZpeCIsIk5hbWVzcGFjZU5hbWUiLCJEZWZhdWx0RWxlbWVudE5hbWVzcGFjZSIsIkF0SGludHMiLCJNb2R1bGVJbXBvcnQiLCJCYXNlVVJJRGVjbCIsIk9yZGVyZWREZWNscyIsIlZhckRlY2wiLCJWYXJUeXBlIiwiVmFyVmFsdWUiLCJWYXJEZWZhdWx0VmFsdWUiLCJWYXJWYXJpYWJsZURlY2wiLCJGdW5jdGlvbkRlY2wiLCJQYXJhbUxpc3QiLCJSZXR1cm5UeXBlIiwiT3B0aW9uRGVjbCIsIlR5cGVEZWNsYXJhdGlvbiIsIlBhcmFtIiwiRW5jbG9zZWRFeHByIiwiUXVlcnlCb2R5IiwiVW5hcnlFeHByIiwiRGlyRWxlbUNvbnN0cnVjdG9yIiwiRGlyQXR0cmlidXRlTGlzdCIsIkRpckF0dHJpYnV0ZVZhbHVlIiwiRGlyRWxlbUNvbnRlbnQiLCJDb21tb25Db250ZW50IiwiU2VxdWVuY2VUeXBlIiwiRW1wdHlTZXF1ZW5jZVRlc3QiLCJLaW5kVGVzdCIsIkl0ZW1UZXN0IiwiRnVuY3Rpb25UZXN0IiwiQXRvbWljVHlwZSIsIkF0b21pY09yVW5pb25UeXBlIiwiU3RyaW5nTGl0ZXJhbCIsIkVsZW1lbnRDb250ZW50Q2hhciIsIkF0dHJpYnV0ZVZhbHVlQ2hhciIsIlFOYW1lIiwiQmxvY2tFeHByIiwiQmluYXJ5VGVzdCIsIkVYUExJQ0lUTFkiXSxGT0xMT1dfcF9WZXJzaW9uRGVjbF9pbl9wX01vZHVsZTUwNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0xpYnJhcnlNb2R1bGVfaW5fcF9Nb2R1bGU1NDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMF0pLEZPTExPV19wX01haW5Nb2R1bGVfaW5fcF9Nb2R1bGU1NjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMF0pLEZPTExPV19FT0ZfaW5fcF9Nb2R1bGU1ODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19YUVVFUllfaW5fcF9WZXJzaW9uRGVjbDYxNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwxNjM4NCwwLDgxOTJdKSxGT0xMT1dfRU5DT0RJTkdfaW5fcF9WZXJzaW9uRGVjbDYyMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfVmVyc2lvbkRlY2w2Mjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1ZFUlNJT05faW5fcF9WZXJzaW9uRGVjbDY1MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfVmVyc2lvbkRlY2w2NTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMTYzODQsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19FTkNPRElOR19pbl9wX1ZlcnNpb25EZWNsNjYxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9WZXJzaW9uRGVjbDY2NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BfVmVyc2lvbkRlY2w2NzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Qcm9sb2dfaW5fcF9NYWluTW9kdWxlNzM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BtX1F1ZXJ5Qm9keV9pbl9wX01haW5Nb2R1bGU3NDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX01vZHVsZURlY2xfaW5fcF9MaWJyYXJ5TW9kdWxlNzk3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDI2ODQzNTQ2MF0pLEZPTExPV19wbV9Qcm9sb2dfaW5fcF9MaWJyYXJ5TW9kdWxlNzk5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTU9EVUxFX2luX3BfTW9kdWxlRGVjbDg1NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDEwMjQsMF0pLEZPTExPV19OQU1FU1BBQ0VfaW5fcF9Nb2R1bGVEZWNsODU5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3BfTW9kdWxlRGVjbDg2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxNl0pLEZPTExPV19FUVVBTF9pbl9wX01vZHVsZURlY2w4NjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX01vZHVsZURlY2w4Njc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX01vZHVsZURlY2w4Njk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbF9pbl9wbV9Qcm9sb2c5Mjg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMjY4NDM1NDYwXSksRk9MTE9XX3BfU2V0dGVyX2luX3BtX1Byb2xvZzkzNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwyNjg0MzU0NjBdKSxGT0xMT1dfcG1fTmFtZXNwYWNlRGVjbF9pbl9wbV9Qcm9sb2c5NDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMjY4NDM1NDYwXSksRk9MTE9XX3BfSW1wb3J0X2luX3BtX1Byb2xvZzk0NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwyNjg0MzU0NjBdKSxGT0xMT1dfcG1fRlRPcHRpb25EZWNsX2luX3BtX1Byb2xvZzk1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwyNjg0MzU0NjBdKSxGT0xMT1dfcGdfT3JkZXJlZERlY2xfaW5fcG1fUHJvbG9nOTU5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDRdKSxGT0xMT1dfcG1fQ29udGV4dEl0ZW1EZWNsX2luX3BnX09yZGVyZWREZWNsMTI3NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX0Fubm90YXRlZERlY2xfaW5fcGdfT3JkZXJlZERlY2wxMjg2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fT3B0aW9uRGVjbF9pbl9wZ19PcmRlcmVkRGVjbDEyOTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Cb3VuZGFyeVNwYWNlRGVjbF9pbl9wX1NldHRlcjEzMjg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9EZWZhdWx0Q29sbGF0aW9uRGVjbF9pbl9wX1NldHRlcjEzNDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9CYXNlVVJJRGVjbF9pbl9wX1NldHRlcjEzNTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Db25zdHJ1Y3Rpb25EZWNsX2luX3BfU2V0dGVyMTM2NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX09yZGVyaW5nTW9kZURlY2xfaW5fcF9TZXR0ZXIxMzc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fRW1wdHlPcmRlckRlY2xfaW5fcF9TZXR0ZXIxMzg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fUmV2YWxpZGF0aW9uRGVjbF9pbl9wX1NldHRlcjE0MDM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Db3B5TmFtZXNwYWNlc0RlY2xfaW5fcF9TZXR0ZXIxNDE1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fRGVjaW1hbEZvcm1hdERlY2xfaW5fcF9TZXR0ZXIxNDI3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDTEFSRV9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0NTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzE2Nzc3MjE2LDBdKSxGT0xMT1dfQk9VTkRBUllfU1BBQ0VfaW5fcG1fQm91bmRhcnlTcGFjZURlY2wxNDY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTY3NzcyMTYsOF0pLEZPTExPV19QUkVTRVJWRV9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0NzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NUUklQX2luX3BtX0JvdW5kYXJ5U3BhY2VEZWNsMTQ4NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX0JvdW5kYXJ5U3BhY2VEZWNsMTQ5MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTE5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wbV9EZWZhdWx0Q29sbGF0aW9uRGVjbDE1MjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzEwNzM3NDE4MjQsMF0pLEZPTExPV19DT0xMQVRJT05faW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTMxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTM1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTM3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDTEFSRV9pbl9wbV9CYXNlVVJJRGVjbDE1NzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzgzODg2MDgsMF0pLEZPTExPV19CQVNFX1VSSV9pbl9wbV9CYXNlVVJJRGVjbDE1Nzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9CYXNlVVJJRGVjbDE1ODU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9CYXNlVVJJRGVjbDE1ODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX0NvbnN0cnVjdGlvbkRlY2wxNjQwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDFdKSxGT0xMT1dfQ09OU1RSVUNUSU9OX2luX3BtX0NvbnN0cnVjdGlvbkRlY2wxNjQ2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTY3NzcyMTYsOF0pLEZPTExPV19TVFJJUF9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY1NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfUFJFU0VSVkVfaW5fcG1fQ29uc3RydWN0aW9uRGVjbDE2NjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY2ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE2OTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfT1JERVJJTkdfaW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE3MDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw1MjQyODgsMTAyNF0pLEZPTExPV19PUkRFUkVEX2luX3BtX09yZGVyaW5nTW9kZURlY2wxNzExOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19VTk9SREVSRURfaW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE3MTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9PcmRlcmluZ01vZGVEZWNsMTcyNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzUyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3NTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwyNjIxNDQsMF0pLEZPTExPV19PUkRFUl9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3NjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNDA5Nl0pLEZPTExPV19FTVBUWV9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3NzA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMTY3NzcyMTYsMzIsMF0pLEZPTExPV19HUkVBVEVTVF9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3Nzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX0xFQVNUX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc4NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc5MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgyMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyXSksRk9MTE9XX0NPUFlfTkFNRVNQQUNFU19pbl9wbV9Db3B5TmFtZXNwYWNlc0RlY2wxODI2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTY3ODU0MDgsMF0pLEZPTExPV19wX1ByZXNlcnZlTW9kZV9pbl9wbV9Db3B5TmFtZXNwYWNlc0RlY2wxODMwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgzMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwxMDczNzQxODI0LDQwOTYsMF0pLEZPTExPV19wX0luaGVyaXRNb2RlX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Db3B5TmFtZXNwYWNlc0RlY2wxODM2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUFJFU0VSVkVfaW5fcF9QcmVzZXJ2ZU1vZGUxODY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTk9fUFJFU0VSVkVfaW5fcF9QcmVzZXJ2ZU1vZGUxODcxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSU5IRVJJVF9pbl9wX0luaGVyaXRNb2RlMTkwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05PX0lOSEVSSVRfaW5fcF9Jbmhlcml0TW9kZTE5MDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk0ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCw4LDAsMTA0ODU3Nl0pLEZPTExPV19ERUNJTUFMX0ZPUk1BVF9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5NTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5NjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDc3ODA0MzM5Miw0MTAzLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfREVGQVVMVF9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5Njg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDEwNDg1NzZdKSxGT0xMT1dfREVDSU1BTF9GT1JNQVRfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTc0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCw3NzgwNDMzOTIsNDEwMywwLDAsNTM2ODcwOTEyXSksRk9MTE9XX3BfREZQcm9wZXJ0eU5hbWVfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTgxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDE2XSksRk9MTE9XX0VRVUFMX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk4MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk4NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsNzc4MDQzMzkyLDQxMDMsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDSU1BTF9TRVBBUkFUT1JfaW5fcF9ERlByb3BlcnR5TmFtZTIwMTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19HUk9VUElOR19TRVBBUkFUT1JfaW5fcF9ERlByb3BlcnR5TmFtZTIwMjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19JTkZJTklUWV9pbl9wX0RGUHJvcGVydHlOYW1lMjAzMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX01JTlVTX1NJR05faW5fcF9ERlByb3BlcnR5TmFtZTIwMzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OQU5faW5fcF9ERlByb3BlcnR5TmFtZTIwNDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19QRVJDRU5UX2luX3BfREZQcm9wZXJ0eU5hbWUyMDQ4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUEVSX01JTExFX2luX3BfREZQcm9wZXJ0eU5hbWUyMDU0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfWkVST19ESUdJVF9pbl9wX0RGUHJvcGVydHlOYW1lMjA2MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RJR0lUX2luX3BfREZQcm9wZXJ0eU5hbWUyMDY2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUEFUVEVSTl9TRVBBUkFUT1JfaW5fcF9ERlByb3BlcnR5TmFtZTIwNzI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9TY2hlbWFJbXBvcnRfaW5fcF9JbXBvcnQyMTAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fTW9kdWxlSW1wb3J0X2luX3BfSW1wb3J0MjEwNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lNUE9SVF9pbl9wbV9TY2hlbWFJbXBvcnQyMTQxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMjY4NDM1NDU2LDBdKSxGT0xMT1dfU0NIRU1BX2luX3BtX1NjaGVtYUltcG9ydDIxNDc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsOCwxMDI0LDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU2NoZW1hUHJlZml4X2luX3BtX1NjaGVtYUltcG9ydDIxNTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9TY2hlbWFJbXBvcnQyMTU4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19BVF9pbl9wbV9TY2hlbWFJbXBvcnQyMTYzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fU2NoZW1hSW1wb3J0MjE2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzE5MzZdKSxGT0xMT1dfQ09NTUFfaW5fcG1fU2NoZW1hSW1wb3J0MjE3MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX1NjaGVtYUltcG9ydDIxNzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcxOTM2XSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9TY2hlbWFJbXBvcnQyMTgyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTkFNRVNQQUNFX2luX3BfU2NoZW1hUHJlZml4MjI1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wX1NjaGVtYVByZWZpeDIyNTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMTZdKSxGT0xMT1dfRVFVQUxfaW5fcF9TY2hlbWFQcmVmaXgyMjYwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVGQVVMVF9pbl9wX1NjaGVtYVByZWZpeDIyOTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMTAyNF0pLEZPTExPV19FTEVNRU5UX2luX3BfU2NoZW1hUHJlZml4MjMwNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDEwMjQsMF0pLEZPTExPV19OQU1FU1BBQ0VfaW5fcF9TY2hlbWFQcmVmaXgyMzExOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSU1QT1JUX2luX3BtX01vZHVsZUltcG9ydDIzNjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw1MTIsMF0pLEZPTExPV19NT0RVTEVfaW5fcG1fTW9kdWxlSW1wb3J0MjM2NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDEwMjQsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfTkFNRVNQQUNFX2luX3BtX01vZHVsZUltcG9ydDIzNzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcG1fTW9kdWxlSW1wb3J0MjM4MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxNl0pLEZPTExPV19FUVVBTF9pbl9wbV9Nb2R1bGVJbXBvcnQyMzgyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fTW9kdWxlSW1wb3J0MjM4ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1MiwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfQVRfaW5fcG1fTW9kdWxlSW1wb3J0MjM5MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX01vZHVsZUltcG9ydDIzOTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcxOTM2XSksRk9MTE9XX0NPTU1BX2luX3BtX01vZHVsZUltcG9ydDI0MDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9Nb2R1bGVJbXBvcnQyNDA2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MTkzNl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fTW9kdWxlSW1wb3J0MjQxMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fTmFtZXNwYWNlRGVjbDI0ODE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMDI0LDBdKSxGT0xMT1dfTkFNRVNQQUNFX2luX3BtX05hbWVzcGFjZURlY2wyNDg3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3BtX05hbWVzcGFjZURlY2wyNDkzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDE2XSksRk9MTE9XX0VRVUFMX2luX3BtX05hbWVzcGFjZURlY2wyNDk1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fTmFtZXNwYWNlRGVjbDI0OTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9OYW1lc3BhY2VEZWNsMjUwMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTU4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1NjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNDE5NTMyOF0pLEZPTExPV19FTEVNRU5UX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU3MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDEwMjQsMF0pLEZPTExPV19GVU5DVElPTl9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1Nzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMDI0LDBdKSxGT0xMT1dfTkFNRVNQQUNFX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU4NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU4ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU5MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQW5ub3RhdGVkRGVjbDI2MTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNDE5NDMwNCwwLDQwOTYsMTM0MjE3NzI4LDAsMTYwNTYzMiwxMjhdKSxGT0xMT1dfcF9Bbm5vdGF0aW9uX2luX3BtX0Fubm90YXRlZERlY2wyNjIyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDQxOTQzMDQsMCw0MDk2LDEzNDIxNzcyOCwwLDE2MDU2MzIsMTI4XSksRk9MTE9XX3BnX0Fubm90YXRlZERlY2xfaW5fcG1fQW5ub3RhdGVkRGVjbDI2MjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Bbm5vdGF0ZWREZWNsMjYyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVmFyRGVjbF9pbl9wZ19Bbm5vdGF0ZWREZWNsMjY1MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX0Z1bmN0aW9uRGVjbF9pbl9wZ19Bbm5vdGF0ZWREZWNsMjY2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ29sbGVjdGlvbkRlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI2Nzg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0luZGV4RGVjbF9pbl9wZ19Bbm5vdGF0ZWREZWNsMjY5MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSUNEZWNsX2luX3BnX0Fubm90YXRlZERlY2wyNzA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQU5OX1BFUkNFTlRfaW5fcF9Bbm5vdGF0aW9uMjczNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfQW5ub3RhdGlvbjI3MzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0Fubm90YXRpb24yNzM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX0xpdGVyYWxfaW5fcF9Bbm5vdGF0aW9uMjc0MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfQW5ub3RhdGlvbjI3NDQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfTGl0ZXJhbF9pbl9wX0Fubm90YXRpb24yNzQ2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfUlBBUkVOX2luX3BfQW5ub3RhdGlvbjI3NTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19WQVJJQUJMRV9pbl9wX1ZhckRlY2wyNzgwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfVmFyRGVjbDI3ODY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX1ZhckRlY2wyNzkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMjYyMTQ0LDAsMCwwLDAsMCwzMl0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1ZhckRlY2wyNzk2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDI2MjE0NCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfQklORF9pbl9wX1ZhckRlY2wyODAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyVmFsdWVfaW5fcF9WYXJEZWNsMjgwNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0VYVEVSTkFMX2luX3BfVmFyRGVjbDI4MTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfQklORF9pbl9wX1ZhckRlY2wyODE4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyRGVmYXVsdFZhbHVlX2luX3BfVmFyRGVjbDI4MjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9WYXJWYWx1ZTI5MDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9WYXJEZWZhdWx0VmFsdWUyOTI4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDTEFSRV9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTU3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwyNjIxNDRdKSxGT0xMT1dfQ09OVEVYVF9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTYzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNCwwXSksRk9MTE9XX0lURU1faW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDI2MjE0NCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfQVNfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk3NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsODA1MzA2MzY3LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0l0ZW1UeXBlX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5ODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMjYyMTQ0LDAsMCwwLDAsMCwzMl0pLEZPTExPV19CSU5EX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5ODY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJWYWx1ZV9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19FWFRFUk5BTF9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTk2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDk0NF0pLEZPTExPV19CSU5EX2luX3BtX0NvbnRleHRJdGVtRGVjbDMwMDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJEZWZhdWx0VmFsdWVfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMzAwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX0NvbnRleHRJdGVtRGVjbDMwMDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19VUERBVElOR19pbl9wbV9GdW5jdGlvbkRlY2wzMDQyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDQxOTQzMDRdKSxGT0xMT1dfRlVOQ1RJT05faW5fcG1fRnVuY3Rpb25EZWNsMzA1MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wZ19GUU5hbWVfaW5fcG1fRnVuY3Rpb25EZWNsMzA1NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BtX0Z1bmN0aW9uRGVjbDMwNTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDMyMjEyMjU0NzIsMF0pLEZPTExPV19wX1BhcmFtTGlzdF9pbl9wbV9GdW5jdGlvbkRlY2wzMDYyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BtX0Z1bmN0aW9uRGVjbDMwNjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwyNjIxNDQsMCwwLDAsMCwwLDFdKSxGT0xMT1dfQVNfaW5fcG1fRnVuY3Rpb25EZWNsMzA3MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsODA1MzA2MzY3LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wbV9GdW5jdGlvbkRlY2wzMDc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDI2MjE0NCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wbV9GdW5jdGlvbkRlY2wzMDgxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9GdW5jdGlvbkRlY2wzMDg1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcG1fRnVuY3Rpb25EZWNsMzA4NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0VYVEVSTkFMX2luX3BtX0Z1bmN0aW9uRGVjbDMwOTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1BhcmFtX2luX3BfUGFyYW1MaXN0MzE3MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfUGFyYW1MaXN0MzE3MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX3BfUGFyYW1faW5fcF9QYXJhbUxpc3QzMTc3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfRE9MTEFSX2luX3BfUGFyYW0zMjM3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9QYXJhbTMyNDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI5MCwwXSksRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfUGFyYW0zMjQ3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FbmNsb3NlZEV4cHJfaW5fcG1fRnVuY3Rpb25Cb2R5MzMwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfRW5jbG9zZWRFeHByMzMzMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9FbmNsb3NlZEV4cHIzMzMyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9FbmNsb3NlZEV4cHIzMzM1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDTEFSRV9pbl9wbV9PcHRpb25EZWNsMzM4NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDY1NTM2LDBdKSxGT0xMT1dfT1BUSU9OX2luX3BtX09wdGlvbkRlY2wzMzkzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcG1fT3B0aW9uRGVjbDMzOTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9PcHRpb25EZWNsMzM5OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX09wdGlvbkRlY2wzNDAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Qcm9ncmFtX2luX3BtX1F1ZXJ5Qm9keTM0MzA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJfaW5fcG1fUXVlcnlCb2R5MzQ0MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0V4cHIzNDc4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9FeHByMzQ5NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9FeHByMzQ5NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX3BfRkxXT1JIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzU2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSWZIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzU5MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3dpdGNoSHlicmlkX2luX3BfRXhwclNpbmdsZTM2MTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1R5cGVzd2l0Y2hIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzY0MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVHJ5Q2F0Y2hIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzY2ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXhwclNpbXBsZV9pbl9wX0V4cHJTaW5nbGUzNjgxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Jbml0aWFsQ2xhdXNlX2luX3BfRkxXT1JIeWJyaWQzNzA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDIwOTcxNTIsNjczNzEwNzIsMTczMTc4OTBdKSxGT0xMT1dfcF9JbnRlcm1lZGlhdGVDbGF1c2VfaW5fcF9GTFdPUkh5YnJpZDM3MTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMjA5NzE1Miw2NzM3MTA3MiwxNzMxNzg5MF0pLEZPTExPV19wX1JldHVybkh5YnJpZF9pbl9wX0ZMV09SSHlicmlkMzcxMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRm9yQ2xhdXNlX2luX3BfSW5pdGlhbENsYXVzZTM3NDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0xldENsYXVzZV9pbl9wX0luaXRpYWxDbGF1c2UzNzQ0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9XaW5kb3dDbGF1c2VfaW5fcF9Jbml0aWFsQ2xhdXNlMzc0ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSW5pdGlhbENsYXVzZV9pbl9wX0ludGVybWVkaWF0ZUNsYXVzZTM3NzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1doZXJlQ2xhdXNlX2luX3BfSW50ZXJtZWRpYXRlQ2xhdXNlMzc3ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfR3JvdXBCeUNsYXVzZV9pbl9wX0ludGVybWVkaWF0ZUNsYXVzZTM3ODI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX09yZGVyQnlDbGF1c2VfaW5fcF9JbnRlcm1lZGlhdGVDbGF1c2UzNzg2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Db3VudENsYXVzZV9pbl9wX0ludGVybWVkaWF0ZUNsYXVzZTM3OTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1JhbmdlRXhwcl9pbl9wX1N0cmluZ0NvbmNhdEV4cHIzODExOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwyNjg0MzU0NTYsMF0pLEZPTExPV19DT05DQVRfaW5fcF9TdHJpbmdDb25jYXRFeHByMzgxNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1JhbmdlRXhwcl9pbl9wX1N0cmluZ0NvbmNhdEV4cHIzODIxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwyNjg0MzU0NTYsMF0pLEZPTExPV19GT1JfaW5fcF9Gb3JDbGF1c2UzODQ4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfcF9Gb3JCaW5kaW5nX2luX3BfRm9yQ2xhdXNlMzg1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfRm9yQ2xhdXNlMzg1NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX3BfRm9yQmluZGluZ19pbl9wX0ZvckNsYXVzZTM4NTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19ET0xMQVJfaW5fcF9Gb3JCaW5kaW5nMzg4NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9Gb3JCaW5kaW5nMzg5MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMjYyMTQ0MCw1MzY4NzA5MTIsMCw2NTUzNiwwLDMzNTU0NDMyXSksRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfRm9yQmluZGluZzM4OTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsNTM2ODcwOTEyLDAsNjU1MzYsMCwzMzU1NDQzMl0pLEZPTExPV19wX0FsbG93aW5nRW1wdHlfaW5fcF9Gb3JCaW5kaW5nMzg5ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1Miw1MzY4NzA5MTIsMCwwLDAsMzM1NTQ0MzJdKSxGT0xMT1dfcF9Qb3NpdGlvbmFsVmFyX2luX3BfRm9yQmluZGluZzM5MDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNTM2ODcwOTEyLDAsMCwwLDMzNTU0NDMyXSksRk9MTE9XX3BfRlRTY29yZVZhcl9pbl9wX0ZvckJpbmRpbmczOTA0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDUzNjg3MDkxMl0pLEZPTExPV19JTl9pbl9wX0ZvckJpbmRpbmczOTA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0ZvckJpbmRpbmczOTEzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQUxMT1dJTkdfaW5fcF9BbGxvd2luZ0VtcHR5Mzk0MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCw0MDk2XSksRk9MTE9XX0VNUFRZX2luX3BfQWxsb3dpbmdFbXB0eTM5NDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX1Bvc2l0aW9uYWxWYXIzOTc4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfUG9zaXRpb25hbFZhcjM5ODQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfUG9zaXRpb25hbFZhcjM5ODg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MRVRfaW5fcF9MZXRDbGF1c2U0MDE4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMzM1NTQ0MzIsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX3BfTGV0QmluZGluZ19pbl9wX0xldENsYXVzZTQwMjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX0xldENsYXVzZTQwMjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwzMzU1NDQzMiwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfcF9MZXRCaW5kaW5nX2luX3BfTGV0Q2xhdXNlNDAyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0RPTExBUl9pbl9wX0xldEJpbmRpbmc0MDYxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0xldEJpbmRpbmc0MDY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9MZXRCaW5kaW5nNDA2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwzMl0pLEZPTExPV19wX0ZUU2NvcmVWYXJfaW5fcF9MZXRCaW5kaW5nNDA3NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwzMl0pLEZPTExPV19CSU5EX2luX3BfTGV0QmluZGluZzQwNzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfTGV0QmluZGluZzQwODE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GT1JfaW5fcF9XaW5kb3dDbGF1c2U0MTEwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDI3MiwwXSksRk9MTE9XX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2VfaW5fcF9XaW5kb3dDbGF1c2U0MTE1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9TbGlkaW5nV2luZG93Q2xhdXNlX2luX3BfV2luZG93Q2xhdXNlNDExOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RVTUJMSU5HX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTU2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDIwNDgsMF0pLEZPTExPV19XSU5ET1dfaW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxNjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxNjg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTcyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsNTM2ODcwOTEyXSksRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDUzNjg3MDkxMl0pLEZPTExPV19JTl9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE4MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxODU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMzIsMF0pLEZPTExPV19wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwyMTU1ODcyMjU2XSksRk9MTE9XX3BfV2luZG93RW5kQ29uZGl0aW9uX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0xJRElOR19pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjE5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDIwNDgsMF0pLEZPTExPV19XSU5ET1dfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDIyNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjMxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjM1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsNTM2ODcwOTEyXSksRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyMzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNTM2ODcwOTEyXSksRk9MTE9XX0lOX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNDQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMzIsMF0pLEZPTExPV19wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDIxNTU4NzIyNTZdKSxGT0xMT1dfcF9XaW5kb3dFbmRDb25kaXRpb25faW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDI1MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NUQVJUX2luX3BfV2luZG93U3RhcnRDb25kaXRpb240MjgyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDAsMCwxMDczNzQxODI0LDEwMzIsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfcF9XaW5kb3dWYXJzX2luX3BfV2luZG93U3RhcnRDb25kaXRpb240Mjg2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDEwMjQsMF0pLEZPTExPV19XSEVOX2luX3BfV2luZG93U3RhcnRDb25kaXRpb240MjkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI5NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX09OTFlfaW5fcF9XaW5kb3dFbmRDb25kaXRpb240MzI0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCw4Mzg4NjA4XSksRk9MTE9XX0VORF9pbl9wX1dpbmRvd0VuZENvbmRpdGlvbjQzMzI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsMCwwLDEwNzM3NDE4MjQsMTAzMiwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19wX1dpbmRvd1ZhcnNfaW5fcF9XaW5kb3dFbmRDb25kaXRpb240MzM2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDEwMjQsMF0pLEZPTExPV19XSEVOX2luX3BfV2luZG93RW5kQ29uZGl0aW9uNDM0MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9XaW5kb3dFbmRDb25kaXRpb240MzQ0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfV2luZG93VmFyczQzNzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9DdXJyZW50SXRlbV9pbl9wX1dpbmRvd1ZhcnM0Mzc4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTU0LDAsMCwxMDczNzQxODI0LDgsMF0pLEZPTExPV19wX1Bvc2l0aW9uYWxWYXJfaW5fcF9XaW5kb3dWYXJzNDM4NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMTA3Mzc0MTgyNCw4LDBdKSxGT0xMT1dfUFJFVklPVVNfaW5fcF9XaW5kb3dWYXJzNDM5MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1dpbmRvd1ZhcnM0Mzk0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUHJldmlvdXNJdGVtX2luX3BfV2luZG93VmFyczQzOTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDEwNzM3NDE4MjRdKSxGT0xMT1dfTkVYVF9pbl9wX1dpbmRvd1ZhcnM0NDAzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfV2luZG93VmFyczQ0MDc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OZXh0SXRlbV9pbl9wX1dpbmRvd1ZhcnM0NDA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0N1cnJlbnRJdGVtNDQzNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9QcmV2aW91c0l0ZW00NDYzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX05leHRJdGVtNDQ4OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NPVU5UX2luX3BfQ291bnRDbGF1c2U0NTE3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfQ291bnRDbGF1c2U0NTIzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0NvdW50Q2xhdXNlNDUyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1dIRVJFX2luX3BfV2hlcmVDbGF1c2U0NTY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1doZXJlQ2xhdXNlNDU2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0dST1VQX2luX3BfR3JvdXBCeUNsYXVzZTQ1OTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzMzNTU0NDMyLDBdKSxGT0xMT1dfQllfaW5fcF9Hcm91cEJ5Q2xhdXNlNDYwNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX3BfR3JvdXBpbmdTcGVjTGlzdF9pbl9wX0dyb3VwQnlDbGF1c2U0NjA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Hcm91cGluZ1NwZWNfaW5fcF9Hcm91cGluZ1NwZWNMaXN0NDYzNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfR3JvdXBpbmdTcGVjTGlzdDQ2Mzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19wX0dyb3VwaW5nU3BlY19pbl9wX0dyb3VwaW5nU3BlY0xpc3Q0NjM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfRE9MTEFSX2luX3BfR3JvdXBpbmdTcGVjNDY2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9Hcm91cGluZ1NwZWM0NjczOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDczNzQxODI2LDBdKSxGT0xMT1dfQ09MTEFUSU9OX2luX3BfR3JvdXBpbmdTcGVjNDY4MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfR3JvdXBpbmdTcGVjNDY4NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX09SREVSX2luX3BfT3JkZXJCeUNsYXVzZTQ3MTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzMzNTU0NDMyLDBdKSxGT0xMT1dfQllfaW5fcF9PcmRlckJ5Q2xhdXNlNDcyMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19TVEFCTEVfaW5fcF9PcmRlckJ5Q2xhdXNlNDcyODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDI2MjE0NCwwXSksRk9MTE9XX09SREVSX2luX3BfT3JkZXJCeUNsYXVzZTQ3MzI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzMzNTU0NDMyLDBdKSxGT0xMT1dfQllfaW5fcF9PcmRlckJ5Q2xhdXNlNDczNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX09yZGVyU3BlY0xpc3RfaW5fcF9PcmRlckJ5Q2xhdXNlNDc0MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfT3JkZXJTcGVjX2luX3BfT3JkZXJTcGVjTGlzdDQ3Njg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX09yZGVyU3BlY0xpc3Q0NzcxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfT3JkZXJTcGVjX2luX3BfT3JkZXJTcGVjTGlzdDQ3NzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9PcmRlclNwZWM0ODAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDc0NzkwNDAwLDQxNjBdKSxGT0xMT1dfcF9PcmRlck1vZGlmaWVyX2luX3BfT3JkZXJTcGVjNDgwNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FTQ0VORElOR19pbl9wX09yZGVyTW9kaWZpZXI0ODMzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDczNzQxODI2LDQwOTZdKSxGT0xMT1dfREVTQ0VORElOR19pbl9wX09yZGVyTW9kaWZpZXI0ODM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDczNzQxODI2LDQwOTZdKSxGT0xMT1dfRU1QVFlfaW5fcF9PcmRlck1vZGlmaWVyNDg0NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwxNjc3NzIxNiwzMiwwXSksRk9MTE9XX0dSRUFURVNUX2luX3BfT3JkZXJNb2RpZmllcjQ4NTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzEwNzM3NDE4MjYsMF0pLEZPTExPV19MRUFTVF9pbl9wX09yZGVyTW9kaWZpZXI0ODU3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDczNzQxODI2LDBdKSxGT0xMT1dfQ09MTEFUSU9OX2luX3BfT3JkZXJNb2RpZmllcjQ4NjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX09yZGVyTW9kaWZpZXI0ODY3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfUmV0dXJuSHlicmlkNDkwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1JldHVybkh5YnJpZDQ5MDQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TT01FX2luX3BfUXVhbnRpZmllZEV4cHI0OTM0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRVZFUllfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NDc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfUXVhbnRpZmllZEV4cHI0OTUxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsNTM2ODcwOTEyXSksRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfUXVhbnRpZmllZEV4cHI0OTU1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDUzNjg3MDkxMl0pLEZPTExPV19JTl9pbl9wX1F1YW50aWZpZWRFeHByNDk2MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMzQyMTc3MjgsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfUXVhbnRpZmllZEV4cHI0OTY4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfUXVhbnRpZmllZEV4cHI0OTcyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCw1MzY4NzA5MTJdKSxGT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9RdWFudGlmaWVkRXhwcjQ5ODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNTM2ODcwOTEyXSksRk9MTE9XX0lOX2luX3BfUXVhbnRpZmllZEV4cHI0OTg1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1F1YW50aWZpZWRFeHByNDk4OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDEzNDIxNzcyOCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfU0FUSVNGSUVTX2luX3BfUXVhbnRpZmllZEV4cHI0OTk2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1F1YW50aWZpZWRFeHByNTAwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NXSVRDSF9pbl9wX1N3aXRjaEh5YnJpZDUwMzA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1N3aXRjaEh5YnJpZDUwMzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfU3dpdGNoSHlicmlkNTAzNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1N3aXRjaEh5YnJpZDUwMzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzY3MTA4ODY0LDBdKSxGT0xMT1dfcF9Td2l0Y2hDYXNlSHlicmlkX2luX3BfU3dpdGNoSHlicmlkNTA0MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsOF0pLEZPTExPV19ERUZBVUxUX2luX3BfU3dpdGNoSHlicmlkNTA0NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDY3MTA4ODY0LDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfU3dpdGNoSHlicmlkNTA1MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1N3aXRjaEh5YnJpZDUwNTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DQVNFX2luX3BfU3dpdGNoQ2FzZUh5YnJpZDUwODg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9Td2l0Y2hDYXNlT3BlcmFuZF9pbl9wX1N3aXRjaENhc2VIeWJyaWQ1MDkyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs2NzEwODg2NCwwLDY3MTA4ODY0LDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfU3dpdGNoQ2FzZUh5YnJpZDUwOTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9Td2l0Y2hDYXNlSHlicmlkNTEwMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1N3aXRjaENhc2VPcGVyYW5kNTEyOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RZUEVTV0lUQ0hfaW5fcF9UeXBlc3dpdGNoSHlicmlkNTE1OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9UeXBlc3dpdGNoSHlicmlkNTE2ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsMF0pLEZPTExPV19wX0Nhc2VIeWJyaWRfaW5fcF9UeXBlc3dpdGNoSHlicmlkNTE3MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsOF0pLEZPTExPV19ERUZBVUxUX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw2NzEwODg2NCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxODM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw2NzEwODg2NCwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTk1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxOTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DQVNFX2luX3BfQ2FzZUh5YnJpZDUyMjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX0RPTExBUl9pbl9wX0Nhc2VIeWJyaWQ1MjM2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0Nhc2VIeWJyaWQ1MjQwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMF0pLEZPTExPV19BU19pbl9wX0Nhc2VIeWJyaWQ1MjQ2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZVVuaW9uX2luX3BfQ2FzZUh5YnJpZDUyNTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw2NzEwODg2NCwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX0Nhc2VIeWJyaWQ1MjU2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0Nhc2VIeWJyaWQ1MjYwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9TZXF1ZW5jZVR5cGVVbmlvbjUyODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNF0pLEZPTExPV19WQkFSX2luX3BfU2VxdWVuY2VUeXBlVW5pb241MjkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSw4MDUzMDYzNjcsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfU2VxdWVuY2VUeXBlVW5pb241MjkyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwNzM3NDE4MjRdKSxGT0xMT1dfSUZfaW5fcF9JZkh5YnJpZDUzMjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0lmSHlicmlkNTMyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9JZkh5YnJpZDUzMjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9JZkh5YnJpZDUzMzI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDMyXSksRk9MTE9XX1RIRU5faW5fcF9JZkh5YnJpZDUzMzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9JZkh5YnJpZDUzNDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMjA0OF0pLEZPTExPV19FTFNFX2luX3BfSWZIeWJyaWQ1MzQ1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfSWZIeWJyaWQ1MzQ5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9UcnlDbGF1c2VfaW5fcF9UcnlDYXRjaEV4cHI1Mzc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwxMzEwNzJdKSxGT0xMT1dfcF9DYXRjaENsYXVzZV9pbl9wX1RyeUNhdGNoRXhwcjUzNzg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDEzMTA3Ml0pLEZPTExPV19UUllfaW5fcF9UcnlDbGF1c2U1NDA3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9UcnlDbGF1c2U1NDExOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVHJ5VGFyZ2V0RXhwcl9pbl9wX1RyeUNsYXVzZTU0MTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX1RyeUNsYXVzZTU0MTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9UcnlUYXJnZXRFeHByNTQ0MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NBVENIX2luX3BfQ2F0Y2hDbGF1c2U1NDcwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMTY3ODEzMTMsMjkzNjUwMjQsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9DYXRjaEVycm9yTGlzdF9pbl9wX0NhdGNoQ2xhdXNlNTQ3NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfQ2F0Y2hDbGF1c2U1NDc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX0NhdGNoQ2xhdXNlNTQ3ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfQ2F0Y2hDbGF1c2U1NDgxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9OYW1lVGVzdF9pbl9wX0NhdGNoRXJyb3JMaXN0NTUwNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDczNzQxODI0XSksRk9MTE9XX1ZCQVJfaW5fcF9DYXRjaEVycm9yTGlzdDU1MTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxNjc4MTMxMiwyOTM2NTAyNCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05hbWVUZXN0X2luX3BfQ2F0Y2hFcnJvckxpc3Q1NTEyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwNzM3NDE4MjRdKSxGT0xMT1dfcF9BbmRFeHByX2luX3BfT3JFeHByNTU1NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDEzMTA3MiwwXSksRk9MTE9XX09SX2luX3BfT3JFeHByNTU2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FuZEV4cHJfaW5fcF9PckV4cHI1NTY3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMTMxMDcyLDBdKSxGT0xMT1dfcF9Db21wYXJpc29uRXhwcl9pbl9wX0FuZEV4cHI1NTk2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyNjIxNDYsMF0pLEZPTExPV19BTkRfaW5fcF9BbmRFeHByNTYwMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0NvbXBhcmlzb25FeHByX2luX3BfQW5kRXhwcjU2MDY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzI2MjE0NiwwXSksRk9MTE9XX3BfRlRDb250YWluc0V4cHJfaW5fcF9Db21wYXJpc29uRXhwcjU2MzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsNDE5NzU4MDgsMjE5NCwwLDAsMCwwLDIwNjQ0NjRdKSxGT0xMT1dfcF9WYWx1ZUNvbXBfaW5fcF9Db21wYXJpc29uRXhwcjU2NDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9HZW5lcmFsQ29tcF9pbl9wX0NvbXBhcmlzb25FeHByNTY0NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05vZGVDb21wX2luX3BfQ29tcGFyaXNvbkV4cHI1NjQ5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRlRDb250YWluc0V4cHJfaW5fcF9Db21wYXJpc29uRXhwcjU2NTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX1JhbmdlRXhwcjU2ODE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDY0XSksRk9MTE9XX1RPX2luX3BfUmFuZ2VFeHByNTY4NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX1JhbmdlRXhwcjU2OTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX011bHRpcGxpY2F0aXZlRXhwcl9pbl9wX0FkZGl0aXZlRXhwcjU3MjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMjQ1NzZdKSxGT0xMT1dfUExVU19pbl9wX0FkZGl0aXZlRXhwcjU3Mjc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfTUlOVVNfaW5fcF9BZGRpdGl2ZUV4cHI1NzM1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTXVsdGlwbGljYXRpdmVFeHByX2luX3BfQWRkaXRpdmVFeHByNTc0MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwyNDU3Nl0pLEZPTExPV19wX1VuaW9uRXhwcl9pbl9wX011bHRpcGxpY2F0aXZlRXhwcjU3Njk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsNjcxMDg5OTIsMjU2LDAsMCwwLDAsNDA5Nl0pLEZPTExPV19TVEFSX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTc3NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19ESVZfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1Nzg1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX0lESVZfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1NzkxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX01PRF9pbl9wX011bHRpcGxpY2F0aXZlRXhwcjU3OTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9VbmlvbkV4cHJfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1ODAzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDY3MTA4OTkyLDI1NiwwLDAsMCwwLDQwOTZdKSxGT0xMT1dfcF9JbnRlcnNlY3RFeGNlcHRFeHByX2luX3BfVW5pb25FeHByNTgzMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsNTEyLDAsMCwwLDEwNzM3NDE4MjRdKSxGT0xMT1dfVU5JT05faW5fcF9VbmlvbkV4cHI1ODM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX1ZCQVJfaW5fcF9VbmlvbkV4cHI1ODQ1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSW50ZXJzZWN0RXhjZXB0RXhwcl9pbl9wX1VuaW9uRXhwcjU4NDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDUxMiwwLDAsMCwxMDczNzQxODI0XSksRk9MTE9XX3BfSW5zdGFuY2VvZkV4cHJfaW5fcF9JbnRlcnNlY3RFeGNlcHRFeHByNTg3NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwxMzEwNzIsMSwwXSksRk9MTE9XX0lOVEVSU0VDVF9pbl9wX0ludGVyc2VjdEV4Y2VwdEV4cHI1ODg0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX0VYQ0VQVF9pbl9wX0ludGVyc2VjdEV4Y2VwdEV4cHI1ODkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSW5zdGFuY2VvZkV4cHJfaW5fcF9JbnRlcnNlY3RFeGNlcHRFeHByNTg5NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwxMzEwNzIsMSwwXSksRk9MTE9XX3BfVHJlYXRFeHByX2luX3BfSW5zdGFuY2VvZkV4cHI1OTI0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDIxNDc0ODM2NDhdKSxGT0xMT1dfSU5TVEFOQ0VfaW5fcF9JbnN0YW5jZW9mRXhwcjU5MzA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwzMjc2OCwwXSksRk9MTE9XX09GX2luX3BfSW5zdGFuY2VvZkV4cHI1OTM2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSw4MDUzMDYzNjcsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfSW5zdGFuY2VvZkV4cHI1OTQwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9DYXN0YWJsZUV4cHJfaW5fcF9UcmVhdEV4cHI1OTY4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwxMjhdKSxGT0xMT1dfVFJFQVRfaW5fcF9UcmVhdEV4cHI1OTc0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMF0pLEZPTExPV19BU19pbl9wX1RyZWF0RXhwcjU5ODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDgwNTMwNjM2NywwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9UcmVhdEV4cHI1OTg0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9DYXN0RXhwcl9pbl9wX0Nhc3RhYmxlRXhwcjYwMjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzI2ODQzNTQ1OCwwXSksRk9MTE9XX0NBU1RBQkxFX2luX3BfQ2FzdGFibGVFeHByNjAyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDBdKSxGT0xMT1dfQVNfaW5fcF9DYXN0YWJsZUV4cHI2MDMzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2luZ2xlVHlwZV9pbl9wX0Nhc3RhYmxlRXhwcjYwMzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1VuYXJ5RXhwcl9pbl9wX0Nhc3RFeHByNjA3NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMTM0MjE3NzMwLDBdKSxGT0xMT1dfQ0FTVF9pbl9wX0Nhc3RFeHByNjA4MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDBdKSxGT0xMT1dfQVNfaW5fcF9DYXN0RXhwcjYwODY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TaW5nbGVUeXBlX2luX3BfQ2FzdEV4cHI2MDkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUExVU19pbl9wX1VuYXJ5RXhwcjYxMjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfTUlOVVNfaW5fcF9VbmFyeUV4cHI2MTMwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFsdWVFeHByX2luX3BfVW5hcnlFeHByNjEzNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVmFsaWRhdGVFeHByX2luX3BfVmFsdWVFeHByNjIwNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9WYWx1ZUV4cHI2MjE3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHRlbnNpb25FeHByX2luX3BfVmFsdWVFeHByNjIyOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0VRVUFMX2luX3BfR2VuZXJhbENvbXA2MjU4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTk9URVFVQUxfaW5fcF9HZW5lcmFsQ29tcDYyNjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TTUFMTEVSX2luX3BfR2VuZXJhbENvbXA2MjcwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU01BTExFUkVRX2luX3BfR2VuZXJhbENvbXA2Mjc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfR1JFQVRFUl9pbl9wX0dlbmVyYWxDb21wNjI4MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0dSRUFURVJFUV9pbl9wX0dlbmVyYWxDb21wNjI4ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0VRX2luX3BfVmFsdWVDb21wNjMyMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05FX2luX3BfVmFsdWVDb21wNjMyNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xUX2luX3BfVmFsdWVDb21wNjMzMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xFX2luX3BfVmFsdWVDb21wNjMzODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0dUX2luX3BfVmFsdWVDb21wNjM0NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0dFX2luX3BfVmFsdWVDb21wNjM1MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lTX2luX3BfTm9kZUNvbXA2MzgxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU01BTExFUl9TTUFMTEVSX2luX3BfTm9kZUNvbXA2Mzg3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfR1JFQVRFUl9HUkVBVEVSX2luX3BfTm9kZUNvbXA2MzkxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVkFMSURBVEVfaW5fcF9WYWxpZGF0ZUV4cHI2NDE5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsOCw0LDUxMiwwLDAsMV0pLEZPTExPV19wX1ZhbGlkYXRpb25Nb2RlX2luX3BfVmFsaWRhdGVFeHByNjQyNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX1RZUEVfaW5fcF9WYWxpZGF0ZUV4cHI2NDMxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVHlwZU5hbWVfaW5fcF9WYWxpZGF0ZUV4cHI2NDM1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9WYWxpZGF0ZUV4cHI2NDQwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX1ZhbGlkYXRlRXhwcjY0NDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX1ZhbGlkYXRlRXhwcjY0NDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MQVhfaW5fcF9WYWxpZGF0aW9uTW9kZTY0NzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TVFJJQ1RfaW5fcF9WYWxpZGF0aW9uTW9kZTY0ODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX1ByYWdtYV9pbl9wX0V4dGVuc2lvbkV4cHI2NTA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDEsNTI0Mjg4LDBdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9FeHRlbnNpb25FeHByNjUxMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMywzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9FeHRlbnNpb25FeHByNjUxNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfRXh0ZW5zaW9uRXhwcjY1MTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TTEFTSF9pbl9wX1BhdGhFeHByNjU2MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1JlbGF0aXZlUGF0aEV4cHJfaW5fcF9QYXRoRXhwcjY1NjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TTEFTSF9pbl9wX1BhdGhFeHByNjU3NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NMQVNIX1NMQVNIX2luX3BfUGF0aEV4cHI2NTg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNDk0MTQ1LDMyNTEwNzUyLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUmVsYXRpdmVQYXRoRXhwcl9pbl9wX1BhdGhFeHByNjU5MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUmVsYXRpdmVQYXRoRXhwcl9pbl9wX1BhdGhFeHByNjYwMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3RlcEV4cHJfaW5fcF9SZWxhdGl2ZVBhdGhFeHByNjYzMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCw2MjkxNDU2XSksRk9MTE9XX3NldF9pbl9wX1JlbGF0aXZlUGF0aEV4cHI2NjMzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNDk0MTQ1LDMyNTEwNzUyLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RlcEV4cHJfaW5fcF9SZWxhdGl2ZVBhdGhFeHByNjY0MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCw2MjkxNDU2XSksRk9MTE9XX3BfUG9zdGZpeEV4cHJfaW5fcF9TdGVwRXhwcjY2OTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2ODA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BeGlzU3RlcF9pbl9wX1N0ZXBFeHByNjgyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUG9zdGZpeEV4cHJfaW5fcF9TdGVwRXhwcjY4NDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2ODY2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BeGlzU3RlcF9pbl9wX1N0ZXBFeHByNjg3ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUmV2ZXJzZVN0ZXBfaW5fcF9BeGlzU3RlcDY5MDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNF0pLEZPTExPV19wX0ZvcndhcmRTdGVwX2luX3BfQXhpc1N0ZXA2OTA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDRdKSxGT0xMT1dfcF9QcmVkaWNhdGVMaXN0X2luX3BfQXhpc1N0ZXA2OTEyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Gb3J3YXJkQXhpc19pbl9wX0ZvcndhcmRTdGVwNjkzODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDE2NzgxMzEyLDI5MzY1MDI0LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTm9kZVRlc3RfaW5fcF9Gb3J3YXJkU3RlcDY5NDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0FiYnJldkZvcndhcmRTdGVwX2luX3BfRm9yd2FyZFN0ZXA2OTUyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ0hJTERfaW5fcF9Gb3J3YXJkQXhpczY5Nzg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczY5ODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERVNDRU5EQU5UX2luX3BfRm9yd2FyZEF4aXM2OTkyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM2OTk0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVRUUklCVVRFX2luX3BfRm9yd2FyZEF4aXM3MDA2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM3MDA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0VMRl9pbl9wX0ZvcndhcmRBeGlzNzAyMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzAyMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFU0NFTkRBTlRfT1JfU0VMRl9pbl9wX0ZvcndhcmRBeGlzNzAzNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzAzNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0ZPTExPV0lOR19TSUJMSU5HX2luX3BfRm9yd2FyZEF4aXM3MDQ4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM3MDUwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRk9MTE9XSU5HX2luX3BfRm9yd2FyZEF4aXM3MDYyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM3MDY0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVRUUl9TSUdOX2luX3BfQWJicmV2Rm9yd2FyZFN0ZXA3MDkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMTY3ODEzMTIsMjkzNjUwMjQsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9Ob2RlVGVzdF9pbl9wX0FiYnJldkZvcndhcmRTdGVwNzA5MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUmV2ZXJzZUF4aXNfaW5fcF9SZXZlcnNlU3RlcDcxMTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxNjc4MTMxMiwyOTM2NTAyNCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05vZGVUZXN0X2luX3BfUmV2ZXJzZVN0ZXA3MTIxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BYmJyZXZSZXZlcnNlU3RlcF9pbl9wX1JldmVyc2VTdGVwNzEzMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BBUkVOVF9pbl9wX1JldmVyc2VBeGlzNzE1OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX1JldmVyc2VBeGlzNzE2MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FOQ0VTVE9SX2luX3BfUmV2ZXJzZUF4aXM3MTczOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MTc1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUFJFQ0VESU5HX1NJQkxJTkdfaW5fcF9SZXZlcnNlQXhpczcxODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfQ09MT05fQ09MT05faW5fcF9SZXZlcnNlQXhpczcxODk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19QUkVDRURJTkdfaW5fcF9SZXZlcnNlQXhpczcyMDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfQ09MT05fQ09MT05faW5fcF9SZXZlcnNlQXhpczcyMDM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BTkNFU1RPUl9PUl9TRUxGX2luX3BfUmV2ZXJzZUF4aXM3MjE1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MjE3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRE9UX0RPVF9pbl9wX0FiYnJldlJldmVyc2VTdGVwNzI0MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfS2luZFRlc3RfaW5fcF9Ob2RlVGVzdDcyNjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX05hbWVUZXN0X2luX3BfTm9kZVRlc3Q3MjczOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9XaWxkY2FyZF9pbl9wX05hbWVUZXN0NzMwNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9OYW1lVGVzdDczMjY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfTmFtZVRlc3Q3MzQ0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU1RBUl9pbl9wX1dpbGRjYXJkNzM3NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwzMzU1NDQzMl0pLEZPTExPV19DT0xPTl9pbl9wX1dpbGRjYXJkNzM3NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wX1dpbGRjYXJkNzM3OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3BfV2lsZGNhcmQ3MzkzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDMzNTU0NDMyXSksRk9MTE9XX0NPTE9OX2luX3BfV2lsZGNhcmQ3Mzk1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDQwOTZdKSxGT0xMT1dfU1RBUl9pbl9wX1dpbGRjYXJkNzM5NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX1dpbGRjYXJkNzQwOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwzMzU1NDQzMl0pLEZPTExPV19DT0xPTl9pbl9wX1dpbGRjYXJkNzQxMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw0MDk2XSksRk9MTE9XX1NUQVJfaW5fcF9XaWxkY2FyZDc0MTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1ByaW1hcnlFeHByX2luX3BfUG9zdGZpeEV4cHI3NDUxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDRdKSxGT0xMT1dfcF9QcmVkaWNhdGVfaW5fcF9Qb3N0Zml4RXhwcjc0NTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsNF0pLEZPTExPV19MUEFSRU5faW5fcF9Bcmd1bWVudExpc3Q3NDk1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MDI2NTMxODM5LDMxNTIwNzY5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQXJndW1lbnRfaW5fcF9Bcmd1bWVudExpc3Q3NDk4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9Bcmd1bWVudExpc3Q3NTAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTIwNzY5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQXJndW1lbnRfaW5fcF9Bcmd1bWVudExpc3Q3NTAzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfUlBBUkVOX2luX3BfQXJndW1lbnRMaXN0NzUwOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUHJlZGljYXRlX2luX3BfUHJlZGljYXRlTGlzdDc1MzU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsNF0pLEZPTExPV19MU1FVQVJFX2luX3BfUHJlZGljYXRlNzU2MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9QcmVkaWNhdGU3NTY0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDhdKSxGT0xMT1dfUlNRVUFSRV9pbl9wX1ByZWRpY2F0ZTc1Njc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1BhcmVudGhlc2l6ZWRFeHByX2luX3BfUHJpbWFyeUV4cHI3NjAwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9MaXRlcmFsX2luX3BfUHJpbWFyeUV4cHI3NjEyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9WYXJSZWZfaW5fcF9QcmltYXJ5RXhwcjc2MjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0NvbnRleHRJdGVtRXhwcl9pbl9wX1ByaW1hcnlFeHByNzYzNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRnVuY3Rpb25DYWxsX2luX3BfUHJpbWFyeUV4cHI3NjQ4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9PcmRlcmVkRXhwcl9pbl9wX1ByaW1hcnlFeHByNzY2MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVW5vcmRlcmVkRXhwcl9pbl9wX1ByaW1hcnlFeHByNzY3MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ29uc3RydWN0b3JfaW5fcF9QcmltYXJ5RXhwcjc2ODQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0Jsb2NrRXhwcl9pbl9wX1ByaW1hcnlFeHByNzY5ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTnVtZXJpY0xpdGVyYWxfaW5fcF9MaXRlcmFsNzcyNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0xpdGVyYWw3NzI4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX051bWVyaWNMaXRlcmFsNzc1NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfRGVjaW1hbExpdGVyYWxfaW5fcF9OdW1lcmljTGl0ZXJhbDc3NjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX0RvdWJsZUxpdGVyYWxfaW5fcF9OdW1lcmljTGl0ZXJhbDc3NzI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9WYXJSZWY3ODEwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1ZhclJlZjc4MTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfVmFyTmFtZTc4NDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9QYXJlbnRoZXNpemVkRXhwcjc4Njg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQwMjY1MzE4MzksMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfUGFyZW50aGVzaXplZEV4cHI3ODcwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfUGFyZW50aGVzaXplZEV4cHI3ODc0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRE9UX2luX3BfQ29udGV4dEl0ZW1FeHByNzkwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX09SREVSRURfaW5fcF9PcmRlcmVkRXhwcjc5Mjg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX09yZGVyZWRFeHByNzkzMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9PcmRlcmVkRXhwcjc5MzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX09yZGVyZWRFeHByNzkzNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1VOT1JERVJFRF9pbl9wX1Vub3JkZXJlZEV4cHI3OTY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9Vbm9yZGVyZWRFeHByNzk2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9Vbm9yZGVyZWRFeHByNzk3MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfVW5vcmRlcmVkRXhwcjc5NzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wZ19GUU5hbWVfaW5fcF9GdW5jdGlvbkNhbGw4MDAzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19wX0FyZ3VtZW50TGlzdF9pbl9wX0Z1bmN0aW9uQ2FsbDgwMDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Bcmd1bWVudDgwMzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0FyZ3VtZW50UGxhY2Vob2xkZXJfaW5fcF9Bcmd1bWVudDgwMzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19RVUVTVElPTl9pbl9wX0FyZ3VtZW50UGxhY2Vob2xkZXI4MDY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9EaXJlY3RDb25zdHJ1Y3Rvcl9pbl9wX0NvbnN0cnVjdG9yODA5MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcl9pbl9wX0NvbnN0cnVjdG9yODEwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRGlyRWxlbUNvbnN0cnVjdG9yX2luX3BfRGlyZWN0Q29uc3RydWN0b3I4MTI5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9EaXJDb21tZW50Q29uc3RydWN0b3JfaW5fcF9EaXJlY3RDb25zdHJ1Y3RvcjgxNDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0RpclBJQ29uc3RydWN0b3JfaW5fcF9EaXJlY3RDb25zdHJ1Y3RvcjgxNTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TTUFMTEVSX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODE4MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODE5NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxMzQyODMyNjQsMTMxMDcyLDBdKSxGT0xMT1dfcF9EaXJBdHRyaWJ1dGVMaXN0X2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIwMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxMzQyODMyNjRdKSxGT0xMT1dfRU1QVFlfQ0xPU0VfVEFHX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIxNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0dSRUFURVJfaW5fcF9EaXJFbGVtQ29uc3RydWN0b3I4MjIwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0MDMyLDAsMCwwLDAsMCwwLDI2ODQ2ODIyNSwzMTQ1NzI4LDBdKSxGT0xMT1dfcG1fRGlyRWxlbUNvbnRlbnRfaW5fcF9EaXJFbGVtQ29uc3RydWN0b3I4MjIyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0MDMyLDAsMCwwLDAsMCwwLDI2ODQ2ODIyNSwzMTQ1NzI4LDBdKSxGT0xMT1dfQ0xPU0VfVEFHX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIyNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIyOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NTUzNiwxMzEwNzIsMF0pLEZPTExPV19TX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIzMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NTUzNl0pLEZPTExPV19HUkVBVEVSX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIzNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMxMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2Miw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsMTM1MTY4LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMxODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxNiwxMzEwNzIsMF0pLEZPTExPV19TX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMTZdKSxGT0xMT1dfRVFVQUxfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMyNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDEzMTg0MCwwXSksRk9MTE9XX1NfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDEzMTg0MCwwXSksRk9MTE9XX3BfRGlyQXR0cmlidXRlVmFsdWVfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMzMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwwLDEzMTA3MiwwXSksRk9MTE9XX1FVT1RfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTgzNjY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzEyMDQ4LDAsMCwwLDAsMCwwLDEsNzY4LDBdKSxGT0xMT1dfRVNDQVBFX1FVT1RfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTgzNzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzEyMDQ4LDAsMCwwLDAsMCwwLDEsNzY4LDBdKSxGT0xMT1dfQVBPU19pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODM3OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMTIwNDgsMCwwLDAsMCwwLDAsMSw3NjgsMF0pLEZPTExPV19wX1F1b3RBdHRyVmFsdWVDb250ZW50X2luX3BfRGlyQXR0cmlidXRlVmFsdWU4MzgzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMjA0OCwwLDAsMCwwLDAsMCwxLDc2OCwwXSksRk9MTE9XX1FVT1RfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTgzODk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BUE9TX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDM0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs3OTY4LDAsMCwwLDAsMCwwLDEsNzY4LDBdKSxGT0xMT1dfRVNDQVBFX0FQT1NfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTg0NDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzc5NjgsMCwwLDAsMCwwLDAsMSw3NjgsMF0pLEZPTExPV19RVU9UX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDQ3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs3OTY4LDAsMCwwLDAsMCwwLDEsNzY4LDBdKSxGT0xMT1dfcF9BcG9zQXR0clZhbHVlQ29udGVudF9pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODQ1MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNzk2OCwwLDAsMCwwLDAsMCwxLDc2OCwwXSksRk9MTE9XX0FQT1NfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTg0NTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1F1b3RBdHRyQ29udGVudENoYXJfaW5fcF9RdW90QXR0clZhbHVlQ29udGVudDg1MTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Db21tb25Db250ZW50X2luX3BfUXVvdEF0dHJWYWx1ZUNvbnRlbnQ4NTIxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BcG9zQXR0ckNvbnRlbnRDaGFyX2luX3BfQXBvc0F0dHJWYWx1ZUNvbnRlbnQ4NTQ5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tbW9uQ29udGVudF9pbl9wX0Fwb3NBdHRyVmFsdWVDb250ZW50ODU1NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRGlyZWN0Q29uc3RydWN0b3JfaW5fcG1fRGlyRWxlbUNvbnRlbnQ4NTgxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9DRGF0YVNlY3Rpb25faW5fcG1fRGlyRWxlbUNvbnRlbnQ4NTkzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tbW9uQ29udGVudF9pbl9wbV9EaXJFbGVtQ29udGVudDg2MDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0VsZW1lbnRDb250ZW50Q2hhcl9pbl9wbV9EaXJFbGVtQ29udGVudDg2MTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX1ByZWRlZmluZWRFbnRpdHlSZWZfaW5fcG1fQ29tbW9uQ29udGVudDg2NDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX0NoYXJSZWZfaW5fcG1fQ29tbW9uQ29udGVudDg2NTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FU0NBUEVfTEJSQUNLRVRfaW5fcG1fQ29tbW9uQ29udGVudDg2NzE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FU0NBUEVfUkJSQUNLRVRfaW5fcG1fQ29tbW9uQ29udGVudDg2ODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wZ19FbmNsb3NlZEV4cHJYbWxfaW5fcG1fQ29tbW9uQ29udGVudDg3MDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MQlJBQ0tFVF9pbl9wZ19FbmNsb3NlZEV4cHJYbWw4NzMzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wZ19FbmNsb3NlZEV4cHJYbWw4NzQ5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcGdfRW5jbG9zZWRFeHByWG1sODc2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfRGlyQ29tbWVudENvbnN0cnVjdG9yX2luX3BfRGlyQ29tbWVudENvbnN0cnVjdG9yODc5NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfRGlyUElDb25zdHJ1Y3Rvcl9pbl9wX0RpclBJQ29uc3RydWN0b3I4ODMwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9DRGF0YVNlY3Rpb25faW5fcF9DRGF0YVNlY3Rpb244ODY3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tcERvY0NvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5MDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Db21wRWxlbUNvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5MTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Db21wQXR0ckNvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5MjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTM3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Db21wVGV4dENvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5NDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5NjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Db21wUElDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTczOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Db21wQmluYXJ5Q29uc3RydWN0b3JfaW5fcF9Db21wdXRlZENvbnN0cnVjdG9yODk4ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RPQ1VNRU5UX2luX3BtX0NvbXBEb2NDb25zdHJ1Y3RvcjkwMTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wRG9jQ29uc3RydWN0b3I5MDIxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db21wRG9jQ29uc3RydWN0b3I5MDIzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcERvY0NvbnN0cnVjdG9yOTAyNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0VMRU1FTlRfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwNjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA2NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDcxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA3MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcG1fQ29udGVudEV4cHJfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwODI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA4NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db250ZW50RXhwcjkxMTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVFRSSUJVVEVfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE0NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTUwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTU1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTYxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OQU1FU1BBQ0VfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MTkxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMSw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUHJlZml4X2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTE5NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTIwMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1ByZWZpeEV4cHJfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjAzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjA1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIzLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVVJJRXhwcl9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wX1ByZWZpeDkyNDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9QcmVmaXhFeHByOTI2NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX1VSSUV4cHI5MjkzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVEVYVF9pbl9wX0NvbXBUZXh0Q29uc3RydWN0b3I5MzIyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9Db21wVGV4dENvbnN0cnVjdG9yOTMyNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9Db21wVGV4dENvbnN0cnVjdG9yOTMyODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfQ29tcFRleHRDb25zdHJ1Y3RvcjkzMzE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19CSU5BUllfaW5fcF9Db21wQmluYXJ5Q29uc3RydWN0b3I5MzU5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9Db21wQmluYXJ5Q29uc3RydWN0b3I5MzYzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX0NvbXBCaW5hcnlDb25zdHJ1Y3RvcjkzNjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0NvbXBCaW5hcnlDb25zdHJ1Y3RvcjkzNjg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DT01NRU5UX2luX3BtX0NvbXBDb21tZW50Q29uc3RydWN0b3I5Mzk3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcjk0MDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BtX0NvbXBDb21tZW50Q29uc3RydWN0b3I5NDAzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcjk0MDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQzNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDEsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0Mzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NDQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ0NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ0OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ1MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcG1fQ29tcFBJQ29uc3RydWN0b3I5NDU1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcFBJQ29uc3RydWN0b3I5NDU3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BdG9taWNPclVuaW9uVHlwZV9pbl9wX1NpbmdsZVR5cGU5NTAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDIwNDhdKSxGT0xMT1dfUVVFU1RJT05faW5fcF9TaW5nbGVUeXBlOTUwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FTX2luX3BfVHlwZURlY2xhcmF0aW9uOTUzMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsODA1MzA2MzY3LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX1R5cGVEZWNsYXJhdGlvbjk1Mzg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FTVBUWV9TRVFVRU5DRV9pbl9wX1NlcXVlbmNlVHlwZTk1OTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1NlcXVlbmNlVHlwZTk1OTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9TZXF1ZW5jZVR5cGU5NjAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9JdGVtVHlwZV9pbl9wX1NlcXVlbmNlVHlwZTk2NTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTQzMzZdKSxGT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3BfU2VxdWVuY2VUeXBlOTY2MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3NldF9pbl9wX09jY3VycmVuY2VJbmRpY2F0b3IwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9LaW5kVGVzdF9pbl9wX0l0ZW1UeXBlOTc2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0JJTkFSWV9pbl9wX0l0ZW1UeXBlOTgwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfSXRlbVR5cGU5ODA1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfSXRlbVR5cGU5ODA3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSVRFTV9pbl9wX0l0ZW1UeXBlOTg0OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfSXRlbVR5cGU5ODUxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfSXRlbVR5cGU5ODUzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BdG9taWNPclVuaW9uVHlwZV9pbl9wX0l0ZW1UeXBlOTg5NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUGFyZW50aGVzaXplZEl0ZW1UeXBlX2luX3BfSXRlbVR5cGU5OTA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0F0b21pY09yVW5pb25UeXBlOTkzNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRG9jdW1lbnRUZXN0X2luX3BfS2luZFRlc3Q5OTg1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FbGVtZW50VGVzdF9pbl9wX0tpbmRUZXN0OTk5NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQXR0cmlidXRlVGVzdF9pbl9wX0tpbmRUZXN0MTAwMDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1NjaGVtYUVsZW1lbnRUZXN0X2luX3BfS2luZFRlc3QxMDAyMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU2NoZW1hQXR0cmlidXRlVGVzdF9pbl9wX0tpbmRUZXN0MTAwMzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1BJVGVzdF9pbl9wX0tpbmRUZXN0MTAwNDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0NvbW1lbnRUZXN0X2luX3BfS2luZFRlc3QxMDA1NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVGV4dFRlc3RfaW5fcF9LaW5kVGVzdDEwMDY5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9OYW1lc3BhY2VOb2RlVGVzdF9pbl9wX0tpbmRUZXN0MTAwODE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0FueUtpbmRUZXN0X2luX3BfS2luZFRlc3QxMDA5MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05PREVfaW5fcF9BbnlLaW5kVGVzdDEwMTE5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9BbnlLaW5kVGVzdDEwMTIxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfQW55S2luZFRlc3QxMDEyMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RPQ1VNRU5UX05PREVfaW5fcF9Eb2N1bWVudFRlc3QxMDE0OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfRG9jdW1lbnRUZXN0MTAxNTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMTAyNCwxMDczNzQxODI0LDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19wX0VsZW1lbnRUZXN0X2luX3BfRG9jdW1lbnRUZXN0MTAxNTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19wX1NjaGVtYUVsZW1lbnRUZXN0X2luX3BfRG9jdW1lbnRUZXN0MTAxNTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9Eb2N1bWVudFRlc3QxMDE2MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RFWFRfaW5fcF9UZXh0VGVzdDEwMTg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9UZXh0VGVzdDEwMTkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfVGV4dFRlc3QxMDE5MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NPTU1FTlRfaW5fcF9Db21tZW50VGVzdDEwMjE4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9Db21tZW50VGVzdDEwMjIwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfQ29tbWVudFRlc3QxMDIyMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05BTUVTUEFDRV9OT0RFX2luX3BfTmFtZXNwYWNlTm9kZVRlc3QxMDI0ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfTmFtZXNwYWNlTm9kZVRlc3QxMDI1MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX05hbWVzcGFjZU5vZGVUZXN0MTAyNTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX2luX3BfUElUZXN0MTAyNzg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1BJVGVzdDEwMjgwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwxMzQyMTc3Mjc5LDAsMjkzNjQ5OTIsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcF9QSVRlc3QxMDI4MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX1BJVGVzdDEwMjg3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfUElUZXN0MTAyOTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVFRSSUJVVEVfaW5fcF9BdHRyaWJ1dGVUZXN0MTAzMTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMxOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMTM0MjE3NzI3OSw0MDk2LDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BdHRyaWJOYW1lT3JXaWxkY2FyZF9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMyMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfQXR0cmlidXRlVGVzdDEwMzI1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVHlwZU5hbWVfaW5fcF9BdHRyaWJ1dGVUZXN0MTAzMjc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9BdHRyaWJ1dGVUZXN0MTAzMzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0F0dHJpYnV0ZU5hbWVfaW5fcF9BdHRyaWJOYW1lT3JXaWxkY2FyZDEwMzYxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU1RBUl9pbl9wX0F0dHJpYk5hbWVPcldpbGRjYXJkMTAzNjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TQ0hFTUFfQVRUUklCVVRFX2luX3BfU2NoZW1hQXR0cmlidXRlVGVzdDEwMzkxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9TY2hlbWFBdHRyaWJ1dGVUZXN0MTAzOTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BdHRyaWJ1dGVEZWNsYXJhdGlvbl9pbl9wX1NjaGVtYUF0dHJpYnV0ZVRlc3QxMDM5NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1NjaGVtYUF0dHJpYnV0ZVRlc3QxMDM5NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQXR0cmlidXRlTmFtZV9pbl9wX0F0dHJpYnV0ZURlY2xhcmF0aW9uMTA0MjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FTEVNRU5UX2luX3BfRWxlbWVudFRlc3QxMDQ0OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfRWxlbWVudFRlc3QxMDQ1MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMTM0MjE3NzI3OSw0MDk2LDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FbGVtZW50TmFtZU9yV2lsZGNhcmRfaW5fcF9FbGVtZW50VGVzdDEwNDU0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9FbGVtZW50VGVzdDEwNDU3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVHlwZU5hbWVfaW5fcF9FbGVtZW50VGVzdDEwNDU5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDIwNDhdKSxGT0xMT1dfUVVFU1RJT05faW5fcF9FbGVtZW50VGVzdDEwNDYxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfRWxlbWVudFRlc3QxMDQ2ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9FbGVtZW50TmFtZU9yV2lsZGNhcmQxMDQ5NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NUQVJfaW5fcF9FbGVtZW50TmFtZU9yV2lsZGNhcmQxMDQ5ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NDSEVNQV9FTEVNRU5UX2luX3BfU2NoZW1hRWxlbWVudFRlc3QxMDUxNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfU2NoZW1hRWxlbWVudFRlc3QxMDUxODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0VsZW1lbnREZWNsYXJhdGlvbl9pbl9wX1NjaGVtYUVsZW1lbnRUZXN0MTA1MjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9TY2hlbWFFbGVtZW50VGVzdDEwNTIyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FbGVtZW50TmFtZV9pbl9wX0VsZW1lbnREZWNsYXJhdGlvbjEwNTQ4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0F0dHJpYnV0ZU5hbWUxMDU3NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9FbGVtZW50TmFtZTEwNjAwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX1R5cGVOYW1lMTA2MjY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0Fubm90YXRpb25faW5fcF9GdW5jdGlvblRlc3QxMDY1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCw0MTk0MzA0LDAsMCwwLDAsMCwxMjhdKSxGT0xMT1dfcF9BbnlGdW5jdGlvblRlc3RfaW5fcF9GdW5jdGlvblRlc3QxMDY1NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVHlwZWRGdW5jdGlvblRlc3RfaW5fcF9GdW5jdGlvblRlc3QxMDY2MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0ZVTkNUSU9OX2luX3BfQW55RnVuY3Rpb25UZXN0MTA2ODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0FueUZ1bmN0aW9uVGVzdDEwNjg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDQwOTZdKSxGT0xMT1dfU1RBUl9pbl9wX0FueUZ1bmN0aW9uVGVzdDEwNjkxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfQW55RnVuY3Rpb25UZXN0MTA2OTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GVU5DVElPTl9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3MTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3MjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDE4NzkwNDgxOTEsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDcyNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDcyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsODA1MzA2MzY3LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3Mjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMTAyNF0pLEZPTExPV19SUEFSRU5faW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzM1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMF0pLEZPTExPV19BU19pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3Mzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDgwNTMwNjM2NywwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfUGFyZW50aGVzaXplZEl0ZW1UeXBlMTA3NjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDgwNTMwNjM2NywwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9JdGVtVHlwZV9pbl9wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZTEwNzY3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfUGFyZW50aGVzaXplZEl0ZW1UeXBlMTA3Njk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19RVU9UX2luX3BfU3RyaW5nTGl0ZXJhbDEwODIwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTY3MjgwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjY3ODMsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDIwOTcxNTEsMF0pLEZPTExPV19wZ19RdW90U3RyaW5nTGl0ZXJhbENvbnRlbnRfaW5fcF9TdHJpbmdMaXRlcmFsMTA4MjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCw1MTIsMF0pLEZPTExPV19RVU9UX2luX3BfU3RyaW5nTGl0ZXJhbDEwODI2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVBPU19pbl9wX1N0cmluZ0xpdGVyYWwxMDg2NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDk2NzI4MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY2NzgzLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyMDk3MTUxLDBdKSxGT0xMT1dfcGdfQXBvc1N0cmluZ0xpdGVyYWxDb250ZW50X2luX3BfU3RyaW5nTGl0ZXJhbDEwODY5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjU2LDBdKSxGT0xMT1dfQVBPU19pbl9wX1N0cmluZ0xpdGVyYWwxMDg3MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3NldF9pbl9wZ19RdW90U3RyaW5nTGl0ZXJhbENvbnRlbnQxMDkzNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDk2NzI4Miw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY2NzgzLDQyOTQ5NjY3ODMsNDI5NDk2NzI5NSwyMDk3MTUxLDBdKSxGT0xMT1dfc2V0X2luX3BnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudDEwOTg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTY3MjgyLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjY3ODMsNDI5NDk2NzAzOSw0Mjk0OTY3Mjk1LDIwOTcxNTEsMF0pLEZPTExPV19MX0VsZW1lbnRDb250ZW50Q2hhcl9pbl9wX0VsZW1lbnRDb250ZW50Q2hhcjExMDQ2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9RdW90QXR0ckNvbnRlbnRDaGFyX2luX3BfUXVvdEF0dHJDb250ZW50Q2hhcjExMDcyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9BcG9zQXR0ckNvbnRlbnRDaGFyX2luX3BfQXBvc0F0dHJDb250ZW50Q2hhcjExMTIyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcGdfUU5hbWVfaW5fcF9RTmFtZTExMjA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcF9RTmFtZTExMjIwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcGdfUU5hbWVfaW5fcGdfRlFOYW1lMTEyODE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZOQ05hbWVfaW5fcGdfRlFOYW1lMTEyOTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wZ19RTmFtZTExMzM3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDMzNTU0NDMyXSksRk9MTE9XX0NPTE9OX2luX3BnX1FOYW1lMTEzMzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcGdfUU5hbWUxMTM0MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3NldF9pbl9wX05DTmFtZTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fcF9GTkNOYW1lMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSW5zZXJ0RXhwcl9pbl9wZ19VcGRhdGVFeHByMTMzMzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0RlbGV0ZUV4cHJfaW5fcGdfVXBkYXRlRXhwcjEzMzQ2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9SZW5hbWVFeHByX2luX3BnX1VwZGF0ZUV4cHIxMzM1ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUmVwbGFjZUV4cHJfaW5fcGdfVXBkYXRlRXhwcjEzMzcwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9UcmFuc2Zvcm1FeHByX2luX3BnX1VwZGF0ZUV4cHIxMzM4MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDEwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDMzNTU0NDMyLDBdKSxGT0xMT1dfUkVWQUxJREFUSU9OX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQxNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDgsNCw2NzEwODg2NCwwXSksRk9MTE9XX1NUUklDVF9pbl9wbV9SZXZhbGlkYXRpb25EZWNsMTM0MTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX0xBWF9pbl9wbV9SZXZhbGlkYXRpb25EZWNsMTM0MjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NLSVBfaW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDMxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDM2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVNfaW5fcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlMTM0NjY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMTE3OTY0OCwwXSksRk9MTE9XX0ZJUlNUX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNDcxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDUyNDI4OCwwXSksRk9MTE9XX0xBU1RfaW5fcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlMTM0Nzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsNTI0Mjg4LDBdKSxGT0xMT1dfSU5UT19pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzQ4NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FGVEVSX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNTAxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQkVGT1JFX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNTE3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSU5TRVJUX2luX3BfSW5zZXJ0RXhwcjEzNTQ3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTYzODQsMCw0MTk0MzA0LDBdKSxGT0xMT1dfTk9ERV9pbl9wX0luc2VydEV4cHIxMzU1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19OT0RFU19pbl9wX0luc2VydEV4cHIxMzU1ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NvdXJjZUV4cHJfaW5fcF9JbnNlcnRFeHByMTM1NjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwwLDAsMCw1NDg4NjQsMF0pLEZPTExPV19wX0luc2VydEV4cHJUYXJnZXRDaG9pY2VfaW5fcF9JbnNlcnRFeHByMTM1NjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9UYXJnZXRFeHByX2luX3BfSW5zZXJ0RXhwcjEzNTY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVMRVRFX2luX3BfRGVsZXRlRXhwcjEzNTk1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTYzODQsMCw0MTk0MzA0LDBdKSxGT0xMT1dfTk9ERV9pbl9wX0RlbGV0ZUV4cHIxMzYwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19OT0RFU19pbl9wX0RlbGV0ZUV4cHIxMzYwNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1RhcmdldEV4cHJfaW5fcF9EZWxldGVFeHByMTM2MDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19SRVBMQUNFX2luX3BfUmVwbGFjZUV4cHIxMzYzOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Mzg0LDAsMjY4NDM1NDU2LDBdKSxGT0xMT1dfVkFMVUVfaW5fcF9SZXBsYWNlRXhwcjEzNjQ0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMzI3NjgsMF0pLEZPTExPV19PRl9pbl9wX1JlcGxhY2VFeHByMTM2NDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxNjM4NCwwXSksRk9MTE9XX05PREVfaW5fcF9SZXBsYWNlRXhwcjEzNjU0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1JlcGxhY2VFeHByMTM2NTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfV0lUSF9pbl9wX1JlcGxhY2VFeHByMTM2NjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfUmVwbGFjZUV4cHIxMzY2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1JFTkFNRV9pbl9wX1JlbmFtZUV4cHIxMzY5NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Mzg0LDBdKSxGT0xMT1dfTk9ERV9pbl9wX1JlbmFtZUV4cHIxMzY5ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1RhcmdldEV4cHJfaW5fcF9SZW5hbWVFeHByMTM3MDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwwXSksRk9MTE9XX0FTX2luX3BfUmVuYW1lRXhwcjEzNzA0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTmV3TmFtZUV4cHJfaW5fcF9SZW5hbWVFeHByMTM3MDY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Tb3VyY2VFeHByMTM3MzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9UYXJnZXRFeHByMTM3NjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9OZXdOYW1lRXhwcjEzNzg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ09QWV9pbl9wX1RyYW5zZm9ybUV4cHIxMzgxNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1RyYW5zZm9ybUV4cHIxMzgyMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfQklORF9pbl9wX1RyYW5zZm9ybUV4cHIxMzgyOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MzE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMjA5NzE1MiwwLDAsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX1RyYW5zZm9ybUV4cHIxMzgzNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1RyYW5zZm9ybUV4cHIxMzgzOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9UcmFuc2Zvcm1FeHByMTM4NDM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfQklORF9pbl9wX1RyYW5zZm9ybUV4cHIxMzg0NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9UcmFuc2Zvcm1FeHByMTM4NDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMjA5NzE1MiwwLDAsMTAyNF0pLEZPTExPV19NT0RJRllfaW5fcF9UcmFuc2Zvcm1FeHByMTM4NTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODU4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMF0pLEZPTExPV19SRVRVUk5faW5fcF9UcmFuc2Zvcm1FeHByMTM4NjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDTEFSRV9pbl9wbV9GVE9wdGlvbkRlY2wxMzkwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDI1Nl0pLEZPTExPV19GVF9PUFRJT05faW5fcG1fRlRPcHRpb25EZWNsMTM5MDc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDQsMF0pLEZPTExPV19wX0ZUTWF0Y2hPcHRpb25zX2luX3BtX0ZUT3B0aW9uRGVjbDEzOTA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fRlRPcHRpb25EZWNsMTM5MTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TQ09SRV9pbl9wX0ZUU2NvcmVWYXIxMzk0MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX0ZUU2NvcmVWYXIxMzk0NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9GVFNjb3JlVmFyMTM5NTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0cmluZ0NvbmNhdEV4cHJfaW5fcF9GVENvbnRhaW5zRXhwcjEzOTc5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMV0pLEZPTExPV19DT05UQUlOU19pbl9wX0ZUQ29udGFpbnNFeHByMTM5ODU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDE2XSksRk9MTE9XX1RFWFRfaW5fcF9GVENvbnRhaW5zRXhwcjEzOTg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMTAyNCw1MzY4NzA5MTIsMSwyOTg4NTE4NCwwXSksRk9MTE9XX3BfRlRTZWxlY3Rpb25faW5fcF9GVENvbnRhaW5zRXhwcjEzOTkzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwzMiwwXSksRk9MTE9XX3BfRlRJZ25vcmVPcHRpb25faW5fcF9GVENvbnRhaW5zRXhwcjEzOTk1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVE9yX2luX3BfRlRTZWxlY3Rpb24xNDAyNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1NCwwLDUyNDI4OCwwLDIwNDgsMTY3NzcyNzJdKSxGT0xMT1dfcF9GVFBvc0ZpbHRlcl9pbl9wX0ZUU2VsZWN0aW9uMTQwMjc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTQsMCw1MjQyODgsMCwyMDQ4LDE2Nzc3MjcyXSksRk9MTE9XX1dFSUdIVF9pbl9wX0ZUV2VpZ2h0MTQwNTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0ZUV2VpZ2h0MTQwNjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfRlRXZWlnaHQxNDA2MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfRlRXZWlnaHQxNDA2NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRBbmRfaW5fcF9GVE9yMTQwOTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwyMDQ4XSksRk9MTE9XX0ZUT1JfaW5fcF9GVE9yMTQwOTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMDI0LDUzNjg3MDkxMiwxLDI5ODg1MTg0LDBdKSxGT0xMT1dfcF9GVEFuZF9pbl9wX0ZUT3IxNDEwMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDIwNDhdKSxGT0xMT1dfcF9GVE1pbGROb3RfaW5fcF9GVEFuZDE0MTMwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsNTEyXSksRk9MTE9XX0ZUQU5EX2luX3BfRlRBbmQxNDEzNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDEwMjQsNTM2ODcwOTEyLDEsMjk4ODUxODQsMF0pLEZPTExPV19wX0ZUTWlsZE5vdF9pbl9wX0ZUQW5kMTQxNDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCw1MTJdKSxGT0xMT1dfcF9GVFVuYXJ5Tm90X2luX3BfRlRNaWxkTm90MTQxNjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwyNjIxNDRdKSxGT0xMT1dfTk9UX2luX3BfRlRNaWxkTm90MTQxNzU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNTM2ODcwOTEyXSksRk9MTE9XX0lOX2luX3BfRlRNaWxkTm90MTQxNzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMDI0LDUzNjg3MDkxMiwxLDI5ODg1MTg0LDBdKSxGT0xMT1dfcF9GVFVuYXJ5Tm90X2luX3BfRlRNaWxkTm90MTQxODM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwyNjIxNDRdKSxGT0xMT1dfRlROT1RfaW5fcF9GVFVuYXJ5Tm90MTQyMTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMDI0LDUzNjg3MDkxMiwxLDI5ODg1MTg0LDBdKSxGT0xMT1dfcF9GVFByaW1hcnlXaXRoT3B0aW9uc19pbl9wX0ZUVW5hcnlOb3QxNDIyMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRQcmltYXJ5X2luX3BfRlRQcmltYXJ5V2l0aE9wdGlvbnMxNDI0OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMTIsMF0pLEZPTExPV19wX0ZUTWF0Y2hPcHRpb25zX2luX3BfRlRQcmltYXJ5V2l0aE9wdGlvbnMxNDI1MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsOCwwXSksRk9MTE9XX3BfRlRXZWlnaHRfaW5fcF9GVFByaW1hcnlXaXRoT3B0aW9uczE0MjU0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVFdvcmRzX2luX3BfRlRQcmltYXJ5MTQyODU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCw1MjQyODhdKSxGT0xMT1dfcF9GVFRpbWVzX2luX3BfRlRQcmltYXJ5MTQyODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9GVFByaW1hcnkxNDMwMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDEwMjQsNTM2ODcwOTEyLDEsMjk4ODUxODQsMF0pLEZPTExPV19wX0ZUU2VsZWN0aW9uX2luX3BfRlRQcmltYXJ5MTQzMDQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9GVFByaW1hcnkxNDMwNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRFeHRlbnNpb25TZWxlY3Rpb25faW5fcF9GVFByaW1hcnkxNDMxOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRXb3Jkc1ZhbHVlX2luX3BfRlRXb3JkczE0MzQ1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDMyMjEyMjU0NzIsNDE5NDMwNF0pLEZPTExPV19wX0ZUQW55YWxsT3B0aW9uX2luX3BfRlRXb3JkczE0MzQ3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRXb3Jkc1ZhbHVlMTQzNzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0ZUV29yZHNWYWx1ZTE0Mzg3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX0ZUV29yZHNWYWx1ZTE0Mzg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9GVFdvcmRzVmFsdWUxNDM5MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfUHJhZ21hX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQxOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxLDUyNDI4OCwwXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQyMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDEwMjQsNTM2ODcwOTEyLDMsMjk4ODUxODQsMF0pLEZPTExPV19wX0ZUU2VsZWN0aW9uX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQyNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FOWV9pbl9wX0ZUQW55YWxsT3B0aW9uMTQ0NTg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDY0LDBdKSxGT0xMT1dfV09SRF9pbl9wX0ZUQW55YWxsT3B0aW9uMTQ0NjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BTExfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDcxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwxMjgsMF0pLEZPTExPV19XT1JEU19pbl9wX0ZUQW55YWxsT3B0aW9uMTQ0NzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19QSFJBU0VfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDgxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfT0NDVVJTX2luX3BfRlRUaW1lczE0NTEzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDAsMCwwLDAsMTkyXSksRk9MTE9XX3BfRlRSYW5nZV9pbl9wX0ZUVGltZXMxNDUxNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMSwwXSksRk9MTE9XX1RJTUVTX2luX3BfRlRUaW1lczE0NTE5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRVhBQ1RMWV9pbl9wX0ZUUmFuZ2UxNDU1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDU1NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUX2luX3BfRlRSYW5nZTE0NTcyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMzIsMF0pLEZPTExPV19MRUFTVF9pbl9wX0ZUUmFuZ2UxNDU3NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDU3ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUX2luX3BfRlRSYW5nZTE0NTk2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsNjU1MzZdKSxGT0xMT1dfTU9TVF9pbl9wX0ZUUmFuZ2UxNDYwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDYwMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0ZST01faW5fcF9GVFJhbmdlMTQ2MjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFJhbmdlMTQ2MjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDY0XSksRk9MTE9XX1RPX2luX3BfRlRSYW5nZTE0NjI2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQWRkaXRpdmVFeHByX2luX3BfRlRSYW5nZTE0NjI4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVE9yZGVyX2luX3BfRlRQb3NGaWx0ZXIxNDY1OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRXaW5kb3dfaW5fcF9GVFBvc0ZpbHRlcjE0NjYzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVERpc3RhbmNlX2luX3BfRlRQb3NGaWx0ZXIxNDY2NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRTY29wZV9pbl9wX0ZUUG9zRmlsdGVyMTQ2NzE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUQ29udGVudF9pbl9wX0ZUUG9zRmlsdGVyMTQ2NzU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19PUkRFUkVEX2luX3BfRlRPcmRlcjE0NzAzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfV0lORE9XX2luX3BfRlRXaW5kb3cxNDczMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUV2luZG93MTQ3Mzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwyNzA1MzI2MDgsMTI4LDBdKSxGT0xMT1dfcF9GVFVuaXRfaW5fcF9GVFdpbmRvdzE0NzM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRElTVEFOQ0VfaW5fcF9GVERpc3RhbmNlMTQ3Njc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsMCwwLDAsMCwxOTJdKSxGT0xMT1dfcF9GVFJhbmdlX2luX3BfRlREaXN0YW5jZTE0NzcxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMjcwNTMyNjA4LDEyOCwwXSksRk9MTE9XX3BfRlRVbml0X2luX3BfRlREaXN0YW5jZTE0NzczOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfV09SRFNfaW5fcF9GVFVuaXQxNDgwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NFTlRFTkNFU19pbl9wX0ZUVW5pdDE0ODA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUEFSQUdSQVBIU19pbl9wX0ZUVW5pdDE0ODE1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0FNRV9pbl9wX0ZUU2NvcGUxNDg0ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDEzNTI2NjMwNF0pLEZPTExPV19ESUZGRVJFTlRfaW5fcF9GVFNjb3BlMTQ4NTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMzUyNjYzMDRdKSxGT0xMT1dfcF9GVEJpZ1VuaXRfaW5fcF9GVFNjb3BlMTQ4NTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TRU5URU5DRV9pbl9wX0ZUQmlnVW5pdDE0ODg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUEFSQUdSQVBIX2luX3BfRlRCaWdVbml0MTQ4OTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX0ZUQ29udGVudDE0OTMwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDMyLDBdKSxGT0xMT1dfU1RBUlRfaW5fcF9GVENvbnRlbnQxNDkzNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUX2luX3BfRlRDb250ZW50MTQ5NDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDgzODg2MDhdKSxGT0xMT1dfRU5EX2luX3BfRlRDb250ZW50MTQ5NDY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FTlRJUkVfaW5fcF9GVENvbnRlbnQxNDk1NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDJdKSxGT0xMT1dfQ09OVEVOVF9pbl9wX0ZUQ29udGVudDE0OTU4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVVNJTkdfaW5fcF9GVE1hdGNoT3B0aW9uczE0OTkyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs2NzEwODg2NCwwLDY1NTM2LDAsMCwzNzU4MjY4NDIwLDE4LDBdKSxGT0xMT1dfcF9GVE1hdGNoT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbnMxNDk5NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsNCwwXSksRk9MTE9XX3BfRlRMYW5ndWFnZU9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTAyNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRXaWxkQ2FyZE9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTAzNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRUaGVzYXVydXNPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwNDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUU3RlbU9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTA2MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRDYXNlT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDcyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVERpYWNyaXRpY3NPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwODQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUU3RvcFdvcmRPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwOTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZURXh0ZW5zaW9uT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MTA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ0FTRV9pbl9wX0ZUQ2FzZU9wdGlvbjE1MTM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsNDA5Nl0pLEZPTExPV19JTlNFTlNJVElWRV9pbl9wX0ZUQ2FzZU9wdGlvbjE1MTQzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ0FTRV9pbl9wX0ZUQ2FzZU9wdGlvbjE1MTYxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfU0VOU0lUSVZFX2luX3BfRlRDYXNlT3B0aW9uMTUxNjU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MT1dFUkNBU0VfaW5fcF9GVENhc2VPcHRpb24xNTE4MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1VQUEVSQ0FTRV9pbl9wX0ZUQ2FzZU9wdGlvbjE1MTk4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRElBQ1JJVElDU19pbl9wX0ZURGlhY3JpdGljc09wdGlvbjE1MjMzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsNDA5Nl0pLEZPTExPV19JTlNFTlNJVElWRV9pbl9wX0ZURGlhY3JpdGljc09wdGlvbjE1MjM3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRElBQ1JJVElDU19pbl9wX0ZURGlhY3JpdGljc09wdGlvbjE1MjU1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfU0VOU0lUSVZFX2luX3BfRlREaWFjcml0aWNzT3B0aW9uMTUyNTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TVEVNTUlOR19pbl9wX0ZUU3RlbU9wdGlvbjE1Mjk0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTk9faW5fcF9GVFN0ZW1PcHRpb24xNTMwMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TVEVNTUlOR19pbl9wX0ZUU3RlbU9wdGlvbjE1MzA1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVEhFU0FVUlVTX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM0MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1Miw4XSksRk9MTE9XX3BfRlRUaGVzYXVydXNJRF9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNDQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUZBVUxUX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM1MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RIRVNBVVJVU19pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNzE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsOF0pLEZPTExPV19wX0ZUVGhlc2F1cnVzSURfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1Mzc0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfREVGQVVMVF9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzODQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsMF0pLEZPTExPV19wX0ZUVGhlc2F1cnVzSURfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1Mzg2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfUlBBUkVOX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM5MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05PX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTQwODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDIxNDc0ODM2NDhdKSxGT0xMT1dfVEhFU0FVUlVTX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTQxMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUX2luX3BfRlRUaGVzYXVydXNJRDE1NDQ1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NDc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTQsMCwwLDAsMCw4Mzg4ODAwXSksRk9MTE9XX1JFTEFUSU9OU0hJUF9pbl9wX0ZUVGhlc2F1cnVzSUQxNTQ1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRUaGVzYXVydXNJRDE1NDU0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTU0LDAsMCwwLDAsMTkyXSksRk9MTE9XX3BfRlRMaXRlcmFsUmFuZ2VfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxNjM4NF0pLEZPTExPV19MRVZFTFNfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FWEFDVExZX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTQ5ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDQxOTQzMDQsMF0pLEZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTUwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTUxODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDMyLDBdKSxGT0xMT1dfTEVBU1RfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTIyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsNDE5NDMwNCwwXSksRk9MTE9XX0xfSW50ZWdlckxpdGVyYWxfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTI0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVRfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTQyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsNjU1MzZdKSxGT0xMT1dfTU9TVF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NDY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCw0MTk0MzA0LDBdKSxGT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GUk9NX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU2NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDQxOTQzMDQsMF0pLEZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU2ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsNjRdKSxGT0xMT1dfVE9faW5fcF9GVExpdGVyYWxSYW5nZTE1NTcwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsNDE5NDMwNCwwXSksRk9MTE9XX0xfSW50ZWdlckxpdGVyYWxfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTcyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU1RPUF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTYwODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTI4LDBdKSxGT0xMT1dfV09SRFNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX3BfRlRTdG9wV29yZHNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMTMxMDcyLDAsNTEyXSksRk9MTE9XX3BfRlRTdG9wV29yZHNJbmNsRXhjbF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTYxNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwxMzEwNzIsMCw1MTJdKSxGT0xMT1dfU1RPUF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTYzNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTI4LDBdKSxGT0xMT1dfV09SRFNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2Mzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsOF0pLEZPTExPV19ERUZBVUxUX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjQzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDEzMTA3MiwwLDUxMl0pLEZPTExPV19wX0ZUU3RvcFdvcmRzSW5jbEV4Y2xfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2NDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMTMxMDcyLDAsNTEyXSksRk9MTE9XX05PX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjY0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMTA3Mzc0MTgyNF0pLEZPTExPV19TVE9QX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjY4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMjgsMF0pLEZPTExPV19XT1JEU19pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTY3MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUX2luX3BfRlRTdG9wV29yZHMxNTcwNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRTdG9wV29yZHMxNTcxMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0ZUU3RvcFdvcmRzMTU3MjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUU3RvcFdvcmRzMTU3MjY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX0ZUU3RvcFdvcmRzMTU3Mjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUU3RvcFdvcmRzMTU3MzE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMTAyNF0pLEZPTExPV19SUEFSRU5faW5fcF9GVFN0b3BXb3JkczE1NzM1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVU5JT05faW5fcF9GVFN0b3BXb3Jkc0luY2xFeGNsMTU3Njc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0VYQ0VQVF9pbl9wX0ZUU3RvcFdvcmRzSW5jbEV4Y2wxNTc3MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1MiwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfcF9GVFN0b3BXb3Jkc19pbl9wX0ZUU3RvcFdvcmRzSW5jbEV4Y2wxNTc3NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xBTkdVQUdFX2luX3BfRlRMYW5ndWFnZU9wdGlvbjE1ODA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVExhbmd1YWdlT3B0aW9uMTU4MTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19XSUxEQ0FSRFNfaW5fcF9GVFdpbGRDYXJkT3B0aW9uMTU4NDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OT19pbl9wX0ZUV2lsZENhcmRPcHRpb24xNTg0OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTYsMF0pLEZPTExPV19XSUxEQ0FSRFNfaW5fcF9GVFdpbGRDYXJkT3B0aW9uMTU4NTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19PUFRJT05faW5fcF9GVEV4dGVuc2lvbk9wdGlvbjE1ODg2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9GVEV4dGVuc2lvbk9wdGlvbjE1ODkwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVEV4dGVuc2lvbk9wdGlvbjE1ODkyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfV0lUSE9VVF9pbl9wX0ZUSWdub3JlT3B0aW9uMTU5MjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwyXSksRk9MTE9XX0NPTlRFTlRfaW5fcF9GVElnbm9yZU9wdGlvbjE1OTI0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVW5pb25FeHByX2luX3BfRlRJZ25vcmVPcHRpb24xNTkyODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wX1Byb2dyYW0xNTk2MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfU3RhdGVtZW50czE1OTg3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYyLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c19pbl9wX1N0YXRlbWVudHNBbmRFeHByMTYwMTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0YXRlbWVudHNfaW5fcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByMTYwNDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0h5YnJpZEV4cHJTaW5nbGVfaW5fcF9IeWJyaWQxNjA2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3RhdGVtZW50X2luX3BfSHlicmlkMTYwODI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0Fzc2lnblN0YXRlbWVudF9pbl9wX1N0YXRlbWVudDE2MTEzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9CcmVha1N0YXRlbWVudF9pbl9wX1N0YXRlbWVudDE2MTI1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Db250aW51ZVN0YXRlbWVudF9pbl9wX1N0YXRlbWVudDE2MTM3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeGl0U3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxNDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1ZhckRlY2xTdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjE2MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfV2hpbGVTdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjE3MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX0h5YnJpZEV4cHJTaW5nbGUxNjIwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BfSHlicmlkRXhwclNpbmdsZTE2MjE1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByU2ltcGxlX2luX3BfQXBwbHlTdGF0ZW1lbnQxNjI2NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BfQXBwbHlTdGF0ZW1lbnQxNjI2NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RPTExBUl9pbl9wX0Fzc2lnblN0YXRlbWVudDE2Mjk1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0Fzc2lnblN0YXRlbWVudDE2Mjk5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDMyXSksRk9MTE9XX0JJTkRfaW5fcF9Bc3NpZ25TdGF0ZW1lbnQxNjMwMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Bc3NpZ25TdGF0ZW1lbnQxNjMwNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BfQXNzaWduU3RhdGVtZW50MTYzMDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0Jsb2NrU3RhdGVtZW50MTYzMzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NTEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TdGF0ZW1lbnRzX2luX3BfQmxvY2tTdGF0ZW1lbnQxNjMzNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfQmxvY2tTdGF0ZW1lbnQxNjMzOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfQmxvY2tIeWJyaWQxNjM2NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg1MSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0YXRlbWVudHNfaW5fcF9CbG9ja0h5YnJpZDE2MzY3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9CbG9ja0h5YnJpZDE2MzcwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQlJFQUtfaW5fcF9CcmVha1N0YXRlbWVudDE2Mzk4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMDQ4LDBdKSxGT0xMT1dfTE9PUF9pbl9wX0JyZWFrU3RhdGVtZW50MTY0MDQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0JyZWFrU3RhdGVtZW50MTY0MDg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DT05USU5VRV9pbl9wX0NvbnRpbnVlU3RhdGVtZW50MTY0MzY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIwNDgsMF0pLEZPTExPV19MT09QX2luX3BfQ29udGludWVTdGF0ZW1lbnQxNjQ0MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BfQ29udGludWVTdGF0ZW1lbnQxNjQ0NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0VYSVRfaW5fcF9FeGl0U3RhdGVtZW50MTY0NzQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDQwOTYsMF0pLEZPTExPV19SRVRVUk5JTkdfaW5fcF9FeGl0U3RhdGVtZW50MTY0ODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfRXhpdFN0YXRlbWVudDE2NDg0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcF9FeGl0U3RhdGVtZW50MTY0ODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0luaXRpYWxDbGF1c2VfaW5fcF9GTFdPUlN0YXRlbWVudDE2NTEzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDIwOTcxNTIsNjczNzEwNzIsMTczMTc4OTBdKSxGT0xMT1dfcF9JbnRlcm1lZGlhdGVDbGF1c2VfaW5fcF9GTFdPUlN0YXRlbWVudDE2NTE1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDIwOTcxNTIsNjczNzEwNzIsMTczMTc4OTBdKSxGT0xMT1dfcF9SZXR1cm5TdGF0ZW1lbnRfaW5fcF9GTFdPUlN0YXRlbWVudDE2NTE4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfUmV0dXJuU3RhdGVtZW50MTY1NTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9SZXR1cm5TdGF0ZW1lbnQxNjU1NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lGX2luX3BfSWZTdGF0ZW1lbnQxNjU4MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfSWZTdGF0ZW1lbnQxNjU4NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9JZlN0YXRlbWVudDE2NTg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfSWZTdGF0ZW1lbnQxNjU5MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMzJdKSxGT0xMT1dfVEhFTl9pbl9wX0lmU3RhdGVtZW50MTY1OTY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9JZlN0YXRlbWVudDE2NjAwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDIwNDhdKSxGT0xMT1dfRUxTRV9pbl9wX0lmU3RhdGVtZW50MTY2MDU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9JZlN0YXRlbWVudDE2NjA5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU1dJVENIX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2Mzg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjQyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjQ0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2NDc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzY3MTA4ODY0LDBdKSxGT0xMT1dfcF9Td2l0Y2hDYXNlU3RhdGVtZW50X2luX3BfU3dpdGNoU3RhdGVtZW50MTY2NDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzY3MTA4ODY0LDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjU0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMF0pLEZPTExPV19SRVRVUk5faW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY2MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjY0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ0FTRV9pbl9wX1N3aXRjaENhc2VTdGF0ZW1lbnQxNjY5NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N3aXRjaENhc2VPcGVyYW5kX2luX3BfU3dpdGNoQ2FzZVN0YXRlbWVudDE2Njk4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs2NzEwODg2NCwwLDY3MTA4ODY0LDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfU3dpdGNoQ2FzZVN0YXRlbWVudDE2NzA0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfU3dpdGNoQ2FzZVN0YXRlbWVudDE2NzA4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVFJZX2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjczNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX3BfQmxvY2tTdGF0ZW1lbnRfaW5fcF9UcnlDYXRjaFN0YXRlbWVudDE2NzQxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwxMzEwNzJdKSxGT0xMT1dfQ0FUQ0hfaW5fcF9UcnlDYXRjaFN0YXRlbWVudDE2NzQ2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMTY3ODEzMTMsMjkzNjUwMjQsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9DYXRjaEVycm9yTGlzdF9pbl9wX1RyeUNhdGNoU3RhdGVtZW50MTY3NTA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19wX0Jsb2NrU3RhdGVtZW50X2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjc1MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMTMxMDcyXSksRk9MTE9XX1RSWV9pbl9wX1RyeUNhdGNoSHlicmlkMTY3ODQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19wX0Jsb2NrSHlicmlkX2luX3BfVHJ5Q2F0Y2hIeWJyaWQxNjc4ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMTMxMDcyXSksRk9MTE9XX0NBVENIX2luX3BfVHJ5Q2F0Y2hIeWJyaWQxNjc5NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDE2NzgxMzEzLDI5MzY1MDI0LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQ2F0Y2hFcnJvckxpc3RfaW5fcF9UcnlDYXRjaEh5YnJpZDE2Nzk4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfcF9CbG9ja0h5YnJpZF9pbl9wX1RyeUNhdGNoSHlicmlkMTY4MDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDEzMTA3Ml0pLEZPTExPV19UWVBFU1dJVENIX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODMzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4Mzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODM5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODQyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs2NzEwODg2NCwwXSksRk9MTE9XX3BfQ2FzZVN0YXRlbWVudF9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg0NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsOF0pLEZPTExPV19ERUZBVUxUX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODQ5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg1NjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw2NzEwODg2NCwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg2ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg3MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NBU0VfaW5fcF9DYXNlU3RhdGVtZW50MTY5MDE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX0RPTExBUl9pbl9wX0Nhc2VTdGF0ZW1lbnQxNjkwODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9DYXNlU3RhdGVtZW50MTY5MTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwwXSksRk9MTE9XX0FTX2luX3BfQ2FzZVN0YXRlbWVudDE2OTE2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSw4MDUzMDYzNjcsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfQ2FzZVN0YXRlbWVudDE2OTIwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMF0pLEZPTExPV19SRVRVUk5faW5fcF9DYXNlU3RhdGVtZW50MTY5MjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9DYXNlU3RhdGVtZW50MTY5Mjg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0Fubm90YXRpb25faW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDQwOTYsMCwwLDAsMTI4XSksRk9MTE9XX1ZBUklBQkxFX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTYwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTY2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk3MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDAsMCwwLDAsMCwwLDUzNjg3MTk2OF0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk3NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzE5NjhdKSxGT0xMT1dfQklORF9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk3ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5ODA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcxOTM2XSksRk9MTE9XX0NPTU1BX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTk2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfVmFyRGVjbFN0YXRlbWVudDE3MDAwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAwNDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDAsMCwwLDAsMCwwLDUzNjg3MTk2OF0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAwODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzE5NjhdKSxGT0xMT1dfQklORF9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAxMjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcxOTM2XSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAzMTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1dISUxFX2luX3BfV2hpbGVTdGF0ZW1lbnQxNzA1OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfV2hpbGVTdGF0ZW1lbnQxNzA2MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9XaGlsZVN0YXRlbWVudDE3MDY1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfV2hpbGVTdGF0ZW1lbnQxNzA2ODpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1doaWxlU3RhdGVtZW50MTcwNzA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1F1YW50aWZpZWRFeHByX2luX3BfRXhwclNpbXBsZTE3MDk3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9PckV4cHJfaW5fcF9FeHByU2ltcGxlMTcxMDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wZ19VcGRhdGVFeHByX2luX3BfRXhwclNpbXBsZTE3MTI0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9CbG9ja0V4cHIxNzE1MDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0YXRlbWVudHNBbmRFeHByX2luX3BfQmxvY2tFeHByMTcxNTI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0Jsb2NrRXhwcjE3MTU0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ09MTEVDVElPTl9pbl9wX0NvbGxlY3Rpb25EZWNsMTcxODU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0NvbGxlY3Rpb25EZWNsMTcxODk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI5MCwwXSksRk9MTE9XX3BfQ29sbGVjdGlvblR5cGVEZWNsX2luX3BfQ29sbGVjdGlvbkRlY2wxNzE5MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FTX2luX3BfQ29sbGVjdGlvblR5cGVEZWNsMTcyMjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIxNTE2Nzc5NTIsMTUzNiwxNjQ0MTgzNTUyLDI2ODQzNTQ3Ml0pLEZPTExPV19wX0tpbmRUZXN0X2luX3BfQ29sbGVjdGlvblR5cGVEZWNsMTcyMjQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTQzMzZdKSxGT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3BfQ29sbGVjdGlvblR5cGVEZWNsMTcyMzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19JTkRFWF9pbl9wX0luZGV4RGVjbDE3MjYzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSW5kZXhOYW1lX2luX3BfSW5kZXhEZWNsMTcyNjc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDQxOTQzMDQsMF0pLEZPTExPV19PTl9pbl9wX0luZGV4RGVjbDE3MjcxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDQxOTQzMDQsMF0pLEZPTExPV19OT0RFU19pbl9wX0luZGV4RGVjbDE3Mjc3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNDk0MTQ1LDMyNTEwNzUyLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSW5kZXhEb21haW5FeHByX2luX3BfSW5kZXhEZWNsMTcyODE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzMzNTU0NDMyLDBdKSxGT0xMT1dfQllfaW5fcF9JbmRleERlY2wxNzI4NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0luZGV4S2V5U3BlY19pbl9wX0luZGV4RGVjbDE3Mjg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9JbmRleERlY2wxNzI5MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0luZGV4S2V5U3BlY19pbl9wX0luZGV4RGVjbDE3Mjk0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0luZGV4TmFtZTE3MzIxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9QYXRoRXhwcl9pbl9wX0luZGV4RG9tYWluRXhwcjE3MzQ2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9JbmRleEtleUV4cHJfaW5fcF9JbmRleEtleVNwZWMxNzM3MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMTA3NDI2NjExNCwwXSksRk9MTE9XX3BfSW5kZXhLZXlUeXBlRGVjbF9pbl9wX0luZGV4S2V5U3BlYzE3MzczOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDczNzQxODI2LDBdKSxGT0xMT1dfcF9JbmRleEtleUNvbGxhdGlvbl9pbl9wX0luZGV4S2V5U3BlYzE3Mzc2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9QYXRoRXhwcl9pbl9wX0luZGV4S2V5RXhwcjE3NDAyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVNfaW5fcF9JbmRleEtleVR5cGVEZWNsMTc0Mjk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BdG9taWNUeXBlX2luX3BfSW5kZXhLZXlUeXBlRGVjbDE3NDMzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDE0MzM2XSksRk9MTE9XX3BfT2NjdXJyZW5jZUluZGljYXRvcl9pbl9wX0luZGV4S2V5VHlwZURlY2wxNzQzNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9BdG9taWNUeXBlMTc0NjE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DT0xMQVRJT05faW5fcF9JbmRleEtleUNvbGxhdGlvbjE3NDg4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9JbmRleEtleUNvbGxhdGlvbjE3NDkyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSU5URUdSSVRZX2luX3BfSUNEZWNsMTc1MTk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDY1NTM2LDBdKSxGT0xMT1dfQ09OU1RSQUlOVF9pbl9wX0lDRGVjbDE3NTI1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9JQ0RlY2wxNzUyOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNDQ1NjQ0OCwwXSksRk9MTE9XX3BfSUNDb2xsZWN0aW9uX2luX3BfSUNEZWNsMTc1MzI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0lDRm9yZWlnbktleV9pbl9wX0lDRGVjbDE3NTM2Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfT05faW5fcF9JQ0NvbGxlY3Rpb24xNzU2NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMzI3NjgsMF0pLEZPTExPV19DT0xMRUNUSU9OX2luX3BfSUNDb2xsZWN0aW9uMTc1NzA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbGVjdGlvbjE3NTc0Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTYzODQsMCwwLDAsMjE0NzYxNDcyMCwwXSksRk9MTE9XX3BfSUNDb2xsU2VxdWVuY2VfaW5fcF9JQ0NvbGxlY3Rpb24xNzU3NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWVfaW5fcF9JQ0NvbGxlY3Rpb24xNzU4MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSUNDb2xsTm9kZV9pbl9wX0lDQ29sbGVjdGlvbjE3NTg1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfSUNDb2xsU2VxdWVuY2UxNzYxMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfSUNDb2xsU2VxdWVuY2UxNzYxNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTYzODQsMF0pLEZPTExPV19DSEVDS19pbl9wX0lDQ29sbFNlcXVlbmNlMTc2MjM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfSUNDb2xsU2VxdWVuY2UxNzYyNzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05PREVfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3NjU1Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY2MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY2NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTYzODQsMF0pLEZPTExPV19DSEVDS19pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2NzE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDgzODg2MDgsMF0pLEZPTExPV19VTklRVUVfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3Njc3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMDk3MTUyLDBdKSxGT0xMT1dfS0VZX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY4MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1BhdGhFeHByX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY4NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0ZPUkVBQ0hfaW5fcF9JQ0NvbGxOb2RlMTc3MTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxNjM4NCwwXSksRk9MTE9XX05PREVfaW5fcF9JQ0NvbGxOb2RlMTc3MjA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9JQ0NvbGxOb2RlMTc3MjY6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbE5vZGUxNzczMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTYzODQsMF0pLEZPTExPV19DSEVDS19pbl9wX0lDQ29sbE5vZGUxNzczNjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9JQ0NvbGxOb2RlMTc3NDA6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GT1JFSUdOX2luX3BfSUNGb3JlaWduS2V5MTc3Njg6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIwOTcxNTIsMF0pLEZPTExPV19LRVlfaW5fcF9JQ0ZvcmVpZ25LZXkxNzc3NDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDEyOF0pLEZPTExPV19wX0lDRm9yZWlnbktleVNvdXJjZV9pbl9wX0lDRm9yZWlnbktleTE3Nzc4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCw2NF0pLEZPTExPV19wX0lDRm9yZWlnbktleVRhcmdldF9pbl9wX0lDRm9yZWlnbktleTE3NzgwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRlJPTV9pbl9wX0lDRm9yZWlnbktleVNvdXJjZTE3ODA3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwzMjc2OCwwXSksRk9MTE9XX3BfSUNGb3JlaWduS2V5VmFsdWVzX2luX3BfSUNGb3JlaWduS2V5U291cmNlMTc4MTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19UT19pbl9wX0lDRm9yZWlnbktleVRhcmdldDE3ODM4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwzMjc2OCwwXSksRk9MTE9XX3BfSUNGb3JlaWduS2V5VmFsdWVzX2luX3BfSUNGb3JlaWduS2V5VGFyZ2V0MTc4NDI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DT0xMRUNUSU9OX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4Njk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODczOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTYzODQsMF0pLEZPTExPV19OT0RFX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4Nzc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg4MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4ODc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIwOTcxNTIsMF0pLEZPTExPV19LRVlfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg5MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1BhdGhFeHByX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4OTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fc3lucHJlZDFfWFF1ZXJ5UGFyc2VyMzUzNTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9zeW5wcmVkMV9YUXVlcnlQYXJzZXIzNTQzOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRk9SX2luX3N5bnByZWQxX1hRdWVyeVBhcnNlcjM1NDk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMjcyLDBdKSxGT0xMT1dfc2V0X2luX3N5bnByZWQxX1hRdWVyeVBhcnNlcjM1NTE6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19JRl9pbl9zeW5wcmVkMl9YUXVlcnlQYXJzZXIzNTc3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fc3lucHJlZDJfWFF1ZXJ5UGFyc2VyMzU3OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NXSVRDSF9pbl9zeW5wcmVkM19YUXVlcnlQYXJzZXIzNjA3Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fc3lucHJlZDNfWFF1ZXJ5UGFyc2VyMzYwOTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RZUEVTV0lUQ0hfaW5fc3lucHJlZDRfWFF1ZXJ5UGFyc2VyMzYzMzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3N5bnByZWQ0X1hRdWVyeVBhcnNlcjM2MzU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19UUllfaW5fc3lucHJlZDVfWFF1ZXJ5UGFyc2VyMzY1NTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3N5bnByZWQ1X1hRdWVyeVBhcnNlcjM2NTc6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19WQUxJREFURV9pbl9zeW5wcmVkNl9YUXVlcnlQYXJzZXI2MTg5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsOCw0LDUxMiwwXSksRk9MTE9XX3BfVmFsaWRhdGlvbk1vZGVfaW5fc3lucHJlZDZfWFF1ZXJ5UGFyc2VyNjE5MzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RZUEVfaW5fc3lucHJlZDZfWFF1ZXJ5UGFyc2VyNjE5NzpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NMQVNIX2luX3N5bnByZWQ3X1hRdWVyeVBhcnNlcjY1NTM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE0OTQxNDUsMzI1MTA3NTIsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9SZWxhdGl2ZVBhdGhFeHByX2luX3N5bnByZWQ3X1hRdWVyeVBhcnNlcjY1NTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fc3lucHJlZDhfWFF1ZXJ5UGFyc2VyNjY2OTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3NldF9pbl9zeW5wcmVkOV9YUXVlcnlQYXJzZXI2NzIyOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMSw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjczMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3MzM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc1MTpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDEsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05DTmFtZV9pbl9zeW5wcmVkOV9YUXVlcnlQYXJzZXI2NzU5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc2MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3NldF9pbl9zeW5wcmVkOV9YUXVlcnlQYXJzZXI2NzgwOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc5MjpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfS2luZFRlc3RfaW5fc3lucHJlZDEwX1hRdWVyeVBhcnNlcjY4MjI6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3N5bnByZWQxMV9YUXVlcnlQYXJzZXI2ODQxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fc3lucHJlZDExX1hRdWVyeVBhcnNlcjY4NDM6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1ByaW1hcnlFeHByX2luX3N5bnByZWQxMl9YUXVlcnlQYXJzZXI2ODYxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9XaWxkY2FyZF9pbl9zeW5wcmVkMTNfWFF1ZXJ5UGFyc2VyNzMwMDpuZXcgZC5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3N5bnByZWQxNF9YUXVlcnlQYXJzZXI3MzE5Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDMzNTU0NDMyXSksRk9MTE9XX0NPTE9OX2luX3N5bnByZWQxNF9YUXVlcnlQYXJzZXI3MzIxOm5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fc3lucHJlZDE1X1hRdWVyeVBhcnNlcjczMzk6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MUEFSRU5faW5fc3lucHJlZDE2X1hRdWVyeVBhcnNlcjc1OTU6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX09jY3VycmVuY2VJbmRpY2F0b3JfaW5fc3lucHJlZDE3X1hRdWVyeVBhcnNlcjk2NTQ6bmV3IGQuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX09jY3VycmVuY2VJbmRpY2F0b3JfaW5fc3lucHJlZDE4X1hRdWVyeVBhcnNlcjE3MjI4Om5ldyBkLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKX0pfSgpLGIuWFF1ZXJ5UGFyc2VyPXB9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeS9TdHJpbmdMZXhlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL3hxdWVyeS9hbnRscjMtYWxsIiwiYWNlL21vZGUveHF1ZXJ5L1hRRFRMZXhlciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2FudGxyMy1hbGwiKS5vcmcsZT1hKCIuL1hRRFRMZXhlciIpLlhRRFRMZXhlcixmPWZ1bmN0aW9uKGEsYil7Ynx8KGI9bmV3IGQuYW50bHIucnVudGltZS5SZWNvZ25pemVyU2hhcmVkU3RhdGUpLGZ1bmN0aW9uKCl7dGhpcy5pblF1b3RTdHI9ITEsdGhpcy5pbkFwb3NTdHI9ITF9LmNhbGwodGhpcyksdGhpcy5kZmE4PW5ldyBmLkRGQTgodGhpcyksZi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLGIpfTtkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChmLHtFT0Y6LTEsTF9RdW90QXR0ckNvbnRlbnRDaGFyOjQsTF9BcG9zQXR0ckNvbnRlbnRDaGFyOjUsTF9FbGVtZW50Q29udGVudENoYXI6NixMX0NEYXRhU2VjdGlvbjo3LExfUHJlZGVmaW5lZEVudGl0eVJlZjo4LExfQ2hhclJlZjo5LEVTQ0FQRV9MQlJBQ0tFVDoxMCxFU0NBUEVfUkJSQUNLRVQ6MTEsRVNDQVBFX0FQT1M6MTIsRVNDQVBFX1FVT1Q6MTMsQ0RBVEFfU1RBUlQ6MTQsQ0RBVEFfRU5EOjE1LEFOQ0VTVE9SOjE2LEFOQ0VTVE9SX09SX1NFTEY6MTcsQU5EOjE4LEFTOjE5LEFTQ0VORElORzoyMCxBVDoyMSxBVFRSSUJVVEU6MjIsQkFTRV9VUkk6MjMsQk9VTkRBUllfU1BBQ0U6MjQsQlk6MjUsQ0FTRToyNixDQVNUOjI3LENBU1RBQkxFOjI4LENISUxEOjI5LENPTExBVElPTjozMCxDT01NRU5UOjMxLENPTlNUUlVDVElPTjozMixDT1BZX05BTUVTUEFDRVM6MzMsREVDTEFSRTozNCxERUZBVUxUOjM1LERFU0NFTkRBTlQ6MzYsREVTQ0VOREFOVF9PUl9TRUxGOjM3LERFU0NFTkRJTkc6MzgsRElWOjM5LERPQ1VNRU5UOjQwLERPQ1VNRU5UX05PREU6NDEsRUxFTUVOVDo0MixFTFNFOjQzLEVNUFRZOjQ0LEVNUFRZX1NFUVVFTkNFOjQ1LEVOQ09ESU5HOjQ2LEVROjQ3LEVWRVJZOjQ4LEVYQ0VQVDo0OSxFWFRFUk5BTDo1MCxGT0xMT1dJTkc6NTEsRk9MTE9XSU5HX1NJQkxJTkc6NTIsRk9SOjUzLEZVTkNUSU9OOjU0LEdFOjU1LEdSRUFURVNUOjU2LEdUOjU3LElESVY6NTgsSUY6NTksSU1QT1JUOjYwLElOOjYxLElOSEVSSVQ6NjIsSU5TVEFOQ0U6NjMsSU5URVJTRUNUOjY0LElTOjY1LElURU06NjYsTEFYOjY3LExFOjY4LExFQVNUOjY5LExFVDo3MCxMVDo3MSxNT0Q6NzIsTU9EVUxFOjczLE5BTUVTUEFDRTo3NCxORTo3NSxOT19JTkhFUklUOjc2LE5PX1BSRVNFUlZFOjc3LE5PREU6NzgsT0Y6NzksT1BUSU9OOjgwLE9SOjgxLE9SREVSOjgyLE9SREVSRUQ6ODMsT1JERVJJTkc6ODQsUEFSRU5UOjg1LFBSRUNFRElORzo4NixQUkVDRURJTkdfU0lCTElORzo4NyxQUkVTRVJWRTo4OCxQUk9DRVNTSU5HX0lOU1RSVUNUSU9OOjg5LFJFVFVSTjo5MCxTQVRJU0ZJRVM6OTEsU0NIRU1BOjkyLFNDSEVNQV9BVFRSSUJVVEU6OTMsU0NIRU1BX0VMRU1FTlQ6OTQsU0VMRjo5NSxTT01FOjk2LFNUQUJMRTo5NyxTVFJJQ1Q6OTgsU1RSSVA6OTksVEVYVDoxMDAsVEhFTjoxMDEsVE86MTAyLFRSRUFUOjEwMyxUWVBFU1dJVENIOjEwNCxVTklPTjoxMDUsVU5PUkRFUkVEOjEwNixWQUxJREFURToxMDcsVkFSSUFCTEU6MTA4LFZFUlNJT046MTA5LFdIRVJFOjExMCxYUVVFUlk6MTExLEFMTE9XSU5HOjExMixDQVRDSDoxMTMsQ09OVEVYVDoxMTQsQ09VTlQ6MTE1LERFQ0lNQUxfRk9STUFUOjExNixERUNJTUFMX1NFUEFSQVRPUjoxMTcsRElHSVQ6MTE4LEVORDoxMTksR1JPVVA6MTIwLEdST1VQSU5HX1NFUEFSQVRPUjoxMjEsSU5GSU5JVFk6MTIyLE1JTlVTX1NJR046MTIzLE5BTUVTUEFDRV9OT0RFOjEyNCxOQU46MTI1LE5FWFQ6MTI2LE9OTFk6MTI3LFBBVFRFUk5fU0VQQVJBVE9SOjEyOCxQRVJDRU5UOjEyOSxQRVJfTUlMTEU6MTMwLFBSRVZJT1VTOjEzMSxTTElESU5HOjEzMixTVEFSVDoxMzMsU1dJVENIOjEzNCxUUlk6MTM1LFRVTUJMSU5HOjEzNixUWVBFOjEzNyxXSEVOOjEzOCxXSU5ET1c6MTM5LFpFUk9fRElHSVQ6MTQwLEFGVEVSOjE0MSxCRUZPUkU6MTQyLENPUFk6MTQzLERFTEVURToxNDQsRklSU1Q6MTQ1LElOU0VSVDoxNDYsSU5UTzoxNDcsTEFTVDoxNDgsTU9ESUZZOjE0OSxOT0RFUzoxNTAsUkVOQU1FOjE1MSxSRVBMQUNFOjE1MixSRVZBTElEQVRJT046MTUzLFNLSVA6MTU0LFVQREFUSU5HOjE1NSxWQUxVRToxNTYsV0lUSDoxNTcsQUxMOjE1OCxBTlk6MTU5LENPTlRBSU5TOjE2MCxDT05URU5UOjE2MSxESUFDUklUSUNTOjE2MixESUZGRVJFTlQ6MTYzLERJU1RBTkNFOjE2NCxFTlRJUkU6MTY1LEVYQUNUTFk6MTY2LEZST006MTY3LEZUX09QVElPTjoxNjgsRlRBTkQ6MTY5LEZUTk9UOjE3MCxGVE9SOjE3MSxJTlNFTlNJVElWRToxNzIsTEFOR1VBR0U6MTczLExFVkVMUzoxNzQsTE9XRVJDQVNFOjE3NSxNT1NUOjE3NixOTzoxNzcsTk9UOjE3OCxPQ0NVUlM6MTc5LFBBUkFHUkFQSDoxODAsUEFSQUdSQVBIUzoxODEsUEhSQVNFOjE4MixSRUxBVElPTlNISVA6MTgzLFNBTUU6MTg0LFNDT1JFOjE4NSxTRU5TSVRJVkU6MTg2LFNFTlRFTkNFOjE4NyxTRU5URU5DRVM6MTg4LFNURU1NSU5HOjE4OSxTVE9QOjE5MCxUSEVTQVVSVVM6MTkxLFRJTUVTOjE5MixVUFBFUkNBU0U6MTkzLFVTSU5HOjE5NCxXRUlHSFQ6MTk1LFdJTERDQVJEUzoxOTYsV0lUSE9VVDoxOTcsV09SRDoxOTgsV09SRFM6MTk5LEJSRUFLOjIwMCxDT05USU5VRToyMDEsRVhJVDoyMDIsTE9PUDoyMDMsUkVUVVJOSU5HOjIwNCxXSElMRToyMDUsQ0hFQ0s6MjA2LENPTExFQ1RJT046MjA3LENPTlNUUkFJTlQ6MjA4LEZPUkVBQ0g6MjA5LEZPUkVJR046MjEwLElOREVYOjIxMSxJTlRFR1JJVFk6MjEyLEtFWToyMTMsT046MjE0LFVOSVFVRToyMTUsQklOQVJZOjIxNixBTVBfRVI6MjE3LEFQT1NfRVI6MjE4LFFVT1RfRVI6MjE5LENPTkNBVDoyMjAsTFBBUkVOOjIyMSxSUEFSRU46MjIyLERPTExBUjoyMjMsTEJSQUNLRVQ6MjI0LFJCUkFDS0VUOjIyNSxMU1FVQVJFOjIyNixSU1FVQVJFOjIyNyxFUVVBTDoyMjgsQklORDoyMjksTk9URVFVQUw6MjMwLEFOTl9QRVJDRU5UOjIzMSxIQVNIOjIzMixBTVA6MjMzLENPTU1BOjIzNCxRVUVTVElPTjoyMzUsU1RBUjoyMzYsUExVUzoyMzcsTUlOVVM6MjM4LFNNQUxMRVI6MjM5LEdSRUFURVI6MjQwLFNNQUxMRVJFUToyNDEsR1JFQVRFUkVROjI0MixTTUFMTEVSX1NNQUxMRVI6MjQzLEdSRUFURVJfR1JFQVRFUjoyNDQsU0xBU0g6MjQ1LFNMQVNIX1NMQVNIOjI0NixET1Q6MjQ3LERPVF9ET1Q6MjQ4LENPTE9OOjI0OSxDT0xPTl9DT0xPTjoyNTAsRU1QVFlfQ0xPU0VfVEFHOjI1MSxDTE9TRV9UQUc6MjUyLFNFTUlDT0xPTjoyNTMsVkJBUjoyNTQsUFJBR01BX1NUQVJUOjI1NSxQUkFHTUFfRU5EOjI1NixYTUxfQ09NTUVOVF9TVEFSVDoyNTcsWE1MX0NPTU1FTlRfRU5EOjI1OCxQSV9TVEFSVDoyNTksUElfRU5EOjI2MCxBVFRSX1NJR046MjYxLENIQVJSRUZfREVDOjI2MixDSEFSUkVGX0hFWDoyNjMsQVBPUzoyNjQsUVVPVDoyNjUsTkNOYW1lU3RhcnRDaGFyOjI2NixOQ05hbWVDaGFyOjI2NyxMX05DTmFtZToyNjgsTGV0dGVyOjI2OSxIZXhMZXR0ZXI6MjcwLERpZ2l0OjI3MSxEaWdpdHM6MjcyLFM6MjczLFNVOjI3NCxMX1ByYWdtYToyNzUsTF9EaXJDb21tZW50Q29uc3RydWN0b3I6Mjc2LExfRGlyUElDb25zdHJ1Y3RvcjoyNzcsTF9JbnRlZ2VyTGl0ZXJhbDoyNzgsTF9EZWNpbWFsTGl0ZXJhbDoyNzksTF9Eb3VibGVMaXRlcmFsOjI4MCxMX0NvbW1lbnQ6MjgxLExfQW55Q2hhcjoyODIsTF9RdW90U3RyaW5nTGl0ZXJhbENoYXI6MjgzLExfQXBvc1N0cmluZ0xpdGVyYWxDaGFyOjI4NH0pLGZ1bmN0aW9uKCl7dmFyIGE9ZC5hbnRsci5ydW50aW1lLlRva2VuLkhJRERFTl9DSEFOTkVMLGI9ZC5hbnRsci5ydW50aW1lLlRva2VuLkVPRjtkLmFudGxyLmxhbmcuZXh0ZW5kKGYsZSx7RU9GOi0xLExfUXVvdEF0dHJDb250ZW50Q2hhcjo0LExfQXBvc0F0dHJDb250ZW50Q2hhcjo1LExfRWxlbWVudENvbnRlbnRDaGFyOjYsTF9DRGF0YVNlY3Rpb246NyxMX1ByZWRlZmluZWRFbnRpdHlSZWY6OCxMX0NoYXJSZWY6OSxFU0NBUEVfTEJSQUNLRVQ6MTAsRVNDQVBFX1JCUkFDS0VUOjExLEVTQ0FQRV9BUE9TOjEyLEVTQ0FQRV9RVU9UOjEzLENEQVRBX1NUQVJUOjE0LENEQVRBX0VORDoxNSxBTkNFU1RPUjoxNixBTkNFU1RPUl9PUl9TRUxGOjE3LEFORDoxOCxBUzoxOSxBU0NFTkRJTkc6MjAsQVQ6MjEsQVRUUklCVVRFOjIyLEJBU0VfVVJJOjIzLEJPVU5EQVJZX1NQQUNFOjI0LEJZOjI1LENBU0U6MjYsQ0FTVDoyNyxDQVNUQUJMRToyOCxDSElMRDoyOSxDT0xMQVRJT046MzAsQ09NTUVOVDozMSxDT05TVFJVQ1RJT046MzIsQ09QWV9OQU1FU1BBQ0VTOjMzLERFQ0xBUkU6MzQsREVGQVVMVDozNSxERVNDRU5EQU5UOjM2LERFU0NFTkRBTlRfT1JfU0VMRjozNyxERVNDRU5ESU5HOjM4LERJVjozOSxET0NVTUVOVDo0MCxET0NVTUVOVF9OT0RFOjQxLEVMRU1FTlQ6NDIsRUxTRTo0MyxFTVBUWTo0NCxFTVBUWV9TRVFVRU5DRTo0NSxFTkNPRElORzo0NixFUTo0NyxFVkVSWTo0OCxFWENFUFQ6NDksRVhURVJOQUw6NTAsRk9MTE9XSU5HOjUxLEZPTExPV0lOR19TSUJMSU5HOjUyLEZPUjo1MyxGVU5DVElPTjo1NCxHRTo1NSxHUkVBVEVTVDo1NixHVDo1NyxJRElWOjU4LElGOjU5LElNUE9SVDo2MCxJTjo2MSxJTkhFUklUOjYyLElOU1RBTkNFOjYzLElOVEVSU0VDVDo2NCxJUzo2NSxJVEVNOjY2LExBWDo2NyxMRTo2OCxMRUFTVDo2OSxMRVQ6NzAsTFQ6NzEsTU9EOjcyLE1PRFVMRTo3MyxOQU1FU1BBQ0U6NzQsTkU6NzUsTk9fSU5IRVJJVDo3NixOT19QUkVTRVJWRTo3NyxOT0RFOjc4LE9GOjc5LE9QVElPTjo4MCxPUjo4MSxPUkRFUjo4MixPUkRFUkVEOjgzLE9SREVSSU5HOjg0LFBBUkVOVDo4NSxQUkVDRURJTkc6ODYsUFJFQ0VESU5HX1NJQkxJTkc6ODcsUFJFU0VSVkU6ODgsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo4OSxSRVRVUk46OTAsU0FUSVNGSUVTOjkxLFNDSEVNQTo5MixTQ0hFTUFfQVRUUklCVVRFOjkzLFNDSEVNQV9FTEVNRU5UOjk0LFNFTEY6OTUsU09NRTo5NixTVEFCTEU6OTcsU1RSSUNUOjk4LFNUUklQOjk5LFRFWFQ6MTAwLFRIRU46MTAxLFRPOjEwMixUUkVBVDoxMDMsVFlQRVNXSVRDSDoxMDQsVU5JT046MTA1LFVOT1JERVJFRDoxMDYsVkFMSURBVEU6MTA3LFZBUklBQkxFOjEwOCxWRVJTSU9OOjEwOSxXSEVSRToxMTAsWFFVRVJZOjExMSxBTExPV0lORzoxMTIsQ0FUQ0g6MTEzLENPTlRFWFQ6MTE0LENPVU5UOjExNSxERUNJTUFMX0ZPUk1BVDoxMTYsREVDSU1BTF9TRVBBUkFUT1I6MTE3LERJR0lUOjExOCxFTkQ6MTE5LEdST1VQOjEyMCxHUk9VUElOR19TRVBBUkFUT1I6MTIxLElORklOSVRZOjEyMixNSU5VU19TSUdOOjEyMyxOQU1FU1BBQ0VfTk9ERToxMjQsTkFOOjEyNSxORVhUOjEyNixPTkxZOjEyNyxQQVRURVJOX1NFUEFSQVRPUjoxMjgsUEVSQ0VOVDoxMjksUEVSX01JTExFOjEzMCxQUkVWSU9VUzoxMzEsU0xJRElORzoxMzIsU1RBUlQ6MTMzLFNXSVRDSDoxMzQsVFJZOjEzNSxUVU1CTElORzoxMzYsVFlQRToxMzcsV0hFTjoxMzgsV0lORE9XOjEzOSxaRVJPX0RJR0lUOjE0MCxBRlRFUjoxNDEsQkVGT1JFOjE0MixDT1BZOjE0MyxERUxFVEU6MTQ0LEZJUlNUOjE0NSxJTlNFUlQ6MTQ2LElOVE86MTQ3LExBU1Q6MTQ4LE1PRElGWToxNDksTk9ERVM6MTUwLFJFTkFNRToxNTEsUkVQTEFDRToxNTIsUkVWQUxJREFUSU9OOjE1MyxTS0lQOjE1NCxVUERBVElORzoxNTUsVkFMVUU6MTU2LFdJVEg6MTU3LEFMTDoxNTgsQU5ZOjE1OSxDT05UQUlOUzoxNjAsQ09OVEVOVDoxNjEsRElBQ1JJVElDUzoxNjIsRElGRkVSRU5UOjE2MyxESVNUQU5DRToxNjQsRU5USVJFOjE2NSxFWEFDVExZOjE2NixGUk9NOjE2NyxGVF9PUFRJT046MTY4LEZUQU5EOjE2OSxGVE5PVDoxNzAsRlRPUjoxNzEsSU5TRU5TSVRJVkU6MTcyLExBTkdVQUdFOjE3MyxMRVZFTFM6MTc0LExPV0VSQ0FTRToxNzUsTU9TVDoxNzYsTk86MTc3LE5PVDoxNzgsT0NDVVJTOjE3OSxQQVJBR1JBUEg6MTgwLFBBUkFHUkFQSFM6MTgxLFBIUkFTRToxODIsUkVMQVRJT05TSElQOjE4MyxTQU1FOjE4NCxTQ09SRToxODUsU0VOU0lUSVZFOjE4NixTRU5URU5DRToxODcsU0VOVEVOQ0VTOjE4OCxTVEVNTUlORzoxODksU1RPUDoxOTAsVEhFU0FVUlVTOjE5MSxUSU1FUzoxOTIsVVBQRVJDQVNFOjE5MyxVU0lORzoxOTQsV0VJR0hUOjE5NSxXSUxEQ0FSRFM6MTk2LFdJVEhPVVQ6MTk3LFdPUkQ6MTk4LFdPUkRTOjE5OSxCUkVBSzoyMDAsQ09OVElOVUU6MjAxLEVYSVQ6MjAyLExPT1A6MjAzLFJFVFVSTklORzoyMDQsV0hJTEU6MjA1LENIRUNLOjIwNixDT0xMRUNUSU9OOjIwNyxDT05TVFJBSU5UOjIwOCxGT1JFQUNIOjIwOSxGT1JFSUdOOjIxMCxJTkRFWDoyMTEsSU5URUdSSVRZOjIxMixLRVk6MjEzLE9OOjIxNCxVTklRVUU6MjE1LEJJTkFSWToyMTYsQU1QX0VSOjIxNyxBUE9TX0VSOjIxOCxRVU9UX0VSOjIxOSxDT05DQVQ6MjIwLExQQVJFTjoyMjEsUlBBUkVOOjIyMixET0xMQVI6MjIzLExCUkFDS0VUOjIyNCxSQlJBQ0tFVDoyMjUsTFNRVUFSRToyMjYsUlNRVUFSRToyMjcsRVFVQUw6MjI4LEJJTkQ6MjI5LE5PVEVRVUFMOjIzMCxBTk5fUEVSQ0VOVDoyMzEsSEFTSDoyMzIsQU1QOjIzMyxDT01NQToyMzQsUVVFU1RJT046MjM1LFNUQVI6MjM2LFBMVVM6MjM3LE1JTlVTOjIzOCxTTUFMTEVSOjIzOSxHUkVBVEVSOjI0MCxTTUFMTEVSRVE6MjQxLEdSRUFURVJFUToyNDIsU01BTExFUl9TTUFMTEVSOjI0MyxHUkVBVEVSX0dSRUFURVI6MjQ0LFNMQVNIOjI0NSxTTEFTSF9TTEFTSDoyNDYsRE9UOjI0NyxET1RfRE9UOjI0OCxDT0xPTjoyNDksQ09MT05fQ09MT046MjUwLEVNUFRZX0NMT1NFX1RBRzoyNTEsQ0xPU0VfVEFHOjI1MixTRU1JQ09MT046MjUzLFZCQVI6MjU0LFBSQUdNQV9TVEFSVDoyNTUsUFJBR01BX0VORDoyNTYsWE1MX0NPTU1FTlRfU1RBUlQ6MjU3LFhNTF9DT01NRU5UX0VORDoyNTgsUElfU1RBUlQ6MjU5LFBJX0VORDoyNjAsQVRUUl9TSUdOOjI2MSxDSEFSUkVGX0RFQzoyNjIsQ0hBUlJFRl9IRVg6MjYzLEFQT1M6MjY0LFFVT1Q6MjY1LE5DTmFtZVN0YXJ0Q2hhcjoyNjYsTkNOYW1lQ2hhcjoyNjcsTF9OQ05hbWU6MjY4LExldHRlcjoyNjksSGV4TGV0dGVyOjI3MCxEaWdpdDoyNzEsRGlnaXRzOjI3MixTOjI3MyxTVToyNzQsTF9QcmFnbWE6Mjc1LExfRGlyQ29tbWVudENvbnN0cnVjdG9yOjI3NixMX0RpclBJQ29uc3RydWN0b3I6Mjc3LExfSW50ZWdlckxpdGVyYWw6Mjc4LExfRGVjaW1hbExpdGVyYWw6Mjc5LExfRG91YmxlTGl0ZXJhbDoyODAsTF9Db21tZW50OjI4MSxMX0FueUNoYXI6MjgyLExfUXVvdFN0cmluZ0xpdGVyYWxDaGFyOjI4MyxMX0Fwb3NTdHJpbmdMaXRlcmFsQ2hhcjoyODQsZ2V0R3JhbW1hckZpbGVOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuInhxdWVyeS9TdHJpbmdMZXhlci5nIn19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChmLnByb3RvdHlwZSx7bVFVT1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5RVU9ULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pblF1b3RTdHIpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiUVVPVCIsIiB0aGlzLmluUXVvdFN0ciAiKTt0aGlzLm1hdGNoKCciJyksdGhpcy5pblF1b3RTdHI9IXRoaXMuaW5RdW90U3RyLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUFQT1M6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5BUE9TLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pbkFwb3NTdHIpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiQVBPUyIsIiB0aGlzLmluQXBvc1N0ciAiKTt0aGlzLm1hdGNoKCInIiksdGhpcy5pbkFwb3NTdHI9IXRoaXMuaW5BcG9zU3RyLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVTQ0FQRV9RVU9UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRVNDQVBFX1FVT1QsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluUXVvdFN0cil0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJFU0NBUEVfUVVPVCIsIiB0aGlzLmluUXVvdFN0ciAiKTt0aGlzLm1hdGNoKCciIicpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVTQ0FQRV9BUE9TOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuRVNDQVBFX0FQT1MsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluQXBvc1N0cil0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJFU0NBUEVfQVBPUyIsIiB0aGlzLmluQXBvc1N0ciAiKTt0aGlzLm1hdGNoKCInJyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxfUHJlZGVmaW5lZEVudGl0eVJlZjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfUHJlZGVmaW5lZEVudGl0eVJlZixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISh0aGlzLmluUXVvdFN0cnx0aGlzLmluQXBvc1N0cikpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9QcmVkZWZpbmVkRW50aXR5UmVmIiwiIHRoaXMuaW5RdW90U3RyIHwgdGhpcy5pbkFwb3NTdHIgIik7dGhpcy5tYXRjaCgiJiIpO3ZhciBjPTU7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UibCI6Yz0xO2JyZWFrO2Nhc2UiZyI6Yz0yO2JyZWFrO2Nhc2UiYSI6dmFyIGU9dGhpcy5pbnB1dC5MQSgyKTtpZihlPT0icCIpYz0zO2Vsc2V7aWYoZSE9Im0iKXt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEsMyx0aGlzLmlucHV0KTt0aHJvdyBmfWM9NX1icmVhaztjYXNlInEiOmM9NDticmVhaztkZWZhdWx0OnZhciBmPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMSwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9c3dpdGNoKGMpe2Nhc2UgMTp0aGlzLm1hdGNoKCJsdCIpO2JyZWFrO2Nhc2UgMjp0aGlzLm1hdGNoKCJndCIpO2JyZWFrO2Nhc2UgMzp0aGlzLm1hdGNoKCJhcG9zIik7YnJlYWs7Y2FzZSA0OnRoaXMubWF0Y2goInF1b3QiKTticmVhaztjYXNlIDU6dGhpcy5tYXRjaCgiYW1wIil9dGhpcy5tYXRjaCgiOyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxfQ2hhclJlZjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfQ2hhclJlZixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUwsYz0yLGU9dGhpcy5pbnB1dC5MQSgxKTtpZihlIT0iJiIpe3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNCwwLHRoaXMuaW5wdXQpO3Rocm93IGh9dmFyIGY9dGhpcy5pbnB1dC5MQSgyKTtpZihmIT0iIyIpe3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNCwxLHRoaXMuaW5wdXQpO3Rocm93IGh9dmFyIGc9dGhpcy5pbnB1dC5MQSgzKTtpZihnPT0ieCIpYz0yO2Vsc2V7aWYoIShnPj0iMCImJmc8PSI5IiYmdGhpcy5pblF1b3RTdHJ8dGhpcy5pbkFwb3NTdHIpKXt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDQsMix0aGlzLmlucHV0KTt0aHJvdyBofWM9MX1zd2l0Y2goYyl7Y2FzZSAxOmlmKCEodGhpcy5pblF1b3RTdHJ8dGhpcy5pbkFwb3NTdHIpKXRocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfQ2hhclJlZiIsIiB0aGlzLmluUXVvdFN0ciB8IHRoaXMuaW5BcG9zU3RyICIpO3RoaXMubWF0Y2goIiYjIik7dmFyIGk9MDthOmRve3ZhciBqPTIsaz10aGlzLmlucHV0LkxBKDEpO2s+PSIwIiYmazw9IjkiJiYoaj0xKTtzd2l0Y2goail7Y2FzZSAxOnRoaXMubWF0Y2hSYW5nZSgiMCIsIjkiKTticmVhaztkZWZhdWx0OmlmKGk+PTEpYnJlYWsgYTt2YXIgbD1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigyLHRoaXMuaW5wdXQpO3Rocm93IGx9aSsrfXdoaWxlKCEwKTt0aGlzLm1hdGNoKCI7Iik7YnJlYWs7Y2FzZSAyOnRoaXMubWF0Y2goIiYjeCIpO3ZhciBtPTA7Yjpkb3t2YXIgbj0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvPj0iMCImJm88PSI5Inx8bz49IkEiJiZvPD0iRiJ8fG8+PSJhIiYmbzw9ImYiKW49MTtzd2l0Y2gobil7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IjAiJiZ0aGlzLmlucHV0LkxBKDEpPD0iOSJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJBIiYmdGhpcy5pbnB1dC5MQSgxKTw9IkYifHx0aGlzLmlucHV0LkxBKDEpPj0iYSImJnRoaXMuaW5wdXQuTEEoMSk8PSJmIikpe3ZhciBwPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihwKSxwfXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYobT49MSlicmVhayBiO3ZhciBsPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDMsdGhpcy5pbnB1dCk7dGhyb3cgbH1tKyt9d2hpbGUoITApO3RoaXMubWF0Y2goIjsiKX10aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MX1F1b3RTdHJpbmdMaXRlcmFsQ2hhcjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfUXVvdFN0cmluZ0xpdGVyYWxDaGFyLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pblF1b3RTdHIpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9RdW90U3RyaW5nTGl0ZXJhbENoYXIiLCIgdGhpcy5pblF1b3RTdHIgIik7dmFyIGM9MDthOmRve3ZhciBlPTIsZj10aGlzLmlucHV0LkxBKDEpO2lmKGY+PSIJIiYmZjw9IlxuInx8Zj09IlxyInx8Zj49IiAiJiZmPD0iISJ8fGY+PSIjIiYmZjw9IiUifHxmPj0iJyImJmY8PSLtn78ifHxmPj0i7oCAIiYmZjw9Iu+/vSIpZT0xO3N3aXRjaChlKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIgIiYmdGhpcy5pbnB1dC5MQSgxKTw9IiEifHx0aGlzLmlucHV0LkxBKDEpPj0iIyImJnRoaXMuaW5wdXQuTEEoMSk8PSIlInx8dGhpcy5pbnB1dC5MQSgxKT49IiciJiZ0aGlzLmlucHV0LkxBKDEpPD0i7Z+/Inx8dGhpcy5pbnB1dC5MQSgxKT49Iu6AgCImJnRoaXMuaW5wdXQuTEEoMSk8PSLvv70iKSl7dmFyIGc9bmV3IGQuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGcpLGd9dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihjPj0xKWJyZWFrIGE7dmFyIGg9bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oNSx0aGlzLmlucHV0KTt0aHJvdyBofWMrK313aGlsZSghMCk7dGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9BcG9zU3RyaW5nTGl0ZXJhbENoYXI6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MX0Fwb3NTdHJpbmdMaXRlcmFsQ2hhcixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5BcG9zU3RyKXRocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfQXBvc1N0cmluZ0xpdGVyYWxDaGFyIiwiIHRoaXMuaW5BcG9zU3RyICIpO3ZhciBjPTA7YTpkb3t2YXIgZT0yLGY9dGhpcy5pbnB1dC5MQSgxKTtpZihmPj0iCSImJmY8PSJcbiJ8fGY9PSJcciJ8fGY+PSIgIiYmZjw9IiUifHxmPj0iKCImJmY8PSLtn78ifHxmPj0i7oCAIiYmZjw9Iu+/vSIpZT0xO3N3aXRjaChlKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIgIiYmdGhpcy5pbnB1dC5MQSgxKTw9IiUifHx0aGlzLmlucHV0LkxBKDEpPj0iKCImJnRoaXMuaW5wdXQuTEEoMSk8PSLtn78ifHx0aGlzLmlucHV0LkxBKDEpPj0i7oCAIiYmdGhpcy5pbnB1dC5MQSgxKTw9Iu+/vSIpKXt2YXIgZz1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoZyksZ310aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKGM+PTEpYnJlYWsgYTt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig2LHRoaXMuaW5wdXQpO3Rocm93IGh9YysrfXdoaWxlKCEwKTt0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MX0FueUNoYXI6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MX0FueUNoYXIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEhdGhpcy5pblF1b3RTdHJ8fCEhdGhpcy5pbkFwb3NTdHIpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9BbnlDaGFyIiwiICF0aGlzLmluUXVvdFN0ciAmJiAhdGhpcy5pbkFwb3NTdHIgIik7dmFyIGM9MDthOmRve3ZhciBlPTIsZj10aGlzLmlucHV0LkxBKDEpO2lmKGY+PSIJIiYmZjw9IlxuInx8Zj09IlxyInx8Zj49IiAiJiZmPD0iJSJ8fGY+PSInIiYmZjw9IjsifHxmPj0iPSImJmY8PSJ6Inx8Zj09InwifHxmPj0ifiImJmY8PSLtn78ifHxmPj0i7oCAIiYmZjw9Iu+/vSIpZT0xO3N3aXRjaChlKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIgIiYmdGhpcy5pbnB1dC5MQSgxKTw9IiUifHx0aGlzLmlucHV0LkxBKDEpPj0iJyImJnRoaXMuaW5wdXQuTEEoMSk8PSI7Inx8dGhpcy5pbnB1dC5MQSgxKT49Ij0iJiZ0aGlzLmlucHV0LkxBKDEpPD0ieiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJ8Inx8dGhpcy5pbnB1dC5MQSgxKT49In4iJiZ0aGlzLmlucHV0LkxBKDEpPD0i7Z+/Inx8dGhpcy5pbnB1dC5MQSgxKT49Iu6AgCImJnRoaXMuaW5wdXQuTEEoMSk8PSLvv70iKSl7dmFyIGc9bmV3IGQuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGcpLGd9dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihjPj0xKWJyZWFrIGE7dmFyIGg9bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oNyx0aGlzLmlucHV0KTt0aHJvdyBofWMrK313aGlsZSghMCk7dGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtVG9rZW5zOmZ1bmN0aW9uKCl7dmFyIGE9OTthPXRoaXMuZGZhOC5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChhKXtjYXNlIDE6dGhpcy5tUVVPVCgpO2JyZWFrO2Nhc2UgMjp0aGlzLm1BUE9TKCk7YnJlYWs7Y2FzZSAzOnRoaXMubUVTQ0FQRV9RVU9UKCk7YnJlYWs7Y2FzZSA0OnRoaXMubUVTQ0FQRV9BUE9TKCk7YnJlYWs7Y2FzZSA1OnRoaXMubUxfUHJlZGVmaW5lZEVudGl0eVJlZigpO2JyZWFrO2Nhc2UgNjp0aGlzLm1MX0NoYXJSZWYoKTticmVhaztjYXNlIDc6dGhpcy5tTF9RdW90U3RyaW5nTGl0ZXJhbENoYXIoKTticmVhaztjYXNlIDg6dGhpcy5tTF9BcG9zU3RyaW5nTGl0ZXJhbENoYXIoKTticmVhaztjYXNlIDk6dGhpcy5tTF9BbnlDaGFyKCl9fX0sITApLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGYse0RGQThfZW90UzoiAe+/vwEHAVxmAe+/vwERARIBEwHvv78BFQLvv78BFgHvv78BGFxy77+/IixERkE4X2VvZlM6Ihvvv78iLERGQThfbWluUzoiAwkBIwMJAVwwAQkC77+/AQkBXDABCQPvv78DXDAB77+/AlwwAe+/vwFcMALvv78iLERGQThfbWF4UzoiA++/vQFxA++/vQFcMAHvv70C77+/Ae+/vQFcMAHvv70D77+/A1wwAe+/vwJcMAHvv78BXDAC77+/IixERkE4X2FjY2VwdFM6Ignvv78BXGIBCQPvv78BBwEGAQUD77+/AQEC77+/AQIB77+/AQMBBCIsREZBOF9zcGVjaWFsUzoiAQcBDgFcMAEEAREBXG4BBQEJARAC77+/AQ8BXGIBBgPvv78BXHIBAwELAe+/vwEBAVxmAe+/vwECAu+/v30+IixERkE4X3RyYW5zaXRpb25TOlsiAgQC77+/AQQS77+/AgQBAQMEAQMBAhQEAQU+BAEFAQQBBe2eggTgoIDvv7/hv74EIiwiAlxiAu+/vwFcYhLvv78CXGIBBgNcYgHvv78BXG4UXGIBCT5cYgEJAVxiAQntnoJcYuCggO+/v+G/vlxiIiwiAlxyAu+/vwFcchLvv78CXHIBXG4DXHIB77+/AQsUXHIBDj5ccgEOAVxyAQ7tnoJccuCggO+/v+G/vlxyIiwiAQ8977+/ARAF77+/ARAE77+/ARAE77+/ARAiLCICBALvv78BBBLvv78CBAFcYgMEAe+/vwFcchQEAQU+BAEFAQQBBe2eggTgoIDvv7/hv74EIiwiAgUC77+/AQUS77+/AgUBCQMFAe+/vwEO7Z+YBeCggO+/v+G/vgUiLCICXGIC77+/AVxiEu+/vwZcYgHvv78BXG4UXGIBCT5cYgEJAVxiAQntnoJcYuCggO+/v+G/vlxiIiwiAe+/vyIsIgJcYgLvv78BXGIS77+/BlxiAe+/vwFcbhRcYgEJPlxiAQkBXGIBCe2eglxi4KCA77+/4b++XGIiLCIiLCIiLCICXHIC77+/AVxyEu+/vwJccgFcbgNccgHvv78VXHIBDj5ccgEOAVxyAQ7tnoJccuCggO+/v+G/vlxyIiwiAe+/vyIsIgJccgLvv78BXHIS77+/AlxyAVxuA1xyAe+/vxVccgEOPlxyAQ4BXHIBDu2eglxy4KCA77+/4b++XHIiLCIiLCIiLCIiLCIB77+/IiwiAe+/vyIsIgHvv78iLCIiLCIB77+/IiwiAe+/vyIsIiIsIgHvv78iLCIiLCIiXX0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGYse0RGQThfZW90OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhmLkRGQThfZW90UyksREZBOF9lb2Y6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKGYuREZBOF9lb2ZTKSxERkE4X21pbjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMoZi5ERkE4X21pblMpLERGQThfbWF4OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhmLkRGQThfbWF4UyksREZBOF9hY2NlcHQ6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKGYuREZBOF9hY2NlcHRTKSxERkE4X3NwZWNpYWw6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKGYuREZBOF9zcGVjaWFsUyksREZBOF90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjPWYuREZBOF90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKGI9MDtiPGM7YisrKWEucHVzaChkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcoZi5ERkE4X3RyYW5zaXRpb25TW2JdKSk7cmV0dXJuIGF9KCl9KSxmLkRGQTg9ZnVuY3Rpb24oYSl7dGhpcy5yZWNvZ25pemVyPWEsdGhpcy5kZWNpc2lvbk51bWJlcj04LHRoaXMuZW90PWYuREZBOF9lb3QsdGhpcy5lb2Y9Zi5ERkE4X2VvZix0aGlzLm1pbj1mLkRGQThfbWluLHRoaXMubWF4PWYuREZBOF9tYXgsdGhpcy5hY2NlcHQ9Zi5ERkE4X2FjY2VwdCx0aGlzLnNwZWNpYWw9Zi5ERkE4X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPWYuREZBOF90cmFuc2l0aW9ufSxkLmFudGxyLmxhbmcuZXh0ZW5kKGYuREZBOCxkLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIxOjE6IFRva2VucyA6ICggUVVPVCB8IEFQT1MgfCBFU0NBUEVfUVVPVCB8IEVTQ0FQRV9BUE9TIHwgTF9QcmVkZWZpbmVkRW50aXR5UmVmIHwgTF9DaGFyUmVmIHwgTF9RdW90U3RyaW5nTGl0ZXJhbENoYXIgfCBMX0Fwb3NTdHJpbmdMaXRlcmFsQ2hhciB8IExfQW55Q2hhciApOyJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLGU9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnZhciBjPWIuTEEoMSksZD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLGM9PSInIiYmKHRoaXMuaW5BcG9zU3RyfHx0aGlzLmluUXVvdFN0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2E9MTE6KGM+PSIJIiYmYzw9IlxuInx8Yz09IlxyInx8Yz49IiAiJiZjPD0iISJ8fGM+PSIjIiYmYzw9IiUifHxjPj0iKCImJmM8PSI7Inx8Yz49Ij0iJiZjPD0ieiJ8fGM9PSJ8Inx8Yz49In4iJiZjPD0i7Z+/Inx8Yz49Iu6AgCImJmM8PSLvv70iKSYmKHRoaXMuaW5RdW90U3RyfHwhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cik/YT0xMzpjIT0iPCImJmMhPSJ7IiYmYyE9In0ifHwhdGhpcy5pblF1b3RTdHI/Yz09JyInJiYhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cj9hPTEwOmE9MTI6YT0xNCxiLnNlZWsoZCk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDE6dmFyIGU9Yi5MQSgxKSxmPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pbkFwb3NTdHI/YT05OiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyJiYoYT0xMCksYi5zZWVrKGYpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyOnZhciBnPWIuTEEoMSksaD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuaW5RdW90U3RyP2E9MTQ6IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHImJihhPTEwKSxiLnNlZWsoaCk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDM6dmFyIGk9Yi5MQSgxKSxqPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pblF1b3RTdHI/YT0xNDp0aGlzLmluQXBvc1N0ciYmKGE9OSksYi5zZWVrKGopO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSA0OnZhciBrPWIuTEEoMSksbD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLGs9PSIjIj9hPTE1OihrPT0iYSJ8fGs9PSJnInx8az09ImwifHxrPT0icSIpJiZ0aGlzLmluUXVvdFN0cnx0aGlzLmluQXBvc1N0ciYmKGE9MTYpLGIuc2VlayhsKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNTp2YXIgbT1iLkxBKDEpLG49Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSwobT49IgkiJiZtPD0iXG4ifHxtPT0iXHIifHxtPj0iICImJm08PSIlInx8bT49IigiJiZtPD0iOyJ8fG0+PSI9IiYmbTw9InoifHxtPT0ifCJ8fG0+PSJ+IiYmbTw9Iu2fvyJ8fG0+PSLugIAiJiZtPD0i77+9IikmJih0aGlzLmluQXBvc1N0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2E9ODptIT0iPCImJm0hPSJ7IiYmbSE9In0ifHwhdGhpcy5pbkFwb3NTdHI/bT09IiciJiYhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cj9hPTEwOmE9MTk6YT05LGIuc2VlayhuKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNjp2YXIgbz1iLkxBKDEpLHA9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSwobz49IgkiJiZvPD0iXG4ifHxvPT0iXHIifHxvPj0iICImJm88PSIhInx8bz49IiMiJiZvPD0iJSJ8fG8+PSInIiYmbzw9IjsifHxvPj0iPSImJm88PSJ6Inx8bz09InwifHxvPj0ifiImJm88PSLtn78ifHxvPj0i7oCAIiYmbzw9Iu+/vSIpJiYodGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9hPTEzOm8hPSI8IiYmbyE9InsiJiZvIT0ifSJ8fCF0aGlzLmluUXVvdFN0cj9vPT0nIicmJiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyP2E9MTA6YT0yNDphPTE0LGIuc2VlayhwKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNzp2YXIgcT1iLkxBKDEpLHI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxxPT0nIicmJih0aGlzLmluQXBvc1N0cnx8dGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9hPTE6cT09IiciJiYodGhpcy5pbkFwb3NTdHJ8fHRoaXMuaW5RdW90U3RyfHwhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cik/YT0yOnE9PSImIj9hPTM6KHE+PSIJIiYmcTw9IlxuInx8cT09IlxyInx8cT49IiAiJiZxPD0iISJ8fHE+PSIjIiYmcTw9IiUifHxxPj0iKCImJnE8PSI7Inx8cT49Ij0iJiZxPD0ieiJ8fHE9PSJ8Inx8cT49In4iJiZxPD0i7Z+/Inx8cT49Iu6AgCImJnE8PSLvv70iKSYmKHRoaXMuaW5BcG9zU3RyfHx0aGlzLmluUXVvdFN0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2E9NDoocT09IjwifHxxPT0ieyJ8fHE9PSJ9IikmJih0aGlzLmluQXBvc1N0cnx8dGhpcy5pblF1b3RTdHIpJiYoYT01KSxiLnNlZWsocik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDg6dmFyIHM9Yi5MQSgxKSx0PWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pbkFwb3NTdHI/YT0yMzp0aGlzLmluUXVvdFN0cj9hPTE0OiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyJiYoYT0xMCksYi5zZWVrKHQpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSA5OnZhciB1PWIuTEEoMSksdj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuaW5RdW90U3RyP2E9MjA6dGhpcy5pbkFwb3NTdHI/YT05OiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyJiYoYT0xMCksYi5zZWVrKHYpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxMDp2YXIgdz1iLkxBKDEpLHg9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSwodz49IgkiJiZ3PD0iXG4ifHx3PT0iXHIifHx3Pj0iICImJnc8PSIhInx8dz49IiMiJiZ3PD0iJSJ8fHc+PSIoIiYmdzw9Iu2fvyJ8fHc+PSLugIAiJiZ3PD0i77+9IikmJih0aGlzLmluQXBvc1N0cnx8dGhpcy5pblF1b3RTdHIpP2E9NTp3PT0iJyImJnRoaXMuaW5RdW90U3RyP2E9MTQ6dz09JyInJiZ0aGlzLmluQXBvc1N0cj9hPTk6YT0xOCxiLnNlZWsoeCk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDExOnZhciB5PWIuTEEoMSksej1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuaW5RdW90U3RyP2E9MjU6dGhpcy5pbkFwb3NTdHI/YT05OiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyJiYoYT0xMCksYi5zZWVrKHopO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxMjp2YXIgQT1iLkxBKDEpLEI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLmluQXBvc1N0cj9hPTI2OnRoaXMuaW5RdW90U3RyP2E9MTQ6IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHImJihhPTEwKSxiLnNlZWsoQik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDEzOnZhciBDPWIuTEEoMSksRD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuaW5RdW90U3RyP2E9MTQ6dGhpcy5pbkFwb3NTdHI/YT05OiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyJiYoYT0xMCksYi5zZWVrKEQpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxNDp2YXIgRT1iLkxBKDEpLEY9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxFPT0nIicmJih0aGlzLmluQXBvc1N0cnx8dGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9hPTY6KEU+PSIJIiYmRTw9IlxuInx8RT09IlxyInx8RT49IiAiJiZFPD0iISJ8fEU+PSIjIiYmRTw9IiUifHxFPj0iKCImJkU8PSI7Inx8RT49Ij0iJiZFPD0ieiJ8fEU9PSJ8Inx8RT49In4iJiZFPD0i7Z+/Inx8RT49Iu6AgCImJkU8PSLvv70iKSYmKHRoaXMuaW5BcG9zU3RyfHwhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cik/YT04OkUhPSI8IiYmRSE9InsiJiZFIT0ifSJ8fCF0aGlzLmluQXBvc1N0cj9FPT0iJyImJiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyP2E9MTA6YT03OmE9OSxiLnNlZWsoRik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDE1OnZhciBHPWIuTEEoMSksSD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLChHPj0iCSImJkc8PSJcbiJ8fEc9PSJcciJ8fEc+PSIgIiYmRzw9IiEifHxHPj0iIyImJkc8PSIlInx8Rz49IiciJiZHPD0iOyJ8fEc+PSI9IiYmRzw9InoifHxHPT0ifCJ8fEc+PSJ+IiYmRzw9Iu2fvyJ8fEc+PSLugIAiJiZHPD0i77+9IikmJih0aGlzLmluUXVvdFN0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2E9MTM6RyE9IjwiJiZHIT0ieyImJkchPSJ9Inx8IXRoaXMuaW5RdW90U3RyP0c9PSciJyYmIXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHI/YT0xMDphPTIyOmE9MTQsYi5zZWVrKEgpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxNjp2YXIgST1iLkxBKDEpLEo9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSwoST49IgkiJiZJPD0iXG4ifHxJPT0iXHIifHxJPj0iICImJkk8PSIlInx8ST49IigiJiZJPD0iOyJ8fEk+PSI9IiYmSTw9InoifHxJPT0ifCJ8fEk+PSJ+IiYmSTw9Iu2fvyJ8fEk+PSLugIAiJiZJPD0i77+9IikmJih0aGlzLmluQXBvc1N0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2E9ODpJIT0iPCImJkkhPSJ7IiYmSSE9In0ifHwhdGhpcy5pbkFwb3NTdHI/ST09IiciJiYhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cj9hPTEwOmE9MjE6YT05LGIuc2VlayhKKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTc6dmFyIEs9Yi5MQSgxKSxMPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsKEs+PSIJIiYmSzw9IlxuInx8Sz09IlxyInx8Sz49IiAiJiZLPD0iISJ8fEs+PSIjIiYmSzw9IiUifHxLPj0iKCImJks8PSI7Inx8Sz49Ij0iJiZLPD0ieiJ8fEs9PSJ8Inx8Sz49In4iJiZLPD0i7Z+/Inx8Sz49Iu6AgCImJks8PSLvv70iKSYmKHRoaXMuaW5BcG9zU3RyfHx0aGlzLmluUXVvdFN0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2E9NDpLPT0iJyImJih0aGlzLmluUXVvdFN0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2E9MTM6Sz09JyInJiYodGhpcy5pbkFwb3NTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9hPTg6SyE9IjwiJiZLIT0ieyImJkshPSJ9Inx8IXRoaXMuaW5BcG9zU3RyJiYhdGhpcy5pblF1b3RTdHI/YT0xNzphPTUsYi5zZWVrKEwpO2lmKGE+PTApcmV0dXJuIGF9fS5jYWxsKHRoaXMucmVjb2duaXplcixhLGIpO2lmKCFkLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZSkpcmV0dXJuIGU7dmFyIGY9bmV3IGQuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksOCxjLGIpO3Rocm93IHRoaXMuZXJyb3IoZiksZn0sZHVtbXk6bnVsbH0pfSgpLGIuU3RyaW5nTGV4ZXI9Zn0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5L1hNTExleGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL21vZGUveHF1ZXJ5L2FudGxyMy1hbGwiLCJhY2UvbW9kZS94cXVlcnkvWFFEVExleGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vYW50bHIzLWFsbCIpLm9yZyxlPWEoIi4vWFFEVExleGVyIikuWFFEVExleGVyLGY9ZnVuY3Rpb24oYSxiKXtifHwoYj1uZXcgZC5hbnRsci5ydW50aW1lLlJlY29nbml6ZXJTaGFyZWRTdGF0ZSksZnVuY3Rpb24oKXt0aGlzLmluRWxlbT0hMCx0aGlzLmluQXBvc0F0dHI9ITEsdGhpcy5pblF1b3RBdHRyPSExLHRoaXMuaXNJbkVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbkVsZW19LHRoaXMuaXNJbkFwb3NBdHRyaWJ1dGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbkFwb3NBdHRyfSx0aGlzLmlzSW5RdW90QXR0cj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluUXVvdEF0dHJ9LHRoaXMuYWRkVG9TdGFjaz1mdW5jdGlvbihhKXshdGhpcy5pbkFwb3NBdHRyJiYhdGhpcy5pblF1b3RBdHRyJiYodGhpcy5pbkVsZW09ITEpLGEucHVzaCh0aGlzKX19LmNhbGwodGhpcyksdGhpcy5kZmExNj1uZXcgZi5ERkExNih0aGlzKSxmLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEsYil9O2QuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGYse0VPRjotMSxMX1F1b3RBdHRyQ29udGVudENoYXI6NCxMX0Fwb3NBdHRyQ29udGVudENoYXI6NSxMX0VsZW1lbnRDb250ZW50Q2hhcjo2LExfQ0RhdGFTZWN0aW9uOjcsTF9QcmVkZWZpbmVkRW50aXR5UmVmOjgsTF9DaGFyUmVmOjksRVNDQVBFX0xCUkFDS0VUOjEwLEVTQ0FQRV9SQlJBQ0tFVDoxMSxFU0NBUEVfQVBPUzoxMixFU0NBUEVfUVVPVDoxMyxDREFUQV9TVEFSVDoxNCxDREFUQV9FTkQ6MTUsQU5DRVNUT1I6MTYsQU5DRVNUT1JfT1JfU0VMRjoxNyxBTkQ6MTgsQVM6MTksQVNDRU5ESU5HOjIwLEFUOjIxLEFUVFJJQlVURToyMixCQVNFX1VSSToyMyxCT1VOREFSWV9TUEFDRToyNCxCWToyNSxDQVNFOjI2LENBU1Q6MjcsQ0FTVEFCTEU6MjgsQ0hJTEQ6MjksQ09MTEFUSU9OOjMwLENPTU1FTlQ6MzEsQ09OU1RSVUNUSU9OOjMyLENPUFlfTkFNRVNQQUNFUzozMyxERUNMQVJFOjM0LERFRkFVTFQ6MzUsREVTQ0VOREFOVDozNixERVNDRU5EQU5UX09SX1NFTEY6MzcsREVTQ0VORElORzozOCxESVY6MzksRE9DVU1FTlQ6NDAsRE9DVU1FTlRfTk9ERTo0MSxFTEVNRU5UOjQyLEVMU0U6NDMsRU1QVFk6NDQsRU1QVFlfU0VRVUVOQ0U6NDUsRU5DT0RJTkc6NDYsRVE6NDcsRVZFUlk6NDgsRVhDRVBUOjQ5LEVYVEVSTkFMOjUwLEZPTExPV0lORzo1MSxGT0xMT1dJTkdfU0lCTElORzo1MixGT1I6NTMsRlVOQ1RJT046NTQsR0U6NTUsR1JFQVRFU1Q6NTYsR1Q6NTcsSURJVjo1OCxJRjo1OSxJTVBPUlQ6NjAsSU46NjEsSU5IRVJJVDo2MixJTlNUQU5DRTo2MyxJTlRFUlNFQ1Q6NjQsSVM6NjUsSVRFTTo2NixMQVg6NjcsTEU6NjgsTEVBU1Q6NjksTEVUOjcwLExUOjcxLE1PRDo3MixNT0RVTEU6NzMsTkFNRVNQQUNFOjc0LE5FOjc1LE5PX0lOSEVSSVQ6NzYsTk9fUFJFU0VSVkU6NzcsTk9ERTo3OCxPRjo3OSxPUFRJT046ODAsT1I6ODEsT1JERVI6ODIsT1JERVJFRDo4MyxPUkRFUklORzo4NCxQQVJFTlQ6ODUsUFJFQ0VESU5HOjg2LFBSRUNFRElOR19TSUJMSU5HOjg3LFBSRVNFUlZFOjg4LFBST0NFU1NJTkdfSU5TVFJVQ1RJT046ODksUkVUVVJOOjkwLFNBVElTRklFUzo5MSxTQ0hFTUE6OTIsU0NIRU1BX0FUVFJJQlVURTo5MyxTQ0hFTUFfRUxFTUVOVDo5NCxTRUxGOjk1LFNPTUU6OTYsU1RBQkxFOjk3LFNUUklDVDo5OCxTVFJJUDo5OSxURVhUOjEwMCxUSEVOOjEwMSxUTzoxMDIsVFJFQVQ6MTAzLFRZUEVTV0lUQ0g6MTA0LFVOSU9OOjEwNSxVTk9SREVSRUQ6MTA2LFZBTElEQVRFOjEwNyxWQVJJQUJMRToxMDgsVkVSU0lPTjoxMDksV0hFUkU6MTEwLFhRVUVSWToxMTEsQUxMT1dJTkc6MTEyLENBVENIOjExMyxDT05URVhUOjExNCxDT1VOVDoxMTUsREVDSU1BTF9GT1JNQVQ6MTE2LERFQ0lNQUxfU0VQQVJBVE9SOjExNyxESUdJVDoxMTgsRU5EOjExOSxHUk9VUDoxMjAsR1JPVVBJTkdfU0VQQVJBVE9SOjEyMSxJTkZJTklUWToxMjIsTUlOVVNfU0lHTjoxMjMsTkFNRVNQQUNFX05PREU6MTI0LE5BTjoxMjUsTkVYVDoxMjYsT05MWToxMjcsUEFUVEVSTl9TRVBBUkFUT1I6MTI4LFBFUkNFTlQ6MTI5LFBFUl9NSUxMRToxMzAsUFJFVklPVVM6MTMxLFNMSURJTkc6MTMyLFNUQVJUOjEzMyxTV0lUQ0g6MTM0LFRSWToxMzUsVFVNQkxJTkc6MTM2LFRZUEU6MTM3LFdIRU46MTM4LFdJTkRPVzoxMzksWkVST19ESUdJVDoxNDAsQUZURVI6MTQxLEJFRk9SRToxNDIsQ09QWToxNDMsREVMRVRFOjE0NCxGSVJTVDoxNDUsSU5TRVJUOjE0NixJTlRPOjE0NyxMQVNUOjE0OCxNT0RJRlk6MTQ5LE5PREVTOjE1MCxSRU5BTUU6MTUxLFJFUExBQ0U6MTUyLFJFVkFMSURBVElPTjoxNTMsU0tJUDoxNTQsVVBEQVRJTkc6MTU1LFZBTFVFOjE1NixXSVRIOjE1NyxBTEw6MTU4LEFOWToxNTksQ09OVEFJTlM6MTYwLENPTlRFTlQ6MTYxLERJQUNSSVRJQ1M6MTYyLERJRkZFUkVOVDoxNjMsRElTVEFOQ0U6MTY0LEVOVElSRToxNjUsRVhBQ1RMWToxNjYsRlJPTToxNjcsRlRfT1BUSU9OOjE2OCxGVEFORDoxNjksRlROT1Q6MTcwLEZUT1I6MTcxLElOU0VOU0lUSVZFOjE3MixMQU5HVUFHRToxNzMsTEVWRUxTOjE3NCxMT1dFUkNBU0U6MTc1LE1PU1Q6MTc2LE5POjE3NyxOT1Q6MTc4LE9DQ1VSUzoxNzksUEFSQUdSQVBIOjE4MCxQQVJBR1JBUEhTOjE4MSxQSFJBU0U6MTgyLFJFTEFUSU9OU0hJUDoxODMsU0FNRToxODQsU0NPUkU6MTg1LFNFTlNJVElWRToxODYsU0VOVEVOQ0U6MTg3LFNFTlRFTkNFUzoxODgsU1RFTU1JTkc6MTg5LFNUT1A6MTkwLFRIRVNBVVJVUzoxOTEsVElNRVM6MTkyLFVQUEVSQ0FTRToxOTMsVVNJTkc6MTk0LFdFSUdIVDoxOTUsV0lMRENBUkRTOjE5NixXSVRIT1VUOjE5NyxXT1JEOjE5OCxXT1JEUzoxOTksQlJFQUs6MjAwLENPTlRJTlVFOjIwMSxFWElUOjIwMixMT09QOjIwMyxSRVRVUk5JTkc6MjA0LFdISUxFOjIwNSxDSEVDSzoyMDYsQ09MTEVDVElPTjoyMDcsQ09OU1RSQUlOVDoyMDgsRk9SRUFDSDoyMDksRk9SRUlHTjoyMTAsSU5ERVg6MjExLElOVEVHUklUWToyMTIsS0VZOjIxMyxPTjoyMTQsVU5JUVVFOjIxNSxCSU5BUlk6MjE2LEFNUF9FUjoyMTcsQVBPU19FUjoyMTgsUVVPVF9FUjoyMTksQ09OQ0FUOjIyMCxMUEFSRU46MjIxLFJQQVJFTjoyMjIsRE9MTEFSOjIyMyxMQlJBQ0tFVDoyMjQsUkJSQUNLRVQ6MjI1LExTUVVBUkU6MjI2LFJTUVVBUkU6MjI3LEVRVUFMOjIyOCxCSU5EOjIyOSxOT1RFUVVBTDoyMzAsQU5OX1BFUkNFTlQ6MjMxLEhBU0g6MjMyLEFNUDoyMzMsQ09NTUE6MjM0LFFVRVNUSU9OOjIzNSxTVEFSOjIzNixQTFVTOjIzNyxNSU5VUzoyMzgsU01BTExFUjoyMzksR1JFQVRFUjoyNDAsU01BTExFUkVROjI0MSxHUkVBVEVSRVE6MjQyLFNNQUxMRVJfU01BTExFUjoyNDMsR1JFQVRFUl9HUkVBVEVSOjI0NCxTTEFTSDoyNDUsU0xBU0hfU0xBU0g6MjQ2LERPVDoyNDcsRE9UX0RPVDoyNDgsQ09MT046MjQ5LENPTE9OX0NPTE9OOjI1MCxFTVBUWV9DTE9TRV9UQUc6MjUxLENMT1NFX1RBRzoyNTIsU0VNSUNPTE9OOjI1MyxWQkFSOjI1NCxQUkFHTUFfU1RBUlQ6MjU1LFBSQUdNQV9FTkQ6MjU2LFhNTF9DT01NRU5UX1NUQVJUOjI1NyxYTUxfQ09NTUVOVF9FTkQ6MjU4LFBJX1NUQVJUOjI1OSxQSV9FTkQ6MjYwLEFUVFJfU0lHTjoyNjEsQ0hBUlJFRl9ERUM6MjYyLENIQVJSRUZfSEVYOjI2MyxBUE9TOjI2NCxRVU9UOjI2NSxOQ05hbWVTdGFydENoYXI6MjY2LE5DTmFtZUNoYXI6MjY3LExfTkNOYW1lOjI2OCxMZXR0ZXI6MjY5LEhleExldHRlcjoyNzAsRGlnaXQ6MjcxLERpZ2l0czoyNzIsUzoyNzMsU1U6Mjc0LExfUHJhZ21hOjI3NSxMX0RpckNvbW1lbnRDb25zdHJ1Y3RvcjoyNzYsTF9EaXJQSUNvbnN0cnVjdG9yOjI3NyxMX0ludGVnZXJMaXRlcmFsOjI3OCxMX0RlY2ltYWxMaXRlcmFsOjI3OSxMX0RvdWJsZUxpdGVyYWw6MjgwLExfQ29tbWVudDoyODEsTF9BbnlDaGFyOjI4MixOQ05hbWVVbnByb3RlY3RlZDoyODMsWE1MRGlnaXQ6Mjg0fSksZnVuY3Rpb24oKXt2YXIgYT1kLmFudGxyLnJ1bnRpbWUuVG9rZW4uSElEREVOX0NIQU5ORUwsYj1kLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GO2QuYW50bHIubGFuZy5leHRlbmQoZixlLHtFT0Y6LTEsTF9RdW90QXR0ckNvbnRlbnRDaGFyOjQsTF9BcG9zQXR0ckNvbnRlbnRDaGFyOjUsTF9FbGVtZW50Q29udGVudENoYXI6NixMX0NEYXRhU2VjdGlvbjo3LExfUHJlZGVmaW5lZEVudGl0eVJlZjo4LExfQ2hhclJlZjo5LEVTQ0FQRV9MQlJBQ0tFVDoxMCxFU0NBUEVfUkJSQUNLRVQ6MTEsRVNDQVBFX0FQT1M6MTIsRVNDQVBFX1FVT1Q6MTMsQ0RBVEFfU1RBUlQ6MTQsQ0RBVEFfRU5EOjE1LEFOQ0VTVE9SOjE2LEFOQ0VTVE9SX09SX1NFTEY6MTcsQU5EOjE4LEFTOjE5LEFTQ0VORElORzoyMCxBVDoyMSxBVFRSSUJVVEU6MjIsQkFTRV9VUkk6MjMsQk9VTkRBUllfU1BBQ0U6MjQsQlk6MjUsQ0FTRToyNixDQVNUOjI3LENBU1RBQkxFOjI4LENISUxEOjI5LENPTExBVElPTjozMCxDT01NRU5UOjMxLENPTlNUUlVDVElPTjozMixDT1BZX05BTUVTUEFDRVM6MzMsREVDTEFSRTozNCxERUZBVUxUOjM1LERFU0NFTkRBTlQ6MzYsREVTQ0VOREFOVF9PUl9TRUxGOjM3LERFU0NFTkRJTkc6MzgsRElWOjM5LERPQ1VNRU5UOjQwLERPQ1VNRU5UX05PREU6NDEsRUxFTUVOVDo0MixFTFNFOjQzLEVNUFRZOjQ0LEVNUFRZX1NFUVVFTkNFOjQ1LEVOQ09ESU5HOjQ2LEVROjQ3LEVWRVJZOjQ4LEVYQ0VQVDo0OSxFWFRFUk5BTDo1MCxGT0xMT1dJTkc6NTEsRk9MTE9XSU5HX1NJQkxJTkc6NTIsRk9SOjUzLEZVTkNUSU9OOjU0LEdFOjU1LEdSRUFURVNUOjU2LEdUOjU3LElESVY6NTgsSUY6NTksSU1QT1JUOjYwLElOOjYxLElOSEVSSVQ6NjIsSU5TVEFOQ0U6NjMsSU5URVJTRUNUOjY0LElTOjY1LElURU06NjYsTEFYOjY3LExFOjY4LExFQVNUOjY5LExFVDo3MCxMVDo3MSxNT0Q6NzIsTU9EVUxFOjczLE5BTUVTUEFDRTo3NCxORTo3NSxOT19JTkhFUklUOjc2LE5PX1BSRVNFUlZFOjc3LE5PREU6NzgsT0Y6NzksT1BUSU9OOjgwLE9SOjgxLE9SREVSOjgyLE9SREVSRUQ6ODMsT1JERVJJTkc6ODQsUEFSRU5UOjg1LFBSRUNFRElORzo4NixQUkVDRURJTkdfU0lCTElORzo4NyxQUkVTRVJWRTo4OCxQUk9DRVNTSU5HX0lOU1RSVUNUSU9OOjg5LFJFVFVSTjo5MCxTQVRJU0ZJRVM6OTEsU0NIRU1BOjkyLFNDSEVNQV9BVFRSSUJVVEU6OTMsU0NIRU1BX0VMRU1FTlQ6OTQsU0VMRjo5NSxTT01FOjk2LFNUQUJMRTo5NyxTVFJJQ1Q6OTgsU1RSSVA6OTksVEVYVDoxMDAsVEhFTjoxMDEsVE86MTAyLFRSRUFUOjEwMyxUWVBFU1dJVENIOjEwNCxVTklPTjoxMDUsVU5PUkRFUkVEOjEwNixWQUxJREFURToxMDcsVkFSSUFCTEU6MTA4LFZFUlNJT046MTA5LFdIRVJFOjExMCxYUVVFUlk6MTExLEFMTE9XSU5HOjExMixDQVRDSDoxMTMsQ09OVEVYVDoxMTQsQ09VTlQ6MTE1LERFQ0lNQUxfRk9STUFUOjExNixERUNJTUFMX1NFUEFSQVRPUjoxMTcsRElHSVQ6MTE4LEVORDoxMTksR1JPVVA6MTIwLEdST1VQSU5HX1NFUEFSQVRPUjoxMjEsSU5GSU5JVFk6MTIyLE1JTlVTX1NJR046MTIzLE5BTUVTUEFDRV9OT0RFOjEyNCxOQU46MTI1LE5FWFQ6MTI2LE9OTFk6MTI3LFBBVFRFUk5fU0VQQVJBVE9SOjEyOCxQRVJDRU5UOjEyOSxQRVJfTUlMTEU6MTMwLFBSRVZJT1VTOjEzMSxTTElESU5HOjEzMixTVEFSVDoxMzMsU1dJVENIOjEzNCxUUlk6MTM1LFRVTUJMSU5HOjEzNixUWVBFOjEzNyxXSEVOOjEzOCxXSU5ET1c6MTM5LFpFUk9fRElHSVQ6MTQwLEFGVEVSOjE0MSxCRUZPUkU6MTQyLENPUFk6MTQzLERFTEVURToxNDQsRklSU1Q6MTQ1LElOU0VSVDoxNDYsSU5UTzoxNDcsTEFTVDoxNDgsTU9ESUZZOjE0OSxOT0RFUzoxNTAsUkVOQU1FOjE1MSxSRVBMQUNFOjE1MixSRVZBTElEQVRJT046MTUzLFNLSVA6MTU0LFVQREFUSU5HOjE1NSxWQUxVRToxNTYsV0lUSDoxNTcsQUxMOjE1OCxBTlk6MTU5LENPTlRBSU5TOjE2MCxDT05URU5UOjE2MSxESUFDUklUSUNTOjE2MixESUZGRVJFTlQ6MTYzLERJU1RBTkNFOjE2NCxFTlRJUkU6MTY1LEVYQUNUTFk6MTY2LEZST006MTY3LEZUX09QVElPTjoxNjgsRlRBTkQ6MTY5LEZUTk9UOjE3MCxGVE9SOjE3MSxJTlNFTlNJVElWRToxNzIsTEFOR1VBR0U6MTczLExFVkVMUzoxNzQsTE9XRVJDQVNFOjE3NSxNT1NUOjE3NixOTzoxNzcsTk9UOjE3OCxPQ0NVUlM6MTc5LFBBUkFHUkFQSDoxODAsUEFSQUdSQVBIUzoxODEsUEhSQVNFOjE4MixSRUxBVElPTlNISVA6MTgzLFNBTUU6MTg0LFNDT1JFOjE4NSxTRU5TSVRJVkU6MTg2LFNFTlRFTkNFOjE4NyxTRU5URU5DRVM6MTg4LFNURU1NSU5HOjE4OSxTVE9QOjE5MCxUSEVTQVVSVVM6MTkxLFRJTUVTOjE5MixVUFBFUkNBU0U6MTkzLFVTSU5HOjE5NCxXRUlHSFQ6MTk1LFdJTERDQVJEUzoxOTYsV0lUSE9VVDoxOTcsV09SRDoxOTgsV09SRFM6MTk5LEJSRUFLOjIwMCxDT05USU5VRToyMDEsRVhJVDoyMDIsTE9PUDoyMDMsUkVUVVJOSU5HOjIwNCxXSElMRToyMDUsQ0hFQ0s6MjA2LENPTExFQ1RJT046MjA3LENPTlNUUkFJTlQ6MjA4LEZPUkVBQ0g6MjA5LEZPUkVJR046MjEwLElOREVYOjIxMSxJTlRFR1JJVFk6MjEyLEtFWToyMTMsT046MjE0LFVOSVFVRToyMTUsQklOQVJZOjIxNixBTVBfRVI6MjE3LEFQT1NfRVI6MjE4LFFVT1RfRVI6MjE5LENPTkNBVDoyMjAsTFBBUkVOOjIyMSxSUEFSRU46MjIyLERPTExBUjoyMjMsTEJSQUNLRVQ6MjI0LFJCUkFDS0VUOjIyNSxMU1FVQVJFOjIyNixSU1FVQVJFOjIyNyxFUVVBTDoyMjgsQklORDoyMjksTk9URVFVQUw6MjMwLEFOTl9QRVJDRU5UOjIzMSxIQVNIOjIzMixBTVA6MjMzLENPTU1BOjIzNCxRVUVTVElPTjoyMzUsU1RBUjoyMzYsUExVUzoyMzcsTUlOVVM6MjM4LFNNQUxMRVI6MjM5LEdSRUFURVI6MjQwLFNNQUxMRVJFUToyNDEsR1JFQVRFUkVROjI0MixTTUFMTEVSX1NNQUxMRVI6MjQzLEdSRUFURVJfR1JFQVRFUjoyNDQsU0xBU0g6MjQ1LFNMQVNIX1NMQVNIOjI0NixET1Q6MjQ3LERPVF9ET1Q6MjQ4LENPTE9OOjI0OSxDT0xPTl9DT0xPTjoyNTAsRU1QVFlfQ0xPU0VfVEFHOjI1MSxDTE9TRV9UQUc6MjUyLFNFTUlDT0xPTjoyNTMsVkJBUjoyNTQsUFJBR01BX1NUQVJUOjI1NSxQUkFHTUFfRU5EOjI1NixYTUxfQ09NTUVOVF9TVEFSVDoyNTcsWE1MX0NPTU1FTlRfRU5EOjI1OCxQSV9TVEFSVDoyNTksUElfRU5EOjI2MCxBVFRSX1NJR046MjYxLENIQVJSRUZfREVDOjI2MixDSEFSUkVGX0hFWDoyNjMsQVBPUzoyNjQsUVVPVDoyNjUsTkNOYW1lU3RhcnRDaGFyOjI2NixOQ05hbWVDaGFyOjI2NyxMX05DTmFtZToyNjgsTGV0dGVyOjI2OSxIZXhMZXR0ZXI6MjcwLERpZ2l0OjI3MSxEaWdpdHM6MjcyLFM6MjczLFNVOjI3NCxMX1ByYWdtYToyNzUsTF9EaXJDb21tZW50Q29uc3RydWN0b3I6Mjc2LExfRGlyUElDb25zdHJ1Y3RvcjoyNzcsTF9JbnRlZ2VyTGl0ZXJhbDoyNzgsTF9EZWNpbWFsTGl0ZXJhbDoyNzksTF9Eb3VibGVMaXRlcmFsOjI4MCxMX0NvbW1lbnQ6MjgxLExfQW55Q2hhcjoyODIsTkNOYW1lVW5wcm90ZWN0ZWQ6MjgzLFhNTERpZ2l0OjI4NCxnZXRHcmFtbWFyRmlsZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4ieHF1ZXJ5L1hNTExleGVyLmcifX0pLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGYucHJvdG90eXBlLHttUVVPVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlFVT1QsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluRWxlbSYmIXRoaXMuaW5RdW90QXR0cil0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJRVU9UIiwiIHRoaXMuaW5FbGVtIHx8IHRoaXMuaW5RdW90QXR0ciAiKTt0aGlzLm1hdGNoKCciJyksdGhpcy5pbkFwb3NBdHRyfHwodGhpcy5pblF1b3RBdHRyPSF0aGlzLmluUXVvdEF0dHIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUFQT1M6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5BUE9TLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pbkVsZW0mJiF0aGlzLmluQXBvc0F0dHIpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiQVBPUyIsIiB0aGlzLmluRWxlbSB8fCB0aGlzLmluQXBvc0F0dHIgIik7dGhpcy5tYXRjaCgiJyIpLHRoaXMuaW5RdW90QXR0cnx8KHRoaXMuaW5BcG9zQXR0cj0hdGhpcy5pbkFwb3NBdHRyKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MX1F1b3RBdHRyQ29udGVudENoYXI6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MX1F1b3RBdHRyQ29udGVudENoYXIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluUXVvdEF0dHIpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9RdW90QXR0ckNvbnRlbnRDaGFyIiwiIHRoaXMuaW5RdW90QXR0ciAiKTt2YXIgYz0wO2E6ZG97dmFyIGU9MixmPXRoaXMuaW5wdXQuTEEoMSk7aWYoZj49IgkiJiZmPD0iXG4ifHxmPT0iXHIifHxmPj0iICImJmY8PSIhInx8Zj49IiMiJiZmPD0iJSJ8fGY+PSIoIiYmZjw9IjsifHxmPj0iPSImJmY8PSJ6Inx8Zj09InwifHxmPj0ifiImJmY8PSLtn78ifHxmPj0i7oCAIiYmZjw9Iu+/vSIpZT0xO3N3aXRjaChlKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIgIiYmdGhpcy5pbnB1dC5MQSgxKTw9IiEifHx0aGlzLmlucHV0LkxBKDEpPj0iIyImJnRoaXMuaW5wdXQuTEEoMSk8PSIlInx8dGhpcy5pbnB1dC5MQSgxKT49IigiJiZ0aGlzLmlucHV0LkxBKDEpPD0iOyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSI9IiYmdGhpcy5pbnB1dC5MQSgxKTw9InoifHx0aGlzLmlucHV0LkxBKDEpPT0ifCJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJ+IiYmdGhpcy5pbnB1dC5MQSgxKTw9Iu2fvyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSLugIAiJiZ0aGlzLmlucHV0LkxBKDEpPD0i77+9Iikpe3ZhciBnPW5ldyBkLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihnKSxnfXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYoYz49MSlicmVhayBhO3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDEsdGhpcy5pbnB1dCk7dGhyb3cgaH1jKyt9d2hpbGUoITApO3RoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxfQXBvc0F0dHJDb250ZW50Q2hhcjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfQXBvc0F0dHJDb250ZW50Q2hhcixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5BcG9zQXR0cil0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0Fwb3NBdHRyQ29udGVudENoYXIiLCIgdGhpcy5pbkFwb3NBdHRyICIpO3ZhciBjPTA7YTpkb3t2YXIgZT0yLGY9dGhpcy5pbnB1dC5MQSgxKTtpZihmPj0iCSImJmY8PSJcbiJ8fGY9PSJcciJ8fGY+PSIgIiYmZjw9IiEifHxmPj0iIyImJmY8PSIlInx8Zj49IigiJiZmPD0iOyJ8fGY+PSI9IiYmZjw9InoifHxmPT0ifCJ8fGY+PSJ+IiYmZjw9Iu2fvyJ8fGY+PSLugIAiJiZmPD0i77+9IillPTE7c3dpdGNoKGUpe2Nhc2UgMTppZighKHRoaXMuaW5wdXQuTEEoMSk+PSIJIiYmdGhpcy5pbnB1dC5MQSgxKTw9IlxuInx8dGhpcy5pbnB1dC5MQSgxKT09IlxyInx8dGhpcy5pbnB1dC5MQSgxKT49IiAiJiZ0aGlzLmlucHV0LkxBKDEpPD0iISJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIjIiYmdGhpcy5pbnB1dC5MQSgxKTw9IiUifHx0aGlzLmlucHV0LkxBKDEpPj0iKCImJnRoaXMuaW5wdXQuTEEoMSk8PSI7Inx8dGhpcy5pbnB1dC5MQSgxKT49Ij0iJiZ0aGlzLmlucHV0LkxBKDEpPD0ieiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJ8Inx8dGhpcy5pbnB1dC5MQSgxKT49In4iJiZ0aGlzLmlucHV0LkxBKDEpPD0i7Z+/Inx8dGhpcy5pbnB1dC5MQSgxKT49Iu6AgCImJnRoaXMuaW5wdXQuTEEoMSk8PSLvv70iKSl7dmFyIGc9bmV3IGQuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGcpLGd9dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihjPj0xKWJyZWFrIGE7dmFyIGg9bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMix0aGlzLmlucHV0KTt0aHJvdyBofWMrK313aGlsZSghMCk7dGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9FbGVtZW50Q29udGVudENoYXI6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MX0VsZW1lbnRDb250ZW50Q2hhcixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISF0aGlzLmluRWxlbSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0VsZW1lbnRDb250ZW50Q2hhciIsIiAhdGhpcy5pbkVsZW0gIik7dmFyIGM9MDthOmRve3ZhciBlPTIsZj10aGlzLmlucHV0LkxBKDEpO2lmKGY+PSIJIiYmZjw9IlxuInx8Zj09IlxyInx8Zj49IiAiJiZmPD0iJSJ8fGY+PSInIiYmZjw9IjsifHxmPj0iPSImJmY8PSJ6Inx8Zj09InwifHxmPj0ifiImJmY8PSLtn78ifHxmPj0i7oCAIiYmZjw9Iu+/vSIpZT0xO3N3aXRjaChlKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIgIiYmdGhpcy5pbnB1dC5MQSgxKTw9IiUifHx0aGlzLmlucHV0LkxBKDEpPj0iJyImJnRoaXMuaW5wdXQuTEEoMSk8PSI7Inx8dGhpcy5pbnB1dC5MQSgxKT49Ij0iJiZ0aGlzLmlucHV0LkxBKDEpPD0ieiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJ8Inx8dGhpcy5pbnB1dC5MQSgxKT49In4iJiZ0aGlzLmlucHV0LkxBKDEpPD0i7Z+/Inx8dGhpcy5pbnB1dC5MQSgxKT49Iu6AgCImJnRoaXMuaW5wdXQuTEEoMSk8PSLvv70iKSl7dmFyIGc9bmV3IGQuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGcpLGd9dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihjPj0xKWJyZWFrIGE7dmFyIGg9bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMyx0aGlzLmlucHV0KTt0aHJvdyBofWMrK313aGlsZSghMCk7dGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtR1JFQVRFUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkdSRUFURVIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluRWxlbSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJHUkVBVEVSIiwiIHRoaXMuaW5FbGVtICIpO3RoaXMubWF0Y2goIj4iKSx0aGlzLmluRWxlbT0hMSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FTVBUWV9DTE9TRV9UQUc6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FTVBUWV9DTE9TRV9UQUcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluRWxlbSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJFTVBUWV9DTE9TRV9UQUciLCIgdGhpcy5pbkVsZW0gIik7dGhpcy5tYXRjaCgiLz4iKSx0aGlzLmluRWxlbT0hMSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1TOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuUyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5FbGVtKXRocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIlMiLCIgdGhpcy5pbkVsZW0gIik7dmFyIGM9MDthOmRve3ZhciBlPTIsZj10aGlzLmlucHV0LkxBKDEpO2lmKGY+PSIJIiYmZjw9IlxuInx8Zj09IlxyInx8Zj09IiAiKWU9MTtzd2l0Y2goZSl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPT0iICIpKXt2YXIgZz1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoZyksZ310aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKGM+PTEpYnJlYWsgYTt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig0LHRoaXMuaW5wdXQpO3Rocm93IGh9YysrfXdoaWxlKCEwKTt0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1MX05DTmFtZTpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfTkNOYW1lLGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pbkVsZW0pdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9OQ05hbWUiLCIgdGhpcy5pbkVsZW0gIik7dGhpcy5tTkNOYW1lVW5wcm90ZWN0ZWQoKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1OQ05hbWVVbnByb3RlY3RlZDpmdW5jdGlvbigpe3RyeXt0aGlzLm1OQ05hbWVTdGFydENoYXIoKTthOmRve3ZhciBhPTIsYj10aGlzLmlucHV0LkxBKDEpO2lmKGI+PSItIiYmYjw9Ii4ifHxiPj0iMCImJmI8PSI5Inx8Yj49IkEiJiZiPD0iWiJ8fGI9PSJfInx8Yj49ImEiJiZiPD0ieiIpYT0xO3N3aXRjaChhKXtjYXNlIDE6dGhpcy5tTkNOYW1lQ2hhcigpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApfWZpbmFsbHl7fX0sbU5DTmFtZVN0YXJ0Q2hhcjpmdW5jdGlvbigpe3RyeXtpZighKHRoaXMuaW5wdXQuTEEoMSk+PSJBIiYmdGhpcy5pbnB1dC5MQSgxKTw9IloifHx0aGlzLmlucHV0LkxBKDEpPT0iXyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9InoiKSl7dmFyIGE9bmV3IGQuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGEpLGF9dGhpcy5pbnB1dC5jb25zdW1lKCl9ZmluYWxseXt9fSxtTkNOYW1lQ2hhcjpmdW5jdGlvbigpe3RyeXtpZighKHRoaXMuaW5wdXQuTEEoMSk+PSItIiYmdGhpcy5pbnB1dC5MQSgxKTw9Ii4ifHx0aGlzLmlucHV0LkxBKDEpPj0iMCImJnRoaXMuaW5wdXQuTEEoMSk8PSI5Inx8dGhpcy5pbnB1dC5MQSgxKT49IkEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iWiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJfInx8dGhpcy5pbnB1dC5MQSgxKT49ImEiJiZ0aGlzLmlucHV0LkxBKDEpPD0ieiIpKXt2YXIgYT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoYSksYX10aGlzLmlucHV0LmNvbnN1bWUoKX1maW5hbGx5e319LG1MZXR0ZXI6ZnVuY3Rpb24oKXt0cnl7aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iQSImJnRoaXMuaW5wdXQuTEEoMSk8PSJaInx8dGhpcy5pbnB1dC5MQSgxKT49ImEiJiZ0aGlzLmlucHV0LkxBKDEpPD0ieiIpKXt2YXIgYT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoYSksYX10aGlzLmlucHV0LmNvbnN1bWUoKX1maW5hbGx5e319LG1YTUxEaWdpdDpmdW5jdGlvbigpe3RyeXt0aGlzLm1hdGNoUmFuZ2UoIjAiLCI5Iil9ZmluYWxseXt9fSxtRVFVQUw6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FUVVBTCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5FbGVtKXRocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkVRVUFMIiwiIHRoaXMuaW5FbGVtICAiKTt0aGlzLm1hdGNoKCI9IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtRVNDQVBFX0FQT1M6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FU0NBUEVfQVBPUyxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5BcG9zQXR0cil0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJFU0NBUEVfQVBPUyIsIiB0aGlzLmluQXBvc0F0dHIgIik7dGhpcy5tYXRjaCgiJyciKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FU0NBUEVfUVVPVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkVTQ0FQRV9RVU9ULGI9ZC5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pblF1b3RBdHRyKXRocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkVTQ0FQRV9RVU9UIiwiIHRoaXMuaW5RdW90QXR0ciAiKTt0aGlzLm1hdGNoKCciIicpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUVTQ0FQRV9MQlJBQ0tFVDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkVTQ0FQRV9MQlJBQ0tFVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISghdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cnx8dGhpcy5pblF1b3RBdHRyKSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJFU0NBUEVfTEJSQUNLRVQiLCIgIXRoaXMuaW5FbGVtIHx8IHRoaXMuaW5BcG9zQXR0ciB8fCB0aGlzLmluUXVvdEF0dHIgIik7dGhpcy5tYXRjaCgie3siKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1FU0NBUEVfUkJSQUNLRVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5FU0NBUEVfUkJSQUNLRVQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cikpdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiRVNDQVBFX1JCUkFDS0VUIiwiICF0aGlzLmluRWxlbSB8fCB0aGlzLmluQXBvc0F0dHIgfHwgdGhpcy5pblF1b3RBdHRyICIpO3RoaXMubWF0Y2goIn19IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTEJSQUNLRVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MQlJBQ0tFVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISghdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cnx8dGhpcy5pblF1b3RBdHRyKSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMQlJBQ0tFVCIsIiAhdGhpcy5pbkVsZW0gfHwgdGhpcy5pbkFwb3NBdHRyIHx8IHRoaXMuaW5RdW90QXR0ciAiKTt0aGlzLm1hdGNoKCJ7IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtUkJSQUNLRVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5SQlJBQ0tFVCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISghdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cnx8dGhpcy5pblF1b3RBdHRyKSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJSQlJBQ0tFVCIsIiAhdGhpcy5pbkVsZW0gfHwgdGhpcy5pbkFwb3NBdHRyIHx8IHRoaXMuaW5RdW90QXR0ciAiKTt0aGlzLm1hdGNoKCJ9IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU01BTExFUjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLlNNQUxMRVIsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjwiKSx0aGlzLnN0YXRlLnR5cGU9YSx0aGlzLnN0YXRlLmNoYW5uZWw9Yn1maW5hbGx5e319LG1DTE9TRV9UQUc6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DTE9TRV9UQUcsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEhdGhpcy5pbkVsZW0pdGhyb3cgbmV3IGQuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiQ0xPU0VfVEFHIiwiICF0aGlzLmluRWxlbSAiKTt0aGlzLm1hdGNoKCI8LyIpLHRoaXMuaW5FbGVtPSEwLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNEQVRBX1NUQVJUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBhPXRoaXMuQ0RBVEFfU1RBUlQsYj1kLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjwhW0NEQVRBWyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUNEQVRBX0VORDpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkNEQVRBX0VORCxiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiXV0+IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9DRGF0YVNlY3Rpb246ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MX0NEYXRhU2VjdGlvbixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISF0aGlzLmluRWxlbSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0NEYXRhU2VjdGlvbiIsIiAhdGhpcy5pbkVsZW0gIik7dGhpcy5tQ0RBVEFfU1RBUlQoKTthOmRve3ZhciBjPTIsZT10aGlzLmlucHV0LkxBKDEpO2lmKGU9PSJdIil7dmFyIGY9dGhpcy5pbnB1dC5MQSgyKTtpZihmPT0iXSIpe3ZhciBnPXRoaXMuaW5wdXQuTEEoMyk7aWYoZz09Ij4iKWM9MjtlbHNlIGlmKGc+PSJcMCImJmc8PSI9Inx8Zz49Ij8iJiZnPD0i77+/IiljPTF9ZWxzZSBpZihmPj0iXDAiJiZmPD0iXFwifHxmPj0iXiImJmY8PSLvv78iKWM9MX1lbHNlIGlmKGU+PSJcMCImJmU8PSJcXCJ8fGU+PSJeIiYmZTw9Iu+/vyIpYz0xO3N3aXRjaChjKXtjYXNlIDE6dGhpcy5tYXRjaEFueSgpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO3RoaXMubUNEQVRBX0VORCgpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxfUHJlZGVmaW5lZEVudGl0eVJlZjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfUHJlZGVmaW5lZEVudGl0eVJlZixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISghdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cnx8dGhpcy5pblF1b3RBdHRyKSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX1ByZWRlZmluZWRFbnRpdHlSZWYiLCIgIXRoaXMuaW5FbGVtIHx8IHRoaXMuaW5BcG9zQXR0ciB8fCB0aGlzLmluUXVvdEF0dHIgIik7dGhpcy5tYXRjaCgiJiIpO3ZhciBjPTU7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UibCI6Yz0xO2JyZWFrO2Nhc2UiZyI6Yz0yO2JyZWFrO2Nhc2UiYSI6dmFyIGU9dGhpcy5pbnB1dC5MQSgyKTtpZihlPT0icCIpYz0zO2Vsc2V7aWYoZSE9Im0iKXt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDcsMyx0aGlzLmlucHV0KTt0aHJvdyBmfWM9NX1icmVhaztjYXNlInEiOmM9NDticmVhaztkZWZhdWx0OnZhciBmPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNywwLHRoaXMuaW5wdXQpO3Rocm93IGZ9c3dpdGNoKGMpe2Nhc2UgMTp0aGlzLm1hdGNoKCJsdCIpO2JyZWFrO2Nhc2UgMjp0aGlzLm1hdGNoKCJndCIpO2JyZWFrO2Nhc2UgMzp0aGlzLm1hdGNoKCJhcG9zIik7YnJlYWs7Y2FzZSA0OnRoaXMubWF0Y2goInF1b3QiKTticmVhaztjYXNlIDU6dGhpcy5tYXRjaCgiYW1wIil9dGhpcy5tYXRjaCgiOyIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxfQ2hhclJlZjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfQ2hhclJlZixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUwsYz0yLGU9dGhpcy5pbnB1dC5MQSgxKTtpZihlIT0iJiIpe3ZhciBoPW5ldyBkLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTAsMCx0aGlzLmlucHV0KTt0aHJvdyBofXZhciBmPXRoaXMuaW5wdXQuTEEoMik7aWYoZiE9IiMiKXt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEwLDEsdGhpcy5pbnB1dCk7dGhyb3cgaH12YXIgZz10aGlzLmlucHV0LkxBKDMpO2lmKGc9PSJ4IiljPTI7ZWxzZXtpZighKGc+PSIwIiYmZzw9IjkiJiYoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cikpKXt2YXIgaD1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEwLDIsdGhpcy5pbnB1dCk7dGhyb3cgaH1jPTF9c3dpdGNoKGMpe2Nhc2UgMTppZighKCF0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluUXVvdEF0dHIpKXRocm93IG5ldyBkLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfQ2hhclJlZiIsIiAhdGhpcy5pbkVsZW0gfHwgdGhpcy5pbkFwb3NBdHRyIHx8IHRoaXMuaW5RdW90QXR0ciAiKTt0aGlzLm1hdGNoKCImIyIpO3ZhciBpPTA7YTpkb3t2YXIgaj0yLGs9dGhpcy5pbnB1dC5MQSgxKTtrPj0iMCImJms8PSI5IiYmKGo9MSk7c3dpdGNoKGope2Nhc2UgMTp0aGlzLm1hdGNoUmFuZ2UoIjAiLCI5Iik7YnJlYWs7ZGVmYXVsdDppZihpPj0xKWJyZWFrIGE7dmFyIGw9bmV3IGQuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oOCx0aGlzLmlucHV0KTt0aHJvdyBsfWkrK313aGlsZSghMCk7dGhpcy5tYXRjaCgiOyIpO2JyZWFrO2Nhc2UgMjp0aGlzLm1hdGNoKCImI3giKTt2YXIgbT0wO2I6ZG97dmFyIG49MixvPXRoaXMuaW5wdXQuTEEoMSk7aWYobz49IjAiJiZvPD0iOSJ8fG8+PSJBIiYmbzw9IkYifHxvPj0iYSImJm88PSJmIiluPTE7c3dpdGNoKG4pe2Nhc2UgMTppZighKHRoaXMuaW5wdXQuTEEoMSk+PSIwIiYmdGhpcy5pbnB1dC5MQSgxKTw9IjkifHx0aGlzLmlucHV0LkxBKDEpPj0iQSImJnRoaXMuaW5wdXQuTEEoMSk8PSJGInx8dGhpcy5pbnB1dC5MQSgxKT49ImEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iZiIpKXt2YXIgcD1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIocCkscH10aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKG0+PTEpYnJlYWsgYjt2YXIgbD1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig5LHRoaXMuaW5wdXQpO3Rocm93IGx9bSsrfXdoaWxlKCEwKTt0aGlzLm1hdGNoKCI7Iil9dGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtTF9EaXJDb21tZW50Q29uc3RydWN0b3I6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5MX0RpckNvbW1lbnRDb25zdHJ1Y3RvcixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISF0aGlzLmluRWxlbSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0RpckNvbW1lbnRDb25zdHJ1Y3RvciIsIiAhdGhpcy5pbkVsZW0gIik7dGhpcy5tYXRjaCgiPCEtLSIpO2E6ZG97dmFyIGM9MixlPXRoaXMuaW5wdXQuTEEoMSk7aWYoZT09Ii0iKXt2YXIgZj10aGlzLmlucHV0LkxBKDIpO2lmKGY9PSItIil7dmFyIGc9dGhpcy5pbnB1dC5MQSgzKTtpZihnPT0iPiIpYz0yO2Vsc2UgaWYoZz49IlwwIiYmZzw9Ij0ifHxnPj0iPyImJmc8PSLvv78iKWM9MX1lbHNlIGlmKGY+PSJcMCImJmY8PSIsInx8Zj49Ii4iJiZmPD0i77+/IiljPTF9ZWxzZSBpZihlPj0iXDAiJiZlPD0iLCJ8fGU+PSIuIiYmZTw9Iu+/vyIpYz0xO3N3aXRjaChjKXtjYXNlIDE6dGhpcy5tYXRjaEFueSgpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApO3RoaXMubWF0Y2goIi0tPiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbUxfRGlyUElDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLkxfRGlyUElDb25zdHJ1Y3RvcixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoISF0aGlzLmluRWxlbSl0aHJvdyBuZXcgZC5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0RpclBJQ29uc3RydWN0b3IiLCIgIXRoaXMuaW5FbGVtICIpO3RoaXMubWF0Y2goIjw/Iik7dmFyIGM9MixlPXRoaXMuaW5wdXQuTEEoMSk7aWYoZT49IgkiJiZlPD0iXG4ifHxlPT0iXHIifHxlPT0iICIpYz0xO3N3aXRjaChjKXtjYXNlIDE6dGhpcy5tU1UoKX10aGlzLm1OQ05hbWVVbnByb3RlY3RlZCgpO3ZhciBmPTIsZz10aGlzLmlucHV0LkxBKDEpO2lmKGc+PSIJIiYmZzw9IlxuInx8Zz09IlxyInx8Zz09IiAiKWY9MTtzd2l0Y2goZil7Y2FzZSAxOnRoaXMubVNVKCk7YTpkb3t2YXIgaD0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPT0iPyIpe3ZhciBqPXRoaXMuaW5wdXQuTEEoMik7aWYoaj09Ij4iKWg9MjtlbHNlIGlmKGo+PSJcMCImJmo8PSI9Inx8aj49Ij8iJiZqPD0i77+/IiloPTF9ZWxzZSBpZihpPj0iXDAiJiZpPD0iPiJ8fGk+PSJAIiYmaTw9Iu+/vyIpaD0xO3N3aXRjaChoKXtjYXNlIDE6dGhpcy5tYXRjaEFueSgpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgYX19d2hpbGUoITApfXRoaXMubWF0Y2goIj8+IiksdGhpcy5zdGF0ZS50eXBlPWEsdGhpcy5zdGF0ZS5jaGFubmVsPWJ9ZmluYWxseXt9fSxtU1U6ZnVuY3Rpb24oKXt0cnl7dmFyIGE9MDthOmRve3ZhciBiPTIsYz10aGlzLmlucHV0LkxBKDEpO2lmKGM+PSIJIiYmYzw9IlxuInx8Yz09IlxyInx8Yz09IiAiKWI9MTtzd2l0Y2goYil7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPT0iICIpKXt2YXIgZT1uZXcgZC5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoZSksZX10aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKGE+PTEpYnJlYWsgYTt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigxNSx0aGlzLmlucHV0KTt0aHJvdyBmfWErK313aGlsZSghMCl9ZmluYWxseXt9fSxtQ09MT046ZnVuY3Rpb24oKXt0cnl7dmFyIGE9dGhpcy5DT0xPTixiPWQuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiOiIpLHRoaXMuc3RhdGUudHlwZT1hLHRoaXMuc3RhdGUuY2hhbm5lbD1ifWZpbmFsbHl7fX0sbVRva2VuczpmdW5jdGlvbigpe3ZhciBhPTI2O2E9dGhpcy5kZmExNi5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChhKXtjYXNlIDE6dGhpcy5tUVVPVCgpO2JyZWFrO2Nhc2UgMjp0aGlzLm1BUE9TKCk7YnJlYWs7Y2FzZSAzOnRoaXMubUxfUXVvdEF0dHJDb250ZW50Q2hhcigpO2JyZWFrO2Nhc2UgNDp0aGlzLm1MX0Fwb3NBdHRyQ29udGVudENoYXIoKTticmVhaztjYXNlIDU6dGhpcy5tTF9FbGVtZW50Q29udGVudENoYXIoKTticmVhaztjYXNlIDY6dGhpcy5tR1JFQVRFUigpO2JyZWFrO2Nhc2UgNzp0aGlzLm1FTVBUWV9DTE9TRV9UQUcoKTticmVhaztjYXNlIDg6dGhpcy5tUygpO2JyZWFrO2Nhc2UgOTp0aGlzLm1MX05DTmFtZSgpO2JyZWFrO2Nhc2UgMTA6dGhpcy5tRVFVQUwoKTticmVhaztjYXNlIDExOnRoaXMubUVTQ0FQRV9BUE9TKCk7YnJlYWs7Y2FzZSAxMjp0aGlzLm1FU0NBUEVfUVVPVCgpO2JyZWFrO2Nhc2UgMTM6dGhpcy5tRVNDQVBFX0xCUkFDS0VUKCk7YnJlYWs7Y2FzZSAxNDp0aGlzLm1FU0NBUEVfUkJSQUNLRVQoKTticmVhaztjYXNlIDE1OnRoaXMubUxCUkFDS0VUKCk7YnJlYWs7Y2FzZSAxNjp0aGlzLm1SQlJBQ0tFVCgpO2JyZWFrO2Nhc2UgMTc6dGhpcy5tU01BTExFUigpO2JyZWFrO2Nhc2UgMTg6dGhpcy5tQ0xPU0VfVEFHKCk7YnJlYWs7Y2FzZSAxOTp0aGlzLm1DREFUQV9TVEFSVCgpO2JyZWFrO2Nhc2UgMjA6dGhpcy5tQ0RBVEFfRU5EKCk7YnJlYWs7Y2FzZSAyMTp0aGlzLm1MX0NEYXRhU2VjdGlvbigpO2JyZWFrO2Nhc2UgMjI6dGhpcy5tTF9QcmVkZWZpbmVkRW50aXR5UmVmKCk7YnJlYWs7Y2FzZSAyMzp0aGlzLm1MX0NoYXJSZWYoKTticmVhaztjYXNlIDI0OnRoaXMubUxfRGlyQ29tbWVudENvbnN0cnVjdG9yKCk7YnJlYWs7Y2FzZSAyNTp0aGlzLm1MX0RpclBJQ29uc3RydWN0b3IoKTticmVhaztjYXNlIDI2OnRoaXMubUNPTE9OKCl9fX0sITApLGQuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGYse0RGQTE2X2VvdFM6IgHvv78BEAETARQBFgEXARgBGgEWAR0BHwEjASQB77+/ARYBJwLvv78BKQLvv78BLgPvv78BGAHvv78BFhbvv78BOVxy77+/AUEC77+/IixERkExNl9lb2ZTOiJD77+/IixERkExNl9taW5TOiIJCQF7AX0BIQEJASMCCQFcMAHvv78BCQJcMAEJA1wwAQkBXDABCQXvv78BLQLvv78BXDAC77+/AVwwAe+/vwFcMATvv78BXDAD77+/AQkBQwXvv78BXDABRAHvv78BQQFUAUEBWwFcMALvv78iLERGQTE2X21heFM6Ignvv70BewF9AT8B77+9AXEC77+9AVwwAe+/vwHvv70CXDAB77+9A1wwAe+/vQFcMAHvv70F77+/AVsC77+/AVwwAu+/vwFcMAHvv78BXDAE77+/AVwwA++/vwHvv70BQwXvv78BXDABRAHvv78BQQFUAUEBWwHvv78C77+/IixERkExNl9hY2NlcHRTOiIR77+/AQVcbu+/vwFccgEPAQ4BEAESAe+/vwEZAREB77+/ARcBFgHvv78BAQHvv78BAgEDAQQBBgHvv78BXGIBCQFcbgLvv78BGAEaAVxmAQsBBwLvv78BFAXvv78BEwEVIixERkExNl9zcGVjaWFsUzonAVwwAR8BIgEEAVxyAR4BFQECAQsBIQEFAREBGwEgAVxmARoBCQHvv78BEAFcbgEdARYBDwEYARkBAwEXAVxiBe+/vwESAu+/vwEOAu+/vwEGAe+/vwEHBO+/vwEcA++/vwETBu+/vwEUBu+/vwEBAu+/v30+JyxERkExNl90cmFuc2l0aW9uUzpbIgIFAu+/vwEFEu+/vwEFAQ4BAQMOAVxyAQIHDgEEXG4OAVxmAQ4BCwEHAQMCDhoGAg4BXGIBDgEGAQ4aBgEJAQ4BXG7tnoIO4KCA77+/4b++DiIsIgIRAu+/vwEREu+/vwIRAQ8DEQHvv78VEQHvv78+EQHvv78BEQHvv7/tnoIR4KCA77+/4b++ESIsIgIRAu+/vwEREu+/vwYRAe+/vwESFBEB77+/PhEB77+/AREB77+/7Z6CEeCggO+/v+G/vhEiLCICDgLvv78BDhLvv78CDgERAw4B77+/AREUDgHvv78+DgHvv78BDgHvv7/tnoIO4KCA77+/4b++DiIsIgIOAu+/vwEOEu+/vwIOAREDDgHvv78BERQOAe+/vwEOARU8DgHvv78BDgHvv7/tnoIO4KCA77+/4b++DiIsIgIFAu+/vwEFEu+/vwEFAQ4BEQMOAe+/vwERFA4B77+/Pg4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCICDgLvv78BDhLvv78CDgERAw4B77+/AREFDgIZAQ5cbhkCDgHvv78EDhoZBA4BGQEOGhkB77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCICDgLvv78BDhLvv78CDgERAw4B77+/AREUDgHvv78+DgHvv78BDgHvv7/tnoIO4KCA77+/4b++DiIsIgIOAu+/vwEOEu+/vwIOAREDDgHvv78BERQOAe+/vyAOARsdDgHvv78BDgHvv7/tnoIO4KCA77+/4b++DiIsIgEcIiwiAR4iLCcBIVxy77+/ASAP77+/ASInLCICDgLvv78BDhLvv78CDgERAw4B77+/AREUDgHvv78+DgHvv78BDgHvv7/tnoIO4KCA77+/4b++DiIsIgElPe+/vwEmBe+/vwEmBO+/vwEmBO+/vwEmIiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERFA4B77+/Pg4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCICEQLvv78BERLvv78GEQHvv78VEQHvv78+EQHvv78BEQHvv7/tnoIR4KCA77+/4b++ESIsIgHvv78iLCIiLCICEQLvv78BERLvv78GEQHvv78VEQHvv78+EQHvv78BEQHvv7/tnoIR4KCA77+/4b++ESIsIgHvv78iLCIB77+/IiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERFA4B77+/Pg4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCIB77+/IiwiAe+/vyIsIgHvv78iLCICDgLvv78BDhLvv78CDgERAw4B77+/AREFDgIZAQ5cbhkCDgHvv78EDhoZBA4BGQEOGhkB77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCIB77+/IiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERFA4B77+/AQ4BMjwOAe+/vwEOAe+/v+2egg7goIDvv7/hv74OIiwiIiwiIiwiIiwiIiwiIiwiATQt77+/ATMiLCIiLCIiLCIB77+/IiwiIiwiIiwiAe+/vyIsIiIsIgHvv78iLCIiLCIiLCIiLCIiLCIB77+/IiwiIiwiIiwiIiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERFA4B77+/Pg4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCIBOiIsIiIsIiIsIiIsIiIsIiIsIgHvv78iLCIBPCIsIiIsIgE9IiwiAT4iLCIBPyIsIgFAIiwiXDBCIiwiIiwiIl19KSxkLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChmLHtERkExNl9lb3Q6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKGYuREZBMTZfZW90UyksREZBMTZfZW9mOmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhmLkRGQTE2X2VvZlMpLERGQTE2X21pbjpkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMoZi5ERkExNl9taW5TKSxERkExNl9tYXg6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKGYuREZBMTZfbWF4UyksREZBMTZfYWNjZXB0OmQuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhmLkRGQTE2X2FjY2VwdFMpLERGQTE2X3NwZWNpYWw6ZC5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKGYuREZBMTZfc3BlY2lhbFMpLERGQTE2X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1bXSxiLGM9Zi5ERkExNl90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKGI9MDtiPGM7YisrKWEucHVzaChkLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcoZi5ERkExNl90cmFuc2l0aW9uU1tiXSkpO3JldHVybiBhfSgpfSksZi5ERkExNj1mdW5jdGlvbihhKXt0aGlzLnJlY29nbml6ZXI9YSx0aGlzLmRlY2lzaW9uTnVtYmVyPTE2LHRoaXMuZW90PWYuREZBMTZfZW90LHRoaXMuZW9mPWYuREZBMTZfZW9mLHRoaXMubWluPWYuREZBMTZfbWluLHRoaXMubWF4PWYuREZBMTZfbWF4LHRoaXMuYWNjZXB0PWYuREZBMTZfYWNjZXB0LHRoaXMuc3BlY2lhbD1mLkRGQTE2X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPWYuREZBMTZfdHJhbnNpdGlvbn0sZC5hbnRsci5sYW5nLmV4dGVuZChmLkRGQTE2LGQuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjE6MTogVG9rZW5zIDogKCBRVU9UIHwgQVBPUyB8IExfUXVvdEF0dHJDb250ZW50Q2hhciB8IExfQXBvc0F0dHJDb250ZW50Q2hhciB8IExfRWxlbWVudENvbnRlbnRDaGFyIHwgR1JFQVRFUiB8IEVNUFRZX0NMT1NFX1RBRyB8IFMgfCBMX05DTmFtZSB8IEVRVUFMIHwgRVNDQVBFX0FQT1MgfCBFU0NBUEVfUVVPVCB8IEVTQ0FQRV9MQlJBQ0tFVCB8IEVTQ0FQRV9SQlJBQ0tFVCB8IExCUkFDS0VUIHwgUkJSQUNLRVQgfCBTTUFMTEVSIHwgQ0xPU0VfVEFHIHwgQ0RBVEFfU1RBUlQgfCBDREFUQV9FTkQgfCBMX0NEYXRhU2VjdGlvbiB8IExfUHJlZGVmaW5lZEVudGl0eVJlZiB8IExfQ2hhclJlZiB8IExfRGlyQ29tbWVudENvbnN0cnVjdG9yIHwgTF9EaXJQSUNvbnN0cnVjdG9yIHwgQ09MT04gKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9YSxlPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDp2YXIgYz1iLkxBKDEpLGQ9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxjPT0nIicmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5FbGVtfHx0aGlzLmluUXVvdEF0dHJ8fCF0aGlzLmluRWxlbSk/YT0xOmM9PSInIiYmKHRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9hPTI6Yz09Ij4iJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MzpjPT0iLyImJih0aGlzLmluRWxlbXx8dGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/YT00OihjPj0iCSImJmM8PSJcbiJ8fGM9PSJcciJ8fGM9PSIgIikmJih0aGlzLmluRWxlbXx8dGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/YT01OihjPj0iQSImJmM8PSJaInx8Yz09Il8ifHxjPj0iYSImJmM8PSJ6IikmJih0aGlzLmluRWxlbXx8dGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/YT02OmM9PSI9IiYmKHRoaXMuaW5FbGVtfHx0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9hPTc6Yz09Il0iP2E9ODpjPT0ieyImJighdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cnx8dGhpcy5pblF1b3RBdHRyKT9hPTk6Yz09In0iJiYoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cik/YT0xMDpjPT0iPCI/YT0xMTpjPT0iOiI/YT0xMjpjPT0iJiI/YT0xMzooYz09IiEifHxjPj0iIyImJmM8PSIlInx8Yz49IigiJiZjPD0iLiJ8fGM+PSIwIiYmYzw9IjkifHxjPT0iOyJ8fGM+PSI/IiYmYzw9IkAifHxjPj0iWyImJmM8PSJcXCJ8fGM9PSJeInx8Yz09ImAifHxjPT0ifCJ8fGM+PSJ+IiYmYzw9Iu2fvyJ8fGM+PSLugIAiJiZjPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKSYmKGE9MTQpLGIuc2VlayhkKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTp2YXIgZT1iLkxBKDEpLGY9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxlPj0iXDAiJiZlPD0i77+/IiYmIXRoaXMuaW5FbGVtP2E9NjY6YT02NSxiLnNlZWsoZik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDI6dmFyIGc9Yi5MQSgxKSxoPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsKGc+PSIJIiYmZzw9IlxuInx8Zz09IlxyInx8Zz49IiAiJiZnPD0iISJ8fGc+PSIjIiYmZzw9IiUifHxnPj0iKCImJmc8PSI7Inx8Zz49Ij0iJiZnPD0ieiJ8fGc9PSJ8Inx8Zz49In4iJiZnPD0i7Z+/Inx8Zz49Iu6AgCImJmc8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MTQ6ZyE9JyInJiZnIT0iJyJ8fCEhdGhpcy5pbkVsZW0/YT0yNjphPTE3LGIuc2VlayhoKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzp2YXIgaT1iLkxBKDEpLGo9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSwoaT49Ii0iJiZpPD0iLiJ8fGk+PSIwIiYmaTw9IjkifHxpPj0iQSImJmk8PSJaInx8aT09Il8ifHxpPj0iYSImJmk8PSJ6IikmJih0aGlzLmluRWxlbXx8dGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/YT0yNTppIT0nIicmJmkhPSInInx8ISF0aGlzLmluRWxlbT8oaT49IgkiJiZpPD0iXG4ifHxpPT0iXHIifHxpPj0iICImJmk8PSIhInx8aT49IiMiJiZpPD0iJSJ8fGk+PSIoIiYmaTw9IiwifHxpPT0iLyJ8fGk+PSI6IiYmaTw9IjsifHxpPj0iPSImJmk8PSJAInx8aT49IlsiJiZpPD0iXiJ8fGk9PSJgInx8aT09InwifHxpPj0ifiImJmk8PSLtn78ifHxpPj0i7oCAIiYmaTw9Iu+/vSIpJiYodGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/YT0xNDphPTI0OmE9MTcsYi5zZWVrKGopO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSA0OnZhciBrPWIuTEEoMSksbD1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLChrPj0iCSImJms8PSJcbiJ8fGs9PSJcciJ8fGs+PSIgIiYmazw9IiEifHxrPj0iIyImJms8PSIlInx8az49IigiJiZrPD0iOyJ8fGs+PSI9IiYmazw9InoifHxrPT0ifCJ8fGs+PSJ+IiYmazw9Iu2fvyJ8fGs+PSLugIAiJiZrPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9hPTE0OmshPSciJyYmayE9IicifHwhIXRoaXMuaW5FbGVtP2E9MjA6YT0xNyxiLnNlZWsobCk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDU6dmFyIG09Yi5MQSgxKSxuPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsbT09In0iJiYoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cik/YT0zMDphPTMxLGIuc2VlayhuKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNjp2YXIgbz1iLkxBKDEpLHA9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLmluRWxlbT90aGlzLmluUXVvdEF0dHImJihhPTU0KTphPTE3LGIuc2VlayhwKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgNzp2YXIgcT1iLkxBKDEpLHI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLmluRWxlbT90aGlzLmluQXBvc0F0dHImJihhPTU1KTphPTE3LGIuc2VlayhyKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgODp2YXIgcz1iLkxBKDEpLHQ9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxzPT0iPiI/YT01MDoocz49IgkiJiZzPD0iXG4ifHxzPT0iXHIifHxzPj0iICImJnM8PSIhInx8cz49IiMiJiZzPD0iJSJ8fHM+PSIoIiYmczw9IjsifHxzPT0iPSJ8fHM+PSI/IiYmczw9InoifHxzPT0ifCJ8fHM+PSJ+IiYmczw9Iu2fvyJ8fHM+PSLugIAiJiZzPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9hPTE0OnMhPSciJyYmcyE9IicifHwhIXRoaXMuaW5FbGVtP2E9MjI6YT0xNyxiLnNlZWsodCk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDk6dmFyIHU9Yi5MQSgxKSx2PWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cj9hPTQwOnRoaXMuaW5FbGVtfHwoYT0xNyksYi5zZWVrKHYpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxMDp2YXIgdz1iLkxBKDEpLHg9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyP2E9NDI6dGhpcy5pbkVsZW18fChhPTE3KSxiLnNlZWsoeCk7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDExOnZhciB5PWIuTEEoMSksej1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHk9PSJdIj9hPTI3Oih5Pj0iCSImJnk8PSJcbiJ8fHk9PSJcciJ8fHk+PSIgIiYmeTw9IiEifHx5Pj0iIyImJnk8PSIlInx8eT49IigiJiZ5PD0iOyJ8fHk+PSI9IiYmeTw9IlxcInx8eT49Il4iJiZ5PD0ieiJ8fHk9PSJ8Inx8eT49In4iJiZ5PD0i7Z+/Inx8eT49Iu6AgCImJnk8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MTQ6eSE9JyInJiZ5IT0iJyJ8fCEhdGhpcy5pbkVsZW0/YT0yMjphPTE3LGIuc2Vlayh6KTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTI6dmFyIEE9Yi5MQSgxKSxCPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsKEE+PSIJIiYmQTw9IlxuInx8QT09IlxyInx8QT49IiAiJiZBPD0iISJ8fEE+PSIjIiYmQTw9IiUifHxBPj0iKCImJkE8PSI7Inx8QT49Ij0iJiZBPD0ieiJ8fEE9PSJ8Inx8QT49In4iJiZBPD0i7Z+/Inx8QT49Iu6AgCImJkE8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MTQ6QSE9JyInJiZBIT0iJyJ8fCEhdGhpcy5pbkVsZW0/YT0yMjphPTE3LGIuc2VlayhCKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTM6dmFyIEM9Yi5MQSgxKSxEPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsQz09Ij4iJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MjE6KEM+PSIJIiYmQzw9IlxuInx8Qz09IlxyInx8Qz49IiAiJiZDPD0iISJ8fEM+PSIjIiYmQzw9IiUifHxDPj0iKCImJkM8PSI7Inx8Qz09Ij0ifHxDPj0iPyImJkM8PSJ6Inx8Qz09InwifHxDPj0ifiImJkM8PSLtn78ifHxDPj0i7oCAIiYmQzw9Iu+/vSIpJiYodGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/YT0xNDpDIT0nIicmJkMhPSInInx8ISF0aGlzLmluRWxlbT9hPTIyOmE9MTcsYi5zZWVrKEQpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxNDp2YXIgRT1iLkxBKDEpLEY9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLmluUXVvdEF0dHI/YT00Mzp0aGlzLmluQXBvc0F0dHI/YT00NDp0aGlzLmluRWxlbT9hPTUzOmE9MTcsYi5zZWVrKEYpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxNTp2YXIgRz1iLkxBKDEpLEg9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSx0aGlzLmluUXVvdEF0dHI/YT00Mzp0aGlzLmluQXBvc0F0dHI/YT00NDp0aGlzLmluRWxlbXx8KGE9MTcpLGIuc2VlayhIKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTY6dmFyIEk9Yi5MQSgxKSxKPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsKEk+PSIJIiYmSTw9IlxuInx8ST09IlxyInx8ST49IiAiJiZJPD0iJSJ8fEk+PSInIiYmSTw9IjsifHxJPj0iPSImJkk8PSJ6Inx8ST09InwifHxJPj0ifiImJkk8PSLtn78ifHxJPj0i7oCAIiYmSTw9Iu+/vSIpJiYhdGhpcy5pbkVsZW0/YT0xNzphPTQxLGIuc2VlayhKKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTc6dmFyIEs9Yi5MQSgxKSxMPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsSz09Ii8iJiYhdGhpcy5pbkVsZW0/YT0zMjpLPT0iISI/YT0zMzpLPT0iPyImJiF0aGlzLmluRWxlbT9hPTM0OmE9MzUsYi5zZWVrKEwpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAxODp2YXIgTT1iLkxBKDEpLE49Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxNPT0iWyI/YT01MTpNPT0iLSImJiF0aGlzLmluRWxlbSYmKGE9NTIpLGIuc2VlayhOKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMTk6dmFyIE89Yi5MQSgxKSxQPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsKE8+PSIJIiYmTzw9IlxuInx8Tz09IlxyInx8Tz49IiAiJiZPPD0iISJ8fE8+PSIjIiYmTzw9IiUifHxPPj0iKCImJk88PSI7Inx8Tz49Ij0iJiZPPD0ieiJ8fE89PSJ8Inx8Tz49In4iJiZPPD0i7Z+/Inx8Tz49Iu6AgCImJk88PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MTQ6TyE9JyInJiZPIT0iJyJ8fCEhdGhpcy5pbkVsZW0/YT01NzphPTE3LGIuc2VlayhQKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjA6dmFyIFE9Yi5MQSgxKSxSPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pblF1b3RBdHRyP2E9NDM6dGhpcy5pbkFwb3NBdHRyP2E9NDQ6dGhpcy5pbkVsZW0/YT01OTphPTE3LGIuc2VlayhSKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjE6dmFyIFM9Yi5MQSgxKSxUPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsKFM+PSItIiYmUzw9Ii4ifHxTPj0iMCImJlM8PSI5Inx8Uz49IkEiJiZTPD0iWiJ8fFM9PSJfInx8Uz49ImEiJiZTPD0ieiIpJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MjU6UyE9JyInJiZTIT0iJyJ8fCEhdGhpcy5pbkVsZW0/KFM+PSIJIiYmUzw9IlxuInx8Uz09IlxyInx8Uz49IiAiJiZTPD0iISJ8fFM+PSIjIiYmUzw9IiUifHxTPj0iKCImJlM8PSIsInx8Uz09Ii8ifHxTPj0iOiImJlM8PSI7Inx8Uz49Ij0iJiZTPD0iQCJ8fFM+PSJbIiYmUzw9Il4ifHxTPT0iYCJ8fFM9PSJ8Inx8Uz49In4iJiZTPD0i7Z+/Inx8Uz49Iu6AgCImJlM8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MTQ6YT0yNDphPTE3LGIuc2VlayhUKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjI6dmFyIFU9Yi5MQSgxKSxWPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsKFU+PSIJIiYmVTw9IlxuInx8VT09IlxyInx8VT49IiAiJiZVPD0iISJ8fFU+PSIjIiYmVTw9IiUifHxVPj0iKCImJlU8PSI7Inx8VT49Ij0iJiZVPD0ieiJ8fFU9PSJ8Inx8VT49In4iJiZVPD0i7Z+/Inx8VT49Iu6AgCImJlU8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MTQ6VSE9JyInJiZVIT0iJyJ8fCEhdGhpcy5pbkVsZW0/YT00NjphPTE3LGIuc2VlayhWKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjM6dmFyIFc9Yi5MQSgxKSxYPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pblF1b3RBdHRyP2E9NDM6dGhpcy5pbkFwb3NBdHRyP2E9NDQ6dGhpcy5pbkVsZW0/dGhpcy5pbkVsZW0mJihhPTQ5KTphPTE3LGIuc2VlayhYKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjQ6dmFyIFk9Yi5MQSgxKSxaPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pblF1b3RBdHRyP2E9NDM6dGhpcy5pbkFwb3NBdHRyP2E9NDQ6dGhpcy5pbkVsZW0/dGhpcy5pbkVsZW0mJihhPTQ3KTphPTE3LGIuc2VlayhaKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjU6dmFyICQ9Yi5MQSgxKSxfPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsdGhpcy5pblF1b3RBdHRyP2E9NDM6dGhpcy5pbkFwb3NBdHRyP2E9NDQ6dGhpcy5pbkVsZW0/dGhpcy5pbkVsZW0mJihhPTQ4KTphPTE3LGIuc2VlayhfKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMjY6dmFyIGFiPWIuTEEoMSksYmI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSwoYWI+PSIJIiYmYWI8PSJcbiJ8fGFiPT0iXHIifHxhYj49IiAiJiZhYjw9IiUifHxhYj49IiciJiZhYjw9IjsifHxhYj49Ij0iJiZhYjw9InoifHxhYj09InwifHxhYj49In4iJiZhYjw9Iu2fvyJ8fGFiPj0i7oCAIiYmYWI8PSLvv70iKSYmIXRoaXMuaW5FbGVtP2E9MTc6YT0zOSxiLnNlZWsoYmIpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyNzp2YXIgY2I9Yi5MQSgxKSxkYj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLChjYj49IgkiJiZjYjw9IlxuInx8Y2I9PSJcciJ8fGNiPj0iICImJmNiPD0iISJ8fGNiPj0iIyImJmNiPD0iJSJ8fGNiPj0iKCImJmNiPD0iOyJ8fGNiPj0iPSImJmNiPD0ieiJ8fGNiPT0ifCJ8fGNiPj0ifiImJmNiPD0i7Z+/Inx8Y2I+PSLugIAiJiZjYjw9Iu+/vSIpJiYodGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/YT0xNDpjYiE9JyInJiZjYiE9IicifHwhIXRoaXMuaW5FbGVtP2E9MzY6YT0xNyxiLnNlZWsoZGIpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyODp2YXIgZWI9Yi5MQSgxKSxmYj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuaW5RdW90QXR0cj9hPTQzOnRoaXMuaW5BcG9zQXR0cj9hPTQ0OnRoaXMuaW5FbGVtP3RoaXMuaW5FbGVtJiYoYT01Nik6YT0xNyxiLnNlZWsoZmIpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAyOTp2YXIgZ2I9Yi5MQSgxKSxoYj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLHRoaXMuaW5RdW90QXR0cj9hPTQzOnRoaXMuaW5BcG9zQXR0cj9hPTQ0OnRoaXMuaW5FbGVtP3RoaXMuaW5FbGVtJiYoYT00NSk6YT0xNyxiLnNlZWsoaGIpO2lmKGE+PTApcmV0dXJuIGE7YnJlYWs7Y2FzZSAzMDp2YXIgaWI9Yi5MQSgxKSxqYj1iLmluZGV4KCk7Yi5yZXdpbmQoKSxhPS0xLChpYj49IgkiJiZpYjw9IlxuInx8aWI9PSJcciJ8fGliPT0iICIpJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9NTppYiE9JyInJiZpYiE9IicifHwhIXRoaXMuaW5FbGVtPyhpYj09IiEifHxpYj49IiMiJiZpYjw9IiUifHxpYj49IigiJiZpYjw9IjsifHxpYj49Ij0iJiZpYjw9InoifHxpYj09InwifHxpYj49In4iJiZpYjw9Iu2fvyJ8fGliPj0i7oCAIiYmaWI8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2E9MTQ6YT0yMzphPTE3LGIuc2VlayhqYik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDMxOnZhciBrYj1iLkxBKDEpLGxiPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsa2I9PSciJyYmKHRoaXMuaW5RdW90QXR0cnx8IXRoaXMuaW5FbGVtKT9hPTE1OihrYj49IgkiJiZrYjw9IlxuInx8a2I9PSJcciJ8fGtiPj0iICImJmtiPD0iISJ8fGtiPj0iIyImJmtiPD0iJSJ8fGtiPj0iJyImJmtiPD0iOyJ8fGtiPj0iPSImJmtiPD0ieiJ8fGtiPT0ifCJ8fGtiPj0ifiImJmtiPD0i7Z+/Inx8a2I+PSLugIAiJiZrYjw9Iu+/vSIpJiYhdGhpcy5pbkVsZW0/YT0xNzphPTE2LGIuc2VlayhsYik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDMyOnZhciBtYj1iLkxBKDEpLG5iPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEsbWI9PSIjIj9hPTM3OihtYj09ImEifHxtYj09ImcifHxtYj09ImwifHxtYj09InEiKSYmKCF0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluUXVvdEF0dHIpJiYoYT0zOCksYi5zZWVrKG5iKTtpZihhPj0wKXJldHVybiBhO2JyZWFrO2Nhc2UgMzM6dmFyIG9iPWIuTEEoMSkscGI9Yi5pbmRleCgpO2IucmV3aW5kKCksYT0tMSxvYj09InsiJiYoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cik/YT0yODphPTI5LGIuc2VlayhwYik7aWYoYT49MClyZXR1cm4gYTticmVhaztjYXNlIDM0OnZhciBxYj1iLkxBKDEpLHJiPWIuaW5kZXgoKTtiLnJld2luZCgpLGE9LTEscWI9PSInIiYmKHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9hPTE4OihxYj49IgkiJiZxYjw9IlxuInx8cWI9PSJcciJ8fHFiPj0iICImJnFiPD0iJSJ8fHFiPj0iKCImJnFiPD0iOyJ8fHFiPj0iPSImJnFiPD0ieiJ8fHFiPT0ifCJ8fHFiPj0ifiImJnFiPD0i7Z+/Inx8cWI+PSLugIAiJiZxYjw9Iu+/vSIpJiYhdGhpcy5pbkVsZW0/YT0xNzphPTE5LGIuc2VlayhyYik7aWYoYT49MClyZXR1cm4gYX19LmNhbGwodGhpcy5yZWNvZ25pemVyLGEsYik7aWYoIWQuYW50bHIubGFuZy5pc1VuZGVmaW5lZChlKSlyZXR1cm4gZTt2YXIgZj1uZXcgZC5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwxNixjLGIpO3Rocm93IHRoaXMuZXJyb3IoZiksZn0sZHVtbXk6bnVsbH0pfSgpLGIuWE1MTGV4ZXI9Zn0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5L1hRRFRQYXJzZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS94cXVlcnkvYW50bHIzLWFsbCIsImFjZS9tb2RlL3hxdWVyeS9YUXVlcnlTZW1hbnRpY0hpZ2hsaWdodGVyIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vYW50bHIzLWFsbCIpLm9yZyxlPWEoIi4vWFF1ZXJ5U2VtYW50aWNIaWdobGlnaHRlciIpLlhRdWVyeVNlbWFudGljSGlnaGxpZ2h0ZXIsZj1iLlhRRFRQYXJzZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLmhpZ2hsaWdodGVyPW5ldyBlO3ZhciBjPXRoaXM7YS5nZXRUb2tlblNvdXJjZSgpLmFkZENvbW1lbnQ9ZnVuY3Rpb24oYixkKXt2YXIgZT1hLmdldFRva2VuU291cmNlKCkuY29tbWVudHM7Zm9yKHZhciBmIGluIGUpe3ZhciBnPWVbZl07Yy5oaWdobGlnaHRlci5hZGRUb2tlbihnLnN0YXJ0LGcuc3RvcCwiY29tbWVudCIpfWEuZ2V0VG9rZW5Tb3VyY2UoKS5jb21tZW50cz1bXSxjLmhpZ2hsaWdodGVyLmFkZFRva2VuKGIsZCwiY29tbWVudCIpfSxmLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEsYil9O2QuYW50bHIubGFuZy5leHRlbmQoZixkLmFudGxyLnJ1bnRpbWUuUGFyc2VyLHt9KX0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5L1hRdWVyeVNlbWFudGljSGlnaGxpZ2h0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS94cXVlcnkvUG9zaXRpb24iXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi9Qb3NpdGlvbiIpLlBvc2l0aW9uLGU9Yi5YUXVlcnlTZW1hbnRpY0hpZ2hsaWdodGVyPWZ1bmN0aW9uKCl7dGhpcy50b2tlbml6ZXI9bnVsbCx0aGlzLnBsYWluPW51bGwsdGhpcy5zb3VyY2U9W10sdGhpcy5saW5lcz1bXSx0aGlzLmdldFRva2Vucz1mdW5jdGlvbigpe3ZhciBhPW5ldyBBcnJheSh0aGlzLnNvdXJjZS5sZW5ndGgpLGI9bmV3IEFycmF5KHRoaXMuc291cmNlLmxlbmd0aCksYz0ic3RhcnQiO2ZvcihpIGluIHRoaXMuc291cmNlKXt2YXIgZD1bXSxlPVtdO3RoaXMubGluZXNbaV0mJihlPXRoaXMubGluZXNbaV0uc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLnBvc2l0aW9uLmdldE9mZnNldCgpLWIucG9zaXRpb24uZ2V0T2Zmc2V0KCl9KSk7dmFyIGY9dGhpcy5zb3VyY2VbaV0sZz0iIixoPTA7Zm9yKGogaW4gZSl7dmFyIGs9ZVtqXSxsPWsucG9zaXRpb247aWYobC5nZXRPZmZzZXQoKT5oKXt2YXIgbT1mLnN1YnN0cmluZyhoLGwuZ2V0T2Zmc2V0KCkpO2crPW0sZC5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTptfSl9aD1sLmdldE9mZnNldCgpK2wuZ2V0TGVuZ3RoKCksbT1mLnN1YnN0cmluZyhsLmdldE9mZnNldCgpLGgpLGcrPW0sZC5wdXNoKHt0eXBlOmsudHlwZSx2YWx1ZTptfSl9dmFyIG49InN0YXJ0IjtkLmxlbmd0aD4wJiZkW2QubGVuZ3RoLTFdLnR5cGUsbj1uIT0iY29tbWVudCImJm4hPSJzdHJpbmciJiZuIT0iY2RhdGEiJiZuIT0idGFnIj8ic3RhcnQiOm4saDxmLmxlbmd0aCYmKG09Zi5zdWJzdHJpbmcoaCksZC5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTptfSksZys9bSksZj09Zz8oYVtpXT1kLGJbaV09bik6KGFbaV09W3t0eXBlOiJ0ZXh0Iix2YWx1ZTpmfV0sYltpXT1uKTtpZihhW2ldLmxlbmd0aD09PTEmJmFbaV1bMF0udHlwZT09PSJ0ZXh0IiYmdGhpcy50b2tlbml6ZXIgaW5zdGFuY2VvZiBPYmplY3Qpe3ZhciBvPWJbaS0xXT9iW2ktMV06InN0YXJ0IixwPXRoaXMudG9rZW5pemVyLmdldExpbmVUb2tlbnMoYVtpXVswXS52YWx1ZSxvKTthW2ldPXAudG9rZW5zLGJbaV09cC5zdGF0ZX19cmV0dXJue3N0YXRlczpiLGxpbmVzOmF9fSx0aGlzLmFkZFRva2VuPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLnBsYWluLnN1YnN0cmluZygwLGEpLGY9dGhpcy5wbGFpbi5zdWJzdHJpbmcoMCxhKS5zcGxpdCgiXG4iKS5sZW5ndGg7Zj1mPT0wPzA6Zi0xO3ZhciBnPWUubGFzdEluZGV4T2YoIlxuIik7Zz1nPT0tMT9hOmEtZS5sYXN0SW5kZXhPZigiXG4iKS0xO3ZhciBoPWEsaT10aGlzLnBsYWluLnN1YnN0cmluZyhhLGIpLGo9Zjtmb3IodmFyIGsgaW4gaSl7dmFyIGw9aVtrXTtpZihsPT0iXG4iKXt2YXIgbT1rO209bTxiP206Yix0aGlzLmFkZFBvc2l0aW9uKG5ldyBkKGosZyxtKSxjKSxqKyssZz0wLGg9a319dGhpcy5hZGRQb3NpdGlvbihuZXcgZChqLGcsYi1oKzEpLGMpfSx0aGlzLmFkZFBvc2l0aW9uPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKCk7dGhpcy5saW5lc1tjXXx8KHRoaXMubGluZXNbY109W10pLHRoaXMubGluZXNbY10ucHVzaCh7dHlwZTpiLHBvc2l0aW9uOmF9KX0sdGhpcy5zZXRTb3VyY2U9ZnVuY3Rpb24oYSl7dGhpcy5wbGFpbj1hLmRhdGEsdGhpcy5zb3VyY2U9dGhpcy5wbGFpbi5zcGxpdCgiXG4iKX19fSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkvUG9zaXRpb24iLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yi5Qb3NpdGlvbj1mdW5jdGlvbihhLGIsYyl7dGhpcy5saW5lPWEsdGhpcy5vZmZzZXQ9Yix0aGlzLmxlbmd0aD1jLHRoaXMuZ2V0TGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxpbmV9LHRoaXMuZ2V0T2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0fSx0aGlzLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH19fSksZGVmaW5lKCJhY2UvdG9rZW5pemVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEsYil7Yj1iPyJnIitiOiJnIix0aGlzLnJ1bGVzPWEsdGhpcy5yZWdFeHBzPXt9LHRoaXMubWF0Y2hNYXBwaW5ncz17fTtmb3IodmFyIGMgaW4gdGhpcy5ydWxlcyl7dmFyIGQ9dGhpcy5ydWxlc1tjXSxlPWQsZj1bXSxnPTAsaD10aGlzLm1hdGNoTWFwcGluZ3NbY109e307Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe2VbaV0ucmVnZXggaW5zdGFuY2VvZiBSZWdFeHAmJihlW2ldLnJlZ2V4PWVbaV0ucmVnZXgudG9TdHJpbmcoKS5zbGljZSgxLC0xKSk7dmFyIGo9KG5ldyBSZWdFeHAoIig/OigiK2VbaV0ucmVnZXgrIil8KC4pKSIpKS5leGVjKCJhIikubGVuZ3RoLTIsaz1lW2ldLnJlZ2V4LnJlcGxhY2UoL1xcKFswLTldKykvZyxmdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKHBhcnNlSW50KGIsMTApK2crMSl9KTtpZihqPjEmJmVbaV0udG9rZW4ubGVuZ3RoIT09ai0xKXRocm93IG5ldyBFcnJvcigiTWF0Y2hpbmcgZ3JvdXBzIGFuZCBsZW5ndGggb2YgdGhlIHRva2VuIGFycmF5IGRvbid0IG1hdGNoIGluIHJ1bGUgIyIraSsiIG9mIHN0YXRlICIrYyk7aFtnXT17cnVsZTppLGxlbjpqfSxnKz1qLGYucHVzaChrKX10aGlzLnJlZ0V4cHNbY109bmV3IFJlZ0V4cCgiKD86KCIrZi5qb2luKCIpfCgiKSsiKXwoLikpIixiKX19OyhmdW5jdGlvbigpe3RoaXMuZ2V0TGluZVRva2Vucz1mdW5jdGlvbihhLGIpe3ZhciBjPWJ8fCJzdGFydCIsZD10aGlzLnJ1bGVzW2NdLGU9dGhpcy5tYXRjaE1hcHBpbmdzW2NdLGY9dGhpcy5yZWdFeHBzW2NdO2YubGFzdEluZGV4PTA7dmFyIGcsaD1bXSxpPTAsaj17dHlwZTpudWxsLHZhbHVlOiIifTt3aGlsZShnPWYuZXhlYyhhKSl7dmFyIGs9InRleHQiLGw9bnVsbCxtPVtnWzBdXTtmb3IodmFyIG49MDtuPGcubGVuZ3RoLTI7bisrKXtpZihnW24rMV09PT11bmRlZmluZWQpY29udGludWU7bD1kW2Vbbl0ucnVsZV0sZVtuXS5sZW4+MSYmKG09Zy5zbGljZShuKzIsbisxK2Vbbl0ubGVuKSksdHlwZW9mIGwudG9rZW49PSJmdW5jdGlvbiI/az1sLnRva2VuLmFwcGx5KHRoaXMsbSk6az1sLnRva2VuLGwubmV4dCYmKGM9bC5uZXh0LGQ9dGhpcy5ydWxlc1tjXSxlPXRoaXMubWF0Y2hNYXBwaW5nc1tjXSxpPWYubGFzdEluZGV4LGY9dGhpcy5yZWdFeHBzW2NdLGYubGFzdEluZGV4PWkpO2JyZWFrfWlmKG1bMF0pe3R5cGVvZiBrPT0ic3RyaW5nIiYmKG09W20uam9pbigiIildLGs9W2tdKTtmb3IodmFyIG49MDtuPG0ubGVuZ3RoO24rKyl7aWYoIW1bbl0pY29udGludWU7KCFsfHxsLm1lcmdlfHxrW25dPT09InRleHQiKSYmai50eXBlPT09a1tuXT9qLnZhbHVlKz1tW25dOihqLnR5cGUmJmgucHVzaChqKSxqPXt0eXBlOmtbbl0sdmFsdWU6bVtuXX0pfX1pZihpPT1hLmxlbmd0aClicmVhaztpPWYubGFzdEluZGV4fXJldHVybiBqLnR5cGUmJmgucHVzaChqKSx7dG9rZW5zOmgsc3RhdGU6Y319fSkuY2FsbChkLnByb3RvdHlwZSksYi5Ub2tlbml6ZXI9ZH0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYWZ0ZXJ8YW5jZXN0b3J8YW5jZXN0b3Itb3Itc2VsZnxhbmR8YXN8YXNjZW5kaW5nfGF0dHJpYnV0ZXxiZWZvcmV8Y2FzZXxjYXN0fGNhc3RhYmxlfGNoaWxkfGNvbGxhdGlvbnxjb21tZW50fGNvcHl8Y291bnR8ZGVjbGFyZXxkZWZhdWx0fGRlbGV0ZXxkZXNjZW5kYW50fGRlc2NlbmRhbnQtb3Itc2VsZnxkZXNjZW5kaW5nfGRpdnxkb2N1bWVudHxkb2N1bWVudC1ub2RlfGVsZW1lbnR8ZWxzZXxlbXB0eXxlbXB0eS1zZXF1ZW5jZXxlbmR8ZXF8ZXZlcnl8ZXhjZXB0fGZpcnN0fGZvbGxvd2luZ3xmb2xsb3dpbmctc2libGluZ3xmb3J8ZnVuY3Rpb258Z2V8Z3JvdXB8Z3R8aWRpdnxpZnxpbXBvcnR8aW5zZXJ0fGluc3RhbmNlfGludGVyc2VjdHxpbnRvfGlzfGl0ZW18bGFzdHxsZXxsZXR8bHR8bW9kfG1vZGlmeXxtb2R1bGV8bmFtZXNwYWNlfG5hbWVzcGFjZS1ub2RlfG5lfG5vZGV8b25seXxvcnxvcmRlcnxvcmRlcmVkfHBhcmVudHxwcmVjZWRpbmd8cHJlY2VkaW5nLXNpYmxpbmd8cHJvY2Vzc2luZy1pbnN0cnVjdGlvbnxyZW5hbWV8cmVwbGFjZXxyZXR1cm58c2F0aXNmaWVzfHNjaGVtYS1hdHRyaWJ1dGV8c2NoZW1hLWVsZW1lbnR8c2VsZnxzb21lfHN0YWJsZXxzdGFydHxzd2l0Y2h8dGV4dHx0b3x0cmVhdHx0cnl8dHlwZXN3aXRjaHx1bmlvbnx1bm9yZGVyZWR8dmFsaWRhdGV8d2hlcmV8d2l0aHx4cXVlcnl8Y29udGFpbnN8cGFyYWdyYXBoc3xzZW50ZW5jZXN8dGltZXN8d29yZHN8Ynl8Y29sbGVjdGlvbnJldHVybnx2YXJpYWJsZXx2ZXJzaW9ufG9wdGlvbnx3aGVufGVuY29kaW5nfHRvc3dpdGNofGNhdGNofHR1bWJsaW5nfHNsaWRpbmd8d2luZG93fGF0fHVzaW5nfHN0ZW1taW5nfGNvbGxlY3Rpb258c2NoZW1hfHdoaWxlfG9ufG5vZGVzfGluZGV4fGV4dGVybmFsfHRoZW58aW58dXBkYXRpbmd8dmFsdWV8b2Z8Y29udGFpbnNicmVha3xsb29wfGNvbnRpbnVlfGV4aXR8cmV0dXJuaW5nIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwoOiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwkW2EtekEtWl9dW2EtekEtWjAtOV9cXC06XSpcXGIifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIuKj8iJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJcXHdbXFx3K19cXC06XSsoPz1cXCgpIn0se3Rva2VuOmZ1bmN0aW9uKGIpe3JldHVybiBhW2JdPyJrZXl3b3JkIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXCp8PXw8fD58XFwtfFxcKyJ9LHt0b2tlbjoibHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InJwYXJlbiIscmVnZXg6IltcXF0pfV0ifV0sdGFnOlt7dG9rZW46InRleHQiLHJlZ2V4OiI+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifV0sY2RhdGE6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKjpcXCkiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiLisifV19fTtkLmluaGVyaXRzKGcsZiksYi5YUXVlcnlIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvbGFuZyIpLGU9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiZW1wdHlfbGluZSIscmVnZXg6Il4kIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiLisifV19fTsoZnVuY3Rpb24oKXt0aGlzLmFkZFJ1bGVzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGEpe3ZhciBkPWFbY107Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe3ZhciBmPWRbZV07Zi5uZXh0JiYoZi5uZXh0PWIrZi5uZXh0KX10aGlzLiRydWxlc1tiK2NdPWR9fSx0aGlzLmdldFJ1bGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJ1bGVzfSx0aGlzLmVtYmVkUnVsZXM9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9KG5ldyBhKS5nZXRSdWxlcygpO2lmKGUpZm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKyspZVtnXT1iK2VbZ107ZWxzZXtlPVtdO2Zvcih2YXIgaCBpbiBmKWUucHVzaChiK2gpfXRoaXMuYWRkUnVsZXMoZixiKTtmb3IodmFyIGc9MDtnPGUubGVuZ3RoO2crKylBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseSh0aGlzLiRydWxlc1tlW2ddXSxkLmRlZXBDb3B5KGMpKTt0aGlzLiRlbWJlZHN8fCh0aGlzLiRlbWJlZHM9W10pLHRoaXMuJGVtYmVkcy5wdXNoKGIpfSx0aGlzLmdldEVtYmVkcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbWJlZHN9fSkuY2FsbChlLnByb3RvdHlwZSksYi5UZXh0SGlnaGxpZ2h0UnVsZXM9ZX0p]]></data>
	</file>
	<file>
	  <filename>/AceEditor.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpjbGFzcyBBY2VFZGl0b3IgZXh0ZW5kcyBDTVNNb2R1bGUKewoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJIyBBdHRyaWJ1dGVzCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQoKCXByb3RlY3RlZCAkbm9lZGl0b3JzID0gMDsKCXB1YmxpYyAkaGVhZGVyaW5mb3NlbnQgPSBmYWxzZTsKCXByaXZhdGUgJF9odG1sYWN0aXZlID0gZmFsc2U7Cglwcml2YXRlICRfamF2YXNjcmlwdGFjdGl2ZSA9IGZhbHNlOwoJcHJpdmF0ZSAkX2Nzc2FjdGl2ZSA9IGZhbHNlOwoJcHJpdmF0ZSAkX3BocGFjdGl2ZSA9IGZhbHNlOwoJcHJpdmF0ZSAkX2RlZmF1bHRhY3RpdmUgPSBmYWxzZTsKCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIE1vZHVsZSBhcGkgbWV0aG9kcwoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQkJCgoJcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKQoJewoJCXJldHVybiAnQWNlRWRpdG9yJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKCXsKCQlyZXR1cm4gJzAuMi40JzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpCgl7CgkJJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCQkkc21hcnR5LT5hc3NpZ24oJ21vZHVsZV9wYXRoJywgKCR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkpKTsKCgkJJHNtYXJ0eS0+YXNzaWduKCdoZWxwX2dlbmVyYWxfdGl0bGUnLCAkdGhpcy0+TGFuZygnaGVscF9nZW5lcmFsX3RpdGxlJykpOwoJCSRzbWFydHktPmFzc2lnbignaGVscF9nZW5lcmFsX3RleHQnLCAkdGhpcy0+TGFuZygnaGVscF9nZW5lcmFsX3RleHQnKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdoZWxwX2tleWJvYXJkc2hvcnRjdXRzX3RpdGxlJywgJHRoaXMtPkxhbmcoJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfdGl0bGUnKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdoZWxwX2tleWJvYXJkc2hvcnRjdXRzX2NvbnRlbnQnLCAkdGhpcy0+TGFuZygnaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50JykpOwoJCSRzbWFydHktPmFzc2lnbignaGVscF9mcm9udGVuZF90aXRsZScsICR0aGlzLT5MYW5nKCdoZWxwX2Zyb250ZW5kX3RpdGxlJykpOwoJCSRzbWFydHktPmFzc2lnbignaGVscF9mcm9udGVuZF9jb250ZW50JywgJHRoaXMtPkxhbmcoJ2hlbHBfZnJvbnRlbmRfY29udGVudCcpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2hlbHBfZnJvbnRlbmRfc2FtcGxlJywgY21zX2h0bWxlbnRpdGllcygkdGhpcy0+TGFuZygnaGVscF9mcm9udGVuZF9zYW1wbGUnKSkpOwoJCSRzbWFydHktPmFzc2lnbignaGVscF9hYm91dF90aXRsZScsICR0aGlzLT5MYW5nKCdoZWxwX2Fib3V0X3RpdGxlJykpOwoJCSRzbWFydHktPmFzc2lnbignaGVscF9hYm91dF90ZXh0JywgJHRoaXMtPkxhbmcoJ2hlbHBfYWJvdXRfdGV4dCcpKTsKCgkJcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2hlbHAudHBsJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvcigpCgl7CgkJcmV0dXJuICdHb3JhbiBJbGljJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQoJewoJCXJldHVybiAndW5pcXUzZUBnbWFpbC5jb20nOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKCXsKCQkkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhY3Rpb24nLCBDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtb2RlcycsIENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RoZW1lcycsIENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vZGUnLCBDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aGVtZScsIENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3dpZHRoJywgQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaGVpZ2h0JywgQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGl2aWQnLCBDTEVBTl9TVFJJTkcpOwoJCQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQoJewoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fYWN0aW9uJykpOwoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ21vZGVzJywgJ2h0bWwnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9tb2RlcycpKTsKCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0aGVtZXMnLCAndGV4dG1hdGUnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV90aGVtZXMnKSk7CgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbW9kZScsICdodG1sJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fbW9kZScpKTsKCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0aGVtZScsICd0ZXh0bWF0ZScsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX3RoZW1lJykpOwoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3dpZHRoJywgJzQwMCcsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX3dpZHRoJykpOwoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2hlaWdodCcsICc0MDAnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9oZWlnaHQnKSk7CgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGl2aWQnLCAnZWRpdG9yJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fZGl2aWQnKSk7CgkJCgl9CgoJcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQoJewoJCWlmICh2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcxLjEwJykgPCAwKSB7CgkJCSR0aGlzLT5Jbml0aWFsaXplRnJvbnRlbmQoKTsKCQkJJHRoaXMtPkluaXRpYWxpemVBZG1pbigpOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gTGF6eUxvYWRGcm9udGVuZCgpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKQoJewoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCgl7CgkJcmV0dXJuICdteXByZWZzJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdhZG1pbmRlc2NyaXB0aW9uJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCgl7CgkJcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZScpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQoJewoJCXJldHVybiAiMS45IjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQoJewoJCXJldHVybiAiMS4xMSI7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBIYXNDYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCAkcGFyYW1zID0gYXJyYXkoKSkKCXsKCQlzd2l0Y2ggKCRjYXBhYmlsaXR5KSB7CgkJCWRlZmF1bHQ6CgkJCQlyZXR1cm4gZmFsc2U7CgkJCQlicmVhazsKCQkJCgkJCWNhc2UgJ3d5c2l3eWcnOgoJCQkJcmV0dXJuIGZhbHNlOwoJCQkJYnJlYWs7CgkJCQoJCQljYXNlICdzeW50YXhoaWdobGlnaHRpbmcnOgoJCQkJcmV0dXJuIHRydWU7CgkJCQlicmVhazsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIElzV1lTSVdZRygpCgl7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBJc1N5bnRheEhpZ2hsaWdodGVyKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gU3ludGF4UGFnZUZvcm1TdWJtaXQoKQoJewoJCXJldHVybjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gRG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkID0gJycpCgl7CgkJJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoJCQoJCSRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ21vZCcsICR0aGlzKTsKCQkkc21hcnR5LT5hc3NpZ25fYnlfcmVmKCdhY3Rpb25pZCcsICRpZCk7CgkJJHNtYXJ0eS0+YXNzaWduX2J5X3JlZigncmV0dXJuaWQnLCAkcmV0dXJuaWQpOwoJCQoJCXBhcmVudDo6RG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gU3ludGF4VGV4dGFyZWEoJG5hbWUgPSAndGV4dGFyZWEnLCAkc3ludGF4ID0gJ2h0bWwnLCAkY29sdW1ucyA9ICc4MCcsICRyb3dzID0gJzE1JywgJGVuY29kaW5nID0gJycsICRjb250ZW50ID0gJycsICRzdHlsZXNoZWV0ID0gJycsICRhZGR0ZXh0ID0gJycpCgl7CgkJJHRleHRhcmVhICAgICAgICAgICA9ICcnOwoJCSR0aGlzLT5zeW50YXhhY3RpdmUgPSB0cnVlOwoJCSRzbWFydHkgICAgICAgICAgICAgPSAkdGhpcy0+c21hcnR5OwoJCSRjb25maWcgICAgICAgICAgICAgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3RleHRhcmVhaWQnLCAiZWRpdG9yIiAuICR0aGlzLT5ub2VkaXRvcnMpOwoJCSRzbWFydHktPmFzc2lnbignZWRpdG9yaWQnLCAiYWNlLWVkaXRvciIgLiAkdGhpcy0+bm9lZGl0b3JzKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3RleHRhcmVhbmFtZScsICRuYW1lKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3N5bnRheF9jb250ZW50JywgJGNvbnRlbnQpOwoJCSRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+bm9lZGl0b3JzKTsKCQkKCQkvLyBBc3NpZ24gcHJlZnMKCQkkc21hcnR5LT5hc3NpZ24oJ3dpZHRoJywgJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3dpZHRoJywgJzgwJykpOwoJCSRzbWFydHktPmFzc2lnbignaGVpZ2h0JywgJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ2hlaWdodCcsICc0MCcpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3RoZW1lJywgJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3RoZW1lJykpOwoJCSRzbWFydHktPmFzc2lnbignZm9udHNpemUnLCAkdGhpcy0+QWNlR2V0UHJlZmVyZW5jZSgnZm9udHNpemUnKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdzb2Z0X3dyYXAnLCAkdGhpcy0+QWNlR2V0UHJlZmVyZW5jZSgnc29mdF93cmFwJykpOwoJCQoJCWlmICgkdGhpcy0+QWNlR2V0UHJlZmVyZW5jZSgnZW5hYmxlX2llJykpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCdlbmFibGVfaWUnLCAndHJ1ZScpOwoJCX0gZWxzZSB7CgkJCSRzbWFydHktPmFzc2lnbignZW5hYmxlX2llJywgJ2ZhbHNlJyk7CgkJfQoJCQoJCWlmICgkdGhpcy0+QWNlR2V0UHJlZmVyZW5jZSgnZnVsbF9saW5lJykpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCdmdWxsX2xpbmUnLCAnbGluZScpOwoJCX0gZWxzZSB7CgkJCSRzbWFydHktPmFzc2lnbignZnVsbF9saW5lJywgJ3RleHQnKTsKCQl9CgkJCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdoaWdobGlnaHRfYWN0aXZlJykpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCdoaWdobGlnaHRfYWN0aXZlJywgJ3RydWUnKTsKCQl9IGVsc2UgewoJCQkkc21hcnR5LT5hc3NpZ24oJ2hpZ2hsaWdodF9hY3RpdmUnLCAnZmFsc2UnKTsKCQl9CgkJCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdzaG93X2ludmlzaWJsZXMnKSkgewoJCQkkc21hcnR5LT5hc3NpZ24oJ3Nob3dfaW52aXNpYmxlcycsICd0cnVlJyk7CgkJfSBlbHNlIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCdzaG93X2ludmlzaWJsZXMnLCAnZmFsc2UnKTsKCQl9CgkJCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdwZXJzaXN0ZW50X2hzY3JvbGwnKSkgewoJCQkkc21hcnR5LT5hc3NpZ24oJ3BlcnNpc3RlbnRfaHNjcm9sbCcsICd0cnVlJyk7CgkJfSBlbHNlIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCdwZXJzaXN0ZW50X2hzY3JvbGwnLCAnZmFsc2UnKTsKCQl9CgkJCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdzaG93X2d1dHRlcicpKSB7CgkJCSRzbWFydHktPmFzc2lnbignc2hvd19ndXR0ZXInLCAndHJ1ZScpOwoJCX0gZWxzZSB7CgkJCSRzbWFydHktPmFzc2lnbignc2hvd19ndXR0ZXInLCAnZmFsc2UnKTsKCQl9CgkJCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdwcmludF9tYXJnaW4nKSkgewoJCQkkc21hcnR5LT5hc3NpZ24oJ3ByaW50X21hcmdpbicsICd0cnVlJyk7CgkJfSBlbHNlIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCdwcmludF9tYXJnaW4nLCAnZmFsc2UnKTsKCQl9CgkJCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdzb2Z0X3RhYicpKSB7CgkJCSRzbWFydHktPmFzc2lnbignc29mdF90YWInLCAndHJ1ZScpOwoJCX0gZWxzZSB7CgkJCSRzbWFydHktPmFzc2lnbignc29mdF90YWInLCAnZmFsc2UnKTsKCQl9CgkJCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdoaWdobGlnaHRfc2VsZWN0ZWQnKSkgewoJCQkkc21hcnR5LT5hc3NpZ24oJ2hpZ2hsaWdodF9zZWxlY3RlZCcsICd0cnVlJyk7CgkJfSBlbHNlIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCdoaWdobGlnaHRfc2VsZWN0ZWQnLCAnZmFsc2UnKTsKCQl9CgkJc3dpdGNoICgkc3ludGF4KSB7CgkJCWNhc2UgJ2h0bWwnOgoJCQkJJHNtYXJ0eS0+YXNzaWduKCdtb2RlJywgJ2h0bWwnKTsKCQkJCSR0aGlzLT5faHRtbGFjdGl2ZSA9IHRydWU7CgkJCQlicmVhazsKCQkJY2FzZSAnanMnOgoJCQljYXNlICdqYXZhc2NyaXB0JzoKCQkJCSRzbWFydHktPmFzc2lnbignbW9kZScsICdqYXZhc2NyaXB0Jyk7CgkJCQkkdGhpcy0+X2phdmFzY3JpcHRhY3RpdmUgPSB0cnVlOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2Nzcyc6CgkJCQkkc21hcnR5LT5hc3NpZ24oJ21vZGUnLCAnY3NzJyk7CgkJCQkkdGhpcy0+X2Nzc2FjdGl2ZSA9IHRydWU7CgkJCQlicmVhazsKCQkJY2FzZSAncGhwJzoKCQkJCSRzbWFydHktPmFzc2lnbignbW9kZScsICdwaHAnKTsKCQkJCSR0aGlzLT5fcGhwYWN0aXZlID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0OgoJCQkJJHNtYXJ0eS0+YXNzaWduKCdtb2RlJywgJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ21vZGUnKSk7CgkJCQkkdGhpcy0+X2RlZmF1bHRhY3RpdmUgPSB0cnVlOwoJCQkJYnJlYWs7CgkJfQoJCQoJCSR0ZXh0YXJlYSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FjZS50cGwnKTsKCQkkdGhpcy0+bm9lZGl0b3JzKys7CgkJCgkJcmV0dXJuICR0ZXh0YXJlYTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gU3ludGF4R2VuZXJhdGVIZWFkZXIoJGh0bWxyZXN1bHQgPSAnJykKCXsKCQlpZiAoJHRoaXMtPmhlYWRlcmluZm9zZW50KQoJCQlyZXR1cm4gJyc7CgkJJHRoZW1lICAgICAgID0gJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3RoZW1lJyk7CgkJCgkJaWYgKCR0aGlzLT5fY3NzYWN0aXZlKSB7CgkJCSRzeW50YXggPSAnY3NzJzsKCQl9CgkJCgkJaWYgKCR0aGlzLT5famF2YXNjcmlwdGFjdGl2ZSkgewoJCQkkc3ludGF4ID0gJ2phdmFzY3JpcHQnOwoJCX0KCQkKCQlpZiAoJHRoaXMtPl9waHBhY3RpdmUpIHsKCQkJJHN5bnRheCA9ICdwaHAnOwoJCX0KCQkKCQlpZiAoJHRoaXMtPl9odG1sYWN0aXZlKSB7CgkJCSRzeW50YXggPSAnaHRtbCc7CgkJfQoJCQoJCQoJCWlmICgkdGhpcy0+X2RlZmF1bHRhY3RpdmUpIHsKCQkJJHN5bnRheCA9ICR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdtb2RlJyk7CgkJfQoJCQoJCSRoZWFkZXIgPSAnCiAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJyAuICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2Nzcy9qcXVlcnktdWktMS44LjE2LmN1c3RvbS5jc3MiIC8+CiAgICAgICAgPHNjcmlwdCBzcmM9IicgLiAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpIC4gJy9hY2Uvc3JjL2FjZS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBzcmM9IicgLiAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpIC4gJy9hY2Uvc3JjL3RoZW1lLScgLiAkdGhlbWUgLiAnLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4nOwoJCQoJCWlmICgkc3ludGF4ICE9ICdwbGFpbicpIHsKCQkJJGhlYWRlciAuPSAnCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSInIC4gJHRoaXMtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvYWNlL3NyYy9tb2RlLScgLiAkc3ludGF4IC4gJy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+JzsKCQl9CgkJCgkJJHRoaXMtPmhlYWRlcmluZm9zZW50ID0gdHJ1ZTsKCQlyZXR1cm4gJGhlYWRlcjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCgl7CgkJJGluY2RpciA9ICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCk7CgkJJHRtcGwgICA9IDw8PEVPVAogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyRpbmNkaXJ9L2pzL2Z1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+CkVPVDsKCQlyZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXBsKTsKCX0KCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIE1vZHVsZSBtZXRob2RzCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAoKCWZpbmFsIHByaXZhdGUgZnVuY3Rpb24gQWNlR2V0UHJlZmVyZW5jZSgkbmFtZSkKCXsKCQkkdXNlcmlkID0gZ2V0X3VzZXJpZCgpOwoJCSRyZXN1bHQgPSBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfJyAuICRuYW1lKTsKCQkKCQlpZiAoJHJlc3VsdCA9PT0gJycpIHsKCQkJJHJlc3VsdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRuYW1lKTsKCQl9CgkJCgkJcmV0dXJuICRyZXN1bHQ7CgkJCgl9CgkKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7CgokZGl2aWQgICAgPSAnJzsKJGZvbnRzaXplID0gJzEycHgnOwokdGhlbWUgICAgPSAndHdpbGlnaHQnOwoKaWYgKCFpc3NldCgkcGFyYW1zWydkaXZpZCddKSkgewoJcmV0dXJuOwp9Ci8vIGlkIG9mIHdyYXBwaW5nIGVsZW1lbnQKJGRpdmlkICAgID0gdHJpbSgkcGFyYW1zWydkaXZpZCddKTsKLy8gZm9udHNpemUKJGZvbnRzaXplID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX2ZvbnRzaXplJyk7Ci8vIHdpZHRoIG9mIHdyYXBwaW5nIGVsZW1lbnQKJHdpZHRoICAgID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnd2lkdGgnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfd2lkdGgnKSk7Ci8vIGhlaWdodCBvZiB3cmFwcGluZyBlbGVtZW50CiRoZWlnaHQgICA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ2hlaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9oZWlnaHQnKSk7Ci8vIG1vZGUgZm9yIGN1cnJlbnQgYXJlYQokbW9kZSAgICAgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdtb2RlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3N5bnRheGFyZWFfbW9kZScpKTsKLy8gdGhlbWUgZm9yIGN1cnJlbnQgYXJlYQokdGhlbWUgICAgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICd0aGVtZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdkaXZpZCcsICRkaXZpZCk7CmlmICgkbW9kZSkKCSRzbWFydHktPmFzc2lnbignbW9kZScsICRtb2RlKTsKaWYgKCR0aGVtZSkKCSRzbWFydHktPmFzc2lnbigndGhlbWUnLCAkdGhlbWUpOwppZiAoJGZvbnRzaXplKQoJJHNtYXJ0eS0+YXNzaWduKCdmb250c2l6ZScsICRmb250c2l6ZSk7CmlmICgkd2lkdGgpCgkkc21hcnR5LT5hc3NpZ24oJ3dpZHRoJywgJHdpZHRoKTsKaWYgKCRoZWlnaHQpCgkkc21hcnR5LT5hc3NpZ24oJ2hlaWdodCcsICRoZWlnaHQpOwoKJHNtYXJ0eS0+YXNzaWduKCdhY2VfdXJsJywgJHRoaXMtPkdldE1vZHVsZVVSTFBhdGgoKSk7Ci8vIG91dHB1dCB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ29yaWdfZGVmYXVsdC50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7CgppZiAoISgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UnKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykpKSB7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicsIGFycmF5KAoJCSdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycKCSkpKTsKCXJldHVybjsKfQoKJHVzZXJpZCA9IGdldF91c2VyaWQoKTsgLy8gZ2V0IHVzZXIgaWQKCmlmICghZW1wdHkoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgewoJJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKfSBlbHNlIHsKCSR0YWIgPSAnc2V0dGluZ3MnOwp9Ci8qIFRhYkhlYWRlcnMgKi8KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7Ci8vIGJhY2tlbmQKaWYgKCgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSkgewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdzZXR0aW5ncycsICR0aGlzLT5MYW5nKCdzZXR0aW5nc190YWInKSwgKCR0YWIgPT0gJ3NldHRpbmdzJykpOwp9Ci8vIGZyb250ZW5kCmlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKSB7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2Zyb250ZW5kc2V0dGluZ3MnLCAkdGhpcy0+TGFuZygnZnJvbnRlbmRzZXR0aW5nc190YWInKSwgKCR0YWIgPT0gJ2Zyb250ZW5kc2V0dGluZ3MnKSk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKLyogVGFiQ29udGVudCAqLwplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKLy8gYmFja2VuZAppZiAoKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZScpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSkpIHsKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzZXR0aW5ncycsICRwYXJhbXMpOwoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKSAuICcvZnVuY3Rpb24uYWRtaW5fcHJlZnN0YWIucGhwJyk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKfQovLyBmcm9udGVuZAppZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2Zyb250ZW5kc2V0dGluZ3MnLCAkcGFyYW1zKTsKCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2Zyb250ZW5kcHJlZnN0YWIucGhwJyk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKfQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.head.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7CgovLyBpbml0aWFsaXplCiR0aGlzLT5kaXZpZCAgPSAnJzsKLy8gc2VsZWN0ZWQgdGhlbWVzCiR0aGlzLT50aGVtZXMgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICd0aGVtZXMnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfdGhlbWUnKSk7Ci8vIHNlbGVjdGVkIG1vZGVzCiR0aGlzLT5tb2RlcyAgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdtb2RlcycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9tb2RlJykpOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2RpdmlkJ10pKSB7CgkkdGhpcy0+ZGl2aWQgPSB0cmltKCRwYXJhbXNbJ2RpdmlkJ10pOwp9CmlmICghaXNfYXJyYXkoJHRoaXMtPm1vZGUpKSB7CgkkdGhpcy0+bW9kZXMgPSBleHBsb2RlKCcsJywgJHRoaXMtPm1vZGVzKTsKfQppZiAoaXNzZXQoJHRoaXMtPnRoZW1lcykgJiYgIWlzX2FycmF5KCR0aGlzLT50aGVtZXMpKSB7CgkkdGhpcy0+dGhlbWVzID0gZXhwbG9kZSgnLCcsICR0aGlzLT50aGVtZXMpOwp9CmlmIChpc3NldCgkdGhpcy0+dGhlbWVzKSkgewoJJHNtYXJ0eS0+YXNzaWduKCd0aGVtZXMnLCAkdGhpcy0+dGhlbWVzKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdtb2RlcycsICR0aGlzLT5tb2Rlcyk7CiRzbWFydHktPmFzc2lnbignYWNlX3VybCcsICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkpOwovLyBvdXRwdXQgdGVtcGxhdGUKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdvcmlnX2hlYWQudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.savefrontendsettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7CgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykpIHsKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJywgYXJyYXkoCgkJJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJwoJKSkpOwoJcmV0dXJuOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmRfd2lkdGgnXSkpCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfd2lkdGgnLCAkcGFyYW1zWydmcm9udGVuZF93aWR0aCddKTsKCmlmIChpc3NldCgkcGFyYW1zWydmcm9udGVuZF9oZWlnaHQnXSkpCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfaGVpZ2h0JywgJHBhcmFtc1snZnJvbnRlbmRfaGVpZ2h0J10pOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2Zyb250ZW5kX21vZGUnXSkpCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfbW9kZScsIGltcGxvZGUoJywnLCAkcGFyYW1zWydmcm9udGVuZF9tb2RlJ10pKTsKCmlmIChpc3NldCgkcGFyYW1zWydmcm9udGVuZF9zeW50YXhhcmVhX21vZGUnXSkpCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfc3ludGF4YXJlYV9tb2RlJywgJHBhcmFtc1snZnJvbnRlbmRfc3ludGF4YXJlYV9tb2RlJ10pOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2Zyb250ZW5kX3RoZW1lJ10pKQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3RoZW1lJywgaW1wbG9kZSgnLCcsICRwYXJhbXNbJ2Zyb250ZW5kX3RoZW1lJ10pKTsKCmlmIChpc3NldCgkcGFyYW1zWydmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJ10pKQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3N5bnRheGFyZWFfdGhlbWUnLCAkcGFyYW1zWydmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJ10pOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2Zyb250ZW5kX2ZvbnRzaXplJ10pKQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX2ZvbnRzaXplJywgJHBhcmFtc1snZnJvbnRlbmRfZm9udHNpemUnXSk7CgovLyByZWRpcmVjdCB0byB0YWIJCQkKJHBhcmFtcyA9IGFycmF5KAoJJ21vZHVsZV9tZXNzYWdlJyA9PiAkdGhpcy0+TGFuZygnc2V0dGluZ3NzYXZlZCcpLAoJJ2FjdGl2ZV90YWInID0+ICdmcm9udGVuZHNldHRpbmdzJwopOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.savesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7CgppZiAoISgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSkgewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgKCQknTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnCgkpKSk7CglyZXR1cm47Cn0KCiR1c2VyaWQgPSBnZXRfdXNlcmlkKCk7CgppZiAoIWVtcHR5KCRwYXJhbXNbJ3dpZHRoJ10pKSB7CgljbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfd2lkdGgnLCAkcGFyYW1zWyd3aWR0aCddKTsKfQoKaWYgKCFlbXB0eSgkcGFyYW1zWydoZWlnaHQnXSkpIHsKCWNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19oZWlnaHQnLCAkcGFyYW1zWydoZWlnaHQnXSk7Cn0KCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19lbmFibGVfaWUnLCAoaXNzZXQoJHBhcmFtc1snZW5hYmxlX2llJ10pID8gMSA6IDApKTsKY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX21vZGUnLCAkcGFyYW1zWydtb2RlJ10pOwpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfdGhlbWUnLCAkcGFyYW1zWyd0aGVtZSddKTsKY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2ZvbnRzaXplJywgJHBhcmFtc1snZm9udHNpemUnXSk7CmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19mdWxsX2xpbmUnLCAoaXNzZXQoJHBhcmFtc1snZnVsbF9saW5lJ10pID8gMSA6IDApKTsKY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2hpZ2hsaWdodF9hY3RpdmUnLCAoaXNzZXQoJHBhcmFtc1snaGlnaGxpZ2h0X2FjdGl2ZSddKSA/IDEgOiAwKSk7CmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19zaG93X2ludmlzaWJsZXMnLCAoaXNzZXQoJHBhcmFtc1snc2hvd19pbnZpc2libGVzJ10pID8gMSA6IDApKTsKY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3BlcnNpc3RlbnRfaHNjcm9sbCcsIChpc3NldCgkcGFyYW1zWydwZXJzaXN0ZW50X2hzY3JvbGwnXSkgPyAxIDogMCkpOwpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfa2V5YmluZGluZycsIChpc3NldCgkcGFyYW1zWydrZXliaW5kaW5nJ10pID8gMSA6IDApKTsKY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3NvZnRfd3JhcCcsICRwYXJhbXNbJ3NvZnRfd3JhcCddKTsKY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3Nob3dfZ3V0dGVyJywgKGlzc2V0KCRwYXJhbXNbJ3Nob3dfZ3V0dGVyJ10pID8gMSA6IDApKTsKY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3ByaW50X21hcmdpbicsIChpc3NldCgkcGFyYW1zWydwcmludF9tYXJnaW4nXSkgPyAxIDogMCkpOwpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfc29mdF90YWInLCAoaXNzZXQoJHBhcmFtc1snc29mdF90YWInXSkgPyAxIDogMCkpOwpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfaGlnaGxpZ2h0X3NlbGVjdGVkJywgKGlzc2V0KCRwYXJhbXNbJ2hpZ2hsaWdodF9zZWxlY3RlZCddKSA/IDEgOiAwKSk7CmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19lbmFibGVfYmVoYXZpb3JzJywgKGlzc2V0KCRwYXJhbXNbJ2VuYWJsZV9iZWhhdmlvcnMnXSkgPyAxIDogMCkpOwoKLy8gcmVkaXJlY3QgdG8gdGFiCiRwYXJhbXMgPSBhcnJheSgKCSdtb2R1bGVfbWVzc2FnZScgPT4gJHRoaXMtPkxhbmcoJ3NldHRpbmdzc2F2ZWQnKSwKCSdhY3RpdmVfdGFiJyA9PiAnc2V0dGluZ3MnCik7CiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/images/ui-bg_flat_0_aaaaaa_40x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAe0lEQVRoge3OMQHAIBAAMcC/kjdZJHTI0A4XBdkz86wfO18H3hRUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUF8O8A8WdY6opAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_flat_75_ffffff_40x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAeUlEQVRoge3OMQHAIBAAsVL/nh8JDDfAkCjImpn5HvbfDpwIVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVhtqiwTEKTLXTgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_55_fbf9ee_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAP0lEQVQ4je3PMQrAMABC0a/3v2zX0mCXNkOgc6C4PARd5DqPGKCU8luS8SbAQhiCQRgJE56kZTfbbP9RSvnkBsWcEAZRWcgqAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_65_ffffff_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAMElEQVQ4je3LIQ4AIBTD0O3f/8wrFgmKhMy8pKJKwkhSKeVbbGuAPU9f4PIopTxgAeS0DRtI4yK0AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_75_dadada_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAANklEQVQ4jWN48uTJfyYGBgaGUWKUGCWGLfHt2zcoi5GREYNgYmJCZiG42IiB98woMUqMEtgIAMdjCdyg+eEBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_75_e6e6e6_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAANUlEQVQ4je3LMQoAIBADwb38/6t5wFXaWAiCtUiaYZvF9hBACOFbuntVVe11B0CSjjeE8BwThQIJ8dhEl0YAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_95_fef1ec_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAPklEQVQ4je3PMQqAMABD0Z/c/7aCIAXjJIhD10LJ8vgZw30eMUApZV/GhZNgSTjoLYElY/hNMJ/S6gullCkPiCIPCr4NiEwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAALElEQVQYlWN49OjRfyYGBgaGIUT8//8fSqBx0Yh///4RL8vAwAAVQ2MNOwIAl6g6KkOJwk8AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_2e83ff_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEUsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvzLrJBNAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_222222_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEUkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiTww4gUAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_454545_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEVERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkQfbf86AAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_888888_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEWMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMiozJxoFPAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_cd0a0a_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEXMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzrDkZjAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui-1.8.16.custom.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IFVJIENTUyBGcmFtZXdvcmsgMS44LjE2CiAqCiAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9UaGVtaW5nL0FQSQogKi8KCi8qIExheW91dCBoZWxwZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoudWktaGVscGVyLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmU7IH0KLnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyBjbGlwOiByZWN0KDFweCAxcHggMXB4IDFweCk7IGNsaXA6IHJlY3QoMXB4LDFweCwxcHgsMXB4KTsgfQoudWktaGVscGVyLXJlc2V0IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3JkZXI6IDA7IG91dGxpbmU6IDA7IGxpbmUtaGVpZ2h0OiAxLjM7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMDAlOyBsaXN0LXN0eWxlOiBub25lOyB9Ci51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXIgeyBjb250ZW50OiAiLiI7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDA7IGNsZWFyOiBib3RoOyB2aXNpYmlsaXR5OiBoaWRkZW47IH0KLnVpLWhlbHBlci1jbGVhcmZpeCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQovKiByZXF1aXJlZCBjb21tZW50IGZvciBjbGVhcmZpeCB0byB3b3JrIGluIE9wZXJhIFwqLwoqIGh0bWwgLnVpLWhlbHBlci1jbGVhcmZpeCB7IGhlaWdodDoxJTsgfQoudWktaGVscGVyLWNsZWFyZml4IHsgZGlzcGxheTpibG9jazsgfQovKiBlbmQgY2xlYXJmaXggKi8KLnVpLWhlbHBlci16Zml4IHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgdG9wOiAwOyBsZWZ0OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IGZpbHRlcjpBbHBoYShPcGFjaXR5PTApOyB9CgoKLyogSW50ZXJhY3Rpb24gQ3VlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLXN0YXRlLWRpc2FibGVkIHsgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7IH0KCgovKiBJY29ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIHN0YXRlcyBhbmQgaW1hZ2VzICovCi51aS1pY29uIHsgZGlzcGxheTogYmxvY2s7IHRleHQtaW5kZW50OiAtOTk5OTlweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfQoKCi8qIE1pc2MgdmlzdWFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIE92ZXJsYXlzICovCi51aS13aWRnZXQtb3ZlcmxheSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9CgoKLyoKICogalF1ZXJ5IFVJIENTUyBGcmFtZXdvcmsgMS44LjE2CiAqCiAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9UaGVtaW5nL0FQSQogKgogKiBUbyB2aWV3IGFuZCBtb2RpZnkgdGhpcyB0aGVtZSwgdmlzaXQgaHR0cDovL2pxdWVyeXVpLmNvbS90aGVtZXJvbGxlci8/ZmZEZWZhdWx0PVZlcmRhbmEsQXJpYWwsc2Fucy1zZXJpZiZmd0RlZmF1bHQ9bm9ybWFsJmZzRGVmYXVsdD0xLjFlbSZjb3JuZXJSYWRpdXM9NHB4JmJnQ29sb3JIZWFkZXI9Y2NjY2NjJmJnVGV4dHVyZUhlYWRlcj0wM19oaWdobGlnaHRfc29mdC5wbmcmYmdJbWdPcGFjaXR5SGVhZGVyPTc1JmJvcmRlckNvbG9ySGVhZGVyPWFhYWFhYSZmY0hlYWRlcj0yMjIyMjImaWNvbkNvbG9ySGVhZGVyPTIyMjIyMiZiZ0NvbG9yQ29udGVudD1mZmZmZmYmYmdUZXh0dXJlQ29udGVudD0wMV9mbGF0LnBuZyZiZ0ltZ09wYWNpdHlDb250ZW50PTc1JmJvcmRlckNvbG9yQ29udGVudD1hYWFhYWEmZmNDb250ZW50PTIyMjIyMiZpY29uQ29sb3JDb250ZW50PTIyMjIyMiZiZ0NvbG9yRGVmYXVsdD1lNmU2ZTYmYmdUZXh0dXJlRGVmYXVsdD0wMl9nbGFzcy5wbmcmYmdJbWdPcGFjaXR5RGVmYXVsdD03NSZib3JkZXJDb2xvckRlZmF1bHQ9ZDNkM2QzJmZjRGVmYXVsdD01NTU1NTUmaWNvbkNvbG9yRGVmYXVsdD04ODg4ODgmYmdDb2xvckhvdmVyPWRhZGFkYSZiZ1RleHR1cmVIb3Zlcj0wMl9nbGFzcy5wbmcmYmdJbWdPcGFjaXR5SG92ZXI9NzUmYm9yZGVyQ29sb3JIb3Zlcj05OTk5OTkmZmNIb3Zlcj0yMTIxMjEmaWNvbkNvbG9ySG92ZXI9NDU0NTQ1JmJnQ29sb3JBY3RpdmU9ZmZmZmZmJmJnVGV4dHVyZUFjdGl2ZT0wMl9nbGFzcy5wbmcmYmdJbWdPcGFjaXR5QWN0aXZlPTY1JmJvcmRlckNvbG9yQWN0aXZlPWFhYWFhYSZmY0FjdGl2ZT0yMTIxMjEmaWNvbkNvbG9yQWN0aXZlPTQ1NDU0NSZiZ0NvbG9ySGlnaGxpZ2h0PWZiZjllZSZiZ1RleHR1cmVIaWdobGlnaHQ9MDJfZ2xhc3MucG5nJmJnSW1nT3BhY2l0eUhpZ2hsaWdodD01NSZib3JkZXJDb2xvckhpZ2hsaWdodD1mY2VmYTEmZmNIaWdobGlnaHQ9MzYzNjM2Jmljb25Db2xvckhpZ2hsaWdodD0yZTgzZmYmYmdDb2xvckVycm9yPWZlZjFlYyZiZ1RleHR1cmVFcnJvcj0wMl9nbGFzcy5wbmcmYmdJbWdPcGFjaXR5RXJyb3I9OTUmYm9yZGVyQ29sb3JFcnJvcj1jZDBhMGEmZmNFcnJvcj1jZDBhMGEmaWNvbkNvbG9yRXJyb3I9Y2QwYTBhJmJnQ29sb3JPdmVybGF5PWFhYWFhYSZiZ1RleHR1cmVPdmVybGF5PTAxX2ZsYXQucG5nJmJnSW1nT3BhY2l0eU92ZXJsYXk9MCZvcGFjaXR5T3ZlcmxheT0zMCZiZ0NvbG9yU2hhZG93PWFhYWFhYSZiZ1RleHR1cmVTaGFkb3c9MDFfZmxhdC5wbmcmYmdJbWdPcGFjaXR5U2hhZG93PTAmb3BhY2l0eVNoYWRvdz0zMCZ0aGlja25lc3NTaGFkb3c9OHB4Jm9mZnNldFRvcFNoYWRvdz0tOHB4Jm9mZnNldExlZnRTaGFkb3c9LThweCZjb3JuZXJSYWRpdXNTaGFkb3c9OHB4CiAqLwoKCi8qIENvbXBvbmVudCBjb250YWluZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoudWktd2lkZ2V0IHsgZm9udC1mYW1pbHk6IFZlcmRhbmEsQXJpYWwsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxLjFlbTsgfQoudWktd2lkZ2V0IC51aS13aWRnZXQgeyBmb250LXNpemU6IDFlbTsgfQoudWktd2lkZ2V0IGlucHV0LCAudWktd2lkZ2V0IHNlbGVjdCwgLnVpLXdpZGdldCB0ZXh0YXJlYSwgLnVpLXdpZGdldCBidXR0b24geyBmb250LWZhbWlseTogVmVyZGFuYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDFlbTsgfQoudWktd2lkZ2V0LWNvbnRlbnQgeyBib3JkZXI6IDFweCBzb2xpZCAjYWFhYWFhOyBiYWNrZ3JvdW5kOiAjZmZmZmZmIHVybChpbWFnZXMvdWktYmdfZmxhdF83NV9mZmZmZmZfNDB4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgY29sb3I6ICMyMjIyMjI7IH0KLnVpLXdpZGdldC1jb250ZW50IGEgeyBjb2xvcjogIzIyMjIyMjsgfQoudWktd2lkZ2V0LWhlYWRlciB7IGJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7IGJhY2tncm91bmQ6ICNjY2NjY2MgdXJsKGltYWdlcy91aS1iZ19oaWdobGlnaHQtc29mdF83NV9jY2NjY2NfMXgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBjb2xvcjogIzIyMjIyMjsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KLnVpLXdpZGdldC1oZWFkZXIgYSB7IGNvbG9yOiAjMjIyMjIyOyB9CgovKiBJbnRlcmFjdGlvbiBzdGF0ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0IHsgYm9yZGVyOiAxcHggc29saWQgI2QzZDNkMzsgYmFja2dyb3VuZDogI2U2ZTZlNiB1cmwoaW1hZ2VzL3VpLWJnX2dsYXNzXzc1X2U2ZTZlNl8xeDQwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjNTU1NTU1OyB9Ci51aS1zdGF0ZS1kZWZhdWx0IGEsIC51aS1zdGF0ZS1kZWZhdWx0IGE6bGluaywgLnVpLXN0YXRlLWRlZmF1bHQgYTp2aXNpdGVkIHsgY29sb3I6ICM1NTU1NTU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoudWktc3RhdGUtaG92ZXIsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwgLnVpLXN0YXRlLWZvY3VzLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMgeyBib3JkZXI6IDFweCBzb2xpZCAjOTk5OTk5OyBiYWNrZ3JvdW5kOiAjZGFkYWRhIHVybChpbWFnZXMvdWktYmdfZ2xhc3NfNzVfZGFkYWRhXzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICMyMTIxMjE7IH0KLnVpLXN0YXRlLWhvdmVyIGEsIC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyIHsgY29sb3I6ICMyMTIxMjE7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoudWktc3RhdGUtYWN0aXZlLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSB7IGJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7IGJhY2tncm91bmQ6ICNmZmZmZmYgdXJsKGltYWdlcy91aS1iZ19nbGFzc182NV9mZmZmZmZfMXg0MDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzIxMjEyMTsgfQoudWktc3RhdGUtYWN0aXZlIGEsIC51aS1zdGF0ZS1hY3RpdmUgYTpsaW5rLCAudWktc3RhdGUtYWN0aXZlIGE6dmlzaXRlZCB7IGNvbG9yOiAjMjEyMTIxOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KLnVpLXdpZGdldCA6YWN0aXZlIHsgb3V0bGluZTogbm9uZTsgfQoKLyogSW50ZXJhY3Rpb24gQ3VlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLXN0YXRlLWhpZ2hsaWdodCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgIHtib3JkZXI6IDFweCBzb2xpZCAjZmNlZmExOyBiYWNrZ3JvdW5kOiAjZmJmOWVlIHVybChpbWFnZXMvdWktYmdfZ2xhc3NfNTVfZmJmOWVlXzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgY29sb3I6ICMzNjM2MzY7IH0KLnVpLXN0YXRlLWhpZ2hsaWdodCBhLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgYSB7IGNvbG9yOiAjMzYzNjM2OyB9Ci51aS1zdGF0ZS1lcnJvciwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIHtib3JkZXI6IDFweCBzb2xpZCAjY2QwYTBhOyBiYWNrZ3JvdW5kOiAjZmVmMWVjIHVybChpbWFnZXMvdWktYmdfZ2xhc3NfOTVfZmVmMWVjXzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgY29sb3I6ICNjZDBhMGE7IH0KLnVpLXN0YXRlLWVycm9yIGEsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IgYSwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIGEgeyBjb2xvcjogI2NkMGEwYTsgfQoudWktc3RhdGUtZXJyb3ItdGV4dCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvci10ZXh0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3ItdGV4dCB7IGNvbG9yOiAjY2QwYTBhOyB9Ci51aS1wcmlvcml0eS1wcmltYXJ5LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXByaW1hcnksIC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1wcmltYXJ5IHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KLnVpLXByaW9yaXR5LXNlY29uZGFyeSwgLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1zZWNvbmRhcnksICAudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktc2Vjb25kYXJ5IHsgb3BhY2l0eTogLjc7IGZpbHRlcjpBbHBoYShPcGFjaXR5PTcwKTsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfQoudWktc3RhdGUtZGlzYWJsZWQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGlzYWJsZWQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kaXNhYmxlZCB7IG9wYWNpdHk6IC4zNTsgZmlsdGVyOkFscGhhKE9wYWNpdHk9MzUpOyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyB9CgovKiBJY29ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIHN0YXRlcyBhbmQgaW1hZ2VzICovCi51aS1pY29uIHsgd2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc18yMjIyMjJfMjU2eDI0MC5wbmcpOyB9Ci51aS13aWRnZXQtY29udGVudCAudWktaWNvbiB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc18yMjIyMjJfMjU2eDI0MC5wbmcpOyB9Ci51aS13aWRnZXQtaGVhZGVyIC51aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBuZyk7IH0KLnVpLXN0YXRlLWRlZmF1bHQgLnVpLWljb24geyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzg4ODg4OF8yNTZ4MjQwLnBuZyk7IH0KLnVpLXN0YXRlLWhvdmVyIC51aS1pY29uLCAudWktc3RhdGUtZm9jdXMgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfNDU0NTQ1XzI1NngyNDAucG5nKTsgfQoudWktc3RhdGUtYWN0aXZlIC51aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzQ1NDU0NV8yNTZ4MjQwLnBuZyk7IH0KLnVpLXN0YXRlLWhpZ2hsaWdodCAudWktaWNvbiB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc18yZTgzZmZfMjU2eDI0MC5wbmcpOyB9Ci51aS1zdGF0ZS1lcnJvciAudWktaWNvbiwgLnVpLXN0YXRlLWVycm9yLXRleHQgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfY2QwYTBhXzI1NngyNDAucG5nKTsgfQoKLyogcG9zaXRpb25pbmcgKi8KLnVpLWljb24tY2FyYXQtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOyB9Ci51aS1pY29uLWNhcmF0LTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAwOyB9Ci51aS1pY29uLWNhcmF0LTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IDA7IH0KLnVpLWljb24tY2FyYXQtMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IDA7IH0KLnVpLWljb24tY2FyYXQtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggMDsgfQoudWktaWNvbi1jYXJhdC0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggMDsgfQoudWktaWNvbi1jYXJhdC0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAwOyB9Ci51aS1pY29uLWNhcmF0LTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggMDsgfQoudWktaWNvbi1jYXJhdC0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAwOyB9Ci51aS1pY29uLWNhcmF0LTItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IDA7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLW5lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNnB4OyB9Ci51aS1pY29uLWFycm93LTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1uZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0yLW5lLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItc2UtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3dzdG9wLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3N0b3AtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93c3RvcC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3dzdG9wLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLW5lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMi1uLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0yLW5lLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0yLXNlLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm4tMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm4tMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm4tMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm4tMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmVmcmVzaC0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JlZnJlc2gtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmVmcmVzaC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3ctNCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTgwcHg7IH0KLnVpLWljb24tYXJyb3ctNC1kaWFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTgwcHg7IH0KLnVpLWljb24tZXh0bGluayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC04MHB4OyB9Ci51aS1pY29uLW5ld3dpbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC04MHB4OyB9Ci51aS1pY29uLXJlZnJlc2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtODBweDsgfQoudWktaWNvbi1zaHVmZmxlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTgwcHg7IH0KLnVpLWljb24tdHJhbnNmZXItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTgwcHg7IH0KLnVpLWljb24tdHJhbnNmZXJ0aGljay1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTgwcHg7IH0KLnVpLWljb24tZm9sZGVyLWNvbGxhcHNlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTk2cHg7IH0KLnVpLWljb24tZm9sZGVyLW9wZW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtOTZweDsgfQoudWktaWNvbi1kb2N1bWVudCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC05NnB4OyB9Ci51aS1pY29uLWRvY3VtZW50LWIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtOTZweDsgfQoudWktaWNvbi1ub3RlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTk2cHg7IH0KLnVpLWljb24tbWFpbC1jbG9zZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtOTZweDsgfQoudWktaWNvbi1tYWlsLW9wZW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtOTZweDsgfQoudWktaWNvbi1zdWl0Y2FzZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtOTZweDsgfQoudWktaWNvbi1jb21tZW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC05NnB4OyB9Ci51aS1pY29uLXBlcnNvbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtOTZweDsgfQoudWktaWNvbi1wcmludCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtOTZweDsgfQoudWktaWNvbi10cmFzaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtOTZweDsgfQoudWktaWNvbi1sb2NrZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTk2cHg7IH0KLnVpLWljb24tdW5sb2NrZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTk2cHg7IH0KLnVpLWljb24tYm9va21hcmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTk2cHg7IH0KLnVpLWljb24tdGFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC05NnB4OyB9Ci51aS1pY29uLWhvbWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xMTJweDsgfQoudWktaWNvbi1mbGFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTExMnB4OyB9Ci51aS1pY29uLWNhbGVuZGFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTExMnB4OyB9Ci51aS1pY29uLWNhcnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTEycHg7IH0KLnVpLWljb24tcGVuY2lsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTExMnB4OyB9Ci51aS1pY29uLWNsb2NrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTExMnB4OyB9Ci51aS1pY29uLWRpc2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTEycHg7IH0KLnVpLWljb24tY2FsY3VsYXRvciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTEycHg7IH0KLnVpLWljb24tem9vbWluIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xMTJweDsgfQoudWktaWNvbi16b29tb3V0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xMTJweDsgfQoudWktaWNvbi1zZWFyY2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTExMnB4OyB9Ci51aS1pY29uLXdyZW5jaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMTEycHg7IH0KLnVpLWljb24tZ2VhciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTEycHg7IH0KLnVpLWljb24taGVhcnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTExMnB4OyB9Ci51aS1pY29uLXN0YXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTExMnB4OyB9Ci51aS1pY29uLWxpbmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTExMnB4OyB9Ci51aS1pY29uLWNhbmNlbCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTEyOHB4OyB9Ci51aS1pY29uLXBsdXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTI4cHg7IH0KLnVpLWljb24tcGx1c3RoaWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTEyOHB4OyB9Ci51aS1pY29uLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTEyOHB4OyB9Ci51aS1pY29uLW1pbnVzdGhpY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTI4cHg7IH0KLnVpLWljb24tY2xvc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTI4cHg7IH0KLnVpLWljb24tY2xvc2V0aGljayB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xMjhweDsgfQoudWktaWNvbi1rZXkgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTEyOHB4OyB9Ci51aS1pY29uLWxpZ2h0YnVsYiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTI4cHg7IH0KLnVpLWljb24tc2Npc3NvcnMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTEyOHB4OyB9Ci51aS1pY29uLWNsaXBib2FyZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTI4cHg7IH0KLnVpLWljb24tY29weSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMTI4cHg7IH0KLnVpLWljb24tY29udGFjdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTI4cHg7IH0KLnVpLWljb24taW1hZ2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTEyOHB4OyB9Ci51aS1pY29uLXZpZGVvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xMjhweDsgfQoudWktaWNvbi1zY3JpcHQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTEyOHB4OyB9Ci51aS1pY29uLWFsZXJ0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTQ0cHg7IH0KLnVpLWljb24taW5mbyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNDRweDsgfQoudWktaWNvbi1ub3RpY2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTQ0cHg7IH0KLnVpLWljb24taGVscCB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNDRweDsgfQoudWktaWNvbi1jaGVjayB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNDRweDsgfQoudWktaWNvbi1idWxsZXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTQ0cHg7IH0KLnVpLWljb24tcmFkaW8tb2ZmIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE0NHB4OyB9Ci51aS1pY29uLXJhZGlvLW9uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNDRweDsgfQoudWktaWNvbi1waW4tdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTQ0cHg7IH0KLnVpLWljb24tcGluLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE0NHB4OyB9Ci51aS1pY29uLXBsYXkgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNjBweDsgfQoudWktaWNvbi1wYXVzZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNjBweDsgfQoudWktaWNvbi1zZWVrLW5leHQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTYwcHg7IH0KLnVpLWljb24tc2Vlay1wcmV2IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE2MHB4OyB9Ci51aS1pY29uLXNlZWstZW5kIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE2MHB4OyB9Ci51aS1pY29uLXNlZWstc3RhcnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTYwcHg7IH0KLyogdWktaWNvbi1zZWVrLWZpcnN0IGlzIGRlcHJlY2F0ZWQsIHVzZSB1aS1pY29uLXNlZWstc3RhcnQgaW5zdGVhZCAqLwoudWktaWNvbi1zZWVrLWZpcnN0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2MHB4OyB9Ci51aS1pY29uLXN0b3AgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTYwcHg7IH0KLnVpLWljb24tZWplY3QgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE2MHB4OyB9Ci51aS1pY29uLXZvbHVtZS1vZmYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE2MHB4OyB9Ci51aS1pY29uLXZvbHVtZS1vbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTYwcHg7IH0KLnVpLWljb24tcG93ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNzZweDsgfQoudWktaWNvbi1zaWduYWwtZGlhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNzZweDsgfQoudWktaWNvbi1zaWduYWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTc2cHg7IH0KLnVpLWljb24tYmF0dGVyeS0wIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE3NnB4OyB9Ci51aS1pY29uLWJhdHRlcnktMSB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNzZweDsgfQoudWktaWNvbi1iYXR0ZXJ5LTIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTc2cHg7IH0KLnVpLWljb24tYmF0dGVyeS0zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE3NnB4OyB9Ci51aS1pY29uLWNpcmNsZS1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtYXJyb3ctZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWFycm93LXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1hcnJvdy13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtYXJyb3ctbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLXpvb21pbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLXpvb21vdXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1jaGVjayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlc21hbGwtcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTIwOHB4OyB9Ci51aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIwOHB4OyB9Ci51aS1pY29uLWNpcmNsZXNtYWxsLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTIwOHB4OyB9Ci51aS1pY29uLXNxdWFyZXNtYWxsLXBsdXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjA4cHg7IH0KLnVpLWljb24tc3F1YXJlc21hbGwtbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMjA4cHg7IH0KLnVpLWljb24tc3F1YXJlc21hbGwtY2xvc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMjA4cHg7IH0KLnVpLWljb24tZ3JpcC1kb3R0ZWQtdmVydGljYWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0yMjRweDsgfQoudWktaWNvbi1ncmlwLWRvdHRlZC1ob3Jpem9udGFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIyNHB4OyB9Ci51aS1pY29uLWdyaXAtc29saWQtdmVydGljYWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMjI0cHg7IH0KLnVpLWljb24tZ3JpcC1zb2xpZC1ob3Jpem9udGFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTIyNHB4OyB9Ci51aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMjRweDsgfQoudWktaWNvbi1ncmlwLWRpYWdvbmFsLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTIyNHB4OyB9CgoKLyogTWlzYyB2aXN1YWxzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogQ29ybmVyIHJhZGl1cyAqLwoudWktY29ybmVyLWFsbCwgLnVpLWNvcm5lci10b3AsIC51aS1jb3JuZXItbGVmdCwgLnVpLWNvcm5lci10bCB7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA0cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OyAta2h0bWwtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IH0KLnVpLWNvcm5lci1hbGwsIC51aS1jb3JuZXItdG9wLCAudWktY29ybmVyLXJpZ2h0LCAudWktY29ybmVyLXRyIHsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OiA0cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgLWtodG1sLWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IH0KLnVpLWNvcm5lci1hbGwsIC51aS1jb3JuZXItYm90dG9tLCAudWktY29ybmVyLWxlZnQsIC51aS1jb3JuZXItYmwgeyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDogNHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgLWtodG1sLWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB9Ci51aS1jb3JuZXItYWxsLCAudWktY29ybmVyLWJvdHRvbSwgLnVpLWNvcm5lci1yaWdodCwgLnVpLWNvcm5lci1iciB7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IC1raHRtbC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OyB9CgovKiBPdmVybGF5cyAqLwoudWktd2lkZ2V0LW92ZXJsYXkgeyBiYWNrZ3JvdW5kOiAjYWFhYWFhIHVybChpbWFnZXMvdWktYmdfZmxhdF8wX2FhYWFhYV80MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBvcGFjaXR5OiAuMzA7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MzApOyB9Ci51aS13aWRnZXQtc2hhZG93IHsgbWFyZ2luOiAtOHB4IDAgMCAtOHB4OyBwYWRkaW5nOiA4cHg7IGJhY2tncm91bmQ6ICNhYWFhYWEgdXJsKGltYWdlcy91aS1iZ19mbGF0XzBfYWFhYWFhXzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7IG9wYWNpdHk6IC4zMDtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zMCk7IC1tb3otYm9yZGVyLXJhZGl1czogOHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czogOHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDsgYm9yZGVyLXJhZGl1czogOHB4OyB9LyoKICogalF1ZXJ5IFVJIFJlc2l6YWJsZSAxLjguMTYKICoKICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1Jlc2l6YWJsZSN0aGVtaW5nCiAqLwoudWktcmVzaXphYmxlIHsgcG9zaXRpb246IHJlbGF0aXZlO30KLnVpLXJlc2l6YWJsZS1oYW5kbGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7Zm9udC1zaXplOiAwLjFweDt6LWluZGV4OiA5OTk5OTsgZGlzcGxheTogYmxvY2s7IH0KLnVpLXJlc2l6YWJsZS1kaXNhYmxlZCAudWktcmVzaXphYmxlLWhhbmRsZSwgLnVpLXJlc2l6YWJsZS1hdXRvaGlkZSAudWktcmVzaXphYmxlLWhhbmRsZSB7IGRpc3BsYXk6IG5vbmU7IH0KLnVpLXJlc2l6YWJsZS1uIHsgY3Vyc29yOiBuLXJlc2l6ZTsgaGVpZ2h0OiA3cHg7IHdpZHRoOiAxMDAlOyB0b3A6IC01cHg7IGxlZnQ6IDA7IH0KLnVpLXJlc2l6YWJsZS1zIHsgY3Vyc29yOiBzLXJlc2l6ZTsgaGVpZ2h0OiA3cHg7IHdpZHRoOiAxMDAlOyBib3R0b206IC01cHg7IGxlZnQ6IDA7IH0KLnVpLXJlc2l6YWJsZS1lIHsgY3Vyc29yOiBlLXJlc2l6ZTsgd2lkdGg6IDdweDsgcmlnaHQ6IC01cHg7IHRvcDogMDsgaGVpZ2h0OiAxMDAlOyB9Ci51aS1yZXNpemFibGUtdyB7IGN1cnNvcjogdy1yZXNpemU7IHdpZHRoOiA3cHg7IGxlZnQ6IC01cHg7IHRvcDogMDsgaGVpZ2h0OiAxMDAlOyB9Ci51aS1yZXNpemFibGUtc2UgeyBjdXJzb3I6IHNlLXJlc2l6ZTsgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgcmlnaHQ6IDFweDsgYm90dG9tOiAxcHg7IH0KLnVpLXJlc2l6YWJsZS1zdyB7IGN1cnNvcjogc3ctcmVzaXplOyB3aWR0aDogOXB4OyBoZWlnaHQ6IDlweDsgbGVmdDogLTVweDsgYm90dG9tOiAtNXB4OyB9Ci51aS1yZXNpemFibGUtbncgeyBjdXJzb3I6IG53LXJlc2l6ZTsgd2lkdGg6IDlweDsgaGVpZ2h0OiA5cHg7IGxlZnQ6IC01cHg7IHRvcDogLTVweDsgfQoudWktcmVzaXphYmxlLW5lIHsgY3Vyc29yOiBuZS1yZXNpemU7IHdpZHRoOiA5cHg7IGhlaWdodDogOXB4OyByaWdodDogLTVweDsgdG9wOiAtNXB4O30=]]></data>
	</file>
	<file>
	  <filename>/function.admin_frontendprefstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoaXNzZXQoJHBhcmFtc1snZXhhbXBsZV9zeW50YXgnXSkpIHsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleGFtcGxlX3N5bnRheCcsICRwYXJhbXNbJ2V4YW1wbGVfc3ludGF4J10pOwp9CiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlZnJvbnRlbmRzZXR0aW5ncycsICRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzZXR0aW5nc3RleHQnLCAkdGhpcy0+TGFuZygnZnJvbnRlbmRfaGVhZF9zZXR0aW5ncycpKTsKJHNtYXJ0eS0+YXNzaWduKCdzeW50YXhfc2V0dGluZ3N0ZXh0JywgJHRoaXMtPkxhbmcoJ2Zyb250ZW5kX3N5bnRheGFyZWFfc2V0dGluZ3MnKSk7CiRzbWFydHktPmFzc2lnbignaGVhZF9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCdoZWFkX2Rlc2NyaXB0aW9uJykpOwokc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygnY29udGVudF9kZXNjcmlwdGlvbicpKTsKCiRzbWFydHktPmFzc2lnbignd2lkdGhfdGl0bGUnLCAkdGhpcy0+TGFuZygnZnJvbnRlbmRfd2lkdGhfdGl0bGUnKSk7CiRzbWFydHktPmFzc2lnbignd2lkdGhfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2Zyb250ZW5kX3dpZHRoJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3dpZHRoJywgJzUwMCcpLCAxMCwgMjU1KSk7CiRzbWFydHktPmFzc2lnbignaGVpZ2h0X3RpdGxlJywgJHRoaXMtPkxhbmcoJ2Zyb250ZW5kX2hlaWdodF90aXRsZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdoZWlnaHRfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2Zyb250ZW5kX2hlaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9oZWlnaHQnLCAnNDAwJyksIDEwLCAyNTUpKTsKCi8qIG1vZGVzICovCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfc3ludGF4X21vZGUnLCAkdGhpcy0+TGFuZygnc3ludGF4X21vZGUnKSk7CiRtb2RlcyA9IGFycmF5KAoJJHRoaXMtPkxhbmcoJ2pzJykgPT4gJ2phdmFzY3JpcHQnLAoJJHRoaXMtPkxhbmcoJ3BsYWluJykgPT4gJ3BsYWluJywKCSR0aGlzLT5MYW5nKCdzdmcnKSA9PiAnc3ZnJywKCSR0aGlzLT5MYW5nKCdodG1sJykgPT4gJ2h0bWwnLAoJJHRoaXMtPkxhbmcoJ2NzcycpID0+ICdjc3MnLAoJJHRoaXMtPkxhbmcoJ3Njc3MnKSA9PiAnc2NzcycsCgkkdGhpcy0+TGFuZygnY29mZmVlJykgPT4gJ2NvZmZlZScsCgkkdGhpcy0+TGFuZygnanNvbicpID0+ICdqc29uJywKCSR0aGlzLT5MYW5nKCdweXRob24nKSA9PiAncHl0aG9uJywKCSR0aGlzLT5MYW5nKCdydWJ5JykgPT4gJ3J1YnknLAoJJHRoaXMtPkxhbmcoJ3BlcmwnKSA9PiAncGVybCcsCgkkdGhpcy0+TGFuZygncGhwJykgPT4gJ3BocCcsCgkkdGhpcy0+TGFuZygnamF2YScpID0+ICdqYXZhJywKCSR0aGlzLT5MYW5nKCdjc2hhcnAnKSA9PiAnY3NoYXJwJywKCSR0aGlzLT5MYW5nKCdjX2NwcCcpID0+ICdjX2NwcCcsCgkkdGhpcy0+TGFuZygnY2xvanVyZScpID0+ICdjbG9qdXJlJywKCSR0aGlzLT5MYW5nKCdjb2xkZnVzaW9uJykgPT4gJ2NvbGRmdXNpb24nLAoJJHRoaXMtPkxhbmcoJ2hheGUnKSA9PiAnaGF4ZScsCgkkdGhpcy0+TGFuZygnbGF0ZXgnKSA9PiAnbGF0ZXgnLAoJJHRoaXMtPkxhbmcoJ2x1YScpID0+ICdsdWEnLAoJJHRoaXMtPkxhbmcoJ21hcmtkb3duJykgPT4gJ21hcmtkb3duJywKCSR0aGlzLT5MYW5nKCdwb3dlcnNoZWxsJykgPT4gJ3Bvd2Vyc2hlbGwnLAoJJHRoaXMtPkxhbmcoJ3NxbCcpID0+ICdzcWwnLAoJJHRoaXMtPkxhbmcoJ3Bnc3FsJykgPT4gJ3Bnc3FsJywKCSR0aGlzLT5MYW5nKCdvY2FtbCcpID0+ICdvY2FtbCcsCgkkdGhpcy0+TGFuZygndGV4dGlsZScpID0+ICd0ZXh0aWxlJywKCSR0aGlzLT5MYW5nKCdncm9vdnknKSA9PiAnZ3Jvb3Z5JywKCSR0aGlzLT5MYW5nKCdzY2FsYScpID0+ICdzY2FsYScKKTsKLy8gaGVhZCBtdWx0aXNlbGVjdAkJCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfc3ludGF4X21vZGVpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAnZnJvbnRlbmRfbW9kZVtdJywgJG1vZGVzLCBleHBsb2RlKCcsJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX21vZGUnLCAnaHRtbCcpKSwgNSkpOwovLyBzeW50YXhhcmVhIHByZWYKJHNtYXJ0eS0+YXNzaWduKCdmcm9udGVuZF9zeW50YXhhcmVhX21vZGVpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2Zyb250ZW5kX3N5bnRheGFyZWFfbW9kZScsICRtb2RlcywgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9zeW50YXhhcmVhX21vZGUnLCAnaHRtbCcpKSk7CgovKiB0aGVtZXMgKi8KJHNtYXJ0eS0+YXNzaWduKCd0aGVtZXRleHQnLCAkdGhpcy0+TGFuZygndGhlbWVzJykpOwokdGhlbWVzID0gYXJyYXkoCgkkdGhpcy0+TGFuZygnY2hyb21lJykgPT4gJ2Nocm9tZScsCgkkdGhpcy0+TGFuZygnY2xvdWRzJykgPT4gJ2Nsb3VkcycsCgkkdGhpcy0+TGFuZygnY2xvdWRzX21pZG5pZ2h0JykgPT4gJ2Nsb3Vkc19taWRuaWdodCcsCgkkdGhpcy0+TGFuZygnY29iYWx0JykgPT4gJ2NvYmFsdCcsCgkkdGhpcy0+TGFuZygnY3JpbXNvbl9lZGl0b3InKSA9PiAnY3JpbXNvbl9lZGl0b3InLAoJJHRoaXMtPkxhbmcoJ2Rhd24nKSA9PiAnZGF3bicsCgkkdGhpcy0+TGFuZygnZHJlYW13ZWF2ZXInKSA9PiAnZHJlYW13ZWF2ZXInLAoJJHRoaXMtPkxhbmcoJ2VjbGlwc2UnKSA9PiAnZWNsaXBzZScsCgkkdGhpcy0+TGFuZygnaWRsZV9maW5nZXJzJykgPT4gJ2lkbGVfZmluZ2VycycsCgkkdGhpcy0+TGFuZygna3JfdGhlbWUnKSA9PiAna3JfdGhlbWUnLAoJJHRoaXMtPkxhbmcoJ21lcmJpdm9yZScpID0+ICdtZXJiaXZvcmUnLAoJJHRoaXMtPkxhbmcoJ21lcmJpdm9yZV9zb2Z0JykgPT4gJ21lcmJpdm9yZV9zb2Z0JywKCSR0aGlzLT5MYW5nKCdtb25vX2luZHVzdHJpYWwnKSA9PiAnbW9ub19pbmR1c3RyaWFsJywKCSR0aGlzLT5MYW5nKCdtb25va2FpJykgPT4gJ21vbm9rYWknLAoJJHRoaXMtPkxhbmcoJ3Bhc3RlbF9vbl9kYXJrJykgPT4gJ3Bhc3RlbF9vbl9kYXJrJywKCSR0aGlzLT5MYW5nKCdzb2xhcml6ZWRfZGFyaycpID0+ICdzb2xhcml6ZWRfZGFyaycsCgkkdGhpcy0+TGFuZygnc29sYXJpemVkX2xpZ2h0JykgPT4gJ3NvbGFyaXplZF9saWdodCcsCgkkdGhpcy0+TGFuZygndGV4dG1hdGUnKSA9PiAndGV4dG1hdGUnLAoJJHRoaXMtPkxhbmcoJ3R3aWxpZ2h0JykgPT4gJ3R3aWxpZ2h0JywKCSR0aGlzLT5MYW5nKCd2aWJyYW50X2luaycpID0+ICd2aWJyYW50X2luaycKKTsKLy8gaGVhZCB0aGVtZXMKJHNtYXJ0eS0+YXNzaWduKCdmcm9udGVuZF90aGVtZWlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICdmcm9udGVuZF90aGVtZVtdJywgJHRoZW1lcywgZXhwbG9kZSgnLCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF90aGVtZScsICd0ZXh0bWF0ZScpKSwgNSkpOwovLyBzeW50YXhhcmVhIHRoZW1lCQokc21hcnR5LT5hc3NpZ24oJ3RoZW1laW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJywgJHRoZW1lcywgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJywgJ3RleHRtYXRlJykpKTsKCi8qIGZvbnQgc2l6ZSAqLwokc21hcnR5LT5hc3NpZ24oJ2ZvbnRzaXpldGV4dCcsICR0aGlzLT5MYW5nKCdmb250X3NpemUnKSk7CiRmb250cyA9IGFycmF5KAoJJzEwcHgnID0+ICcxMHB4JywKCScxMXB4JyA9PiAnMTFweCcsCgknMTJweCcgPT4gJzEycHgnLAoJJzE0cHgnID0+ICcxNHB4JywKCScxNnB4JyA9PiAnMTZweCcsCgknMjBweCcgPT4gJzIwcHgnLAoJJzI0cHgnID0+ICcyNHB4JwopOwokc21hcnR5LT5hc3NpZ24oJ2ZvbnRzaXplaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdmcm9udGVuZF9mb250c2l6ZScsICRmb250cywgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9mb250c2l6ZScsICcxMnB4JykpKTsKLy8gc3VibWl0IHNldHRpbmdzCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnZnJvbnRlbmRzdWJtaXQnLCAkdGhpcy0+TGFuZygnc2F2ZXNldHRpbmdzJykpKTsKCi8qIFByb2Nlc3NUZW1wYWx0ZSAqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2Zyb250ZW5kc2V0dGluZ3MudHBsJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_prefstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoaXNzZXQoJHBhcmFtc1snZXhhbXBsZV9zeW50YXgnXSkpIHsKCWNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19leGFtcGxlX3N5bnRheCcsICRwYXJhbXNbJ2V4YW1wbGVfc3ludGF4J10pOwp9CiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlc2V0dGluZ3MnLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc2V0dGluZ3N0ZXh0JywgJHRoaXMtPkxhbmcoJ3NldHRpbmdzX3RhYicpKTsKCiRzbWFydHktPmFzc2lnbignd2lkdGhfdGl0bGUnLCAkdGhpcy0+TGFuZygnd2lkdGhfdGl0bGUnKSk7CiRzbWFydHktPmFzc2lnbignd2lkdGhfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3dpZHRoJywgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3dpZHRoJywgJzgwJyksIDEwLCAyNTUpKTsKJHNtYXJ0eS0+YXNzaWduKCdoZWlnaHRfdGl0bGUnLCAkdGhpcy0+TGFuZygnaGVpZ2h0X3RpdGxlJykpOwokc21hcnR5LT5hc3NpZ24oJ2hlaWdodF9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaGVpZ2h0JywgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2hlaWdodCcsICc0MCcpLCAxMCwgMjU1KSk7Ci8vIGNyZWF0ZSBhIElFIHByZWYsIERPTlQgV0FOVCBUTyBTRUUgQSBCUiBGT1IgVEhJUyBTSElUIQokc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9pZXRleHQnLCAkdGhpcy0+TGFuZygnZW5hYmxlX2llJykpOwokc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9pZWRlc2NyJywgJHRoaXMtPkxhbmcoJ2VuYWJsZV9pZWRlc2NyaXB0aW9uJykpOwokc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9pZWlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZW5hYmxlX2llJywgMSwgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2VuYWJsZV9pZScsIDApKSk7CgovKiBtb2RlIGRyb3Bkb3duICovCiRzbWFydHktPmFzc2lnbignc3ludGF4X21vZGUnLCAkdGhpcy0+TGFuZygnc3ludGF4X21vZGUnKSk7CiRtb2RlcyA9IGFycmF5KAoJJHRoaXMtPkxhbmcoJ2pzJykgPT4gJ2phdmFzY3JpcHQnLAoJJHRoaXMtPkxhbmcoJ3BsYWluJykgPT4gJ3BsYWluJywKCSR0aGlzLT5MYW5nKCdzdmcnKSA9PiAnc3ZnJywKCSR0aGlzLT5MYW5nKCdodG1sJykgPT4gJ2h0bWwnLAoJJHRoaXMtPkxhbmcoJ2NzcycpID0+ICdjc3MnLAoJJHRoaXMtPkxhbmcoJ3Njc3MnKSA9PiAnc2NzcycsCgkkdGhpcy0+TGFuZygnY29mZmVlJykgPT4gJ2NvZmZlZScsCgkkdGhpcy0+TGFuZygnanNvbicpID0+ICdqc29uJywKCSR0aGlzLT5MYW5nKCdweXRob24nKSA9PiAncHl0aG9uJywKCSR0aGlzLT5MYW5nKCdydWJ5JykgPT4gJ3J1YnknLAoJJHRoaXMtPkxhbmcoJ3BlcmwnKSA9PiAncGVybCcsCgkkdGhpcy0+TGFuZygncGhwJykgPT4gJ3BocCcsCgkkdGhpcy0+TGFuZygnamF2YScpID0+ICdqYXZhJywKCSR0aGlzLT5MYW5nKCdjc2hhcnAnKSA9PiAnY3NoYXJwJywKCSR0aGlzLT5MYW5nKCdjX2NwcCcpID0+ICdjX2NwcCcsCgkkdGhpcy0+TGFuZygnY2xvanVyZScpID0+ICdjbG9qdXJlJywKCSR0aGlzLT5MYW5nKCdjb2xkZnVzaW9uJykgPT4gJ2NvbGRmdXNpb24nLAoJJHRoaXMtPkxhbmcoJ2hheGUnKSA9PiAnaGF4ZScsCgkkdGhpcy0+TGFuZygnbGF0ZXgnKSA9PiAnbGF0ZXgnLAoJJHRoaXMtPkxhbmcoJ2x1YScpID0+ICdsdWEnLAoJJHRoaXMtPkxhbmcoJ21hcmtkb3duJykgPT4gJ21hcmtkb3duJywKCSR0aGlzLT5MYW5nKCdwb3dlcnNoZWxsJykgPT4gJ3Bvd2Vyc2hlbGwnLAoJJHRoaXMtPkxhbmcoJ3NxbCcpID0+ICdzcWwnLAoJJHRoaXMtPkxhbmcoJ3Bnc3FsJykgPT4gJ3Bnc3FsJywKCSR0aGlzLT5MYW5nKCdvY2FtbCcpID0+ICdvY2FtbCcsCgkkdGhpcy0+TGFuZygndGV4dGlsZScpID0+ICd0ZXh0aWxlJywKCSR0aGlzLT5MYW5nKCdncm9vdnknKSA9PiAnZ3Jvb3Z5JywKCSR0aGlzLT5MYW5nKCdzY2FsYScpID0+ICdzY2FsYScKKTsKJHNtYXJ0eS0+YXNzaWduKCdzeW50YXhfbW9kZWlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnbW9kZScsICRtb2RlcywgLTEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19tb2RlJywgJ2h0bWwnKSwgJ29uY2hhbmdlPSJ0aGlzLmZvcm0uc3VibWl0KCkiJykpOwoKLyogdGhlbWVzICovCiRzbWFydHktPmFzc2lnbigndGhlbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ3RoZW1lcycpKTsKJHRoZW1lcyA9IGFycmF5KAoJJHRoaXMtPkxhbmcoJ2Nocm9tZScpID0+ICdjaHJvbWUnLAoJJHRoaXMtPkxhbmcoJ2Nsb3VkcycpID0+ICdjbG91ZHMnLAoJJHRoaXMtPkxhbmcoJ2Nsb3Vkc19taWRuaWdodCcpID0+ICdjbG91ZHNfbWlkbmlnaHQnLAoJJHRoaXMtPkxhbmcoJ2NvYmFsdCcpID0+ICdjb2JhbHQnLAoJJHRoaXMtPkxhbmcoJ2NyaW1zb25fZWRpdG9yJykgPT4gJ2NyaW1zb25fZWRpdG9yJywKCSR0aGlzLT5MYW5nKCdkYXduJykgPT4gJ2Rhd24nLAoJJHRoaXMtPkxhbmcoJ2RyZWFtd2VhdmVyJykgPT4gJ2RyZWFtd2VhdmVyJywKCSR0aGlzLT5MYW5nKCdlY2xpcHNlJykgPT4gJ2VjbGlwc2UnLAoJJHRoaXMtPkxhbmcoJ2lkbGVfZmluZ2VycycpID0+ICdpZGxlX2ZpbmdlcnMnLAoJJHRoaXMtPkxhbmcoJ2tyX3RoZW1lJykgPT4gJ2tyX3RoZW1lJywKCSR0aGlzLT5MYW5nKCdtZXJiaXZvcmUnKSA9PiAnbWVyYml2b3JlJywKCSR0aGlzLT5MYW5nKCdtZXJiaXZvcmVfc29mdCcpID0+ICdtZXJiaXZvcmVfc29mdCcsCgkkdGhpcy0+TGFuZygnbW9ub19pbmR1c3RyaWFsJykgPT4gJ21vbm9faW5kdXN0cmlhbCcsCgkkdGhpcy0+TGFuZygnbW9ub2thaScpID0+ICdtb25va2FpJywKCSR0aGlzLT5MYW5nKCdwYXN0ZWxfb25fZGFyaycpID0+ICdwYXN0ZWxfb25fZGFyaycsCgkkdGhpcy0+TGFuZygnc29sYXJpemVkX2RhcmsnKSA9PiAnc29sYXJpemVkX2RhcmsnLAoJJHRoaXMtPkxhbmcoJ3NvbGFyaXplZF9saWdodCcpID0+ICdzb2xhcml6ZWRfbGlnaHQnLAoJJHRoaXMtPkxhbmcoJ3RleHRtYXRlJykgPT4gJ3RleHRtYXRlJywKCSR0aGlzLT5MYW5nKCd0b21vcnJvdycpID0+ICd0b21vcnJvdycsCgkkdGhpcy0+TGFuZygndG9tb3Jyb3dfbmlnaHQnKSA9PiAndG9tb3Jyb3dfbmlnaHQnLAoJJHRoaXMtPkxhbmcoJ3RvbW9ycm93X25pZ2h0X2JsdWUnKSA9PiAndG9tb3Jyb3dfbmlnaHRfYmx1ZScsCgkkdGhpcy0+TGFuZygndG9tb3Jyb3dfbmlnaHRfYnJpZ2h0JykgPT4gJ3RvbW9ycm93X25pZ2h0X2JyaWdodCcsCgkkdGhpcy0+TGFuZygndG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMnKSA9PiAndG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMnLAoJJHRoaXMtPkxhbmcoJ3R3aWxpZ2h0JykgPT4gJ3R3aWxpZ2h0JywKCSR0aGlzLT5MYW5nKCd2aWJyYW50X2luaycpID0+ICd2aWJyYW50X2luaycKKTsKJHNtYXJ0eS0+YXNzaWduKCd0aGVtZWlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndGhlbWUnLCAkdGhlbWVzLCAtMSwgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3RoZW1lJywgJ3RleHRtYXRlJyksICdvbmNoYW5nZT0idGhpcy5mb3JtLnN1Ym1pdCgpIicpKTsKCi8qIGZvbnQgc2l6ZSAqLwokc21hcnR5LT5hc3NpZ24oJ2ZvbnRzaXpldGV4dCcsICR0aGlzLT5MYW5nKCdmb250X3NpemUnKSk7CiRmb250cyA9IGFycmF5KAoJJzEwcHgnID0+ICcxMHB4JywKCScxMXB4JyA9PiAnMTFweCcsCgknMTJweCcgPT4gJzEycHgnLAoJJzE0cHgnID0+ICcxNHB4JywKCScxNnB4JyA9PiAnMTZweCcsCgknMjBweCcgPT4gJzIwcHgnLAoJJzI0cHgnID0+ICcyNHB4JwopOwokc21hcnR5LT5hc3NpZ24oJ2ZvbnRzaXplaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdmb250c2l6ZScsICRmb250cywgLTEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19mb250c2l6ZScsICcxMnB4JykpKTsKCiRzbWFydHktPmFzc2lnbignZnVsbF9saW5ldGV4dCcsICR0aGlzLT5MYW5nKCdmdWxsX2xpbmUnKSk7CiRzbWFydHktPmFzc2lnbignZnVsbF9saW5laW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdmdWxsX2xpbmUnLCAxLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfZnVsbF9saW5lJywgMSkpKTsKJHNtYXJ0eS0+YXNzaWduKCdoaWdobGlnaHRfYWN0aXZldGV4dCcsICR0aGlzLT5MYW5nKCdoaWdobGlnaHRfYWN0aXZlJykpOwokc21hcnR5LT5hc3NpZ24oJ2hpZ2hsaWdodF9hY3RpdmVpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2hpZ2hsaWdodF9hY3RpdmUnLCAxLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfaGlnaGxpZ2h0X2FjdGl2ZScsIDEpKSk7CiRzbWFydHktPmFzc2lnbignc2hvd19pbnZpc2libGVzdGV4dCcsICR0aGlzLT5MYW5nKCdzaG93X2ludmlzaWJsZXMnKSk7CiRzbWFydHktPmFzc2lnbignc2hvd19pbnZpc2libGVzaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdzaG93X2ludmlzaWJsZXMnLCAxLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfc2hvd19pbnZpc2libGVzJywgMCkpKTsKJHNtYXJ0eS0+YXNzaWduKCdwZXJzaXN0ZW50X2hzY3JvbGx0ZXh0JywgJHRoaXMtPkxhbmcoJ3BlcnNpc3RlbnRfaHNjcm9sbCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwZXJzaXN0ZW50X2hzY3JvbGxpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3BlcnNpc3RlbnRfaHNjcm9sbCcsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19wZXJzaXN0ZW50X2hzY3JvbGwnLCAxKSkpOwoKLyogdGV4dCB3cmFwcGluZyAqLwokc21hcnR5LT5hc3NpZ24oJ3NvZnRfd3JhcHRleHQnLCAkdGhpcy0+TGFuZygnc29mdF93cmFwJykpOwokc29mdF93cmFwID0gYXJyYXkoCgkkdGhpcy0+TGFuZygnb2ZmJykgPT4gJ29mZicsCgkkdGhpcy0+TGFuZygnNDAnKSA9PiAnNDAsNDAnLAoJJHRoaXMtPkxhbmcoJzgwJykgPT4gJzgwLDgwJywKCSR0aGlzLT5MYW5nKCcxMDAnKSA9PiAnMTAwLDEwMCcsCgkkdGhpcy0+TGFuZygnMTQwJykgPT4gJzE0MCwxNDAnCik7CiRzbWFydHktPmFzc2lnbignc29mdF93cmFwaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzb2Z0X3dyYXAnLCAkc29mdF93cmFwLCAtMSwgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3NvZnRfd3JhcCcsICc4MCw4MCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Nob3dfZ3V0dGVydGV4dCcsICR0aGlzLT5MYW5nKCdzaG93X2d1dHRlcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdzaG93X2d1dHRlcmlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnc2hvd19ndXR0ZXInLCAxLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfc2hvd19ndXR0ZXInLCAxKSkpOwokc21hcnR5LT5hc3NpZ24oJ3ByaW50X21hcmdpbnRleHQnLCAkdGhpcy0+TGFuZygncHJpbnRfbWFyZ2luJykpOwokc21hcnR5LT5hc3NpZ24oJ3ByaW50X21hcmdpbmlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncHJpbnRfbWFyZ2luJywgMSwgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3ByaW50X21hcmdpbicsIDApKSk7CiRzbWFydHktPmFzc2lnbignc29mdF90YWJ0ZXh0JywgJHRoaXMtPkxhbmcoJ3NvZnRfdGFiJykpOwokc21hcnR5LT5hc3NpZ24oJ3NvZnRfdGFiaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdzb2Z0X3RhYicsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19zb2Z0X3RhYicsIDEpKSk7CiRzbWFydHktPmFzc2lnbignaGlnaGxpZ2h0X3NlbGVjdGVkdGV4dCcsICR0aGlzLT5MYW5nKCdoaWdobGlnaHRfc2VsZWN0ZWQnKSk7CiRzbWFydHktPmFzc2lnbignaGlnaGxpZ2h0X3NlbGVjdGVkaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdoaWdobGlnaHRfc2VsZWN0ZWQnLCAxLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfaGlnaGxpZ2h0X3NlbGVjdGVkJywgMSkpKTsKCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzYXZlc2V0dGluZ3MnKSkpOwoKLyogc2FtcGxlIGNvbnRlbnQgKi8KJHN5bnRheF9jb250ZW50ID0gJyc7CnN3aXRjaCAoY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX21vZGUnLCAnaHRtbCcpKSB7CgljYXNlICdodG1sJzogewoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVAo8aHRtbD4KPGhlYWQ+Cgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoudGV4dC1sYXllciB7CiAgICBmb250LWZhbWlseTogTW9uYWNvLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBjdXJzb3I6IHRleHQ7Cn0KPC9zdHlsZT4KCjwvaGVhZD4KPGJvZHk+CiAgICA8aDEgc3R5bGU9ImNvbG9yOnJlZCI+SnVodSBLaW5uZXJzPC9oMT4KPC9ib2R5Pgo8L2h0bWw+CkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ2Nzcyc6IHsKCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QKLnRleHQtbGF5ZXIgewogICAgZm9udC1mYW1pbHk6IE1vbmFjbywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgY3Vyc29yOiB0ZXh0Owp9CkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ2phdmFzY3JpcHQnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCmZ1bmN0aW9uIGZvbyhpdGVtcykgewogICAgZm9yICh2YXIgaT0wOyBpPGl0ZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgYWxlcnQoaXRlbXNbaV0gKyAianVodSIpOwogICAgfSAgIC8vIFJlYWwgVGFiLgp9CkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ3BsYWluJzogewoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVApMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2V0ZXR1ciBzYWRpcHNjaW5nIGVsaXRyLCBzZWQgZGlhbSBub251bXkgZWlybW9kIHRlbXBvciBpbnZpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1eWFtIGVyYXQsIHNlZCBkaWFtIHZvbHVwdHVhLiBBdCB2ZXJvIGVvcyBldCBhY2N1c2FtIGV0IGp1c3RvIGR1byBkb2xvcmVzIGV0IGVhIHJlYnVtLiBTdGV0IGNsaXRhIGthc2QgZ3ViZXJncmVuLCBubyBzZWEgdGFraW1hdGEgc2FuY3R1cyBlc3QgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZXRldHVyIHNhZGlwc2NpbmcgZWxpdHIsIHNlZCBkaWFtIG5vbnVteSBlaXJtb2QgdGVtcG9yIGludmlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXV5YW0gZXJhdCwgc2VkIGRpYW0gdm9sdXB0dWEuIEF0IHZlcm8gZW9zIGV0IGFjY3VzYW0gZXQganVzdG8gZHVvIGRvbG9yZXMgZXQgZWEgcmVidW0uIFN0ZXQgY2xpdGEga2FzZCBndWJlcmdyZW4sIG5vIHNlYSB0YWtpbWF0YSBzYW5jdHVzIGVzdCBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNldGV0dXIgc2FkaXBzY2luZyBlbGl0ciwgc2VkIGRpYW0gbm9udW15IGVpcm1vZCB0ZW1wb3IgaW52aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdXlhbSBlcmF0LCBzZWQgZGlhbSB2b2x1cHR1YS4gQXQgdmVybyBlb3MgZXQgYWNjdXNhbSBldCBqdXN0byBkdW8gZG9sb3JlcyBldCBlYSByZWJ1bS4gU3RldCBjbGl0YSBrYXNkIGd1YmVyZ3Jlbiwgbm8gc2VhIHRha2ltYXRhIHNhbmN0dXMgZXN0IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LgoKRHVpcyBhdXRlbSB2ZWwgZXVtIGlyaXVyZSBkb2xvciBpbiBoZW5kcmVyaXQgaW4gdnVscHV0YXRlIHZlbGl0IGVzc2UgbW9sZXN0aWUgY29uc2VxdWF0LCB2ZWwgaWxsdW0gZG9sb3JlIGV1IGZldWdpYXQgbnVsbGEgZmFjaWxpc2lzIGF0IHZlcm8gZXJvcyBldCBhY2N1bXNhbiBldCBpdXN0byBvZGlvIGRpZ25pc3NpbSBxdWkgYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMgZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5pYmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0LgpFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdzdmcnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCjxzdmcKICB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCIKICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgb25sb2FkPSJTdGFydEFuaW1hdGlvbihldnQpIj4KCiAgPHRpdGxlPlRlc3QgVHViZSBQcm9ncmVzcyBCYXI8L3RpdGxlPgogIDxkZXNjPkNyZWF0ZWQgZm9yIHRoZSBXZWIgRGlyZWN0aW9ucyBTVkcgY29tcGV0aXRpb248L2Rlc2M+CgogIDxzY3JpcHQgdHlwZT0idGV4dC9lY21hc2NyaXB0Ij48IVtDREFUQVsKICAgIHZhciB0aW1ldmFsdWUgPSAwOwogICAgdmFyIHRpbWVyX2luY3JlbWVudCA9IDE7CiAgICB2YXIgbWF4X3RpbWUgPSAxMDA7CiAgICB2YXIgaGlja29yeTsKICAgIHZhciBkaWNrb3J5OwogICAgdmFyIGRvY2s7CiAgICB2YXIgaTsKCiAgICBmdW5jdGlvbiBTdGFydEFuaW1hdGlvbihldnQpIHsKICAgICAgICBoaWNrb3J5ICA9IGV2dC50YXJnZXQub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGlja29yeSIpOwogICAgICAgIGRpY2tvcnkgPSBldnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpY2tvcnkiKTsKICAgICAgICBkb2NrID0gZXZ0LnRhcmdldC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb2NrIik7CgogICAgICAgIFNob3dBbmRHcm93RWxlbWVudCgpOwogICAgfQogICAgZnVuY3Rpb24gU2hvd0FuZEdyb3dFbGVtZW50KCkgewogICAgICAgIHRpbWV2YWx1ZSA9IHRpbWV2YWx1ZSArIHRpbWVyX2luY3JlbWVudDsKICAgICAgICBpZiAodGltZXZhbHVlID4gbWF4X3RpbWUpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAvLyBTY2FsZSB0aGUgdGV4dCBzdHJpbmcgZ3JhZHVhbGx5IHVudGlsIGl0IGlzIDIwIHRpbWVzIGxhcmdlcgogICAgICAgIHNjYWxlZmFjdG9yID0gKHRpbWV2YWx1ZSAqIDY1MCkgLyBtYXhfdGltZTsKCiAgICAgICAgaWYgKHRpbWV2YWx1ZSA8IDMwKSB7CiAgICAgICAgICAgIGhpY2tvcnkuc2V0QXR0cmlidXRlKCJkaXNwbGF5IiwgIiIpOwogICAgICAgICAgICBoaWNrb3J5LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgKDYwMCtzY2FsZWZhY3RvciozKi0xICkgKyAiLCAtMTQ0ICkiKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aW1ldmFsdWUgPiAzMCAmJiB0aW1ldmFsdWUgPCA2NikgewogICAgICAgICAgICBkaWNrb3J5LnNldEF0dHJpYnV0ZSgiZGlzcGxheSIsICIiKTsKICAgICAgICAgICAgZGlja29yeS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArICgtNzk1K3NjYWxlZmFjdG9yKjIpICsgIiwgMCApIik7CiAgICAgICAgfQogICAgICAgIGlmICh0aW1ldmFsdWUgPiA2NikgewogICAgICAgICAgICBkb2NrLnNldEF0dHJpYnV0ZSgiZGlzcGxheSIsICIiKTsKICAgICAgICAgICAgZG9jay5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArICgxNDUwK3NjYWxlZmFjdG9yKjIqLTEpICsgIiwgMTQ0ICkiKTsKICAgICAgICB9CgogICAgICAgIC8vIENhbGwgU2hvd0FuZEdyb3dFbGVtZW50IGFnYWluIDx0aW1lcl9pbmNyZW1lbnQ+IG1pbGxpc2Vjb25kcyBsYXRlci4KICAgICAgICBzZXRUaW1lb3V0KCJTaG93QW5kR3Jvd0VsZW1lbnQoKSIsIHRpbWVyX2luY3JlbWVudCkKICAgIH0KICAgIHdpbmRvdy5TaG93QW5kR3Jvd0VsZW1lbnQgPSBTaG93QW5kR3Jvd0VsZW1lbnQKICBdXT48L3NjcmlwdD4KCiAgPHJlY3QKICAgIGZpbGw9IiMyZTM0MzYiCiAgICBmaWxsLXJ1bGU9Im5vbnplcm8iCiAgICBzdHJva2Utd2lkdGg9IjMiCiAgICB5PSIwIgogICAgeD0iMCIKICAgIGhlaWdodD0iNjAwIgogICAgd2lkdGg9IjgwMCIKICAgIGlkPSJyZWN0MzU5MCIvPgoKICAgIDx0ZXh0CiAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0NHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpCaXRzdHJlYW0gVmVyYSBTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Qml0c3RyZWFtIFZlcmEgU2FucyBCb2xkIgogICAgICAgeD0iNTAiCiAgICAgICB5PSIzNTAiCiAgICAgICBpZD0iaGlja29yeSIKICAgICAgIGRpc3BsYXk9Im5vbmUiPgogICAgICAgIEhpY2tvcnksPC90ZXh0PgogICAgPHRleHQKICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQ0cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpib2xkO2ZvbnQtc3RyZXRjaDpub3JtYWw7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OkJpdHN0cmVhbSBWZXJhIFNhbnM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpCaXRzdHJlYW0gVmVyYSBTYW5zIEJvbGQiCiAgICAgICB4PSI1MCIKICAgICAgIHk9IjM1MCIKICAgICAgIGlkPSJkaWNrb3J5IgogICAgICAgZGlzcGxheT0ibm9uZSI+CiAgICAgICAgZGlja29yeSw8L3RleHQ+CiAgICA8dGV4dAogICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNDRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHJldGNoOm5vcm1hbDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6Qml0c3RyZWFtIFZlcmEgU2FuczstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOkJpdHN0cmVhbSBWZXJhIFNhbnMgQm9sZCIKICAgICAgIHg9IjUwIgogICAgICAgeT0iMzUwIgogICAgICAgaWQ9ImRvY2siCiAgICAgICBkaXNwbGF5PSJub25lIj4KICAgICAgICBkb2NrITwvdGV4dD4KPC9zdmc+CkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ3Njc3MnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCi8qIHN0eWxlLnNjc3MgKi8KCiNuYXZiYXIgewogICAgXCRuYXZiYXItd2lkdGg6IDgwMHB4OwogICAgXCRpdGVtczogNTsKICAgIFwkbmF2YmFyLWNvbG9yOiAjY2U0ZGQ2OwoKICAgIHdpZHRoOiBcJG5hdmJhci13aWR0aDsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBcJG5hdmJhci1jb2xvcjsKCiAgICBsaSB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IFwkbmF2YmFyLXdpZHRoL1wkaXRlbXMgLSAxMHB4OwoKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKFwkbmF2YmFyLWNvbG9yLCAyMCUpOwogICAgICAgICY6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKFwkbmF2YmFyLWNvbG9yLCAxMCUpOwogICAgICAgIH0KICAgIH0KfQpFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdjb2ZmZWUnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCiMhL3Vzci9iaW4vZW52IGNvZmZlZQoKdHJ5CiAgICB0aHJvdyBVUklFcnJvciBkZWNvZGVVUkkoMHhDMGZmZWUgKiAxMjM0NTYuN2UtOCAvIC45KQpjYXRjaCBlCiAgICBjb25zb2xlLmxvZyAncXN0cmluZycgKyAicXFzdHJpbmciICsgJycnCiAgICAgICAgcWRvYwogICAgJycnICsgIiIiCiAgICAgICAgcXFkb2MKICAgICIiIgoKZG8gLT4KICAgICMjIwogICAgaGVyZWNvbW1lbnQKICAgICMjIwogICAgcmUgPSAvcmVnZXgvaW1neS50ZXN0IC8vLwogICAgICAgIGhlcmVnZXggICMgY29tbWVudAogICAgLy8vaW1neQogICAgdGhpcyBpc250OiBganVzdCBKYXZhU2NyaXB0YAogICAgdW5kZWZpbmVkICAgICAgICAgICAgICAgCkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ2pzb24nOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCnsKICJxdWVyeSI6IHsKICAiY291bnQiOiAxMCwKICAiY3JlYXRlZCI6ICIyMDExLTA2LTIxVDA4OjEwOjQ2WiIsCiAgImxhbmciOiAiZW4tVVMiLAogICJyZXN1bHRzIjogewogICAicGhvdG8iOiBbCiAgICB7CiAgICAgImZhcm0iOiAiNiIsCiAgICAgImlkIjogIjU4NTU2MjA5NzUiLAogICAgICJpc2ZhbWlseSI6ICIwIiwKICAgICAiaXNmcmllbmQiOiAiMCIsCiAgICAgImlzcHVibGljIjogIjEiLAogICAgICJvd25lciI6ICIzMjAyMTU1NEBOMDQiLAogICAgICJzZWNyZXQiOiAiZjFmNWU4NTE1ZCIsCiAgICAgInNlcnZlciI6ICI1MTEwIiwKICAgICAidGl0bGUiOiAiNzA4NyBiYW5kaXQgY2F0IgogICAgfSwKICAgIHsKICAgICAiZmFybSI6ICI0IiwKICAgICAiaWQiOiAiNTg1NjE3MDUzNCIsCiAgICAgImlzZmFtaWx5IjogIjAiLAogICAgICJpc2ZyaWVuZCI6ICIwIiwKICAgICAiaXNwdWJsaWMiOiAiMSIsCiAgICAgIm93bmVyIjogIjMyMDIxNTU0QE4wNCIsCiAgICAgInNlY3JldCI6ICJmZjFlZmIyYTZmIiwKICAgICAic2VydmVyIjogIjMyMTciLAogICAgICJ0aXRsZSI6ICI2OTc1IHJ1c3R5IGNhdCIKICAgIH0sCiAgICB7CiAgICAgImZhcm0iOiAiNiIsCiAgICAgImlkIjogIjU4NTYxNzI5NzIiLAogICAgICJpc2ZhbWlseSI6ICIwIiwKICAgICAiaXNmcmllbmQiOiAiMCIsCiAgICAgImlzcHVibGljIjogIjEiLAogICAgICJvd25lciI6ICI1MTI0OTg3NUBOMDMiLAogICAgICJzZWNyZXQiOiAiNmM2ODg3MzQ3YyIsCiAgICAgInNlcnZlciI6ICI1MTkyIiwKICAgICAidGl0bGUiOiAid2F0ZXJtYXJrZWQtY2F0cyIKICAgIH0sCiAgICB7CiAgICAgImZhcm0iOiAiNiIsCiAgICAgImlkIjogIjU4NTYxNjgzMjgiLAogICAgICJpc2ZhbWlseSI6ICIwIiwKICAgICAiaXNmcmllbmQiOiAiMCIsCiAgICAgImlzcHVibGljIjogIjEiLAogICAgICJvd25lciI6ICIzMjAyMTU1NEBOMDQiLAogICAgICJzZWNyZXQiOiAiMGMxY2ZkZjY0YyIsCiAgICAgInNlcnZlciI6ICI1MDc4IiwKICAgICAidGl0bGUiOiAiNzAyMCBtYW5keSBjYXQiCiAgICB9LAogICAgewogICAgICJmYXJtIjogIjMiLAogICAgICJpZCI6ICI1ODU2MTcxNzc0IiwKICAgICAiaXNmYW1pbHkiOiAiMCIsCiAgICAgImlzZnJpZW5kIjogIjAiLAogICAgICJpc3B1YmxpYyI6ICIxIiwKICAgICAib3duZXIiOiAiMzIwMjE1NTRATjA0IiwKICAgICAic2VjcmV0IjogIjdmNWEzMTgwYWIiLAogICAgICJzZXJ2ZXIiOiAiMjY5NiIsCiAgICAgInRpdGxlIjogIjc0NDggYm9iYnkgY2F0IgogICAgfQogICBdCiAgfQogfQp9CkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ3B5dGhvbic6IHsKCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QKIyEvdXNyL2xvY2FsL2Jpbi9weXRob24KCmltcG9ydCBzdHJpbmcsIHN5cwoKIyBJZiBubyBhcmd1bWVudHMgd2VyZSBnaXZlbiwgcHJpbnQgYSBoZWxwZnVsIG1lc3NhZ2UKaWYgbGVuKHN5cy5hcmd2KT09MToKICAgIHByaW50ICdVc2FnZTogY2Vsc2l1cyB0ZW1wMSB0ZW1wMiAuLi4nCiAgICBzeXMuZXhpdCgwKQoKIyBMb29wIG92ZXIgdGhlIGFyZ3VtZW50cwpmb3IgaSBpbiBzeXMuYXJndlsxOl06CiAgICB0cnk6CiAgICAgICAgZmFocmVuaGVpdD1mbG9hdChzdHJpbmcuYXRvaShpKSkKICAgIGV4Y2VwdCBzdHJpbmcuYXRvaV9lcnJvcjoKICAgICAgICBwcmludCByZXByKGkpLCAibm90IGEgbnVtZXJpYyB2YWx1ZSIgIAogICAgZWxzZToKICAgICAgICBjZWxzaXVzPShmYWhyZW5oZWl0LTMyKSo1LjAvOS4wCiAgICAgICAgcHJpbnQgJyVpXFwyNjBGID0gJWlcXDI2MEMnICUgKGludChmYWhyZW5oZWl0KSwgaW50KGNlbHNpdXMrLjUpKQpFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdwaHAnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCjw/cGhwCgpmdW5jdGlvbiBuZmFjdChcJG4pIHsKICBpZiAoXCRuID09IDApIHsKICAgIHJldHVybiAxOwogIH0KICBlbHNlIHsKICAgIHJldHVybiBcJG4gKiBuZmFjdChcJG4gLSAxKTsKICB9Cn0KCmVjaG8gIlxcblxcblBsZWFzZSBlbnRlciBhIHdob2xlIG51bWJlciAuLi4gIjsKXCRudW0gPSB0cmltKGZnZXRzKFNURElOKSk7CgovLyA9PT09PSBQUk9DRVNTIC0gRGV0ZXJtaW5nIHRoZSBmYWN0b3JpYWwgb2YgdGhlIGlucHV0IG51bWJlciA9PT09PQpcJG91dHB1dCA9ICJcXG5cXG5GYWN0b3JpYWwgIiAuIFwkbnVtIC4gIiA9ICIgLiBuZmFjdChcJG51bSkgLiAiXFxuXFxuIjsKZWNobyBcJG91dHB1dDsKCj8+CkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ3J1YnknOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCiMhL3Vzci9iaW4vcnVieQoKIyBQcm9ncmFtIHRvIGZpbmQgdGhlIGZhY3RvcmlhbCBvZiBhIG51bWJlcgpkZWYgZmFjdChuKQogICAgaWYgbiA9PSAwCiAgICAgICAgMQogICAgZWxzZQogICAgICAgIG4gKiBmYWN0KG4tMSkKICAgIGVuZAplbmQKCnB1dHMgZmFjdChBUkdWWzBdLnRvX2kpCkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ3BlcmwnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCiMhL3Vzci9iaW4vcGVybAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15IFwkbnVtX3ByaW1lcyA9IDA7Cm15IEBwcmltZXM7CgojIFB1dCAyIGFzIHRoZSBmaXJzdCBwcmltZSBzbyB3ZSB3b24ndCBoYXZlIGFuIGVtcHR5IGFycmF5ClwkcHJpbWVzW1wkbnVtX3ByaW1lc10gPSAyOwpcJG51bV9wcmltZXMrKzsKCk1BSU5fTE9PUDoKZm9yIG15IFwkbnVtYmVyX3RvX2NoZWNrICgzIC4uIDIwMCkKewogICAgZm9yIG15IFwkcCAoMCAuLiAoXCRudW1fcHJpbWVzLTEpKQogICAgewogICAgICAgIGlmIChcJG51bWJlcl90b19jaGVjayAlIFwkcHJpbWVzW1wkcF0gPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgTUFJTl9MT09QOwogICAgICAgIH0KICAgIH0KCiAgICAjIElmIHdlIHJlYWNoZWQgdGhpcyBwb2ludCBpdCBtZWFucyBcJG51bWJlcl90b19jaGVjayBpcyBub3QKICAgICMgZGl2aXNhYmxlIGJ5IGFueSBwcmltZSBudW1iZXIgdGhhdCBjYW1lIGJlZm9yZSBpdC4KICAgIFwkcHJpbWVzW1wkbnVtX3ByaW1lc10gPSBcJG51bWJlcl90b19jaGVjazsKICAgIFwkbnVtX3ByaW1lcysrOwp9Cgpmb3IgbXkgXCRwICgwIC4uIChcJG51bV9wcmltZXMtMSkpCnsKICAgIHByaW50IFwkcHJpbWVzW1wkcF0sICIsICI7Cn0KcHJpbnQgIlxcbiI7CkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ2phdmEnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCnB1YmxpYyBjbGFzcyBJbmZpbml0ZUxvb3AgewoKICAgIC8qCiAgICAgKiBUaGlzIHdpbGwgY2F1c2UgdGhlIHByb2dyYW0gdG8gaGFuZy4uLgogICAgICoKICAgICAqIFRha2VuIGZyb206CiAgICAgKiBodHRwOi8vd3d3LmV4cGxvcmluZ2JpbmFyeS5jb20vamF2YS1oYW5ncy13aGVuLWNvbnZlcnRpbmctMi0yMjUwNzM4NTg1MDcyMDEyZS0zMDgvCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBkb3VibGUgZCA9IERvdWJsZS5wYXJzZURvdWJsZSgiMi4yMjUwNzM4NTg1MDcyMDEyZS0zMDgiKTsKCiAgICAgICAgLy8gdW5yZWFjaGFibGUgY29kZQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVmFsdWU6ICIgKyBkKTsKICAgIH0KfQpFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdjc2hhcnAnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCnB1YmxpYyB2b2lkIEhlbGxvV29ybGQoKSB7CiAgIC8vU2F5IEhlbGxvIQogICBDb25zb2xlLldyaXRlTGluZSgiSGVsbG8gV29ybGQiKTsKfSAgICAgICAgICAgICAgIApFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdjX2NwcCc6IHsKCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QKLy8gY29tcG91bmQgYXNzaWdubWVudCBvcGVyYXRvcnMKCiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluICgpCnsKICAgIGludCBhLCBiPTM7IC8qIGZvb2JhciAqLwogICAgYSA9IGI7CiAgICBhKz0yOyAvLyBlcXVpdmFsZW50IHRvIGE9YSsyCiAgICBjb3V0IDw8IGE7CiAgICByZXR1cm4gMDsKfSAgICAgICAgICAgICAgIApFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdjbG9qdXJlJzogewoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVAooZGVmbiBwYXJ0aW5nCiAgInJldHVybnMgYSBTdHJpbmcgcGFydGluZyBpbiBhIGdpdmVuIGxhbmd1YWdlIgogIChbXSAocGFydGluZyAiV29ybGQiKSkKICAoW25hbWVdIChwYXJ0aW5nIG5hbWUgImVuIikpCiAgKFtuYW1lIGxhbmd1YWdlXQogICAgOyBjb25kcCBpcyBzaW1pbGFyIHRvIGEgY2FzZSBzdGF0ZW1lbnQgaW4gb3RoZXIgbGFuZ3VhZ2VzLgogICAgOyBJdCBpcyBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgbGF0ZXIuCiAgICA7IEl0IGlzIHVzZWQgaGVyZSB0byB0YWtlIGRpZmZlcmVudCBhY3Rpb25zIGJhc2VkIG9uIHdoZXRoZXIgdGhlCiAgICA7IHBhcmFtZXRlciAibGFuZ3VhZ2UiIGlzIHNldCB0byAiZW4iLCAiZXMiIG9yIHNvbWV0aGluZyBlbHNlLgogICAgKGNvbmRwID0gbGFuZ3VhZ2UKICAgICAgImVuIiAoc3RyICJHb29kYnllLCAiIG5hbWUpCiAgICAgICJlcyIgKHN0ciAiQWRpb3MsICIgbmFtZSkKICAgICAgKHRocm93IChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uCiAgICAgICAgKHN0ciAidW5zdXBwb3J0ZWQgbGFuZ3VhZ2UgIiBsYW5ndWFnZSkpKSkpKQoKKHByaW50bG4gKHBhcnRpbmcpKSA7IC0+IEdvb2RieWUsIFdvcmxkCihwcmludGxuIChwYXJ0aW5nICJNYXJrIikpIDsgLT4gR29vZGJ5ZSwgTWFyawoocHJpbnRsbiAocGFydGluZyAiTWFyayIgImVzIikpIDsgLT4gQWRpb3MsIE1hcmsKKHByaW50bG4gKHBhcnRpbmcgIk1hcmsiLCAieHkiKSkgOyAtPiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOiB1bnN1cHBvcnRlZCBsYW5ndWFnZSB4eSAgICAgICAgICAgICAgIApFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdvY2FtbCc6IHsKCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QKKCoKICogRXhhbXBsZSBvZiBlYXJseSByZXR1cm4gaW1wbGVtZW50YXRpb24gdGFrZW4gZnJvbQogKiBodHRwOi8vb2NhbWwuamFuZXN0cmVldC5jb20vP3E9bm9kZS85MQogKikKCmxldCB3aXRoX3JldHVybiAodHlwZSB0KSAoZiA6IF8gLT4gdCkgPQogIGxldCBtb2R1bGUgTSA9CiAgICAgc3RydWN0IGV4Y2VwdGlvbiBSZXR1cm4gb2YgdCBlbmQKICBpbgogIGxldCByZXR1cm4gPSB7IHJldHVybiA9IChmdW4geCAtPiByYWlzZSAoTS5SZXR1cm4geCkpOyB9IGluCiAgdHJ5IGYgcmV0dXJuIHdpdGggTS5SZXR1cm4geCAtPiB4CgoKKCogRnVuY3Rpb24gdGhhdCB1c2VzIHRoZSAnZWFybHkgcmV0dXJuJyBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IGB3aXRoX3JldHVybmAgKikKbGV0IHN1bV91bnRpbF9maXJzdF9uZWdhdGl2ZSBsaXN0ID0KICB3aXRoX3JldHVybiAoZnVuIHIgLT4KICAgIExpc3QuZm9sZCBsaXN0IH5pbml0OjAgfmY6KGZ1biBhY2MgeCAtPgogICAgICBpZiB4ID49IDAgdGhlbiBhY2MgKyB4IGVsc2Ugci5yZXR1cm4gYWNjKSkgICAgICAgICAgICAgICAgCkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ3RleHRpbGUnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCmgxLiBUZXh0aWxlIGRvY3VtZW50CgpoMi4gSGVhZGluZyBUd28KCmgzLiBBIHR3by1saW5lCiAgICBoZWFkZXIKCmgyLiBBbm90aGVyIHR3by1saW5lCmhlYWRlcgoKUGFyYWdyYXBoOgpvbmUsIHR3bywKdGhlZSBsaW5lcyEKCnAoY2xhc3NvbmUgdHdvIHRocmVlKS4gVGhpcyBpcyBhIHBhcmFncmFwaCB3aXRoIGNsYXNzZXMKCnAoI2lkKS4gKG9uZSB3aXRoIGFuIGlkKQoKcChvbmUgdHdvIHRocmVlI215X2lkKS4gLi5jbGFzc2VzICsgaWQKCiogVW5vcmRlcmVkIGxpc3QKKiogc3VibGlzdAoqIGJhY2sgYWdhaW4hCioqIHN1Ymxpc3QgYWdhaW4uLgoKIyBvcmRlcmVkCgpiZy4gQmxvY2txdW90ZSEKICAgIFRoaXMgaXMgYSB0d28tbGlzdCBibG9ja3F1b3RlLi4hICAgICAgICAgICAgICAgIApFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdncm9vdnknOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCgovL2h0dHA6Ly9ncm9vdnkuY29kZWhhdXMub3JnL0NvbmN1cnJlbmN5K3dpdGgrR3Jvb3Z5CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljSW50ZWdlcgoKZGVmIGNvdW50ZXIgPSBuZXcgQXRvbWljSW50ZWdlcigpCgpzeW5jaHJvbml6ZWQgb3V0KG1lc3NhZ2UpIHsKICAgIHByaW50bG4obWVzc2FnZSkKfQoKZGVmIHRoID0gVGhyZWFkLnN0YXJ0IHsKICAgIGZvciggaSBpbiAxLi44ICkgewogICAgICAgIHNsZWVwIDMwCiAgICAgICAgb3V0ICJ0aHJlYWQgbG9vcCBcJGkiCiAgICAgICAgY291bnRlci5pbmNyZW1lbnRBbmRHZXQoKQogICAgfQp9Cgpmb3IoIGogaW4gMS4uNCApIHsKICAgIHNsZWVwIDUwCiAgICBvdXQgIm1haW4gbG9vcCBcJGoiCiAgICBjb3VudGVyLmluY3JlbWVudEFuZEdldCgpCn0KCnRoLmpvaW4oKQoKYXNzZXJ0IGNvdW50ZXIuZ2V0KCkgPT0gMTIgICAgICAgICAgICAKRU9UOwoJCWJyZWFrOwoJfQoJY2FzZSAnc2NhbGEnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCi8vaHR0cDovL3d3dy5zY2FsYS1sYW5nLm9yZy9ub2RlLzIyNwovKiBEZWZpbmVzIGEgbmV3IG1ldGhvZCAnc29ydCcgZm9yIGFycmF5IG9iamVjdHMgKi8Kb2JqZWN0IGltcGxpY2l0cyBleHRlbmRzIEFwcGxpY2F0aW9uIHsKICBpbXBsaWNpdCBkZWYgYXJyYXlXcmFwcGVyW0EgOiBDbGFzc01hbmlmZXN0XSh4OiBBcnJheVtBXSkgPQogICAgbmV3IHsKICAgICAgZGVmIHNvcnQocDogKEEsIEEpID0+IEJvb2xlYW4pID0gewogICAgICAgIHV0aWwuU29ydGluZy5zdGFibGVTb3J0KHgsIHApOyB4CiAgICAgIH0KICAgIH0KICB2YWwgeCA9IEFycmF5KDIsIDMsIDEsIDQpCiAgcHJpbnRsbigieCA9ICIrIHguc29ydCgoeDogSW50LCB5OiBJbnQpID0+IHggPCB5KSkKfSAgICAgICAgICAgICAgIApFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdjb2xkZnVzaW9uJzogewoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVAo8IS0tLSBoZWxsbyB3b3JsZCAtLS0+Cgo8Y2ZzZXQgd2VsY29tZT0iSGVsbG8gV29ybGQhIj4KCjxjZm91dHB1dD4jd2VsY29tZSM8L2Nmb3V0cHV0PiAgICAgICAgICAgICAgICAKRU9UOwoJCWJyZWFrOwoJfQoJY2FzZSAnbHVhJzogewoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVAotLVtbLS0KbnVtX2FyZ3MgdGFrZXMgaW4gNS4xIGJ5dGUgY29kZSBhbmQgZXh0cmFjdHMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMKZnJvbSBpdHMgZnVuY3Rpb24gaGVhZGVyLgotLV1dLS0KCmZ1bmN0aW9uIGludCh0KQogICAgcmV0dXJuIHQ6Ynl0ZSgxKSt0OmJ5dGUoMikqMHgxMDArdDpieXRlKDMpKjB4MTAwMDArdDpieXRlKDQpKjB4MTAwMDAwMAplbmQKCmZ1bmN0aW9uIG51bV9hcmdzKGZ1bmMpCiAgICBsb2NhbCBkdW1wID0gc3RyaW5nLmR1bXAoZnVuYykKICAgIGxvY2FsIG9mZnNldCwgY3Vyc29yID0gaW50KGR1bXA6c3ViKDEzKSksIG9mZnNldCArIDI2CiAgICAtLUdldCB0aGUgcGFyYW1zIGFuZCB2YXIgZmxhZyAod2hldGhlciB0aGVyZSdzIGEgLi4uIGluIHRoZSBwYXJhbSkKICAgIHJldHVybiBkdW1wOnN1YihjdXJzb3IpOmJ5dGUoKSwgZHVtcDpzdWIoY3Vyc29yKzEpOmJ5dGUoKQplbmQKCi0tIFVzYWdlOgpudW1fYXJncyhmdW5jdGlvbihhLGIsYyxkLCAuLi4pIGVuZCkgLS0gcmV0dXJuIDQsIDcKCi0tIFB5dGhvbiBzdHlsZWQgc3RyaW5nIGZvcm1hdCBvcGVyYXRvcgpsb2NhbCBnbSA9IGRlYnVnLmdldG1ldGF0YWJsZSgiIikKCmdtLl9fbW9kPWZ1bmN0aW9uKHNlbGYsIG90aGVyKQogICAgaWYgdHlwZShvdGhlcikgfj0gInRhYmxlIiB0aGVuIG90aGVyID0ge290aGVyfSBlbmQKICAgIGZvciBpLHYgaW4gaXBhaXJzKG90aGVyKSBkbyBvdGhlcltpXSA9IHRvc3RyaW5nKHYpIGVuZAogICAgcmV0dXJuIHNlbGY6Zm9ybWF0KHVucGFjayhvdGhlcikpCmVuZAoKcHJpbnQoWz09PVsKICAgIGJsYWggYmxhaCAlcywgKCVkICVkKQpdPT09XSV7ImJsYWgiLCBudW1fYXJncyhpbnQpfSkKCi0tWz1bLS0KdGFibGUubWF4biBpcyBkZXByZWNhdGVkLCB1c2UgIyBpbnN0ZWFkLgotLV09XS0tCnByaW50KHRhYmxlLm1heG57MSwyLFs0XT00LFs4XT04KSAtLSBvdXRwdXRzIDggaW5zdGVhZCBvZiAyICAgICAgICAgICAgICAgIApFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdoYXhlJzogewoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVApjbGFzcyBIYXhlIAp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1haW4oKSAKICAgIHsKICAgICAgICAvLyBTYXkgSGVsbG8hCiAgICAgICAgdmFyIGdyZWV0aW5nOlN0cmluZyA9ICJIZWxsbyBXb3JsZCI7CiAgICAgICAgdHJhY2UoZ3JlZXRpbmcpOwogICAgICAgIAogICAgICAgIHZhciB0YXJnZXRzOkFycmF5PFN0cmluZz4gPSBbIkZsYXNoIiwiSmF2YXNjcmlwdCIsIlBIUCIsIk5la28iLCJDKysiLCJpT1MiLCJBbmRyb2lkIiwid2ViT1MiXTsKICAgICAgICB0cmFjZSgiSGF4ZSBpcyBhIGdyZWF0IGxhbmd1YWdlIHRoYXQgY2FuIHRhcmdldDoiKTsKICAgICAgICBmb3IgKHRhcmdldCBpbiB0YXJnZXRzKQogICAgICAgIHsKICAgICAgICAgICAgdHJhY2UgKCIgLSAiICsgdGFyZ2V0KTsKICAgICAgICB9CiAgICAgICAgdHJhY2UoIkFuZCBtYW55IG1vcmUhIik7CiAgICB9Cn0gICAgICAgICAgICAgICAgCkVPVDsKCQlicmVhazsKCX0KCWNhc2UgJ21hcmtkb3duJzogewoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVApBY2UgKEFqYXgub3JnIENsb3VkOSBFZGl0b3IpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkFjZSBpcyBhIHN0YW5kYWxvbmUgY29kZSBlZGl0b3Igd3JpdHRlbiBpbiBKYXZhU2NyaXB0LiBPdXIgZ29hbCBpcyB0byBjcmVhdGUgYSBicm93c2VyIGJhc2VkIGVkaXRvciB0aGF0IG1hdGNoZXMgYW5kIGV4dGVuZHMgdGhlIGZlYXR1cmVzLCB1c2FiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIG9mIGV4aXN0aW5nIG5hdGl2ZSBlZGl0b3JzIHN1Y2ggYXMgVGV4dE1hdGUsIFZpbSBvciBFY2xpcHNlLiBJdCBjYW4gYmUgZWFzaWx5IGVtYmVkZGVkIGluIGFueSB3ZWIgcGFnZSBvciBKYXZhU2NyaXB0IGFwcGxpY2F0aW9uLiBBY2UgaXMgZGV2ZWxvcGVkIGFzIHRoZSBwcmltYXJ5IGVkaXRvciBmb3IgW0Nsb3VkOSBJREVdKGh0dHA6Ly93d3cuY2xvdWQ5aWRlLmNvbS8pIGFuZCB0aGUgc3VjY2Vzc29yIG9mIHRoZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWN0LgoKRmVhdHVyZXMKLS0tLS0tLS0KCiogU3ludGF4IGhpZ2hsaWdodGluZwoqIEF1dG9tYXRpYyBpbmRlbnQgYW5kIG91dGRlbnQKKiBBbiBvcHRpb25hbCBjb21tYW5kIGxpbmUKKiBIYW5kbGVzIGh1Z2UgZG9jdW1lbnRzICgxMDAsMDAwIGxpbmVzIGFuZCBtb3JlIGFyZSBubyBwcm9ibGVtKQoqIEZ1bGx5IGN1c3RvbWl6YWJsZSBrZXkgYmluZGluZ3MgaW5jbHVkaW5nIFZJIGFuZCBFbWFjcyBtb2RlcwoqIFRoZW1lcyAoVGV4dE1hdGUgdGhlbWVzIGNhbiBiZSBpbXBvcnRlZCkKKiBTZWFyY2ggYW5kIHJlcGxhY2Ugd2l0aCByZWd1bGFyIGV4cHJlc3Npb25zCiogSGlnaGxpZ2h0IG1hdGNoaW5nIHBhcmVudGhlc2VzCiogVG9nZ2xlIGJldHdlZW4gc29mdCB0YWJzIGFuZCByZWFsIHRhYnMKKiBEaXNwbGF5cyBoaWRkZW4gY2hhcmFjdGVycwoqIERyYWcgYW5kIGRyb3AgdGV4dCB1c2luZyB0aGUgbW91c2UKKiBMaW5lIHdyYXBwaW5nCiogVW5zdHJ1Y3R1cmVkIC8gdXNlciBjb2RlIGZvbGRpbmcKKiBMaXZlIHN5bnRheCBjaGVja2VyIChjdXJyZW50bHkgSmF2YVNjcmlwdC9Db2ZmZWVTY3JpcHQpICAgICAgICAgICAgICAgIApFT1Q7CgkJYnJlYWs7Cgl9CgljYXNlICdzcWwnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UClNFTEVDVCBjaXR5LCBDT1VOVChpZCkgQVMgdXNlcnNfY291bnQKRlJPTSB1c2VycwpXSEVSRSBncm91cF9uYW1lID0gXCdzYWxlc21hblwnCkFORCBjcmVhdGVkID4gXCcyMDExLTA1LTIxXCcKR1JPVVAgQlkgMQpPUkRFUiBCWSAyIERFU0MKRU9UOwoJCWJyZWFrOwoJfQoJY2FzZSAncGdzcWwnOiB7CgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UCkJFR0lOOwoKLyoqCiogU2FtcGxlcyBmcm9tIFBvc3RncmVTUUwgc3JjL3R1dG9yaWFsL2Jhc2ljcy5zb3VyY2UKKi8KQ1JFQVRFIFRBQkxFIHdlYXRoZXIgKAogICAgY2l0eSAgICAgICAgdmFyY2hhcig4MCksCiAgICB0ZW1wX2xvICAgICBpbnQsICAgICAgICAtLSBsb3cgdGVtcGVyYXR1cmUKICAgIHRlbXBfaGkgICAgIGludCwgICAgICAgIC0tIGhpZ2ggdGVtcGVyYXR1cmUKICAgIHByY3AgICAgICAgIHJlYWwsICAgICAgIC0tIHByZWNpcGl0YXRpb24KICAgICJkYXRlIiAgICAgIGRhdGUKKTsgICAgICAgICAgICAgICAgCkVPVDsKCQlicmVhazsKCX0KfQoKLyogY3JlYXRlIHRlc3QgdGV4dGFyZWEgKi8KJHNtYXJ0eS0+YXNzaWduKCd0ZXN0YXJlYXRleHQnLCAkdGhpcy0+TGFuZygndGVzdGFyZWF0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ3Rlc3RhcmVhJywgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCAkaWQsICRzeW50YXhfY29udGVudCwgJ3Rlc3RhcmVhJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJ0FjZUVkaXRvcicsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAnbW9kZScsICd0aGVtZScsICdmb250c2l6ZScsICdmdWxsX2xpbmUnLCAnaGlnaGxpZ2h0X2FjdGl2ZScsICdzaG93X2ludmlzaWJsZXMnLCAncGVyc2lzdGVuX2hzY3JvbGwnLCAna2V5YmluZGluZycsICdzb2Z0X3dyYXAnLCAnc2hvd19ndXR0ZXInLCAncHJpbnRfbWFyZ2luJywgJ3NvZnRfdGFiJywgJ2hpZ2hsaWdodF9zZWxlY3RlZCcsICdlbmFibGVfYmVoYXZpb3JzJykpKTsKCi8qIFByb2Nlc3NUZW1wYWx0ZSAqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3NldHRpbmdzLnRwbCcpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/editor.JPG</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEAYABgAAD/4RDgRXhpZgAATU0AKgAAAAgABAE7AAIAAAAHAAAISodpAAQAAAABAAAIUpydAAEAAAAOAAAQyuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVuaXF1MwAAAAWQAwACAAAAFAAAEKCQBAACAAAAFAAAELSSkQACAAAAAzIzAACSkgACAAAAAzIzAADqHAAHAAAIDAAACJQAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDExOjEyOjAzIDE1OjM4OjUzADIwMTE6MTI6MDMgMTU6Mzg6NTMAAAB1AG4AaQBxAHUAMwAAAP/hCxlodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDExLTEyLTAzVDE1OjM4OjUzLjIyNTwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT51bmlxdTM8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgBAwE8AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9v1C9+yXdnH5e/7VP5Oc42/u2fPv9zH41YqvqH2v7XZ/ZP8AV+f/AKR0/wBX5bev+1s6c/hmrFMOoUUUUgCiiigDxH9oz/mXP+3r/wBpV5QfC2rDRX1XyIfsscSzPi6i8xEZgqsYt28AkjBK85Fer/tGf8y5/wBvX/tKvO7nxlE/hX+x7S21GMGKFNk+pma3iZCrNJHCU+RmZT/EQAzDHNSw6lC48Ha1aWqXFzBBFGZI4n3XkOYXflVlG/MRPP3wuMHPQ1Jd+BvENleQ2tzYKs0zlFVbiJtuBuy5DEIu0FgzYBUFgcDNLqWtaHqM8ly+h3KXV1OJrqT+0MjkkuIl8v5NxP8AH5mB+dTXnibTZ/EsuqW2lXcUV3HLHdwSXyuXDqVOxhENhGcjIbkenFT/AF/X9fIP6/r+vmV7Pwwy+JLLStcnezW+KCC4tFju0cs21SGWQKVzkEhjggjGaq6PpVpqV1dW1xeTW80cEssHl24kWQxozkMS6lQQvUBuvStK28SaTbavpcy6Temx0v57e3/tBPMaXzN+55PJwR22hRwBz1zFputaDp+s3N5/ZGoyRSRPHFF/aUYZN8bI5ZvI+bhsjAGMc5pajVvy/wCCc7WoumWknhiXUoruY3MFxHDLbtbgIA4cqyybySf3fIKjr1NULloGuZGs45IoCx8tJZA7KOwLBVBPvgfStiy1bRoPDNxptzpd9LcXDpK1xHfoiB0DhMIYScYk5G7nHBFN7C6kFz4a1S00v7fPDCIQiSOq3MTSxq+NrPEG3qDlcFlA+YeorW1DwTHp+m6eX1WB9Rv9myBZ7UwpvzgtIJywGB94oFzxml1XxzPq+g/YrmfWxKYY4mRdXP2RtgAz9nMfcLnG/G7n2qhretaVqCWTabpl5aT2kaRBri+WZWRAcfKIkIOcc5/Cq0v8/wABa2+X46FTXdAu/D181rfS2cjq7pm1vI5xlTg5CMSv0YA+3WjQ9Bu/EF1NBYy2kbwwvMxurlIQVUZOC5AJ4/DqcDJqfxDq+m6vcPcWGlPZ3E88lxcSy3RmLM5ztUBVCoDnAILc8saraJqUWlaiZri3a5gkhlgljSTy2KyIUO1sEAjOQSD9KmO2o35E9t4X1O8u7mC3Fo32UqJZjfwLCC33QJS+wk84AYng+hqxB4G8Q3Fv5yWUar57W22W6hjczKcGLYzht/omNx7A05dc0Roriyl0S5TTXeOSKK31ALKropUs0jRsG3biSAqjIGMDIO3J4i0G60GO81WMXV6upy3cdhBdSQvChEaqrMYWR1xGM4YNgDnJID/r8v8Agi/r+v6+85OPQdSl0S61dLU/YbOVYZ5S6go7dBtJ3fkKzq17zUdPu9HkMlmz6zc3rzz3bMVVIyBhEUHByxYkkcYAHesikr9SnboFFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2Xql5f22u6dHCLb7FcSmKUuGMhby3YbeQFA2dTnOegxk1NV1TUrDW7KJBb/Y7iVIgphkZnycMTLwkeMjCncX6DBq3rOiyane28yate2X2Zt6JbrCRu2ldx3xsc4Yjrj2zTLrQhd6gtxJqN95IkSVrMOpid0IKnlSw5CnCsFJHI5OdF0B9fQ1aKKKQBRRRQB4j+0Z/wAy5/29f+0q8iurK2Tw5p9/CJVmmnnhmDuGUlBGwKjAI4kwQSemc84Hrv7Rn/Muf9vX/tKvJLjUIT4YstNtnm3rcS3FyGUKhYhVQDBO7AVjkgY3kD1MsRl0UUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2Tq73sOvaW0N55drLOYZbcRKfMzE7ZLHJ42jAGO+Segy9S8TRw+M9P0mPUbe3AmCXEDum+YvGxUAH5gAQvI6l1GeorZ1bQbLVruKa8N2Hh5j8i9mhCnBGcI4GcEjPXBxTdStbCa5s574zh7RzLD5c0qhSBgswQ4IAOMtkYJ9TVOUYpOWyHZydl2NGiiimIKKKKAPEf2jP8AmXP+3r/2lXjAjRLEySLmSRsR+wHU/wBPzr2f9oz/AJlz/t6/9pV4pNM0xTcAAihFA6AD/JP41DAtX1vZxW0D2sxkdh86nHy9+cE9iBx6evFN02KCa5ZLkfuzG3zZPycdfwqnUsFxJbMzRbcspU7kDcH6ikBovpkJ8mJW2lUYzSqQRkEcZLBcAnHWoY9NjN9Lby3SoI8YbK/Nn6sB+p/GoU1C4SNI1MexAVCmFCCOvORz07046pdGR3Zo2aTBbdChBI6HBHXmlqBOmnRtFcqThbabDz4OQuD/AAkgdQOOvNZrbQ52Elc8EjBI+lWY9RuYixR1+dizbo1bcSCDnI56nj3qsTkknHPoMUK4zQuLOB1DW77ZPKjdotp2jdgfeJ9SD+PWkvNPjsk3rcRzMr7Wj3Lz9NrE4474NQNf3DBwTH86CNsRIPlHQdOP/rD0pJL6abaZPKYhg27yUyT7nGT+PWjURYNrBPfiPItUaASfKCwB2bj1OcdfWlh0yOf95Hc4g2k7nVUbOQMYLAd/X/Ckh1V1ukmuEVyilV8pEjIyMdQvOB2NQnUJ/O3qUA27QnlJt25zgrjB59qNRkq2EH2ieOS7AWJA4dFDhhxno3Xn35796pyqiysIn3oDw2MZH0qZL+eN5HQQgyABh5CYx9MYFV2O5iTjJOeBinqAlaBS0TTItqGS4mzgshGDkDgh8fmDWfVh72aS2WBvL2KMDESAj8cZ/WgRLLZwxh9twz+U4Wb93jHbK88/jim3trBauY4rkyupwwMe3H6/n/WmyX88uN5jOGDH90g3Ed24+bqeuaZc3Ut0++bYW9VjVc/XAGaWoyWxhhmjufPOwJGHEgBJX5gOBnBznv8ApUiWEBd990yxiISo/lZyucHIzwfzHv3qvb3c1rv8gqN42tuRWyPTkdKeuo3CyO4MZLgKd0KEYHQAEYA9hT1ESJZW7YLXRCyOUiIiznpy3PHUdM9/xkTSCxjYyOItmZX2D5DznjdyPl61Vivp4ARGY/vbhmJTtPqMjjt09KRb24WAQrKRGAw24HRuv8qWoyyumxvYeelyGkwD5YCnqcYPzZHXuAKLzTYrRQTdK+H2OFKEj3ADknp3x2qCS/uJIPKdk27QpIjUMQOgLAZPQd+1El9NKVMgiYht24wpkn3OMn8aeoE01jbR3a263mTv2uWj2hfxJx+eOe+Oaiv7RLOWNY5vNDpuzgcckdiQenY0NqNw1yJyY/MAIyIUGcjByMYPHrUU9xJcOGlK5A2gKoUAewAxS1An08Ql3+0QJIijczOzAIo69CMk8AVJELVVjZ7XzBcSMMbz+7XOMDHfnqc9uKrQXctsrrFsKvgsHjVwcdPvA+tPTUrpHdlkGXYuSUU4Y9xx8p9ximItfZreKZLNoRI8ik+fuIKnJxgdMcc5z36VLNZWapNKqrzD8kQY/I+Mk9c46dfX2rOS+uI4PJWQbMEcqCQD1AOMgH0FObULhpHcmPdImxj5KdPy4pWY9CrVvTI45r5Y5Y0kVlbh2KjIUkcgj0pl3dNdPGSu1Yo1jVc9AB/jk/jTLe4ktZfMhKhsEfMgbg9eCKYjQbTY5bnBMdsFhV5AjgqCTgbSzAHjB+96/SqF1ALe5aNZVlUYIdSCDx7EjP405L64jChWTCggBo1IwTkjBHIzzjtUUsjTSF3CgnsiBR+Q4pajPsPWopF8QaPcrdXKg3BhMCyFY2BikYllH3jlV65AxxjnPFeIDqM3i2LUYJ5JLJdSgsnit72QmIbirJJCBs2udpJY9CvBzXf6noWkarciXVNKsr2RF2q9xbpIVHXALA8U240HSLu9F5daVZT3QAAnkt0ZwBwPmIzUV6TqxUU7GlOag72DSJXa2kglbe1tIYt5OSwwCM++GAPuDV+mQwxW8Qit40ijXoiKFA/AU+tKUHCmoyd2iZyUpNpBRRRWhB4j+0Z/zLn/AG9f+0q8oNnbp4eEzMpkJzkbM/TO7Pb0/DrXq/7Rn/Muf9vX/tKvFftMpgWHf+7U7gMdDz3/ABNSzqw1WnT5ueN7ppepensrUzCK2MqESpGWkYMPmBOeAMYx+PtUEvkRqJbWGdWSTafOCuv8uvsc1E95dSqyyXMzq+CwaQkNjpmhr67eRHe6mZ4/uMZCSv09KRrOtRd3FW+S7+ull9/XuXPssE2pXXnMIo4huwvyjqB2U46+lENlZSXMp84tbjaFYMQdx7fcJPQ9h0qmb67aZZWupjIowrmQ5H0NAvrsStILqYSMMM/mHJHuaasX9Yoc1+Xq3t6+f4eW6LkdjaqWjn85pBc+QGRgBj1wQfyzSrbQTQWYkRxJMhVXQBVGGPJ4+b36YA71T+33gORdT53bv9Yevr9aGvrtkZWupirDDAyHBHvS6DWIw605dPRd0+/ZW+dx7MH0yMuifLKVyqhSRgdSBz+NWDp0LTGNfMQfaViEjHIwwJ9OvH69Kpm9ujB5JuZjFjGzzDtx6YpGu7l4hE9xK0YAAQuSMDoMU+pmq1H7Sb0X4J+e22vkTX0NpGENpNubJDoSxx6HJRferXhW0S+8XaVbypHJG93H5iSYwyhgWGD1yARtGSTwASQKz5ru4uQBcTyyhem9y2Pzp1heSadqVtfQBTLbTJMgcZBZSCM+3FI5cRKNSTcFZelv1Y28mNxezzMqKZJGYrHGI1GT2VQAo9gABUNS3My3F1LMkMcCyOWEUZYqmT0G4k4HuSfeoqS2Ik7tsKKKKZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB9b+KbvRLDxNot1qd7aW13HOdpuLgKUjMUgJAY4ALYBIHOAM8CszW5gfHCHUF0yWOM24sba9XfJNvfDvBlgFZTyTtYnAHyjBPa3N5awXsNtNcwxz3GfJieQBpNoydo6nA64qpJrukRakNOl1WyS+JCi1a4QSknkDZnPOfStE9gf6F+iiikAUUUUAeI/tGf8y5/29f+0q8afNvYLH0e4w7f7o6D8Tk/lXsv7Rn/ADLn/b1/7SrxJmZzl2LHAGSc9OBUMC5fXdtcW0CQW4jeMYZgDz345OOSf88CGwhE97HGYmlHJKJ1IAz6jP0zVeikBumytPtm37JIGEAcQCNizNuwcpvz07bvf2qJIYxc3kUOnNKwRWSKZHDjkZwA2cc565xWPUsFtPdSFLaGSZ1RnKxqWIVRljx2ABJPYClYYk6NHO6OqoysQVU5A9s5NX44jNpKGGxidlLh5ssCmACCTuwO/WqVpZ3N/dR2tjby3NxIcJFChd2PsByaiIIOCMEU+gjTltEWzZvsjLGsSut183zsccencjAGRj2NUrIRm+hWdA8bMFYEkDnjtzRd2d1YXBt762mtpgATHNGUYAjIODzyCD+NQUB0NaayW1WKOKBbud5G4UNkbR8y4DevfrxSy2TrqV3vs5JnBLRROH+cbsZ9T+dZFFKwzfuIma9uFaw86U28TJHJvZh90EDBBOOffj60yC2d7eC3uLMyB7p0G1mIjBAztwfr1z0NYdFFguKysjFXBVgcEEYINactoi2bH7IyxrErrdfN87HHHp3IwBkY9jWXRTEa+qPdR2NvC9q9vBtXj94F3c8YJx79M1QsmhF0ouY0eNvlO8kBc9+COlV6KLAa9vCF1O2torMSSxYEzRl8g5GTw3GP55osbFB54urSeSZGX90ImZgpzzgMp9Of8ayKKVhm1Dp9tcY2p5IjnZCJQdz9wrDdxxu6elBtYJoIpYtO2wyI5eZWciLBIHfA4A69e2KxamluZJoo432bYxhcIoIH1AyfxoswL0logtGItGWNYlZLr5vnY449O5GAMjHsadewpa+SX0sxbgrFnLhSccryen459+1ZNFMRoatA0VwzfY0tozIwTbkbxnrgk8e44qDT7iO1vEmmiEqrzt9xyO4xyOv6Gq1FCVkDL0Zia8luo4gsEPzKhHHoo6nv159apu7O7O5JZjkk9zRubYU3HaTkrnjP+TTaACiiimAUUUUAFFFFAH194kubW01zTJms7qSZJ98k1tp8sxEflyKAWRD/ABMPlz3zird9befqdjFFBiJpjdXDhMBiigLuP97cUIzzhParV5q1lbavb6dNNi6ucmKMIzdATyQML904zjODjOKil1qwh1VNOklYXDYHETlASCQpcDarHHCkgnjjkVp2B7/Iv0UUUgCiiigDxH9oz/mXP+3r/wBpV4hXt/7Rn/Muf9vX/tKvE1id43kUfKmNxz0z0qHuAyinvDJGqs6kBhkfmR/MH8qZQB03g5tKlGqWWuvBDbS2wl85kj80GNgxSJ3UlWZdwGOpx1rfVLO58S3NjpsmgyaZb6abY3FyLKEzOYXKOC+Dv8xgCy88Dca86opPUFoejeC44dOvNLXd4eAg1A/2rLfXNszqqldpidmzgDJBiPLZySMVU+0XF14NXTo73w/CtnPdrctcJamQLhCpjbaZHLEMA0eT0yQACOEooeoLT+vX/M9B1kpd6LdWch0IrZaPZvDNFcWxneZfLVx5gbe5CiQFASBtXjJBPN69/wAgnQ/+QN/x6H/kHf637x/4+P8App/TFYVFAL/gfkbXhFLRvE1sb9ohEiu4WYxBJHCEqhMoMa5OBlgQM8g9K63WLXTpdWuobAaHDJf6VG6KbuzdI7lJVLDzFCxxtsDZwEVvfOT5xRTetv6/r/gAtHf+v6/zPSjdNZ6xrdnptz4beW80+1eJ9ll9mklXyvMAMihE5Eh2HbyM4ziqmkRQQ4jhk8NXf/EwkGqTXRt0V4flx5Ik2sEwZMGIBsj/AHa4EKzAkKSFGSQOlJQKx0rx/ZvA93NFb6Z9jvNQ8u2luIyb3CAE7GHATDKG9zXNUUUrFN3CiiimIKKKKACiiigAopxQhA+RgkjqM/l1ptABRRRQAUUUUAFFFSJC8kcjoARGMt8wBAzjp360gI6KfDC88yxRAF2OACQMn6mmUAFFFLTA+w/EUt6up6cbPSLu+S3n86R4HhUAeW6Y+eRTnLA9MY79qo3mm3Enijz/AOzbqXdNC6XCXIW3RV27vMj8wbnGGwdjY+TnjjavtWjtNZtLFra5c3ZKiZUHloQpYBmJHJCtwMnjnGRUFzr0Ntqgs2tbl0DJHLdIF8qF34RWy27JyOikDcMkVougP9DUooopAFFFFAHiP7Rn/Muf9vX/ALSrxmdljtoreNg3HmSEHI3HoPwH6k17N+0Z/wAy5/29f+0q8QqGBbutSuLyCKGdsrF93knt7nn/AOv6cU3T5Jor6NrZZHfP3Y87mHcDHtmq1FIDZlmNpdPZ/aGgMEflxSvu+Ukgt0BIz0yP60w3ccjOhvvLYNG/nAN8zKCGIwM556nGcc1HpWh3etQ3Z04Cae2RHFqiO0swZ1T5AqkEgsuQSOvGaIPDut3V7cWdro9/NdW3+vgjtXZ4v95QMr+NKwXKt86SahO8TiRHkZlYAjIJz3q3BdbLJEjvvsyqjCSHYSZCc84xg8YHJGMVFp+i6rq6zNpWmXl8sABlNtA0gjBzjdtBx0PX0qzH4Y1O5s7SbT4Hv5Lkyj7NawyPLEYyu7eu3/aU5GRzzg8U7aWAdJdW76V5C3KAqqGNW8wsrDr/ALI79PzpmpXa3UU+69WfEqmJSG+7g5xkcdR+VRr4e1p9OF+mj37WbI0guRbOYyi9W3YxgdzSXvh7WtNhMuo6Rf2kYkEW+e2dBvIyFyR1I5x6UW1C5WsHWO9jdpFiC5IZ1JAOOOnPXuOlap1SM3m8zRl/ICCUmXap3Z4P3+nf8OlVbjw3rlpcGC70bUIJhC05jltXVhGvV8EZ2juelOi8L6/cTiCDQ9SllMSzCNLSQsY2OFfAH3T2PQ0WuGw5dQb7Vdbb1LczIuJITIELAjn+9nGecVmT7TO5SRpRuPzsMFver9n4d1e+1OWwg028a4tz/pEYtpGa3GcEuqqWAHfikvNCv7TUNRtUge6/s12W5mt0Zo0AbbuJxwpPcgUtBktvJcR6SLo+ev2fckL87SH44Ptz+gpr3i/ZWC3YMflqI7YBgUcY56YBzk5ByfxrKq2dOmXSxflk8ouEC5O7vz0x/CapRbvYEXLm4ikjlMWoANJcrMikOPL65OcdeRnHp3qDVrtrifi7W4iyWUKpGz8wOv696luvDt9ZWMNxcKUecgRwGGXeSegzs259s5p134av7Oe2t2Uvc3JwkCxSBumTyUAOO+Ca0+r1E7W2DXcp2EwieXEwt5GTCTHPynIz0BIyM8irwvrVxLFdytKmUbK7gJHxhm7c85yeuPequq6VLpFysFxIrSEZIEciYGcfxqufqMioINPvLpFe2tJ5leQRK0cZYFyMhRgdcdutQ4O9hN8u5rLqm+QbtQKxm5JdW3nMeMc8c5A6e9YTAKxAYMAeo6GrsOi6rcbvs+mXku2QxNsgZsOBkrwOoHbrTf7PzpBv1uYWCSrE8AD70LBiCcrtwdh6E0uVonnj3JvMVrK2DainmQyblB8zKA7eB8vGMHpV641GC4cie98yPfuwA2f9Zn0/unA+hrLi02aXSLnUtyJBbypEdxOXd9xAXj0Vic46e4p91pbWmk2N9JdQMb1WdLdd/mKquybmyu3BKnGGJ9hUtaldC9LdR3FzbtHOj3O10DRrKxUn7pywLH8OmeBUkt41rdRx3M+ZhbBRJKJF2tvJPTDDIxz1PGetVJ/Dt6t3ZWdljUby8t0uFtbOOR5EDIHAI2jJ2nPy5A9aiHh7WjfQWQ0e/N1cR+bDB9mfzJU5+ZVxkjg8j0NFh36le/m8+9eTMTZxlot208dfm5z9avaVd28FsY5ZkjDsfMV/MORjAwF4PfO6obbw/rN5qE1haaTfT3lvnzraK2dpI8HB3KBkc+tTWXhPxBqWnSX2naLfXVtFJ5TyQ27PtbBJGAM8Y59OM9RRbQOoR3a/Y4rZ9QXyhDIrIQ5GTnb/AA/Q+2KVruN7G4j+2r5bwqIrfa3yMCCe2B0PIPOeax6vzaHq1vFcS3Gl3sUdts893t3URb8bNxI+XdkYz1zxTtcVyCwdI9Rt5JnCIkgZiQTwDntWiLyITxGe8E7K7MkgDqIxjgHgEDOOF6Y4qG58O6vp6rJqum3mnweasTT3VtIiIxGQCdvXHOBzjtRf6MNP1qOwn1G0MciRyC8QSmLZIgcNjZvxhhkbc+1G4E013C175sV3GkrwBfPUSfI+eeSC3I4zyaz72QzXO5rj7Q20AybSM8fmfqea0IvDksni1vD8t9aQXAuDbCeTzDEzhtoA2oW5PQlR15xWQylHKnqDikrDPsTX4NXm1GxfS7WymjtpfOY3F28RJ2Om0BY24+fOc9sY71R1jw2+r67BO9rCkCvFJJOt9MGYxtuAMAAjY543MSQD04FbuoXv2S7s4/L3/ap/JznG392z59/uY/GrFbdhP9AooopAFFFFAHiP7Rn/ADLn/b1/7SrxCvb/ANoz/mXP+3r/ANpV5QfC2rDRX1XyIfsscSzPi6i8xEZgqsYt28AkjBK85FQw62Meity48Ha1aWqXFzBBFGZI4n3XkOYXflVlG/MRPP3wuMHPQ1Jd+BvENleQ2tzYKs0zlFVbiJtuBuy5DEIu0FgzYBUFgcDNAC+FdV03TYNYi1S4v7cahZfZEexiVyoLqzE7nXjCY29wx5Hfd03xhodpeDzRdFLdLWOG7l06C5lljiDblKSOVjJJGGG4qFA574Fn4YZfEllpWuTvZrfFBBcWix3aOWbapDLIFK5yCQxwQRjNVdH0q01K6ura4vJreaOCWWDy7cSLIY0ZyGJdSoIXqA3XpRzW+X6f0w5b3/rf/hjdbxBot1cyeZf6zYxw6pLf20tnbp5knmbfvfvR5brt4YFuvTjlbbxJoX/CEz6LOL6G4meWYXS20czoS6ERby6kowTLMApzjggEHjK1F0y0k8MS6lFdzG5guI4ZbdrcBAHDlWWTeST+75BUdepqUklYe7uddfXmny+DtW1FtQkW41a2tYRYmeBhGYnToiymTACNt3IgUHGTkZo3XijTrfVdFu9M1HVrmKwSCGS2uLdYV2R4OVxK/O4bgMAA85rBufDWqWml/b54YRCESR1W5iaWNXxtZ4g29QcrgsoHzD1Fa2oeCY9P03Ty+qwPqN/s2QLPamFN+cFpBOWAwPvFAueM1XX5kK34f1+g+317RtPFpaQ3WpXtoJLl5557ZI5I/Oh8o7E81gTzuOWGcAcYzUr674cgsjBp91q6ldHk09We0jBd2mMm44l+VW3EEc4H96ue13QLvw9fNa30tnI6u6ZtbyOcZU4OQjEr9GAPt1o0PQbvxBdTQWMtpG8MLzMbq5SEFVGTguQCePw6nAyaSs1/Xa35FPRq/T/O/wCZ0l14h0G8YwHUdZt4Va0mW4is4/NeSGHyjlfOAHQMrbiQWYY71T1PX9KvdZ8T3kV1rMKaoWkto4isauzPuKTruO5Rk4weSAcDpWZbeF9TvLu5gtxaN9lKiWY38Cwgt90CUvsJPOAGJ4PoasQeBvENxb+cllGq+e1ttluoY3MynBi2M4bf6JjcewND11f9bL/IFpp/Xf8AzOfrpLnxGJPCEGmo+JMKjqJJeFBb1baeNvHTnpwMZkeg6lLol1q6Wp+w2cqwzyl1BR26DaTu/IVnVrCrKClFddH+Y02tTU1CXTbg2vkXF2fLRIn32yjCjqwxIcn24+tSXN1pkmuxXkc92Yt4eQNbqGXGMADfznHqMe9Y9FUqzUuZJXvfruJ6qxa1BrZ715LOSWSNyWJljCEEk8YDN+eataXdaellcWupm5WOSWKYNborElA428kYyH684x0NZdFZRfK7oU1zrU6aXV9Lf+2DFfalbtqFyJl2Wy/dBZgrHzR3b3+6D7CjDcaY2hXMN1d3v2y4lWY4tlZdyhwAWMgJzvyTjj0NY9FPm8jJUUlZPt26fI3o7uGb4fT2PmIk9tqK3IRnAMqPGUOB32lV6f38+tM1dVfw3oM0c0DhLeSF0WdDIjefI3zIDuAwwIJGDmsSioau7/1tY2W1jrbiextPFOhalfXWbOO0s5CbIxzyBo4kBUpvG07lIwxB74NI+v6fLqGqw3GravPY6jGc3MlspmjcyK7DyzNgg7ACd4zwccYPJ0Uf194f8D8DsLnxBpGo28+n3N5qdvaqLXyruO1SSabyY2T94hlUD72Vwx2gY560yTX9E1a41VdZ/tCG3ur+O8Q20aPJIFV1KsWYBWYOCX+bnPymuSoo/r+vuQG4ngzxNcxrPZ+GdZe3lG+JlspHDKeQdwXB47jrWpNq+gvpN7HcnVIdTn06CxaP7NGYomhMfUlwx3eUOw25PDVx9FAHU6/q+l6gunw2Or6w1tDbw2k0U1oqKsaYyyqJyGO75tpwM96g11tK1jULJdCu7qSUww2zC/hitUHlxqgbf5rAZ255wB6mudoosG33WOwQxXXxhaeK6tBbpq/nm4kuo0i2LLuLB2YKeBxg89s1yrokksjGZF+Y4znn8hUNFEdAfXzPtXUPtf2uz+yf6vz/APSOn+r8tvX/AGtnTn8M1YrH8SXuqafi4sJLFYlAHlXCs0lzISAsSYICE9Afm5PTjmG61a/j1WUxC3Fha3ENtMjIxlkaTb8ytuAUL5i8ENnB6cVqtQZvUUUUgCiiigDxH9oz/mXP+3r/ANpV53c+Mon8K/2PaW2oxgxQpsn1MzW8TIVZpI4SnyMzKf4iAGYY5r0T9oz/AJlz/t6/9pV5FdWVsnhzT7+ESrNNPPDMHcMpKCNgVGARxJggk9M55wJdxaF/Uta0PUZ5Ll9DuUurqcTXUn9oZHJJcRL5fybif4/MwPzqa88TabP4ll1S20q7iiu45Y7uCS+Vy4dSp2MIhsIzkZDcj04rmKKnYZ09t4k0m21fS5l0m9Njpfz29v8A2gnmNL5m/c8nk4I7bQo4A565i03WtB0/Wbm8/sjUZIpInjii/tKMMm+Nkcs3kfNw2RgDGOc1ztFFgJbloGuZGs45IoCx8tJZA7KOwLBVBPvgfStiy1bRoPDNxptzpd9LcXDpK1xHfoiB0DhMIYScYk5G7nHBFYVFHSweZ1uq+OZ9X0H7Fcz62JTDHEyLq5+yNsAGfs5j7hc4343c+1UNb1rStQSybTdMvLSe0jSINcXyzKyIDj5REhBzjnP4Vg0U763+YW0sbXiHV9N1e4e4sNKezuJ55Li4llujMWZznaoCqFQHOAQW55Y1W0TUotK1EzXFu1zBJDLBLGknlsVkQodrYIBGcgkH6VnUUlpsD1OiXXNEaK4spdEuU013jkiit9QCyq6KVLNI0bBt24kgKoyBjAyDtyeItButBjvNVjF1erqct3HYQXUkLwoRGqqzGFkdcRjOGDYA5ySBwVFPrcVjXvNR0+70eQyWbPrNzevPPdsxVUjIGERQcHLFiSRxgAd6yKKKSVth3uFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPsbVvDv9oa7FqaatfWk0EflxpCIWRM9WAkjbDEHBIwccU+bQ0m1MXZvLlIy6SyWqiPy5XTG12ym7I2r0YD5RxVfxRLewzQmw1VraeT5LazjgRzcy9fnLAnYB127cDJLdMSu97F4ugja83Wc9rKy2wiUBWQx/MW+8T857gYxxnk2gZr0UUUAFFFFAHiP7Rn/Muf9vX/ALSryS41CE+GLLTbZ5t63EtxchlCoWIVUAwTuwFY5IGN5A9T63+0Z/zLn/b1/wC0q8YEaJYmSRcySNiP2A6n+n51DAr0VevrezitoHtZjI7D51OPl784J7EDj09eKgtLdbmVoy7KQjMu1c7iBnHUUgIKK0l05Ibq2iu3ZZJWwybAwHOByGGQfUYqOwtBdi4iCAsqhg+cbAGGT1xjBPX0ougKNFW1htmiujFI7mNQULx4yMgZ4bg8+9VKACir/wDZ8X9nG5+1AsqhiihTjJxj72R+IA96S5trOK5jjS4mw20sXiHyggHPDc9en60XAo0VcltkswHkzIwlZPKkXAYDvkNn/PWpRp8c2o3aB1ghhY9x0zgAbmA/M0XAzqKmuoBb3LRrKsqjBDqQQePYkZ/GrVppiXFsJZblId7FVDMgHHc5YHHPYGi/UDPorQi06KTT2uzcMFjBEgEYO1sjaB83Oc9e1RzW1ssMHkzStLKgO1owFzuI67uOnpRcCnRWheabFaKCbpXw+xwpQke4Ack9O+O1OOnWovRbi9YkZ3HyemBn159/0zRdDsZtFX49PjlnUJMxhaLzPMKKpAzjkFgByPWhLZIL+a1lRJgEYq+TxhSwIwcenqKLiKFFFWVEbaZI3lKJEkUCQE5IIbg847DtQBWoqzJFCLKCRGJLOyuSmCMAdPmwRz6CpriygtnzFMZxHKqSK8ewHIJ7H2PpQBQorSu9OigvxA8vks8h+UgYRMnHJbrjHBx15NV7+0SzljWObzQ6bs4HHJHYkHp2NCaYFWirumwWs8rreTeSoU7WOMZPA7juQf58c1HBFF5sskgLQxAnBP3j0Ucf07A0XArUUUUwCiiigAooooA+ytT8N6dqOrf2hcC6S6EQh823vZoDsznb+7cDGTmln0CxudVj1GVrz7TFjYUvpkQDjjYHC4O0ZGMHHOaoeKI1udRhtbW9vl1N0/0eG1nZEh55nkC4BUej5BxgDJOW38a3PimGOxvb572J43mWOdhBbRDkq6DCkuMgBgW5yMBeLXQGdHRRRQAUUUUAeI/tGf8AMuf9vX/tKvFJpmmKbgAEUIoHQAf5J/Gva/2jP+Zc/wC3r/2lXjJVYbAblBknOVJH3UHcfU/y96hgVqkgmkt5llhba6HIOM4q1fNYNbQfY1YSgYkycj19BnrjPt+JisLeO5utkz7ECsxPPOBnsD/I0gBL+4SZJQ6s6KFUuitgA5HUfrSpqNzFK0kTRo7EElYlHQ5HGP8A9dWUs7Ga8MUErOjRFg4Y4jYf3iVGV98DrStb2UM16j29wwhA25lAP3gM/d7549qWgyrHqE8W/YIR5h+YGBDn25HTgcVWJyc1pxWNmsG++le3ZpGUKxbKYx1AQ5PPT5agjishYCWYT+YXKZRht6Zzgj36d/UUaARyX1xLB5Tsm3aFJEahiB0BYDJ6Dv2oa9lkjWKZt0QK7goCswHAy2MnjpnNTzWtr9nPkLMJVhSUl3BU5IGMYHr1p19ZQ2sCywPudJPLkUneNwGe6gfhz9aegiC5vvNuY5Yk2iOMIqy7ZOn1XB/KkbUbhpzMTHvYYb9ymGGc8jGDz60X5BuVYKq7okYhFCjJUE8Dik05tuowAqjB3VSHQMCCRngil0BkMsjTSF3CgnsiBR+Q4qSG8mgjMaeWyZziSJXAPtuBxUlmsTTypIrEmNypBGAQpPIIOentUtnbWs1vF5wm82WbygVcBRwOcY9+maB9SJNSuo4ljR0CKjIB5Snhuvb2pgvZxbeQHATG3hRuxnON2M4z2zVuK3ifSFuJ1ysTMpEZCu2duMnB4GTyfUCmmztBpjyB5PtCIrlSSMZIHIK9ORyGP0o0AryX00pUyCJiG3bjCmSfc4yfxpTqNw1yJyYvMAIyIUGc9cjGDTLOOOW8ijn3bHYKdrYPPvg1auLGKxhja5Vnd3PCSADaByOV4IPFPQRANQuFCAGPCJsAMKEYznBGOeeeaX+07r7Q85MRkcYZmhQ8Yx3HpUyAQ+IPLVUZDPsIeNSCN2OmMfkKhsm/0iSMojK0cmdyA4wpIxkcfhSGVncyOXYAEnJ2qAPyHAqZL2aO2MCiLyz1zChJ69yM9zVetIxW81lAGRlnMDsGTaF+UseRjJPGM59OtNiKxvpjbrARF5a9B5CZ7c5xnsKV9RuH3bzGd7h2/cpyR07f5yfWrD2NvHYeaWYyxhGkQPnhu33cA49z9KeNPtWmVP3qLPIogYuD8pAJJAXk8gfU+1K6AqnU7ppEdnQsm4AmJTw2cg8cjk8H1qGe4kuHDSlcgbQFUKAPYAYqa+is4whs5t5OQ65LY9Dkov8ALtUVtOtvIztEkuUZQHAIBIwD+HWmhkNSec32YQAALu3kjqTjAz9OfzNW4DFfa0reSkcbNu8pRxgDOPxx+tPtrWyktRPez+UZHYDbkBcY7BDnr0yKLiM2itOGxtn0xrllmLIrZUOBvIIwyjb90Z5pk0Fu1vAILeZZGiDvIZNyqNxBJG3+tFwM+itK+tbC2O2KZnkjk2vHuOWHc8oAp/Pr7U42unjUfs4Fzhd247l5wM8ce34+1K47GXRWjHaWryrIS6W5h8xt8nK/MV6hTnkf3e9Vr63W1vZIUYsqngnrgjNO4j7H1Pw/o2qXfn6npNjeTKoUSXFskjAemSCccmmS+HtFm1AX82kWEl4GDC4e2QyBhjB3YzkYGPpXP+Nrvw8+swadqcllHqMkQZLi8nWMWce7mRCx4kyONvJIGSAM0mvtpTeLLB457Y6pHcwgwOrG5ZCRgwknCpgsX2qQwDAkEGtF09QfX0OyooooAKKKKAPEf2jP+Zc/7ev/AGlXickrysDIckKFHsAMCvbP2jP+Zc/7ev8A2lXKan4PtI/h29/b6Vc/arW3t7hr+K2lEMwkxuAkaVlcDdztjQKR1PeJaagt7HndOR3jcPGxRlOQynBBrf0vw20Ot6APEcbW2m6q6ukiyITJFu2k/e+XnjnGOtdc3hexl8WaJa23grU8zvItzaXlnPZRSxgD51YzyNlckn5sH5Rj1LCuecNfXbszPdTMWXYxMhOV9PpSfbbrz/O+0zebjbv8w7sema9FfQ7LTPFMFnaeGbbULW60Z5LGWdLgHUX8ksJFTzMqxYY2DkdRyQai0Pw1ZPPqZ1jw1PJqEckJGkWFvLdG3idCSxRblJFOQAdzHaTggZGC39fO39fiN6Hn8V5dQFjDczRlzltjkbj70C8uhB5AuZRERjy952/lXdaZoEH2DXrmHwTf6rFZXoS2+0JcRyIvzbklEbY+QAEgYIJBJx8tPtvDtvqHh+wS08ITebe6feXK3qNcPIDFuMeBnYc4RSduDvGApxmelx9Tgje3TKVa5mKsuwgyHBX0+nNK1/eOFD3U7BSCoMhOCOld5qXg+0T4dvf2+lXP2q2gt5zfxW0ohmEmNwEjSsrgbudsaBSMZPfM8Zab4jGiaFfa/ZaoClo0MlxexSfKfPlKoWYcHbjA9Mdqb0dhLVXOUmu7i5AFxcSyhenmOWx+dNhnmt3L28rxMRjcjFTj8K1PCunrqnia0tXsZtQQlne2gGXkVVLEAblLcDO0MCegIJFd1P4d0r+1rq2sfB7z3KaMt3HYSm4gl87z9nMXmsy5U52b2JAUqV3U7WsFzzVdQvFkaRbucO+NzCQ5bHTJzQL+7ByLqcHcX4kP3j3+tekaN4Q0241qcXWgzO+y1WbS4oJ55LKSTcWJAmjKIAoO6Rm27wCDyaj03whBGY9PufCc9282uS6d9sk+0LIkQGdwCsE3AZbJXGFOQey2/rzS/UL3/ryv+h50L26UELczDII4kPQnJ/Oke7uZIBDJcStEuMIzkqMdOKZLFJbzPDPG0UsbFXR1IZWBwQQehrcuXeL4e6fFHOzRT6jcSSxoxChlSIKGHdgCSDggB+udwAPrYwQSpBBII5BFSC6uFkEizyBwSQwc5BPU596iopiLH9oXnm+b9rn8zG3f5hzj0zmhdQvFkaRbucO+NzCQ5bHTJzVeikA53eRy8jF2Y5LMckmpVvbpAoS5mUKpVcSEYHoPbioKKAJ/tl0YPJNzN5WMbPMO3Hpioi7kLlmOzheenOeKbRQBNPdXFzt+0zyzbenmOWx+dQ0UUAPhlaCdJYzhkYMM1JFeXEBb7NNJAHOSsTlR/OoKKAJ1vbpFVVuZlCgqAJDwD1FM+0TeR5HnSeTnPl7jtz9KjooAnN9dsqK11MVjIKAyHCkdMelKb+8aVZGu5zIowHMhyB9c1XooAnF9dqyFbqYFBtQiQ/KPQegpks0sz75pHkbGNzsSajopgfat/qlhp9zDFf31tbSXDbYUmmVDKeOFBPJ5HT1FPkuYIZooppo45JyViRnAMhAyQo78Anj0rnfFd5EdT/s19NuTFdQBbu+j0+WceTk/ulMaH5jz1wFznk8VX1ldTj8baVcGzW4tTcKkUiGVmgQxsHLBYiq5Zl5LjO1emGIta2B9Tr6KKKACiiigDxH9oz/mXP8At6/9pV4hXt/7Rn/Muf8Ab1/7SrxCoe4BRRRQAUV1ngYb11tUg0qSZbASQNqiRGOOQSxqDukG1ThmABIUkjdkVrEQLLctpUXh061tt/tIuHtDaj5WMnk+YfJyT5e7b0JO3AzRb+v6/EV/6/r8Dz2pVtp2tXuVhkMCOEeUKdqsQSAT0BIBwPY16Z4dOg2up38otdDn099QZS1zd22YY1UZIinVneLLHb5TK52kE5xXM2tjLfeAbnc2io63KTW4a5tIrnYBL5g5YSkZ2YU9eNopX/QpHKVLLbTwRxPPDJGkyb4mdSBIuSMrnqMgjI7g12Gr3c+q+DdPcXehR29vYrHInk2yXRlWZ8IoVPNHylWzwh5JOScy32n25vPDd1rL6GYVCw362N1aAE+c+C6QNnGzZlgOnfNPrbzJ6XOFq/pus3mlQ3cVn9n2XkYimE1rFNuUHOBvU7eQDxjkA9hXd2DR/wBq6e+sQ+FjfbrnKRvY/Z2h8rKCTYfLB8zhTw/XJxissqsniXw1ekeG1nuoA1wk7QizEgdwPOjiOEGzy8jA5980LXQb0VziaKnvP+P+f/U/6xv9R/q+v8P+z6e1d34Ct9Gl0ZotT/s6U3M0kc5vLq0gMCeWNpBlUyNkk/6spgjk9wk7xuD0djg7izubTyvtdvLB50Yli81CvmIejLnqDg8jipP7Ruf7K/s0shtRN54UxqWVyApIbG4AgDIBwcDjgV30KW0fhvRYbyTw9LZxWMy6juuLeS6XMkrIEO4uDhlKiPuTv4qOd9Kt/h6YLm10fzDbW5S4t7q1mmdmdGcBAgnRwpbcXZlG0gDlcPd2Xf8AUSPPoopJpUihRpJHYKiIMliegA7mpb6wvNMvHtNStJ7S5TG+G4jMbrkZGVPI4INdl4igguLK4g2aBGrXkcektYTWyuIjuB81kbcF27CWm+YHHI+anT2Udv4msxd3OjzQXWlLZ7jeW1wiSi0CDJDN5eJAuHOOmQcZqb+RS/r7zg6K9Htpv7I1fTlS58OtcXGiT20rxi0eITjzdqucbFbBjUueG5+Zhk0aG1haz6mL+LRNS1dpIXIiubG3t1jKHcqGaFoSQ20NsGT2JG6qtr/Xe3/B9CbnnFFddHH5Vn4qv7bT9Hhsd4t1ju3+0vCzsxVbaRBtZgFPzdNozXI0rlBRRRTEFFFFABRRRQAUUUUAFFFFABRRRQB9narr2naTdLFfTOjsu87IXkEa5xucqCEXP8TYHB54NI+t2Sav/Zv+kPcjbuEdpK6Ju6bpApVencis/wASy6rNqUdlBpF1daWyBrmW2kg3SnP+qxJIu1SOp5yDgY61DqGn3UniRbiz068hmeSEm+iv8QGNSNwkh3jLY3KPkbqDuHa10BnTUUUUAFFFFAHiP7Rn/Muf9vX/ALSrxCvb/wBoz/mXP+3r/wBpV4hUPcAooooA2fDja5Nevp/h3UJLSW8XY8a3y2qzjoFJZlDH5sBepzwKx2BVip4IODWx4TNpH4osLrUNQgsILWeOdpJ0kYMFdSVAjRjnGeoA4610/hfXbLw2NTtbTV9MFxLNHLHqDtfxRyIA2Y8whJAQSDhl2nn0FHUO/wDX9dDjtL0W81hpvsQgCwKGkkuLmOBFBOB80jKMk9s5qtNazQLuljIQuyLIPmRmXG4Kw4bGR0PcetdxpuvvHZ+IVtfFtrocl7diSKGzN5HEcNlmQLGSqsCAAcHjBAGKp2WvPceB4dLuPFl3p0Vs1wJLJTM/2hGVNiKq/IRuDAhmUDcSM9KXS4dbHG0Vu3d/5ngjT7H+2fO8q6lf+zPsu3yMgfvPN/i3enbFYsTrHKrtGsqqclHzhvY4IP5Gn1sHQfa20t5dJb26hpZDhQWCj8zwKmGl3TXn2VBDJJt3kpOjIoHUlwdoH1NWLfUITqFvJDDbaWYyT50SSSjOONyuzZH0HfoelWZbmzkuHh+02qGa08qS5igaOIvvDA7VQHoAOFHP51vGnDlvfW/ddvv+/QpJGfFpN7LdS26RqHh++WlVVGenzE7ecjHPPakg0q8uVlMUP+qba291U7uflAJG5uDwMmr7z2l0bm1a9ihTEAWd1cq/loVPAUnnORkDpUsV/aT3ZuZLlLfyb97pUZXJlU7TgYUjPy98dar2dPTXv1Xf+vXoFkc/RXXtcXNvoemS3t48Vo1u4a1kikxcDc20A4KnjGMkbRgiobzVIJfDf2NdX33Kwxh3xJ++UFv3ONuBtzncevT6OWHjFO8tV6f5/wBetkzlOWorofFF3K9ro2nvrKamllZJtWOFFS1L/MYg6n94RkZJ6HI7Vz1cpIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2ZrWtrpMpL2F7cRInmzTQRqUgQdWYswz3OF3NgdOmVudW8nUksbeyuryUgNKYAgWBScBmLso7HgZOAeKo+ILPXLzWIBZw2U+mRKHeCW7eBpZQcjcVjfKDg7eMnrkcVU1LwvLc+Jv7Tht7WVpWgP2iaVlltPLbLeUAhB3Dg8rnvkcC10BnU0UUUAFFFFAHiP7Rn/ADLn/b1/7SrxCvb/ANoz/mXP+3r/ANpV4hUPcAooooAswafe3VpcXVtaTzW9qAZ5o4iyRAnA3EDC57Zq9b+F9Zm3s+m3kEaWpuzJJaSlfKwSG+VThW2kBj8vqQMmp/CuuWeiXN42o2n2yGa3KpCyK6mVWV49wbgruXB68E8VqjxB4fuvFM+oXBvrCyS0a1tLa2tEl2q8LRtnMq7cM5YYznPak/IF5mHoHhnU/El2sWnW0pi8xY5LowyNDAW6b2RW2g+uKU+E9fGjjVl0e9fTiHP2pIGaMBfvMSBwvueOD6Gt7w/4i0LS7vSpLi91dE0a+e4gFtap/pKMVPz5mHlsdu0435GB2rNF/wCH59G+yXz6kWtLi5ltlhhjUTiRUCb2Lny8FASAHyDgEdaGC8/63KereGNT0iBLqW3kmsJEjaO/ihk8h96BwA7KOcHkeoNZ1xY3dpFBLdWs0Mdwm+F5IyolXONyk9RnuK6m+1/R7m0volvdUcSaRbWNuklqgUPEyMc/vTtXMfBGT+8bjj5sTV760u9P0qK1utTmkt7cpMl7IGjibcTthA6Jjse+aAX6f5GWqs7hUBZmOAB3NaEmizRai9pLPAvlRiWSYsdiKQDnOMnqBwDz0zVaxu2sL2O5SNJGjOQr5x0x2IP5GtW71PTZ9QfyllgtZbRLdykPzKVxyFaQ5Hygfe6e/J3hGDjd73/T/Mat1KaaPIbmaOW5t4Y4duZ3LbG3crjAJORz06dcUQaLPMZFeWGF0lMKpIxzJIOqrgHnpycDkc1Ob6xuHnguHuI7ZhCI3SJWc+Wu0ZUsAMgk9TinxatayXDXF35yPHdtdRLHGGDE4+ViWGPujkZ71fLT0+fXz/y27j0M46Zfi2NybK5EAUOZfKbaFPQ5xjFD6ZfxxNK9jcrGqCRnMTABT0YnHQ+tbZube103TLma6kaaGGQLBE8bqSzMcMA+5MgjPynI4qG61XTZtAGno12XjRCkrRLlnBbKsd33Bn5R2OacqVOKeuq/r+v+CgsjIuLC8tIIJrq0ngiuV3wSSRlVlXplSfvD3FV62fEF3aSpp1rYahfX0VraIrtcyExpIw3OsSkAqgJx7kE9MVjVykhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfZOv6pfaWWmtdNS5tok8yeR7kRnGfuxrtO9/Y7R0GeeIrvVNVtdVji/sy2azluEgSY3hEr5UFmEYjIwPm6sD8pPpTdc0TU9Q1u3u7bUrWO3tlBS0ubNpk83OfM+WVMkcYzkDGRzzWjNZefqFpcvJ8tsHIjC9XYABs+w3DH+17VaBlqiiigAooooA8R/aM/5lz/t6/8AaVeP3Onxw6HY6hFOzm5lmhkjaPb5bR7DwcncCJF5wOcjHc+wftGf8y5/29f+0q8nurqAeEtPsYp45ZjdTXEyBDmIFUVBuI4J2sSFJBG3PIAEsRkUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2/J/rDTaKKsAooooAKKKKAPEf2jP+Zc/wC3r/2lXiFFFQ9wCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q==]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAOZ/AKyqqZiXlkh1j/Hx8RuL0CV6q4e83D3a/zNVasLi9S22/DaLuy2MwklRVpLG5dXV1Dp2jja2+oWHib7d8Onz+sbFxGqt1DTD/v3+/juRwkiBopXC3MvKykKay2JxeTWUyd/f31Om1ySU2WKNpnm111yEm+Pv9Sus/MTc6neCiPr6+ht5rySKxSSc57za7EOWxSSEvHG656vQ5lyy5BiS3TSb2fX297LT5qDK4jqWysri7yug6VSIprri+k6j1D6azd3s9r27upDN9CuRzfb6/CGh8EiLsS6FtiN/s9bp9FhgZNzu+imEuDlGTiau+mSo0SyJvk6q37azsnSHka+urVGdyO7u7kOczrDW7Cmk8z6AjPn7/CSHwEOk2jBge0ag0s/p+06ezf/79I+QkKvY9FOOsTKSx////ByDwCRqkyV0ojpngPjy7yiJwebm5sG/vkii2T6k4nx9flqw4nfE9rvY6T6Gr87l9KGfnyyOx2+Ej196iaWko0e29////////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkRCMzA3NzIxOUE3MTFFMTgyMjFDMzU0MzJGQzVDRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkRCMzA3NzMxOUE3MTFFMTgyMjFDMzU0MzJGQzVDRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyREIzMDc3MDE5QTcxMUUxODIyMUMzNTQzMkZDNUNFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyREIzMDc3MTE5QTcxMUUxODIyMUMzNTQzMkZDNUNFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAH8ALAAAAAAgACAAAAf/gH+Cg4SFhoeIiYqLjI2Oj5CRkpOOVhVUfHxUb26UghgcAVMjpCNTAW82lBUSPCFzMzNzIWUpUiqSDxJGUSE+vz4hUS8pFZE2eBpdVz8fOT9X0V1GY1aLGG4cUtspZjnOBgYdH+TkexwquIcDQWN6JTwlGkMMXBtibFVcDPxDAgFUALwBUcgKgBRGrnxZeOVFmxcDBjxpww8KFAYLNGiINybIAEEqpKTIcKXDi5MdxtU5g2JfPS5tcsh89sNOCgCqQEjQkCODzwwy82ywcaZOHhZmcKAgkecJChkvFuSw+UZFkD0Lsmb1mSeEiRtnsBAY4mKLHx0+KJjwY4HJAjP//9zgEQDlyBEmTLigyXPHAQk/JmrEwOAgiQEsFAxgqILEbgE5HMasYYJkwY0bJCxg8TMhiZ8lNRL4iVIDDhEbOp68wHEESQEPQQJ4YbJigx8gLohwRuyHjBA/GGbEueMnSY4wJjascK0kCBUESFag8CPDwBYHNGiI/gzGDwUiEyhgALJlAxIkTNQo4fBASZoVJDAAlyGiRREhFHpE6NMDDJ0WMdwxwRNowIAEF17I4YYKeDRRAAwW4GBBfVmccEIETiiggBMcnlBECyIQwAIMXKjRwBuCDCCBgwQQQEMLFWqowAU0XiDjCVmAKMIQajQRgDp/2BBAE17AsMMJM15wwDGSTC5JowIn7NCGF03wAeQgHMjRAAJeQOClFmCGCaaXEHiBQAOQeaLmmmy26eabcAYCADs=]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/functions.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[alF1ZXJ5KGZ1bmN0aW9uKCkgewoJalF1ZXJ5KCIucGFnZW1jb250YWluZXIsLnBhZ2VlcnJvcmNvbnRhaW5lciIpLmVhY2goZnVuY3Rpb24oKSB7CgkJdmFyIGMgPSBqUXVlcnkodGhpcyk7CgkJd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCWMuaGlkZSgpOwoJCX0sIDkwMDApOwoJfSk7Cn0pOwo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddPSJBY2VFZGl0b3IiOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gIkFjZUVkaXRvciBpcyBhIFN5bnRheGhpZ2hsaWdodGVyIG1vZHVsZSB1c2luZyA8c3Ryb25nPkFjZTwvc3Ryb25nPiBhIHN0YW5kYWxvbmUgY29kZSBlZGl0b3Igd3JpdHRlbiBpbiBKYXZhU2NyaXB0LiI7CgoKLyogLS0tIFRhYnMgLS0tICovCiRsYW5nWydzZXR0aW5nc190YWInXSA9ICJQcmVmZXJlbmNlcyI7CiRsYW5nWydmcm9udGVuZHNldHRpbmdzX3RhYiddID0gIkZyb250ZW5kIFByZWZlcmVuY2VzIjsKJGxhbmdbJ2Zyb250ZW5kX2hlYWRfc2V0dGluZ3MnXSA9ICJGcm9udGVuZCBIZWFkIFByZWZlcmVuY2VzIjsKJGxhbmdbJ2Zyb250ZW5kX3N5bnRheGFyZWFfc2V0dGluZ3MnXSA9ICJGcm9udGVuZCBTeW50YXhhcmVhIFByZWZlcmVuY2VzIjsKJGxhbmdbJ2hlYWRfZGVzY3JpcHRpb24nXSA9ICJUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBBY2Ugc2NyaXB0cyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBwYWdlIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSdoZWFkJ308L2NvZGU+IGZyb20gUGFnZSBTcGVjaWZpYyBNZXRhZGF0YSBvciBUZW1wbGF0ZS4iOwokbGFuZ1snY29udGVudF9kZXNjcmlwdGlvbiddID0gIlRoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIFN5bnRheGhpZ2hsaWdodGluZyBhcmVhIHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGRpdmlkPSdlZGl0b3InfTwvY29kZT4gdGFnIHdpdGhpbiBhIFBhZ2UuIjsKJGxhbmdbJ3N5bnRheGFyZWFkZXNjcmlwdGlvbiddID0gIlRoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIEFjZSBiZWhhdmlvciB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0nZm9vJ308L2NvZGU+IGZyb20gYSBQYWdlIG9yIFRlbXBsYXRlIjsKCi8qIC0tLSBTZXR0aW5ncyBsYWJlbHMgLS0tICovCiRsYW5nWydleGFtcGxlX2RvY3VtZW50J10gPSAiRG9jdW1lbnQiOwokbGFuZ1snd2lkdGhfdGl0bGUnXSA9ICJFZGl0b3Igd2lkdGggKGluIGVtKSI7CiRsYW5nWydoZWlnaHRfdGl0bGUnXSA9ICJFZGl0b3IgaGVpZ2h0IChpbiBlbSkiOwokbGFuZ1snZW5hYmxlX2llJ10gPSAiRW5hYmxlIEludGVybmV0IEV4cGxvcmVyIjsKJGxhbmdbJ2VuYWJsZV9pZWRlc2NyaXB0aW9uJ10gPSAiQWNlIFN5bnRheGhpZ2hsaWdodGVyIGRvZXMgbm90IGJlaGF2ZSBwcm9wZXJseSB3aGVuIHVzaW5nIEludGVybmV0IEV4cGxvcmVyLiBFbmFibGUgdGhpcyBhdCB5b3VyIG93biByaXNrISI7CiRsYW5nWydmcm9udGVuZF93aWR0aF90aXRsZSddID0gIkZyb250ZW5kIFN5bnRheGFyZWEgd2lkdGggKGluIHB4KSI7CiRsYW5nWydmcm9udGVuZF9oZWlnaHRfdGl0bGUnXSA9ICJGcm9udGVuZCBTeW50YXhhcmVhIGhlaWdodCAoaW4gcHgpIjsKJGxhbmdbJ3N5bnRheF9tb2RlJ10gPSAiTW9kZSI7CiRsYW5nWyd0aGVtZXMnXSA9ICJUaGVtZSI7CiRsYW5nWydmb250X3NpemUnXSA9ICJGb250IFNpemUiOwokbGFuZ1snZnVsbF9saW5lJ10gPSAiRnVsbCBMaW5lIFNlbGVjdGlvbiI7CiRsYW5nWydoaWdobGlnaHRfYWN0aXZlJ10gPSAiSGlnaGxpZ2h0IEFjdGl2ZSBMaW5lIjsKJGxhbmdbJ3Nob3dfaW52aXNpYmxlcyddID0gIlNob3cgSW52aXNpYmxlcyI7CiRsYW5nWydwZXJzaXN0ZW50X2hzY3JvbGwnXSA9ICJQZXJzaXRlbnQgSFNjcm9sbCI7CiRsYW5nWydrZXlfYmluZGluZyddID0gIktleSBCaW5kaW5nIjsKJGxhbmdbJ3NvZnRfd3JhcCddID0gIlNvZnQgV3JhcCI7CiRsYW5nWydzaG93X2d1dHRlciddID0gIlNob3cgR3V0dGVyIjsKJGxhbmdbJ3ByaW50X21hcmdpbiddID0gIlNob3cgUHJpbnQgTWFyZ2luIjsKJGxhbmdbJ3NvZnRfdGFiJ10gPSAiVXNlIFNvZnQgVGFiIjsKJGxhbmdbJ2hpZ2hsaWdodF9zZWxlY3RlZCddID0gIkhpZ2hsaWdodCBzZWxlY3RlZCB3b3JkIjsKJGxhbmdbJ2VuYWJsZV9iZWhhdmlvcnMnXSA9ICJFbmFibGUgQmVoYXZpb3JzIjsKJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gIlByZXZpZXciOwoKLyogLS0tIFNlbGVjdCBvcHRpb25zIC0tLSAqLwoKLyogbGFuZ3VhZ2VzICovCiRsYW5nWydqcyddID0gIkphdmFTY3JpcHQiOwokbGFuZ1sncGxhaW4nXSA9ICJQbGFpbiBUZXh0IjsKJGxhbmdbJ3N2ZyddID0gIlNWRyI7CiRsYW5nWydodG1sJ10gPSAiSFRNTCI7CiRsYW5nWydjc3MnXSA9ICJDU1MiOwokbGFuZ1snc2NzcyddID0gIlNDU1MiOwokbGFuZ1snY29mZmVlJ10gPSAiQ29mZmVlU2NyaXB0IjsKJGxhbmdbJ2pzb24nXSA9ICJKU09OIjsKJGxhbmdbJ3B5dGhvbiddID0gIlB5dGhvbiI7CiRsYW5nWydydWJ5J10gPSAiUnVieSI7CiRsYW5nWydwZXJsJ10gPSAiUGVybCI7CiRsYW5nWydwaHAnXSA9ICJQSFAiOwokbGFuZ1snamF2YSddID0gIkphdmEiOwokbGFuZ1snY3NoYXJwJ10gPSAiQyMiOwokbGFuZ1snY19jcHAnXSA9ICJDKysiOwokbGFuZ1snY2xvanVyZSddID0gIkNsb2p1cmUiOwokbGFuZ1snY29sZGZ1c2lvbiddID0gIkNvbGRmdXNpb24iOwokbGFuZ1snaGF4ZSddID0gIkhheGUiOwokbGFuZ1snbGF0ZXgnXSA9ICJMYXRleCI7CiRsYW5nWydsdWEnXSA9ICJMdWEiOwokbGFuZ1snbWFya2Rvd24nXSA9ICJNYXJrZG93biI7CiRsYW5nWydwb3dlcnNoZWxsJ10gPSAiUG93ZXJTaGVsbCI7CiRsYW5nWydzcWwnXSA9ICJTUUwiOwokbGFuZ1sncGdzcWwnXSA9ICJwZ1NRTCI7CiRsYW5nWydvY2FtbCddID0gIk9DYW1sIjsKJGxhbmdbJ3RleHRpbGUnXSA9ICJUZXh0aWxlIjsKJGxhbmdbJ2dyb292eSddID0gIkdyb292eSI7CiRsYW5nWydzY2FsYSddID0gIlNjYWxhIjsKCi8qIHRoZW1lcyAqLwokbGFuZ1snY2xvdWRzJ10gPSAiQ2xvdWRzIjsgCiRsYW5nWydjaHJvbWUnXSA9ICJDaHJvbWUiOyAKJGxhbmdbJ2Nsb3Vkc19taWRuaWdodCddID0gIkNsb3VkcyBNaWRuaWdodCI7IAokbGFuZ1snY29iYWx0J10gPSAiQ29iYWx0IjsgCiRsYW5nWydjcmltc29uX2VkaXRvciddID0gIkNyaW1zb24gRWRpdG9yIjsKJGxhbmdbJ2Rhd24nXSA9ICJEYXduIjsKJGxhbmdbJ2RyZWFtd2VhdmVyJ10gPSAiRHJlYW13ZWF2ZXIiOyAKJGxhbmdbJ2VjbGlwc2UnXSA9ICJFY2xpcHNlIjsKJGxhbmdbJ2lkbGVfZmluZ2VycyddID0gImlkbGVGaW5nZXJzIjsKJGxhbmdbJ2tyX3RoZW1lJ10gPSAia3JUaGVtZSI7CiRsYW5nWydtZXJiaXZvcmUnXSA9ICJNZXJiaXZvcmUiOwokbGFuZ1snbWVyYml2b3JlX3NvZnQnXSA9ICJNZXJiaXZvcmUgU29mdCI7CiRsYW5nWydtb25vX2luZHVzdHJpYWwnXSA9ICJNb25vIEluZHVzdHJpYWwiOwokbGFuZ1snbW9ub2thaSddID0gIk1vbm9rYWkiOwokbGFuZ1sncGFzdGVsX29uX2RhcmsnXSA9ICJQYXN0ZWwgb24gZGFyayI7CiRsYW5nWydzb2xhcml6ZWRfZGFyayddID0gIlNvbGFyaXplZCBEYXJrIjsKJGxhbmdbJ3NvbGFyaXplZF9saWdodCddID0gIlNvbGFyaXplZCBMaWdodCI7CiRsYW5nWyd0ZXh0bWF0ZSddID0gIlRleHRNYXRlIjsKJGxhbmdbJ3RvbW9ycm93J10gPSAiVG9tb3Jyb3ciOwokbGFuZ1sndG9tb3Jyb3dfbmlnaHQnXSA9ICJUb21vcnJvdyBOaWdodCI7CiRsYW5nWyd0b21vcnJvd19uaWdodF9icmlnaHQnXSA9ICJUb21vcnJvdyBOaWdodCBCcmlnaHQiOwokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfYmx1ZSddID0gIlRvbW9ycm93IE5pZ2h0IEJsdWUiOwokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMnXSA9ICJUb21vcnJvdyBOaWdodCBFaWdodGllcyI7CiRsYW5nWyd0d2lsaWdodCddID0gIlR3aWxpZ2h0IjsKJGxhbmdbJ3ZpYnJhbnRfaW5rJ10gPSAiVmlicmFudCBJbmsiOwoKLyoga2V5IGJpbmRpbmcgKi8KJGxhbmdbJ2FjZSddID0gIkFjZSI7IAokbGFuZ1sndmltJ10gPSAiVmltIjsgCiRsYW5nWydjb2JhbHQnXSA9ICJDb2JhbHQiOyAKJGxhbmdbJ2VtYWNzJ10gPSAiRU1hY3MiOwokbGFuZ1snY3VzdG9tJ10gPSAiQ3VzdG9tIjsKCi8qIFNvZnQgd3JhcCAqLwokbGFuZ1snb2ZmJ10gPSAiT2ZmIjsgCiRsYW5nWyc0MCddID0gIjQwIENoYXJzIjsgCiRsYW5nWyc4MCddID0gIjgwIENoYXJzIjsgCiRsYW5nWycxMDAnXSA9ICIxMDAgQ2hhcnMiOyAKJGxhbmdbJzE0MCddID0gIjE0MCBDaGFycyI7IAoKLyogLS0tIENvbW1vbiAtLS0gKi8KJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gIlNhdmUgUHJlZmVyZW5jZXMiOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gIllvdXIgQWNlRWRpdG9yIHNldHRpbmdzIGhhdmUgYmVlbiBzYXZlZCI7CiRsYW5nWydmcm9udGVuZHNldHRpbmdzc2F2ZWQnXSA9ICJZb3VyIEFjZUVkaXRvciBGcm9udGVuZCBzZXR0aW5ncyBoYXZlIGJlZW4gc2F2ZWQiOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICJBY2VFZGl0b3IgU3VjY2Vzc2Z1bGx5IEluc3RhbGxlZCEgU2V0IFwiTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXNcIiwgXCJNb2RpZnkgVGVtcGxhdGVzXCIgb3IgXCJBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlXCIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISBJZiB5b3UncmUgc3VyZmluZyB3aXRoIFNhZmFyaSwgc2V0IHRoZSBvcHRpb24gXCJVc2UgdW5jb21wcmVzc2VkXCIuIjsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICJBY2VFZGl0b3IgU3VjY2Vzc2Z1bGx5IFVuaW5zdGFsbGVkIjsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICJSZWFsbHk/IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgQWNlRWRpdG9yPyBUaGluayBhZ2FpbiEiOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICJNaXNzaW5nIFBlcm1pc3Npb24hLiBTZXQgXCJNb2RpZnkgVGVtcGxhdGVzXCIgb3IgXCJBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlXCIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlLiI7CgovKiAtLS0gSGVscCAtLS0gKi8KJGxhbmdbJ2hlbHBfcGFyYW1fYWN0aW9uJ10gPSAiaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFjdGlvbiBvZiBNb2R1bGUgdGFnLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICdkZWZhdWx0JyBhbmQgJ2hlYWQnLiBCb3RoIGFyZSBuZWVkZWQgZm9yIGNvcnJlY3QgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nIGZ1bmN0aW9uLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOgo8dWw+Cgk8bGk+aGVhZDwvbGk+Cgk8bGk+ZGVmYXVsdDwvbGk+CjwvdWw+IjsKJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZXMnXSA9ICJpcyB1c2VkIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249J2hlYWQnfTwvY29kZT4uIFlvdSBjYW4gaW5jbHVkZSBtdWx0aXBsZSBjb21tYSBzZXBhcmF0ZWQgJ21vZGVzJyB0aGF0IHlvdSB3aWxsIGJlIHVzaW5nIG9uIHlvdXIgd2Vic2l0ZS4gVGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4geW91ciAmbHQ7aGVhZCZndDsgb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToKPHVsPgoJPGxpPmphdmFzY3JpcHQ8L2xpPiAKCTxsaT5wbGFpbjwvbGk+IAoJPGxpPnN2ZzwvbGk+IAoJPGxpPmh0bWw8L2xpPgoJPGxpPmNzczwvbGk+Cgk8bGk+c2NzczwvbGk+Cgk8bGk+Y29mZmVlPC9saT4KCTxsaT5qc29uPC9saT4KCTxsaT5weXRob248L2xpPgoJPGxpPnJ1Ynk8L2xpPgoJPGxpPnBlcmw8L2xpPgoJPGxpPnBocDwvbGk+Cgk8bGk+amF2YTwvbGk+Cgk8bGk+Y3NoYXJwPC9saT4KCTxsaT5jX2NwcDwvbGk+Cgk8bGk+Y2xvanVyZTwvbGk+Cgk8bGk+b2NhbWw8L2xpPgoJPGxpPnRleHRpbGU8L2xpPgoJPGxpPmdyb292eTwvbGk+Cgk8bGk+c2NhbGE8L2xpPgo8L3VsPiI7CiRsYW5nWydoZWxwX3BhcmFtX3RoZW1lcyddID0gImlzIHVzZWQgd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAndGhlbWVzJyB0aGF0IHlvdSB3aWxsIGJlIHVzaW5nIG9uIHlvdXIgd2Vic2l0ZS4gVGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4geW91ciAmbHQ7aGVhZCZndDsgb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToKPHVsPgoJPGxpPmNsb3VkczwvbGk+IAoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IAoJPGxpPmNvYmFsdDwvbGk+IAoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4KCTxsaT5kYXduPC9saT4KCTxsaT5lY2xpcHNlPC9saT4KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPgoJPGxpPmtyX3RoZW1lPC9saT4KCTxsaT5tZXJiaXZvcmU8L2xpPgoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPgoJPGxpPm1vbm9rYWk8L2xpPgoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+Cgk8bGk+c29sYXJpemVkX2xpZ2h0PC9saT4KCTxsaT50ZXh0bWF0ZTwvbGk+Cgk8bGk+dHdpbGlnaHQ8L2xpPgoJPGxpPnZpYnJhbnRfaW5rPC9saT4KPC91bD4iOwokbGFuZ1snaGVscF9wYXJhbV9tb2RlJ10gPSAiaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249J2RlZmF1bHQnfTwvY29kZT4gbW9kdWxlIHRhZy4gVGhpcyBzcGVjaWZpZXMgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kZSBmb3Igc3BlY2lmaWMgY29kZSBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOgo8dWw+Cgk8bGk+amF2YXNjcmlwdDwvbGk+IAoJPGxpPnBsYWluPC9saT4gCgk8bGk+c3ZnPC9saT4gCgk8bGk+aHRtbDwvbGk+Cgk8bGk+Y3NzPC9saT4KCTxsaT5zY3NzPC9saT4KCTxsaT5jb2ZmZWU8L2xpPgoJPGxpPmpzb248L2xpPgoJPGxpPnB5dGhvbjwvbGk+Cgk8bGk+cnVieTwvbGk+Cgk8bGk+cGVybDwvbGk+Cgk8bGk+cGhwPC9saT4KCTxsaT5qYXZhPC9saT4KCTxsaT5jc2hhcnA8L2xpPgoJPGxpPmNfY3BwPC9saT4KCTxsaT5jbG9qdXJlPC9saT4KCTxsaT5vY2FtbDwvbGk+Cgk8bGk+dGV4dGlsZTwvbGk+Cgk8bGk+Z3Jvb3Z5PC9saT4KCTxsaT5zY2FsYTwvbGk+CjwvdWw+IjsKJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWUnXSA9ICJpcyB1c2VkIHdpdGhpbiBhIHBhZ2Ugd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0nZGVmYXVsdCd9PC9jb2RlPiBtb2R1bGUgdGFnLiBUaGlzIHNwZWNpZmllcyBTeW50YXhoaWdobGlnaHRlciB0aGVtZSBmb3Igc3BlY2lmaWMgY29kZSBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOgo8dWw+Cgk8bGk+Y2xvdWRzPC9saT4gCgk8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4gCgk8bGk+Y29iYWx0PC9saT4gCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPgoJPGxpPmRhd248L2xpPgoJPGxpPmVjbGlwc2U8L2xpPgoJPGxpPmlkbGVfZmluZ2VyczwvbGk+Cgk8bGk+a3JfdGhlbWU8L2xpPgoJPGxpPm1lcmJpdm9yZTwvbGk+Cgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPgoJPGxpPm1vbm9faW5kdXN0cmlhbDwvbGk+Cgk8bGk+bW9ub2thaTwvbGk+Cgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPgoJPGxpPnNvbGFyaXplZF9kYXJrPC9saT4KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPgoJPGxpPnRleHRtYXRlPC9saT4KCTxsaT50d2lsaWdodDwvbGk+Cgk8bGk+dmlicmFudF9pbms8L2xpPgo8L3VsPiI7CiRsYW5nWydoZWxwX3BhcmFtX3dpZHRoJ10gPSAic3BlY2lmaWVzIHdpZHRoIG9mIFN5bnRheGhpZ2hsaWdodGVyIGFyZWEgaW4gcGl4ZWwuIjsKJGxhbmdbJ2hlbHBfcGFyYW1faGVpZ2h0J10gPSAic3BlY2lmaWVzIGhlaWdodCBvZiBTeW50YXhoaWdobGlnaHRlciBhcmVhIGluIHBpeGVsLiI7CiRsYW5nWydoZWxwX3BhcmFtX2RpdmlkJ10gPSAiaWQgb2YgdGhlIGVsZW1lbnQgY29udGFpbmluZyB5b3VyIGNvZGUuIFVzZSB1bmlxdWUgaWQgZm9yIGVhY2ggY29kZSBjaHVuY2suIjsKJGxhbmdbJ2hlbHBfZ2VuZXJhbF90aXRsZSddID0gIkdlbmVyYWwiOwokbGFuZ1snaGVscF9nZW5lcmFsX3RleHQnXSA9ICIKPGgzPldoYXQgZG9lcyB0aGlzIG1vZHVsZSBkbz88L2gzPgo8cD5BY2VFZGl0b3IgaXMgYSBTeW50YXhoaWdobGlnaHRlciBtb2R1bGUgdXNpbmcgPHN0cm9uZz5BY2U8L3N0cm9uZz4gYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC48YnIgLz4gCkdvYWwgb2YgQWNlIGNvZGUgZWRpdG9yIGdyb3VwIGlzIHRvIGNyZWF0ZSBhIHdlYiBiYXNlZCBjb2RlIGVkaXRvciB0aGF0IG1hdGNoZXMgYW5kIGV4dGVuZHMgdGhlIGZlYXR1cmVzLCB1c2FiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIG9mIGV4aXN0aW5nIG5hdGl2ZSBlZGl0b3JzIHN1Y2ggYXMgVGV4dE1hdGUsIFZpbSBvciBFY2xpcHNlLjxiciAvPgpJdCBjYW4gYmUgZWFzaWx5IGVtYmVkZGVkIGluIGFueSB3ZWIgcGFnZSBhbmQgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbi48YnIgLz4gCkFjZSBpcyBkZXZlbG9wZWQgYXMgdGhlIHByaW1hcnkgZWRpdG9yIGZvciA8YSBocmVmPVwiaHR0cDovL3d3dy5jbG91ZDlpZGUuY29tXCI+Q2xvdWQ5IElERTwvYT4gYW5kIHRoZSBzdWNjZXNzb3Igb2YgdGhlIE1vemlsbGEgU2t5d3JpdGVyIChCZXNwaW4pIFByb2plY3QuPC9wPgo8aDM+QWNlIGlzIGhvc3RlZCBvbiBHaXRIdWI8L2gzPgo8cD5UaGUgQWNlIHNvdXJjZSBjb2RlIGlzIGhvc3RlZCBvbiBHaXRIdWIuIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNb3ppbGxhIHRyaS1saWNlbnNlIChNUEwvR1BML0xHUEwpLjxiciAvPgpUaGlzIGlzIHRoZSBzYW1lIGxpY2Vuc2UgdXNlZCBieSBGaXJlZm94LiBUaGlzIGxpY2Vuc2UgaXMgZnJpZW5kbHkgdG8gYWxsIGtpbmRzIG9mIHByb2plY3RzLCB3aGV0aGVyIG9wZW4gc291cmNlIG9yIG5vdC48YnIgLz4KIFRha2UgY2hhcmdlIG9mIHlvdXIgZWRpdG9yIGFuZCBhZGQgeW91ciBmYXZvcml0ZSBsYW5ndWFnZSBoaWdobGlnaHRpbmcgYW5kIGtleWJpbmRpbmdzITwvcD4KPGgzPlVzaW5nIEFjZUVkaXRvciBNb2R1bGU8L2gzPgo8cD5Vc2luZyBBY2VFZGl0b3IgTW9kdWxlIGlzIHNpbXBsZS48YnIgLz4KQWZ0ZXIgQWNlRWRpdG9yIHdhcyBpbnN0YWxsZWQgZ28gdG8gXCJNeSBQcmVmZXJlbmNlcyAmcmFxdW87IFVzZXIgUHJlZmVyZW5jZXNcIiBhbmQgY2hvb3NlIEFjZUVkaXRvciBhcyB5b3VyIFN5bnRheGhpZ2hsaWdodGVyIG9mIGNob2ljZSBmcm9tIFwiU2VsZWN0IHN5bnRheCBoaWdobGlnaHRlciB0byB1c2U6XCIgRHJvcGRvd24uPGJyIC8+Ck1ha2Ugc3VyZSB5b3UgaGF2ZSAnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnIFBlcm1zaXNzaW9uLjwvcD4KPGgzPlNldHRpbmdzPC9oMz4KPHA+WW91IGNhbiBjaGFuZ2UgZGVmYXVsdCBTZXR0aW5ncyBhbmQgVGhlbWVzIGluIFwiTXkgUHJlZmVyZW5jZXMgJnJhcXVvOyBBY2VFZGl0b3JcIjwvcD4iOwoKJGxhbmdbJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfdGl0bGUnXSA9ICJLZXlib2FyZCBTaG9ydGN1dHMiOwokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50J10gPSAnCiAgICAgIDxoMz5EZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0czwvaDM+Cgo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkRlZmF1bHQgS2V5Ym9hcmQgU2hvcnRjdXRzIj4KPHRoZWFkPjx0cj4KPHRoPlBDIChXaW5kb3dzL0xpbnV4KTwvdGQ+Cjx0aD5NYWM8L3RkPgo8dGg+YWN0aW9uPC90ZD4KPC90cj48L3RoZWFkPgo8dGJvZHk+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1SZXR1cm48L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtUmV0dXJuPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5mdWxsc2NyZWVuPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVM8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtUzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cGVyZm9ybSBzYXZlPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Y2VudGVyIHNlbGVjdGlvbjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1BbHQtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1PcHRpb24tRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyBkb3duPC90ZD4KPC90cj4KPHRyIGxjYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUFsdC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1PcHRpb24tVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmNvcHkgbGluZXMgdXA8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtRjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1GPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5maW5kPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUs8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtRzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+ZmluZCBuZXh0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUs8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtRzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+ZmluZCBwcmV2aW91czwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+RG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+RG93bixDdHJsLU48L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIGxpbmUgZG93bjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+VXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlVwLEN0cmwtUDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gbGluZSB1cDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1FbmQsQ3RybC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUVuZCxDb21tYW5kLURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIGVuZDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+TGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+TGVmdCxDdHJsLUI8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIGxlZnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1MPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtUmlnaHQsRW5kPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVJpZ2h0LEVuZCxDdHJsLUU8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIGxpbmUgZW5kPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtTGVmdCxIb21lPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUxlZnQsSG9tZSxDdHJsLUE8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIGxpbmUgc3RhcnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlBhZ2VEb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tUGFnZURvd24sQ3RybC1WPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIGRvd248L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVBhZ2VVcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gcGFnZSB1cDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+UmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlJpZ2h0LEN0cmwtRjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gcmlnaHQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtSG9tZSxDdHJsLVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUhvbWUsQ29tbWFuZC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gc3RhcnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHdvcmQgbGVmdDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byB3b3JkIHJpZ2h0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5UYWI8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlRhYjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+aW5kZW50PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPm1vdmUgbGluZXMgZG93bjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPm1vdmUgbGluZXMgdXA8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVRhYjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtVGFiPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5vdXRkZW50PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkluc2VydDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+b3ZlcndyaXRlPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPlBhZ2VEb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5wYWdlZG93bjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnBhZ2V1cDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1aLEN0cmwtWTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1aLENvbW1hbmQtWTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVkbzwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1EPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlbW92ZSBsaW5lPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtSzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1CYWNrc3BhY2U8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlbW92ZSB0byBsaW5lc3RhcnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LUJhY2tzcGFjZSxDdHJsLUFsdC1CYWNrc3BhY2U8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlbW92ZSB3b3JkIGxlZnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LURlbGV0ZTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1PcHRpb24tRjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVwbGFjZTwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1SPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LU9wdGlvbi1GPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZXBsYWNlIGFsbDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1BPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUE8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBhbGw8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBkb3duPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGVmdDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtRW5kPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1FbmQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsaW5lIGVuZDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtSG9tZTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtSG9tZTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxpbmUgc3RhcnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VEb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHBhZ2UgZG93bjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIHVwPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCByaWdodDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1FbmQsQWx0LVNoaWZ0LURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGVuZDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LVNoaWZ0LVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBsaW5lIHN0YXJ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUhvbWUsQWx0LVNoaWZ0LVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gc3RhcnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHVwPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1TaGlmdC1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3Qgd29yZCBsZWZ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB3b3JkIHJpZ2h0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c3BsaXQgbGluZTwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC03PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLTc8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnRvZ2dsZSBjb21tZW50PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+dHJhbnNwb3NlIGxldHRlcnM8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtWjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1aPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij51bmRvPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4nOwoKJGxhbmdbJ2hlbHBfZnJvbnRlbmRfdGl0bGUnXSA9ICJGcm9udGVuZCI7CiRsYW5nWydoZWxwX2Zyb250ZW5kX2NvbnRlbnQnXSA9ICI8cD5UaGlzIE1vZHVsZSBhbmQgQWNlIFNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0ZXIuPGJyIC8+ClRvIG1ha2UgaXQgd29yayB5b3UgaGF2ZSB0byBpbmNsdWRlIGpRdWVyeSBGcmFtZXdvcmssIGZvciBleGFtcGxlIHVzaW5nIENNU01TIHtjbXNfanF1ZXJ5fSB0YWcgYW5kIGFzIHdlbGwgaW5jbHVkZSB7QWNlRWRpdG9yfSBpbiB5b3VyIHBhZ2UgdHdpY2UuIEZpcnN0IGFkZCB0aGUgbW9kdWxlIHRhZyBpbiB5b3VyICZsdDtoZWFkJmd0OyBzZWN0aW9uIG9mIFRlbXBsYXRlIG9yIGluICZxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZxdW90OyBmaWVsZCBvZiB5b3VyIENvbnRlbnQgcGFnZSwgbGlrZSB7QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9IGFuZCBhbm90aGVyIGNhbGwgdG8gc3BlY2lmeSB3aGljaCBhcmVhIHNob3VsZCBiZSBoaWdobGlnaHRlZCwgZm9yIGV4YW1wbGUge0FjZUVkaXRvciBkaXZpZD0nZm9vJ30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+CjxoMz5TbyBob3cgZG8geW91IHVzZSBpdD88L2gzPgo8cD5GaXJzdCBpbmNsdWRlIGpRdWVyeSBhbmQgTW9kdWxlIHRhZyBpbiB5b3VyIFBhZ2UgJmx0O2hlYWQmZ3Q7IGFyZWEsIGZvciBleGFtcGxlIGluICZxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZxdW90Ozo8L3A+CjxwcmU+CntjbXNfanF1ZXJ5fQp7QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9CjwvcHJlPgo8cD5UaGlzIGluY2x1ZGVzIG5lZWRlZCBzY3JpcHRzIGZvciBBY2UgU3ludGF4aGlnaGxpZ2h0ZXIgdG8gd29yay48YnIgLz4KSW4gTW9kdWxlcyBBZG1pbiBpbnRlcmZhY2UgeW91IGNhbiBzZWxlY3QgZGVmYXVsdCBzZXR0aW5ncyBmb3IgeW91ciAnaGVhZCcgYWN0aW9uIG9yIHVzZSBwYXJhbWV0ZXIgbW9kZXM9J2h0bWwsamF2YXNjcmlwdCcgYW5kIHRoZW1lcz0ndGV4dG1hdGUnIHdoaWNoIHdvdWxkIG92ZXJyaWRlIHNlbGVjdGVkIFByZWZlcmVuY2VzLjwvcD4KPHA+Tm93IHdoZW4geW91IGhhdmUgbmVlZGVkIHNjcmlwdHMgaW5jbHVkZWQsIG9uZSBtb3JlIE1vZHVsZSB0YWcgY2FsbCBpcyBuZWVkZWQgKGZvciBleGFtcGxlIGluIHlvdXIgQ29udGVudCBFZGl0b3IgYXJlYSkgdG8gc3BlY2lmeSB3aGljaCBhcmVhIG9mIHlvdXIgUGFnZSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQuPC9wPgo8cHJlPgp7QWNlRWRpdG9yIGRpdmlkPSdzb21lLWlkJ30KPC9wcmU+CjxwPlRoaXMgdGFnIGluY2x1ZGVzIG5lZWRlZCBTY3JpcHQgYW5kIFN0eWxlIHRoYXQgaXMgdXNlZCB0byBIaWdobGlnaHQgc2VsZWN0ZWQgZWxlbWVudCB3aXRoIHNwZWNpZmllZCBpZC48YnIgLz4KQWxsIHlvdSBuZWVkIHRoZW4gaXMgd3JpdGUgeW91ciBDb2RlIHRoYXQgeW91IHdhbnQgdG8gSGlnaGxpZ2h0IGFuZCB3cmFwIGl0IGluc2lkZSBhbiBlbGVtZW4gbGlrZSAmbHQ7ZGl2Jmd0OyB3aXRoIHNwZWNpZmllZCBpZC48L3A+IjsKCiRsYW5nWydoZWxwX2Fib3V0X3RpdGxlJ10gPSAiQWJvdXQiOwokbGFuZ1snaGVscF9hYm91dF90ZXh0J10gPSAnPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBHb3JhbiBJbGljIDxhIGhyZWY9Im1haWx0bzp1bmlxdTNlQGdtYWlsLmNvbSI+Jmx0O3VuaXF1M2VAZ21haWwuY29tJmd0OzwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy5pY2gtbWFjaC1kYXMuYXQiIHJlbD0iZXh0ZXJuYWwiPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+Cgk8aDM+VGVhbTwvaDM+Cgk8dWw+CgkJPGxpPkdvcmFuIElsaWMgKHVuaXF1MykgZy5pbGljQGktYXJ0cy5ldSA8YnIgLz53d3cuaWNoLW1hY2gtZGFzLmF0PC9saT4JCgkJPGxpPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCkgY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyAgPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4JCQoJCTxsaT5Kb25hdGhhbiBTY2htaWQgKEZvYWx5KikgaGlAam9uYXRoYW5zY2htaWQuZGUgPGJyIC8+d3d3LmpvbmF0aGFuc2NobWlkLmRlPC9saT4KCTwvdWw+Cic7CgovKiAtLS0gQ2hhbmdlbG9nIC0tLSAqLwokbGFuZ1snY2hhbmdlbG9nJ10gPSAiCjxoMz5WZXJzaW9uIDAuMTwvaDM+Cjx1bD4KCTxsaT5JdCdzIGZyZXNoISBOb3RoaW5nIGNoYW5nZWQgeWV0ITwvbGk+Cgk8bGk+VXNpbmcgQWNlIFZlcnNpb24gMC4yLjA8L2xpPgo8L3VsPgo8aDM+VmVyc2lvbiAwLjI8L2gzPgo8dWw+Cgk8bGk+QWRkZWQgQ1RSTC1TIEtleWJpbmRpbmc8L2xpPgoJPGxpPkFkZGVkIEZ1bGxzY3JlZW5tb2RlPC9saT4KCTxsaT5BZGRlZCBGcm9udGVuZCBIaWdobGlnaHRpbmc8L2xpPgoJPGxpPlVwZGF0ZWQgQWNlPC9saT4KPC91bD4KPGgzPlZlcnNpb24gMC4yLjE8L2gzPgo8dWw+Cgk8bGk+QWRkZWQgSW50ZXJuZXQgRXhwbG9yZXIgcHJlZmVyZW5jZTwvbGk+Cgk8bGk+VXBkYXRlZCBBQ0Ugd2l0aCB0aGVtZXM8L2xpPgo8L3VsPgo8aDM+VmVyc2lvbiAwLjIuMjwvaDM+Cjx1bD4KCTxsaT5GaXggZm9yIFNhZmFyaS9NYWM8L2xpPgo8L3VsPgo8aDM+VmVyc2lvbiAwLjIuMzwvaDM+Cjx1bD4KICAgIDxsaT5VcGRhdGVkIHRvIGxhdGVzdCBhY2UgZnJvbSBnaXRodWI8L2xpPgogICAgPGxpPkFkZGVkIGFkZGl0aW9uYWwgcHJlZmVyZW5jZXMgKE1vZGlmeSBUZW1wbGF0ZXMsIEFjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UpPC9saT4KICAgIDxsaT5BZGRlZCBhYmlsaXR5IHRvIGNoYW5nZSBBY2VFZGl0b3IgcHJlZmVyZW5jZXMgcGVyIHVzZXI8L2xpPgogICAgPGxpPk1vdmVkIG1vZHVsZSBmcm9tIGV4dGVuaW9ucyB0byBteXByZWZzPC9saT4KPC91bD4KPGgzPlZlcnNpb24gMC4yLjMuMTwvaDM+Cjx1bD4KICAgIDxsaT5Nb2RlIHByZWZlcmVuY2UgYnVnZml4PC9saT4KPC91bD4KPGgzPlJvYWRtYXA8L2gzPgo8dWw+Cgk8bGk+PGRlbD5BZGQgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nPC9kZWw+PC9saT4KCTxsaT48ZGVsPkFkZCBGdWxsc2NyZWVubW9kZTwvZGVsPjwvbGk+Cgk8bGk+PGRlbD5BZGQgS2V5YmluZGluZyAoQ1RSTCtTKTwvZGVsPjwvbGk+Cgk8bGk+QWRkIEVkaXRvciBiZWhhdmlvciAoVmltLCBFTWFjcyk8L2xpPgoJPGxpPk1heWJlIGFkZCBUb29sYmFyPC9saT4KPC91bD4iOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0FjZUVkaXRvciAnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0FjZUVkaXRvciBpc3QgZWluIFN5bnRheGhpZ2hsaWdodGVyIE1vZHVsIGRhcyA8c3Ryb25nPkFjZTwvc3Ryb25nPiwgIGVpbmVuIGVpZ2Vuc3QmYXVtbDtuZGlnZW4gQ29kZS1FZGl0b3IgZ2VzY2hyaWViZW4gbWl0IEphdmFTY3JpcHQgIHZlcndlbmRldC48YnIgLz48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IEludGVybmV0IEV4cGxvcmVyIHdpcmQgenVyemVpdCBuaWNodCB1bnRlcnN0JnV1bWw7enQhJzsKJGxhbmdbJ3NldHRpbmdzX3RhYiddID0gJ0VpbnN0ZWxsdW5nZW4nOwokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc190YWInXSA9ICdGcm9udGVuZCBFaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ2Zyb250ZW5kX2hlYWRfc2V0dGluZ3MnXSA9ICdGcm9udGVuZCBIZWFkIEVpbnN0ZWxsdW5nZW4nOwokbGFuZ1snZnJvbnRlbmRfc3ludGF4YXJlYV9zZXR0aW5ncyddID0gJ0Zyb250ZW5kIFN5bnRheGJlcmVpY2ggRWluc3RlbGx1bmdlbic7CiRsYW5nWydoZWFkX2Rlc2NyaXB0aW9uJ10gPSAnRGllc2UgRWluc3RlbGx1bmdlbiB3ZXJkZW4gYWxzIFN0YW5kYXJkZWluc3RlbGx1bmdlbiBmJnV1bWw7ciBBY2UgU2tyaXB0ZSB2ZXJ3ZW5kZXQsIGRpZSBpbSA8Y29kZT48aGVhZD48L2NvZGU+IGRlciBTZWl0ZSBlaW5nZWJ1bmRlbiB3ZXJkZW4gd2VubiA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4gaW4gU2VpdGVuc3BlemlmaXNjaGVuIE1ldGEtRGF0ZW4gb2RlciBUZW1wbGF0ZSBhdWZnZXJ1ZmVuIHdpcmQuJzsKJGxhbmdbJ2NvbnRlbnRfZGVzY3JpcHRpb24nXSA9ICdEaWVzZSBFaW5zdGVsbHVuZ2VuIHdlcmRlbiBhbHMgU3RhbmRhcmRlaW5zdGVsbHVuZ2VuIGYmdXVtbDtyIFN5bnRheGhpZ2hsaWdodGVyIEJlcmVpY2ggdmVyd2VuZGV0IHdlbm4gPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0mIzAzOTtlZGl0b3ImIzAzOTt9PC9jb2RlPiB0YWcgaW4gZWluZXIgU2VpdGUgYXVmZ2VydWZlbiB3aXJkLic7CiRsYW5nWydzeW50YXhhcmVhZGVzY3JpcHRpb24nXSA9ICdUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBBY2UgYmVoYXZpb3Igd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7Zm9vJiMwMzk7fTwvY29kZT4gZnJvbSBhIFBhZ2Ugb3IgVGVtcGxhdGUnOwokbGFuZ1snZXhhbXBsZV9kb2N1bWVudCddID0gJ0Rva3VtZW50JzsKJGxhbmdbJ3dpZHRoX3RpdGxlJ10gPSAnRWRpdG9yIGJyZWl0ZSAoaW4gZW0pJzsKJGxhbmdbJ2hlaWdodF90aXRsZSddID0gJ0VkaXRvciBoJm91bWw7aGUgKGluIGVtKSc7CiRsYW5nWydlbmFibGVfaWUnXSA9ICdGJnV1bWw7ciBJbnRlcm5ldCBFeHBsb3JlciBha3RpdmllcmVuJzsKJGxhbmdbJ3VzZV91bmNvbXByZXNzZWQnXSA9ICdVbmtvbXByaW1pZXJ0IHZlcndlbmRlbic7CiRsYW5nWyd1c2VfdW5jb21wcmVzc2VkX3RleHQnXSA9ICdLJm91bWw7bm50ZSBiZWkgUHJvYmxlbWVuIGltIFNhZmFyaSBoZWxmZW4uJzsKJGxhbmdbJ2VuYWJsZV9pZWRlc2NyaXB0aW9uJ10gPSAnQWNlIFN5bnRheGhpZ2hsaWdodGVyIGZ1bmt0aW9uaWVydCBpbiBJbnRlcm5ldCBFeHBsb3JlciBuaWNodCByaWNodGlnLkFrdGl2aWVyZW4gU2llIGRpZXNlIE9wdGlvbiBhdWYgZWlnZW5lIHZlcmFudHdvcnR1bmchJzsKJGxhbmdbJ2Zyb250ZW5kX3dpZHRoX3RpdGxlJ10gPSAnRnJvbnRlbmQgU3ludGF4YmVyZWljaCBicmVpdGUgKGluIHB4KSc7CiRsYW5nWydmcm9udGVuZF9oZWlnaHRfdGl0bGUnXSA9ICdGcm9udGVuZCBTeW50YXhiZXJlaWNoIGgmb3VtbDtoZSAoaW4gcHgpJzsKJGxhbmdbJ3N5bnRheF9tb2RlJ10gPSAnTW9kdXMnOwokbGFuZ1sndGhlbWVzJ10gPSAnQXVzc2VoZW4nOwokbGFuZ1snZm9udF9zaXplJ10gPSAnU2NocmlmdGdyJm91bWw7JnN6bGlnO2UnOwokbGFuZ1snZnVsbF9saW5lJ10gPSAnR2FuemUgWmVpbGUnOwokbGFuZ1snaGlnaGxpZ2h0X2FjdGl2ZSddID0gJ0FrdGl2ZSBaZWlsZSBtYXJraWVyZW4nOwokbGFuZ1snc2hvd19pbnZpc2libGVzJ10gPSAnWmVpZ2UgdW5zaWNodGJhcmUnOwokbGFuZ1sncGVyc2lzdGVudF9oc2Nyb2xsJ10gPSAnUGVyc2lzdGVudGVzIEhTY3JvbGwnOwokbGFuZ1sna2V5X2JpbmRpbmcnXSA9ICdTY2hsJnV1bWw7c3NlbGJpbmR1bmcnOwokbGFuZ1snc29mdF93cmFwJ10gPSAnU29mdCBXcmFwJzsKJGxhbmdbJ3Nob3dfZ3V0dGVyJ10gPSAnR3V0dGVyIGFuemVpZ2VuJzsKJGxhbmdbJ3ByaW50X21hcmdpbiddID0gJ1ByaW50IE1hcmdpbiBhbnplaWdlbic7CiRsYW5nWydzb2Z0X3RhYiddID0gJ1NvZnQgVGFiIHZlcndlbmRlbic7CiRsYW5nWydoaWdobGlnaHRfc2VsZWN0ZWQnXSA9ICdBdXNnZXcmYXVtbDtobHRlcyBXb3J0IG1hcmtpZXJlbic7CiRsYW5nWydlbmFibGVfYmVoYXZpb3JzJ10gPSAnVmVyaGFsdGVuIGFrdGl2aWVyZW4nOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnVm9yc2NoYXUnOwokbGFuZ1snanMnXSA9ICdKYXZhU2NyaXB0ICc7CiRsYW5nWydwbGFpbiddID0gJ1RleHQnOwokbGFuZ1snc3ZnJ10gPSAnU1ZHICc7CiRsYW5nWydodG1sJ10gPSAnSFRNTCAnOwokbGFuZ1snY3NzJ10gPSAnQ1NTICc7CiRsYW5nWydzY3NzJ10gPSAnU0NTUyAnOwokbGFuZ1snY29mZmVlJ10gPSAnQ29mZmVlU2NyaXB0ICc7CiRsYW5nWydqc29uJ10gPSAnSlNPTiAnOwokbGFuZ1sncHl0aG9uJ10gPSAnUHl0aG9uICc7CiRsYW5nWydydWJ5J10gPSAnUnVieSAnOwokbGFuZ1sncGVybCddID0gJ1BlcmwgJzsKJGxhbmdbJ3BocCddID0gJ1BIUCAnOwokbGFuZ1snamF2YSddID0gJ0phdmEgJzsKJGxhbmdbJ2NzaGFycCddID0gJ0MjICc7CiRsYW5nWydjX2NwcCddID0gJ0MrKyAnOwokbGFuZ1snY2xvanVyZSddID0gJ0Nsb2p1cmUgJzsKJGxhbmdbJ2NvbGRmdXNpb24nXSA9ICdDb2xkZnVzaW9uJzsKJGxhbmdbJ2hheGUnXSA9ICdIYXhlJzsKJGxhbmdbJ2xhdGV4J10gPSAnTGF0ZXgnOwokbGFuZ1snbHVhJ10gPSAnTHVhJzsKJGxhbmdbJ21hcmtkb3duJ10gPSAnTWFya2Rvd24nOwokbGFuZ1sncG93ZXJzaGVsbCddID0gJ1Bvd2VyU2hlbGwnOwokbGFuZ1snc3FsJ10gPSAnU1FMJzsKJGxhbmdbJ3Bnc3FsJ10gPSAncGdTUUwnOwokbGFuZ1snb2NhbWwnXSA9ICdPQ2FtbCAnOwokbGFuZ1sndGV4dGlsZSddID0gJ1RleHRpbGUgJzsKJGxhbmdbJ2dyb292eSddID0gJ0dyb292eSAnOwokbGFuZ1snc2NhbGEnXSA9ICdTY2FsYSAnOwokbGFuZ1snY2xvdWRzJ10gPSAnQ2xvdWRzICc7CiRsYW5nWydjaHJvbWUnXSA9ICdDaHJvbWUnOwokbGFuZ1snY2xvdWRzX21pZG5pZ2h0J10gPSAnQ2xvdWRzIE1pZG5pZ2h0ICc7CiRsYW5nWydjb2JhbHQnXSA9ICdDb2JhbHQgJzsKJGxhbmdbJ2NyaW1zb25fZWRpdG9yJ10gPSAnQ3JpbXNvbiBFZGl0b3IgJzsKJGxhbmdbJ2Rhd24nXSA9ICdEYXduICc7CiRsYW5nWydkcmVhbXdlYXZlciddID0gJ0RyZWFtd2VhdmVyJzsKJGxhbmdbJ2VjbGlwc2UnXSA9ICdFY2xpcHNlICc7CiRsYW5nWydpZGxlX2ZpbmdlcnMnXSA9ICdpZGxlRmluZ2VycyAnOwokbGFuZ1sna3JfdGhlbWUnXSA9ICdrclRoZW1lICc7CiRsYW5nWydtZXJiaXZvcmUnXSA9ICdNZXJiaXZvcmUgJzsKJGxhbmdbJ21lcmJpdm9yZV9zb2Z0J10gPSAnTWVyYml2b3JlIFNvZnQnOwokbGFuZ1snbW9ub19pbmR1c3RyaWFsJ10gPSAnTW9ubyBJbmR1c3RyaWFsJzsKJGxhbmdbJ21vbm9rYWknXSA9ICdNb25va2FpJzsKJGxhbmdbJ3Bhc3RlbF9vbl9kYXJrJ10gPSAnUGFzdGVsIG9uIGRhcmsnOwokbGFuZ1snc29sYXJpemVkX2RhcmsnXSA9ICdTb2xhcml6ZWQgRGFyayc7CiRsYW5nWydzb2xhcml6ZWRfbGlnaHQnXSA9ICdTb2xhcml6ZWQgTGlnaHQnOwokbGFuZ1sndGV4dG1hdGUnXSA9ICdUZXh0TWF0ZSAnOwokbGFuZ1sndG9tb3Jyb3cnXSA9ICdUb21vcnJvdyc7CiRsYW5nWyd0b21vcnJvd19uaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0JzsKJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JyaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0IEJyaWdodCc7CiRsYW5nWyd0b21vcnJvd19uaWdodF9ibHVlJ10gPSAnVG9tb3Jyb3cgTmlnaHQgQmx1ZSc7CiRsYW5nWyd0b21vcnJvd19uaWdodF9laWdodGllcyddID0gJ1RvbW9ycm93IE5pZ2h0IEVpZ2h0aWVzJzsKJGxhbmdbJ3R3aWxpZ2h0J10gPSAnVHdpbGlnaHQgJzsKJGxhbmdbJ3ZpYnJhbnRfaW5rJ10gPSAnVmlicmFudCBJbmsgJzsKJGxhbmdbJ2FjZSddID0gJ0FjZSAnOwokbGFuZ1sndmltJ10gPSAnVmltICc7CiRsYW5nWydlbWFjcyddID0gJ0VNYWNzICc7CiRsYW5nWydjdXN0b20nXSA9ICdCZW51dHplcmRlZmluaWVydCc7CiRsYW5nWydvZmYnXSA9ICdBdXMnOwokbGFuZ1snNDAnXSA9ICc0MCBaZWljaGVuJzsKJGxhbmdbJzgwJ10gPSAnODAgWmVpY2hlbic7CiRsYW5nWycxMDAnXSA9ICcxMDAgWmVpY2hlbic7CiRsYW5nWycxNDAnXSA9ICcxNDAgWmVpY2hlbic7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdFaW5zdGVsbHVuZ2VuIHNwZWljaGVybic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSWhyZSBBY2VFZGl0b3ItRWluc3RlbGx1bmdlbiB3dXJkZW4gZ2VzcGVpY2hlcnQnOwokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc3NhdmVkJ10gPSAnSWhyZSBBY2VFZGl0b3IgRnJvbnRlbmQgZWluc3RlbGx1bmdlbiB3dXJkZW4gZ2VzcGVpY2hlcnQnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdBY2VFZGl0b3Igd3VyZGVpbnN0YWxsaWVydCEgU2V0emVuIFNpZSBkaWUgQmVyZWNodGlndW5nICZxdW90O01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJnF1b3Q7LCB1bSBkaWVzZXMgTW9kdWwgdmVyd2VuZGVuIHp1IGsmb3VtbDtubmVuISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnQWNlRWRpdG9yIHd1cmRlIGRlaW5zdGFsbGllcnQnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1dvbGxlbiBTaWUgd2lya2xpY2ggQWNlRWRpdG9yIGRlaW5zdGFsbGllcmVuPyBEZW5rZW4gU2llIG5vY2htYWwgbmFjaCEnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdGZWhsZW5kZSBCZXJlY2h0aWd1bmdlbiEgU3RlbGxlbiBTaWUgJnF1b3Q7TW9kaWZ5IFRlbXBsYXRlcyZxdW90OyBvZGVyICZxdW90O0FjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UmcXVvdDstQmVyZWNodGlndW5nZW4gZWluLCB1bSBkaWVzZXMgTW9kdWwgdmVyd2VuZGVuIHp1IGQmdXVtbDtyZmVuLic7CiRsYW5nWydoZWxwX3BhcmFtX2FjdGlvbiddID0gJ3dpcmQgdmVyd2VuZGV0LCB1bSBkaWUgQWt0aW9uIGRlcyBNb2R1bCB0YWdzIHp1IGJlc3RpbW1lbi4gTSZvdW1sO2dsaWNoZSB3ZXJ0ZSBzaW5kICYjMDM5O2RlZmF1bHQmIzAzOTsgdW5kICYjMDM5O2hlYWQmIzAzOTsuIEYmdXVtbDtyIGRpZSBrb3JyZWt0ZSBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRpbmcgRnVua3Rpb24gc2luZCBiZWlkZSBha3Rpb25lbiBub3R3ZW5kaWdiZW4mb3VtbDt0aWd0LiA8YnIgLz5NJm91bWw7Z2xpY2hlIHdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmhlYWQ8L2xpPg0KCTxsaT5kZWZhdWx0PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZXMnXSA9ICd3aXJkIG1pdCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4gdmVyd2VuZGV0LiBTaWUgayZvdW1sO25uZW4gbWVocmVyZSBkdXJjaCBLb21tYSBnZXRyZW5udGUgJiMwMzk7bW9kZXMmIzAzOTssIGRpZSBTaWUgYXVmIElocmVyIFdlYnNpdGUgdmVyd2VuZGVuIHdlcmRlbiwgYW5nZWJlbi4gRGllcyBzb2xsdGUgaW0gJmFtcDtndDtoZWFkJmFtcDtsdDsgYmVyZWljaCBkZXMgVGVtcGxhdGVzIG9kZXIgdW50ZXIgU2VpdGVuc3BlemlmaXNjaGUtTWV0YWRhdGVuIGVpbmdlZ2ViZW4gd2VyZGVuLiBEaWVzICZ1dW1sO2JlcnNjaHJlaWJ0IElocmUgRWluc3RlbGx1bmdlbiBkaWUgaW0gTW9kdWwgQWRtaW4tQmVyZWljaCBhdXNnZXcmYXVtbDtobHQgd3VyZGVuLiA8YnIgLz5NJm91bWw7Z2xpY2hlIHdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmphdmFzY3JpcHQ8L2xpPiANCgk8bGk+cGxhaW48L2xpPiANCgk8bGk+c3ZnPC9saT4gDQoJPGxpPmh0bWw8L2xpPg0KCTxsaT5jc3M8L2xpPg0KCTxsaT5zY3NzPC9saT4NCgk8bGk+Y29mZmVlPC9saT4NCgk8bGk+anNvbjwvbGk+DQoJPGxpPnB5dGhvbjwvbGk+DQoJPGxpPnJ1Ynk8L2xpPg0KCTxsaT5wZXJsPC9saT4NCgk8bGk+cGhwPC9saT4NCgk8bGk+amF2YTwvbGk+DQoJPGxpPmNzaGFycDwvbGk+DQoJPGxpPmNfY3BwPC9saT4NCgk8bGk+Y2xvanVyZTwvbGk+DQoJPGxpPm9jYW1sPC9saT4NCgk8bGk+dGV4dGlsZTwvbGk+DQoJPGxpPmdyb292eTwvbGk+DQoJPGxpPnNjYWxhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWVzJ10gPSAnd2lyZCBtaXQgPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+IHZlcndlbmRldC4gU2llIGsmb3VtbDtubmVuIG1laHJlcmUgZHVyY2ggS29tbWEgZ2V0cmVubnRlICYjMDM5O3RoZW1lcyYjMDM5OyAoVGVtcGxhdGVzKSwgZGllIFNpZSBhdWYgSWhyZXIgV2Vic2l0ZSB2ZXJ3ZW5kZW4gd2VyZGVuLCBhbmdlYmVuLiBEaWVzIHNvbGx0ZSBpbSAmYW1wO2d0O2hlYWQmYW1wO2x0OyBiZXJlaWNoIGRlcyBUZW1wbGF0ZXMgb2RlciB1bnRlciBTZWl0ZW5zcGV6aWZpc2NoZS1NZXRhZGF0ZW4gZWluZ2VnZWJlbiB3ZXJkZW4uIERpZXMgJnV1bWw7YmVyc2NocmVpYnQgSWhyZSBFaW5zdGVsbHVuZ2VuIGRpZSBpbSBNb2R1bCBBZG1pbi1CZXJlaWNoIGF1c2dldyZhdW1sO2hsdCB3dXJkZW4uIDxiciAvPk0mb3VtbDtnbGljaGUgd2VydGUgc2luZDoNCjx1bD4NCgk8bGk+Y2xvdWRzPC9saT4gDQoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IA0KCTxsaT5jb2JhbHQ8L2xpPiANCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KCTxsaT5kYXduPC9saT4NCgk8bGk+ZWNsaXBzZTwvbGk+DQoJPGxpPmlkbGVfZmluZ2VyczwvbGk+DQoJPGxpPmtyX3RoZW1lPC9saT4NCgk8bGk+bWVyYml2b3JlPC9saT4NCgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KCTxsaT5tb25va2FpPC9saT4NCgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQoJPGxpPnRleHRtYXRlPC9saT4NCgk8bGk+dHdpbGlnaHQ8L2xpPg0KCTxsaT52aWJyYW50X2luazwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwX3BhcmFtX21vZGUnXSA9ICd3aXJkIGlubmVyaGFsYiBlaW5lciBTZWl0ZSBtaXQgPGNvZGU+e0FjZUVkaXRvciBhY3Rpb24gPSAmIzAzOTtkZWZhdWx0JiMwMzk7fTwvY29kZT4gTW9kdWwtVGFnIHZlcndlbmRldC4gRGFtaXQgd2lyZCBTeW50YXhIaWdobGlnaHRlciBNb2R1cyBmJnV1bWw7ciBha3R1ZWxsZW4gQ29kZS1CZXJlaWNoIGZlc3RnZWxlZ3QuIDxiciAvPiBNJm91bWw7Z2xpY2hlIFdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmphdmFzY3JpcHQ8L2xpPiANCgk8bGk+cGxhaW48L2xpPiANCgk8bGk+c3ZnPC9saT4gDQoJPGxpPmh0bWw8L2xpPg0KCTxsaT5jc3M8L2xpPg0KCTxsaT5zY3NzPC9saT4NCgk8bGk+Y29mZmVlPC9saT4NCgk8bGk+anNvbjwvbGk+DQoJPGxpPnB5dGhvbjwvbGk+DQoJPGxpPnJ1Ynk8L2xpPg0KCTxsaT5wZXJsPC9saT4NCgk8bGk+cGhwPC9saT4NCgk8bGk+amF2YTwvbGk+DQoJPGxpPmNzaGFycDwvbGk+DQoJPGxpPmNfY3BwPC9saT4NCgk8bGk+Y2xvanVyZTwvbGk+DQoJPGxpPm9jYW1sPC9saT4NCgk8bGk+dGV4dGlsZTwvbGk+DQoJPGxpPmdyb292eTwvbGk+DQoJPGxpPnNjYWxhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWUnXSA9ICd3aXJkIGlubmVyaGFsYiBlaW5lciBTZWl0ZSBtaXQgPGNvZGU+e0FjZUVkaXRvciBhY3Rpb24gPSAmIzAzOTtkZWZhdWx0JiMwMzk7fTwvY29kZT4gTW9kdWwtVGFnIHZlcndlbmRldC4gRGFtaXQgd2lyZCBTeW50YXhIaWdobGlnaHRlciBUZW1wbGF0ZSBmJnV1bWw7ciBha3R1ZWxsZW4gQ29kZS1CZXJlaWNoIGZlc3RnZWxlZ3QuIDxiciAvPiBNJm91bWw7Z2xpY2hlIFdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmNsb3VkczwvbGk+IA0KCTxsaT5jbG91ZHNfbWlkbmlnaHQ8L2xpPiANCgk8bGk+Y29iYWx0PC9saT4gDQoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCgk8bGk+ZGF3bjwvbGk+DQoJPGxpPmVjbGlwc2U8L2xpPg0KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPg0KCTxsaT5rcl90aGVtZTwvbGk+DQoJPGxpPm1lcmJpdm9yZTwvbGk+DQoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCgk8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCgk8bGk+bW9ub2thaTwvbGk+DQoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KCTxsaT50ZXh0bWF0ZTwvbGk+DQoJPGxpPnR3aWxpZ2h0PC9saT4NCgk8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscF9wYXJhbV93aWR0aCddID0gJ2Jlc3RpbW10IGRpZSBCcmVpdGUgZGVzIFN5bnRheGhpZ2hsaWdodGVyIEJlcmVpY2hzIGluIFBpeGVsLic7CiRsYW5nWydoZWxwX3BhcmFtX2hlaWdodCddID0gJ2Jlc3RpbW10IGRpZSBIJm91bWw7aGUgZGVzIFN5bnRheGhpZ2hsaWdodGVyIEJlcmVpY2hzIGluIFBpeGVsLic7CiRsYW5nWydoZWxwX3BhcmFtX2RpdmlkJ10gPSAnaWQgZGVzIEVsZW1lbnRzIG1pdCBJaHJlbSBDb2RlLiBWZXJ3ZW5kZW4gU2llIGVpbmRldXRpZ2UgSUQgZiZ1dW1sO3IgamVkZW4gQ29kZSBzbmlwcGV0Lic7CiRsYW5nWydoZWxwX2dlbmVyYWxfdGl0bGUnXSA9ICdBbGxnZW1laW4nOwokbGFuZ1snaGVscF9nZW5lcmFsX3RleHQnXSA9ICc8aDM+V2hhdCBkb2VzIHRoaXMgbW9kdWxlIGRvPzwvaDM+DQo8cD5BY2VFZGl0b3IgaXMgYSBTeW50YXhoaWdobGlnaHRlciBtb2R1bGUgdXNpbmcgPHN0cm9uZz5BY2U8L3N0cm9uZz4gYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC48YnIgLz4gDQpHb2FsIG9mIEFjZSBjb2RlIGVkaXRvciBncm91cCBpcyB0byBjcmVhdGUgYSB3ZWIgYmFzZWQgY29kZSBlZGl0b3IgdGhhdCBtYXRjaGVzIGFuZCBleHRlbmRzIHRoZSBmZWF0dXJlcywgdXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiBleGlzdGluZyBuYXRpdmUgZWRpdG9ycyBzdWNoIGFzIFRleHRNYXRlLCBWaW0gb3IgRWNsaXBzZS48YnIgLz4NCkl0IGNhbiBiZSBlYXNpbHkgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIGFuZCBKYXZhU2NyaXB0IGFwcGxpY2F0aW9uLjxiciAvPiANCkFjZSBpcyBkZXZlbG9wZWQgYXMgdGhlIHByaW1hcnkgZWRpdG9yIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LmNsb3VkOWlkZS5jb20iPkNsb3VkOSBJREU8L2E+IGFuZCB0aGUgc3VjY2Vzc29yIG9mIHRoZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWN0LjwvcD4NCjxoMz5BY2UgaXMgaG9zdGVkIG9uIEdpdEh1YjwvaDM+DQo8cD5UaGUgQWNlIHNvdXJjZSBjb2RlIGlzIGhvc3RlZCBvbiBHaXRIdWIuIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNb3ppbGxhIHRyaS1saWNlbnNlIChNUEwvR1BML0xHUEwpLjxiciAvPg0KVGhpcyBpcyB0aGUgc2FtZSBsaWNlbnNlIHVzZWQgYnkgRmlyZWZveC4gVGhpcyBsaWNlbnNlIGlzIGZyaWVuZGx5IHRvIGFsbCBraW5kcyBvZiBwcm9qZWN0cywgd2hldGhlciBvcGVuIHNvdXJjZSBvciBub3QuPGJyIC8+DQogVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhPC9wPg0KPGgzPlVzaW5nIEFjZUVkaXRvciBNb2R1bGU8L2gzPg0KPHA+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZSBpcyBzaW1wbGUuPGJyIC8+DQpBZnRlciBBY2VFZGl0b3Igd2FzIGluc3RhbGxlZCBnbyB0byAmcXVvdDtNeSBQcmVmZXJlbmNlcyAmcmFxdW87IFVzZXIgUHJlZmVyZW5jZXMmcXVvdDsgYW5kIGNob29zZSBBY2VFZGl0b3IgYXMgeW91ciBTeW50YXhoaWdobGlnaHRlciBvZiBjaG9pY2UgZnJvbSAmcXVvdDtTZWxlY3Qgc3ludGF4IGhpZ2hsaWdodGVyIHRvIHVzZTomcXVvdDsgRHJvcGRvd24uPGJyIC8+DQpNYWtlIHN1cmUgeW91IGhhdmUgJiMwMzk7TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMmIzAzOTsgUGVybXNpc3Npb24uPC9wPg0KPGgzPlNldHRpbmdzPC9oMz4NCjxwPllvdSBjYW4gY2hhbmdlIGRlZmF1bHQgU2V0dGluZ3MgYW5kIFRoZW1lcyBpbiAmcXVvdDtFeHRlbnNpb25zICZyYXF1bzsgQWNlRWRpdG9yJnF1b3Q7PC9wPic7CiRsYW5nWydoZWxwX2tleWJvYXJkc2hvcnRjdXRzX3RpdGxlJ10gPSAnVGFzdGF0dXJrJnV1bWw7cnplbCc7CiRsYW5nWydoZWxwX2tleWJvYXJkc2hvcnRjdXRzX2NvbnRlbnQnXSA9ICcgICAgICA8aDM+RGVmYXVsdCBLZXlib2FyZCBTaG9ydGN1dHM8L2gzPg0KDQo8dGFibGUgY2xhc3M9JnF1b3Q7cGFnZXRhYmxlJnF1b3Q7IGNlbGxzcGFjaW5nPSZxdW90OzAmcXVvdDsgc3VtbWFyeT0mcXVvdDtEZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0cyZxdW90Oz4NCjx0aGVhZD48dHI+DQo8dGg+UEMgKFdpbmRvd3MvTGludXgpPC90ZD4NCjx0aD5NYWM8L3RkPg0KPHRoPmFjdGlvbjwvdGQ+DQo8L3RyPjwvdGhlYWQ+DQo8dGJvZHk+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUw8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Y2VudGVyIHNlbGVjdGlvbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUFsdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtT3B0aW9uLURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Y29weSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgbGNhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtQWx0LVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmNvcHkgbGluZXMgdXA8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtRjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5maW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtSzwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLUc8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+ZmluZCBuZXh0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtSzwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVNoaWZ0LUc8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+ZmluZCBwcmV2aW91czwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkRvd24sQ3RybC1OPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIGxpbmUgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5VcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5VcCxDdHJsLVA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gbGluZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUVuZCxDdHJsLURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkxlZnQsQ3RybC1CPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1MPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtTDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1SaWdodCxFbmQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1MZWZ0LEhvbWU8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1MZWZ0LEhvbWUsQ3RybC1BPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UGFnZURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLVBhZ2VEb3duLEN0cmwtVjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gcGFnZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5SaWdodCxDdHJsLUY8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1Ib21lLEN0cmwtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1Ib21lLENvbW1hbmQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIHdvcmQgbGVmdDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byB3b3JkIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlRhYjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5UYWI8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+aW5kZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pm1vdmUgbGluZXMgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pm1vdmUgbGluZXMgdXA8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtVGFiPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVRhYjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5vdXRkZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pkluc2VydDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+b3ZlcndyaXRlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5wYWdlZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz48L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnBhZ2V1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LVosQ3RybC1ZPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVkbzwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1EPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUs8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSB0byBsaW5lc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1CYWNrc3BhY2UsQ3RybC1BbHQtQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1EZWxldGU8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1SPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVwbGFjZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LVI8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1PcHRpb24tRjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5yZXBsYWNlIGFsbDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUE8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1BPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgbGVmdDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1FbmQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtRW5kPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1Ib21lPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LUhvbWU8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHBhZ2UgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtUGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHRvIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+QWx0LVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1VcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3Qgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLVNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCB3b3JkIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLU88L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c3BsaXQgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLTc8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC03PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnRvZ2dsZSBjb21tZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+dHJhbnNwb3NlIGxldHRlcnM8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1aPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtWjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz51bmRvPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOwokbGFuZ1snaGVscF9mcm9udGVuZF90aXRsZSddID0gJ0Zyb250ZW5kJzsKJGxhbmdbJ2hlbHBfZnJvbnRlbmRfY29udGVudCddID0gJzxwPlRoaXMgTW9kdWxlIGFuZCBBY2UgU2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRlci48YnIgLz4NClRvIG1ha2UgaXQgd29yayB5b3UgaGF2ZSB0byBpbmNsdWRlIGpRdWVyeSBGcmFtZXdvcmssIGZvciBleGFtcGxlIHVzaW5nIENNU01TIHtjbXNfanF1ZXJ5fSB0YWcgYW5kIGFzIHdlbGwgaW5jbHVkZSB7QWNlRWRpdG9yfSBpbiB5b3VyIHBhZ2UgdHdpY2UuIEZpcnN0IGFkZCB0aGUgbW9kdWxlIHRhZyBpbiB5b3VyIDxoZWFkPiBzZWN0aW9uIG9mIFRlbXBsYXRlIG9yIGluICZxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZxdW90OyBmaWVsZCBvZiB5b3VyIENvbnRlbnQgcGFnZSwgbGlrZSB7QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fSBhbmQgYW5vdGhlciBjYWxsIHRvIHNwZWNpZnkgd2hpY2ggYXJlYSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQsIGZvciBleGFtcGxlIHtBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7Zm9vJiMwMzk7fSwgd2hpY2ggd291bGQgdGFyZ2V0IGEgcGFnZSBlbGVtZW50IHdpdGggaWQgPGVtPmZvbzwvZW0+LjwvcD4NCjxoMz5TbyBob3cgZG8geW91IHVzZSBpdD88L2gzPg0KPHA+Rmlyc3QgaW5jbHVkZSBqUXVlcnkgYW5kIE1vZHVsZSB0YWcgaW4geW91ciBQYWdlIDxoZWFkPiBhcmVhLCBmb3IgZXhhbXBsZSBpbiAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGRhdGEmcXVvdDs6PC9wPg0KCTxwcmU+DQoJe2Ntc19qcXVlcnl9DQoJe0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30NCgk8L3ByZT4NCjxwPlRoaXMgaW5jbHVkZXMgbmVlZGVkIHNjcmlwdHMgZm9yIEFjZSBTeW50YXhoaWdobGlnaHRlciB0byB3b3JrLjxiciAvPg0KSW4gTW9kdWxlcyBBZG1pbiBpbnRlcmZhY2UgeW91IGNhbiBzZWxlY3QgZGVmYXVsdCBzZXR0aW5ncyBmb3IgeW91ciAmIzAzOTtoZWFkJiMwMzk7IGFjdGlvbiBvciB1c2UgcGFyYW1ldGVyIG1vZGVzPSYjMDM5O2h0bWwsamF2YXNjcmlwdCYjMDM5OyBhbmQgdGhlbWVzPSYjMDM5O3RleHRtYXRlJiMwMzk7IHdoaWNoIHdvdWxkIG92ZXJyaWRlIHNlbGVjdGVkIFByZWZlcmVuY2VzLjwvcD4NCjxwPk5vdyB3aGVuIHlvdSBoYXZlIG5lZWRlZCBzY3JpcHRzIGluY2x1ZGVkLCBvbmUgbW9yZSBNb2R1bGUgdGFnIGNhbGwgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSBpbiB5b3VyIENvbnRlbnQgRWRpdG9yIGFyZWEpIHRvIHNwZWNpZnkgd2hpY2ggYXJlYSBvZiB5b3VyIFBhZ2Ugc2hvdWxkIGJlIGhpZ2hsaWdodGVkLjwvcD4NCgk8cHJlPg0KCXtBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7c29tZS1pZCYjMDM5O30NCgk8L3ByZT4NCjxwPlRoaXMgdGFnIGluY2x1ZGVzIG5lZWRlZCBTY3JpcHQgYW5kIFN0eWxlIHRoYXQgaXMgdXNlZCB0byBIaWdobGlnaHQgc2VsZWN0ZWQgZWxlbWVudCB3aXRoIHNwZWNpZmllZCBpZC48YnIgLz4NCkFsbCB5b3UgbmVlZCB0aGVuIGlzIHdyaXRlIHlvdXIgQ29kZSB0aGF0IHlvdSB3YW50IHRvIEhpZ2hsaWdodCBhbmQgd3JhcCBpdCBpbnNpZGUgYW4gZWxlbWVuIGxpa2UgPGRpdj4gd2l0aCBzcGVjaWZpZWQgaWQuPC9wPic7CiRsYW5nWydoZWxwX2Zyb250ZW5kX3NhbXBsZSddID0gJzxwcmUgaWQ9JnF1b3Q7c29tZS1pZCZxdW90Oz4NCiZhbXA7bHQ7aHRtbCZhbXA7Z3Q7DQogICAgICZhbXA7bHQ7aGVhZCZhbXA7Z3Q7DQogICAgICZhbXA7bHQ7c3R5bGUgdHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90OyZhbXA7Z3Q7DQogICAgICAgICAudGV4dC1sYXllciB7DQogICAgICAgICAgICAgZm9udC1mYW1pbHk6IE1vbmFjbywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsNCiAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7DQogICAgICAgICAgICAgY3Vyc29yOiB0ZXh0Ow0KICAgICAgICAgfQ0KICAgICAmYW1wO2x0Oy9zdHlsZSZhbXA7Z3Q7DQogICAgICZhbXA7bHQ7L2hlYWQmYW1wO2d0Ow0KICAgICAmYW1wO2x0O2JvZHkmYW1wO2d0Ow0KICAgICAgICAgJmFtcDtsdDtoMSBzdHlsZT0mcXVvdDtjb2xvcjpyZWQmcXVvdDsmYW1wO2d0O0p1aHUgS2lubmVycyZhbXA7bHQ7L2gxJmFtcDtndDsNCiAgICAgJmFtcDtsdDsvYm9keSZhbXA7Z3Q7ICZhbXA7bHQ7L2h0bWwmYW1wO2d0Ow0KPC9wcmU+JzsKJGxhbmdbJ2hlbHBfYWJvdXRfdGl0bGUnXSA9ICcmVXVtbDtiZXInOwokbGFuZ1snaGVscF9hYm91dF90ZXh0J10gPSAnPGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBHb3JhbiBJbGljIDxhIGhyZWY9Im1haWx0bzp1bmlxdTNlQGdtYWlsLmNvbSI+PHVuaXF1M2VAZ21haWwuY29tPjwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy5pY2gtbWFjaC1kYXMuYXQiIHJlbD0iZXh0ZXJuYWwiPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KCTxoMz5UZWFtPC9oMz4NCgk8dWw+DQoJCTxsaT5Hb3JhbiBJbGljICh1bmlxdTMpIGcuaWxpY0BpLWFydHMuZXUgPGJyIC8+d3d3LmljaC1tYWNoLWRhcy5hdDwvbGk+CQ0KCQk8bGk+Um9iZXJ0IENhbXBiZWxsIChjYWxndXkxMDAwKSBjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnICA8YnIgLz53d3cuY2FsZ3V5MTAwMC5jb208L2xpPgkJDQoJCTxsaT5Kb25hdGhhbiBTY2htaWQgKEZvYWx5KikgaGlAam9uYXRoYW5zY2htaWQuZGUgPGJyIC8+d3d3LmpvbmF0aGFuc2NobWlkLmRlPC9saT4NCgk8L3VsPg0KJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxoMz5WZXJzaW9uIDAuMTwvaDM+DQo8dWw+DQoJPGxpPkl0JiMwMzk7cyBmcmVzaCEgTm90aGluZyBjaGFuZ2VkIHlldCE8L2xpPg0KCTxsaT5Vc2luZyBBY2UgVmVyc2lvbiAwLjIuMDwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgQ1RSTC1TIEtleWJpbmRpbmc8L2xpPg0KCTxsaT5BZGRlZCBGdWxsc2NyZWVubW9kZTwvbGk+DQoJPGxpPkFkZGVkIEZyb250ZW5kIEhpZ2hsaWdodGluZzwvbGk+DQoJPGxpPlVwZGF0ZWQgQWNlPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMTwvaDM+DQo8dWw+DQoJPGxpPkFkZGVkIEludGVybmV0IEV4cGxvcmVyIHByZWZlcmVuY2U8L2xpPg0KCTxsaT5VcGRhdGVkIEFDRSB3aXRoIHRoZW1lczwvbGk+DQo8L3VsPg0KPGgzPlJvYWRtYXA8L2gzPg0KPHVsPg0KCTxsaT48ZGVsPkFkZCBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRpbmc8L2RlbD48L2xpPg0KCTxsaT48ZGVsPkFkZCBGdWxsc2NyZWVubW9kZTwvZGVsPjwvbGk+DQoJPGxpPjxkZWw+QWRkIEtleWJpbmRpbmcgKENUUkwrUyk8L2RlbD48L2xpPg0KCTxsaT5BZGQgRWRpdG9yIGJlaGF2aW9yIChWaW0sIEVNYWNzKTwvbGk+DQoJPGxpPk1heWJlIGFkZCBUb29sYmFyPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE0NTg0NTA2NjQtMTI4NDU3MzA4NDkxOCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEzNzUwNDcxNC4xMzMwNzYyNzY5LjEzMzA3NjI3NjkuMTMzMDc2Mjc2OS4xJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzMwNzYyNzY5LjEuMS51dG1jY249KGRpcmVjdCl8dXRtY3NyPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0FjZUVkaXRvcic7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQWNlRWRpdG9yIGlzIGEgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kdWxlIHVzaW5nIDxzdHJvbmc+QWNlPC9zdHJvbmc+IGEgc3RhbmRhbG9uZSBjb2RlIGVkaXRvciB3cml0dGVuIGluIEphdmFTY3JpcHQuPGJyIC8+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJbnRlcm5ldCBFeHBsb3JlciBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCEnOwokbGFuZ1snc2V0dGluZ3NfdGFiJ10gPSAnUHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcyc7CiRsYW5nWydmcm9udGVuZHNldHRpbmdzX3RhYiddID0gJ1ByJmVhY3V0ZTtmJmVhY3V0ZTtyZW5jZXMgZHUgRnJvbnRlbmQnOwokbGFuZ1snZnJvbnRlbmRfaGVhZF9zZXR0aW5ncyddID0gJ0Zyb250ZW5kIEhlYWQgUHJlZmVyZW5jZXMnOwokbGFuZ1snZnJvbnRlbmRfc3ludGF4YXJlYV9zZXR0aW5ncyddID0gJ0Zyb250ZW5kIFN5bnRheGFyZWEgUHJlZmVyZW5jZXMnOwokbGFuZ1snaGVhZF9kZXNjcmlwdGlvbiddID0gJ1RoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIEFjZSBzY3JpcHRzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHBhZ2UgPGNvZGU+PGhlYWQ+PC9jb2RlPiB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+IGZyb20gUGFnZSBTcGVjaWZpYyBNZXRhZGF0YSBvciBUZW1wbGF0ZS4nOwokbGFuZ1snY29udGVudF9kZXNjcmlwdGlvbiddID0gJ1RoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIFN5bnRheGhpZ2hsaWdodGluZyBhcmVhIHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2VkaXRvciYjMDM5O308L2NvZGU+IHRhZyB3aXRoaW4gYSBQYWdlLic7CiRsYW5nWydzeW50YXhhcmVhZGVzY3JpcHRpb24nXSA9ICdUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBBY2UgYmVoYXZpb3Igd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7Zm9vJiMwMzk7fTwvY29kZT4gZnJvbSBhIFBhZ2Ugb3IgVGVtcGxhdGUnOwokbGFuZ1snZXhhbXBsZV9kb2N1bWVudCddID0gJ0RvY3VtZW50JzsKJGxhbmdbJ3dpZHRoX3RpdGxlJ10gPSAnRWRpdG9yIHdpZHRoIChpbiBlbSknOwokbGFuZ1snaGVpZ2h0X3RpdGxlJ10gPSAnRWRpdG9yIGhlaWdodCAoaW4gZW0pJzsKJGxhbmdbJ2VuYWJsZV9pZSddID0gJ0VuYWJsZSBJbnRlcm5ldCBFeHBsb3Jlcic7CiRsYW5nWyd1c2VfdW5jb21wcmVzc2VkJ10gPSAnVXNlIHVuY29tcHJlc3NlZCc7CiRsYW5nWyd1c2VfdW5jb21wcmVzc2VkX3RleHQnXSA9ICdNaWdodCBoZWxwIGlmIHlvdSBoYXZlIHByb2JsZW1zIHVzaW5nIGluIFNhZmFyaS4nOwokbGFuZ1snZW5hYmxlX2llZGVzY3JpcHRpb24nXSA9ICdBY2UgU3ludGF4aGlnaGxpZ2h0ZXIgZG9lcyBub3QgYmVoYXZlIHByb3Blcmx5IHdoZW4gdXNpbmcgSW50ZXJuZXQgRXhwbG9yZXIuIEVuYWJsZSB0aGlzIGF0IHlvdXIgb3duIHJpc2shJzsKJGxhbmdbJ2Zyb250ZW5kX3dpZHRoX3RpdGxlJ10gPSAnRnJvbnRlbmQgU3ludGF4YXJlYSB3aWR0aCAoaW4gcHgpJzsKJGxhbmdbJ2Zyb250ZW5kX2hlaWdodF90aXRsZSddID0gJ0Zyb250ZW5kIFN5bnRheGFyZWEgaGVpZ2h0IChpbiBweCknOwokbGFuZ1snc3ludGF4X21vZGUnXSA9ICdNb2RlJzsKJGxhbmdbJ3RoZW1lcyddID0gJ1RoZW1lJzsKJGxhbmdbJ2ZvbnRfc2l6ZSddID0gJ0ZvbnQgU2l6ZSc7CiRsYW5nWydmdWxsX2xpbmUnXSA9ICdGdWxsIExpbmUgU2VsZWN0aW9uJzsKJGxhbmdbJ2hpZ2hsaWdodF9hY3RpdmUnXSA9ICdIaWdobGlnaHQgQWN0aXZlIExpbmUnOwokbGFuZ1snc2hvd19pbnZpc2libGVzJ10gPSAnU2hvdyBJbnZpc2libGVzJzsKJGxhbmdbJ3BlcnNpc3RlbnRfaHNjcm9sbCddID0gJ1BlcnNpdGVudCBIU2Nyb2xsJzsKJGxhbmdbJ2tleV9iaW5kaW5nJ10gPSAnS2V5IEJpbmRpbmcnOwokbGFuZ1snc29mdF93cmFwJ10gPSAnU29mdCBXcmFwJzsKJGxhbmdbJ3Nob3dfZ3V0dGVyJ10gPSAnU2hvdyBHdXR0ZXInOwokbGFuZ1sncHJpbnRfbWFyZ2luJ10gPSAnU2hvdyBQcmludCBNYXJnaW4nOwokbGFuZ1snc29mdF90YWInXSA9ICdVc2UgU29mdCBUYWInOwokbGFuZ1snaGlnaGxpZ2h0X3NlbGVjdGVkJ10gPSAnSGlnaGxpZ2h0IHNlbGVjdGVkIHdvcmQnOwokbGFuZ1snZW5hYmxlX2JlaGF2aW9ycyddID0gJ0VuYWJsZSBCZWhhdmlvcnMnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnUHJldmlldyc7CiRsYW5nWydqcyddID0gJ0phdmFTY3JpcHQnOwokbGFuZ1sncGxhaW4nXSA9ICdQbGFpbiBUZXh0JzsKJGxhbmdbJ3N2ZyddID0gJ1NWRyc7CiRsYW5nWydodG1sJ10gPSAnSFRNTCc7CiRsYW5nWydjc3MnXSA9ICdDU1MnOwokbGFuZ1snc2NzcyddID0gJ1NDU1MnOwokbGFuZ1snY29mZmVlJ10gPSAnQ29mZmVlU2NyaXB0JzsKJGxhbmdbJ2pzb24nXSA9ICdKU09OJzsKJGxhbmdbJ3B5dGhvbiddID0gJ1B5dGhvbic7CiRsYW5nWydydWJ5J10gPSAnUnVieSc7CiRsYW5nWydwZXJsJ10gPSAnUGVybCc7CiRsYW5nWydwaHAnXSA9ICdQSFAnOwokbGFuZ1snamF2YSddID0gJ0phdmEnOwokbGFuZ1snY3NoYXJwJ10gPSAnQyMnOwokbGFuZ1snY19jcHAnXSA9ICdDKysnOwokbGFuZ1snY2xvanVyZSddID0gJ0Nsb2p1cmUnOwokbGFuZ1snY29sZGZ1c2lvbiddID0gJ0NvbGRmdXNpb24nOwokbGFuZ1snaGF4ZSddID0gJ0hheGUnOwokbGFuZ1snbGF0ZXgnXSA9ICdMYXRleCc7CiRsYW5nWydsdWEnXSA9ICdMdWEnOwokbGFuZ1snbWFya2Rvd24nXSA9ICdNYXJrZG93bic7CiRsYW5nWydwb3dlcnNoZWxsJ10gPSAnUG93ZXJTaGVsbCc7CiRsYW5nWydzcWwnXSA9ICdTUUwnOwokbGFuZ1sncGdzcWwnXSA9ICdwZ1NRTCc7CiRsYW5nWydvY2FtbCddID0gJ09DYW1sJzsKJGxhbmdbJ3RleHRpbGUnXSA9ICdUZXh0aWxlJzsKJGxhbmdbJ2dyb292eSddID0gJ0dyb292eSc7CiRsYW5nWydzY2FsYSddID0gJ1NjYWxhJzsKJGxhbmdbJ2Nsb3VkcyddID0gJ0Nsb3Vkcyc7CiRsYW5nWydjaHJvbWUnXSA9ICdDaHJvbWUnOwokbGFuZ1snY2xvdWRzX21pZG5pZ2h0J10gPSAnQ2xvdWRzIE1pZG5pZ2h0JzsKJGxhbmdbJ2NvYmFsdCddID0gJ0NvYmFsdCc7CiRsYW5nWydjcmltc29uX2VkaXRvciddID0gJ0NyaW1zb24gRWRpdG9yJzsKJGxhbmdbJ2Rhd24nXSA9ICdEYXduJzsKJGxhbmdbJ2RyZWFtd2VhdmVyJ10gPSAnRHJlYW13ZWF2ZXInOwokbGFuZ1snZWNsaXBzZSddID0gJ0VjbGlwc2UnOwokbGFuZ1snaWRsZV9maW5nZXJzJ10gPSAnaWRsZUZpbmdlcnMnOwokbGFuZ1sna3JfdGhlbWUnXSA9ICdrclRoZW1lJzsKJGxhbmdbJ21lcmJpdm9yZSddID0gJ01lcmJpdm9yZSc7CiRsYW5nWydtZXJiaXZvcmVfc29mdCddID0gJ01lcmJpdm9yZSBTb2Z0JzsKJGxhbmdbJ21vbm9faW5kdXN0cmlhbCddID0gJ01vbm8gSW5kdXN0cmlhbCc7CiRsYW5nWydtb25va2FpJ10gPSAnTW9ub2thaSc7CiRsYW5nWydwYXN0ZWxfb25fZGFyayddID0gJ1Bhc3RlbCBvbiBkYXJrJzsKJGxhbmdbJ3NvbGFyaXplZF9kYXJrJ10gPSAnU29sYXJpemVkIERhcmsnOwokbGFuZ1snc29sYXJpemVkX2xpZ2h0J10gPSAnU29sYXJpemVkIExpZ2h0JzsKJGxhbmdbJ3RleHRtYXRlJ10gPSAnVGV4dE1hdGUnOwokbGFuZ1sndG9tb3Jyb3cnXSA9ICdUb21vcnJvdyc7CiRsYW5nWyd0b21vcnJvd19uaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0JzsKJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JyaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0IEJyaWdodCc7CiRsYW5nWyd0b21vcnJvd19uaWdodF9ibHVlJ10gPSAnVG9tb3Jyb3cgTmlnaHQgQmx1ZSc7CiRsYW5nWyd0b21vcnJvd19uaWdodF9laWdodGllcyddID0gJ1RvbW9ycm93IE5pZ2h0IEVpZ2h0aWVzJzsKJGxhbmdbJ3R3aWxpZ2h0J10gPSAnVHdpbGlnaHQnOwokbGFuZ1sndmlicmFudF9pbmsnXSA9ICdWaWJyYW50IEluayc7CiRsYW5nWydhY2UnXSA9ICdBY2UnOwokbGFuZ1sndmltJ10gPSAnVmltJzsKJGxhbmdbJ2VtYWNzJ10gPSAnRU1hY3MnOwokbGFuZ1snY3VzdG9tJ10gPSAnQ3VzdG9tJzsKJGxhbmdbJ29mZiddID0gJ09mZic7CiRsYW5nWyc0MCddID0gJzQwIENoYXJzJzsKJGxhbmdbJzgwJ10gPSAnODAgQ2hhcnMnOwokbGFuZ1snMTAwJ10gPSAnMTAwIENoYXJzJzsKJGxhbmdbJzE0MCddID0gJzE0MCBDaGFycyc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYXZlIFByZWZlcmVuY2VzJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdZb3VyIEFjZUVkaXRvciBzZXR0aW5ncyBoYXZlIGJlZW4gc2F2ZWQnOwokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc3NhdmVkJ10gPSAnWW91ciBBY2VFZGl0b3IgRnJvbnRlbmQgc2V0dGluZ3MgaGF2ZSBiZWVuIHNhdmVkJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQWNlRWRpdG9yIFN1Y2Nlc3NmdWxseSBJbnN0YWxsZWQhIFNldCAmcXVvdDtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyZxdW90OyBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdBY2VFZGl0b3IgU3VjY2Vzc2Z1bGx5IFVuaW5zdGFsbGVkJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgQWNlRWRpdG9yPyBUaGluayBhZ2FpbiEnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdNaXNzaW5nIFBlcm1pc3Npb24hLiBTZXQgJnF1b3Q7TW9kaWZ5IFRlbXBsYXRlcyZxdW90OyBvciAmcXVvdDtBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJnF1b3Q7IHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG1vZHVsZS4nOwokbGFuZ1snaGVscF9wYXJhbV9hY3Rpb24nXSA9ICdpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgYWN0aW9uIG9mIE1vZHVsZSB0YWcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJiMwMzk7ZGVmYXVsdCYjMDM5OyBhbmQgJiMwMzk7aGVhZCYjMDM5Oy4gQm90aCBhcmUgbmVlZGVkIGZvciBjb3JyZWN0IEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZyBmdW5jdGlvbi4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+aGVhZDwvbGk+DQoJPGxpPmRlZmF1bHQ8L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscF9wYXJhbV9tb2RlcyddID0gJ2lzIHVzZWQgd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4uIFlvdSBjYW4gaW5jbHVkZSBtdWx0aXBsZSBjb21tYSBzZXBhcmF0ZWQgJiMwMzk7bW9kZXMmIzAzOTsgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgPGhlYWQ+IG9mIFRlbXBsYXRlIG9yIFBhZ2Ugc3BlY2lmaWMgTWV0YWRhdGEuIFRoaXMgd2lsbCBvdmVycmlkZSB5b3UgUHJlZmVyZW5jZXMgc2VsZWN0ZWQgaW4gTW9kdWxlIEFkbWluIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmphdmFzY3JpcHQ8L2xpPiANCgk8bGk+cGxhaW48L2xpPiANCgk8bGk+c3ZnPC9saT4gDQoJPGxpPmh0bWw8L2xpPg0KCTxsaT5jc3M8L2xpPg0KCTxsaT5zY3NzPC9saT4NCgk8bGk+Y29mZmVlPC9saT4NCgk8bGk+anNvbjwvbGk+DQoJPGxpPnB5dGhvbjwvbGk+DQoJPGxpPnJ1Ynk8L2xpPg0KCTxsaT5wZXJsPC9saT4NCgk8bGk+cGhwPC9saT4NCgk8bGk+amF2YTwvbGk+DQoJPGxpPmNzaGFycDwvbGk+DQoJPGxpPmNfY3BwPC9saT4NCgk8bGk+Y2xvanVyZTwvbGk+DQoJPGxpPm9jYW1sPC9saT4NCgk8bGk+dGV4dGlsZTwvbGk+DQoJPGxpPmdyb292eTwvbGk+DQoJPGxpPnNjYWxhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWVzJ10gPSAnaXMgdXNlZCB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAmIzAzOTt0aGVtZXMmIzAzOTsgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgPGhlYWQ+IG9mIFRlbXBsYXRlIG9yIFBhZ2Ugc3BlY2lmaWMgTWV0YWRhdGEuIFRoaXMgd2lsbCBvdmVycmlkZSB5b3UgUHJlZmVyZW5jZXMgc2VsZWN0ZWQgaW4gTW9kdWxlIEFkbWluIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmNsb3VkczwvbGk+IA0KCTxsaT5jbG91ZHNfbWlkbmlnaHQ8L2xpPiANCgk8bGk+Y29iYWx0PC9saT4gDQoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCgk8bGk+ZGF3bjwvbGk+DQoJPGxpPmVjbGlwc2U8L2xpPg0KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPg0KCTxsaT5rcl90aGVtZTwvbGk+DQoJPGxpPm1lcmJpdm9yZTwvbGk+DQoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCgk8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCgk8bGk+bW9ub2thaTwvbGk+DQoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KCTxsaT50ZXh0bWF0ZTwvbGk+DQoJPGxpPnR3aWxpZ2h0PC9saT4NCgk8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscF9wYXJhbV9tb2RlJ10gPSAnaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7ZGVmYXVsdCYjMDM5O308L2NvZGU+IG1vZHVsZSB0YWcuIFRoaXMgc3BlY2lmaWVzIFN5bnRheGhpZ2hsaWdodGVyIG1vZGUgZm9yIHNwZWNpZmljIGNvZGUgYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+amF2YXNjcmlwdDwvbGk+IA0KCTxsaT5wbGFpbjwvbGk+IA0KCTxsaT5zdmc8L2xpPiANCgk8bGk+aHRtbDwvbGk+DQoJPGxpPmNzczwvbGk+DQoJPGxpPnNjc3M8L2xpPg0KCTxsaT5jb2ZmZWU8L2xpPg0KCTxsaT5qc29uPC9saT4NCgk8bGk+cHl0aG9uPC9saT4NCgk8bGk+cnVieTwvbGk+DQoJPGxpPnBlcmw8L2xpPg0KCTxsaT5waHA8L2xpPg0KCTxsaT5qYXZhPC9saT4NCgk8bGk+Y3NoYXJwPC9saT4NCgk8bGk+Y19jcHA8L2xpPg0KCTxsaT5jbG9qdXJlPC9saT4NCgk8bGk+b2NhbWw8L2xpPg0KCTxsaT50ZXh0aWxlPC9saT4NCgk8bGk+Z3Jvb3Z5PC9saT4NCgk8bGk+c2NhbGE8L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscF9wYXJhbV90aGVtZSddID0gJ2lzIHVzZWQgd2l0aGluIGEgcGFnZSB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2RlZmF1bHQmIzAzOTt9PC9jb2RlPiBtb2R1bGUgdGFnLiBUaGlzIHNwZWNpZmllcyBTeW50YXhoaWdobGlnaHRlciB0aGVtZSBmb3Igc3BlY2lmaWMgY29kZSBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KCTxsaT5jbG91ZHM8L2xpPiANCgk8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4gDQoJPGxpPmNvYmFsdDwvbGk+IA0KCTxsaT5jcmltc29uX2VkaXRvcjwvbGk+DQoJPGxpPmRhd248L2xpPg0KCTxsaT5lY2xpcHNlPC9saT4NCgk8bGk+aWRsZV9maW5nZXJzPC9saT4NCgk8bGk+a3JfdGhlbWU8L2xpPg0KCTxsaT5tZXJiaXZvcmU8L2xpPg0KCTxsaT5tZXJiaXZvcmVfc29mdDwvbGk+DQoJPGxpPm1vbm9faW5kdXN0cmlhbDwvbGk+DQoJPGxpPm1vbm9rYWk8L2xpPg0KCTxsaT5wYXN0ZWxfb25fZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2xpZ2h0PC9saT4NCgk8bGk+dGV4dG1hdGU8L2xpPg0KCTxsaT50d2lsaWdodDwvbGk+DQoJPGxpPnZpYnJhbnRfaW5rPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fd2lkdGgnXSA9ICdzcGVjaWZpZXMgd2lkdGggb2YgU3ludGF4aGlnaGxpZ2h0ZXIgYXJlYSBpbiBwaXhlbC4nOwokbGFuZ1snaGVscF9wYXJhbV9oZWlnaHQnXSA9ICdzcGVjaWZpZXMgaGVpZ2h0IG9mIFN5bnRheGhpZ2hsaWdodGVyIGFyZWEgaW4gcGl4ZWwuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZGl2aWQnXSA9ICdpZCBvZiB0aGUgZWxlbWVudCBjb250YWluaW5nIHlvdXIgY29kZS4gVXNlIHVuaXF1ZSBpZCBmb3IgZWFjaCBjb2RlIGNodW5jay4nOwokbGFuZ1snaGVscF9nZW5lcmFsX3RpdGxlJ10gPSAnR2VuZXJhbCc7CiRsYW5nWydoZWxwX2dlbmVyYWxfdGV4dCddID0gJzxoMz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9oMz4NCjxwPkFjZUVkaXRvciBpcyBhIFN5bnRheGhpZ2hsaWdodGVyIG1vZHVsZSB1c2luZyA8c3Ryb25nPkFjZTwvc3Ryb25nPiBhIHN0YW5kYWxvbmUgY29kZSBlZGl0b3Igd3JpdHRlbiBpbiBKYXZhU2NyaXB0LjxiciAvPiANCkdvYWwgb2YgQWNlIGNvZGUgZWRpdG9yIGdyb3VwIGlzIHRvIGNyZWF0ZSBhIHdlYiBiYXNlZCBjb2RlIGVkaXRvciB0aGF0IG1hdGNoZXMgYW5kIGV4dGVuZHMgdGhlIGZlYXR1cmVzLCB1c2FiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIG9mIGV4aXN0aW5nIG5hdGl2ZSBlZGl0b3JzIHN1Y2ggYXMgVGV4dE1hdGUsIFZpbSBvciBFY2xpcHNlLjxiciAvPg0KSXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbiBhbnkgd2ViIHBhZ2UgYW5kIEphdmFTY3JpcHQgYXBwbGljYXRpb24uPGJyIC8+IA0KQWNlIGlzIGRldmVsb3BlZCBhcyB0aGUgcHJpbWFyeSBlZGl0b3IgZm9yIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2xvdWQ5aWRlLmNvbSI+Q2xvdWQ5IElERTwvYT4gYW5kIHRoZSBzdWNjZXNzb3Igb2YgdGhlIE1vemlsbGEgU2t5d3JpdGVyIChCZXNwaW4pIFByb2plY3QuPC9wPg0KPGgzPkFjZSBpcyBob3N0ZWQgb24gR2l0SHViPC9oMz4NCjxwPlRoZSBBY2Ugc291cmNlIGNvZGUgaXMgaG9zdGVkIG9uIEdpdEh1Yi4gSXQgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1vemlsbGEgdHJpLWxpY2Vuc2UgKE1QTC9HUEwvTEdQTCkuPGJyIC8+DQpUaGlzIGlzIHRoZSBzYW1lIGxpY2Vuc2UgdXNlZCBieSBGaXJlZm94LiBUaGlzIGxpY2Vuc2UgaXMgZnJpZW5kbHkgdG8gYWxsIGtpbmRzIG9mIHByb2plY3RzLCB3aGV0aGVyIG9wZW4gc291cmNlIG9yIG5vdC48YnIgLz4NCiBUYWtlIGNoYXJnZSBvZiB5b3VyIGVkaXRvciBhbmQgYWRkIHlvdXIgZmF2b3JpdGUgbGFuZ3VhZ2UgaGlnaGxpZ2h0aW5nIGFuZCBrZXliaW5kaW5ncyE8L3A+DQo8aDM+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZTwvaDM+DQo8cD5Vc2luZyBBY2VFZGl0b3IgTW9kdWxlIGlzIHNpbXBsZS48YnIgLz4NCkFmdGVyIEFjZUVkaXRvciB3YXMgaW5zdGFsbGVkIGdvIHRvICZxdW90O015IFByZWZlcmVuY2VzICZyYXF1bzsgVXNlciBQcmVmZXJlbmNlcyZxdW90OyBhbmQgY2hvb3NlIEFjZUVkaXRvciBhcyB5b3VyIFN5bnRheGhpZ2hsaWdodGVyIG9mIGNob2ljZSBmcm9tICZxdW90O1NlbGVjdCBzeW50YXggaGlnaGxpZ2h0ZXIgdG8gdXNlOiZxdW90OyBEcm9wZG93bi48YnIgLz4NCk1ha2Ugc3VyZSB5b3UgaGF2ZSAmIzAzOTtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyYjMDM5OyBQZXJtc2lzc2lvbi48L3A+DQo8aDM+U2V0dGluZ3M8L2gzPg0KPHA+WW91IGNhbiBjaGFuZ2UgZGVmYXVsdCBTZXR0aW5ncyBhbmQgVGhlbWVzIGluICZxdW90O0V4dGVuc2lvbnMgJnJhcXVvOyBBY2VFZGl0b3ImcXVvdDs8L3A+JzsKJGxhbmdbJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfdGl0bGUnXSA9ICdLZXlib2FyZCBTaG9ydGN1dHMnOwokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50J10gPSAnICAgICAgPGgzPkRlZmF1bHQgS2V5Ym9hcmQgU2hvcnRjdXRzPC9oMz4NCg0KPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJEZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0cyI+Cjx0aGVhZD48dHI+Cjx0aD5QQyAoV2luZG93cy9MaW51eCk8L3RkPgo8dGg+TWFjPC90ZD4KPHRoPmFjdGlvbjwvdGQ+CjwvdHI+PC90aGVhZD4KPHRib2R5Pgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUmV0dXJuPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVJldHVybjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+ZnVsbHNjcmVlbjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVM8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnBlcmZvcm0gc2F2ZTwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUw8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmNlbnRlciBzZWxlY3Rpb248L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQWx0LURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPmNvcHkgbGluZXMgZG93bjwvdGQ+CjwvdHI+Cjx0ciBsY2Fzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1BbHQtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5jb3B5IGxpbmVzIHVwPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUY8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtRjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+ZmluZDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUc8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmZpbmQgbmV4dDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1LPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LUc8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmZpbmQgcHJldmlvdXM8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkRvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPkRvd24sQ3RybC1OPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyBsaW5lIGRvd248L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5VcCxDdHJsLVA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIGxpbmUgdXA8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtRW5kLEN0cmwtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBlbmQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkxlZnQsQ3RybC1CPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsZWZ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUw8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtTDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZTwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LVJpZ2h0LEVuZDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lIGVuZDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LUxlZnQsSG9tZTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1MZWZ0LEhvbWUsQ3RybC1BPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lIHN0YXJ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVBhZ2VEb3duLEN0cmwtVjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gcGFnZSBkb3duPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHBhZ2UgdXA8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5SaWdodCxDdHJsLUY8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHJpZ2h0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUhvbWUsQ3RybC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1Ib21lLENvbW1hbmQtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHN0YXJ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byB3b3JkIGxlZnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCByaWdodDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5UYWI8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmluZGVudDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5tb3ZlIGxpbmVzIGRvd248L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5tb3ZlIGxpbmVzIHVwPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVRhYjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+b3V0ZGVudDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+SW5zZXJ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPm92ZXJ3cml0ZTwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cGFnZWRvd248L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+UGFnZVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5wYWdldXA8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtWixDdHJsLVk8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlZG88L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtRDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1EPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgbGluZTwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUs8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlbW92ZSB0byBsaW5lIGVuZDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tQmFja3NwYWNlPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgdG8gbGluZXN0YXJ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1CYWNrc3BhY2UsQ3RybC1BbHQtQmFja3NwYWNlPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgd29yZCBsZWZ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1EZWxldGU8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlbW92ZSB3b3JkIHJpZ2h0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVI8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLUY8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlcGxhY2U8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtUjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1PcHRpb24tRjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVwbGFjZSBhbGw8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1BPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgYWxsPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgZG93bjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxlZnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtRW5kPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGluZSBlbmQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUhvbWU8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUhvbWU8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsaW5lIHN0YXJ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIGRvd248L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgcGFnZSB1cDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgcmlnaHQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtRW5kLEFsdC1TaGlmdC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBlbmQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGxpbmUgZW5kPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtU2hpZnQtTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gbGluZSBzdGFydDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1Ib21lLEFsdC1TaGlmdC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIHN0YXJ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB1cDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHdvcmQgbGVmdDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVNoaWZ0LVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3Qgd29yZCByaWdodDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLU88L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNwbGl0IGxpbmU8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtNzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC03PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij50b2dnbGUgY29tbWVudDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1UPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnRyYW5zcG9zZSBsZXR0ZXJzPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVo8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtWjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+dW5kbzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+JzsKJGxhbmdbJ2hlbHBfZnJvbnRlbmRfdGl0bGUnXSA9ICdGcm9udGVuZCc7CiRsYW5nWydoZWxwX2Zyb250ZW5kX2NvbnRlbnQnXSA9ICc8cD5UaGlzIE1vZHVsZSBhbmQgQWNlIFNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0ZXIuPGJyIC8+DQpUbyBtYWtlIGl0IHdvcmsgeW91IGhhdmUgdG8gaW5jbHVkZSBqUXVlcnkgRnJhbWV3b3JrLCBmb3IgZXhhbXBsZSB1c2luZyBDTVNNUyB7Y21zX2pxdWVyeX0gdGFnIGFuZCBhcyB3ZWxsIGluY2x1ZGUge0FjZUVkaXRvcn0gaW4geW91ciBwYWdlIHR3aWNlLiBGaXJzdCBhZGQgdGhlIG1vZHVsZSB0YWcgaW4geW91ciA8aGVhZD4gc2VjdGlvbiBvZiBUZW1wbGF0ZSBvciBpbiAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGRhdGEmcXVvdDsgZmllbGQgb2YgeW91ciBDb250ZW50IHBhZ2UsIGxpa2Uge0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30gYW5kIGFub3RoZXIgY2FsbCB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLCBmb3IgZXhhbXBsZSB7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+DQo8aDM+U28gaG93IGRvIHlvdSB1c2UgaXQ/PC9oMz4NCjxwPkZpcnN0IGluY2x1ZGUgalF1ZXJ5IGFuZCBNb2R1bGUgdGFnIGluIHlvdXIgUGFnZSA8aGVhZD4gYXJlYSwgZm9yIGV4YW1wbGUgaW4gJnF1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJnF1b3Q7OjwvcD4NCgk8cHJlPg0KCXtjbXNfanF1ZXJ5fQ0KCXtBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIGluY2x1ZGVzIG5lZWRlZCBzY3JpcHRzIGZvciBBY2UgU3ludGF4aGlnaGxpZ2h0ZXIgdG8gd29yay48YnIgLz4NCkluIE1vZHVsZXMgQWRtaW4gaW50ZXJmYWNlIHlvdSBjYW4gc2VsZWN0IGRlZmF1bHQgc2V0dGluZ3MgZm9yIHlvdXIgJiMwMzk7aGVhZCYjMDM5OyBhY3Rpb24gb3IgdXNlIHBhcmFtZXRlciBtb2Rlcz0mIzAzOTtodG1sLGphdmFzY3JpcHQmIzAzOTsgYW5kIHRoZW1lcz0mIzAzOTt0ZXh0bWF0ZSYjMDM5OyB3aGljaCB3b3VsZCBvdmVycmlkZSBzZWxlY3RlZCBQcmVmZXJlbmNlcy48L3A+DQo8cD5Ob3cgd2hlbiB5b3UgaGF2ZSBuZWVkZWQgc2NyaXB0cyBpbmNsdWRlZCwgb25lIG1vcmUgTW9kdWxlIHRhZyBjYWxsIGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUgaW4geW91ciBDb250ZW50IEVkaXRvciBhcmVhKSB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgb2YgeW91ciBQYWdlIHNob3VsZCBiZSBoaWdobGlnaHRlZC48L3A+DQoJPHByZT4NCgl7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O3NvbWUtaWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIHRhZyBpbmNsdWRlcyBuZWVkZWQgU2NyaXB0IGFuZCBTdHlsZSB0aGF0IGlzIHVzZWQgdG8gSGlnaGxpZ2h0IHNlbGVjdGVkIGVsZW1lbnQgd2l0aCBzcGVjaWZpZWQgaWQuPGJyIC8+DQpBbGwgeW91IG5lZWQgdGhlbiBpcyB3cml0ZSB5b3VyIENvZGUgdGhhdCB5b3Ugd2FudCB0byBIaWdobGlnaHQgYW5kIHdyYXAgaXQgaW5zaWRlIGFuIGVsZW1lbiBsaWtlIDxkaXY+IHdpdGggc3BlY2lmaWVkIGlkLjwvcD4nOwokbGFuZ1snaGVscF9mcm9udGVuZF9zYW1wbGUnXSA9ICc8cHJlIGlkPSJzb21lLWlkIj4KJmx0O2h0bWwmZ3Q7CiDCoCDCoCAmbHQ7aGVhZCZndDsKIMKgIMKgICZsdDtzdHlsZSB0eXBlPSJ0ZXh0L2NzcyImZ3Q7CiDCoCDCoCDCoCDCoCAudGV4dC1sYXllciB7CiDCoCDCoCDCoCDCoCDCoCDCoCBmb250LWZhbWlseTogTW9uYWNvLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7CiDCoCDCoCDCoCDCoCDCoCDCoCBmb250LXNpemU6IDEycHg7CiDCoCDCoCDCoCDCoCDCoCDCoCBjdXJzb3I6IHRleHQ7CiDCoCDCoCDCoCDCoCB9CiDCoCDCoCAmbHQ7L3N0eWxlJmd0OwogwqAgwqAgJmx0Oy9oZWFkJmd0OwogwqAgwqAgJmx0O2JvZHkmZ3Q7CiDCoCDCoCDCoCDCoCAmbHQ7aDEgc3R5bGU9ImNvbG9yOnJlZCImZ3Q7SnVodSBLaW5uZXJzJmx0Oy9oMSZndDsKIMKgIMKgICZsdDsvYm9keSZndDsgJmx0Oy9odG1sJmd0Owo8L3ByZT4nOwokbGFuZ1snaGVscF9hYm91dF90aXRsZSddID0gJ0EgcHJvcG9zJzsKJGxhbmdbJ2hlbHBfYWJvdXRfdGV4dCddID0gJzxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgR29yYW4gSWxpYyA8YSBocmVmPSJtYWlsdG86dW5pcXUzZUBnbWFpbC5jb20iPjx1bmlxdTNlQGdtYWlsLmNvbT48L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0IiByZWw9ImV4dGVybmFsIj53d3cuaWNoLW1hY2gtZGFzLmF0PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCgk8aDM+VGVhbTwvaDM+DQoJPHVsPg0KCQk8bGk+R29yYW4gSWxpYyAodW5pcXUzKSBnLmlsaWNAaS1hcnRzLmV1IDxiciAvPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2xpPgkNCgkJPGxpPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCkgY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyAgPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4JCQ0KCQk8bGk+Sm9uYXRoYW4gU2NobWlkIChGb2FseSopIGhpQGpvbmF0aGFuc2NobWlkLmRlIDxiciAvPnd3dy5qb25hdGhhbnNjaG1pZC5kZTwvbGk+DQoJPC91bD4NCic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8aDM+VmVyc2lvbiAwLjE8L2gzPg0KPHVsPg0KCTxsaT5JdCYjMDM5O3MgZnJlc2ghIE5vdGhpbmcgY2hhbmdlZCB5ZXQhPC9saT4NCgk8bGk+VXNpbmcgQWNlIFZlcnNpb24gMC4yLjA8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMjwvaDM+DQo8dWw+DQoJPGxpPkFkZGVkIENUUkwtUyBLZXliaW5kaW5nPC9saT4NCgk8bGk+QWRkZWQgRnVsbHNjcmVlbm1vZGU8L2xpPg0KCTxsaT5BZGRlZCBGcm9udGVuZCBIaWdobGlnaHRpbmc8L2xpPg0KCTxsaT5VcGRhdGVkIEFjZTwvbGk+DQo8L3VsPg0KPGgzPlJvYWRtYXA8L2gzPg0KPHVsPg0KCTxsaT48ZGVsPkFkZCBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRpbmc8L2RlbD48L2xpPg0KCTxsaT48ZGVsPkFkZCBGdWxsc2NyZWVubW9kZTwvZGVsPjwvbGk+DQoJPGxpPjxkZWw+QWRkIEtleWJpbmRpbmcgKENUUkwrUyk8L2RlbD48L2xpPg0KCTxsaT5BZGQgRWRpdG9yIGJlaGF2aW9yIChWaW0sIEVNYWNzKTwvbGk+DQoJPGxpPk1heWJlIGFkZCBUb29sYmFyPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTkyNDAwNzA4Ni4xMzI1MzI1NzUyLjEzMzA0NjEzNjkuMTMzMTkyMjYzMi4zJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTMzMTkyMjYzMi4zLjMudXRtY3NyPWdvb2dsZXx1dG1jY249KG9yZ2FuaWMpfHV0bWNtZD1vcmdhbmljfHV0bWN0cj0obm90IHByb3ZpZGVkKSc7CiRsYW5nWydxY2EnXSA9ICdQMC0xMzI0OTU1MzI5LTEzMjEwOTY4OTA4NjYnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4xLjEwLjEzMzE5MjI2MzInOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0FjZUVkaXRvcic7CiRsYW5nWydzZXR0aW5nc190YWInXSA9ICdJbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ2V4YW1wbGVfZG9jdW1lbnQnXSA9ICdEb2N1bWVudCc7CiRsYW5nWydzeW50YXhfbW9kZSddID0gJ01vZGUnOwokbGFuZ1sndGhlbWVzJ10gPSAnVGhlbWUnOwokbGFuZ1snZm9udF9zaXplJ10gPSAnRm9udCBTaXplJzsKJGxhbmdbJ2Z1bGxfbGluZSddID0gJ0Z1bGwgTGluZSc7CiRsYW5nWydoaWdobGlnaHRfYWN0aXZlJ10gPSAnSGlnaGxpZ2h0IEFjdGl2ZSBMaW5lJzsKJGxhbmdbJ3Nob3dfaW52aXNpYmxlcyddID0gJ1Nob3cgSW52aXNpYmxlcyc7CiRsYW5nWydwZXJzaXN0ZW50X2hzY3JvbGwnXSA9ICdQZXJzaXRlbnQgSFNjcm9sbCc7CiRsYW5nWydrZXlfYmluZGluZyddID0gJ0tleSBCaW5kaW5nJzsKJGxhbmdbJ3NvZnRfd3JhcCddID0gJ1NvZnQgV3JhcCc7CiRsYW5nWydzaG93X2d1dHRlciddID0gJ1Nob3cgR3V0dGVyJzsKJGxhbmdbJ3ByaW50X21hcmdpbiddID0gJ1Nob3cgUHJpbnQgTWFyZ2luJzsKJGxhbmdbJ3NvZnRfdGFiJ10gPSAnVXNlIFNvZnQgVGFiJzsKJGxhbmdbJ2hpZ2hsaWdodF9zZWxlY3RlZCddID0gJ0hpZ2hsaWdodCBzZWxlY3RlZCB3b3JkJzsKJGxhbmdbJ2VuYWJsZV9iZWhhdmlvcnMnXSA9ICdFbmFibGUgQmVoYXZpb3JzJzsKJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gJ1ByZXZpZXcnOwokbGFuZ1snanMnXSA9ICdKYXZhU2NyaXB0JzsKJGxhbmdbJ3BsYWluJ10gPSAnUGxhaW4gVGV4dCc7CiRsYW5nWydzdmcnXSA9ICdTVkcnOwokbGFuZ1snaHRtbCddID0gJ0hUTUwnOwokbGFuZ1snY3NzJ10gPSAnQ1NTJzsKJGxhbmdbJ3Njc3MnXSA9ICdTQ1NTJzsKJGxhbmdbJ2NvZmZlZSddID0gJ0NvZmZlZVNjcmlwdCc7CiRsYW5nWydqc29uJ10gPSAnSlNPTic7CiRsYW5nWydweXRob24nXSA9ICdQeXRob24nOwokbGFuZ1sncnVieSddID0gJ1J1YnknOwokbGFuZ1sncGVybCddID0gJ1BlcmwnOwokbGFuZ1sncGhwJ10gPSAnUEhQJzsKJGxhbmdbJ2phdmEnXSA9ICdKYXZhJzsKJGxhbmdbJ2NzaGFycCddID0gJ0MjJzsKJGxhbmdbJ2NfY3BwJ10gPSAnQysrJzsKJGxhbmdbJ2Nsb2p1cmUnXSA9ICdDbG9qdXJlJzsKJGxhbmdbJ29jYW1sJ10gPSAnT0NhbWwnOwokbGFuZ1sndGV4dGlsZSddID0gJ1RleHRpbGUnOwokbGFuZ1snZ3Jvb3Z5J10gPSAnR3Jvb3Z5JzsKJGxhbmdbJ3NjYWxhJ10gPSAnU2NhbGEnOwokbGFuZ1snY2xvdWRzJ10gPSAnQ2xvdWRzJzsKJGxhbmdbJ2Nsb3Vkc19taWRuaWdodCddID0gJ0Nsb3VkcyBNaWRuaWdodCc7CiRsYW5nWydjb2JhbHQnXSA9ICdDb2JhbHQnOwokbGFuZ1snY3JpbXNvbl9lZGl0b3InXSA9ICdDcmltc29uIEVkaXRvcic7CiRsYW5nWydkYXduJ10gPSAnRGF3bic7CiRsYW5nWydlY2xpcHNlJ10gPSAnRWNsaXBzZSc7CiRsYW5nWydpZGxlX2ZpbmdlcnMnXSA9ICdpZGxlRmluZ2Vycyc7CiRsYW5nWydrcl90aGVtZSddID0gJ2tyVGhlbWUnOwokbGFuZ1snbWVyYml2b3JlJ10gPSAnTWVyYml2b3JlJzsKJGxhbmdbJ21lcmJpdm9yZV9zb2Z0J10gPSAnTWVyYm92aW9yZSBTb2Z0JzsKJGxhbmdbJ21vbm9faW5kdXN0cmlhbCddID0gJ01vbm8gSW5kdXN0cmlhbCc7CiRsYW5nWydtb25va2FpJ10gPSAnTW9ub2thaSc7CiRsYW5nWydwYXN0ZWxfb25fZGFyayddID0gJ1Bhc3RlbCBvbiBkYXJrJzsKJGxhbmdbJ3NvbGFyaXplZF9kYXJrJ10gPSAnU29sYXJpemVkIERhcmsnOwokbGFuZ1snc29sYXJpemVkX2xpZ2h0J10gPSAnU29sYXJpemVkIExpZ2h0JzsKJGxhbmdbJ3RleHRtYXRlJ10gPSAnVGV4dE1hdGUnOwokbGFuZ1sndHdpbGlnaHQnXSA9ICdUd2lsaWdodCc7CiRsYW5nWyd2aWJyYW50X2luayddID0gJ1ZpYnJhbnQgSW5rJzsKJGxhbmdbJ2FjZSddID0gJ0FjZSc7CiRsYW5nWyd2aW0nXSA9ICdWaW0nOwokbGFuZ1snZW1hY3MnXSA9ICdFTWFjcyc7CiRsYW5nWydjdXN0b20nXSA9ICdDdXN0b20nOwokbGFuZ1snb2ZmJ10gPSAnT2ZmJzsKJGxhbmdbJzQwJ10gPSAnNDAgdGVnbic7CiRsYW5nWyc4MCddID0gJzgwIHRlZ24nOwokbGFuZ1snZnJlZSddID0gJ0ZyZWUnOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnTGFncmUgaW5uc3RpbGxpbmdlcic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnRGluZSBBY2VFZGl0b3IgaW5uc3RpbGxpbmdlciBoYXIgYmxpdHQgbGFncmV0JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQWNlRWRpdG9yIFN1Y2Nlc3NmdWxseSBJbnN0YWxsZWQhIFNldCAmcXVvdDtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyZxdW90OyBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdBY2VFZGl0b3IgU3VjY2Vzc2Z1bGx5IFVuaW5zdGFsbGVkJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgQWNlRWRpdG9yPyBUaGluayBhZ2FpbiEnOwokbGFuZ1snaGVscF9nZW5lcmFsX3RpdGxlJ10gPSAnR2VuZXJhbCc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8aDM+VmVyc2lvbiAwLjE8L2gzPg0KPHVsPg0KCTxsaT5JdCYjMDM5O3MgZnJlc2ghIE5vdGhpbmcgY2hhbmdlZCB5ZXQhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3FjYSddID0gJ1AwLTUzNjg0OTExNS0xMzA3OTgzNDk1MjEwJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMjUxNzI4MDkxLjEzMjI0MzAzNzEuMTMyMjQzNTAxOS4xMzIyNTExMTE3LjMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzIyNDMwMzcxLjEuMS51dG1jc3I9KGRpcmVjdCl8dXRtY2NuPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4yLjEwLjEzMjI1MTExMTcnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0FjZUVkaXRvciAnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0FjZUVkaXRvciBpcyBhIFN5bnRheGhpZ2hsaWdodGVyIG1vZHVsZSB1c2luZyA8c3Ryb25nPkFjZTwvc3Ryb25nPiBhIHN0YW5kYWxvbmUgY29kZSBlZGl0b3Igd3JpdHRlbiBpbiBKYXZhU2NyaXB0LjxiciAvPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gSW50ZXJuZXQgRXhwbG9yZXIgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQhJzsKJGxhbmdbJ3NldHRpbmdzX3RhYiddID0gJ0luc3RlbGxpbmdlbic7CiRsYW5nWydmcm9udGVuZHNldHRpbmdzX3RhYiddID0gJ0Zyb250ZW5kIEluc3RlbGxpbmdlbic7CiRsYW5nWydmcm9udGVuZF9oZWFkX3NldHRpbmdzJ10gPSAnRnJvbnRlbmQgSGVhZCBJbnN0ZWxsaW5nZW4nOwokbGFuZ1snZnJvbnRlbmRfc3ludGF4YXJlYV9zZXR0aW5ncyddID0gJ0Zyb250ZW5kIFN5bnRheCBydWltdGUgSW5zdGVsbGluZ2VuJzsKJGxhbmdbJ2hlYWRfZGVzY3JpcHRpb24nXSA9ICdUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBBY2Ugc2NyaXB0cyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBwYWdlIDxjb2RlPjxoZWFkPjwvY29kZT4gd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPiBmcm9tIFBhZ2UgU3BlY2lmaWMgTWV0YWRhdGEgb3IgVGVtcGxhdGUuJzsKJGxhbmdbJ2NvbnRlbnRfZGVzY3JpcHRpb24nXSA9ICdUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBTeW50YXhoaWdobGlnaHRpbmcgYXJlYSB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0mIzAzOTtlZGl0b3ImIzAzOTt9PC9jb2RlPiB0YWcgd2l0aGluIGEgUGFnZS4nOwokbGFuZ1snc3ludGF4YXJlYWRlc2NyaXB0aW9uJ10gPSAnVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgQWNlIGJlaGF2aW9yIHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O308L2NvZGU+IGZyb20gYSBQYWdlIG9yIFRlbXBsYXRlJzsKJGxhbmdbJ2V4YW1wbGVfZG9jdW1lbnQnXSA9ICdEb2N1bWVudCAnOwokbGFuZ1snd2lkdGhfdGl0bGUnXSA9ICdFZGl0b3IgYnJlZWR0ZSAoaW4gZW0pJzsKJGxhbmdbJ2hlaWdodF90aXRsZSddID0gJ0VkaXRvciBicmVlZHRlIChpbiBlbSknOwokbGFuZ1snZW5hYmxlX2llJ10gPSAnSW50ZXJuZXQgRXhwbG9yZXIgSW5zY2hha2VsZW4nOwokbGFuZ1sndXNlX3VuY29tcHJlc3NlZCddID0gJ0dlYnJ1aWsgb25nZWNvbXByaW1lZXJkJzsKJGxhbmdbJ3VzZV91bmNvbXByZXNzZWRfdGV4dCddID0gJ0RpdCBrYW4gaGVscGVuIGFscyB1IHByb2JsZW1lbiBlcnZhYXJ0IGluIFNhZmFyaS4nOwokbGFuZ1snZW5hYmxlX2llZGVzY3JpcHRpb24nXSA9ICdBY2UgU3ludGF4aGlnaGxpZ2h0ZXIgZnVuY3Rpb25lZXJ0IG5pZXQgY29ycmVjdCBpbiBJbnRlcm5ldCBFeHBsb3Jlci4gR2VicnVpayBkaXQgb3AgZWlnZW4gcmlzaWNvISc7CiRsYW5nWydmcm9udGVuZF93aWR0aF90aXRsZSddID0gJ0Zyb250ZW5kIFN5bnRheCBydWltdGUgYnJlZWR0ZSAoaW4gcHgpJzsKJGxhbmdbJ2Zyb250ZW5kX2hlaWdodF90aXRsZSddID0gJ0Zyb250ZW5kIFN5bnRheCBydWltdGUgaG9vZ3RlIChpbiBweCknOwokbGFuZ1snc3ludGF4X21vZGUnXSA9ICdNb2R1cyc7CiRsYW5nWyd0aGVtZXMnXSA9ICdUaGVtYSc7CiRsYW5nWydmb250X3NpemUnXSA9ICdMZXR0ZXJncm9vdHRlJzsKJGxhbmdbJ2Z1bGxfbGluZSddID0gJ1ZvbGxlZGlnZSBsaWpuJzsKJGxhbmdbJ2hpZ2hsaWdodF9hY3RpdmUnXSA9ICdIaWdobGlnaHQgYWN0aWV2ZSByZWdlbCc7CiRsYW5nWydzaG93X2ludmlzaWJsZXMnXSA9ICdHZWVmIG9uemljaHRiYXJlIHdlZXInOwokbGFuZ1sncGVyc2lzdGVudF9oc2Nyb2xsJ10gPSAnUGVyc2l0ZW50IEhTY3JvbGwgJzsKJGxhbmdbJ2tleV9iaW5kaW5nJ10gPSAnS2V5IEJpbmRpbmcgJzsKJGxhbmdbJ3NvZnRfd3JhcCddID0gJ1NvZnQgV3JhcCAnOwokbGFuZ1snc2hvd19ndXR0ZXInXSA9ICdHZWVmIEd1dHRlciB3ZWVyJzsKJGxhbmdbJ3ByaW50X21hcmdpbiddID0gJ0dlZWYgcHJpbnRtYXJnZSB3ZWVyJzsKJGxhbmdbJ3NvZnRfdGFiJ10gPSAnR2VicnVpayBTb2Z0IFRhYic7CiRsYW5nWydoaWdobGlnaHRfc2VsZWN0ZWQnXSA9ICdIaWdobGlnaHQgaGV0IGdlc2VsZWN0ZWVyZGUgd29vcmQnOwokbGFuZ1snZW5hYmxlX2JlaGF2aW9ycyddID0gJ1NjaGFrZWwgQmVoYXZpb3JzIGluJzsKJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gJ1Zvb3JiZWVsZCc7CiRsYW5nWydqcyddID0gJ0phdmFTY3JpcHQgJzsKJGxhbmdbJ3BsYWluJ10gPSAnUGxhdHRlIHRla3N0JzsKJGxhbmdbJ3N2ZyddID0gJ1NWRyAnOwokbGFuZ1snaHRtbCddID0gJ0hUTUwgJzsKJGxhbmdbJ2NzcyddID0gJ0NTUyAnOwokbGFuZ1snc2NzcyddID0gJ1NDU1MgJzsKJGxhbmdbJ2NvZmZlZSddID0gJ0NvZmZlZVNjcmlwdCAnOwokbGFuZ1snanNvbiddID0gJ0pTT04gJzsKJGxhbmdbJ3B5dGhvbiddID0gJ1B5dGhvbiAnOwokbGFuZ1sncnVieSddID0gJ1J1YnkgJzsKJGxhbmdbJ3BlcmwnXSA9ICdQZXJsICc7CiRsYW5nWydwaHAnXSA9ICdQSFAgJzsKJGxhbmdbJ2phdmEnXSA9ICdKYXZhICc7CiRsYW5nWydjc2hhcnAnXSA9ICdDIyAnOwokbGFuZ1snY19jcHAnXSA9ICdDKysgJzsKJGxhbmdbJ2Nsb2p1cmUnXSA9ICdDbG9qdXJlICc7CiRsYW5nWydjb2xkZnVzaW9uJ10gPSAnQ29sZGZ1c2lvbic7CiRsYW5nWydoYXhlJ10gPSAnSGF4ZSc7CiRsYW5nWydsYXRleCddID0gJ0xhdGV4JzsKJGxhbmdbJ2x1YSddID0gJ0x1YSc7CiRsYW5nWydtYXJrZG93biddID0gJ01hcmtkb3duJzsKJGxhbmdbJ3Bvd2Vyc2hlbGwnXSA9ICdQb3dlclNoZWxsJzsKJGxhbmdbJ3NxbCddID0gJ1NRTCc7CiRsYW5nWydwZ3NxbCddID0gJ3BnU1FMJzsKJGxhbmdbJ29jYW1sJ10gPSAnT0NhbWwgJzsKJGxhbmdbJ3RleHRpbGUnXSA9ICdUZXh0aWxlICc7CiRsYW5nWydncm9vdnknXSA9ICdHcm9vdnkgJzsKJGxhbmdbJ3NjYWxhJ10gPSAnU2NhbGEgJzsKJGxhbmdbJ2Nsb3VkcyddID0gJ0Nsb3VkcyAnOwokbGFuZ1snY2hyb21lJ10gPSAnQ2hyb21lICc7CiRsYW5nWydjbG91ZHNfbWlkbmlnaHQnXSA9ICdDbG91ZHMgTWlkbmlnaHQgJzsKJGxhbmdbJ2NvYmFsdCddID0gJ0NvYmFsdCAnOwokbGFuZ1snY3JpbXNvbl9lZGl0b3InXSA9ICdDcmltc29uIEVkaXRvciAnOwokbGFuZ1snZGF3biddID0gJ0Rhd24gJzsKJGxhbmdbJ2RyZWFtd2VhdmVyJ10gPSAnRHJlYW13ZWF2ZXIgJzsKJGxhbmdbJ2VjbGlwc2UnXSA9ICdFY2xpcHNlICc7CiRsYW5nWydpZGxlX2ZpbmdlcnMnXSA9ICdpZGxlRmluZ2VycyAnOwokbGFuZ1sna3JfdGhlbWUnXSA9ICdrclRoZW1lICc7CiRsYW5nWydtZXJiaXZvcmUnXSA9ICdNZXJiaXZvcmUgJzsKJGxhbmdbJ21lcmJpdm9yZV9zb2Z0J10gPSAnTWVyYml2aW9yZSBTb2Z0ICc7CiRsYW5nWydtb25vX2luZHVzdHJpYWwnXSA9ICdNb25vIEluZHVzdHJpYWwgJzsKJGxhbmdbJ21vbm9rYWknXSA9ICdNb25va2FpICc7CiRsYW5nWydwYXN0ZWxfb25fZGFyayddID0gJ1Bhc3RlbCBvbiBkYXJrICc7CiRsYW5nWydzb2xhcml6ZWRfZGFyayddID0gJ1NvbGFyaXplZCBEYXJrICc7CiRsYW5nWydzb2xhcml6ZWRfbGlnaHQnXSA9ICdTb2xhcml6ZWQgTGlnaHQgJzsKJGxhbmdbJ3RleHRtYXRlJ10gPSAnVGV4dE1hdGUgJzsKJGxhbmdbJ3RvbW9ycm93J10gPSAnVG9tb3Jyb3cgJzsKJGxhbmdbJ3RvbW9ycm93X25pZ2h0J10gPSAnVG9tb3Jyb3cgTmlnaHQgJzsKJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JyaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0IEJyaWdodCAnOwokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfYmx1ZSddID0gJ1RvbW9ycm93IE5pZ2h0IEJsdWUgJzsKJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2VpZ2h0aWVzJ10gPSAnVG9tb3Jyb3cgTmlnaHQgRWlnaHRpZXMgJzsKJGxhbmdbJ3R3aWxpZ2h0J10gPSAnVHdpbGlnaHQgJzsKJGxhbmdbJ3ZpYnJhbnRfaW5rJ10gPSAnVmlicmFudCBJbmsgJzsKJGxhbmdbJ2FjZSddID0gJ0FjZSAnOwokbGFuZ1sndmltJ10gPSAnVmltICc7CiRsYW5nWydlbWFjcyddID0gJ0VNYWNzICc7CiRsYW5nWydjdXN0b20nXSA9ICdHZWF2YW5jZWVyZCc7CiRsYW5nWydvZmYnXSA9ICdVaXQnOwokbGFuZ1snNDAnXSA9ICc0MCBLYXJha3RlcnMnOwokbGFuZ1snODAnXSA9ICc4MCBLYXJha3RlcnMnOwokbGFuZ1snMTAwJ10gPSAnMTAwIEthcmFrdGVycyc7CiRsYW5nWycxNDAnXSA9ICcxNDAgS2FyYWt0ZXJzJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ0luc3RlbGxpbmdlbiBvcHNsYWFuJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdVdyBBY2VFZGl0b3IgaW5zdGVsbGluZ2VuIHppam4gb3BnZXNsYWdlbic7CiRsYW5nWydmcm9udGVuZHNldHRpbmdzc2F2ZWQnXSA9ICdVdyBBY2VFZGl0b3IgRnJvbnRlbmQgaW5zdGVsbGluZ2VuIHppam4gb3BnZXNsYWdlbic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0FjZUVkaXRvciBzdWNjZXN2b2wgZ2UmaXVtbDtuc3RhbGxlZXJkISBTdGVsICZxdW90O0Jld2VyayBzaXRldm9vcmtldXJlbiZxdW90OyBwZXJtaXNzaWVzIGluIG9tIGRlemUgbW9kdWxlIHRlIGdlYnJ1aWtlbiEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0FjZUVkaXRvciBzdWNjZXN2b2wgZ2UmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdFY2h0PyBXZWV0IHUgemVrZXIgZGF0IHUgQWNlRWRpdG9yIHdpbHQgdmVyd2lqZGVyZW4/IERlbmsgbm9nIGVlbnMgZ29lZCBuYSEnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdNaXNzaW5nIFBlcm1pc3Npb24hLiBTZXQgJnF1b3Q7TW9kaWZ5IFRlbXBsYXRlcyZxdW90OyBvciAmcXVvdDtBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJnF1b3Q7IHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG1vZHVsZS4nOwokbGFuZ1snaGVscF9wYXJhbV9hY3Rpb24nXSA9ICdpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgYWN0aW9uIG9mIE1vZHVsZSB0YWcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJiMwMzk7ZGVmYXVsdCYjMDM5OyBhbmQgJiMwMzk7aGVhZCYjMDM5Oy4gQm90aCBhcmUgbmVlZGVkIGZvciBjb3JyZWN0IEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZyBmdW5jdGlvbi4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+aGVhZDwvbGk+DQoJPGxpPmRlZmF1bHQ8L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscF9wYXJhbV9tb2RlcyddID0gJ2lzIHVzZWQgd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4uIFlvdSBjYW4gaW5jbHVkZSBtdWx0aXBsZSBjb21tYSBzZXBhcmF0ZWQgJiMwMzk7bW9kZXMmIzAzOTsgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgJmFtcDtsdDtoZWFkJmFtcDtndDsgb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+amF2YXNjcmlwdDwvbGk+IA0KCTxsaT5wbGFpbjwvbGk+IA0KCTxsaT5zdmc8L2xpPiANCgk8bGk+aHRtbDwvbGk+DQoJPGxpPmNzczwvbGk+DQoJPGxpPnNjc3M8L2xpPg0KCTxsaT5jb2ZmZWU8L2xpPg0KCTxsaT5qc29uPC9saT4NCgk8bGk+cHl0aG9uPC9saT4NCgk8bGk+cnVieTwvbGk+DQoJPGxpPnBlcmw8L2xpPg0KCTxsaT5waHA8L2xpPg0KCTxsaT5qYXZhPC9saT4NCgk8bGk+Y3NoYXJwPC9saT4NCgk8bGk+Y19jcHA8L2xpPg0KCTxsaT5jbG9qdXJlPC9saT4NCgk8bGk+b2NhbWw8L2xpPg0KCTxsaT50ZXh0aWxlPC9saT4NCgk8bGk+Z3Jvb3Z5PC9saT4NCgk8bGk+c2NhbGE8L2xpPg0KPC91bD4gJzsKJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWVzJ10gPSAnaXMgdXNlZCB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAmIzAzOTt0aGVtZXMmIzAzOTsgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgJmFtcDtsdDtoZWFkJmFtcDtndDsgb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+Y2xvdWRzPC9saT4gDQoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IA0KCTxsaT5jb2JhbHQ8L2xpPiANCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KCTxsaT5kYXduPC9saT4NCgk8bGk+ZWNsaXBzZTwvbGk+DQoJPGxpPmlkbGVfZmluZ2VyczwvbGk+DQoJPGxpPmtyX3RoZW1lPC9saT4NCgk8bGk+bWVyYml2b3JlPC9saT4NCgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KCTxsaT5tb25va2FpPC9saT4NCgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQoJPGxpPnRleHRtYXRlPC9saT4NCgk8bGk+dHdpbGlnaHQ8L2xpPg0KCTxsaT52aWJyYW50X2luazwvbGk+DQo8L3VsPiAnOwokbGFuZ1snaGVscF9wYXJhbV9tb2RlJ10gPSAnaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7ZGVmYXVsdCYjMDM5O308L2NvZGU+IG1vZHVsZSB0YWcuIFRoaXMgc3BlY2lmaWVzIFN5bnRheGhpZ2hsaWdodGVyIG1vZGUgZm9yIHNwZWNpZmljIGNvZGUgYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+amF2YXNjcmlwdDwvbGk+IA0KCTxsaT5wbGFpbjwvbGk+IA0KCTxsaT5zdmc8L2xpPiANCgk8bGk+aHRtbDwvbGk+DQoJPGxpPmNzczwvbGk+DQoJPGxpPnNjc3M8L2xpPg0KCTxsaT5jb2ZmZWU8L2xpPg0KCTxsaT5qc29uPC9saT4NCgk8bGk+cHl0aG9uPC9saT4NCgk8bGk+cnVieTwvbGk+DQoJPGxpPnBlcmw8L2xpPg0KCTxsaT5waHA8L2xpPg0KCTxsaT5qYXZhPC9saT4NCgk8bGk+Y3NoYXJwPC9saT4NCgk8bGk+Y19jcHA8L2xpPg0KCTxsaT5jbG9qdXJlPC9saT4NCgk8bGk+b2NhbWw8L2xpPg0KCTxsaT50ZXh0aWxlPC9saT4NCgk8bGk+Z3Jvb3Z5PC9saT4NCgk8bGk+c2NhbGE8L2xpPg0KPC91bD4gDQoNCic7CiRsYW5nWydoZWxwX3BhcmFtX3RoZW1lJ10gPSAnaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7ZGVmYXVsdCYjMDM5O308L2NvZGU+IG1vZHVsZSB0YWcuIFRoaXMgc3BlY2lmaWVzIFN5bnRheGhpZ2hsaWdodGVyIHRoZW1lIGZvciBzcGVjaWZpYyBjb2RlIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmNsb3VkczwvbGk+IA0KCTxsaT5jbG91ZHNfbWlkbmlnaHQ8L2xpPiANCgk8bGk+Y29iYWx0PC9saT4gDQoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCgk8bGk+ZGF3bjwvbGk+DQoJPGxpPmVjbGlwc2U8L2xpPg0KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPg0KCTxsaT5rcl90aGVtZTwvbGk+DQoJPGxpPm1lcmJpdm9yZTwvbGk+DQoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCgk8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCgk8bGk+bW9ub2thaTwvbGk+DQoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KCTxsaT50ZXh0bWF0ZTwvbGk+DQoJPGxpPnR3aWxpZ2h0PC9saT4NCgk8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD4gJzsKJGxhbmdbJ2hlbHBfcGFyYW1fd2lkdGgnXSA9ICdCcmVlZHRlIHZhbiBkZSBTeW50YXhoaWdobGlnaHRlciBydWltdGUgaW4gcGl4ZWxzLic7CiRsYW5nWydoZWxwX3BhcmFtX2hlaWdodCddID0gJ0hvb2d0ZSB2YW4gZGUgU3ludGF4aGlnaGxpZ2h0ZXIgcnVpbXRlIGluIHBpeGVscy4nOwokbGFuZ1snaGVscF9wYXJhbV9kaXZpZCddID0gJ2lkIHZhbiBoZXQgZWxlbWVudCBkYXQgdXcgY29kZSBiZXZhdC4gR2VicnVpayBlZW4gdW5pZWtlIGlkIHZvb3IgZWxrIGNvZGUgYmxvay4nOwokbGFuZ1snaGVscF9nZW5lcmFsX3RpdGxlJ10gPSAnQWxnZW1lZW4nOwokbGFuZ1snaGVscF9nZW5lcmFsX3RleHQnXSA9ICc8aDM+V2hhdCBkb2VzIHRoaXMgbW9kdWxlIGRvPzwvaDM+DQo8cD5BY2VFZGl0b3IgaXMgYSBTeW50YXhoaWdobGlnaHRlciBtb2R1bGUgdXNpbmcgPHN0cm9uZz5BY2U8L3N0cm9uZz4gYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC48YnIgLz4gDQpHb2FsIG9mIEFjZSBjb2RlIGVkaXRvciBncm91cCBpcyB0byBjcmVhdGUgYSB3ZWIgYmFzZWQgY29kZSBlZGl0b3IgdGhhdCBtYXRjaGVzIGFuZCBleHRlbmRzIHRoZSBmZWF0dXJlcywgdXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiBleGlzdGluZyBuYXRpdmUgZWRpdG9ycyBzdWNoIGFzIFRleHRNYXRlLCBWaW0gb3IgRWNsaXBzZS48YnIgLz4NCkl0IGNhbiBiZSBlYXNpbHkgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIGFuZCBKYXZhU2NyaXB0IGFwcGxpY2F0aW9uLjxiciAvPiANCkFjZSBpcyBkZXZlbG9wZWQgYXMgdGhlIHByaW1hcnkgZWRpdG9yIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LmNsb3VkOWlkZS5jb20iPkNsb3VkOSBJREU8L2E+IGFuZCB0aGUgc3VjY2Vzc29yIG9mIHRoZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWN0LjwvcD4NCjxoMz5BY2UgaXMgaG9zdGVkIG9uIEdpdEh1YjwvaDM+DQo8cD5UaGUgQWNlIHNvdXJjZSBjb2RlIGlzIGhvc3RlZCBvbiBHaXRIdWIuIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNb3ppbGxhIHRyaS1saWNlbnNlIChNUEwvR1BML0xHUEwpLjxiciAvPg0KVGhpcyBpcyB0aGUgc2FtZSBsaWNlbnNlIHVzZWQgYnkgRmlyZWZveC4gVGhpcyBsaWNlbnNlIGlzIGZyaWVuZGx5IHRvIGFsbCBraW5kcyBvZiBwcm9qZWN0cywgd2hldGhlciBvcGVuIHNvdXJjZSBvciBub3QuPGJyIC8+DQogVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhPC9wPg0KPGgzPlVzaW5nIEFjZUVkaXRvciBNb2R1bGU8L2gzPg0KPHA+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZSBpcyBzaW1wbGUuPGJyIC8+DQpBZnRlciBBY2VFZGl0b3Igd2FzIGluc3RhbGxlZCBnbyB0byAmcXVvdDtNeSBQcmVmZXJlbmNlcyAmcmFxdW87IFVzZXIgUHJlZmVyZW5jZXMmcXVvdDsgYW5kIGNob29zZSBBY2VFZGl0b3IgYXMgeW91ciBTeW50YXhoaWdobGlnaHRlciBvZiBjaG9pY2UgZnJvbSAmcXVvdDtTZWxlY3Qgc3ludGF4IGhpZ2hsaWdodGVyIHRvIHVzZTomcXVvdDsgRHJvcGRvd24uPGJyIC8+DQpNYWtlIHN1cmUgeW91IGhhdmUgJiMwMzk7TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMmIzAzOTsgUGVybXNpc3Npb24uPC9wPg0KPGgzPlNldHRpbmdzPC9oMz4NCjxwPllvdSBjYW4gY2hhbmdlIGRlZmF1bHQgU2V0dGluZ3MgYW5kIFRoZW1lcyBpbiAmcXVvdDtFeHRlbnNpb25zICZyYXF1bzsgQWNlRWRpdG9yJnF1b3Q7PC9wPic7CiRsYW5nWydoZWxwX2tleWJvYXJkc2hvcnRjdXRzX3RpdGxlJ10gPSAnVG9ldHNlbmJvcmQgU25lbGtvcHBlbGluZ2VuJzsKJGxhbmdbJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfY29udGVudCddID0gJyAgICANCiAgICAgIDxoMz5EZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0czwvaDM+DQoNCjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRGVmYXVsdCBLZXlib2FyZCBTaG9ydGN1dHMiPgo8dGhlYWQ+PHRyPgo8dGg+UEMgKFdpbmRvd3MvTGludXgpPC90ZD4KPHRoPk1hYzwvdGQ+Cjx0aD5hY3Rpb248L3RkPgo8L3RyPjwvdGhlYWQ+Cjx0Ym9keT4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVJldHVybjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SZXR1cm48L3RkPgo8dGQgYWxpZ249ImxlZnQiPmZ1bGxzY3JlZW48L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5wZXJmb3JtIHNhdmU8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1MPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5jZW50ZXIgc2VsZWN0aW9uPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUFsdC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLU9wdGlvbi1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5jb3B5IGxpbmVzIGRvd248L3RkPgo8L3RyPgo8dHIgbGNhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQWx0LVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLU9wdGlvbi1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyB1cDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1GPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUY8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmZpbmQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtSzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1HPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5maW5kIG5leHQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtSzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1HPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5maW5kIHByZXZpb3VzPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Eb3duLEN0cmwtTjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gbGluZSBkb3duPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+VXAsQ3RybC1QPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyBsaW5lIHVwPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUVuZCxDdHJsLURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtRW5kLENvbW1hbmQtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gZW5kPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5MZWZ0LEN0cmwtQjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGVmdDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1MPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUw8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIGxpbmU8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1SaWdodCxFbmQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtUmlnaHQsRW5kLEN0cmwtRTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZSBlbmQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1MZWZ0LEhvbWU8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtTGVmdCxIb21lLEN0cmwtQTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZSBzdGFydDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+UGFnZURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlRG93bixDdHJsLVY8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHBhZ2UgZG93bjwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+UGFnZVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tUGFnZVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIHVwPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+UmlnaHQsQ3RybC1GPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byByaWdodDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1Ib21lLEN0cmwtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtSG9tZSxDb21tYW5kLVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBzdGFydDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1MZWZ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCBsZWZ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHdvcmQgcmlnaHQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlRhYjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5pbmRlbnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkFsdC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+bW92ZSBsaW5lcyBkb3duPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1VcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+bW92ZSBsaW5lcyB1cDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtVGFiPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPgo8dGQgYWxpZ249ImxlZnQiPm91dGRlbnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkluc2VydDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+SW5zZXJ0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5vdmVyd3JpdGU8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+UGFnZURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPnBhZ2Vkb3duPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cGFnZXVwPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVosQ3RybC1ZPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVosQ29tbWFuZC1ZPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZWRvPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtRDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIGxpbmU8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgdG8gbGluZSBlbmQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLUJhY2tzcGFjZTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmVzdGFydDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtQmFja3NwYWNlLEN0cmwtQWx0LUJhY2tzcGFjZTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHdvcmQgbGVmdDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRGVsZXRlPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgd29yZCByaWdodDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1SPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLU9wdGlvbi1GPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5yZXBsYWNlPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVI8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtT3B0aW9uLUY8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnJlcGxhY2UgYWxsPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUE8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtQTwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGFsbDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGRvd248L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsZWZ0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1FbmQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxpbmUgZW5kPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Ib21lPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Ib21lPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGluZSBzdGFydDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MiI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZURvd248L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VEb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgcGFnZSBkb3duPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHBhZ2UgdXA8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVJpZ2h0PC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHJpZ2h0PC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1Eb3duPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gZW5kPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cyIj4KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtU2hpZnQtUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBsaW5lIGVuZDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+QWx0LVNoaWZ0LUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGxpbmUgc3RhcnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBzdGFydDwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtVXA8L3RkPgo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVVwPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdXA8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtTGVmdDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVNoaWZ0LUxlZnQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB3b3JkIGxlZnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzEiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtUmlnaHQ8L3RkPgo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1TaGlmdC1SaWdodDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHdvcmQgcmlnaHQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1PPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5zcGxpdCBsaW5lPC90ZD4KPC90cj4KPHRyIGNsYXNzPSJyb3cxIj4KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLTc8L3RkPgo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtNzwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+dG9nZ2xlIGNvbW1lbnQ8L3RkPgo8L3RyPgo8dHIgY2xhc3M9InJvdzIiPgo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1UPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij50cmFuc3Bvc2UgbGV0dGVyczwvdGQ+CjwvdHI+Cjx0ciBjbGFzcz0icm93MSI+Cjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1aPC90ZD4KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVo8L3RkPgo8dGQgYWxpZ249ImxlZnQiPnVuZG88L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPic7CiRsYW5nWydoZWxwX2Zyb250ZW5kX3RpdGxlJ10gPSAnIEZyb250ZW5kJzsKJGxhbmdbJ2hlbHBfZnJvbnRlbmRfY29udGVudCddID0gJzxwPlRoaXMgTW9kdWxlIGFuZCBBY2UgU2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRlci48YnIgLz4NClRvIG1ha2UgaXQgd29yayB5b3UgaGF2ZSB0byBpbmNsdWRlIGpRdWVyeSBGcmFtZXdvcmssIGZvciBleGFtcGxlIHVzaW5nIENNU01TIHtjbXNfanF1ZXJ5fSB0YWcgYW5kIGFzIHdlbGwgaW5jbHVkZSB7QWNlRWRpdG9yfSBpbiB5b3VyIHBhZ2UgdHdpY2UuIEZpcnN0IGFkZCB0aGUgbW9kdWxlIHRhZyBpbiB5b3VyICZhbXA7bHQ7aGVhZCZhbXA7Z3Q7IHNlY3Rpb24gb2YgVGVtcGxhdGUgb3IgaW4gJmFtcDtxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZhbXA7cXVvdDsgZmllbGQgb2YgeW91ciBDb250ZW50IHBhZ2UsIGxpa2Uge0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30gYW5kIGFub3RoZXIgY2FsbCB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLCBmb3IgZXhhbXBsZSB7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+DQo8aDM+U28gaG93IGRvIHlvdSB1c2UgaXQ/PC9oMz4NCjxwPkZpcnN0IGluY2x1ZGUgalF1ZXJ5IGFuZCBNb2R1bGUgdGFnIGluIHlvdXIgUGFnZSAmYW1wO2x0O2hlYWQmYW1wO2d0OyBhcmVhLCBmb3IgZXhhbXBsZSBpbiAmYW1wO3F1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJmFtcDtxdW90Ozo8L3A+DQoJPHByZT4NCgl7Y21zX2pxdWVyeX0NCgl7QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fQ0KCTwvcHJlPg0KPHA+VGhpcyBpbmNsdWRlcyBuZWVkZWQgc2NyaXB0cyBmb3IgQWNlIFN5bnRheGhpZ2hsaWdodGVyIHRvIHdvcmsuPGJyIC8+DQpJbiBNb2R1bGVzIEFkbWluIGludGVyZmFjZSB5b3UgY2FuIHNlbGVjdCBkZWZhdWx0IHNldHRpbmdzIGZvciB5b3VyICYjMDM5O2hlYWQmIzAzOTsgYWN0aW9uIG9yIHVzZSBwYXJhbWV0ZXIgbW9kZXM9JiMwMzk7aHRtbCxqYXZhc2NyaXB0JiMwMzk7IGFuZCB0aGVtZXM9JiMwMzk7dGV4dG1hdGUmIzAzOTsgd2hpY2ggd291bGQgb3ZlcnJpZGUgc2VsZWN0ZWQgUHJlZmVyZW5jZXMuPC9wPg0KPHA+Tm93IHdoZW4geW91IGhhdmUgbmVlZGVkIHNjcmlwdHMgaW5jbHVkZWQsIG9uZSBtb3JlIE1vZHVsZSB0YWcgY2FsbCBpcyBuZWVkZWQgKGZvciBleGFtcGxlIGluIHlvdXIgQ29udGVudCBFZGl0b3IgYXJlYSkgdG8gc3BlY2lmeSB3aGljaCBhcmVhIG9mIHlvdXIgUGFnZSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQuPC9wPg0KCTxwcmU+DQoJe0FjZUVkaXRvciBkaXZpZD0mIzAzOTtzb21lLWlkJiMwMzk7fQ0KCTwvcHJlPg0KPHA+VGhpcyB0YWcgaW5jbHVkZXMgbmVlZGVkIFNjcmlwdCBhbmQgU3R5bGUgdGhhdCBpcyB1c2VkIHRvIEhpZ2hsaWdodCBzZWxlY3RlZCBlbGVtZW50IHdpdGggc3BlY2lmaWVkIGlkLjxiciAvPg0KQWxsIHlvdSBuZWVkIHRoZW4gaXMgd3JpdGUgeW91ciBDb2RlIHRoYXQgeW91IHdhbnQgdG8gSGlnaGxpZ2h0IGFuZCB3cmFwIGl0IGluc2lkZSBhbiBlbGVtZW4gbGlrZSAmYW1wO2x0O2RpdiZhbXA7Z3Q7IHdpdGggc3BlY2lmaWVkIGlkLjwvcD4gJzsKJGxhbmdbJ2hlbHBfZnJvbnRlbmRfc2FtcGxlJ10gPSAnPHByZSBpZD0ic29tZS1pZCI+CiZsdDtodG1sJmd0OwogwqAgwqAgJmx0O2hlYWQmZ3Q7CiDCoCDCoCAmbHQ7c3R5bGUgdHlwZT0idGV4dC9jc3MiJmd0OwogwqAgwqAgwqAgwqAgLnRleHQtbGF5ZXIgewogwqAgwqAgwqAgwqAgwqAgwqAgZm9udC1mYW1pbHk6IE1vbmFjbywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwogwqAgwqAgwqAgwqAgwqAgwqAgZm9udC1zaXplOiAxMnB4OwogwqAgwqAgwqAgwqAgwqAgwqAgY3Vyc29yOiB0ZXh0OwogwqAgwqAgwqAgwqAgfQogwqAgwqAgJmx0Oy9zdHlsZSZndDsKIMKgIMKgICZsdDsvaGVhZCZndDsKIMKgIMKgICZsdDtib2R5Jmd0OwogwqAgwqAgwqAgwqAgJmx0O2gxIHN0eWxlPSJjb2xvcjpyZWQiJmd0O0p1aHUgS2lubmVycyZsdDsvaDEmZ3Q7CiDCoCDCoCAmbHQ7L2JvZHkmZ3Q7ICZsdDsvaHRtbCZndDsKPC9wcmU+JzsKJGxhbmdbJ2hlbHBfYWJvdXRfdGl0bGUnXSA9ICdPdmVyJzsKJGxhbmdbJ2hlbHBfYWJvdXRfdGV4dCddID0gJzxoMz5TdXBwb3J0PC9oMz4gDQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDEyLCBHb3JhbiBJbGljIDxhIGhyZWY9Im1haWx0bzp1bmlxdTNlQGdtYWlsLmNvbSI+JmFtcDtsdDt1bmlxdTNlQGdtYWlsLmNvbSZhbXA7Z3Q7PC9hPiA8YSBocmVmPSJodHRwOi8vd3d3LmljaC1tYWNoLWRhcy5hdCIgcmVsPSJleHRlcm5hbCI+d3d3LmljaC1tYWNoLWRhcy5hdDwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQoJPGgzPlRlYW08L2gzPg0KCTx1bD4NCgkJPGxpPkdvcmFuIElsaWMgKHVuaXF1MykgZy5pbGljQGktYXJ0cy5ldSA8YnIgLz53d3cuaWNoLW1hY2gtZGFzLmF0PC9saT4JDQoJCTxsaT5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApIGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcgIDxiciAvPnd3dy5jYWxndXkxMDAwLmNvbTwvbGk+CQkNCgkJPGxpPkpvbmF0aGFuIFNjaG1pZCAoRm9hbHkqKSBoaUBqb25hdGhhbnNjaG1pZC5kZSA8YnIgLz53d3cuam9uYXRoYW5zY2htaWQuZGU8L2xpPg0KCTwvdWw+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJw0KPGgzPlZlcnNpb24gMC4xPC9oMz4NCjx1bD4NCgk8bGk+SXQmIzAzOTtzIGZyZXNoISBOb3RoaW5nIGNoYW5nZWQgeWV0ITwvbGk+DQoJPGxpPlVzaW5nIEFjZSBWZXJzaW9uIDAuMi4wPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjI8L2gzPg0KPHVsPg0KCTxsaT5BZGRlZCBDVFJMLVMgS2V5YmluZGluZzwvbGk+DQoJPGxpPkFkZGVkIEZ1bGxzY3JlZW5tb2RlPC9saT4NCgk8bGk+QWRkZWQgRnJvbnRlbmQgSGlnaGxpZ2h0aW5nPC9saT4NCgk8bGk+VXBkYXRlZCBBY2U8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4xPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgSW50ZXJuZXQgRXhwbG9yZXIgcHJlZmVyZW5jZTwvbGk+DQoJPGxpPlVwZGF0ZWQgQUNFIHdpdGggdGhlbWVzPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMjwvaDM+DQo8dWw+DQoJPGxpPkZpeCBmb3IgU2FmYXJpL01hYzwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjM8L2gzPg0KPHVsPg0KICAgIDxsaT5VcGRhdGVkIHRvIGxhdGVzdCBhY2UgZnJvbSBnaXRodWI8L2xpPg0KICAgIDxsaT5BZGRlZCBhZGRpdGlvbmFsIHByZWZlcmVuY2VzIChNb2RpZnkgVGVtcGxhdGVzLCBBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlKTwvbGk+DQogICAgPGxpPkFkZGVkIGFiaWxpdHkgdG8gY2hhbmdlIEFjZUVkaXRvciBwcmVmZXJlbmNlcyBwZXIgdXNlcjwvbGk+DQogICAgPGxpPk1vdmVkIG1vZHVsZSBmcm9tIGV4dGVuaW9ucyB0byBteXByZWZzPC9saT4NCjwvdWw+DQo8aDM+Um9hZG1hcDwvaDM+DQo8dWw+DQoJPGxpPjxkZWw+QWRkIEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZzwvZGVsPjwvbGk+DQoJPGxpPjxkZWw+QWRkIEZ1bGxzY3JlZW5tb2RlPC9kZWw+PC9saT4NCgk8bGk+PGRlbD5BZGQgS2V5YmluZGluZyAoQ1RSTCtTKTwvZGVsPjwvbGk+DQoJPGxpPkFkZCBFZGl0b3IgYmVoYXZpb3IgKFZpbSwgRU1hY3MpPC9saT4NCgk8bGk+TWF5YmUgYWRkIFRvb2xiYXI8L2xpPg0KPC91bD4gJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTAwMzQzNjU4OS4xMzMwODgyNTgwLjEzMzA4ODI1ODAuMTMzMDg4MjU4MC4xJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTMzMDg4MjU4MC4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sr_YU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0FjZUVkaXRvcic7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQWNlRWRpdG9yIGplIDxlbT5TeW50YXhoaWdobGlnaHRlcjwvZW0+IG1vZHVsIGtvamkga29yaXN0aSA8c3Ryb25nPkFjZTwvc3Ryb25nPiwgZWRpdG9yIGtvZGEgcGlzYW4gdSBKYXZhU2NyaXB0LXUuJzsKJGxhbmdbJ3NldHRpbmdzX3RhYiddID0gJ1ByZWZyZW5jaWplJzsKJGxhbmdbJ2Zyb250ZW5kc2V0dGluZ3NfdGFiJ10gPSAnUHJlZmVyZW5jaWplIHphIGtvcmlzbmnEjWtpIGRlbyc7CiRsYW5nWydmcm9udGVuZF9oZWFkX3NldHRpbmdzJ10gPSAnRnJvbnRlbmQgSGVhZCBQcmVmZXJlbmNlcyc7CiRsYW5nWydmcm9udGVuZF9zeW50YXhhcmVhX3NldHRpbmdzJ10gPSAnRnJvbnRlbmQgU3ludGF4YXJlYSBQcmVmZXJlbmNlcyc7CiRsYW5nWydoZWFkX2Rlc2NyaXB0aW9uJ10gPSAnVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgQWNlIHNjcmlwdHMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gcGFnZSA8Y29kZT48aGVhZD48L2NvZGU+IHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4gZnJvbSBQYWdlIFNwZWNpZmljIE1ldGFkYXRhIG9yIFRlbXBsYXRlLic7CiRsYW5nWydjb250ZW50X2Rlc2NyaXB0aW9uJ10gPSAnVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgU3ludGF4aGlnaGxpZ2h0aW5nIGFyZWEgd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7ZWRpdG9yJiMwMzk7fTwvY29kZT4gdGFnIHdpdGhpbiBhIFBhZ2UuJzsKJGxhbmdbJ3N5bnRheGFyZWFkZXNjcmlwdGlvbiddID0gJ1RoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIEFjZSBiZWhhdmlvciB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0mIzAzOTtmb28mIzAzOTt9PC9jb2RlPiBmcm9tIGEgUGFnZSBvciBUZW1wbGF0ZSc7CiRsYW5nWydleGFtcGxlX2RvY3VtZW50J10gPSAnRG9rdW1lbnQnOwokbGFuZ1snd2lkdGhfdGl0bGUnXSA9ICcmU2Nhcm9uO2lyaW5hIGVkaXRvcmEgKHUgZW0pJzsKJGxhbmdbJ2hlaWdodF90aXRsZSddID0gJ1Zpc2luYSBlZGl0b3JhICh1IGVtKSc7CiRsYW5nWydlbmFibGVfaWUnXSA9ICdPbW9ndcSHaSBpIHphIEludGVybmV0IEV4cGxvcmVyJzsKJGxhbmdbJ2VuYWJsZV9pZWRlc2NyaXB0aW9uJ10gPSAnPGVtPkFjZSBTeW50YXhoaWdobGlnaHRlcjwvZW0+IG5lIHJhZGkgYmEmc2Nhcm9uOyBuYWpib2xqZSB1IEludGVybmV0IEV4cGxvcmVydS4gT3Z1IG9wY2lqdSB1a2xqdcSNaXRlIG5hIHNvcHN0dmVuaSByaXppayEnOwokbGFuZ1snZnJvbnRlbmRfd2lkdGhfdGl0bGUnXSA9ICcmU2Nhcm9uO2lyaW5hIHphIGtvcmlzbmnEjWtpIGRlbyAodSBweCknOwokbGFuZ1snZnJvbnRlbmRfaGVpZ2h0X3RpdGxlJ10gPSAnVmlzaW5hIHphIGtvcmlzbmnEjWtpIGRlbyAodSBweCknOwokbGFuZ1snc3ludGF4X21vZGUnXSA9ICdNb2QgcmFkYSc7CiRsYW5nWyd0aGVtZXMnXSA9ICdUZW1hJzsKJGxhbmdbJ2ZvbnRfc2l6ZSddID0gJ1ZlbGnEjWluYSBmb250YSc7CiRsYW5nWydmdWxsX2xpbmUnXSA9ICdTZWxla3R1aiBjZWx1IGxpbmlqdSc7CiRsYW5nWydoaWdobGlnaHRfYWN0aXZlJ10gPSAnT3puYcSNaSBha3Rpdm51IGxpbmlqdSc7CiRsYW5nWydzaG93X2ludmlzaWJsZXMnXSA9ICdQcmlrYcW+aSBuZXZpZGxqaXZlIGthcmFrdGVyZSc7CiRsYW5nWydwZXJzaXN0ZW50X2hzY3JvbGwnXSA9ICdQZXJzaXRlbnQgSFNjcm9sbCc7CiRsYW5nWydrZXlfYmluZGluZyddID0gJ0tleSBCaW5kaW5nJzsKJGxhbmdbJ3NvZnRfd3JhcCddID0gJ1ByZWxhbWFuamUgbGluaWphJzsKJGxhbmdbJ3Nob3dfZ3V0dGVyJ10gPSAnUHJpa2HFvmkgPGVtPkd1dHRlcjwvZW0+JzsKJGxhbmdbJ3ByaW50X21hcmdpbiddID0gJ1ByaWthxb5pIG1hcmdpbnUgemEgJnNjYXJvbjt0YW1wdSc7CiRsYW5nWydzb2Z0X3RhYiddID0gJ1VzZSBTb2Z0IFRhYic7CiRsYW5nWydoaWdobGlnaHRfc2VsZWN0ZWQnXSA9ICdPem5hxI1pIHNlbGVrdG92YW51IHJlxI0nOwokbGFuZ1snZW5hYmxlX2JlaGF2aW9ycyddID0gJ0VuYWJsZSBCZWhhdmlvcnMnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnUHJlZ2xlZCc7CiRsYW5nWydqcyddID0gJ0phdmFTY3JpcHQnOwokbGFuZ1sncGxhaW4nXSA9ICdPYmnEjW5pIHRla3N0JzsKJGxhbmdbJ3N2ZyddID0gJ1NWRyc7CiRsYW5nWydodG1sJ10gPSAnSFRNTCc7CiRsYW5nWydjc3MnXSA9ICdDU1MnOwokbGFuZ1snc2NzcyddID0gJ1NDU1MnOwokbGFuZ1snY29mZmVlJ10gPSAnQ29mZmVlU2NyaXB0JzsKJGxhbmdbJ2pzb24nXSA9ICdKU09OJzsKJGxhbmdbJ3B5dGhvbiddID0gJ1B5dGhvbic7CiRsYW5nWydydWJ5J10gPSAnUnVieSc7CiRsYW5nWydwZXJsJ10gPSAnUGVybCc7CiRsYW5nWydwaHAnXSA9ICdQSFAnOwokbGFuZ1snamF2YSddID0gJ0phdmEnOwokbGFuZ1snY3NoYXJwJ10gPSAnQyMnOwokbGFuZ1snY19jcHAnXSA9ICdDKysnOwokbGFuZ1snY2xvanVyZSddID0gJ0Nsb2p1cmUnOwokbGFuZ1snb2NhbWwnXSA9ICdPQ2FtbCc7CiRsYW5nWyd0ZXh0aWxlJ10gPSAnVGV4dGlsZSc7CiRsYW5nWydncm9vdnknXSA9ICdHcm9vdnknOwokbGFuZ1snc2NhbGEnXSA9ICdTY2FsYSc7CiRsYW5nWydjbG91ZHMnXSA9ICdDbG91ZHMnOwokbGFuZ1snY2hyb21lJ10gPSAnQ2hyb21lJzsKJGxhbmdbJ2Nsb3Vkc19taWRuaWdodCddID0gJ0Nsb3VkcyBNaWRuaWdodCc7CiRsYW5nWydjb2JhbHQnXSA9ICdDb2JhbHQnOwokbGFuZ1snY3JpbXNvbl9lZGl0b3InXSA9ICdDcmltc29uIEVkaXRvcic7CiRsYW5nWydkYXduJ10gPSAnRGF3bic7CiRsYW5nWydkcmVhbXdlYXZlciddID0gJ0RyZWFtd2VhdmVyJzsKJGxhbmdbJ2VjbGlwc2UnXSA9ICdFY2xpcHNlJzsKJGxhbmdbJ2lkbGVfZmluZ2VycyddID0gJ2lkbGVGaW5nZXJzJzsKJGxhbmdbJ2tyX3RoZW1lJ10gPSAna3JUaGVtZSc7CiRsYW5nWydtZXJiaXZvcmUnXSA9ICdNZXJiaXZvcmUnOwokbGFuZ1snbWVyYml2b3JlX3NvZnQnXSA9ICdNZXJiaXZvcmUgU29mdCc7CiRsYW5nWydtb25vX2luZHVzdHJpYWwnXSA9ICdNb25vIEluZHVzdHJpYWwnOwokbGFuZ1snbW9ub2thaSddID0gJ01vbm9rYWknOwokbGFuZ1sncGFzdGVsX29uX2RhcmsnXSA9ICdQYXN0ZWwgb24gZGFyayc7CiRsYW5nWydzb2xhcml6ZWRfZGFyayddID0gJ1NvbGFyaXplZCBEYXJrJzsKJGxhbmdbJ3NvbGFyaXplZF9saWdodCddID0gJ1NvbGFyaXplZCBMaWdodCc7CiRsYW5nWyd0ZXh0bWF0ZSddID0gJ1RleHRNYXRlJzsKJGxhbmdbJ3RvbW9ycm93J10gPSAnVG9tb3Jyb3cnOwokbGFuZ1sndG9tb3Jyb3dfbmlnaHQnXSA9ICdUb21vcnJvdyBOaWdodCc7CiRsYW5nWyd0b21vcnJvd19uaWdodF9icmlnaHQnXSA9ICdUb21vcnJvdyBOaWdodCBCcmlnaHQnOwokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfYmx1ZSddID0gJ1RvbW9ycm93IE5pZ2h0IEJsdWUnOwokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMnXSA9ICdUb21vcnJvdyBOaWdodCBFaWdodGllcyc7CiRsYW5nWyd0d2lsaWdodCddID0gJ1R3aWxpZ2h0JzsKJGxhbmdbJ3ZpYnJhbnRfaW5rJ10gPSAnVmlicmFudCBJbmsnOwokbGFuZ1snYWNlJ10gPSAnQWNlJzsKJGxhbmdbJ3ZpbSddID0gJ1ZpbSc7CiRsYW5nWydlbWFjcyddID0gJ0VNYWNzJzsKJGxhbmdbJ2N1c3RvbSddID0gJ0tvcmlzbmnEjWtpIGRlZmluaXNhbm8nOwokbGFuZ1snb2ZmJ10gPSAnSXNrbGp1xI1lbm8nOwokbGFuZ1snNDAnXSA9ICc0MCBrYXJha3RlcmEnOwokbGFuZ1snODAnXSA9ICc4MCBrYXJha3RlcmEnOwokbGFuZ1snMTAwJ10gPSAnMTAwIGthcmFrdGVyYSc7CiRsYW5nWycxNDAnXSA9ICcxNDAga2FyYWt0ZXJhJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ1NhxI11dmFqIHBvZGUmc2Nhcm9uO2F2YW5qYSc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnVmEmc2Nhcm9uO2EgcG9kZSZzY2Fyb247YXZhbmphIEFjZUVkaXRvcmEgc3Ugc2HEjXV2YW5hJzsKJGxhbmdbJ2Zyb250ZW5kc2V0dGluZ3NzYXZlZCddID0gJ1ZhJnNjYXJvbjthIHBvZGUmc2Nhcm9uO2F2YW5qYSBBY2VFZGl0b3JhIHphIGtvcmlzbmnEjWtpIGRlbyBzYWp0YSBzdSBzYcSNdXZhbmEnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdBY2VFZGl0b3IgamUgdXNwZSZzY2Fyb247bm8gaW5zdGFsaXJhbiEgUG9kZXNpdGUgJnF1b3Q7TWVuamFuamUgcG9kZSZzY2Fyb247YXZhbmphIHNhanRhJnF1b3Q7IGRvenZvbGUgZGEgYmlzdGUga29yaXN0aWxpIG92YWogbW9kdWwuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdBY2VFZGl0b3IgamUgdXNwZSZzY2Fyb247bm8gZGVpbnN0YWxpcmFuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdTdHZhcm5vPyBTaWd1cm5pIHN0ZSBkYSDFvmVsaXRlIGRhIGRlaW5zdGFsaXJhdGUgQWNlRWRpdG9yPyBSYXptaXNsaXRlIGpvJnNjYXJvbjsgamVkbm9tLi4uJzsKJGxhbmdbJ2hlbHBfcGFyYW1fYWN0aW9uJ10gPSAnaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFjdGlvbiBvZiBNb2R1bGUgdGFnLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICYjMDM5O2RlZmF1bHQmIzAzOTsgYW5kICYjMDM5O2hlYWQmIzAzOTsuIEJvdGggYXJlIG5lZWRlZCBmb3IgY29ycmVjdCBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRpbmcgZnVuY3Rpb24uIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmhlYWQ8L2xpPg0KCTxsaT5kZWZhdWx0PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZXMnXSA9ICdpcyB1c2VkIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+LiBZb3UgY2FuIGluY2x1ZGUgbXVsdGlwbGUgY29tbWEgc2VwYXJhdGVkICYjMDM5O21vZGVzJiMwMzk7IHRoYXQgeW91IHdpbGwgYmUgdXNpbmcgb24geW91ciB3ZWJzaXRlLiBUaGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB5b3VyIDxoZWFkPiBvZiBUZW1wbGF0ZSBvciBQYWdlIHNwZWNpZmljIE1ldGFkYXRhLiBUaGlzIHdpbGwgb3ZlcnJpZGUgeW91IFByZWZlcmVuY2VzIHNlbGVjdGVkIGluIE1vZHVsZSBBZG1pbiBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KCTxsaT5qYXZhc2NyaXB0PC9saT4gDQoJPGxpPnBsYWluPC9saT4gDQoJPGxpPnN2ZzwvbGk+IA0KCTxsaT5odG1sPC9saT4NCgk8bGk+Y3NzPC9saT4NCgk8bGk+c2NzczwvbGk+DQoJPGxpPmNvZmZlZTwvbGk+DQoJPGxpPmpzb248L2xpPg0KCTxsaT5weXRob248L2xpPg0KCTxsaT5ydWJ5PC9saT4NCgk8bGk+cGVybDwvbGk+DQoJPGxpPnBocDwvbGk+DQoJPGxpPmphdmE8L2xpPg0KCTxsaT5jc2hhcnA8L2xpPg0KCTxsaT5jX2NwcDwvbGk+DQoJPGxpPmNsb2p1cmU8L2xpPg0KCTxsaT5vY2FtbDwvbGk+DQoJPGxpPnRleHRpbGU8L2xpPg0KCTxsaT5ncm9vdnk8L2xpPg0KCTxsaT5zY2FsYTwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwX3BhcmFtX3RoZW1lcyddID0gJ2lzIHVzZWQgd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4uIFlvdSBjYW4gaW5jbHVkZSBtdWx0aXBsZSBjb21tYSBzZXBhcmF0ZWQgJiMwMzk7dGhlbWVzJiMwMzk7IHRoYXQgeW91IHdpbGwgYmUgdXNpbmcgb24geW91ciB3ZWJzaXRlLiBUaGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB5b3VyIDxoZWFkPiBvZiBUZW1wbGF0ZSBvciBQYWdlIHNwZWNpZmljIE1ldGFkYXRhLiBUaGlzIHdpbGwgb3ZlcnJpZGUgeW91IFByZWZlcmVuY2VzIHNlbGVjdGVkIGluIE1vZHVsZSBBZG1pbiBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KCTxsaT5jbG91ZHM8L2xpPiANCgk8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4gDQoJPGxpPmNvYmFsdDwvbGk+IA0KCTxsaT5jcmltc29uX2VkaXRvcjwvbGk+DQoJPGxpPmRhd248L2xpPg0KCTxsaT5lY2xpcHNlPC9saT4NCgk8bGk+aWRsZV9maW5nZXJzPC9saT4NCgk8bGk+a3JfdGhlbWU8L2xpPg0KCTxsaT5tZXJiaXZvcmU8L2xpPg0KCTxsaT5tZXJiaXZvcmVfc29mdDwvbGk+DQoJPGxpPm1vbm9faW5kdXN0cmlhbDwvbGk+DQoJPGxpPm1vbm9rYWk8L2xpPg0KCTxsaT5wYXN0ZWxfb25fZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2xpZ2h0PC9saT4NCgk8bGk+dGV4dG1hdGU8L2xpPg0KCTxsaT50d2lsaWdodDwvbGk+DQoJPGxpPnZpYnJhbnRfaW5rPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZSddID0gJ2lzIHVzZWQgd2l0aGluIGEgcGFnZSB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2RlZmF1bHQmIzAzOTt9PC9jb2RlPiBtb2R1bGUgdGFnLiBUaGlzIHNwZWNpZmllcyBTeW50YXhoaWdobGlnaHRlciBtb2RlIGZvciBzcGVjaWZpYyBjb2RlIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmphdmFzY3JpcHQ8L2xpPiANCgk8bGk+cGxhaW48L2xpPiANCgk8bGk+c3ZnPC9saT4gDQoJPGxpPmh0bWw8L2xpPg0KCTxsaT5jc3M8L2xpPg0KCTxsaT5zY3NzPC9saT4NCgk8bGk+Y29mZmVlPC9saT4NCgk8bGk+anNvbjwvbGk+DQoJPGxpPnB5dGhvbjwvbGk+DQoJPGxpPnJ1Ynk8L2xpPg0KCTxsaT5wZXJsPC9saT4NCgk8bGk+cGhwPC9saT4NCgk8bGk+amF2YTwvbGk+DQoJPGxpPmNzaGFycDwvbGk+DQoJPGxpPmNfY3BwPC9saT4NCgk8bGk+Y2xvanVyZTwvbGk+DQoJPGxpPm9jYW1sPC9saT4NCgk8bGk+dGV4dGlsZTwvbGk+DQoJPGxpPmdyb292eTwvbGk+DQoJPGxpPnNjYWxhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWUnXSA9ICdpcyB1c2VkIHdpdGhpbiBhIHBhZ2Ugd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtkZWZhdWx0JiMwMzk7fTwvY29kZT4gbW9kdWxlIHRhZy4gVGhpcyBzcGVjaWZpZXMgU3ludGF4aGlnaGxpZ2h0ZXIgdGhlbWUgZm9yIHNwZWNpZmljIGNvZGUgYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+Y2xvdWRzPC9saT4gDQoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IA0KCTxsaT5jb2JhbHQ8L2xpPiANCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KCTxsaT5kYXduPC9saT4NCgk8bGk+ZWNsaXBzZTwvbGk+DQoJPGxpPmlkbGVfZmluZ2VyczwvbGk+DQoJPGxpPmtyX3RoZW1lPC9saT4NCgk8bGk+bWVyYml2b3JlPC9saT4NCgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KCTxsaT5tb25va2FpPC9saT4NCgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQoJPGxpPnRleHRtYXRlPC9saT4NCgk8bGk+dHdpbGlnaHQ8L2xpPg0KCTxsaT52aWJyYW50X2luazwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwX3BhcmFtX3dpZHRoJ10gPSAnb2RyZcSRdWplICZzY2Fyb247aXJpbnUgU3ludGF4aGlnaGxpZ2h0ZXIgdSBwaWtzZWxpbWEuJzsKJGxhbmdbJ2hlbHBfcGFyYW1faGVpZ2h0J10gPSAnb2RyZcSRdWplIHZpc2ludSBTeW50YXhoaWdobGlnaHRlciB1IHBpa3NlbGltYS4nOwokbGFuZ1snaGVscF9wYXJhbV9kaXZpZCddID0gJ0lEIGVsZW1lbnRhIGtvamkgc2FkcsW+aSBWYSZzY2Fyb247IGtvZC4gS29yaXN0aXRlIGplZGluc3R2ZW51IElEIG96bmFrdSB6YSBzdmFraSBrb21hZCBrb2RhLic7CiRsYW5nWydoZWxwX2dlbmVyYWxfdGl0bGUnXSA9ICdPcCZzY2Fyb247dGEnOwokbGFuZ1snaGVscF9nZW5lcmFsX3RleHQnXSA9ICc8aDM+JlNjYXJvbjt0YSBvdm8gcmFkaT88L2gzPg0KPHA+QWNlRWRpdG9yIGplIFN5bnRheGhpZ2hsaWdodGVyIG1vZHVsIGtvamkga29yaXN0aSA8c3Ryb25nPkFjZTwvc3Ryb25nPiBlZGl0b3Iga29kYSBwaXNhbiB1IEphdmFTY3JpcHQtdS48YnIgLz4gDQpOYW1qZXJhIGdydXBlIGtvamEgcmF6dmlqYSBBY2UgZWRpdG9yIGtvZGEgamUgc3R2YXJhbmplIGVkaXRvcmEga29kYSBuYW1lbmplbm9nIFZlYnUga29qaSBpbWEgaXN0ZSBpIMSNYWsgYm9samUgbW9ndcSHbm9zdGksIHVwb3RyZWJsaml2b3N0IGkgcGVyZm9ybWFuc2Uga2FvIHBvc3RvamXEh2kgZWRpdG9yIHRpcGEgVGV4dE1hdGUsIFZpbSBpbGkgRWNsaXBzZS48YnIgLz4NCkxha28gc2UgbW/FvmUgaW1wbGVtZW50aXJhcmkgdSBiaWxvIGtvanUgVmViIHN0cmFuaWN1IGkgSmF2YVNjcmlwdCBhcGxpa2FjaWp1LjxiciAvPiANCkFjZSBqZSByYXp2aWphbiBrYW8gcHJpbWFybmkgZWRpdG9yIHphIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2xvdWQ5aWRlLmNvbSI+Q2xvdWQ5IElERTwvYT4gaSBuYXNsZWRuaWsgamUgTW96aWxsYSBTa3l3cml0ZXIgKEJlc3BpbikgUHJvamVrdGEuPC9wPg0KPGgzPkFjZSBqZSBob3N0b3ZhbiBuYSBHaXRIdWItdTwvaDM+DQo8cD5JenZvcm5pIGtvZCBBY2UgZWRpdG9yYSBqZSBob3N0b3ZhbiBuYSBHaXRIdWItdS4gUG9kbGXFvmUgdHJvc3RydWtvaiBNb3ppbGxhIGxpY2VuY2kgKE1QTC9HUEwvTEdQTCkuPGJyIC8+DQpJc3R1IGxpY2VuY3Uga29yaXN0aSBGaXJlZm94LiBPdmEgbGljZW5jYSBqZSBuYWtsb25qZW5hIHN2aW0gdnJzdGFtYSBwcm9qZWthdGEsIGJpbG8gZGEgc3UgPGVtPm9wZW4gc291cmNlPC9lbT4gaWxpIG5lLjxiciAvPg0KIFRha2UgY2hhcmdlIG9mIHlvdXIgZWRpdG9yIGFuZCBhZGQgeW91ciBmYXZvcml0ZSBsYW5ndWFnZSBoaWdobGlnaHRpbmcgYW5kIGtleWJpbmRpbmdzITwvcD4NCjxoMz5LYWtvIHNlIGtvcmlzdGk/PC9oMz4NCjxwPlVwb3RlYmEgQWNlRWRpdG9yIE1vZHVsYSBqZSBwcm9zdGEuPGJyIC8+DQpOYWtvbiAmc2Nhcm9uO3RvIGluc3RhbGlyYXRlIEFjZUVkaXRvciBpZGl0ZSBuYSAmcXVvdDtNb2plIHByZWZlcmVuY2lqZSAmcmFxdW87IEtvcmlzbmnEjWtlIHByZWZlcmVuY2lqZSZxdW90OyBpIGl6YWJlcml0ZSBBY2VFZGl0b3Iga2FvIFZhJnNjYXJvbjsgPGVtPnN5bnRheGhpZ2hsaWdodGVyPC9lbT4gdSAmcXVvdDtJemFiZXJpdGUgc3ludGF4IGhpZ2hsaWdodGVyIHphIHVwb3RyZWJ1OiZxdW90OyBwYWRhanXEh29qIGxpc3RpLjxiciAvPg0KUG9zdGFyYWp0ZSBzZSBkYSBpbWF0ZSBkb3p2b2x1ICZxdW90O01lbmphbmplIHBvZGUmc2Nhcm9uO2F2YW5qYSBzYWp0YSZxdW90Oy48L3A+DQo8aDM+UG9kZSZzY2Fyb247YXZhbmphPC9oMz4NCjxwPk1vxb5ldGUgcHJvbWVuaXRpIHBvZHJhenVtZXZhbmEgcG9kZSZzY2Fyb247YXZhbmphIGkgdGVtZSBuYWtvIG9kZXRlIG5hICZxdW90O0Vrc3RlbnppamUgJnJhcXVvOyBBY2VFZGl0b3ImcXVvdDs8L3A+JzsKJGxhbmdbJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfdGl0bGUnXSA9ICdQcmXEjWljZSBuYSB0YXN0YXR1cmknOwokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50J10gPSAnICAgICAgPGgzPlBvZHJhenVtZW5hbmUgcHJlxI1pY2UgbmEgdGFzdGF0dXJpPC9oMz4NCg0KPHRhYmxlIGNsYXNzPSZxdW90O3BhZ2V0YWJsZSZxdW90OyBjZWxsc3BhY2luZz0mcXVvdDswJnF1b3Q7IHN1bW1hcnk9JnF1b3Q7RGVmYXVsdCBLZXlib2FyZCBTaG9ydGN1dHMmcXVvdDs+DQo8dGhlYWQ+PHRyPg0KPHRoPlBDIChXaW5kb3dzL0xpbnV4KTwvdGQ+DQo8dGg+TWFjPC90ZD4NCjx0aD5hY3Rpb248L3RkPg0KPC90cj48L3RoZWFkPg0KPHRib2R5Pg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVJldHVybjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVJldHVybjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5mdWxsc2NyZWVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtUzwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVM8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cGVyZm9ybSBzYXZlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUw8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Y2VudGVyIHNlbGVjdGlvbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUFsdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtT3B0aW9uLURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Y29weSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgbGNhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtQWx0LVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmNvcHkgbGluZXMgdXA8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtRjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5maW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtSzwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLUc8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+ZmluZCBuZXh0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtSzwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVNoaWZ0LUc8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+ZmluZCBwcmV2aW91czwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkRvd24sQ3RybC1OPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIGxpbmUgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5VcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5VcCxDdHJsLVA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gbGluZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUVuZCxDdHJsLURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkxlZnQsQ3RybC1CPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1MPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtTDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1SaWdodCxFbmQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1MZWZ0LEhvbWU8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1MZWZ0LEhvbWUsQ3RybC1BPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UGFnZURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLVBhZ2VEb3duLEN0cmwtVjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gcGFnZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5SaWdodCxDdHJsLUY8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1Ib21lLEN0cmwtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1Ib21lLENvbW1hbmQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Z28gdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PmdvIHRvIHdvcmQgbGVmdDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5nbyB0byB3b3JkIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlRhYjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5UYWI8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+aW5kZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pk9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pm1vdmUgbGluZXMgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pm1vdmUgbGluZXMgdXA8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtVGFiPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVRhYjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5vdXRkZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7Pkluc2VydDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+b3ZlcndyaXRlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5wYWdlZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz48L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+UGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnBhZ2V1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LVosQ3RybC1ZPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVkbzwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1EPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUs8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSB0byBsaW5lc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1CYWNrc3BhY2UsQ3RybC1BbHQtQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnJlbW92ZSB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkFsdC1EZWxldGU8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1SPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+cmVwbGFjZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LVI8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1PcHRpb24tRjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5yZXBsYWNlIGFsbDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLUE8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1BPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgbGVmdDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1FbmQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtRW5kPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1Ib21lPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LUhvbWU8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cyJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHBhZ2UgZG93bjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5TaGlmdC1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtUGFnZVVwPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5Db21tYW5kLVNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHRvIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzImcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5BbHQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+QWx0LVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC1TaGlmdC1VcDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3QgdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+U2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c2VsZWN0IHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5zZWxlY3Qgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+T3B0aW9uLVNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnNlbGVjdCB3b3JkIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLU88L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+c3BsaXQgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSZxdW90O3JvdzEmcXVvdDs+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLTc8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q29tbWFuZC03PC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PnRvZ2dsZSBjb21tZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9JnF1b3Q7cm93MiZxdW90Oz4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz5DdHJsLVQ8L3RkPg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+dHJhbnNwb3NlIGxldHRlcnM8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSZxdW90O2xlZnQmcXVvdDs+Q3RybC1aPC90ZD4NCjx0ZCBhbGlnbj0mcXVvdDtsZWZ0JnF1b3Q7PkNvbW1hbmQtWjwvdGQ+DQo8dGQgYWxpZ249JnF1b3Q7bGVmdCZxdW90Oz51bmRvPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOwokbGFuZ1snaGVscF9mcm9udGVuZF90aXRsZSddID0gJ0tvcmlzbmnEjWtpIGRlbyc7CiRsYW5nWydoZWxwX2Zyb250ZW5kX2NvbnRlbnQnXSA9ICc8cD5UaGlzIE1vZHVsZSBhbmQgQWNlIFNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0ZXIuPGJyIC8+DQpUbyBtYWtlIGl0IHdvcmsgeW91IGhhdmUgdG8gaW5jbHVkZSBqUXVlcnkgRnJhbWV3b3JrLCBmb3IgZXhhbXBsZSB1c2luZyBDTVNNUyB7Y21zX2pxdWVyeX0gdGFnIGFuZCBhcyB3ZWxsIGluY2x1ZGUge0FjZUVkaXRvcn0gaW4geW91ciBwYWdlIHR3aWNlLiBGaXJzdCBhZGQgdGhlIG1vZHVsZSB0YWcgaW4geW91ciA8aGVhZD4gc2VjdGlvbiBvZiBUZW1wbGF0ZSBvciBpbiAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGRhdGEmcXVvdDsgZmllbGQgb2YgeW91ciBDb250ZW50IHBhZ2UsIGxpa2Uge0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30gYW5kIGFub3RoZXIgY2FsbCB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLCBmb3IgZXhhbXBsZSB7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+DQo8aDM+U28gaG93IGRvIHlvdSB1c2UgaXQ/PC9oMz4NCjxwPkZpcnN0IGluY2x1ZGUgalF1ZXJ5IGFuZCBNb2R1bGUgdGFnIGluIHlvdXIgUGFnZSA8aGVhZD4gYXJlYSwgZm9yIGV4YW1wbGUgaW4gJnF1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJnF1b3Q7OjwvcD4NCgk8cHJlPg0KCXtjbXNfanF1ZXJ5fQ0KCXtBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIGluY2x1ZGVzIG5lZWRlZCBzY3JpcHRzIGZvciBBY2UgU3ludGF4aGlnaGxpZ2h0ZXIgdG8gd29yay48YnIgLz4NCkluIE1vZHVsZXMgQWRtaW4gaW50ZXJmYWNlIHlvdSBjYW4gc2VsZWN0IGRlZmF1bHQgc2V0dGluZ3MgZm9yIHlvdXIgJiMwMzk7aGVhZCYjMDM5OyBhY3Rpb24gb3IgdXNlIHBhcmFtZXRlciBtb2Rlcz0mIzAzOTtodG1sLGphdmFzY3JpcHQmIzAzOTsgYW5kIHRoZW1lcz0mIzAzOTt0ZXh0bWF0ZSYjMDM5OyB3aGljaCB3b3VsZCBvdmVycmlkZSBzZWxlY3RlZCBQcmVmZXJlbmNlcy48L3A+DQo8cD5Ob3cgd2hlbiB5b3UgaGF2ZSBuZWVkZWQgc2NyaXB0cyBpbmNsdWRlZCwgb25lIG1vcmUgTW9kdWxlIHRhZyBjYWxsIGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUgaW4geW91ciBDb250ZW50IEVkaXRvciBhcmVhKSB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgb2YgeW91ciBQYWdlIHNob3VsZCBiZSBoaWdobGlnaHRlZC48L3A+DQoJPHByZT4NCgl7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O3NvbWUtaWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIHRhZyBpbmNsdWRlcyBuZWVkZWQgU2NyaXB0IGFuZCBTdHlsZSB0aGF0IGlzIHVzZWQgdG8gSGlnaGxpZ2h0IHNlbGVjdGVkIGVsZW1lbnQgd2l0aCBzcGVjaWZpZWQgaWQuPGJyIC8+DQpBbGwgeW91IG5lZWQgdGhlbiBpcyB3cml0ZSB5b3VyIENvZGUgdGhhdCB5b3Ugd2FudCB0byBIaWdobGlnaHQgYW5kIHdyYXAgaXQgaW5zaWRlIGFuIGVsZW1lbiBsaWtlIDxkaXY+IHdpdGggc3BlY2lmaWVkIGlkLjwvcD4nOwokbGFuZ1snaGVscF9mcm9udGVuZF9zYW1wbGUnXSA9ICc8cHJlIGlkPSZxdW90O3NvbWUtaWQmcXVvdDs+DQo8aHRtbD4NCiAmbmJzcDsgJm5ic3A7IDxoZWFkPg0KICZuYnNwOyAmbmJzcDsgPHN0eWxlIHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDs+DQogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IC50ZXh0LWxheWVyIHsNCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBmb250LWZhbWlseTogTW9uYWNvLCAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOw0KICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGZvbnQtc2l6ZTogMTJweDsNCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBjdXJzb3I6IHRleHQ7DQogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IH0NCiAmbmJzcDsgJm5ic3A7IDwvc3R5bGU+DQogJm5ic3A7ICZuYnNwOyA8L2hlYWQ+DQogJm5ic3A7ICZuYnNwOyA8Ym9keT4NCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgPGgxIHN0eWxlPSZxdW90O2NvbG9yOnJlZCZxdW90Oz5KdWh1IEtpbm5lcnM8L2gxPg0KICZuYnNwOyAmbmJzcDsgPC9ib2R5PiA8L2h0bWw+DQo8L3ByZT4nOwokbGFuZ1snaGVscF9hYm91dF90aXRsZSddID0gJ08gbW9kdWx1JzsKJGxhbmdbJ2hlbHBfYWJvdXRfdGV4dCddID0gJzxoMz5Qb2RyJnNjYXJvbjtrYTwvaDM+DQo8cD5VIHNrbGFkdSBzYSBHUEwsIG92YWogc29mdHZlciBWYW0gamUgcHJ1xb5lbiAmcXVvdDt1IHZpxJFlbm9tIHN0YW5qdSZxdW90Oy4gTW9saW1vIHByb8SNaXRhanRlIGxpY2VuY3UgemEgxI1pdGF2dSBpemphdnUgbyBvZHJpY2FuanUgb2Qgb2Rnb3Zvcm5vc3RpLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBHb3JhbiBJbGljIDxhIGhyZWY9Im1haWx0bzp1bmlxdTNlQGdtYWlsLmNvbSI+PHVuaXF1M2VAZ21haWwuY29tPjwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy5pY2gtbWFjaC1kYXMuYXQiIHJlbD0iZXh0ZXJuYWwiPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KCTxoMz5UaW08L2gzPg0KCTx1bD4NCgkJPGxpPkdvcmFuIElsaWMgKHVuaXF1MykgZy5pbGljQGktYXJ0cy5ldSA8YnIgLz53d3cuaWNoLW1hY2gtZGFzLmF0PC9saT4JDQoJCTxsaT5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApIGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcgIDxiciAvPnd3dy5jYWxndXkxMDAwLmNvbTwvbGk+CQkNCgkJPGxpPkpvbmF0aGFuIFNjaG1pZCAoRm9hbHkqKSBoaUBqb25hdGhhbnNjaG1pZC5kZSA8YnIgLz53d3cuam9uYXRoYW5zY2htaWQuZGU8L2xpPg0KCTwvdWw+DQonOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPGgzPlZlcnNpb24gMC4xPC9oMz4NCjx1bD4NCgk8bGk+SXQmIzAzOTtzIGZyZXNoISBOb3RoaW5nIGNoYW5nZWQgeWV0ITwvbGk+DQoJPGxpPlVzaW5nIEFjZSBWZXJzaW9uIDAuMi4wPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjI8L2gzPg0KPHVsPg0KCTxsaT5BZGRlZCBDVFJMLVMgS2V5YmluZGluZzwvbGk+DQoJPGxpPkFkZGVkIEZ1bGxzY3JlZW5tb2RlPC9saT4NCgk8bGk+QWRkZWQgRnJvbnRlbmQgSGlnaGxpZ2h0aW5nPC9saT4NCgk8bGk+VXBkYXRlZCBBY2U8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4xPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgSW50ZXJuZXQgRXhwbG9yZXIgcHJlZmVyZW5jZTwvbGk+DQoJPGxpPlVwZGF0ZWQgQUNFIHdpdGggdGhlbWVzPC9saT4NCjwvdWw+DQo8aDM+Um9hZG1hcDwvaDM+DQo8dWw+DQoJPGxpPjxkZWw+QWRkIEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZzwvZGVsPjwvbGk+DQoJPGxpPjxkZWw+QWRkIEZ1bGxzY3JlZW5tb2RlPC9kZWw+PC9saT4NCgk8bGk+PGRlbD5BZGQgS2V5YmluZGluZyAoQ1RSTCtTKTwvZGVsPjwvbGk+DQoJPGxpPkFkZCBFZGl0b3IgYmVoYXZpb3IgKFZpbSwgRU1hY3MpPC9saT4NCgk8bGk+TWF5YmUgYWRkIFRvb2xiYXI8L2xpPg0KPC91bD4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4zNDc4OTQyMTAuMTMyNzMyMDAxMC4xMzI3MzIwMDEwLjEzMjczMjAwMTAuMSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMjczMjAwMTAuMS4xLnV0bWNjbj0oZGlyZWN0KXx1dG1jc3I9KGRpcmVjdCl8dXRtY21kPShub25lKSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7CgovLyBCYWNrZW5kIGVkaXRvciBwcmVmcwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnd2lkdGgnLCAnODAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hlaWdodCcsICc0MCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbW9kZScsICdodG1sJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aGVtZScsICd0ZXh0bWF0ZScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZm9udHNpemUnLCAnMTJweCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnVsbF9saW5lJywgMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbmFibGVfaWUnLCAwKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Nob3dfaW52aXNpYmxlcycsIDApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc29mdF93cmFwJywgJzgwLDgwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWdobGlnaHRfYWN0aXZlJywgMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwZXJzaXN0ZW50X2hzY3JvbGwnLCAxKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleV9iaW5kaW5nJywgJ2FjZScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc29mdF90YWInLCAxKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ByaW50X21hcmdpbicsIDApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlnaGxpZ2h0X3NlbGVjdGVkJywgMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbmFibGVfYmVoYXZpb3JzJywgMSk7CgovLyBGcm9udGVuZCBzeW50YXhhcmVhIHByZWZzCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9tb2RlJywgJ2h0bWwnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3N5bnRheGFyZWFfbW9kZScsICdodG1sJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJywgJ3RleHRtYXRlJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcm9udGVuZF90aGVtZScsICd0ZXh0bWF0ZScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfZm9udHNpemUnLCAnMTJweCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfd2lkdGgnLCAnNTAwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9oZWlnaHQnLCAnNDAwJyk7CgovLyBwZXJtaXNzaW9ucwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZScsICdBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7CgokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEFjZUVkaXRvciAtIFN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yIGh0dHA6Ly9hY2UuYWpheC5vcmcvLgojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkKCWV4aXQ7Cgpzd2l0Y2ggKCRvbGR2ZXJzaW9uKSB7CgljYXNlICcwLjIuMCc6CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VuYWJsZV9pZScsIDApOwoJY2FzZSAnMC4yLjInOgoJCS8vIHBlcm1pc3Npb25zCgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0FjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UnLCAnQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZScpOwp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/ace.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHRleHRhcmVhIGlkPSJ7JHRleHRhcmVhaWR9IiBuYW1lPSJ7JHRleHRhcmVhbmFtZX0iPnskc3ludGF4X2NvbnRlbnR9PC90ZXh0YXJlYT4KPHN0eWxlPgojeyRlZGl0b3JpZH0ge2xkZWxpbX0KCXBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiB7JHdpZHRofWVtOwogICAgaGVpZ2h0OiB7JGhlaWdodH1lbTsKICAgIGJvcmRlcjogNXB4IHNvbGlkICNkZGQ7CiAgICBiYWNrZ3JvdW5kOiAjZmVmZWZlOyAKe3JkZWxpbX0KI3skZWRpdG9yaWR9LmZ1bGxzY3JlZW4ge2xkZWxpbX0KCXBvc2l0aW9uOiBmaXhlZDsKCXotaW5kZXg6IDk5OTsKCW1hcmdpbjowOwoJbGVmdDowOwoJdG9wOjA7CntyZGVsaW19Cjwvc3R5bGU+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4Ke2xpdGVyYWx9CmpRdWVyeShmdW5jdGlvbigkKQp7CglpZighd2luZG93LmFjZSkgcmV0dXJuOwoJaWYobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKGlQb2R8aVBob25lfGlQYWQpLykpIHJldHVybjsKCXsvbGl0ZXJhbH0KCXtpZiAkZW5hYmxlX2llID09ICdmYWxzZSd9CglpZigkLmJyb3dzZXIubXNpZSkgcmV0dXJuOwoJey9pZn0KCSQoJyN7JHRleHRhcmVhaWR9JykuYmVmb3JlKCc8ZGl2IGlkPSJ7JGVkaXRvcmlkfSIgLz4nKTsKCgkvLyBpbml0IGVkaXRvcgoJdmFyIGVkaXRvciA9IGFjZS5lZGl0KCJ7JGVkaXRvcmlkfSIpOwoJdmFyIHRleHRhcmVhID0gJCgnI3skdGV4dGFyZWFpZH0nKS5oaWRlKCk7CgoJLy8gcmVzaXplIGFjZSB3aXRoIGp1aQoJJCgnI3skZWRpdG9yaWR9JykucmVzaXphYmxlKHtsaXRlcmFsfXsKCQlzdG9wOiBmdW5jdGlvbihldmVudCwgdWkpewoJCQllZGl0b3IucmVuZGVyZXIub25SZXNpemUodHJ1ZSk7CgkJCWVkaXRvci5yZW5kZXJlci51cGRhdGVGdWxsKCk7CgkJCWVkaXRvci5mb2N1cygpOwoJCX0sCQkJCgkJZ2hvc3Q6IHRydWUKCX0pOwoKCXsvbGl0ZXJhbH0KCS8vIHNldCB0aGVtZQoJZWRpdG9yLnNldFRoZW1lKCJhY2UvdGhlbWUveyR0aGVtZX0iKTsKCgkvLyBzZXQgaGlnaGxpZ2h0ZXIgbW9kZQoJe2lmICRtb2RlICE9ICdwbGFpbid9Cgl2YXIgc2V0TW9kZSA9IHJlcXVpcmUoImFjZS9tb2RlL3skbW9kZX0iKS5Nb2RlOwoJZWRpdG9yLmdldFNlc3Npb24oKS5zZXRNb2RlKG5ldyBzZXRNb2RlKCkpOwoJey9pZn0KCgkvLyBzZXQgZm9udHNpemUKCSQoJyN7JGVkaXRvcmlkfScpLmNzcygnZm9udC1zaXplJywgJ3skZm9udHNpemV9Jyk7CgoJLy8gZnVsbCBsaW5lIHNlbGVjdGlvbgoJZWRpdG9yLnNldFNlbGVjdGlvblN0eWxlKCd7JGZ1bGxfbGluZX0nKTsKCgkvLyBoaWdobGlnaHQgYWN0aXZlIGxpbmUKCWVkaXRvci5zZXRIaWdobGlnaHRBY3RpdmVMaW5lKHskaGlnaGxpZ2h0X2FjdGl2ZX0pOwoKCS8vIGhpZ2hsaWdodCBzZWxlY3RlZCB3b3JkCgllZGl0b3Iuc2V0SGlnaGxpZ2h0U2VsZWN0ZWRXb3JkKHskaGlnaGxpZ2h0X3NlbGVjdGVkfSk7CgoJLy8gc2hvdyBpbnZpc2libGVzCgllZGl0b3Iuc2V0U2hvd0ludmlzaWJsZXMoeyRzaG93X2ludmlzaWJsZXN9KTsKCgkvLyBwZXJzaXN0ZW50IGhzY3JvbGwKCWVkaXRvci5yZW5kZXJlci5zZXRIU2Nyb2xsQmFyQWx3YXlzVmlzaWJsZSh7JHBlcnNpc3RlbnRfaHNjcm9sbH0pOwoKCS8vIHNob3cgZ3V0dGVyCgllZGl0b3IucmVuZGVyZXIuc2V0U2hvd0d1dHRlcih7JHNob3dfZ3V0dGVyfSk7CgoJe2lmICRzb2Z0X3dyYXAgIT0gJ29mZid9CgkvLyAgc29mdCB3cmFwCgllZGl0b3IuZ2V0U2Vzc2lvbigpLnNldFVzZVdyYXBNb2RlKHRydWUpOwoJZWRpdG9yLmdldFNlc3Npb24oKS5zZXRXcmFwTGltaXRSYW5nZSh7JHNvZnRfd3JhcH0pOwoJey9pZn0KCgkvLyBzZXQgc29mdCB0YWIKCWVkaXRvci5nZXRTZXNzaW9uKCkuc2V0VXNlU29mdFRhYnMoeyRzb2Z0X3RhYn0pOwoKCS8vIHNldCBwcmludCBtYXJnaW4KCWVkaXRvci5zZXRTaG93UHJpbnRNYXJnaW4oeyRwcmludF9tYXJnaW59KTsKCgl7bGl0ZXJhbH0KCS8vIGJpbmQgY3RybCtlbnRlciB0byBmdWxsIHNjcmVlbiBtb2RlLgoJZWRpdG9yLmNvbW1hbmRzLmFkZENvbW1hbmQoewoJCW5hbWU6ICdmdWxsU2NyZWVuRWRpdGluZycsCgkJYmluZEtleTogewoJCQl3aW46ICdDdHJsIC0gUmV0dXJuJywKCQkJbWFjOiAnQ29tbWFuZCAtIFJldHVybicsCgkJCXNlbmRlcjogJ2VkaXRvcicKCQl9LAoJCWV4ZWM6IGZ1bmN0aW9uKGVudixhcmdzLHJlcXVlc3QpIHsKCQkJdmFyIGVkaXRvckRpdiA9ICQoJ3svbGl0ZXJhbH0jeyRlZGl0b3JpZH17bGl0ZXJhbH0nKTsKCQkJaWYoZWRpdG9yRGl2Lmhhc0NsYXNzKCdmdWxsc2NyZWVuJykpCgkJCXsKCQkJCS8vIHNodXQgZG93biBmdWxsIHNjcmVlbgoJCQkJZWRpdG9yRGl2LnJlbW92ZUNsYXNzKCdmdWxsc2NyZWVuJyk7CgkJCQl2YXIgdG1wID0gZWRpdG9yRGl2LmRhdGEoKTsKCQkJCWVkaXRvckRpdi53aWR0aCh0bXAub3JpZ1dpZHRoKTsKCQkJCWVkaXRvckRpdi5oZWlnaHQodG1wLm9yaWdIZWlnaHQpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJLy8gdHVybiBvbiBmdWxsIHNjcmVlbgoJCQkJZWRpdG9yRGl2LmFkZENsYXNzKCdmdWxsc2NyZWVuJyk7CgkJCQllZGl0b3JEaXYuZGF0YSgnb3JpZ1dpZHRoJywgZWRpdG9yRGl2LndpZHRoKCkpOwoJCQkJZWRpdG9yRGl2LmRhdGEoJ29yaWdIZWlnaHQnLCBlZGl0b3JEaXYuaGVpZ2h0KCkpOwoJCQkJZWRpdG9yRGl2LndpZHRoKCQod2luZG93KS53aWR0aCgpKjAuOTk1KTsKCQkJCWVkaXRvckRpdi5oZWlnaHQoJCh3aW5kb3cpLmhlaWdodCgpKjAuOTgpOwoJCQl9CgkJCWVkaXRvci5yZW5kZXJlci5vblJlc2l6ZSh0cnVlKTsKCQkJZWRpdG9yLnJlbmRlcmVyLnVwZGF0ZUZ1bGwoKTsKCQkJZWRpdG9yLmZvY3VzKCk7CgkJCS8vZWRpdG9yLnJlZnJlc2goKTsKCQl9Cgl9KTsKCWVkaXRvci5jb21tYW5kcy5hZGRDb21tYW5kKHsKCQluYW1lOiAnbXlzYXZlJywKCQliaW5kS2V5OiB7CgkJCXdpbjogJ0N0cmwgLSBTJywKCQkJbWFjOiAnQ29tbWFuZCAtIFMnLAoJCQlzZW5kZXI6ICdlZGl0b3InCgkJfSwKCQlleGVjOiBmdW5jdGlvbihlbnYsYXJncyxyZXF1ZXN0KSB7CgkJCS8vIHVwZGF0ZSB0aGUgdGV4dCBhcmVhIGZpZWxkLgoJCQl2YXIgdGV4dCA9IGVkaXRvci5nZXRTZXNzaW9uKCkuZ2V0VmFsdWUoKTsKCQkJdGV4dGFyZWEudmFsKHRleHQpOwoKCQkJLy8gZmluZCB0aGUgcGFyZW50IGZvcm0uIGFuZCBhIGNoaWxkIGJ1dHRvbiBuYW1lZCAnYXBwbHknLCBhbmQgY2xpY2sgaXQuCgkJCXsvbGl0ZXJhbH0kKCcjeyRlZGl0b3JpZH0nKS5jbG9zZXN0KCdmb3JtJykuZmluZCgnW25hbWUkPSJhcHBseSJdJykuZmlyc3QoKS5jbGljaygpO3tsaXRlcmFsfQoJCX0KCX0pOwoJLy8gYWxsb3dzIEAgc3ltYm9sIG9uIG1hYwoJZWRpdG9yLmNvbW1hbmRzLnJlbW92ZUNvbW1hbmQoJ2ZvbGQnKTsKCXsvbGl0ZXJhbH0KCgkvLyBnZXQgdGhlIHZhbHVlIGZyb20gdGV4dGFyZWEKCXZhciBpbnRpYWxEYXRhID0gJCgnI3skdGV4dGFyZWFpZH0nKS52YWwoKTsKCWVkaXRvci5nZXRTZXNzaW9uKCkuc2V0VmFsdWUoaW50aWFsRGF0YSk7CgoJLy8gLi4uIGV2ZXJ5dGltZSBpdCBjaGFuZ2VzCgkkKCcjeyR0ZXh0YXJlYWlkfScpLmNoYW5nZShmdW5jdGlvbigpe2xpdGVyYWx9ewoJCWVkaXRvci5nZXRTZXNzaW9uKCkuc2V0VmFsdWUodGV4dGFyZWEudmFsKCkpOwoJfSk7CgoJLy8gVXBkYXRlIHRoZSB0ZXh0YXJlYSBvbiBjaGFuZ2UKCWVkaXRvci5nZXRTZXNzaW9uKCkub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCl7CgkJLy8gR2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBlZGl0b3IgYW5kIHBsYWNlIGl0IGludG8gdGhlIHRleHRhcmVhLgoJCXZhciB0ZXh0ID0gZWRpdG9yLmdldFNlc3Npb24oKS5nZXRWYWx1ZSgpOwoJCXRleHRhcmVhLnZhbCh0ZXh0KTsKCX0pOwoKCS8vIG1ha2UgaXQgd29ya2luZyB3aXRoaW4gdGFicwoJdmFyIHRhYnMgPSBqUXVlcnkoJyNuYXZ0X3RhYnMnKTsKCWlmKHRhYnMubGVuZ3RoID09PSAwKQoJewoJCXRhYnMgPSBqUXVlcnkoJyNwYWdlX3RhYnMnKTsKCX0KCXRhYnMuZmluZCgnZGl2JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpewoJCWVkaXRvci5yZXNpemUoKTsKCQllZGl0b3IuZm9jdXMoKTsKCX0pOwp9KTsKey9saXRlcmFsfQo8L3NjcmlwdD4=]]></data>
	</file>
	<file>
	  <filename>/templates/frontendsettings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQp7JHN0YXJ0Zm9ybX0KPGZpZWxkc2V0PgoJPGxlZ2VuZD4KCQl7JHNldHRpbmdzdGV4dH0KCTwvbGVnZW5kPgoJPHA+eyRoZWFkX2Rlc2NyaXB0aW9ufTwvcD4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyRmcm9udGVuZF9zeW50YXhfbW9kZX0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskZnJvbnRlbmRfc3ludGF4X21vZGVpbnB1dH0KCQk8L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyR0aGVtZXRleHR9CgkJPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JGZyb250ZW5kX3RoZW1laW5wdXR9CgkJPC9wPgoJPC9kaXY+CjwvZmllbGRzZXQ+CjxmaWVsZHNldD4JCgk8bGVnZW5kPgoJCXskc3ludGF4X3NldHRpbmdzdGV4dH0KCTwvbGVnZW5kPgoJPHA+eyRjb250ZW50X2Rlc2NyaXB0aW9ufTwvcD4JCQkKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyR3aWR0aF90aXRsZX0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskd2lkdGhfaW5wdXR9CgkJPC9wPgoJPC9kaXY+CQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQl7JGhlaWdodF90aXRsZX0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskaGVpZ2h0X2lucHV0fQoJCTwvcD4KCTwvZGl2PgkKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyRmcm9udGVuZF9zeW50YXhfbW9kZX0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskZnJvbnRlbmRfc3ludGF4YXJlYV9tb2RlaW5wdXR9CgkJPC9wPgoJPC9kaXY+CQkKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyR0aGVtZXRleHR9CgkJPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JHRoZW1laW5wdXR9CgkJPC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskZm9udHNpemV0ZXh0fQoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyRmb250c2l6ZWlucHV0fQoJCTwvcD4KCTwvZGl2PgkJCQkJCQkKPC9maWVsZHNldD4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJJm5ic3A7CgkJPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JHN1Ym1pdH0KCQk8L3A+Cgk8L2Rpdj4KeyRlbmRmb3JtfQp7L3N0cmlwfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQo8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDsiPgoJPGZvcm0gYWN0aW9uPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2NnaS1iaW4vd2Vic2NyIiBtZXRob2Q9InBvc3QiPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayIgLz4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iRkxIMkFOODlVUFBBRyIgLz4KCQk8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vZW5fR0IvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCDigJQgVGhlIHNhZmVyLCBlYXNpZXIgd2F5IHRvIHBheSBvbmxpbmUuIiBzdHlsZT0iYmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lOyIgLz4KCQk8aW1nIGFsdD0iIiBib3JkZXI9IjAiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPgoJPC9mb3JtPgo8L2Rpdj4KPGRpdiBpZD0icGFnZV90YWJzIj4KCTxkaXYgaWQ9ImdlbmVyYWwiPgoJCXskaGVscF9nZW5lcmFsX3RpdGxlfQoJPC9kaXY+Cgk8ZGl2IGlkPSJzaG9ydGN1dHMiPgoJCXskaGVscF9rZXlib2FyZHNob3J0Y3V0c190aXRsZX0KCTwvZGl2PgoJPGRpdiBpZD0iZnJvbnRlbmQiPgoJCXskaGVscF9mcm9udGVuZF90aXRsZX0KCTwvZGl2PgkKCTxkaXYgaWQ9ImFib3V0Ij4KCQl7JGhlbHBfYWJvdXRfdGl0bGV9Cgk8L2Rpdj4JCjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPgoJPGRpdiBpZD0iZ2VuZXJhbF9jIj4KCQk8aW1nIHN0eWxlPSJmbG9hdDpyaWdodDttYXJnaW46MCAxMHB4IDEwcHggMTBweDsgYm9yZGVyOiA1cHggc29saWQgI2YwZjBmMDsiIHNyYz0ieyRtb2R1bGVfcGF0aH0vaW1hZ2VzL2VkaXRvci5qcGciIGFsdD0iRWRpdG9yIiB3aWR0aD0iMzE2IiBoZWlnaHQ9IjI1OSIgLz4KCQl7JGhlbHBfZ2VuZXJhbF90ZXh0fQoJCTxiciBzdHlsZSA9ImNsZWFyOmJvdGg7IiAvPgoJPC9kaXY+Cgk8ZGl2IGlkPSJzaG9ydGN1dHNfYyI+CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQl7JGhlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfY29udGVudH0KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBpZD0iZnJvbnRlbmRfYyI+CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQl7JGhlbHBfZnJvbnRlbmRfY29udGVudH0KCQk8cHJlPgoJCTxjb2RlPgoJCXtsaXRlcmFsfQombHQ7cHJlIGlkPSJzb21lLWlkIiZndAombHQ7aHRtbCZndDsKJmx0O2hlYWQmZ3Q7CgkmbHQ7c3R5bGUgdHlwZT0idGV4dC9jc3MiJmd0OwoJLnRleHQtbGF5ZXIgewoJCWZvbnQtZmFtaWx5OiBNb25hY28sICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKCQlmb250LXNpemU6IDEycHg7CgkJY3Vyc29yOiB0ZXh0OwoJfQoJJmx0Oy9zdHlsZSZndDsKJmx0Oy9oZWFkJmd0OwombHQ7Ym9keSZndDsKCSZsdDtoMSBzdHlsZT0iY29sb3I6cmVkIiZndDtZRVMhJmx0Oy9oMSZndDsKJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7CiZsdDsvcHJlJmd0OwoJCXsvbGl0ZXJhbH0KCQk8L2NvZGU+CgkJPC9wcmU+CgkJPC9kaXY+Cgk8L2Rpdj4KCTxkaXYgaWQ9ImFib3V0X2MiPgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJeyRoZWxwX2Fib3V0X3RleHR9CgkJPC9kaXY+Cgk8L2Rpdj4JCQo8L2Rpdj4Key9zdHJpcH0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7bGRlbGltfQoJdmFyIHR4dCA9ICQoJyN7JGRpdmlkfScpLnRleHQoKTsKICAJdmFyIGVkaXRvciA9IGFjZS5lZGl0KCd7JGRpdmlkfScpOwogIAkJZWRpdG9yLnNldFJlYWRPbmx5KHRydWUpOwogIAkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3skZGl2aWR9Jykuc3R5bGUuZm9udFNpemU9J3skZm9udHNpemV9JzsKe2lmIGlzc2V0KCR0aGVtZSl9CgkJZWRpdG9yLnNldFRoZW1lKCdhY2UvdGhlbWUveyR0aGVtZX0nKTsKey9pZn0Ke2lmIGlzc2V0KCRtb2RlKX0KCQl2YXIgdGhlTW9kZSA9IHJlcXVpcmUoJ2FjZS9tb2RlL3skbW9kZX0nKS5Nb2RlOwogIAkJZWRpdG9yLmdldFNlc3Npb24oKS5zZXRNb2RlKG5ldyB0aGVNb2RlKTsKey9pZn0KICAJCWVkaXRvci5yZW5kZXJlci5zZXRTaG93UHJpbnRNYXJnaW4oZmFsc2UpOwogIAkJZWRpdG9yLmdldFNlc3Npb24oKS5zZXRWYWx1ZSh0eHQpOwp7cmRlbGltfSk7Cjwvc2NyaXB0Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJI3skZGl2aWR9IHtsZGVsaW19CgkJcG9zaXRpb246IHJlbGF0aXZlOwoJCWhlaWdodDogeyRoZWlnaHR9cHg7CgkJd2lkdGg6IHskd2lkdGh9cHg7CgkJYmFja2dyb3VuZDogI2ZmZjsKCQlkaXNwbGF5OiBibG9jazsKCXtyZGVsaW19Cjwvc3R5bGU+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_head.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9InskYWNlX3VybH0vYWNlL3NyYy9hY2UuanMiPjwvc2NyaXB0Pgp7Zm9yZWFjaCBmcm9tPSRtb2RlcyBpdGVtPSdtb2RlJ30KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9InskYWNlX3VybH0vYWNlL3NyYy9tb2RlLXskbW9kZX0uanMiPjwvc2NyaXB0Pgp7L2ZvcmVhY2h9CntpZiBpc3NldCgkdGhlbWVzKX0Ke2ZvcmVhY2ggZnJvbT0kdGhlbWVzIGl0ZW09J3RoZW1lJ30KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9InskYWNlX3VybH0vYWNlL3NyYy90aGVtZS17JHRoZW1lfS5qcyI+PC9zY3JpcHQ+CnsvZm9yZWFjaH0Key9pZn0KPHN0eWxlPgpwcmUuYWNlX2VkaXRvciB7bGRlbGltfQoJcGFkZGluZzowOwoJYm9yZGVyOjA7CgliYWNrZ3JvdW5kOm5vbmU7CntyZGVsaW19Cjwvc3R5bGU+]]></data>
	</file>
	<file>
	  <filename>/templates/settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQp7JHN0YXJ0Zm9ybX0KPGZpZWxkc2V0PgoJPGxlZ2VuZD4KCQl7JHNldHRpbmdzdGV4dH0KCTwvbGVnZW5kPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQl7JHdpZHRoX3RpdGxlfQoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyR3aWR0aF9pbnB1dH0KCQk8L3A+Cgk8L2Rpdj4JCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskaGVpZ2h0X3RpdGxlfQoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyRoZWlnaHRfaW5wdXR9CgkJPC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskZW5hYmxlX2lldGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskZW5hYmxlX2llaW5wdXR9IHskZW5hYmxlX2llZGVzY3J9CgkJPC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskc3ludGF4X21vZGV9CgkJPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JHN5bnRheF9tb2RlaW5wdXR9CgkJPC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskdGhlbWV0ZXh0fQoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyR0aGVtZWlucHV0fQoJCTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQl7JGZvbnRzaXpldGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskZm9udHNpemVpbnB1dH0KCQk8L3A+Cgk8L2Rpdj4JCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskZnVsbF9saW5ldGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskZnVsbF9saW5laW5wdXR9CgkJPC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskaGlnaGxpZ2h0X2FjdGl2ZXRleHR9CgkJPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JGhpZ2hsaWdodF9hY3RpdmVpbnB1dH0KCQk8L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyRzaG93X2ludmlzaWJsZXN0ZXh0fQoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyRzaG93X2ludmlzaWJsZXNpbnB1dH0KCQk8L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyRwZXJzaXN0ZW50X2hzY3JvbGx0ZXh0fQoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyRwZXJzaXN0ZW50X2hzY3JvbGxpbnB1dH0KCQk8L3A+Cgk8L2Rpdj4KCXsqCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXska2V5X2JpbmRpbmd0ZXh0fQoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyRrZXlfYmluZGluZ2lucHV0fQoJCTwvcD4KCTwvZGl2PgoJKn0JCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskc29mdF93cmFwdGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskc29mdF93cmFwaW5wdXR9CgkJPC9wPgoJPC9kaXY+CQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQl7JHNob3dfZ3V0dGVydGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskc2hvd19ndXR0ZXJpbnB1dH0KCQk8L3A+Cgk8L2Rpdj4JCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskcHJpbnRfbWFyZ2ludGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskcHJpbnRfbWFyZ2luaW5wdXR9CgkJPC9wPgoJPC9kaXY+CQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQl7JHNvZnRfdGFidGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskc29mdF90YWJpbnB1dH0KCQk8L3A+Cgk8L2Rpdj4JCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCXskaGlnaGxpZ2h0X3NlbGVjdGVkdGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskaGlnaGxpZ2h0X3NlbGVjdGVkaW5wdXR9CgkJPC9wPgoJPC9kaXY+Cgl7KgkKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJeyRlbmFibGVfYmVoYXZpb3JzdGV4dH0KCQk8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskZW5hYmxlX2JlaGF2aW9yc2lucHV0fQoJCTwvcD4KCTwvZGl2PgkKCSp9CQkJCQkJCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCSZuYnNwOwoJCTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyRzdWJtaXR9CgkJPC9wPgoJPC9kaXY+CjwvZmllbGRzZXQ+CjxmaWVsZHNldD4KCTxsZWdlbmQ+eyR0ZXN0YXJlYXRleHR9PC9sZWdlbmQ+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JHRlc3RhcmVhfQoJCTwvcD4KCTwvZGl2PgkKCQo8L2ZpZWxkc2V0Pgp7JGVuZGZvcm19IAp7L3N0cmlwfQo=]]></data>
	</file>
</module>
