<?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>CodeMirror</name>
	<version>0.1.8</version>
  <mincmsversion>1.8</mincmsversion>
	<help><![CDATA[PHN0cm9uZz5IdmFkIGcmb3NsYXNoO3IgZGV0dGUgbW9kdWw/PC9zdHJvbmc+DQo8YnIvPg0KQ29kZU1pcnJvci1tb2R1bGVzIGdpdmVyIGRpZyBtdWxpZ2hlZCBmb3IgYXQgcmVkaWdlcmUgaW5kaG9sZCwgc2thYmVsb25lciBvZyBzdHlsZXNoZWV0cyB2ZWQgaGomYWVsaWc7bHAgYWYgc3ludGFrcy1mcmVtaCZhZWxpZzt2ZW5kZSByZWRpZ2VyaW5nIGkgZGluIGJyb3dzZXIuDQo8YnIvPjxici8+DQo8c3Ryb25nPkh2b3JkYW4gYnJ1Z2VyIGplZyBkZXR0ZSBtb2R1bD88L3N0cm9uZz4NCkR1IGluc3RhbGxlcmVyIGRldCBvZyB2JmFlbGlnO2xnZXIgZGV0IGkgZGluZSBicnVnZXIgaW5kc3RpbGxpbmdlciBmb3IgYWRtaW5zaXRyYXRpb25lbi4gQmVtJmFlbGlnO3JrIGF0IGR1IGthbiB2JmFlbGlnO2xnZSBhdCBiZW55dHRlIGRldCBiJmFyaW5nO2RlIHNvbSBzeW50YWtzIGZyZW1oJmFlbGlnO3ZlciBvZyBXWVNJV1lHLjxoMz5QYXJhbWV0cmU8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0cmV0IGFuZ2l2ZXIgaHZpbGtldCBzcHJvZyBkZXIgc2thbCBicnVnZXMgdGlsIHZpc25pbmcgZm9yIGJlcyZvc2xhc2g7Z2VuZGUuIElra2UgYWxsZSBtb2R1bGVyIHVuZGVyc3Qmb3NsYXNoO3R0ZXIgZWxsZXIgYmVoJm9zbGFzaDt2ZXIgZGV0dGUuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+TGF2ZXQgYWY6IE1vcnRlbiBQb3Vsc2VuICZsdDsmbHQ7bW9ydGVuQHBvdWxzZW4ub3JnJmd0OyZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAwLjEuODxiciAvPjxiciAvPkhpc3RvcmlrIG92ZXIgJmFlbGlnO25kcmluZ2VyOjxiciAvPjx1bD4KICA8bGk+MC4xLjggLSBVcGRhdGVkIHRvIENNIDAuOSwgYWRkZWQgb3B0aW9uIG9uIGhvdyB0byBoYW5kbGUgVEFCPC9saT4KICA8bGk+MC4xLjcgLSBVcGRhdGVkIHRvIENNIDAuODA8L2xpPgogIDxsaT4wLjEuNiAtIFVwZGF0ZWQgdG8gQ00gMC43MCwgQWRkZWQgb3B0aW9uIHRvIG1hdGNoIHBhcmVudGhlc2lzPC9saT4KICA8bGk+MC4xLjUgLSBVcGRhdGVkIHRvIENNIDAuNjYsIHJlbW92ZWQgYSBzdHJhbmdlIFxuIGNoYXIgZnJvbSBoZWFkZXJvdXRwdXQsIG1hZGUgdGFiYmluZyB3b3JrPC9saT4KICA8bGk+MC4xLjQgLSBGaXhlZCBDUFUgaG9nZ2luZyBwcm9ibGVtcyBieSByZXdyaXRpbmcgdGVzdGFyZWEtY29kZTwvbGk+CiAgPGxpPjAuMS4zIC0gVXBkYXRlZCB0byBDTSAwLjY1LCBhZGRlZCBvcHRpb24gdG8gdG9nZ2xlIHdvcmR3cmFwPC9saT4KICA8bGk+MC4xLjIgLSBVcGRhdGVkIHRvIENNIDAuNjM8L2xpPgogIDxsaT4wLjEuMSAtIFVwZGF0ZWQgdG8gQ00gMC42MiwgZml4ZWQgZXhhbXBsZXMgYW5kIHByb2JhYmx5IGZ1bmN0aW9uYWxpdHkgYXMgd2VsbDwvbGk+CiAgPGxpPjAuMS4wIC0gSW5pdGlhbCByZWxlYXNlIDwvbGk+CjwvdWw+PGJyIC8+]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKSB7CiAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkpOwogIHJldHVybjsKfQoKaWYgKGlzc2V0KCRwYXJhbXNbImV4YW1wbGVzeW50YXgiXSkpIHsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZXhhbXBsZXN5bnRheCIsJHBhcmFtc1siZXhhbXBsZXN5bnRheCJdKTsKfQoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigic2V0dGluZ3MiLCR0aGlzLT5MYW5nKCJzZXR0aW5nc3RhYiIpKTsKCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CgoKZWNobyAkdGhpcy0+U3RhcnRUYWIoInNldHRpbmdzIik7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlc2V0dGluZ3MnLCAkcmV0dXJuaWQpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dsaW5lbnVtYmVyc3RleHQnLCAkdGhpcy0+TGFuZygic2hvd2xpbmVudW1iZXJzIikpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dsaW5lbnVtYmVyc2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCJzaG93bGluZW51bWJlcnMiLDEsJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3dsaW5lbnVtYmVycyIsMSkpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGV4dHdyYXBwaW5ndGV4dCcsICR0aGlzLT5MYW5nKCJ0ZXh0d3JhcHBpbmciKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGV4dHdyYXBwaW5naW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsInRleHR3cmFwcGluZyIsMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGV4dHdyYXBwaW5nIiwxKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRvbWF0Y2hwYXJlbnN0ZXh0JywgJHRoaXMtPkxhbmcoImF1dG9tYXRjaHBhcmVucyIpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRvbWF0Y2hwYXJlbnNpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwiYXV0b21hdGNocGFyZW5zIiwiMSIsJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9tYXRjaHBhcmVucyIsIjAiKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJoYW5kbGluZ3RleHQnLCAkdGhpcy0+TGFuZygidGFiaGFuZGxpbmciKSk7CiR0YWJmdW5jdGlvbnM9YXJyYXkoCiAgJHRoaXMtPkxhbmcoInRhYmRlZmF1bHQiKT0+ImRlZmF1bHQiLAogICR0aGlzLT5MYW5nKCJ0YWJpbmRlbnQiKT0+ImluZGVudCIsCiAgJHRoaXMtPkxhbmcoInRhYnNwYWNlcyIpPT4ic3BhY2VzIiwKICAkdGhpcy0+TGFuZygidGFic2hpZnQiKT0+InNoaWZ0IgopOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYmhhbmRsaW5naW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsInRhYmhhbmRsaW5nIiwkdGFiZnVuY3Rpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJoYW5kbGluZyIsImluZGVudCIpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc2F2ZXNldHRpbmdzJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc2V0dGluZ3MudHBsJyk7CgplY2hvICR0aGlzLT5FbmRUYWIoKTsKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwoKJGNvbnRlbnQ9IiI7CnN3aXRjaCAoJHRoaXMtPkdldFByZWZlcmVuY2UoImV4YW1wbGVzeW50YXgiLCJodG1sIikpIHsKICBjYXNlICJodG1sIiA6IHsKICAgICRjb250ZW50PSIKPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+VGVzdGluZyBodG1sLXN5bnRheDwvdGl0bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgQW5kIGRvaW5nIGFic29sdXRlbHkgbm90aGluZyBlbHNlCiAgPC9ib2R5Pgo8L2h0bWw+CiI7CiAgYnJlYWs7CiAgfQogIGNhc2UgImNzcyIgOiB7CiAgICAkY29udGVudD0iCi50ZXN0Y3NzIHsKICBmb250LXdlaWdodDpib2xkOwogIGhlaWdodDogMTBweDsKfQoiOwogIGJyZWFrOwogIH0KICBjYXNlICJwaHAiIDogewogICAgJGNvbnRlbnQ9Igo8P3BocAogIGZ1bmN0aW9uIHRlc3RQSFAoXCRzb21lcGFyYW0pIHsKICAgIGVjaG8gJ0RvIHlvdSB0aGluayB0aGlzIGxvb2tzIG5pY2U/JzsKICB9Cj8+CiI7CiAgYnJlYWs7CiAgfQogIGNhc2UgImpzIiA6IHsKICAgICRjb250ZW50PScKZnVuY3Rpb24gbXlqc2Z1bnRpb24ocGFyYW1zKSB7CiAgdmFyIG1zZyA9ICJUaGlzIGphdmFzY3JpcHQgaXMgZmFudGFzdGljISIKICBmb3IgKHZhciBpPTA7IGk8OTk5OTsgaSsrKSB7CiAgICBhbGVydChtc2cpOwogICAgLypUaGlzIG11c3QgYmUgdGhlIG1vc3QgYW5ub3lpbmcgZnVuY3Rpb24gZXZlciEqLwogIH0KICByZXR1cm4gdHJ1ZQp9Cic7CiAgYnJlYWs7CiAgfQp9CgplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCJkZWZhdWx0YWRtaW4iKTsKZWNobyAkdGhpcy0+TGFuZygiZXhhbXBsZXN5bnRheCIpLiI6ICI7CiRzeW50YXhlcz1hcnJheSgkdGhpcy0+TGFuZygiaHRtbHRlc3QiKT0+Imh0bWwiLCR0aGlzLT5MYW5nKCJjc3N0ZXN0Iik9PiJjc3MiLCR0aGlzLT5MYW5nKCJwaHB0ZXN0Iik9PiJwaHAiLCR0aGlzLT5MYW5nKCJqc3Rlc3QiKT0+ImpzIik7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJleGFtcGxlc3ludGF4Iiwkc3ludGF4ZXMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoImV4YW1wbGVzeW50YXgiLCJodG1sIikpOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImV4YW1wbGVzdWJtaXQiLCR0aGlzLT5MYW5nKCJjaGFuZ2UiKSk7CmVjaG8gIjxici8+IjsKZWNobyAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLCRjb250ZW50LCJ0ZXN0YXJlYTEiLCcnLCcnLCcnLCcnLCcnLCcnLCdDb2RlTWlycm9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZXhhbXBsZXN5bnRheCIsImh0bWwiKSk7CmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCgoKCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.savesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKSB7CiAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkpOwogIHJldHVybjsKfQoKaWYoaXNzZXQoJHBhcmFtc1sic2hvd2xpbmVudW1iZXJzIl0pKSAKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgic2hvd2xpbmVudW1iZXJzIiwgJHBhcmFtc1sic2hvd2xpbmVudW1iZXJzIl0pOwplbHNlCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoInNob3dsaW5lbnVtYmVycyIsICcwJyk7CgppZihpc3NldCgkcGFyYW1zWyJ0ZXh0d3JhcHBpbmciXSkpCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoInRleHR3cmFwcGluZyIsICRwYXJhbXNbInRleHR3cmFwcGluZyJdKTsKZWxzZQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ0ZXh0d3JhcHBpbmciLCAnMCcpOwogIAppZihpc3NldCgkcGFyYW1zWyJhdXRvbWF0Y2hwYXJlbnMiXSkpCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoImF1dG9tYXRjaHBhcmVucyIsICRwYXJhbXNbImF1dG9tYXRjaHBhcmVucyJdKTsKZWxzZQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJhdXRvbWF0Y2hwYXJlbnMiLCAnMCcpOwoKaWYoaXNzZXQoJHBhcmFtc1sidGFiaGFuZGxpbmciXSkpCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoInRhYmhhbmRsaW5nIiwgJHBhcmFtc1sidGFiaGFuZGxpbmciXSk7CgoKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygic2V0dGluZ3NzYXZlZCIpLCJ0YWIiPT4ic2V0dGluZ3MiKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/codemirror.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IC5Db2RlTWlycm9yLWxpbmUtbnVtYmVycyB7CiAgIHdpZHRoOiAyLjJlbTsKICAgY29sb3I6ICNhYWE7CiAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgIHRleHQtYWxpZ246IHJpZ2h0OwogICBwYWRkaW5nLXJpZ2h0OiAuM2VtOwogICBmb250LXNpemU6IDEwcHQ7CiAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgIHBhZGRpbmctdG9wOiAuNGVtOwogfQoK]]></data>
	</file>
	<file>
	  <filename>/CodeMirror.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNDTVMgLSBDTVMgTWFkZSBTaW1wbGUNCiMoYykyMDA1LTA2IGJ5IE1vcnRlbiBQb3Vsc2VuIChtb3J0ZW5AcG91bHNlbi5vcmcpDQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMNCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KI2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiNhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0ENCg0KDQpjbGFzcyBDb2RlTWlycm9yIGV4dGVuZHMgQ01TTW9kdWxlIHsNCgl2YXIgJG5vZWRpdG9ycz0wOw0KCXZhciAkaGVhZGVyaW5mb3NlbnQ9ZmFsc2U7DQoNCglmdW5jdGlvbiBHZXROYW1lKCkgew0KCQlyZXR1cm4gJ0NvZGVNaXJyb3InOw0KCX0NCg0KCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJZnVuY3Rpb24gSGFzQWRtaW4oKSB7DQoJCXJldHVybiB0cnVlOw0KCX0NCg0KCWZ1bmN0aW9uIEdldEhlbHAoKSB7DQoJCXJldHVybiAkdGhpcy0+TGFuZygiaGVscCIpOw0KCX0NCg0KCWZ1bmN0aW9uIEdldEF1dGhvcigpIHsNCgkJcmV0dXJuICdNb3J0ZW4gUG91bHNlbic7DQoJfQ0KDQoJZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7DQoJCXJldHVybiAnJmx0O21vcnRlbkBwb3Vsc2VuLm9yZyZndDsnOw0KCX0NCg0KCWZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsNCgkJcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NoYW5nZWxvZy50cGwnKTsNCgl9DQoNCglmdW5jdGlvbiBHZXRWZXJzaW9uKCkgew0KCQlyZXR1cm4gJzAuMS44JzsNCgl9DQoJDQoJZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7DQoJCXJldHVybiAiMS44IjsNCgl9DQoNCiAgZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcz1hcnJheSgpKSB7DQogICAgaWYgKCRjYXBhYmlsaXR5PT0id3lzaXd5ZyIpIHJldHVybiB0cnVlOw0KICAgIGlmICgkY2FwYWJpbGl0eT09InN5bnRheGhpZ2hsaWdodGluZyIpIHJldHVybiB0cnVlOw0KICAgIHJldHVybiBmYWxzZTsNCiAgfQ0KDQoJZnVuY3Rpb24gSXNXWVNJV1lHKCkgew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglmdW5jdGlvbiBJc1N5bnRheEhpZ2hsaWdodGVyKCkgew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKSB7DQoJCXJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpOw0KCX0NCg0KCWZ1bmN0aW9uIFN5bnRheFBhZ2VGb3JtU3VibWl0KCkgew0KCQlyZXR1cm4gImZvciAodmFyIGNudEVkaXRvciA9IDA7IGNudEVkaXRvciA8IG51bUNvZGVQcmVzc0FyZWFzOyBjbnRFZGl0b3IrKykge1xuIg0KCQkuICJcdFx0dmFyIGlkID0gZXZhbCgnY29kZXByZXNzJyArIGNudEVkaXRvcik7XG4iDQoJCS4gIlx0XHRpZC50ZXh0YXJlYS52YWx1ZSA9IGlkLmdldENvZGUoKTtcbiINCgkJLiAiXHR9XG4iOw0KCX0NCgkNCglmdW5jdGlvbiBXWVNJV1lHUGFnZUZvcm1TdWJtaXQoKSB7DQoJCXJldHVybiAkdGhpcy0+U3ludGF4UGFnZUZvcm1TdWJtaXQoKTsNCgl9DQoNCglmdW5jdGlvbiBXWVNJV1lHVGV4dEFyZWEoJG5hbWU9J3RleHRhcmVhJywkY29sdW1ucz0nODAnLCRyb3dzPScxNScsJGVuY29kaW5nPScnLCRjb250ZW50PScnLCRzdHlsZXNoZWV0PScnLCRhZGR0ZXh0PScnKSB7DQoJCSR0aGlzLT53eXNpd3lnYWN0aXZlPXRydWU7DQoJCXJldHVybiAkdGhpcy0+U3ludGF4VGV4dGFyZWEoJG5hbWUsImh0bWwiLCRjb2x1bW5zLCRyb3dzLCRlbmNvZGluZywkY29udGVudCk7DQoJfQ0KDQoJZnVuY3Rpb24gU3ludGF4VGV4dGFyZWEoJG5hbWU9J3RleHRhcmVhJywkc3ludGF4PSJodG1sIiwkY29sdW1ucz0nODAnLCRyb3dzPScxNScsJGVuY29kaW5nPScnLCRjb250ZW50PScnLCRzdHlsZXNoZWV0PScnLCRhZGR0ZXh0PScnKSB7DQoJCSR0ZXh0YXJlYT0iIjsNCgkJJHRoaXMtPnN5bnRheGFjdGl2ZT10cnVlOwkNCgkJLyppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZWF1dG9jb21wbGV0ZSIsIjEiKT09IjAiKSAkY2xhc3MuPSIgYXV0b2NvbXBsZXRlLW9mZiI7DQoJCWlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2hvd2xpbmVudW1iZXJzIiwiMSIpPT0iMCIpICRjbGFzcy49IiBsaW5lbnVtYmVycy1vZmYiOw0KCQkqLw0KICAgICAgLyppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3d0b2dnbGVzeW50YXgiLCIxIik9PSIxIikgew0KICAgICANCgkJCSR0ZXh0YXJlYS49Ijxici8+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBjaGVja2VkPScxJyBvbmNsaWNrPSdjb2RlcHJlc3MiLiR0aGlzLT5ub2VkaXRvcnMuIi50b2dnbGVFZGl0b3IoKTsnIGNoZWNrZWQ9J2NoZWNrZWQnIGlkPSdjb2RlcHJlc3NjaGVjayIuJHRoaXMtPm5vZWRpdG9ycy4iJz48bGFiZWwgZm9yPSdjb2RlcHJlc3NjaGVjayIuJHRoaXMtPm5vZWRpdG9ycy4iJz4iLiR0aGlzLT5MYW5nKCJ0b2dnbGVzeW50YXgiKS4iPC9sYWJlbD4iOw0KCQl9Ki8NCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3dsaW5lbnVtYmVycyIsIjEiKT09IjEiKXsNCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbGluZW51bWJlcnMnLCAidHJ1ZSIpOw0KICAgIH0gZWxzZSB7DQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xpbmVudW1iZXJzJywgImZhbHNlIik7DQogICAgfQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGV4dHdyYXBwaW5nIiwiMSIpPT0iMSIpew0KICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZXh0d3JhcHBpbmcnLCAidHJ1ZSIpOw0KICAgIH0gZWxzZSB7DQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RleHR3cmFwcGluZycsICJmYWxzZSIpOw0KICAgIH0NCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9tYXRjaHBhcmVucyIsIjAiKT09IjEiKXsNCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignYXV0b21hdGNocGFyZW5zJywgInRydWUiKTsNCiAgICB9IGVsc2Ugew0KICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRvbWF0Y2hwYXJlbnMnLCAiZmFsc2UiKTsNCiAgICB9DQogICAgLy9saW5lTnVtYmVyczogdHJ1ZSwNCiAgICAkY29uZmlnPSR0aGlzLT5HZXRDb25maWcoKTsNCg0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGV4dGFyZWFpZCcsICJjb2RlbWlycm9yYXJlYSIuJHRoaXMtPm5vZWRpdG9ycyk7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZXh0YXJlYW5hbWUnLCAkbmFtZSk7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb250ZW50JywgJGNvbnRlbnQpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+bm9lZGl0b3JzKTsNCiAgICAkcGFyc2VyZmlsZT0iIjsgJGNzc2ZpbGU9IiI7DQogICAgJGNtZGlyPSRjb25maWdbInJvb3RfdXJsIl0uJy9tb2R1bGVzL0NvZGVNaXJyb3IvY29kZW1pcnJvcic7DQogICAgc3dpdGNoKCRzeW50YXgpIHsNCiAgICAgIA0KICAgICAgY2FzZSAiaHRtbCIgOiANCiAgICAgICAgJHBhcnNlcmZpbGU9JyJwYXJzZXhtbC5qcyInOyANCiAgICAgICAgJGNzc2ZpbGU9JyInLiRjbWRpci4nL2Nzcy94bWxjb2xvcnMuY3NzIic7DQogICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSAiY3NzIiA6DQogICAgICAgICRwYXJzZXJmaWxlPScicGFyc2Vjc3MuanMiJzsNCiAgICAgICAgJGNzc2ZpbGU9JyInLiRjbWRpci4nL2Nzcy9jc3Njb2xvcnMuY3NzIic7DQogICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSAiamF2YXNjcmlwdCIgOg0KICAgICAgY2FzZSAianMiIDoNCiAgICAgICAgJHBhcnNlcmZpbGU9J1sidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyJdJzsNCiAgICAgICAgJGNzc2ZpbGU9JyInLiRjbWRpci4nL2Nzcy9qc2NvbG9ycy5jc3MiJzsNCiAgICAgICAgYnJlYWs7DQogICAgICBjYXNlICJwaHAiIDoNCiAgICAgICAgJHBhcnNlcmZpbGU9J1sicGFyc2V4bWwuanMiLCAicGFyc2Vjc3MuanMiLCAidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyIsICJwYXJzZWh0bWxtaXhlZC5qcyIsIi4uL2NvbnRyaWIvcGhwL2pzL3Rva2VuaXplcGhwLmpzIiwgIi4uL2NvbnRyaWIvcGhwL2pzL3BhcnNlcGhwLmpzIiwgICAgICAgICAgICAgICAgICAgICAiLi4vY29udHJpYi9waHAvanMvcGFyc2VwaHBodG1sbWl4ZWQuanMiXSc7DQogICAgICAgICRjc3NmaWxlPSdbIicuJGNtZGlyLicvY3NzL3htbGNvbG9ycy5jc3MiLCInLiRjbWRpci4nL2Nzcy9qc2NvbG9ycy5jc3MiLCInLiRjbWRpci4nL2Nzcy9jc3Njb2xvcnMuY3NzIiwiJy4kY21kaXIuJy9jb250cmliL3BocC9jc3MvcGhwY29sb3JzLmNzcyJdJzsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncGFyc2VyZmlsZScsICRwYXJzZXJmaWxlKTsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Nzc2ZpbGUnLCAkY3NzZmlsZSk7DQoNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYmhhbmRsaW5nJywgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmhhbmRsaW5nIiwiaW5kZW50IikpOw0KICAgIA0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncm9vdF91cmwnLCAkY29uZmlnWyJyb290X3VybCJdKTsNCg0KDQogICAgJHRleHRhcmVhPSR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NvZGVtaXJyb3JhcmVhLnRwbCcpOw0KDQoJCSR0aGlzLT5ub2VkaXRvcnMrKzsNCg0KCQlyZXR1cm4gJHRleHRhcmVhOw0KCX0NCg0KCWZ1bmN0aW9uIFdZU0lXWUdHZW5lcmF0ZUhlYWRlcigkaHRtbHJlc3VsdD0nJykgew0KCQlyZXR1cm4gJHRoaXMtPlN5bnRheEdlbmVyYXRlSGVhZGVyKCk7DQoJfQ0KDQoJZnVuY3Rpb24gU3ludGF4R2VuZXJhdGVIZWFkZXIoJGh0bWxyZXN1bHQ9JycpIHsNCgkJaWYgKCR0aGlzLT5oZWFkZXJpbmZvc2VudCkgcmV0dXJuICIiOw0KCQlpZiAoJHRoaXMtPm5vZWRpdG9ycz09MCkgcmV0dXJuICcnOw0KCQkvLyRHTE9CQUxTWyJjb25maWciXVsicm9vdF9wYXRoIl0uDQoNCgkJJHNjcmlwdHBhdGg9JEdMT0JBTFNbImNvbmZpZyJdWyJyb290X3VybCJdLiIvbW9kdWxlcy9Db2RlTWlycm9yL2NvZGVtaXJyb3IvanMvY29kZW1pcnJvci5qcyI7DQoJCSRoZWFkZXI9IiI7DQoJCSRoZWFkZXIuPSc8c2NyaXB0IGxhbmd1YWdlPSJKYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy4kc2NyaXB0cGF0aC4nIj48L3NjcmlwdD4nOw0KICAgICRoZWFkZXIuPSc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInLiRHTE9CQUxTWyJjb25maWciXVsicm9vdF91cmwiXS4nL21vZHVsZXMvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcyIvPic7DQoJCSR0aGlzLT5oZWFkZXJpbmZvc2VudD10cnVlOw0KCQlyZXR1cm4gJGhlYWRlcjsNCgl9DQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/codemirror/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/bigtest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSmF2YVNjcmlwdCBkZW1vbnN0cmF0aW9uPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9kb2NzLmNzcyIvPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBwYWdlIGRlbW9uc3RyYXRlcyA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPidzCkphdmFTY3JpcHQgcGFyc2VyLiBOb3RlIHRoYXQgdGhlIHVnbHkgYnV0dG9ucyBhdCB0aGUgdG9wIGFyZSBub3QgYXJlCm5vdCBwYXJ0IG9mIENvZGVNaXJyb3IgcHJvcGVyIC0tIHRoZXkgZGVtb25zdHJhdGUgdGhlIHdheSBpdCBjYW4gYmUKZW1iZWRkZWQgaW4gYSB3ZWItYXBwbGljYXRpb24uPC9wPgoKPGRpdiBjbGFzcz0iYm9yZGVyIj4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KLyogVGhlIEVkaXRvciBvYmplY3QgbWFuYWdlcyB0aGUgY29udGVudCBvZiB0aGUgZWRpdGFibGUgZnJhbWUuIEl0CiAqIGNhdGNoZXMgZXZlbnRzLCBjb2xvdXJzIG5vZGVzLCBhbmQgaW5kZW50cyBsaW5lcy4gVGhpcyBmaWxlIGFsc28KICogaG9sZHMgc29tZSBmdW5jdGlvbnMgZm9yIHRyYW5zZm9ybWluZyBhcmJpdHJhcnkgRE9NIHN0cnVjdHVyZXMgaW50bwogKiBwbGFpbiBzZXF1ZW5jZXMgb2YgJmx0O3NwYW4+IGFuZCAmbHQ7YnI+IGVsZW1lbnRzCiAqLwoKLy8gTWFrZSBzdXJlIGEgc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlICdjb2xsYXBzZWFibGUnCi8vIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KZnVuY3Rpb24gbWFrZVdoaXRlU3BhY2UobikgewogIHZhciBidWZmZXIgPSBbXSwgbmIgPSB0cnVlOwogIGZvciAoOyBuID4gMDsgbi0tKSB7CiAgICBidWZmZXIucHVzaCgobmIgfHwgbiA9PSAxKSA/IG5ic3AgOiAiICIpOwogICAgbmIgPSAhbmI7CiAgfQogIHJldHVybiBidWZmZXIuam9pbigiIik7Cn0KCi8vIENyZWF0ZSBhIHNldCBvZiB3aGl0ZS1zcGFjZSBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBub3QgYmUgY29sbGFwc2VkCi8vIGJ5IHRoZSBicm93c2VyLCBidXQgd2lsbCBub3QgYnJlYWsgdGV4dC13cmFwcGluZyBlaXRoZXIuCmZ1bmN0aW9uIGZpeFNwYWNlcyhzdHJpbmcpIHsKICBpZiAoc3RyaW5nLmNoYXJBdCgwKSA9PSAiICIpIHN0cmluZyA9IG5ic3AgKyBzdHJpbmcuc2xpY2UoMSk7CiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bXHQgXHUwMGEwXXsyLH0vZywgZnVuY3Rpb24ocykge3JldHVybiBtYWtlV2hpdGVTcGFjZShzLmxlbmd0aCk7fSk7Cn0KCmZ1bmN0aW9uIGNsZWFuVGV4dCh0ZXh0KSB7CiAgcmV0dXJuIHRleHQucmVwbGFjZSgvXHUwMGEwL2csICIgIikucmVwbGFjZSgvXHUyMDBiL2csICIiKTsKfQoKLy8gQ3JlYXRlIGEgU1BBTiBub2RlIHdpdGggdGhlIGV4cGVjdGVkIHByb3BlcnRpZXMgZm9yIGRvY3VtZW50IHBhcnQKLy8gc3BhbnMuCmZ1bmN0aW9uIG1ha2VQYXJ0U3Bhbih2YWx1ZSwgZG9jKSB7CiAgdmFyIHRleHQgPSB2YWx1ZTsKICBpZiAodmFsdWUubm9kZVR5cGUgPT0gMykgdGV4dCA9IHZhbHVlLm5vZGVWYWx1ZTsKICBlbHNlIHZhbHVlID0gZG9jLmNyZWF0ZVRleHROb2RlKHRleHQpOwoKICB2YXIgc3BhbiA9IGRvYy5jcmVhdGVFbGVtZW50KCJTUEFOIik7CiAgc3Bhbi5pc1BhcnQgPSB0cnVlOwogIHNwYW4uYXBwZW5kQ2hpbGQodmFsdWUpOwogIHNwYW4uY3VycmVudFRleHQgPSB0ZXh0OwogIHJldHVybiBzcGFuOwp9CgovLyBPbiB3ZWJraXQsIHdoZW4gdGhlIGxhc3QgQlIgb2YgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgdGV4dAovLyBiZWhpbmQgaXQsIHRoZSBjdXJzb3IgY2FuIG5vdCBiZSBwdXQgb24gdGhlIGxpbmUgYWZ0ZXIgaXQuIFRoaXMKLy8gbWFrZXMgcHJlc3NpbmcgZW50ZXIgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgb2NjYXNpb25hbGx5IGRvCi8vIG5vdGhpbmcgKG9yIGF0IGxlYXN0IHNlZW0gdG8gZG8gbm90aGluZykuIFRvIHdvcmsgYXJvdW5kIGl0LCB0aGlzCi8vIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhlIGRvY3VtZW50IGVuZHMgd2l0aCBhIHNwYW4gY29udGFpbmluZyBhCi8vIHplcm8td2lkdGggc3BhY2UgY2hhcmFjdGVyLiBUaGUgdHJhdmVyc2VET00gaXRlcmF0b3IgZmlsdGVycyBzdWNoCi8vIGNoYXJhY3RlciBvdXQgYWdhaW4sIHNvIHRoYXQgdGhlIHBhcnNlcnMgd29uJ3Qgc2VlIHRoZW0uIFRoaXMKLy8gZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYSBmZXcgc3RyYXRlZ2ljIHBsYWNlcyB0byBtYWtlIHN1cmUgdGhlCi8vIHp3c3AgaXMgcmVzdG9yZWQgYWZ0ZXIgdGhlIGhpZ2hsaWdodGluZyBwcm9jZXNzIGVhdHMgaXQuCnZhciB3ZWJraXRMYXN0TGluZUhhY2sgPSB3ZWJraXQgPwogIGZ1bmN0aW9uKGNvbnRhaW5lcikgewogICAgdmFyIGxhc3QgPSBjb250YWluZXIubGFzdENoaWxkOwogICAgaWYgKCFsYXN0IHx8ICFsYXN0LmlzUGFydCB8fCBsYXN0LnRleHRDb250ZW50ICE9ICJcdTIwMGIiKQogICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobWFrZVBhcnRTcGFuKCJcdTIwMGIiLCBjb250YWluZXIub3duZXJEb2N1bWVudCkpOwogIH0gOiBmdW5jdGlvbigpIHt9OwoKdmFyIEVkaXRvciA9IChmdW5jdGlvbigpewogIC8vIFRoZSBIVE1MIGVsZW1lbnRzIHdob3NlIGNvbnRlbnQgc2hvdWxkIGJlIHN1ZmZpeGVkIGJ5IGEgbmV3bGluZQogIC8vIHdoZW4gY29udmVydGluZyB0aGVtIHRvIGZsYXQgdGV4dC4KICB2YXIgbmV3bGluZUVsZW1lbnRzID0geyJQIjogdHJ1ZSwgIkRJViI6IHRydWUsICJMSSI6IHRydWV9OwoKICBmdW5jdGlvbiBhc0VkaXRvckxpbmVzKHN0cmluZykgewogICAgcmV0dXJuIGZpeFNwYWNlcyhzdHJpbmcucmVwbGFjZSgvXHQvZywgIiAgIikucmVwbGFjZSgvXHUwMGEwL2csICIgIikpLnJlcGxhY2UoL1xyXG4/L2csICJcbiIpLnNwbGl0KCJcbiIpOwogIH0KCiAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0cmF2ZXJzZURPTS4gRmxhdHRlbnMgYW4gYXJiaXRyYXJ5IERPTSBub2RlCiAgLy8gaW50byBhbiBhcnJheSBvZiB0ZXh0bm9kZXMgYW5kICZsdDticj4gdGFncy4KICBmdW5jdGlvbiBzaW1wbGlmeURPTShyb290KSB7CiAgICB2YXIgZG9jID0gcm9vdC5vd25lckRvY3VtZW50OwogICAgdmFyIHJlc3VsdCA9IFtdOwogICAgdmFyIGxlYXZpbmcgPSB0cnVlOwoKICAgIGZ1bmN0aW9uIHNpbXBsaWZ5Tm9kZShub2RlKSB7CiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMpIHsKICAgICAgICB2YXIgdGV4dCA9IG5vZGUubm9kZVZhbHVlID0gZml4U3BhY2VzKG5vZGUubm9kZVZhbHVlLnJlcGxhY2UoL1tcclx1MjAwYl0vZywgIiIpLnJlcGxhY2UoL1xuL2csICIgIikpOwogICAgICAgIGlmICh0ZXh0Lmxlbmd0aCkgbGVhdmluZyA9IGZhbHNlOwogICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkJSIiAmYW1wOyZhbXA7IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPT0gMCkgewogICAgICAgIGxlYXZpbmcgPSB0cnVlOwogICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIGZvckVhY2gobm9kZS5jaGlsZE5vZGVzLCBzaW1wbGlmeU5vZGUpOwogICAgICAgIGlmICghbGVhdmluZyAmYW1wOyZhbXA7IG5ld2xpbmVFbGVtZW50cy5oYXNPd25Qcm9wZXJ0eShub2RlLm5vZGVOYW1lKSkgewogICAgICAgICAgbGVhdmluZyA9IHRydWU7CiAgICAgICAgICByZXN1bHQucHVzaChkb2MuY3JlYXRlRWxlbWVudCgiQlIiKSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgc2ltcGxpZnlOb2RlKHJvb3QpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIC8vIENyZWF0ZXMgYSBNb2NoaUtpdC1zdHlsZSBpdGVyYXRvciB0aGF0IGdvZXMgb3ZlciBhIHNlcmllcyBvZiBET00KICAvLyBub2Rlcy4gVGhlIHZhbHVlcyBpdCB5aWVsZHMgYXJlIHN0cmluZ3MsIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb2YKICAvLyB0aGUgbm9kZXMuIEl0IG1ha2VzIHN1cmUgdGhhdCBhbGwgbm9kZXMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUKICAvLyBvbmUgd2hvc2UgdGV4dCBpcyBiZWluZyB5aWVsZGVkIGhhdmUgYmVlbiAnbm9ybWFsaXplZCcgdG8gYmUganVzdAogIC8vICZsdDtzcGFuPiBhbmQgJmx0O2JyPiBlbGVtZW50cy4KICAvLyBTZWUgdGhlIHN0b3J5Lmh0bWwgZmlsZSBmb3Igc29tZSBzaG9ydCByZW1hcmtzIGFib3V0IHRoZSB1c2Ugb2YKICAvLyBjb250aW51YXRpb24tcGFzc2luZyBzdHlsZSBpbiB0aGlzIGl0ZXJhdG9yLgogIGZ1bmN0aW9uIHRyYXZlcnNlRE9NKHN0YXJ0KXsKICAgIGZ1bmN0aW9uIHlpZWxkKHZhbHVlLCBjKXtjYyA9IGM7IHJldHVybiB2YWx1ZTt9CiAgICBmdW5jdGlvbiBwdXNoKGZ1biwgYXJnLCBjKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuKGFyZywgYyk7fTt9CiAgICBmdW5jdGlvbiBzdG9wKCl7Y2MgPSBzdG9wOyB0aHJvdyBTdG9wSXRlcmF0aW9uO307CiAgICB2YXIgY2MgPSBwdXNoKHNjYW5Ob2RlLCBzdGFydCwgc3RvcCk7CiAgICB2YXIgb3duZXIgPSBzdGFydC5vd25lckRvY3VtZW50OwogICAgdmFyIG5vZGVRdWV1ZSA9IFtdOwoKICAgIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5zZXJ0IG5vZGVzIGFmdGVyIHRoZQogICAgLy8gb25lIGdpdmVuIGFzIGFyZ3VtZW50LgogICAgZnVuY3Rpb24gcG9pbnRBdChub2RlKXsKICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICByZXR1cm4gZnVuY3Rpb24obmV3bm9kZSkgewogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobmV3bm9kZSwgbmV4dCk7CiAgICAgIH07CiAgICB9CiAgICB2YXIgcG9pbnQgPSBudWxsOwoKICAgIC8vIEluc2VydCBhIG5vcm1hbGl6ZWQgbm9kZSBhdCB0aGUgY3VycmVudCBwb2ludC4gSWYgaXQgaXMgYSB0ZXh0CiAgICAvLyBub2RlLCB3cmFwIGl0IGluIGEgJmx0O3NwYW4+LCBhbmQgZ2l2ZSB0aGF0IHNwYW4gYSBjdXJyZW50VGV4dAogICAgLy8gcHJvcGVydHkgLS0gdGhpcyBpcyB1c2VkIHRvIGNhY2hlIHRoZSBub2RlVmFsdWUsIGJlY2F1c2UKICAgIC8vIGRpcmVjdGx5IGFjY2Vzc2luZyBub2RlVmFsdWUgaXMgaG9ycmlibHkgc2xvdyBvbiBzb21lIGJyb3dzZXJzLgogICAgLy8gVGhlIGRpcnR5IHByb3BlcnR5IGlzIHVzZWQgYnkgdGhlIGhpZ2hsaWdodGVyIHRvIGRldGVybWluZQogICAgLy8gd2hpY2ggcGFydHMgb2YgdGhlIGRvY3VtZW50IGhhdmUgdG8gYmUgcmUtaGlnaGxpZ2h0ZWQuCiAgICBmdW5jdGlvbiBpbnNlcnRQYXJ0KHBhcnQpewogICAgICB2YXIgdGV4dCA9ICJcbiI7CiAgICAgIGlmIChwYXJ0Lm5vZGVUeXBlID09IDMpIHsKICAgICAgICBzZWxlY3Quc25hcHNob3RDaGFuZ2VkKCk7CiAgICAgICAgcGFydCA9IG1ha2VQYXJ0U3BhbihwYXJ0LCBvd25lcik7CiAgICAgICAgdGV4dCA9IHBhcnQuY3VycmVudFRleHQ7CiAgICAgIH0KICAgICAgcGFydC5kaXJ0eSA9IHRydWU7CiAgICAgIG5vZGVRdWV1ZS5wdXNoKHBhcnQpOwogICAgICBwb2ludChwYXJ0KTsKICAgICAgcmV0dXJuIHRleHQ7CiAgICB9CgogICAgLy8gRXh0cmFjdCB0aGUgdGV4dCBhbmQgbmV3bGluZXMgZnJvbSBhIERPTSBub2RlLCBpbnNlcnQgdGhlbSBpbnRvCiAgICAvLyB0aGUgZG9jdW1lbnQsIGFuZCB5aWVsZCB0aGUgdGV4dHVhbCBjb250ZW50LiBVc2VkIHRvIHJlcGxhY2UKICAgIC8vIG5vbi1ub3JtYWxpemVkIG5vZGVzLgogICAgZnVuY3Rpb24gd3JpdGVOb2RlKG5vZGUsIGMpewogICAgICB2YXIgdG9ZaWVsZCA9IFtdOwogICAgICBmb3JFYWNoKHNpbXBsaWZ5RE9NKG5vZGUpLCBmdW5jdGlvbihwYXJ0KSB7CiAgICAgICAgdG9ZaWVsZC5wdXNoKGluc2VydFBhcnQocGFydCkpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHlpZWxkKHRvWWllbGQuam9pbigiIiksIGMpOwogICAgfQoKICAgIC8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIGEgbm9ybWFsaXplZCAmbHQ7c3Bhbj4gZWxlbWVudC4KICAgIGZ1bmN0aW9uIHBhcnROb2RlKG5vZGUpewogICAgICBpZiAobm9kZS5pc1BhcnQgJmFtcDsmYW1wOyBub2RlLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgJmFtcDsmYW1wOyBub2RlLmZpcnN0Q2hpbGQubm9kZVR5cGUgPT0gMykgewogICAgICAgIG5vZGUuY3VycmVudFRleHQgPSBub2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlOwogICAgICAgIHJldHVybiAhL1tcblx0XHJdLy50ZXN0KG5vZGUuY3VycmVudFRleHQpOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyBIYW5kbGUgYSBub2RlLiBBZGQgaXRzIHN1Y2Nlc3NvciB0byB0aGUgY29udGludWF0aW9uIGlmIHRoZXJlCiAgICAvLyBpcyBvbmUsIGZpbmQgb3V0IHdoZXRoZXIgdGhlIG5vZGUgaXMgbm9ybWFsaXplZC4gSWYgaXQgaXMsCiAgICAvLyB5aWVsZCBpdHMgY29udGVudCwgb3RoZXJ3aXNlLCBub3JtYWxpemUgaXQgKHdyaXRlTm9kZSB3aWxsIHRha2UKICAgIC8vIGNhcmUgb2YgeWllbGRpbmcpLgogICAgZnVuY3Rpb24gc2Nhbk5vZGUobm9kZSwgYyl7CiAgICAgIGlmIChub2RlLm5leHRTaWJsaW5nKQogICAgICAgIGMgPSBwdXNoKHNjYW5Ob2RlLCBub2RlLm5leHRTaWJsaW5nLCBjKTsKCiAgICAgIGlmIChwYXJ0Tm9kZShub2RlKSl7CiAgICAgICAgbm9kZVF1ZXVlLnB1c2gobm9kZSk7CiAgICAgICAgcmV0dXJuIHlpZWxkKG5vZGUuY3VycmVudFRleHQsIGMpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkJSIikgewogICAgICAgIG5vZGVRdWV1ZS5wdXNoKG5vZGUpOwogICAgICAgIHJldHVybiB5aWVsZCgiXG4iLCBjKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBwb2ludCA9IHBvaW50QXQobm9kZSk7CiAgICAgICAgcmVtb3ZlRWxlbWVudChub2RlKTsKICAgICAgICByZXR1cm4gd3JpdGVOb2RlKG5vZGUsIGMpOwogICAgICB9CiAgICB9CgogICAgLy8gTW9jaGlLaXQgaXRlcmF0b3JzIGFyZSBvYmplY3RzIHdpdGggYSBuZXh0IGZ1bmN0aW9uIHRoYXQKICAgIC8vIHJldHVybnMgdGhlIG5leHQgdmFsdWUgb3IgdGhyb3dzIFN0b3BJdGVyYXRpb24gd2hlbiB0aGVyZSBhcmUKICAgIC8vIG5vIG1vcmUgdmFsdWVzLgogICAgcmV0dXJuIHtuZXh0OiBmdW5jdGlvbigpe3JldHVybiBjYygpO30sIG5vZGVzOiBub2RlUXVldWV9OwogIH0KCiAgLy8gRGV0ZXJtaW5lIHRoZSB0ZXh0IHNpemUgb2YgYSBwcm9jZXNzZWQgbm9kZS4KICBmdW5jdGlvbiBub2RlU2l6ZShub2RlKSB7CiAgICBpZiAobm9kZS5ub2RlTmFtZSA9PSAiQlIiKQogICAgICByZXR1cm4gMTsKICAgIGVsc2UKICAgICAgcmV0dXJuIG5vZGUuY3VycmVudFRleHQubGVuZ3RoOwogIH0KCiAgLy8gU2VhcmNoIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSB0b3AtbGV2ZWwgbm9kZXMgdW50aWwgdGhlIG5leHQgQlIgb3IKICAvLyB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lLgogIGZ1bmN0aW9uIHN0YXJ0T2ZMaW5lKG5vZGUpIHsKICAgIHdoaWxlIChub2RlICZhbXA7JmFtcDsgbm9kZS5ub2RlTmFtZSAhPSAiQlIiKSBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7CiAgICByZXR1cm4gbm9kZTsKICB9CiAgZnVuY3Rpb24gZW5kT2ZMaW5lKG5vZGUsIGNvbnRhaW5lcikgewogICAgaWYgKCFub2RlKSBub2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICBlbHNlIGlmIChub2RlLm5vZGVOYW1lID09ICJCUiIpIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwoKICAgIHdoaWxlIChub2RlICZhbXA7JmFtcDsgbm9kZS5ub2RlTmFtZSAhPSAiQlIiKSBub2RlID0gbm9kZS5uZXh0U2libGluZzsKICAgIHJldHVybiBub2RlOwogIH0KCiAgLy8gUmVwbGFjZSBhbGwgRE9NIG5vZGVzIGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbiB3aXRoIG5ldyBvbmVzLgogIC8vIE5lZWRlZCB0byBwcmV2ZW50IGlzc3VlcyBpbiBJRSB3aGVyZSB0aGUgb2xkIERPTSBub2RlcyBjYW4gYmUKICAvLyBwYXN0ZWQgYmFjayBpbnRvIHRoZSBkb2N1bWVudCwgc3RpbGwgaG9sZGluZyB0aGVpciBvbGQgdW5kbwogIC8vIGluZm9ybWF0aW9uLgogIGZ1bmN0aW9uIHNjcnViUGFzdGVkKGNvbnRhaW5lciwgc3RhcnQsIHN0YXJ0MikgewogICAgdmFyIGVuZCA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKGNvbnRhaW5lciwgdHJ1ZSksCiAgICAgICAgZG9jID0gY29udGFpbmVyLm93bmVyRG9jdW1lbnQ7CiAgICBpZiAoc3RhcnQgIT0gbnVsbCAmYW1wOyZhbXA7IHN0YXJ0LnBhcmVudE5vZGUgIT0gY29udGFpbmVyKSBzdGFydCA9IHN0YXJ0MjsKICAgIGlmIChzdGFydCA9PT0gZmFsc2UpIHN0YXJ0ID0gbnVsbDsKICAgIGlmIChzdGFydCA9PSBlbmQgfHwgIWVuZCB8fCAhY29udGFpbmVyLmZpcnN0Q2hpbGQpIHJldHVybjsKCiAgICB2YXIgY2xlYXIgPSB0cmF2ZXJzZURPTShzdGFydCA/IHN0YXJ0Lm5leHRTaWJsaW5nIDogY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgd2hpbGUgKGVuZC5wYXJlbnROb2RlID09IGNvbnRhaW5lcikgdHJ5e2NsZWFyLm5leHQoKTt9Y2F0Y2goZSl7YnJlYWs7fQogICAgZm9yRWFjaChjbGVhci5ub2RlcywgZnVuY3Rpb24obm9kZSkgewogICAgICB2YXIgbmV3Tm9kZSA9IG5vZGUubm9kZU5hbWUgPT0gIkJSIiA/IGRvYy5jcmVhdGVFbGVtZW50KCJCUiIpIDogbWFrZVBhcnRTcGFuKG5vZGUuY3VycmVudFRleHQsIGRvYyk7CiAgICAgIGNvbnRhaW5lci5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgbm9kZSk7CiAgICB9KTsKICB9CgogIC8vIENsaWVudCBpbnRlcmZhY2UgZm9yIHNlYXJjaGluZyB0aGUgY29udGVudCBvZiB0aGUgZWRpdG9yLiBDcmVhdGUKICAvLyB0aGVzZSBieSBjYWxsaW5nIENvZGVNaXJyb3IuZ2V0U2VhcmNoQ3Vyc29yLiBUbyB1c2UsIGNhbGwKICAvLyBmaW5kTmV4dCBvbiB0aGUgcmVzdWx0aW5nIG9iamVjdCAtLSB0aGlzIHJldHVybnMgYSBib29sZWFuCiAgLy8gaW5kaWNhdGluZyB3aGV0aGVyIGFueXRoaW5nIHdhcyBmb3VuZCwgYW5kIGNhbiBiZSBjYWxsZWQgYWdhaW4gdG8KICAvLyBza2lwIHRvIHRoZSBuZXh0IGZpbmQuIFVzZSB0aGUgc2VsZWN0IGFuZCByZXBsYWNlIG1ldGhvZHMgdG8KICAvLyBhY3R1YWxseSBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZm91bmQgbG9jYXRpb25zLgogIGZ1bmN0aW9uIFNlYXJjaEN1cnNvcihlZGl0b3IsIHN0cmluZywgZnJvbUN1cnNvcikgewogICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7CiAgICB0aGlzLmhpc3RvcnkgPSBlZGl0b3IuaGlzdG9yeTsKICAgIHRoaXMuaGlzdG9yeS5jb21taXQoKTsKCiAgICAvLyBBcmUgd2UgY3VycmVudGx5IGF0IGFuIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCBzdHJpbmc/CiAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlOwogICAgLy8gVGhlIG9iamVjdCBzdG9yZXMgYSBzZXQgb2Ygbm9kZXMgY29taW5nIGFmdGVyIGl0cyBjdXJyZW50CiAgICAvLyBwb3NpdGlvbiwgc28gdGhhdCB3aGVuIHRoZSBjdXJyZW50IHBvaW50IGlzIHRha2VuIG91dCBvZiB0aGUKICAgIC8vIERPTSB0cmVlLCB3ZSBjYW4gc3RpbGwgdHJ5IHRvIGNvbnRpbnVlLgogICAgdGhpcy5mYWxsYmFja1NpemUgPSAxNTsKICAgIHZhciBjdXJzb3I7CiAgICAvLyBTdGFydCBmcm9tIHRoZSBjdXJzb3Igd2hlbiBzcGVjaWZpZWQgYW5kIGEgY3Vyc29yIGNhbiBiZSBmb3VuZC4KICAgIGlmIChmcm9tQ3Vyc29yICZhbXA7JmFtcDsgKGN1cnNvciA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5lZGl0b3IuY29udGFpbmVyKSkpIHsKICAgICAgdGhpcy5saW5lID0gY3Vyc29yLm5vZGU7CiAgICAgIHRoaXMub2Zmc2V0ID0gY3Vyc29yLm9mZnNldDsKICAgIH0KICAgIGVsc2UgewogICAgICB0aGlzLmxpbmUgPSBudWxsOwogICAgICB0aGlzLm9mZnNldCA9IDA7CiAgICB9CiAgICB0aGlzLnZhbGlkID0gISFzdHJpbmc7CgogICAgLy8gQ3JlYXRlIGEgbWF0Y2hlciBmdW5jdGlvbiBiYXNlZCBvbiB0aGUga2luZCBvZiBzdHJpbmcgd2UgaGF2ZS4KICAgIHZhciB0YXJnZXQgPSBzdHJpbmcuc3BsaXQoIlxuIiksIHNlbGYgPSB0aGlzOzsKICAgIHRoaXMubWF0Y2hlcyA9ICh0YXJnZXQubGVuZ3RoID09IDEpID8KICAgICAgLy8gRm9yIG9uZS1saW5lIHN0cmluZ3MsIHNlYXJjaGluZyBjYW4gYmUgZG9uZSBzaW1wbHkgYnkgY2FsbGluZwogICAgICAvLyBpbmRleE9mIG9uIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBtYXRjaCA9IGNsZWFuVGV4dChzZWxmLmhpc3RvcnkudGV4dEFmdGVyKHNlbGYubGluZSkuc2xpY2Uoc2VsZi5vZmZzZXQpKS5pbmRleE9mKHN0cmluZyk7CiAgICAgICAgaWYgKG1hdGNoID4gLTEpCiAgICAgICAgICByZXR1cm4ge2Zyb206IHtub2RlOiBzZWxmLmxpbmUsIG9mZnNldDogc2VsZi5vZmZzZXQgKyBtYXRjaH0sCiAgICAgICAgICAgICAgICAgIHRvOiB7bm9kZTogc2VsZi5saW5lLCBvZmZzZXQ6IHNlbGYub2Zmc2V0ICsgbWF0Y2ggKyBzdHJpbmcubGVuZ3RofX07CiAgICAgIH0gOgogICAgICAvLyBNdWx0aS1saW5lIHN0cmluZ3MgcmVxdWlyZSBpbnRlcm5hbCBpdGVyYXRpb24gb3ZlciBsaW5lcywgYW5kCiAgICAgIC8vIHNvbWUgY2x1bmt5IGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIGZpcnN0IG1hdGNoIGVuZHMgYXQgdGhlCiAgICAgIC8vIGVuZCBvZiB0aGUgbGluZSBhbmQgdGhlIGxhc3QgbWF0Y2ggc3RhcnRzIGF0IHRoZSBzdGFydC4KICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGZpcnN0TGluZSA9IGNsZWFuVGV4dChzZWxmLmhpc3RvcnkudGV4dEFmdGVyKHNlbGYubGluZSkuc2xpY2Uoc2VsZi5vZmZzZXQpKTsKICAgICAgICB2YXIgbWF0Y2ggPSBmaXJzdExpbmUubGFzdEluZGV4T2YodGFyZ2V0WzBdKTsKICAgICAgICBpZiAobWF0Y2ggPT0gLTEgfHwgbWF0Y2ggIT0gZmlyc3RMaW5lLmxlbmd0aCAtIHRhcmdldFswXS5sZW5ndGgpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0gc2VsZi5vZmZzZXQgKyBtYXRjaDsKCiAgICAgICAgdmFyIGxpbmUgPSBzZWxmLmhpc3Rvcnkubm9kZUFmdGVyKHNlbGYubGluZSk7CiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgJmx0OyB0YXJnZXQubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgICBpZiAoY2xlYW5UZXh0KHNlbGYuaGlzdG9yeS50ZXh0QWZ0ZXIobGluZSkpICE9IHRhcmdldFtpXSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgbGluZSA9IHNlbGYuaGlzdG9yeS5ub2RlQWZ0ZXIobGluZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoY2xlYW5UZXh0KHNlbGYuaGlzdG9yeS50ZXh0QWZ0ZXIobGluZSkpLmluZGV4T2YodGFyZ2V0W3RhcmdldC5sZW5ndGggLSAxXSkgIT0gMCkKICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgcmV0dXJuIHtmcm9tOiB7bm9kZTogc2VsZi5saW5lLCBvZmZzZXQ6IHN0YXJ0T2Zmc2V0fSwKICAgICAgICAgICAgICAgIHRvOiB7bm9kZTogbGluZSwgb2Zmc2V0OiB0YXJnZXRbdGFyZ2V0Lmxlbmd0aCAtIDFdLmxlbmd0aH19OwogICAgICB9OwogIH0KCiAgU2VhcmNoQ3Vyc29yLnByb3RvdHlwZSA9IHsKICAgIGZpbmROZXh0OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKCF0aGlzLnZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHRoaXMuYXRPY2N1cnJlbmNlID0gZmFsc2U7CiAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgIC8vIEdvIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBkb2N1bWVudCBpZiB0aGUgY3VycmVudCBsaW5lIGlzCiAgICAgIC8vIG5vIGxvbmdlciBpbiB0aGUgRE9NIHRyZWUuCiAgICAgIGlmICh0aGlzLmxpbmUgJmFtcDsmYW1wOyAhdGhpcy5saW5lLnBhcmVudE5vZGUpIHsKICAgICAgICB0aGlzLmxpbmUgPSBudWxsOwogICAgICAgIHRoaXMub2Zmc2V0ID0gMDsKICAgICAgfQoKICAgICAgLy8gU2V0IHRoZSBjdXJzb3IncyBwb3NpdGlvbiBvbmUgY2hhcmFjdGVyIGFmdGVyIHRoZSBnaXZlbgogICAgICAvLyBwb3NpdGlvbi4KICAgICAgZnVuY3Rpb24gc2F2ZUFmdGVyKHBvcykgewogICAgICAgIGlmIChzZWxmLmhpc3RvcnkudGV4dEFmdGVyKHBvcy5ub2RlKS5sZW5ndGggJmx0OyBwb3Mub2Zmc2V0KSB7CiAgICAgICAgICBzZWxmLmxpbmUgPSBwb3Mubm9kZTsKICAgICAgICAgIHNlbGYub2Zmc2V0ID0gcG9zLm9mZnNldCArIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgc2VsZi5saW5lID0gc2VsZi5oaXN0b3J5Lm5vZGVBZnRlcihwb3Mubm9kZSk7CiAgICAgICAgICBzZWxmLm9mZnNldCA9IDA7CiAgICAgICAgfQogICAgICB9CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBtYXRjaCA9IHRoaXMubWF0Y2hlcygpOwogICAgICAgIC8vIEZvdW5kIHRoZSBzZWFyY2ggc3RyaW5nLgogICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgdGhpcy5hdE9jY3VycmVuY2UgPSBtYXRjaDsKICAgICAgICAgIHNhdmVBZnRlcihtYXRjaC5mcm9tKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICB0aGlzLmxpbmUgPSB0aGlzLmhpc3Rvcnkubm9kZUFmdGVyKHRoaXMubGluZSk7CiAgICAgICAgdGhpcy5vZmZzZXQgPSAwOwogICAgICAgIC8vIEVuZCBvZiBkb2N1bWVudC4KICAgICAgICBpZiAoIXRoaXMubGluZSkgewogICAgICAgICAgdGhpcy52YWxpZCA9IGZhbHNlOwogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzZWxlY3Q6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5hdE9jY3VycmVuY2UpIHsKICAgICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuZWRpdG9yLmNvbnRhaW5lciwgdGhpcy5hdE9jY3VycmVuY2UuZnJvbSwgdGhpcy5hdE9jY3VycmVuY2UudG8pOwogICAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmVkaXRvci5jb250YWluZXIpOwogICAgICB9CiAgICB9LAoKICAgIHJlcGxhY2U6IGZ1bmN0aW9uKHN0cmluZykgewogICAgICBpZiAodGhpcy5hdE9jY3VycmVuY2UpIHsKICAgICAgICB2YXIgZW5kID0gdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKHRoaXMuYXRPY2N1cnJlbmNlLmZyb20sIHRoaXMuYXRPY2N1cnJlbmNlLnRvLCBzdHJpbmcpOwogICAgICAgIHRoaXMubGluZSA9IGVuZC5ub2RlOwogICAgICAgIHRoaXMub2Zmc2V0ID0gZW5kLm9mZnNldDsKICAgICAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgfTsKCiAgLy8gVGhlIEVkaXRvciBvYmplY3QgaXMgdGhlIG1haW4gaW5zaWRlLXRoZS1pZnJhbWUgaW50ZXJmYWNlLgogIGZ1bmN0aW9uIEVkaXRvcihvcHRpb25zKSB7CiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgd2luZG93LmluZGVudFVuaXQgPSBvcHRpb25zLmluZGVudFVuaXQ7CiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKICAgIHRoaXMuZG9jID0gZG9jdW1lbnQ7CiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIgPSB0aGlzLmRvYy5ib2R5OwogICAgdGhpcy53aW4gPSB3aW5kb3c7CiAgICB0aGlzLmhpc3RvcnkgPSBuZXcgSGlzdG9yeShjb250YWluZXIsIG9wdGlvbnMudW5kb0RlcHRoLCBvcHRpb25zLnVuZG9EZWxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIG9wdGlvbnMub25DaGFuZ2UpOwogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIGlmICghRWRpdG9yLlBhcnNlcikKICAgICAgdGhyb3cgIk5vIHBhcnNlciBsb2FkZWQuIjsKICAgIGlmIChvcHRpb25zLnBhcnNlckNvbmZpZyAmYW1wOyZhbXA7IEVkaXRvci5QYXJzZXIuY29uZmlndXJlKQogICAgICBFZGl0b3IuUGFyc2VyLmNvbmZpZ3VyZShvcHRpb25zLnBhcnNlckNvbmZpZyk7CgogICAgaWYgKCFvcHRpb25zLnJlYWRPbmx5KQogICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKGNvbnRhaW5lciwge25vZGU6IG51bGwsIG9mZnNldDogMH0pOwoKICAgIHRoaXMuZGlydHkgPSBbXTsKICAgIGlmIChvcHRpb25zLmNvbnRlbnQpCiAgICAgIHRoaXMuaW1wb3J0Q29kZShvcHRpb25zLmNvbnRlbnQpOwogICAgZWxzZSAvLyBGRiBhY3RzIHdlaXJkIHdoZW4gdGhlIGVkaXRhYmxlIGRvY3VtZW50IGlzIGNvbXBsZXRlbHkgZW1wdHkKICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoIkJSIikpOwoKICAgIGlmICghb3B0aW9ucy5yZWFkT25seSkgewogICAgICBpZiAob3B0aW9ucy5jb250aW51b3VzU2Nhbm5pbmcgIT09IGZhbHNlKSB7CiAgICAgICAgdGhpcy5zY2FubmVyID0gdGhpcy5kb2N1bWVudFNjYW5uZXIob3B0aW9ucy5saW5lc1BlclBhc3MpOwogICAgICAgIHRoaXMuZGVsYXlTY2FubmluZygpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBzZXRFZGl0YWJsZSgpIHsKICAgICAgICAvLyBJbiBJRSwgZGVzaWduTW9kZSBmcmFtZXMgY2FuIG5vdCBydW4gYW55IHNjcmlwdHMsIHNvIHdlIHVzZQogICAgICAgIC8vIGNvbnRlbnRFZGl0YWJsZSBpbnN0ZWFkLgogICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRlbnRFZGl0YWJsZSAhPSB1bmRlZmluZWQgJmFtcDsmYW1wOyBpbnRlcm5ldEV4cGxvcmVyKQogICAgICAgICAgZG9jdW1lbnQuYm9keS5jb250ZW50RWRpdGFibGUgPSAidHJ1ZSI7CiAgICAgICAgZWxzZQogICAgICAgICAgZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7CgogICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5ib3JkZXJXaWR0aCA9ICIwIjsKICAgICAgICBpZiAoIW9wdGlvbnMudGV4dFdyYXBwaW5nKQogICAgICAgICAgY29udGFpbmVyLnN0eWxlLndoaXRlU3BhY2UgPSAibm93cmFwIjsKICAgICAgfQoKICAgICAgLy8gSWYgc2V0dGluZyB0aGUgZnJhbWUgZWRpdGFibGUgZmFpbHMsIHRyeSBhZ2FpbiB3aGVuIHRoZSB1c2VyCiAgICAgIC8vIGZvY3VzIGl0IChoYXBwZW5zIHdoZW4gdGhlIGZyYW1lIGlzIG5vdCB2aXNpYmxlIG9uCiAgICAgIC8vIGluaXRpYWxpc2F0aW9uLCBpbiBGaXJlZm94KS4KICAgICAgdHJ5IHsKICAgICAgICBzZXRFZGl0YWJsZSgpOwogICAgICB9CiAgICAgIGNhdGNoKGUpIHsKICAgICAgICB2YXIgZm9jdXNFdmVudCA9IGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudCwgImZvY3VzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICBmb2N1c0V2ZW50KCk7CiAgICAgICAgICBzZXRFZGl0YWJsZSgpOwogICAgICAgIH0sIHRydWUpOwogICAgICB9CgogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJrZXlkb3duIiwgbWV0aG9kKHRoaXMsICJrZXlEb3duIikpOwogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJrZXlwcmVzcyIsIG1ldGhvZCh0aGlzLCAia2V5UHJlc3MiKSk7CiAgICAgIGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudCwgImtleXVwIiwgbWV0aG9kKHRoaXMsICJrZXlVcCIpKTsKCiAgICAgIGZ1bmN0aW9uIGN1cnNvckFjdGl2aXR5KCkge3NlbGYuY3Vyc29yQWN0aXZpdHkoZmFsc2UpO30KICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LmJvZHksICJtb3VzZXVwIiwgY3Vyc29yQWN0aXZpdHkpOwogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQuYm9keSwgInBhc3RlIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICBjdXJzb3JBY3Rpdml0eSgpOwogICAgICAgIGlmIChpbnRlcm5ldEV4cGxvcmVyKSB7CiAgICAgICAgICB2YXIgdGV4dCA9IG51bGw7CiAgICAgICAgICB0cnkge3RleHQgPSB3aW5kb3cuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJUZXh0Iik7fWNhdGNoKGUpe30KICAgICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHsKICAgICAgICAgICAgc2VsZi5yZXBsYWNlU2VsZWN0aW9uKHRleHQpOwogICAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUoc2VsZi5jb250YWluZXIsIHRydWUpLAogICAgICAgICAgICAgICAgc3RhcnQyID0gc3RhcnQgJmFtcDsmYW1wOyBzdGFydC5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtzY3J1YlBhc3RlZChzZWxmLmNvbnRhaW5lciwgc3RhcnQsIHN0YXJ0Mik7fSwgMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LmJvZHksICJjdXQiLCBjdXJzb3JBY3Rpdml0eSk7CgogICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9NYXRjaFBhcmVucykKICAgICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQuYm9keSwgImNsaWNrIiwgbWV0aG9kKHRoaXMsICJzY2hlZHVsZVBhcmVuQmxpbmsiKSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBpc1NhZmVLZXkoY29kZSkgewogICAgcmV0dXJuIChjb2RlID49IDE2ICZhbXA7JmFtcDsgY29kZSAmbHQ7PSAxOCkgfHwgLy8gc2hpZnQsIGNvbnRyb2wsIGFsdAogICAgICAgICAgIChjb2RlID49IDMzICZhbXA7JmFtcDsgY29kZSAmbHQ7PSA0MCk7IC8vIGFycm93cywgaG9tZSwgZW5kCiAgfQoKICBFZGl0b3IucHJvdG90eXBlID0gewogICAgLy8gSW1wb3J0IGEgcGllY2Ugb2YgY29kZSBpbnRvIHRoZSBlZGl0b3IuCiAgICBpbXBvcnRDb2RlOiBmdW5jdGlvbihjb2RlKSB7CiAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKG51bGwsIG51bGwsIGFzRWRpdG9yTGluZXMoY29kZSkpOwogICAgICB0aGlzLmhpc3RvcnkucmVzZXQoKTsKICAgIH0sCgogICAgLy8gRXh0cmFjdCB0aGUgY29kZSBmcm9tIHRoZSBlZGl0b3IuCiAgICBnZXRDb2RlOiBmdW5jdGlvbigpIHsKICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgIHJldHVybiAiIjsKCiAgICAgIHZhciBhY2N1bSA9IFtdOwogICAgICBzZWxlY3QubWFya1NlbGVjdGlvbih0aGlzLndpbik7CiAgICAgIGZvckVhY2godHJhdmVyc2VET00odGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCksIG1ldGhvZChhY2N1bSwgInB1c2giKSk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CiAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgICAgcmV0dXJuIGNsZWFuVGV4dChhY2N1bS5qb2luKCIiKSk7CiAgICB9LAoKICAgIGNoZWNrTGluZTogZnVuY3Rpb24obm9kZSkgewogICAgICBpZiAobm9kZSA9PT0gZmFsc2UgfHwgIShub2RlID09IG51bGwgfHwgbm9kZS5wYXJlbnROb2RlID09IHRoaXMuY29udGFpbmVyKSkKICAgICAgICB0aHJvdyBwYXJlbnQuQ29kZU1pcnJvci5JbnZhbGlkTGluZUhhbmRsZTsKICAgIH0sCgogICAgY3Vyc29yUG9zaXRpb246IGZ1bmN0aW9uKHN0YXJ0KSB7CiAgICAgIGlmIChzdGFydCA9PSBudWxsKSBzdGFydCA9IHRydWU7CiAgICAgIHZhciBwb3MgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBzdGFydCk7CiAgICAgIGlmIChwb3MpIHJldHVybiB7bGluZTogcG9zLm5vZGUsIGNoYXJhY3RlcjogcG9zLm9mZnNldH07CiAgICAgIGVsc2UgcmV0dXJuIHtsaW5lOiBudWxsLCBjaGFyYWN0ZXI6IDB9OwogICAgfSwKCiAgICBmaXJzdExpbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgbGFzdExpbmU6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5jb250YWluZXIubGFzdENoaWxkKSByZXR1cm4gc3RhcnRPZkxpbmUodGhpcy5jb250YWluZXIubGFzdENoaWxkKTsKICAgICAgZWxzZSByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgbmV4dExpbmU6IGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgdGhpcy5jaGVja0xpbmUobGluZSk7CiAgICAgIHZhciBlbmQgPSBlbmRPZkxpbmUobGluZSwgdGhpcy5jb250YWluZXIpOwogICAgICByZXR1cm4gZW5kIHx8IGZhbHNlOwogICAgfSwKCiAgICBwcmV2TGluZTogZnVuY3Rpb24obGluZSkgewogICAgICB0aGlzLmNoZWNrTGluZShsaW5lKTsKICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gc3RhcnRPZkxpbmUobGluZS5wcmV2aW91c1NpYmxpbmcpOwogICAgfSwKCiAgICBzZWxlY3RMaW5lczogZnVuY3Rpb24oc3RhcnRMaW5lLCBzdGFydE9mZnNldCwgZW5kTGluZSwgZW5kT2Zmc2V0KSB7CiAgICAgIHRoaXMuY2hlY2tMaW5lKHN0YXJ0TGluZSk7CiAgICAgIHZhciBzdGFydCA9IHtub2RlOiBzdGFydExpbmUsIG9mZnNldDogc3RhcnRPZmZzZXR9LCBlbmQgPSBudWxsOwogICAgICBpZiAoZW5kT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLmNoZWNrTGluZShlbmRMaW5lKTsKICAgICAgICBlbmQgPSB7bm9kZTogZW5kTGluZSwgb2Zmc2V0OiBlbmRPZmZzZXR9OwogICAgICB9CiAgICAgIHNlbGVjdC5zZXRDdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHN0YXJ0LCBlbmQpOwogICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3IodGhpcy5jb250YWluZXIpOwogICAgfSwKCiAgICBsaW5lQ29udGVudDogZnVuY3Rpb24obGluZSkgewogICAgICB0aGlzLmNoZWNrTGluZShsaW5lKTsKICAgICAgdmFyIGFjY3VtID0gW107CiAgICAgIGZvciAobGluZSA9IGxpbmUgPyBsaW5lLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgICBsaW5lICZhbXA7JmFtcDsgbGluZS5ub2RlTmFtZSAhPSAiQlIiOyBsaW5lID0gbGluZS5uZXh0U2libGluZykKICAgICAgICBhY2N1bS5wdXNoKG5vZGVUZXh0KGxpbmUpKTsKICAgICAgcmV0dXJuIGNsZWFuVGV4dChhY2N1bS5qb2luKCIiKSk7CiAgICB9LAoKICAgIHNldExpbmVDb250ZW50OiBmdW5jdGlvbihsaW5lLCBjb250ZW50KSB7CiAgICAgIHRoaXMuaGlzdG9yeS5jb21taXQoKTsKICAgICAgdGhpcy5yZXBsYWNlUmFuZ2Uoe25vZGU6IGxpbmUsIG9mZnNldDogMH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHtub2RlOiBsaW5lLCBvZmZzZXQ6IHRoaXMuaGlzdG9yeS50ZXh0QWZ0ZXIobGluZSkubGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCk7CiAgICAgIHRoaXMuYWRkRGlydHlOb2RlKGxpbmUpOwogICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICB9LAoKICAgIGluc2VydEludG9MaW5lOiBmdW5jdGlvbihsaW5lLCBwb3NpdGlvbiwgY29udGVudCkgewogICAgICB2YXIgYmVmb3JlID0gbnVsbDsKICAgICAgaWYgKHBvc2l0aW9uID09ICJlbmQiKSB7CiAgICAgICAgYmVmb3JlID0gZW5kT2ZMaW5lKGxpbmUsIHRoaXMuY29udGFpbmVyKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBmb3IgKHZhciBjdXIgPSBsaW5lID8gbGluZS5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7IGN1cjsgY3VyID0gY3VyLm5leHRTaWJsaW5nKSB7CiAgICAgICAgICBpZiAocG9zaXRpb24gPT0gMCkgewogICAgICAgICAgICBiZWZvcmUgPSBjdXI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHRleHQgPSAoY3VyLmlubmVyVGV4dCB8fCBjdXIudGV4dENvbnRlbnQgfHwgY3VyLm5vZGVWYWx1ZSB8fCAiIik7CiAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPiBwb3NpdGlvbikgewogICAgICAgICAgICBiZWZvcmUgPSBjdXIubmV4dFNpYmxpbmc7CiAgICAgICAgICAgIGNvbnRlbnQgPSB0ZXh0LnNsaWNlKDAsIHBvc2l0aW9uKSArIGNvbnRlbnQgKyB0ZXh0LnNsaWNlKHBvc2l0aW9uKTsKICAgICAgICAgICAgcmVtb3ZlRWxlbWVudChjdXIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHBvc2l0aW9uIC09IHRleHQubGVuZ3RoOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIGxpbmVzID0gYXNFZGl0b3JMaW5lcyhjb250ZW50KSwgZG9jID0gdGhpcy5jb250YWluZXIub3duZXJEb2N1bWVudDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgJmx0OyBsaW5lcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChpID4gMCkgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGRvYy5jcmVhdGVFbGVtZW50KCJCUiIpLCBiZWZvcmUpOwogICAgICAgIHRoaXMuY29udGFpbmVyLmluc2VydEJlZm9yZShtYWtlUGFydFNwYW4obGluZXNbaV0sIGRvYyksIGJlZm9yZSk7CiAgICAgIH0KICAgICAgdGhpcy5hZGREaXJ0eU5vZGUobGluZSk7CiAgICAgIHRoaXMuc2NoZWR1bGVIaWdobGlnaHQoKTsKICAgIH0sCgogICAgLy8gUmV0cmlldmUgdGhlIHNlbGVjdGVkIHRleHQuCiAgICBzZWxlY3RlZFRleHQ6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgaCA9IHRoaXMuaGlzdG9yeTsKICAgICAgaC5jb21taXQoKTsKCiAgICAgIHZhciBzdGFydCA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHRydWUpLAogICAgICAgICAgZW5kID0gc2VsZWN0LmN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgZmFsc2UpOwogICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHJldHVybiAiIjsKCiAgICAgIGlmIChzdGFydC5ub2RlID09IGVuZC5ub2RlKQogICAgICAgIHJldHVybiBoLnRleHRBZnRlcihzdGFydC5ub2RlKS5zbGljZShzdGFydC5vZmZzZXQsIGVuZC5vZmZzZXQpOwoKICAgICAgdmFyIHRleHQgPSBbaC50ZXh0QWZ0ZXIoc3RhcnQubm9kZSkuc2xpY2Uoc3RhcnQub2Zmc2V0KV07CiAgICAgIGZvciAocG9zID0gaC5ub2RlQWZ0ZXIoc3RhcnQubm9kZSk7IHBvcyAhPSBlbmQubm9kZTsgcG9zID0gaC5ub2RlQWZ0ZXIocG9zKSkKICAgICAgICB0ZXh0LnB1c2goaC50ZXh0QWZ0ZXIocG9zKSk7CiAgICAgIHRleHQucHVzaChoLnRleHRBZnRlcihlbmQubm9kZSkuc2xpY2UoMCwgZW5kLm9mZnNldCkpOwogICAgICByZXR1cm4gY2xlYW5UZXh0KHRleHQuam9pbigiXG4iKSk7CiAgICB9LAoKICAgIC8vIFJlcGxhY2UgdGhlIHNlbGVjdGlvbiB3aXRoIGFub3RoZXIgcGllY2Ugb2YgdGV4dC4KICAgIHJlcGxhY2VTZWxlY3Rpb246IGZ1bmN0aW9uKHRleHQpIHsKICAgICAgdGhpcy5oaXN0b3J5LmNvbW1pdCgpOwogICAgICB2YXIgc3RhcnQgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB0cnVlKSwKICAgICAgICAgIGVuZCA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgaWYgKCFzdGFydCB8fCAhZW5kKSByZXR1cm47CgogICAgICBlbmQgPSB0aGlzLnJlcGxhY2VSYW5nZShzdGFydCwgZW5kLCB0ZXh0KTsKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgc3RhcnQsIGVuZCk7CiAgICB9LAoKICAgIHJlcGxhY2VSYW5nZTogZnVuY3Rpb24oZnJvbSwgdG8sIHRleHQpIHsKICAgICAgdmFyIGxpbmVzID0gYXNFZGl0b3JMaW5lcyh0ZXh0KTsKICAgICAgbGluZXNbMF0gPSB0aGlzLmhpc3RvcnkudGV4dEFmdGVyKGZyb20ubm9kZSkuc2xpY2UoMCwgZnJvbS5vZmZzZXQpICsgbGluZXNbMF07CiAgICAgIHZhciBsYXN0TGluZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdOwogICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9IGxhc3RMaW5lICsgdGhpcy5oaXN0b3J5LnRleHRBZnRlcih0by5ub2RlKS5zbGljZSh0by5vZmZzZXQpOwogICAgICB2YXIgZW5kID0gdGhpcy5oaXN0b3J5Lm5vZGVBZnRlcih0by5ub2RlKTsKICAgICAgdGhpcy5oaXN0b3J5LnB1c2goZnJvbS5ub2RlLCBlbmQsIGxpbmVzKTsKICAgICAgcmV0dXJuIHtub2RlOiB0aGlzLmhpc3Rvcnkubm9kZUJlZm9yZShlbmQpLAogICAgICAgICAgICAgIG9mZnNldDogbGFzdExpbmUubGVuZ3RofTsKICAgIH0sCgogICAgZ2V0U2VhcmNoQ3Vyc29yOiBmdW5jdGlvbihzdHJpbmcsIGZyb21DdXJzb3IpIHsKICAgICAgcmV0dXJuIG5ldyBTZWFyY2hDdXJzb3IodGhpcywgc3RyaW5nLCBmcm9tQ3Vyc29yKTsKICAgIH0sCgogICAgLy8gUmUtaW5kZW50IHRoZSB3aG9sZSBidWZmZXIKICAgIHJlaW5kZW50OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpCiAgICAgICAgdGhpcy5pbmRlbnRSZWdpb24obnVsbCwgdGhpcy5jb250YWluZXIubGFzdENoaWxkKTsKICAgIH0sCgogICAgZ3JhYktleXM6IGZ1bmN0aW9uKGV2ZW50SGFuZGxlciwgZmlsdGVyKSB7CiAgICAgIHRoaXMuZnJvemVuID0gZXZlbnRIYW5kbGVyOwogICAgICB0aGlzLmtleUZpbHRlciA9IGZpbHRlcjsKICAgIH0sCiAgICB1bmdyYWJLZXlzOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5mcm96ZW4gPSAibGVhdmUiOwogICAgICB0aGlzLmtleUZpbHRlciA9IG51bGw7CiAgICB9LAoKICAgIC8vIEludGVyY2VwdCBlbnRlciBhbmQgdGFiLCBhbmQgYXNzaWduIHRoZWlyIG5ldyBmdW5jdGlvbnMuCiAgICBrZXlEb3duOiBmdW5jdGlvbihldmVudCkgewogICAgICBpZiAodGhpcy5mcm96ZW4gPT0gImxlYXZlIikgdGhpcy5mcm96ZW4gPSBudWxsOwogICAgICBpZiAodGhpcy5mcm96ZW4gJmFtcDsmYW1wOyAoIXRoaXMua2V5RmlsdGVyIHx8IHRoaXMua2V5RmlsdGVyKGV2ZW50LmtleUNvZGUpKSkgewogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICB0aGlzLmZyb3plbihldmVudCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgY29kZSA9IGV2ZW50LmtleUNvZGU7CiAgICAgIC8vIERvbid0IHNjYW4gd2hlbiB0aGUgdXNlciBpcyB0eXBpbmcuCiAgICAgIHRoaXMuZGVsYXlTY2FubmluZygpOwogICAgICAvLyBTY2hlZHVsZSBhIHBhcmVuLWhpZ2hsaWdodCBldmVudCwgaWYgY29uZmlndXJlZC4KICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvTWF0Y2hQYXJlbnMpCiAgICAgICAgdGhpcy5zY2hlZHVsZVBhcmVuQmxpbmsoKTsKCiAgICAgIGlmIChjb2RlID09IDEzKSB7IC8vIGVudGVyCiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHsKICAgICAgICAgIHRoaXMucmVwYXJzZUJ1ZmZlcigpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHNlbGVjdC5pbnNlcnROZXdsaW5lQXRDdXJzb3IodGhpcy53aW4pOwogICAgICAgICAgdGhpcy5pbmRlbnRBdEN1cnNvcigpOwogICAgICAgICAgc2VsZWN0LnNjcm9sbFRvQ3Vyc29yKHRoaXMuY29udGFpbmVyKTsKICAgICAgICB9CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gOSAmYW1wOyZhbXA7IHRoaXMub3B0aW9ucy50YWJNb2RlICE9ICJkZWZhdWx0IikgeyAvLyB0YWIKICAgICAgICB0aGlzLmhhbmRsZVRhYighZXZlbnQuY3RybEtleSAmYW1wOyZhbXA7ICFldmVudC5zaGlmdEtleSk7CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gMzIgJmFtcDsmYW1wOyBldmVudC5zaGlmdEtleSAmYW1wOyZhbXA7IHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJkZWZhdWx0IikgeyAvLyBzcGFjZQogICAgICAgIHRoaXMuaGFuZGxlVGFiKHRydWUpOwogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmICgoY29kZSA9PSAyMTkgfHwgY29kZSA9PSAyMjEpICZhbXA7JmFtcDsgZXZlbnQuY3RybEtleSkgewogICAgICAgIHRoaXMuYmxpbmtQYXJlbnMoZXZlbnQuc2hpZnRLZXkpOwogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChldmVudC5tZXRhS2V5ICZhbXA7JmFtcDsgKGNvZGUgPT0gMzcgfHwgY29kZSA9PSAzOSkpIHsgLy8gTWV0YS1sZWZ0L3JpZ2h0CiAgICAgICAgdmFyIGN1cnNvciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyKTsKICAgICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSB8fCAhdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkgcmV0dXJuOwoKICAgICAgICBpZiAoY29kZSA9PSAzNykgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKHN0YXJ0T2ZMaW5lKGN1cnNvciksIHRoaXMuY29udGFpbmVyKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgIGVuZCA9IGVuZE9mTGluZShjdXJzb3IsIHRoaXMuY29udGFpbmVyKTsKICAgICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShlbmQgPyBlbmQucHJldmlvdXNTaWJsaW5nIDogdGhpcy5jb250YWluZXIubGFzdENoaWxkLCB0aGlzLmNvbnRhaW5lcik7CiAgICAgICAgfQogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHsKICAgICAgICBpZiAoKGV2ZW50LnNoaWZ0S2V5ICZhbXA7JmFtcDsgY29kZSA9PSA5MCkgfHwgY29kZSA9PSA4OSkgeyAvLyBzaGlmdC1aLCBZCiAgICAgICAgICBzZWxlY3Quc2Nyb2xsVG9Ob2RlKHRoaXMuaGlzdG9yeS5yZWRvKCkpOwogICAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjb2RlID09IDkwIHx8IGNvZGUgPT0gOCkgeyAvLyBaLCBiYWNrc3BhY2UKICAgICAgICAgIHNlbGVjdC5zY3JvbGxUb05vZGUodGhpcy5oaXN0b3J5LnVuZG8oKSk7CiAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gODMgJmFtcDsmYW1wOyB0aGlzLm9wdGlvbnMuc2F2ZUZ1bmN0aW9uKSB7IC8vIFMKICAgICAgICAgIHRoaXMub3B0aW9ucy5zYXZlRnVuY3Rpb24oKTsKICAgICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgLy8gQ2hlY2sgZm9yIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgcmUtaW5kZW50IHRoZSBjdXJyZW50IGxpbmUsCiAgICAvLyBhbmQgcHJldmVudCBPcGVyYSBmcm9tIGhhbmRsaW5nIGVudGVyIGFuZCB0YWIgYW55d2F5LgogICAga2V5UHJlc3M6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHZhciBlbGVjdHJpYyA9IC9pbmRlbnR8ZGVmYXVsdC8udGVzdCh0aGlzLm9wdGlvbnMudGFiTW9kZSkgJmFtcDsmYW1wOyBFZGl0b3IuUGFyc2VyLmVsZWN0cmljQ2hhcnM7CiAgICAgIC8vIEhhY2sgZm9yIE9wZXJhLCBhbmQgRmlyZWZveCBvbiBPUyBYLCBpbiB3aGljaCBzdG9wcGluZyBhCiAgICAgIC8vIGtleWRvd24gZXZlbnQgZG9lcyBub3QgcHJldmVudCB0aGUgYXNzb2NpYXRlZCBrZXlwcmVzcyBldmVudAogICAgICAvLyBmcm9tIGhhcHBlbmluZywgc28gd2UgaGF2ZSB0byBjYW5jZWwgZW50ZXIgYW5kIHRhYiBhZ2FpbgogICAgICAvLyBoZXJlLgogICAgICBpZiAoKHRoaXMuZnJvemVuICZhbXA7JmFtcDsgKCF0aGlzLmtleUZpbHRlciB8fCB0aGlzLmtleUZpbHRlcihldmVudC5rZXlDb2RlKSkpIHx8CiAgICAgICAgICBldmVudC5jb2RlID09IDEzIHx8IChldmVudC5jb2RlID09IDkgJmFtcDsmYW1wOyB0aGlzLm9wdGlvbnMudGFiTW9kZSAhPSAiZGVmYXVsdCIpIHx8CiAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PSAzMiAmYW1wOyZhbXA7IGV2ZW50LnNoaWZ0S2V5ICZhbXA7JmFtcDsgdGhpcy5vcHRpb25zLnRhYk1vZGUgPT0gImRlZmF1bHQiKSkKICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgIGVsc2UgaWYgKGVsZWN0cmljICZhbXA7JmFtcDsgZWxlY3RyaWMuaW5kZXhPZihldmVudC5jaGFyYWN0ZXIpICE9IC0xKQogICAgICAgIHRoaXMucGFyZW50LnNldFRpbWVvdXQobWV0aG9kKHRoaXMsICJpbmRlbnRBdEN1cnNvciIpLCAwKTsKICAgIH0sCgogICAgLy8gTWFyayB0aGUgbm9kZSBhdCB0aGUgY3Vyc29yIGRpcnR5IHdoZW4gYSBub24tc2FmZSBrZXkgaXMKICAgIC8vIHJlbGVhc2VkLgogICAga2V5VXA6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHRoaXMuY3Vyc29yQWN0aXZpdHkoaXNTYWZlS2V5KGV2ZW50LmtleUNvZGUpKTsKICAgIH0sCgogICAgLy8gSW5kZW50IHRoZSBsaW5lIGZvbGxvd2luZyBhIGdpdmVuICZsdDticj4sIG9yIG51bGwgZm9yIHRoZSBmaXJzdAogICAgLy8gbGluZS4gSWYgZ2l2ZW4gYSAmbHQ7YnI+IGVsZW1lbnQsIHRoaXMgbXVzdCBoYXZlIGJlZW4gaGlnaGxpZ2h0ZWQKICAgIC8vIHNvIHRoYXQgaXQgaGFzIGFuIGluZGVudGF0aW9uIG1ldGhvZC4gUmV0dXJucyB0aGUgd2hpdGVzcGFjZQogICAgLy8gZWxlbWVudCB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGNyZWF0ZWQgKGlmIGFueSkuCiAgICBpbmRlbnRMaW5lQWZ0ZXI6IGZ1bmN0aW9uKHN0YXJ0LCBkaXJlY3Rpb24pIHsKICAgICAgLy8gd2hpdGVTcGFjZSBpcyB0aGUgd2hpdGVzcGFjZSBzcGFuIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSwKICAgICAgLy8gb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIG5vZGUuCiAgICAgIHZhciB3aGl0ZVNwYWNlID0gc3RhcnQgPyBzdGFydC5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgIGlmICh3aGl0ZVNwYWNlICZhbXA7JmFtcDsgIWhhc0NsYXNzKHdoaXRlU3BhY2UsICJ3aGl0ZXNwYWNlIikpCiAgICAgICAgd2hpdGVTcGFjZSA9IG51bGw7CgogICAgICAvLyBTb21ldGltZXMgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGNhbiBpbmZsdWVuY2UgdGhlIGNvcnJlY3QKICAgICAgLy8gaW5kZW50YXRpb24sIHNvIHdlIHJldHJpZXZlIGl0LgogICAgICB2YXIgZmlyc3RUZXh0ID0gd2hpdGVTcGFjZSA/IHdoaXRlU3BhY2UubmV4dFNpYmxpbmcgOiAoc3RhcnQgPyBzdGFydC5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgICB2YXIgbmV4dENoYXJzID0gKHN0YXJ0ICZhbXA7JmFtcDsgZmlyc3RUZXh0ICZhbXA7JmFtcDsgZmlyc3RUZXh0LmN1cnJlbnRUZXh0KSA/IGZpcnN0VGV4dC5jdXJyZW50VGV4dCA6ICIiOwoKICAgICAgLy8gQXNrIHRoZSBsZXhpY2FsIGNvbnRleHQgZm9yIHRoZSBjb3JyZWN0IGluZGVudGF0aW9uLCBhbmQKICAgICAgLy8gY29tcHV0ZSBob3cgbXVjaCB0aGlzIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBpbmRlbnRhdGlvbi4KICAgICAgdmFyIG5ld0luZGVudCA9IDAsIGN1ckluZGVudCA9IHdoaXRlU3BhY2UgPyB3aGl0ZVNwYWNlLmN1cnJlbnRUZXh0Lmxlbmd0aCA6IDA7CiAgICAgIGlmIChkaXJlY3Rpb24gIT0gbnVsbCAmYW1wOyZhbXA7IHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJzaGlmdCIpCiAgICAgICAgbmV3SW5kZW50ID0gZGlyZWN0aW9uID8gY3VySW5kZW50ICsgaW5kZW50VW5pdCA6IE1hdGgubWF4KDAsIGN1ckluZGVudCAtIGluZGVudFVuaXQpCiAgICAgIGVsc2UgaWYgKHN0YXJ0KQogICAgICAgIG5ld0luZGVudCA9IHN0YXJ0LmluZGVudGF0aW9uKG5leHRDaGFycywgY3VySW5kZW50LCBkaXJlY3Rpb24pOwogICAgICBlbHNlIGlmIChFZGl0b3IuUGFyc2VyLmZpcnN0SW5kZW50YXRpb24pCiAgICAgICAgbmV3SW5kZW50ID0gRWRpdG9yLlBhcnNlci5maXJzdEluZGVudGF0aW9uKG5leHRDaGFycywgY3VySW5kZW50LCBkaXJlY3Rpb24pOwogICAgICB2YXIgaW5kZW50RGlmZiA9IG5ld0luZGVudCAtIGN1ckluZGVudDsKCiAgICAgIC8vIElmIHRoZXJlIGlzIHRvbyBtdWNoLCB0aGlzIGlzIGp1c3QgYSBtYXR0ZXIgb2Ygc2hyaW5raW5nIGEgc3Bhbi4KICAgICAgaWYgKGluZGVudERpZmYgJmx0OyAwKSB7CiAgICAgICAgaWYgKG5ld0luZGVudCA9PSAwKSB7CiAgICAgICAgICBpZiAoZmlyc3RUZXh0KSBzZWxlY3Quc25hcHNob3RNb3ZlKHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgZmlyc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwogICAgICAgICAgcmVtb3ZlRWxlbWVudCh3aGl0ZVNwYWNlKTsKICAgICAgICAgIHdoaXRlU3BhY2UgPSBudWxsOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdE1vdmUod2hpdGVTcGFjZS5maXJzdENoaWxkLCB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQsIGluZGVudERpZmYsIHRydWUpOwogICAgICAgICAgd2hpdGVTcGFjZS5jdXJyZW50VGV4dCA9IG1ha2VXaGl0ZVNwYWNlKG5ld0luZGVudCk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gd2hpdGVTcGFjZS5jdXJyZW50VGV4dDsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gTm90IGVub3VnaC4uLgogICAgICBlbHNlIGlmIChpbmRlbnREaWZmID4gMCkgewogICAgICAgIC8vIElmIHRoZXJlIGlzIHdoaXRlc3BhY2UsIHdlIGdyb3cgaXQuCiAgICAgICAgaWYgKHdoaXRlU3BhY2UpIHsKICAgICAgICAgIHdoaXRlU3BhY2UuY3VycmVudFRleHQgPSBtYWtlV2hpdGVTcGFjZShuZXdJbmRlbnQpOwogICAgICAgICAgd2hpdGVTcGFjZS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9IHdoaXRlU3BhY2UuY3VycmVudFRleHQ7CiAgICAgICAgfQogICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBhZGQgYSBuZXcgd2hpdGVzcGFjZSBub2RlLgogICAgICAgIGVsc2UgewogICAgICAgICAgd2hpdGVTcGFjZSA9IG1ha2VQYXJ0U3BhbihtYWtlV2hpdGVTcGFjZShuZXdJbmRlbnQpLCB0aGlzLmRvYyk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmNsYXNzTmFtZSA9ICJ3aGl0ZXNwYWNlIjsKICAgICAgICAgIGlmIChzdGFydCkgaW5zZXJ0QWZ0ZXIod2hpdGVTcGFjZSwgc3RhcnQpOwogICAgICAgICAgZWxzZSB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUod2hpdGVTcGFjZSwgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAgICAgfQogICAgICAgIGlmIChmaXJzdFRleHQpIHNlbGVjdC5zbmFwc2hvdE1vdmUoZmlyc3RUZXh0LmZpcnN0Q2hpbGQsIHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgY3VySW5kZW50LCBmYWxzZSwgdHJ1ZSk7CiAgICAgIH0KICAgICAgaWYgKGluZGVudERpZmYgIT0gMCkgdGhpcy5hZGREaXJ0eU5vZGUoc3RhcnQpOwogICAgICByZXR1cm4gd2hpdGVTcGFjZTsKICAgIH0sCgogICAgLy8gUmUtaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBwYXJ0IG9mIHRoZSBkb2N1bWVudC4KICAgIGhpZ2hsaWdodEF0Q3Vyc29yOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIHBvcyA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCB0cnVlKTsKICAgICAgdmFyIHRvID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgaWYgKHBvcyA9PT0gZmFsc2UgfHwgdG8gPT09IGZhbHNlKSByZXR1cm47CgogICAgICBzZWxlY3QubWFya1NlbGVjdGlvbih0aGlzLndpbik7CiAgICAgIGlmICh0aGlzLmhpZ2hsaWdodChwb3MsIGVuZE9mTGluZSh0bywgdGhpcy5jb250YWluZXIpLCB0cnVlLCAyMCkgPT09IGZhbHNlKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgc2VsZWN0LnNlbGVjdE1hcmtlZCgpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCgogICAgLy8gV2hlbiB0YWIgaXMgcHJlc3NlZCB3aXRoIHRleHQgc2VsZWN0ZWQsIHRoZSB3aG9sZSBzZWxlY3Rpb24gaXMKICAgIC8vIHJlLWluZGVudGVkLCB3aGVuIG5vdGhpbmcgaXMgc2VsZWN0ZWQsIHRoZSBsaW5lIHdpdGggdGhlIGN1cnNvcgogICAgLy8gaXMgcmUtaW5kZW50ZWQuCiAgICBoYW5kbGVUYWI6IGZ1bmN0aW9uKGRpcmVjdGlvbikgewogICAgICBpZiAodGhpcy5vcHRpb25zLnRhYk1vZGUgPT0gInNwYWNlcyIpIHsKICAgICAgICBzZWxlY3QuaW5zZXJ0VGFiQXRDdXJzb3IodGhpcy53aW4pOwogICAgICB9CiAgICAgIGVsc2UgaWYgKCFzZWxlY3Quc29tZXRoaW5nU2VsZWN0ZWQodGhpcy53aW4pKSB7CiAgICAgICAgdGhpcy5pbmRlbnRBdEN1cnNvcihkaXJlY3Rpb24pOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHZhciBzdGFydCA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCB0cnVlKSwKICAgICAgICAgICAgZW5kID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgICBpZiAoc3RhcnQgPT09IGZhbHNlIHx8IGVuZCA9PT0gZmFsc2UpIHJldHVybjsKICAgICAgICB0aGlzLmluZGVudFJlZ2lvbihzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogICAgICB9CiAgICB9LAoKICAgIC8vIERlbGF5IChvciBpbml0aWF0ZSkgdGhlIG5leHQgcGFyZW4gYmxpbmsgZXZlbnQuCiAgICBzY2hlZHVsZVBhcmVuQmxpbms6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5wYXJlbkV2ZW50KSB0aGlzLnBhcmVudC5jbGVhclRpbWVvdXQodGhpcy5wYXJlbkV2ZW50KTsKICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICB0aGlzLnBhcmVuRXZlbnQgPSB0aGlzLnBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2VsZi5ibGlua1BhcmVucygpO30sIDMwMCk7CiAgICB9LAoKICAgIC8vIFRha2UgdGhlIHRva2VuIGJlZm9yZSB0aGUgY3Vyc29yLiBJZiBpdCBjb250YWlucyBhIGNoYXJhY3RlciBpbgogICAgLy8gJygpW117fScsIHNlYXJjaCBmb3IgdGhlIG1hdGNoaW5nIHBhcmVuL2JyYWNlL2JyYWNrZXQsIGFuZAogICAgLy8gaGlnaGxpZ2h0IHRoZW0gaW4gZ3JlZW4gZm9yIGEgbW9tZW50LCBvciByZWQgaWYgbm8gcHJvcGVyIG1hdGNoCiAgICAvLyB3YXMgZm91bmQuCiAgICBibGlua1BhcmVuczogZnVuY3Rpb24oanVtcCkgewogICAgICAvLyBDbGVhciB0aGUgZXZlbnQgcHJvcGVydHkuCiAgICAgIGlmICh0aGlzLnBhcmVuRXZlbnQpIHRoaXMucGFyZW50LmNsZWFyVGltZW91dCh0aGlzLnBhcmVuRXZlbnQpOwogICAgICB0aGlzLnBhcmVuRXZlbnQgPSBudWxsOwoKICAgICAgLy8gRXh0cmFjdCBhICdwYXJlbicgZnJvbSBhIHBpZWNlIG9mIHRleHQuCiAgICAgIGZ1bmN0aW9uIHBhcmVuKG5vZGUpIHsKICAgICAgICBpZiAobm9kZS5jdXJyZW50VGV4dCkgewogICAgICAgICAgdmFyIG1hdGNoID0gbm9kZS5jdXJyZW50VGV4dC5tYXRjaCgvXltcc1x1MDBhMF0qKFtcKFwpXFtcXXt9XSlbXHNcdTAwYTBdKiQvKTsKICAgICAgICAgIHJldHVybiBtYXRjaCAmYW1wOyZhbXA7IG1hdGNoWzFdOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBEZXRlcm1pbmUgdGhlIGRpcmVjdGlvbiBhIHBhcmVuIGlzIGZhY2luZy4KICAgICAgZnVuY3Rpb24gZm9yd2FyZChjaCkgewogICAgICAgIHJldHVybiAvW1woXFtce10vLnRlc3QoY2gpOwogICAgICB9CgogICAgICB2YXIgY2gsIHNlbGYgPSB0aGlzLCBjdXJzb3IgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSk7CiAgICAgIGlmICghY3Vyc29yIHx8ICF0aGlzLmhpZ2hsaWdodEF0Q3Vyc29yKCkpIHJldHVybjsKICAgICAgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIHRydWUpOwogICAgICBpZiAoIShjdXJzb3IgJmFtcDsmYW1wOyAoKGNoID0gcGFyZW4oY3Vyc29yKSkgfHwgKGN1cnNvciA9IGN1cnNvci5uZXh0U2libGluZykgJmFtcDsmYW1wOyAoY2ggPSBwYXJlbihjdXJzb3IpKSkpKQogICAgICAgIHJldHVybjsKICAgICAgLy8gV2Ugb25seSBsb29rIGZvciB0b2tlbnMgd2l0aCB0aGUgc2FtZSBjbGFzc05hbWUuCiAgICAgIHZhciBjbGFzc05hbWUgPSBjdXJzb3IuY2xhc3NOYW1lLCBkaXIgPSBmb3J3YXJkKGNoKSwgbWF0Y2ggPSBtYXRjaGluZ1tjaF07CgogICAgICAvLyBTaW5jZSBwYXJ0cyBvZiB0aGUgZG9jdW1lbnQgbWlnaHQgbm90IGhhdmUgYmVlbiBwcm9wZXJseQogICAgICAvLyBoaWdobGlnaHRlZCwgYW5kIGl0IGlzIGhhcmQgdG8ga25vdyBpbiBhZHZhbmNlIHdoaWNoIHBhcnQgd2UKICAgICAgLy8gaGF2ZSB0byBzY2FuLCB3ZSBqdXN0IHRyeSwgYW5kIHdoZW4gd2UgZmluZCBkaXJ0eSBub2RlcyB3ZQogICAgICAvLyBhYm9ydCwgcGFyc2UgdGhlbSwgYW5kIHJlLXRyeS4KICAgICAgZnVuY3Rpb24gdHJ5RmluZE1hdGNoKCkgewogICAgICAgIHZhciBzdGFjayA9IFtdLCBjaCwgb2sgPSB0cnVlOzsKICAgICAgICBmb3IgKHZhciBydW5uZXIgPSBjdXJzb3I7IHJ1bm5lcjsgcnVubmVyID0gZGlyID8gcnVubmVyLm5leHRTaWJsaW5nIDogcnVubmVyLnByZXZpb3VzU2libGluZykgewogICAgICAgICAgaWYgKHJ1bm5lci5jbGFzc05hbWUgPT0gY2xhc3NOYW1lICZhbXA7JmFtcDsgcnVubmVyLm5vZGVOYW1lID09ICJTUEFOIiAmYW1wOyZhbXA7IChjaCA9IHBhcmVuKHJ1bm5lcikpKSB7CiAgICAgICAgICAgIGlmIChmb3J3YXJkKGNoKSA9PSBkaXIpCiAgICAgICAgICAgICAgc3RhY2sucHVzaChjaCk7CiAgICAgICAgICAgIGVsc2UgaWYgKCFzdGFjay5sZW5ndGgpCiAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgZWxzZSBpZiAoc3RhY2sucG9wKCkgIT0gbWF0Y2hpbmdbY2hdKQogICAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgIGlmICghc3RhY2subGVuZ3RoKSBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHJ1bm5lci5kaXJ0eSB8fCBydW5uZXIubm9kZU5hbWUgIT0gIlNQQU4iICZhbXA7JmFtcDsgcnVubmVyLm5vZGVOYW1lICE9ICJCUiIpIHsKICAgICAgICAgICAgcmV0dXJuIHtub2RlOiBydW5uZXIsIHN0YXR1czogImRpcnR5In07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB7bm9kZTogcnVubmVyLCBzdGF0dXM6IHJ1bm5lciAmYW1wOyZhbXA7IG9rfTsKICAgICAgfQogICAgICAvLyBUZW1wb3JhcmlseSBnaXZlIHRoZSByZWxldmFudCBub2RlcyBhIGNvbG91ci4KICAgICAgZnVuY3Rpb24gYmxpbmsobm9kZSwgb2spIHsKICAgICAgICBub2RlLnN0eWxlLmZvbnRXZWlnaHQgPSAiYm9sZCI7CiAgICAgICAgbm9kZS5zdHlsZS5jb2xvciA9IG9rID8gIiM4RjgiIDogIiNGODgiOwogICAgICAgIHNlbGYucGFyZW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bm9kZS5zdHlsZS5mb250V2VpZ2h0ID0gIiI7IG5vZGUuc3R5bGUuY29sb3IgPSAiIjt9LCA1MDApOwogICAgICB9CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBmb3VuZCA9IHRyeUZpbmRNYXRjaCgpOwogICAgICAgIGlmIChmb3VuZC5zdGF0dXMgPT0gImRpcnR5IikgewogICAgICAgICAgdGhpcy5oaWdobGlnaHQoZm91bmQubm9kZSwgMSk7CiAgICAgICAgICAvLyBOZWVkZWQgYmVjYXVzZSBpbiBzb21lIGNvcm5lciBjYXNlcyBhIGhpZ2hsaWdodCBkb2VzIG5vdAogICAgICAgICAgLy8gcmVhY2ggYSBub2RlLgogICAgICAgICAgZm91bmQubm9kZS5kaXJ0eSA9IGZhbHNlOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgYmxpbmsoY3Vyc29yLCBmb3VuZC5zdGF0dXMpOwogICAgICAgICAgaWYgKGZvdW5kLm5vZGUpIHsKICAgICAgICAgICAgYmxpbmsoZm91bmQubm9kZSwgZm91bmQuc3RhdHVzKTsKICAgICAgICAgICAgaWYgKGp1bXApIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShmb3VuZC5ub2RlLnByZXZpb3VzU2libGluZywgdGhpcy5jb250YWluZXIpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8vIEFkanVzdCB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRoYXQKICAgIC8vIHRoZSBjdXJzb3IgaXMgb24gc28gdGhhdCBpdCBpcyBpbmRlbnRlZCBwcm9wZXJseS4KICAgIGluZGVudEF0Q3Vyc29yOiBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKSByZXR1cm47CiAgICAgIC8vIFRoZSBsaW5lIGhhcyB0byBoYXZlIHVwLXRvLWRhdGUgbGV4aWNhbCBpbmZvcm1hdGlvbiwgc28gd2UKICAgICAgLy8gaGlnaGxpZ2h0IGl0IGZpcnN0LgogICAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0QXRDdXJzb3IoKSkgcmV0dXJuOwogICAgICB2YXIgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBwbGFjZSBvZiB0aGUgY3Vyc29yLAogICAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gaW5kZW50LgogICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSkKICAgICAgICByZXR1cm47CiAgICAgIHZhciBsaW5lU3RhcnQgPSBzdGFydE9mTGluZShjdXJzb3IpOwogICAgICB2YXIgd2hpdGVTcGFjZSA9IHRoaXMuaW5kZW50TGluZUFmdGVyKGxpbmVTdGFydCwgZGlyZWN0aW9uKTsKICAgICAgaWYgKGN1cnNvciA9PSBsaW5lU3RhcnQgJmFtcDsmYW1wOyB3aGl0ZVNwYWNlKQogICAgICAgICAgY3Vyc29yID0gd2hpdGVTcGFjZTsKICAgICAgLy8gVGhpcyBtZWFucyB0aGUgaW5kZW50YXRpb24gaGFzIHByb2JhYmx5IG1lc3NlZCB1cCB0aGUgY3Vyc29yLgogICAgICBpZiAoY3Vyc29yID09IHdoaXRlU3BhY2UpCiAgICAgICAgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKGN1cnNvciwgdGhpcy5jb250YWluZXIpOwogICAgfSwKCiAgICAvLyBJbmRlbnQgYWxsIGxpbmVzIHdob3NlIHN0YXJ0IGZhbGxzIGluc2lkZSBvZiB0aGUgY3VycmVudAogICAgLy8gc2VsZWN0aW9uLgogICAgaW5kZW50UmVnaW9uOiBmdW5jdGlvbihzdGFydCwgZW5kLCBkaXJlY3Rpb24pIHsKICAgICAgdmFyIGN1cnJlbnQgPSAoc3RhcnQgPSBzdGFydE9mTGluZShzdGFydCkpLCBiZWZvcmUgPSBzdGFydCAmYW1wOyZhbXA7IHN0YXJ0T2ZMaW5lKHN0YXJ0LnByZXZpb3VzU2libGluZyk7CiAgICAgIGlmIChlbmQubm9kZU5hbWUgIT0gIkJSIikgZW5kID0gZW5kT2ZMaW5lKGVuZCwgdGhpcy5jb250YWluZXIpOwoKICAgICAgZG8gewogICAgICAgIGlmIChjdXJyZW50KSB0aGlzLmhpZ2hsaWdodChiZWZvcmUsIGN1cnJlbnQsIHRydWUpOwogICAgICAgIHRoaXMuaW5kZW50TGluZUFmdGVyKGN1cnJlbnQsIGRpcmVjdGlvbik7CiAgICAgICAgYmVmb3JlID0gY3VycmVudDsKICAgICAgICBjdXJyZW50ID0gZW5kT2ZMaW5lKGN1cnJlbnQsIHRoaXMuY29udGFpbmVyKTsKICAgICAgfSB3aGlsZSAoY3VycmVudCAhPSBlbmQpOwogICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB7bm9kZTogc3RhcnQsIG9mZnNldDogMH0sIHtub2RlOiBlbmQsIG9mZnNldDogMH0pOwogICAgfSwKCiAgICAvLyBGaW5kIHRoZSBub2RlIHRoYXQgdGhlIGN1cnNvciBpcyBpbiwgbWFyayBpdCBhcyBkaXJ0eSwgYW5kIG1ha2UKICAgIC8vIHN1cmUgYSBoaWdobGlnaHQgcGFzcyBpcyBzY2hlZHVsZWQuCiAgICBjdXJzb3JBY3Rpdml0eTogZnVuY3Rpb24oc2FmZSkgewogICAgICBpZiAoaW50ZXJuZXRFeHBsb3JlcikgewogICAgICAgIHRoaXMuY29udGFpbmVyLmNyZWF0ZVRleHRSYW5nZSgpLmV4ZWNDb21tYW5kKCJ1bmxpbmsiKTsKICAgICAgICB0aGlzLnNlbGVjdGlvblNuYXBzaG90ID0gc2VsZWN0LnNlbGVjdGlvbkNvb3Jkcyh0aGlzLndpbik7CiAgICAgIH0KCiAgICAgIHZhciBhY3Rpdml0eSA9IHRoaXMub3B0aW9ucy5jdXJzb3JBY3Rpdml0eTsKICAgICAgaWYgKCFzYWZlIHx8IGFjdGl2aXR5KSB7CiAgICAgICAgdmFyIGN1cnNvciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCBmYWxzZSk7CiAgICAgICAgaWYgKGN1cnNvciA9PT0gZmFsc2UgfHwgIXRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpIHJldHVybjsKICAgICAgICBjdXJzb3IgPSBjdXJzb3IgfHwgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICBpZiAoYWN0aXZpdHkpIGFjdGl2aXR5KGN1cnNvcik7CiAgICAgICAgaWYgKCFzYWZlKSB7CiAgICAgICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICAgICAgICB0aGlzLmFkZERpcnR5Tm9kZShjdXJzb3IpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICByZXBhcnNlQnVmZmVyOiBmdW5jdGlvbigpIHsKICAgICAgZm9yRWFjaCh0aGlzLmNvbnRhaW5lci5jaGlsZE5vZGVzLCBmdW5jdGlvbihub2RlKSB7bm9kZS5kaXJ0eSA9IHRydWU7fSk7CiAgICAgIGlmICh0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgIHRoaXMuYWRkRGlydHlOb2RlKHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgfSwKCiAgICAvLyBBZGQgYSBub2RlIHRvIHRoZSBzZXQgb2YgZGlydHkgbm9kZXMsIGlmIGl0IGlzbid0IGFscmVhZHkgaW4KICAgIC8vIHRoZXJlLgogICAgYWRkRGlydHlOb2RlOiBmdW5jdGlvbihub2RlKSB7CiAgICAgIG5vZGUgPSBub2RlIHx8IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgIGlmICghbm9kZSkgcmV0dXJuOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgJmx0OyB0aGlzLmRpcnR5Lmxlbmd0aDsgaSsrKQogICAgICAgIGlmICh0aGlzLmRpcnR5W2ldID09IG5vZGUpIHJldHVybjsKCiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9IDMpCiAgICAgICAgbm9kZS5kaXJ0eSA9IHRydWU7CiAgICAgIHRoaXMuZGlydHkucHVzaChub2RlKTsKICAgIH0sCgogICAgLy8gQ2F1c2UgYSBoaWdobGlnaHQgcGFzcyB0byBoYXBwZW4gaW4gb3B0aW9ucy5wYXNzRGVsYXkKICAgIC8vIG1pbGxpc2Vjb25kcy4gQ2xlYXIgdGhlIGV4aXN0aW5nIHRpbWVvdXQsIGlmIG9uZSBleGlzdHMuIFRoaXMKICAgIC8vIHdheSwgdGhlIHBhc3NlcyBkbyBub3QgaGFwcGVuIHdoaWxlIHRoZSB1c2VyIGlzIHR5cGluZywgYW5kCiAgICAvLyBzaG91bGQgYXMgdW5vYnRydXNpdmUgYXMgcG9zc2libGUuCiAgICBzY2hlZHVsZUhpZ2hsaWdodDogZnVuY3Rpb24oKSB7CiAgICAgIC8vIFRpbWVvdXRzIGFyZSByb3V0ZWQgdGhyb3VnaCB0aGUgcGFyZW50IHdpbmRvdywgYmVjYXVzZSBvbgogICAgICAvLyBzb21lIGJyb3dzZXJzIGRlc2lnbk1vZGUgd2luZG93cyBkbyBub3QgZmlyZSB0aW1lb3V0cy4KICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICB0aGlzLnBhcmVudC5jbGVhclRpbWVvdXQodGhpcy5oaWdobGlnaHRUaW1lb3V0KTsKICAgICAgdGhpcy5oaWdobGlnaHRUaW1lb3V0ID0gdGhpcy5wYXJlbnQuc2V0VGltZW91dChmdW5jdGlvbigpe3NlbGYuaGlnaGxpZ2h0RGlydHkoKTt9LCB0aGlzLm9wdGlvbnMucGFzc0RlbGF5KTsKICAgIH0sCgogICAgLy8gRmV0Y2ggb25lIGRpcnR5IG5vZGUsIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgZGlydHkgc2V0LgogICAgZ2V0RGlydHlOb2RlOiBmdW5jdGlvbigpIHsKICAgICAgd2hpbGUgKHRoaXMuZGlydHkubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBmb3VuZCA9IHRoaXMuZGlydHkucG9wKCk7CiAgICAgICAgLy8gSUU4IHNvbWV0aW1lcyB0aHJvd3MgYW4gdW5leHBsYWluYWJsZSAnaW52YWxpZCBhcmd1bWVudCcKICAgICAgICAvLyBleGNlcHRpb24gZm9yIGZvdW5kLnBhcmVudE5vZGUKICAgICAgICB0cnkgewogICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGJlZW4gY29sb3VyZWQgaW4gdGhlIG1lYW50aW1lLCBvciBpcyBubwogICAgICAgICAgLy8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCwgaXQgc2hvdWxkIG5vdCBiZSByZXR1cm5lZC4KICAgICAgICAgIHdoaWxlIChmb3VuZCAmYW1wOyZhbXA7IGZvdW5kLnBhcmVudE5vZGUgIT0gdGhpcy5jb250YWluZXIpCiAgICAgICAgICAgIGZvdW5kID0gZm91bmQucGFyZW50Tm9kZQogICAgICAgICAgaWYgKGZvdW5kICZhbXA7JmFtcDsgKGZvdW5kLmRpcnR5IHx8IGZvdW5kLm5vZGVUeXBlID09IDMpKQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gUGljayBkaXJ0eSBub2RlcywgYW5kIGhpZ2hsaWdodCB0aGVtLCB1bnRpbAogICAgLy8gb3B0aW9ucy5saW5lc1BlclBhc3MgbGluZXMgaGF2ZSBiZWVuIGhpZ2hsaWdodGVkLiBUaGUgaGlnaGxpZ2h0CiAgICAvLyBtZXRob2Qgd2lsbCBjb250aW51ZSB0byBuZXh0IGxpbmVzIGFzIGxvbmcgYXMgaXQgZmluZHMgZGlydHkKICAgIC8vIG5vZGVzLiBJdCByZXR1cm5zIGFuIG9iamVjdCBpbmRpY2F0aW5nIHRoZSBhbW91bnQgb2YgbGluZXMKICAgIC8vIGxlZnQsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGxhY2Ugd2hlcmUgaXQgc3RvcHBlZC4gSWYKICAgIC8vIHRoZXJlIGFyZSBkaXJ0eSBub2RlcyBsZWZ0IGFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzIHNwZW50IGFsbAogICAgLy8gaXRzIGxpbmVzLCBpdCBzaGVkdWxlcyBhbm90aGVyIGhpZ2hsaWdodCB0byBmaW5pc2ggdGhlIGpvYi4KICAgIGhpZ2hsaWdodERpcnR5OiBmdW5jdGlvbihmb3JjZSkgewogICAgICAvLyBQcmV2ZW50IEZGIGZyb20gcmFpc2luZyBhbiBlcnJvciB3aGVuIGl0IGlzIGZpcmluZyB0aW1lb3V0cwogICAgICAvLyBvbiBhIHBhZ2UgdGhhdCdzIG5vIGxvbmdlciBsb2FkZWQuCiAgICAgIGlmICghd2luZG93LnNlbGVjdCkgcmV0dXJuOwoKICAgICAgdmFyIGxpbmVzID0gZm9yY2UgPyBJbmZpbml0eSA6IHRoaXMub3B0aW9ucy5saW5lc1BlclBhc3M7CiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3QubWFya1NlbGVjdGlvbih0aGlzLndpbik7CiAgICAgIHZhciBzdGFydDsKICAgICAgd2hpbGUgKGxpbmVzID4gMCAmYW1wOyZhbXA7IChzdGFydCA9IHRoaXMuZ2V0RGlydHlOb2RlKCkpKXsKICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oaWdobGlnaHQoc3RhcnQsIGxpbmVzKTsKICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICBsaW5lcyA9IHJlc3VsdC5sZWZ0OwogICAgICAgICAgaWYgKHJlc3VsdC5ub2RlICZhbXA7JmFtcDsgcmVzdWx0LmRpcnR5KQogICAgICAgICAgICB0aGlzLmFkZERpcnR5Tm9kZShyZXN1bHQubm9kZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3Quc2VsZWN0TWFya2VkKCk7CiAgICAgIGlmIChzdGFydCkKICAgICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICAgIHJldHVybiB0aGlzLmRpcnR5Lmxlbmd0aCA9PSAwOwogICAgfSwKCiAgICAvLyBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQgdGhyb3VnaCBhIHRpbWVvdXQsIHdpbGwKICAgIC8vIGNvbnRpbnVvdXNseSByZS1wYXJzZSB0aGUgZG9jdW1lbnQuCiAgICBkb2N1bWVudFNjYW5uZXI6IGZ1bmN0aW9uKGxpbmVzUGVyKSB7CiAgICAgIHZhciBzZWxmID0gdGhpcywgcG9zID0gbnVsbDsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IG5vZGUgaXMgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudC4uLiBvaAogICAgICAgIC8vIHdlbGwsIHdlIHN0YXJ0IG92ZXIuCiAgICAgICAgaWYgKHBvcyAmYW1wOyZhbXA7IHBvcy5wYXJlbnROb2RlICE9IHNlbGYuY29udGFpbmVyKQogICAgICAgICAgcG9zID0gbnVsbDsKICAgICAgICBzZWxlY3QubWFya1NlbGVjdGlvbihzZWxmLndpbik7CiAgICAgICAgdmFyIHJlc3VsdCA9IHNlbGYuaGlnaGxpZ2h0KHBvcywgbGluZXNQZXIsIHRydWUpOwogICAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgICAgICB2YXIgbmV3UG9zID0gcmVzdWx0ID8gKHJlc3VsdC5ub2RlICZhbXA7JmFtcDsgcmVzdWx0Lm5vZGUubmV4dFNpYmxpbmcpIDogbnVsbDsKICAgICAgICBwb3MgPSAocG9zID09IG5ld1BvcykgPyBudWxsIDogbmV3UG9zOwogICAgICAgIHNlbGYuZGVsYXlTY2FubmluZygpOwogICAgICB9OwogICAgfSwKCiAgICAvLyBTdGFydHMgdGhlIGNvbnRpbnVvdXMgc2Nhbm5pbmcgcHJvY2VzcyBmb3IgdGhpcyBkb2N1bWVudCBhZnRlcgogICAgLy8gYSBnaXZlbiBpbnRlcnZhbC4KICAgIGRlbGF5U2Nhbm5pbmc6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5zY2FubmVyKSB7CiAgICAgICAgdGhpcy5wYXJlbnQuY2xlYXJUaW1lb3V0KHRoaXMuZG9jdW1lbnRTY2FuKTsKICAgICAgICB0aGlzLmRvY3VtZW50U2NhbiA9IHRoaXMucGFyZW50LnNldFRpbWVvdXQodGhpcy5zY2FubmVyLCB0aGlzLm9wdGlvbnMuY29udGludW91c1NjYW5uaW5nKTsKICAgICAgfQogICAgfSwKCiAgICAvLyBUaGUgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBhY3R1YWwgaGlnaGxpZ2h0aW5nL2NvbG91cmluZyAod2l0aAogICAgLy8gaGVscCBmcm9tIHRoZSBwYXJzZXIgYW5kIHRoZSBET00gbm9ybWFsaXplcikuIEl0cyBpbnRlcmZhY2UgaXMKICAgIC8vIHJhdGhlciBvdmVyY29tcGxpY2F0ZWQsIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBkaWZmZXJlbnQKICAgIC8vIHNpdHVhdGlvbnM6IGVuc3VyaW5nIHRoYXQgYSBjZXJ0YWluIGxpbmUgaXMgaGlnaGxpZ2h0ZWQsIG9yCiAgICAvLyBoaWdobGlnaHRpbmcgdXAgdG8gWCBsaW5lcyBzdGFydGluZyBmcm9tIGEgY2VydGFpbiBwb2ludC4gVGhlCiAgICAvLyAnZnJvbScgYXJndW1lbnQgZ2l2ZXMgdGhlIG5vZGUgYXQgd2hpY2ggaXQgc2hvdWxkIHN0YXJ0LiBJZgogICAgLy8gdGhpcyBpcyBudWxsLCBpdCB3aWxsIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50LgogICAgLy8gV2hlbiBhIG51bWJlciBvZiBsaW5lcyBpcyBnaXZlbiB3aXRoIHRoZSAndGFyZ2V0JyBhcmd1bWVudCwgaXQKICAgIC8vIHdpbGwgaGlnaGxpZ2h0IG5vIG1vcmUgdGhhbiB0aGF0IGFtb3VudCBvZiBsaW5lcy4gSWYgdGhpcwogICAgLy8gYXJndW1lbnQgaG9sZHMgYSBET00gbm9kZSwgaXQgd2lsbCBoaWdobGlnaHQgdW50aWwgaXQgcmVhY2hlcwogICAgLy8gdGhhdCBub2RlLiBJZiBhdCBhbnkgdGltZSBpdCBjb21lcyBhY3Jvc3MgYSAnY2xlYW4nIGxpbmUgKG5vCiAgICAvLyBkaXJ0eSBub2RlcyksIGl0IHdpbGwgc3RvcCwgZXhjZXB0IHdoZW4gJ2NsZWFuTGluZXMnIGlzIHRydWUuCiAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uKGZyb20sIHRhcmdldCwgY2xlYW5MaW5lcywgbWF4QmFja3RyYWNrKXsKICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLCBzZWxmID0gdGhpcywgYWN0aXZlID0gdGhpcy5vcHRpb25zLmFjdGl2ZVRva2VuczsKICAgICAgdmFyIGxpbmVzID0gKHR5cGVvZiB0YXJnZXQgPT0gIm51bWJlciIgPyB0YXJnZXQgOiBudWxsKTsKCiAgICAgIGlmICghY29udGFpbmVyLmZpcnN0Q2hpbGQpCiAgICAgICAgcmV0dXJuOwogICAgICAvLyBCYWNrdHJhY2sgdG8gdGhlIGZpcnN0IG5vZGUgYmVmb3JlIGZyb20gdGhhdCBoYXMgYSBwYXJ0aWFsCiAgICAgIC8vIHBhcnNlIHN0b3JlZC4KICAgICAgd2hpbGUgKGZyb20gJmFtcDsmYW1wOyAoIWZyb20ucGFyc2VyRnJvbUhlcmUgfHwgZnJvbS5kaXJ0eSkpIHsKICAgICAgICBmcm9tID0gZnJvbS5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgaWYgKG1heEJhY2t0cmFjayAhPSBudWxsICZhbXA7JmFtcDsgZnJvbS5ub2RlTmFtZSA9PSAiQlIiICZhbXA7JmFtcDsgKC0tbWF4QmFja3RyYWNrKSAmbHQ7IDApCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLy8gSWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LCBkbyBub3RoaW5nLgogICAgICBpZiAoZnJvbSAmYW1wOyZhbXA7ICFmcm9tLm5leHRTaWJsaW5nKQogICAgICAgIHJldHVybjsKCiAgICAgIC8vIENoZWNrIHdoZXRoZXIgYSBwYXJ0ICgmbHQ7c3Bhbj4gbm9kZSkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHRva2VuCiAgICAgIC8vIG1hdGNoLgogICAgICBmdW5jdGlvbiBjb3JyZWN0UGFydCh0b2tlbiwgcGFydCl7CiAgICAgICAgcmV0dXJuICFwYXJ0LnJlZHVjZWQgJmFtcDsmYW1wOyBwYXJ0LmN1cnJlbnRUZXh0ID09IHRva2VuLnZhbHVlICZhbXA7JmFtcDsgcGFydC5jbGFzc05hbWUgPT0gdG9rZW4uc3R5bGU7CiAgICAgIH0KICAgICAgLy8gU2hvcnRlbiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0IGJ5IGNob3BwaW5nIG9mZgogICAgICAvLyBjaGFyYWN0ZXJzIGZyb20gdGhlIGZyb250LiBOb3RlIHRoYXQgb25seSB0aGUgY3VycmVudFRleHQKICAgICAgLy8gcHJvcGVydHkgZ2V0cyBjaGFuZ2VkLiBGb3IgZWZmaWNpZW5jeSByZWFzb25zLCB3ZSBsZWF2ZSB0aGUKICAgICAgLy8gbm9kZVZhbHVlIGFsb25lIC0tIHdlIHNldCB0aGUgcmVkdWNlZCBmbGFnIHRvIGluZGljYXRlIHRoYXQKICAgICAgLy8gdGhpcyBwYXJ0IG11c3QgYmUgcmVwbGFjZWQuCiAgICAgIGZ1bmN0aW9uIHNob3J0ZW5QYXJ0KHBhcnQsIG1pbnVzKXsKICAgICAgICBwYXJ0LmN1cnJlbnRUZXh0ID0gcGFydC5jdXJyZW50VGV4dC5zdWJzdHJpbmcobWludXMpOwogICAgICAgIHBhcnQucmVkdWNlZCA9IHRydWU7CiAgICAgIH0KICAgICAgLy8gQ3JlYXRlIGEgcGFydCBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gdG9rZW4uCiAgICAgIGZ1bmN0aW9uIHRva2VuUGFydCh0b2tlbil7CiAgICAgICAgdmFyIHBhcnQgPSBtYWtlUGFydFNwYW4odG9rZW4udmFsdWUsIHNlbGYuZG9jKTsKICAgICAgICBwYXJ0LmNsYXNzTmFtZSA9IHRva2VuLnN0eWxlOwogICAgICAgIHJldHVybiBwYXJ0OwogICAgICB9CgogICAgICBmdW5jdGlvbiBtYXliZVRvdWNoKG5vZGUpIHsKICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgaWYgKG5vZGUubmV4dFNpYmxpbmcgIT0gbm9kZS5vbGROZXh0U2libGluZykgewogICAgICAgICAgICBzZWxmLmhpc3RvcnkudG91Y2gobm9kZSk7CiAgICAgICAgICAgIG5vZGUub2xkTmV4dFNpYmxpbmcgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIGlmIChzZWxmLmNvbnRhaW5lci5maXJzdENoaWxkICE9IHNlbGYuY29udGFpbmVyLm9sZEZpcnN0Q2hpbGQpIHsKICAgICAgICAgICAgc2VsZi5oaXN0b3J5LnRvdWNoKG5vZGUpOwogICAgICAgICAgICBzZWxmLmNvbnRhaW5lci5vbGRGaXJzdENoaWxkID0gc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIEdldCB0aGUgdG9rZW4gc3RyZWFtLiBJZiBmcm9tIGlzIG51bGwsIHdlIHN0YXJ0IHdpdGggYSBuZXcKICAgICAgLy8gcGFyc2VyIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmcmFtZSwgb3RoZXJ3aXNlIGEgcGFydGlhbCBwYXJzZQogICAgICAvLyBpcyByZXN1bWVkLgogICAgICB2YXIgdHJhdmVyc2FsID0gdHJhdmVyc2VET00oZnJvbSA/IGZyb20ubmV4dFNpYmxpbmcgOiBjb250YWluZXIuZmlyc3RDaGlsZCksCiAgICAgICAgICBzdHJlYW0gPSBzdHJpbmdTdHJlYW0odHJhdmVyc2FsKSwKICAgICAgICAgIHBhcnNlZCA9IGZyb20gPyBmcm9tLnBhcnNlckZyb21IZXJlKHN0cmVhbSkgOiBFZGl0b3IuUGFyc2VyLm1ha2Uoc3RyZWFtKTsKCiAgICAgIC8vIHBhcnRzIGlzIGFuIGludGVyZmFjZSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvICdkZWxheScgZmV0Y2hpbmcKICAgICAgLy8gdGhlIG5leHQgRE9NIG5vZGUgdW50aWwgd2UgYXJlIGNvbXBsZXRlbHkgZG9uZSB3aXRoIHRoZSBvbmUKICAgICAgLy8gYmVmb3JlIGl0LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mdGVuIHRoZSBuZXh0IG5vZGUgaXMKICAgICAgLy8gbm90IHlldCBhdmFpbGFibGUgd2hlbiB3ZSB3YW50IHRvIHByb2NlZWQgcGFzdCB0aGUgY3VycmVudAogICAgICAvLyBvbmUuCiAgICAgIHZhciBwYXJ0cyA9IHsKICAgICAgICBjdXJyZW50OiBudWxsLAogICAgICAgIC8vIEZldGNoIGN1cnJlbnQgbm9kZS4KICAgICAgICBnZXQ6IGZ1bmN0aW9uKCl7CiAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudCkKICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdHJhdmVyc2FsLm5vZGVzLnNoaWZ0KCk7CiAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50OwogICAgICAgIH0sCiAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgbmV4dCBwYXJ0IChkbyBub3QgZmV0Y2ggaXQgeWV0KS4KICAgICAgICBuZXh0OiBmdW5jdGlvbigpewogICAgICAgICAgdGhpcy5jdXJyZW50ID0gbnVsbDsKICAgICAgICB9LAogICAgICAgIC8vIFJlbW92ZSB0aGUgY3VycmVudCBwYXJ0IGZyb20gdGhlIERPTSB0cmVlLCBhbmQgbW92ZSB0byB0aGUKICAgICAgICAvLyBuZXh0LgogICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKXsKICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmdldCgpKTsKICAgICAgICAgIHRoaXMuY3VycmVudCA9IG51bGw7CiAgICAgICAgfSwKICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBuZXh0IHBhcnQgdGhhdCBpcyBub3QgZW1wdHksIGRpc2NhcmRpbmcgZW1wdHkKICAgICAgICAvLyBwYXJ0cy4KICAgICAgICBnZXROb25FbXB0eTogZnVuY3Rpb24oKXsKICAgICAgICAgIHZhciBwYXJ0ID0gdGhpcy5nZXQoKTsKICAgICAgICAgIC8vIEFsbG93IGVtcHR5IG5vZGVzIHdoZW4gdGhleSBhcmUgYWxvbmUgb24gYSBsaW5lLCBuZWVkZWQKICAgICAgICAgIC8vIGZvciB0aGUgRkYgY3Vyc29yIGJ1ZyB3b3JrYXJvdW5kIChzZWUgc2VsZWN0LmpzLAogICAgICAgICAgLy8gaW5zZXJ0TmV3bGluZUF0Q3Vyc29yKS4KICAgICAgICAgIHdoaWxlIChwYXJ0ICZhbXA7JmFtcDsgcGFydC5ub2RlTmFtZSA9PSAiU1BBTiIgJmFtcDsmYW1wOyBwYXJ0LmN1cnJlbnRUZXh0ID09ICIiKSB7CiAgICAgICAgICAgIHZhciBvbGQgPSBwYXJ0OwogICAgICAgICAgICB0aGlzLnJlbW92ZSgpOwogICAgICAgICAgICBwYXJ0ID0gdGhpcy5nZXQoKTsKICAgICAgICAgICAgLy8gQWRqdXN0IHNlbGVjdGlvbiBpbmZvcm1hdGlvbiwgaWYgYW55LiBTZWUgc2VsZWN0LmpzIGZvciBkZXRhaWxzLgogICAgICAgICAgICBzZWxlY3Quc25hcHNob3RNb3ZlKG9sZC5maXJzdENoaWxkLCBwYXJ0ICZhbXA7JmFtcDsgKHBhcnQuZmlyc3RDaGlsZCB8fCBwYXJ0KSwgMCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICB9CiAgICAgIH07CgogICAgICB2YXIgbGluZURpcnR5ID0gZmFsc2UsIHByZXZMaW5lRGlydHkgPSB0cnVlLCBsaW5lTm9kZXMgPSAwOwoKICAgICAgLy8gVGhpcyBmb3JFYWNoIGxvb3BzIG92ZXIgdGhlIHRva2VucyBmcm9tIHRoZSBwYXJzZWQgc3RyZWFtLCBhbmQKICAgICAgLy8gYXQgdGhlIHNhbWUgdGltZSB1c2VzIHRoZSBwYXJ0cyBvYmplY3QgdG8gcHJvY2VlZCB0aHJvdWdoIHRoZQogICAgICAvLyBjb3JyZXNwb25kaW5nIERPTSBub2Rlcy4KICAgICAgZm9yRWFjaChwYXJzZWQsIGZ1bmN0aW9uKHRva2VuKXsKICAgICAgICB2YXIgcGFydCA9IHBhcnRzLmdldE5vbkVtcHR5KCk7CgogICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PSAiXG4iKXsKICAgICAgICAgIC8vIFRoZSBpZGVhIG9mIHRoZSB0d28gc3RyZWFtcyBhY3R1YWxseSBzdGF5aW5nIHN5bmNocm9uaXplZAogICAgICAgICAgLy8gaXMgc3VjaCBhIGxvbmcgc2hvdCB0aGF0IHdlIGV4cGxpY2l0bHkgY2hlY2suCiAgICAgICAgICBpZiAocGFydC5ub2RlTmFtZSAhPSAiQlIiKQogICAgICAgICAgICB0aHJvdyAiUGFyc2VyIG91dCBvZiBzeW5jLiBFeHBlY3RlZCBCUi4iOwoKICAgICAgICAgIGlmIChwYXJ0LmRpcnR5IHx8ICFwYXJ0LmluZGVudGF0aW9uKSBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgbWF5YmVUb3VjaChmcm9tKTsKICAgICAgICAgIGZyb20gPSBwYXJ0OwoKICAgICAgICAgIC8vIEV2ZXJ5ICZsdDticj4gZ2V0cyBhIGNvcHkgb2YgdGhlIHBhcnNlciBzdGF0ZSBhbmQgYSBsZXhpY2FsCiAgICAgICAgICAvLyBjb250ZXh0IGFzc2lnbmVkIHRvIGl0LiBUaGUgZmlyc3QgaXMgdXNlZCB0byBiZSBhYmxlIHRvCiAgICAgICAgICAvLyBsYXRlciByZXN1bWUgcGFyc2luZyBmcm9tIHRoaXMgcG9pbnQsIHRoZSBzZWNvbmQgaXMgdXNlZAogICAgICAgICAgLy8gZm9yIGluZGVudGF0aW9uLgogICAgICAgICAgcGFydC5wYXJzZXJGcm9tSGVyZSA9IHBhcnNlZC5jb3B5KCk7CiAgICAgICAgICBwYXJ0LmluZGVudGF0aW9uID0gdG9rZW4uaW5kZW50YXRpb247CiAgICAgICAgICBwYXJ0LmRpcnR5ID0gZmFsc2U7CgogICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBhcmd1bWVudCB3YXNuJ3QgYW4gaW50ZWdlciwgZ28gYXQgbGVhc3QKICAgICAgICAgIC8vIHVudGlsIHRoYXQgbm9kZS4KICAgICAgICAgIGlmIChsaW5lcyA9PSBudWxsICZhbXA7JmFtcDsgcGFydCA9PSB0YXJnZXQpIHRocm93IFN0b3BJdGVyYXRpb247CgogICAgICAgICAgLy8gQSBjbGVhbiBsaW5lIHdpdGggbW9yZSB0aGFuIG9uZSBub2RlIG1lYW5zIHdlIGFyZSBkb25lLgogICAgICAgICAgLy8gVGhyb3dpbmcgYSBTdG9wSXRlcmF0aW9uIGlzIHRoZSB3YXkgdG8gYnJlYWsgb3V0IG9mIGEKICAgICAgICAgIC8vIE1vY2hpS2l0IGZvckVhY2ggbG9vcC4KICAgICAgICAgIGlmICgobGluZXMgIT0gbnVsbCAmYW1wOyZhbXA7IC0tbGluZXMgJmx0Oz0gMCkgfHwgKCFsaW5lRGlydHkgJmFtcDsmYW1wOyAhcHJldkxpbmVEaXJ0eSAmYW1wOyZhbXA7IGxpbmVOb2RlcyA+IDEgJmFtcDsmYW1wOyAhY2xlYW5MaW5lcykpCiAgICAgICAgICAgIHRocm93IFN0b3BJdGVyYXRpb247CiAgICAgICAgICBwcmV2TGluZURpcnR5ID0gbGluZURpcnR5OyBsaW5lRGlydHkgPSBmYWxzZTsgbGluZU5vZGVzID0gMDsKICAgICAgICAgIHBhcnRzLm5leHQoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBpZiAocGFydC5ub2RlTmFtZSAhPSAiU1BBTiIpCiAgICAgICAgICAgIHRocm93ICJQYXJzZXIgb3V0IG9mIHN5bmMuIEV4cGVjdGVkIFNQQU4uIjsKICAgICAgICAgIGlmIChwYXJ0LmRpcnR5KQogICAgICAgICAgICBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgbGluZU5vZGVzKys7CgogICAgICAgICAgLy8gSWYgdGhlIHBhcnQgbWF0Y2hlcyB0aGUgdG9rZW4sIHdlIGNhbiBsZWF2ZSBpdCBhbG9uZS4KICAgICAgICAgIGlmIChjb3JyZWN0UGFydCh0b2tlbiwgcGFydCkpewogICAgICAgICAgICBwYXJ0LmRpcnR5ID0gZmFsc2U7CiAgICAgICAgICAgIHBhcnRzLm5leHQoKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBmaXggaXQuCiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbGluZURpcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBjb3JyZWN0IHBhcnQuCiAgICAgICAgICAgIHZhciBuZXdQYXJ0ID0gdG9rZW5QYXJ0KHRva2VuKTsKICAgICAgICAgICAgY29udGFpbmVyLmluc2VydEJlZm9yZShuZXdQYXJ0LCBwYXJ0KTsKICAgICAgICAgICAgaWYgKGFjdGl2ZSkgYWN0aXZlKG5ld1BhcnQsIHRva2VuLCBzZWxmKTsKICAgICAgICAgICAgdmFyIHRva2Vuc2l6ZSA9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IDA7CiAgICAgICAgICAgIC8vIEVhdCB1cCBwYXJ0cyB1bnRpbCB0aGUgdGV4dCBmb3IgdGhpcyB0b2tlbiBoYXMgYmVlbgogICAgICAgICAgICAvLyByZW1vdmVkLCBhZGp1c3RpbmcgdGhlIHN0b3JlZCBzZWxlY3Rpb24gaW5mbyAoc2VlCiAgICAgICAgICAgIC8vIHNlbGVjdC5qcykgaW4gdGhlIHByb2Nlc3MuCiAgICAgICAgICAgIHdoaWxlICh0b2tlbnNpemUgPiAwKSB7CiAgICAgICAgICAgICAgcGFydCA9IHBhcnRzLmdldCgpOwogICAgICAgICAgICAgIHZhciBwYXJ0c2l6ZSA9IHBhcnQuY3VycmVudFRleHQubGVuZ3RoOwogICAgICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdFJlcGxhY2VOb2RlKHBhcnQuZmlyc3RDaGlsZCwgbmV3UGFydC5maXJzdENoaWxkLCB0b2tlbnNpemUsIG9mZnNldCk7CiAgICAgICAgICAgICAgaWYgKHBhcnRzaXplID4gdG9rZW5zaXplKXsKICAgICAgICAgICAgICAgIHNob3J0ZW5QYXJ0KHBhcnQsIHRva2Vuc2l6ZSk7CiAgICAgICAgICAgICAgICB0b2tlbnNpemUgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRva2Vuc2l6ZSAtPSBwYXJ0c2l6ZTsKICAgICAgICAgICAgICAgIG9mZnNldCArPSBwYXJ0c2l6ZTsKICAgICAgICAgICAgICAgIHBhcnRzLnJlbW92ZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICAgIG1heWJlVG91Y2goZnJvbSk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CgogICAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBzb21lIHN0YXR1cyBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzZWQgYnkKICAgICAgLy8gaGlnaHRsaWdodERpcnR5IHRvIGRldGVybWluZSB3aGV0aGVyIGFuZCB3aGVyZSBpdCBoYXMgdG8KICAgICAgLy8gY29udGludWUuCiAgICAgIHJldHVybiB7bGVmdDogbGluZXMsCiAgICAgICAgICAgICAgbm9kZTogcGFydHMuZ2V0Tm9uRW1wdHkoKSwKICAgICAgICAgICAgICBkaXJ0eTogbGluZURpcnR5fTsKICAgIH0KICB9OwoKICByZXR1cm4gRWRpdG9yOwp9KSgpOwoKICBhZGRFdmVudEhhbmRsZXIod2luZG93LCAibG9hZCIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgQ29kZU1pcnJvciA9IHdpbmRvdy5mcmFtZUVsZW1lbnQuQ29kZU1pcnJvcjsKICAgICAgQ29kZU1pcnJvci5lZGl0b3IgPSBuZXcgRWRpdG9yKENvZGVNaXJyb3Iub3B0aW9ucyk7CiAgICAgIHRoaXMucGFyZW50LnNldFRpbWVvdXQobWV0aG9kKENvZGVNaXJyb3IsICJpbml0IiksIDApOwogIH0pOwo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgdGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpOwogIHZhciBlZGl0b3IgPSBuZXcgQ29kZU1pcnJvcihDb2RlTWlycm9yLnJlcGxhY2UodGV4dGFyZWEpLCB7CiAgICBoZWlnaHQ6ICI3NTBweCIsCiAgICB3aWR0aDogIjEwMCUiLAogICAgY29udGVudDogdGV4dGFyZWEudmFsdWUsCiAgICBwYXJzZXJmaWxlOiBbInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiXSwKICAgIHN0eWxlc2hlZXQ6ICJjc3MvanNjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iLAogICAgYXV0b01hdGNoUGFyZW5zOiB0cnVlLAogICAgaW5pdENhbGxiYWNrOiBmdW5jdGlvbihlZGl0b3Ipe2VkaXRvci53aW4uZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuc2Nyb2xsSW50b1ZpZXcoKTt9CiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/compress.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IENvbXByZXNzaW9uIEhlbHBlcjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PURyb2lkK1NhbnN8RHJvaWQrU2FucytNb25vfERyb2lkK1NhbnM6Ym9sZCIvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIC5maWVsZCB7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IC40ZW07fQogICAgICBidXR0b24ge2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO30KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgoKPGgxPjxzcGFuIGNsYXNzPSJsb2dvLWJyYWNlcyI+eyB9PC9zcGFuPiBDb2RlTWlycm9yPC9oMT4KCjxwcmUgY2xhc3M9ImdyZXkiPgovKiBTY3JpcHQgY29tcHJlc3Npb24gKi8KPC9wcmU+CgogICAgPHA+VGhlIENvZGVNaXJyb3Igc2NyaXB0cywgYXMgZGlzdHJpYnV0ZWQsIGFyZSBtYW55LCBhbmQgZnVsbCBvZgogICAgY29tbWVudHMuIFRvIG9wdGltaXplIHBhZ2UgbG9hZGluZywgaXQgaXMgcmVjb21tZW5kZWQgdG8KICAgIGNvbmNhdGVuYXRlIHRoZSBzY3JpcHRzIGxvYWRlZCBpbiB0aGUgQ29kZU1pcnJvciBmcmFtZSwgYW5kCiAgICBjb21wcmVzcyB0aGVtLiBUaGlzIHBhZ2UgbWF5IGJlIHVzZWZ1bCBpZiB5b3UgaW50ZW5kIHRvIGRvIHRoaXM6CiAgICBpdCBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gR29vZ2xlJ3MgPGEKICAgIGhyZWY9Imh0dHA6Ly9jbG9zdXJlLWNvbXBpbGVyLmFwcHNwb3QuY29tLyI+Q2xvc3VyZSBjb21waWxlcjwvYT4sCiAgICBhbGxvd2luZyB5b3UgdG8gZWFzaWx5IGxvYWQgaW4gQ29kZU1pcnJvciBzY3JpcHRzLjwvcD4KCiAgICA8cD5Zb3Ugd2lsbCBoYXZlIHRvIGNvbXByZXNzIDxjb2RlPmNvZGVtaXJyb3IuanM8L2NvZGU+CiAgICBzZXBhcmF0ZWx5LCBzaW5jZSB0aGF0IHdpbGwgYmUgbG9hZGVkIGludG8gdGhlIHRvcC1sZXZlbCBwYWdlIGZyb20KICAgIHdoaWNoIHlvdSB1c2UgQ29kZU1pcnJvci4gSW5zaWRlIHRoZSBmcmFtZSwgdGhlCiAgICA8Y29kZT5wYXJzZXJmaWxlPC9jb2RlPiBhbmQgPGNvZGU+YmFzZWZpbGVzPC9jb2RlPiBvcHRpb25zIGNvbnRyb2wKICAgIHdoaWNoIGZpbGVzIGFyZSBsb2FkZWQuIElmIHlvdSBjb21iaW5lIHRoZSBwYXJzZXIocykgeW91IG5lZWQgd2l0aAogICAgdGhlIGJhc2VmaWxlcywgeW91IGNhbiBzZXQgPGNvZGU+YmFzZWZpbGVzPC9jb2RlPiB0byBwb2ludCBhdCB5b3VyCiAgICBjb21wcmVzc2VkIGZpbGUsIGFuZCBsZWF2ZSA8Y29kZT5wYXJzZXJmaWxlczwvY29kZT4gYXQKICAgIDxjb2RlPltdPC9jb2RlPi48L3A+CgogICAgPHA+Rm9yIGV4YW1wbGUsIHlvdSBoYXZlIGEgcGFnZSB0aGF0IHVzZXMgQ29kZU1pcnJvciB0byBlZGl0IHNvbWUKICAgIEphdmFTY3JpcHQgY29kZS4gWW91IGNvdWxkIHNhdmUgYSBtaW5pbWl6ZWQgdmVyc2lvbiBvZgogICAgPGNvZGU+Y29kZW1pcnJvci5qczwvY29kZT4gYXMgPGNvZGU+Y29kZW1pcnJvcl9taW4uanM8L2NvZGU+LCBhbmQKICAgIGluY2x1ZGUgdGhhdCAod2l0aCBhIDxjb2RlPiZsdDtzY3JpcHQ+PC9jb2RlPiB0YWcpIGluIHlvdXIgcGFnZS4KICAgIE5leHQsIHlvdSBjb21wcmVzcyBhbGwgdGhlIGZpbGVzIHVuZGVyICJJbi1mcmFtZSBiYXNlIGNvZGUiLCBwbHVzCiAgICA8Y29kZT50b2tlbml6ZWphdmFzY3JpcHQuanM8L2NvZGU+IGFuZAogICAgPGNvZGU+cGFyc2VqYXZhc2NyaXB0LmpzPC9jb2RlPiBpbnRvCiAgICA8Y29kZT5jb2RlbWlycm9yX2Jhc2UuanM8L2NvZGU+LCBhbmQgbG9hZCB0aGUgZWRpdG9yIGxpa2UKICAgIHRoaXM6PC9wPgoKICAgIDxwcmUgY2xhc3M9ImNvZGUiPkNvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCJteXRleHRhcmVhIiwgewogIGJhc2VmaWxlczogWyJqcy9jb2RlbWlycm9yX2Jhc2UuanMiXSwKICBsaW5lTnVtYmVyczogdHJ1ZQp9KTs8L3ByZT4KCiAgICA8cD5DbGlja2luZyB0aGUgIkNvbXByZXNzIiBidXR0b25zIGJlbG93IHdpbGwgdGFrZSB5b3UgdG8gYSBmaWxlCiAgICBjb250YWluaW5nIHRoZSBjb21wcmVzc2VkIGNvZGUuIENvcHktcGFzdGUgdGhpcyBpbnRvIHlvdXIgc2NyaXB0CiAgICBmaWxlLiAoIlNhdmUgYXMiIGZvciB0aGF0IHBhZ2UgaXMgYnJva2VuIG9uIHNvbWUgYnJvd3NlcnMsIHNvIGJlCiAgICBjYXJlZnVsKS48L3A+CgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICBmdW5jdGlvbiBzZXRWZXJzaW9uKHZlcikgewogICAgICAgIHZhciB1cmxwcmVmaXggPSB2ZXIub3B0aW9uc1t2ZXIuc2VsZWN0ZWRJbmRleF0udmFsdWU7CiAgICAgICAgY29uc29sZS5sb2codXJscHJlZml4KTsKICAgICAgICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVzIiksIG07CiAgICAgICAgZm9yICh2YXIgb3B0Z3IgPSBzZWxlY3QuZmlyc3RDaGlsZDsgb3B0Z3I7IG9wdGdyID0gb3B0Z3IubmV4dFNpYmxpbmcpCiAgICAgICAgICBmb3IgKHZhciBvcHQgPSBvcHRnci5maXJzdENoaWxkOyBvcHQ7IG9wdCA9IG9wdC5uZXh0U2libGluZykgewogICAgICAgICAgICBpZiAob3B0Lm5vZGVOYW1lICE9ICJPUFRJT04iKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBlbHNlIGlmIChtID0gb3B0LnZhbHVlLm1hdGNoKC9eaHR0cDpcL1wvY29kZW1pcnJvci5uZXRcLyguKikkLykpCiAgICAgICAgICAgICAgb3B0LnZhbHVlID0gdXJscHJlZml4ICsgbVsxXTsKICAgICAgICAgICAgZWxzZSBpZiAobSA9IG9wdC52YWx1ZS5tYXRjaCgvaHR0cDpcL1wvbWFyaWpuLmhhdmVyYmVrZS5ubFwvZ2l0XC9jb2RlbWlycm9yXD9hPWJsb2JfcGxhaW47aGI9W147XSs7Zj0oLiopJC8pKQogICAgICAgICAgICAgIG9wdC52YWx1ZSA9IHVybHByZWZpeCArIG1bMV07CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gdmVyaWZ5KCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS52YWx1ZT0id2FybmluZ3MiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3JtIikuc3VibWl0KCk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLnZhbHVlPSJjb21waWxlZF9jb2RlIjsKICAgICAgfQogICAgPC9zY3JpcHQ+CgogICAgPGZvcm0gaWQ9ImZvcm0iIGFjdGlvbj0iaHR0cDovL2Nsb3N1cmUtY29tcGlsZXIuYXBwc3BvdC5jb20vY29tcGlsZSIgbWV0aG9kPSJwb3N0IiBpZD0iZm9ybSI+CiAgICAgIDxwPlZlcnNpb246IDxzZWxlY3QgaWQ9InZlcnNpb24iIG9uY2hhbmdlPSJzZXRWZXJzaW9uKHRoaXMpOyIgY2xhc3M9ImZpZWxkIiBzdHlsZT0icGFkZGluZzogMXB4Ij4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvIiBzZWxlY3RlZD5EZXZlbG9wbWVudCBoZWFkPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvZ2l0L2NvZGVtaXJyb3I/YT1ibG9iX3BsYWluO2hiPXYwLjg7Zj0iPnYwLjg8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9naXQvY29kZW1pcnJvcj9hPWJsb2JfcGxhaW47aGI9djAuNztmPSI+djAuNzwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2dpdC9jb2RlbWlycm9yP2E9YmxvYl9wbGFpbjtoYj12MC42NztmPSI+djAuNjc8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9naXQvY29kZW1pcnJvcj9hPWJsb2JfcGxhaW47aGI9djAuNjY7Zj0iPnYwLjY2PC9vcHRpb24+CiAgICAgIDwvc2VsZWN0PjwvcD4KCiAgICAgIDxwPjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJjb21waWxlZF9jb2RlIiBuYW1lPSJvdXRwdXRfaW5mbyIgaWQ9Im91dHB1dCIvPgoKICAgICAgPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiIG5hbWU9ImNvZGVfdXJsIiBzdHlsZT0id2lkdGg6IDQwZW07IiBjbGFzcz0iZmllbGQiIGlkPSJmaWxlcyI+CiAgICAgICAgPG9wdGdyb3VwIGxhYmVsPSJDb2RlTWlycm9yIExpYnJhcnkiPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL2NvZGVtaXJyb3IuanMiPmNvZGVtaXJyb3IuanM8L29wdGlvbj4KICAgICAgICA8L29wdGdyb3VwPgogICAgICAgIDxvcHRncm91cCBsYWJlbD0iSW4tZnJhbWUgYmFzZSBmaWxlcyI+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvdXRpbC5qcyI+dXRpbC5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3N0cmluZ3N0cmVhbS5qcyI+c3RyaW5nc3RyZWFtLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvc2VsZWN0LmpzIj5zZWxlY3QuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy91bmRvLmpzIj51bmRvLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvZWRpdG9yLmpzIj5lZGl0b3IuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy90b2tlbml6ZS5qcyI+dG9rZW5pemUuanM8L29wdGlvbj4KICAgICAgICA8L29wdGdyb3VwPgogICAgICAgIDxvcHRncm91cCBsYWJlbD0iUGFyc2VycyI+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvdG9rZW5pemVqYXZhc2NyaXB0LmpzIj50b2tlbml6ZWphdmFzY3JpcHQuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy9wYXJzZWphdmFzY3JpcHQuanMiPnBhcnNlamF2YXNjcmlwdC5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3BhcnNleG1sLmpzIj5wYXJzZXhtbC5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3BhcnNlY3NzLmpzIj5wYXJzZWNzcy5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3BhcnNlc3BhcnFsLmpzIj5wYXJzZXNwYXJxbC5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3BhcnNlaHRtbG1peGVkLmpzIj5wYXJzZWh0bWxtaXhlZC5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3BhcnNlZHVtbXkuanMiPnBhcnNlZHVtbXkuanM8L29wdGlvbj4KICAgICAgICA8L29wdGdyb3VwPgogICAgICAgIDxvcHRncm91cCBsYWJlbD0iQ29udHJpYnV0ZWQgcGFyc2VycyI+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9sdWEvanMvcGFyc2VsdWEuanMiPnBhcnNlbHVhLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9weXRob24vanMvcGFyc2VweXRob24uanMiPnBhcnNlcHl0aG9uLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvanMvdG9rZW5pemVwaHAuanMiPnRva2VuaXplcGhwLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvanMvcGFyc2VwaHAuanMiPnBhcnNlcGhwLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvanMvcGFyc2VwaHBodG1sbWl4ZWQuanMiPnBhcnNlcGhwaHRtbG1peGVkLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9jc2hhcnAvanMvdG9rZW5pemVjc2hhcnAuanMiPnRva2VuaXplY3NoYXJwLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9jc2hhcnAvanMvcGFyc2Vjc2hhcnAuanMiPnBhcnNlY3NoYXJwLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvanMvcGFyc2VzcWwuanMiPnBhcnNlc3FsLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9wbHNxbC9qcy9wYXJzZXBsc3FsLmpzIj5wYXJzZXBsc3FsLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zY2hlbWUvanMvdG9rZW5pemVzY2hlbWUuanMiPnRva2VuaXplc2NoZW1lLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zZWhlbWUvanMvcGFyc2VzY2hlbWUuanMiPnBhcnNlc2NoZW1lLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9vbWV0YS9qcy90b2tlbml6ZW9tZXRhLmpzIj50b2tlbml6ZW9tZXRhLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9vbWV0YS9qcy9wYXJzZW9tZXRhLmpzIj5wYXJzZW9tZXRhLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi94cXVlcnkvanMvdG9rZW5pemV4cXVlcnkuanMiPnRva2VuaXpleHF1ZXJ5LmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi94cXVlcnkvanMvcGFyc2V4cXVlcnkuanMiPnBhcnNleHF1ZXJ5LmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vc3ZuLmV4b3BsYXRmb3JtLm9yZy9wcm9qZWN0cy9nd3QvdHJ1bmsvZXhvLWd3dGZyYW1ld29yay1lZGl0b3Ivc3JjL21haW4vcmVzb3VyY2VzL29yZy9leG9wbGF0Zm9ybS9nd3RmcmFtZXdvcmsvZWRpdG9yL3B1YmxpYy9jb2RlbWlycm9yL2pzL3Rva2VuaXplZ3Jvb3Z5LmpzIj50b2tlbml6ZWdyb292eS5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL3N2bi5leG9wbGF0Zm9ybS5vcmcvcHJvamVjdHMvZ3d0L3RydW5rL2V4by1nd3RmcmFtZXdvcmstZWRpdG9yL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvZXhvcGxhdGZvcm0vZ3d0ZnJhbWV3b3JrL2VkaXRvci9wdWJsaWMvY29kZW1pcnJvci9qcy9wYXJzZWdyb292eS5qcyI+cGFyc2Vncm9vdnkuanM8L29wdGlvbj4KICAgICAgICA8L29wdGdyb3VwPgogICAgICA8L3NlbGVjdD48L3A+CgogICAgICA8cD48YnV0dG9uIHR5cGU9InN1Ym1pdCI+Q29tcHJlc3MhPC9idXR0b24+IDxidXR0b24gdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ2ZXJpZnkoKTsiPkNoZWNrIGZvciBlcnJvcnM8L2J1dHRvbj48L3A+CgogICAgICA8cD5DdXN0b20gY29kZSB0byBhZGQgdG8gdGhlIGNvbXByZXNzZWQgZmlsZTo8dGV4dGFyZWEgbmFtZT0ianNfY29kZSIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDE1ZW07IiBjbGFzcz0iZmllbGQiPjwvdGV4dGFyZWE+PC9wPgogICAgPC9mb3JtPgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/css/csharpcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uY3NoYXJwLXB1bmN0dWF0aW9uIHsKICBjb2xvcjogZ3JlZW47Cn0KCnNwYW4uY3NoYXJwLW9wZXJhdG9yIHsKICBjb2xvcjogcHVycGxlOwp9CgpzcGFuLmNzaGFycC1rZXl3b3JkIHsKICBjb2xvcjogYmx1ZTsKfQoKc3Bhbi5jc2hhcnAtYXRvbSB7CiAgY29sb3I6IGJyb3duOwp9CgpzcGFuLmNzaGFycC12YXJpYWJsZSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmNzaGFycC12YXJpYWJsZWRlZiB7CiAgY29sb3I6ICMwMDAwRkY7Cn0KCnNwYW4uY3NoYXJwLWxvY2FsdmFyaWFibGUgewogIGNvbG9yOiAjMDA0NDk5Owp9CgpzcGFuLmNzaGFycC1wcm9wZXJ0eSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmNzaGFycC1jb21tZW50IHsKICBjb2xvcjogZ3JlZW47Cn0KCnNwYW4uY3NoYXJwLXN0cmluZyB7CiAgY29sb3I6IHJlZDsKfQoK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogQyMgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KCjxwPkRlbW9uc3RyYXRpb24gb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyBDIyBoaWdobGlnaHRlci48L3A+Cgo8cD5Xcml0dGVuIGJ5IDxhIGhyZWY9Imh0dHA6Ly9za2lsbHRlc3RpbmcuY29tLyI+Qm9yaXMgR2FiZXIgYW5kIENocmlzdG9waGVyIEJ1Y2hpbm88L2E+ICg8YQpocmVmPSJodHRwOi8vc2tpbGx0ZXN0aW5nLmNvbS9jb2RlbWlycm9yLXBhcnNlci1saWNlbnNlLyI+bGljZW5zZTwvYT4pLjwvcD4KCjxkaXYgY2xhc3M9ImJvcmRlciI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSI1MCI+CnVzaW5nIFN5c3RlbTsKCm5hbWVzcGFjZSBFeGFtcGxlCnsKICAgIC8vLyAmbHQ7c3VtbWFyeT4KICAgIC8vLyBSZXByZXNlbnRzIGEgcGVyc29uIGVtcGxveWVkIGF0IHRoZSBjb21wYW55CiAgICAvLy8gJmx0Oy9zdW1tYXJ5PgogICAgcHVibGljIGNsYXNzIEVtcGxveWVlIDogUGVyc29uCiAgICB7CiAgICAgICAgI3JlZ2lvbiBQcm9wZXJ0aWVzCiAgICAgICAgCiAgICAgICAgLy8vICZsdDtzdW1tYXJ5PgogICAgICAgIC8vLyBHZXRzIG9yIHNldHMgdGhlIGZpcnN0IG5hbWUuCiAgICAgICAgLy8vICZsdDsvc3VtbWFyeT4KICAgICAgICAvLy8gJmx0O3ZhbHVlPlRoZSBmaXJzdCBuYW1lLiZsdDsvdmFsdWU+CiAgICAgICAgcHVibGljIHN0cmluZyBGaXJzdE5hbWUgeyBnZXQ7IHNldDsgfQoKICAgICAgICAjZW5kcmVnaW9uCgogICAgICAgIC8vLyAmbHQ7c3VtbWFyeT4KICAgICAgICAvLy8gQ2FsY3VsYXRlcyB0aGUgc2FsYXJ5LgogICAgICAgIC8vLyAmbHQ7L3N1bW1hcnk+CiAgICAgICAgLy8vICZsdDtwYXJhbSBuYW1lPSJncmFkZSI+VGhlIGdyYWRlLiZsdDsvcGFyYW0+CiAgICAgICAgLy8vICZsdDtyZXR1cm5zPiZsdDsvcmV0dXJucz4KICAgICAgICBwdWJsaWMgZGVjaW1hbCBDYWxjdWxhdGVTYWxhcnkoaW50IGdyYWRlKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGdyYWRlID4gMTApCiAgICAgICAgICAgICAgICByZXR1cm4gMTAwMDsKICAgICAgICAgICAgcmV0dXJuIDUwMDsKICAgICAgICB9CiAgICB9Cn0KPC90ZXh0YXJlYT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgcGFyc2VyZmlsZTogWyIuLi9jb250cmliL2NzaGFycC9qcy90b2tlbml6ZWNzaGFycC5qcyIsICIuLi9jb250cmliL2NzaGFycC9qcy9wYXJzZWNzaGFycC5qcyJdLAogICAgc3R5bGVzaGVldDogImNzcy9jc2hhcnBjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICIuLi8uLi9qcy8iLAogICAgaGVpZ2h0OiAiNTAwcHgiCiAgfSk7Cjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/js/parsecsharp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUGFyc2UgZnVuY3Rpb24gZm9yIEphdmFTY3JpcHQuIE1ha2VzIHVzZSBvZiB0aGUgdG9rZW5pemVyIGZyb20KICogdG9rZW5pemVjc2hhcnAuanMuIE5vdGUgdGhhdCB5b3VyIHBhcnNlcnMgZG8gbm90IGhhdmUgdG8gYmUKICogdGhpcyBjb21wbGljYXRlZCAtLSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZWNvZ25pemUgbG9jYWwgdmFyaWFibGVzLAogKiBpbiBtYW55IGxhbmd1YWdlcyBpdCBpcyBlbm91Z2ggdG8ganVzdCBsb29rIGZvciBicmFjZXMsIHNlbWljb2xvbnMsCiAqIHBhcmVudGhlc2VzLCBldGMsIGFuZCBrbm93IHdoZW4geW91IGFyZSBpbnNpZGUgYSBzdHJpbmcgb3IgY29tbWVudC4KICoKICogU2VlIG1hbnVhbC5odG1sIGZvciBtb3JlIGluZm8gYWJvdXQgdGhlIHBhcnNlciBpbnRlcmZhY2UuCiAqLwoKdmFyIEpTUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICAvLyBUb2tlbiB0eXBlcyB0aGF0IGNhbiBiZSBjb25zaWRlcmVkIHRvIGJlIGF0b21zLgogIHZhciBhdG9taWNUeXBlcyA9IHsiYXRvbSI6IHRydWUsICJudW1iZXIiOiB0cnVlLCAidmFyaWFibGUiOiB0cnVlLCAic3RyaW5nIjogdHJ1ZSwgInJlZ2V4cCI6IHRydWV9OwogIC8vIFNldHRpbmcgdGhhdCBjYW4gYmUgdXNlZCB0byBoYXZlIEpTT04gZGF0YSBpbmRlbnQgcHJvcGVybHkuCiAgdmFyIGpzb24gPSBmYWxzZTsKICAvLyBDb25zdHJ1Y3RvciBmb3IgdGhlIGxleGljYWwgY29udGV4dCBvYmplY3RzLgogIGZ1bmN0aW9uIENTaGFycExleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgndmFyZGVmJywgJ3N0YXQnIChzdGF0ZW1lbnQpLCAnZm9ybScgKHNwZWNpYWwgZm9ybSksICdbJywgJ3snLCBvciAnKCcpCiAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgLy8gJ1snLCAneycsIG9yICcoJyBibG9ja3MgdGhhdCBoYXZlIGFueSB0ZXh0IGFmdGVyIHRoZWlyIG9wZW5pbmcKICAgIC8vIGNoYXJhY3RlciBhcmUgc2FpZCB0byBiZSAnYWxpZ25lZCcgLS0gYW55IGxpbmVzIGJlbG93IGFyZQogICAgLy8gaW5kZW50ZWQgYWxsIHRoZSB3YXkgdG8gdGhlIG9wZW5pbmcgY2hhcmFjdGVyLgogICAgaWYgKGFsaWduICE9IG51bGwpCiAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjsKICAgIC8vIFBhcmVudCBzY29wZSwgaWYgYW55LgogICAgdGhpcy5wcmV2ID0gcHJldjsKICAgIHRoaXMuaW5mbyA9IGluZm87CiAgfQoKICAvLyBDU2hhcnAgaW5kZW50YXRpb24gcnVsZXMuCiAgZnVuY3Rpb24gaW5kZW50Q1NoYXJwKGxleGljYWwpIHsKICAgIHJldHVybiBmdW5jdGlvbihmaXJzdENoYXJzKSB7CiAgICAgIHZhciBmaXJzdENoYXIgPSBmaXJzdENoYXJzICYmIGZpcnN0Q2hhcnMuY2hhckF0KDApLCB0eXBlID0gbGV4aWNhbC50eXBlOwogICAgICB2YXIgY2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBlOwogICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIDQ7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZvcm0iICYmIGZpcnN0Q2hhciA9PSAieyIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQ7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInN0YXQiIHx8IHR5cGUgPT0gImZvcm0iKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgaW5kZW50VW5pdDsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5pbmZvID09ICJzd2l0Y2giICYmICFjbG9zaW5nKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKC9eKD86Y2FzZXxkZWZhdWx0KVxiLy50ZXN0KGZpcnN0Q2hhcnMpID8gaW5kZW50VW5pdCA6IDIgKiBpbmRlbnRVbml0KTsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5hbGlnbikKICAgICAgICByZXR1cm4gbGV4aWNhbC5jb2x1bW4gLSAoY2xvc2luZyA/IDEgOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKGNsb3NpbmcgPyAwIDogaW5kZW50VW5pdCk7CiAgICB9OwogIH0KCiAgLy8gVGhlIHBhcnNlci1pdGVyYXRvci1wcm9kdWNpbmcgZnVuY3Rpb24gaXRzZWxmLgogIGZ1bmN0aW9uIHBhcnNlQ1NoYXJwKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplQ1NoYXJwKGlucHV0KTsKICAgIC8vIFRoZSBwYXJzZXIgc3RhdGUuIGNjIGlzIGEgc3RhY2sgb2YgYWN0aW9ucyB0aGF0IGhhdmUgdG8gYmUKICAgIC8vIHBlcmZvcm1lZCB0byBmaW5pc2ggdGhlIGN1cnJlbnQgc3RhdGVtZW50LiBGb3IgZXhhbXBsZSB3ZSBtaWdodAogICAgLy8ga25vdyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZmluZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgYW5kIGEKICAgIC8vIHNlbWljb2xvbi4gQWN0aW9ucyBhdCB0aGUgZW5kIG9mIHRoZSBzdGFjayBnbyBmaXJzdC4gSXQgaXMKICAgIC8vIGluaXRpYWxpemVkIHdpdGggYW4gaW5maW5pdGVseSBsb29waW5nIGFjdGlvbiB0aGF0IGNvbnN1bWVzCiAgICAvLyB3aG9sZSBzdGF0ZW1lbnRzLgogICAgdmFyIGNjID0gW3N0YXRlbWVudHNdOwogICAgLy8gVGhlIGxleGljYWwgc2NvcGUsIHVzZWQgbW9zdGx5IGZvciBpbmRlbnRhdGlvbi4KICAgIHZhciBsZXhpY2FsID0gbmV3IENTaGFycExleGljYWwoKGJhc2Vjb2x1bW4gfHwgMCkgLSBpbmRlbnRVbml0LCAwLCAiYmxvY2siLCBmYWxzZSk7CiAgICAvLyBDdXJyZW50IGNvbHVtbiwgYW5kIHRoZSBpbmRlbnRhdGlvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQKICAgIC8vIGxpbmUuIFVzZWQgdG8gY3JlYXRlIGxleGljYWwgc2NvcGUgb2JqZWN0cy4KICAgIHZhciBjb2x1bW4gPSAwOwogICAgdmFyIGluZGVudGVkID0gMDsKICAgIC8vIFZhcmlhYmxlcyB3aGljaCBhcmUgdXNlZCBieSB0aGUgbWFyaywgY29udCwgYW5kIHBhc3MgZnVuY3Rpb25zCiAgICAvLyBiZWxvdyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkcml2ZXIgbG9vcCBpbiB0aGUgJ25leHQnCiAgICAvLyBmdW5jdGlvbi4KICAgIHZhciBjb25zdW1lLCBtYXJrZWQ7CiAgCiAgICAvLyBUaGUgaXRlcmF0b3Igb2JqZWN0LgogICAgdmFyIHBhcnNlciA9IHtuZXh0OiBuZXh0LCBjb3B5OiBjb3B5fTsKCiAgICBmdW5jdGlvbiBuZXh0KCl7CiAgICAgIC8vIFN0YXJ0IGJ5IHBlcmZvcm1pbmcgYW55ICdsZXhpY2FsJyBhY3Rpb25zIChhZGp1c3RpbmcgdGhlCiAgICAgIC8vIGxleGljYWwgdmFyaWFibGUpLCBvciB0aGUgb3BlcmF0aW9ucyBiZWxvdyB3aWxsIGJlIHdvcmtpbmcKICAgICAgLy8gd2l0aCB0aGUgd3JvbmcgbGV4aWNhbCBzdGF0ZS4KICAgICAgd2hpbGUoY2NbY2MubGVuZ3RoIC0gMV0ubGV4KQogICAgICAgIGNjLnBvcCgpKCk7CgogICAgICAvLyBGZXRjaCBhIHRva2VuLgogICAgICB2YXIgdG9rZW4gPSB0b2tlbnMubmV4dCgpOwoKICAgICAgLy8gQWRqdXN0IGNvbHVtbiBhbmQgaW5kZW50ZWQuCiAgICAgIGlmICh0b2tlbi50eXBlID09ICJ3aGl0ZXNwYWNlIiAmJiBjb2x1bW4gPT0gMCkKICAgICAgICBpbmRlbnRlZCA9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgY29sdW1uICs9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgaWYgKHRva2VuLmNvbnRlbnQgPT0gIlxuIil7CiAgICAgICAgaW5kZW50ZWQgPSBjb2x1bW4gPSAwOwogICAgICAgIC8vIElmIHRoZSBsZXhpY2FsIHNjb3BlJ3MgYWxpZ24gcHJvcGVydHkgaXMgc3RpbGwgdW5kZWZpbmVkIGF0CiAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgbGluZSwgaXQgaXMgYW4gdW4tYWxpZ25lZCBzY29wZS4KICAgICAgICBpZiAoISgiYWxpZ24iIGluIGxleGljYWwpKQogICAgICAgICAgbGV4aWNhbC5hbGlnbiA9IGZhbHNlOwogICAgICAgIC8vIE5ld2xpbmUgdG9rZW5zIGdldCBhbiBpbmRlbnRhdGlvbiBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAvLyB0aGVtLgogICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50Q1NoYXJwKGxleGljYWwpOwogICAgICB9CiAgICAgIC8vIE5vIG1vcmUgcHJvY2Vzc2luZyBmb3IgbWVhbmluZ2xlc3MgdG9rZW5zLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAiY29tbWVudCIpCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBXaGVuIGEgbWVhbmluZ2Z1bCB0b2tlbiBpcyBmb3VuZCBhbmQgdGhlIGxleGljYWwgc2NvcGUncwogICAgICAvLyBhbGlnbiBpcyB1bmRlZmluZWQsIGl0IGlzIGFuIGFsaWduZWQgc2NvcGUuCiAgICAgIGlmICghKCJhbGlnbiIgaW4gbGV4aWNhbCkpCiAgICAgICAgbGV4aWNhbC5hbGlnbiA9IHRydWU7CgogICAgICAvLyBFeGVjdXRlIGFjdGlvbnMgdW50aWwgb25lICdjb25zdW1lcycgdGhlIHRva2VuIGFuZCB3ZSBjYW4KICAgICAgLy8gcmV0dXJuIGl0LgogICAgICB3aGlsZSh0cnVlKSB7CiAgICAgICAgY29uc3VtZSA9IG1hcmtlZCA9IGZhbHNlOwogICAgICAgIC8vIFRha2UgYW5kIGV4ZWN1dGUgdGhlIHRvcG1vc3QgYWN0aW9uLgogICAgICAgIGNjLnBvcCgpKHRva2VuLnR5cGUsIHRva2VuLmNvbnRlbnQpOwogICAgICAgIGlmIChjb25zdW1lKXsKICAgICAgICAgIC8vIE1hcmtlZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICAgICAgICBpZiAobWFya2VkKQogICAgICAgICAgICB0b2tlbi5zdHlsZSA9IG1hcmtlZDsKICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBUaGlzIG1ha2VzIGEgY29weSBvZiB0aGUgcGFyc2VyIHN0YXRlLiBJdCBzdG9yZXMgYWxsIHRoZQogICAgLy8gc3RhdGVmdWwgdmFyaWFibGVzIGluIGEgY2xvc3VyZSwgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0CiAgICAvLyB3aWxsIHJlc3RvcmUgdGhlbSB3aGVuIGNhbGxlZCB3aXRoIGEgbmV3IGlucHV0IHN0cmVhbS4gTm90ZQogICAgLy8gdGhhdCB0aGUgY2MgYXJyYXkgaGFzIHRvIGJlIGNvcGllZCwgYmVjYXVzZSBpdCBpcyBjb250YW50bHkKICAgIC8vIGJlaW5nIG1vZGlmaWVkLiBMZXhpY2FsIG9iamVjdHMgYXJlIG5vdCBtdXRhdGVkLCBhbmQgY29udGV4dAogICAgLy8gb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQgaW4gYSBoYXJtZnVsIHdheSwgc28gdGhleSBjYW4gYmUgc2hhcmVkCiAgICAvLyBiZXR3ZWVuIHJ1bnMgb2YgdGhlIHBhcnNlci4KICAgIGZ1bmN0aW9uIGNvcHkoKXsKICAgICAgdmFyIF9sZXhpY2FsID0gbGV4aWNhbCwgX2NjID0gY2MuY29uY2F0KFtdKSwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGU7CiAgCiAgICAgIHJldHVybiBmdW5jdGlvbiBjb3B5UGFyc2VyKGlucHV0KXsKICAgICAgICBsZXhpY2FsID0gX2xleGljYWw7CiAgICAgICAgY2MgPSBfY2MuY29uY2F0KFtdKTsgLy8gY29waWVzIHRoZSBhcnJheQogICAgICAgIGNvbHVtbiA9IGluZGVudGVkID0gMDsKICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZUNTaGFycChpbnB1dCwgX3Rva2VuU3RhdGUpOwogICAgICAgIHJldHVybiBwYXJzZXI7CiAgICAgIH07CiAgICB9CgogICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBwdXNoaW5nIGEgbnVtYmVyIG9mIGFjdGlvbnMgb250byB0aGUgY2MKICAgIC8vIHN0YWNrIGluIHJldmVyc2Ugb3JkZXIuCiAgICBmdW5jdGlvbiBwdXNoKGZzKXsKICAgICAgZm9yICh2YXIgaSA9IGZzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgIGNjLnB1c2goZnNbaV0pOwogICAgfQogICAgLy8gY29udCBhbmQgcGFzcyBhcmUgdXNlZCBieSB0aGUgYWN0aW9uIGZ1bmN0aW9ucyB0byBhZGQgb3RoZXIKICAgIC8vIGFjdGlvbnMgdG8gdGhlIHN0YWNrLiBjb250IHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgdG9rZW4gdG8gYmUKICAgIC8vIGNvbnN1bWVkLCBwYXNzIHdpbGwgbGVhdmUgaXQgZm9yIHRoZSBuZXh0IGFjdGlvbi4KICAgIGZ1bmN0aW9uIGNvbnQoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIHBhc3MoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gZmFsc2U7CiAgICB9CiAgICAvLyBVc2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICBmdW5jdGlvbiBtYXJrKHN0eWxlKXsKICAgICAgbWFya2VkID0gc3R5bGU7CiAgICB9CgogICAgLy8gUHVzaCBhIG5ldyBsZXhpY2FsIGNvbnRleHQgb2YgdGhlIGdpdmVuIHR5cGUuCiAgICBmdW5jdGlvbiBwdXNobGV4KHR5cGUsIGluZm8pIHsKICAgICAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgbGV4aWNhbCA9IG5ldyBDU2hhcnBMZXhpY2FsKGluZGVudGVkLCBjb2x1bW4sIHR5cGUsIG51bGwsIGxleGljYWwsIGluZm8pCiAgICAgIH07CiAgICAgIHJlc3VsdC5sZXggPSB0cnVlOwogICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgLy8gUG9wIG9mZiB0aGUgY3VycmVudCBsZXhpY2FsIGNvbnRleHQuCiAgICBmdW5jdGlvbiBwb3BsZXgoKXsKICAgICAgbGV4aWNhbCA9IGxleGljYWwucHJldjsKICAgIH0KICAgIHBvcGxleC5sZXggPSB0cnVlOwogICAgLy8gVGhlICdsZXgnIGZsYWcgb24gdGhlc2UgYWN0aW9ucyBpcyB1c2VkIGJ5IHRoZSAnbmV4dCcgZnVuY3Rpb24KICAgIC8vIHRvIGtub3cgdGhleSBjYW4gKGFuZCBoYXZlIHRvKSBiZSByYW4gYmVmb3JlIG1vdmluZyBvbiB0byB0aGUKICAgIC8vIG5leHQgdG9rZW4uCiAgCiAgICAvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRpc2NhcmRzIHRva2VucyB1bnRpbCBpdCBmaW5kcyBvbmUgb2YKICAgIC8vIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCl7CiAgICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodHlwZSl7CiAgICAgICAgaWYgKHR5cGUgPT0gd2FudGVkKSBjb250KCk7CiAgICAgICAgZWxzZSBjb250KGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICB9OwogICAgfQoKICAgIC8vIExvb2tzIGZvciBhIHN0YXRlbWVudCwgYW5kIHRoZW4gY2FsbHMgaXRzZWxmLgogICAgZnVuY3Rpb24gc3RhdGVtZW50cyh0eXBlKXsKICAgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBzdGF0ZW1lbnRzKTsKICAgIH0KICAgIC8vIERpc3BhdGNoZXMgdmFyaW91cyB0eXBlcyBvZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZQogICAgLy8gY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQocHVzaGxleCgidmFyZGVmIiksIHZhcmRlZjEsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGEiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGIiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IiAmJiBqc29uKSBjb250KHB1c2hsZXgoIn0iKSwgY29tbWFzZXAob2JqcHJvcCwgIn0iKSwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBibG9jaywgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZnVuY3Rpb24iKSBjb250KGZ1bmN0aW9uZGVmKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9yIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBlY3QoIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChwdXNobGV4KCJzdGF0IiksIG1heWJlbGFiZWwpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzd2l0Y2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgcHVzaGxleCgifSIsICJzd2l0Y2giKSwgZXhwZWN0KCJ7IiksIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhc2UiKSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZGVmYXVsdCIpIGNvbnQoZXhwZWN0KCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjYXRjaCIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHBlY3QoIigiKSwgZnVuYXJnLCBleHBlY3QoIikiKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICAKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2xhc3MiKSBjb250KGNsYXNzZGVmKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBkIikgY29udChzdGF0ZW1lbnQpOwogICAgICAKICAgICAgZWxzZSBwYXNzKHB1c2hsZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBEaXNwYXRjaCBleHByZXNzaW9uIHR5cGVzLgogICAgZnVuY3Rpb24gZXhwcmVzc2lvbih0eXBlKXsKICAgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpKSBjb250KG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGMiKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIl0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgfQogICAgLy8gQ2FsbGVkIGZvciBwbGFjZXMgd2hlcmUgb3BlcmF0b3JzLCBmdW5jdGlvbiBjYWxscywgb3IKICAgIC8vIHN1YnNjcmlwdHMgYXJlIHZhbGlkLiBXaWxsIHNraXAgb24gdG8gdGhlIG5leHQgYWN0aW9uIGlmIG5vbmUKICAgIC8vIGlzIGZvdW5kLgogICAgZnVuY3Rpb24gbWF5YmVvcGVyYXRvcih0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKCIpIGNvbnQocHVzaGxleCgiKSIpLCBleHByZXNzaW9uLCBjb21tYXNlcChleHByZXNzaW9uLCAiKSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICIuIikgY29udChwcm9wZXJ0eSwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICB9CiAgICAvLyBXaGVuIGEgc3RhdGVtZW50IHN0YXJ0cyB3aXRoIGEgdmFyaWFibGUgbmFtZSwgaXQgbWlnaHQgYmUgYQogICAgLy8gbGFiZWwuIElmIG5vIGNvbG9uIGZvbGxvd3MsIGl0J3MgYSByZWd1bGFyIHN0YXRlbWVudC4KICAgIGZ1bmN0aW9uIG1heWJlbGFiZWwodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICI6IikgY29udChwb3BsZXgsIHN0YXRlbWVudCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KGNvbW1hc2VwKGZ1bmFyZywgIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQpOyAvLyBtZXRob2QgZGVmaW5pdGlvbgogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwb3BsZXgsIHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxleCk7IC8vIHByb3BlcnR5IGRlZmluaXRpb24KICAgICAgZWxzZSBwYXNzKG1heWJlb3BlcmF0b3IsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOwogICAgfQogICAgLy8gUHJvcGVydHkgbmFtZXMgbmVlZCB0byBoYXZlIHRoZWlyIHN0eWxlIGFkanVzdGVkIC0tIHRoZQogICAgLy8gdG9rZW5pemVyIHRoaW5rcyB0aGV5IGFyZSB2YXJpYWJsZXMuCiAgICBmdW5jdGlvbiBwcm9wZXJ0eSh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge21hcmsoImNzaGFycC1wcm9wZXJ0eSIpOyBjb250KCk7fQogICAgfQogICAgLy8gVGhpcyBwYXJzZXMgYSBwcm9wZXJ0eSBhbmQgaXRzIHZhbHVlIGluIGFuIG9iamVjdCBsaXRlcmFsLgogICAgZnVuY3Rpb24gb2JqcHJvcCh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgbWFyaygiY3NoYXJwLXByb3BlcnR5Iik7CiAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgY29udChleHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBQYXJzZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdGhpbmdzIHRoYXQgYXJlIHJlY29nbml6ZWQKICAgIC8vIGJ5IHRoZSAnd2hhdCcgYXJndW1lbnQuCiAgICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpewogICAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSAiLCIpIGNvbnQod2hhdCwgcHJvY2VlZCk7CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBlbmQpIGNvbnQoKTsKICAgICAgICBlbHNlIGNvbnQoZXhwZWN0KGVuZCkpOwogICAgICB9OwogICAgICByZXR1cm4gZnVuY3Rpb24gY29tbWFTZXBhcmF0ZWQodHlwZSkgewogICAgICAgIGlmICh0eXBlID09IGVuZCkgY29udCgpOwogICAgICAgIGVsc2UgcGFzcyh3aGF0LCBwcm9jZWVkKTsKICAgICAgfTsKICAgIH0KICAgIC8vIExvb2sgZm9yIHN0YXRlbWVudHMgdW50aWwgYSBjbG9zaW5nIGJyYWNlIGlzIGZvdW5kLgogICAgZnVuY3Rpb24gYmxvY2sodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ9IikgY29udCgpOwogICAgICBlbHNlIHBhc3Moc3RhdGVtZW50LCBibG9jayk7CiAgICB9CiAgICAvLyBWYXJpYWJsZSBkZWZpbml0aW9ucyBhcmUgc3BsaXQgaW50byB0d28gYWN0aW9ucyAtLSAxIGxvb2tzIGZvcgogICAgLy8gYSBuYW1lIG9yIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24sIDIgbG9va3MgZm9yIGFuICc9JyBzaWduIG9yCiAgICAvLyBhIGNvbW1hLgogICAgZnVuY3Rpb24gdmFyZGVmMSh0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpe2NvbnQodmFyZGVmMik7fQogICAgICBlbHNlIGNvbnQoKTsKICAgIH0KICAgIGZ1bmN0aW9uIHZhcmRlZjIodHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gIj0iKSBjb250KGV4cHJlc3Npb24sIHZhcmRlZjIpOwogICAgICBlbHNlIGlmICh0eXBlID09ICIsIikgY29udCh2YXJkZWYxKTsKICAgIH0KICAgIC8vIEZvciBsb29wcy4KICAgIGZ1bmN0aW9uIGZvcnNwZWMxKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAidmFyIikgY29udCh2YXJkZWYxLCBmb3JzcGVjMik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIjsiKSBwYXNzKGZvcnNwZWMyKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAidmFyaWFibGUiKSBjb250KGZvcm1heWJlaW4pOwogICAgICBlbHNlIHBhc3MoZm9yc3BlYzIpOwogICAgfQogICAgZnVuY3Rpb24gZm9ybWF5YmVpbih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh2YWx1ZSA9PSAiaW4iKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGNvbnQobWF5YmVvcGVyYXRvciwgZm9yc3BlYzIpOwogICAgfQogICAgZnVuY3Rpb24gZm9yc3BlYzIodHlwZSwgdmFsdWUpewogICAgICBpZiAodHlwZSA9PSAiOyIpIGNvbnQoZm9yc3BlYzMpOwogICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiaW4iKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIGZvcnNwZWMzKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcnNwZWMzKHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gIikiKSBwYXNzKCk7CiAgICAgIGVsc2UgY29udChleHByZXNzaW9uKTsKICAgIH0KICAgIC8vIEEgZnVuY3Rpb24gZGVmaW5pdGlvbiBjcmVhdGVzIGEgbmV3IGNvbnRleHQsIGFuZCB0aGUgdmFyaWFibGVzCiAgICAvLyBpbiBpdHMgYXJndW1lbnQgbGlzdCBoYXZlIHRvIGJlIGFkZGVkIHRvIHRoaXMgY29udGV4dC4KICAgIGZ1bmN0aW9uIGZ1bmN0aW9uZGVmKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChmdW5jdGlvbmRlZik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KGNvbW1hc2VwKGZ1bmFyZywgIikiKSwgc3RhdGVtZW50KTsKICAgIH0KICAgIGZ1bmN0aW9uIGZ1bmFyZyh0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpe2NvbnQoKTt9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGNsYXNzZGVmKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSBjb250KGNsYXNzZGVmLCBzdGF0ZW1lbnQpOwogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIjoiKSBjb250KGNsYXNzZGVmLCBzdGF0ZW1lbnQpOwogICAgfQogIAogICAgcmV0dXJuIHBhcnNlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZUNTaGFycCwKICAgIGVsZWN0cmljQ2hhcnM6ICJ7fToiLAogICAgY29uZmlndXJlOiBmdW5jdGlvbihvYmopIHsKICAgICAgaWYgKG9iai5qc29uICE9IG51bGwpIGpzb24gPSBvYmouanNvbjsKICAgIH0KICB9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/js/tokenizecsharp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBDU2hhcnAgY29kZSAqLwoKdmFyIHRva2VuaXplQ1NoYXJwID0gKGZ1bmN0aW9uKCkgewogIC8vIEFkdmFuY2UgdGhlIHN0cmVhbSB1bnRpbCB0aGUgZ2l2ZW4gY2hhcmFjdGVyIChub3QgcHJlY2VkZWQgYnkgYQogIC8vIGJhY2tzbGFzaCkgaXMgZW5jb3VudGVyZWQsIG9yIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgcmVhY2hlZC4KICBmdW5jdGlvbiBuZXh0VW50aWxVbmVzY2FwZWQoc291cmNlLCBlbmQpIHsKICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICB2YXIgbmV4dDsKICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKG5leHQgPT0gZW5kICYmICFlc2NhcGVkKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgIH0KICAgIHJldHVybiBlc2NhcGVkOwogIH0KCiAgLy8gQSBtYXAgb2YgSmF2YVNjcmlwdCdzIGtleXdvcmRzLiBUaGUgYS9iL2Mga2V5d29yZCBkaXN0aW5jdGlvbiBpcwogIC8vIHZlcnkgcm91Z2gsIGJ1dCBpdCBnaXZlcyB0aGUgcGFyc2VyIGVub3VnaCBpbmZvcm1hdGlvbiB0byBwYXJzZQogIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogIC8vIGluY29ycmVjdCBjb2RlKS4gVGhlIHN0eWxlIGluZm9ybWF0aW9uIGluY2x1ZGVkIGluIHRoZXNlIG9iamVjdHMKICAvLyBpcyB1c2VkIGJ5IHRoZSBoaWdobGlnaHRlciB0byBwaWNrIHRoZSBjb3JyZWN0IENTUyBzdHlsZSBmb3IgYQogIC8vIHRva2VuLgogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiByZXN1bHQodHlwZSwgc3R5bGUpewogICAgICByZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiAiY3NoYXJwLSIgKyBzdHlsZX07CiAgICB9CiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UgYSBwYXJlbnRoaXNlZCBleHByZXNzaW9uLCBhbmQgdGhlbiBhCiAgICAvLyBzdGF0ZW1lbnQgKGlmKQogICAgdmFyIGtleXdvcmRBID0gcmVzdWx0KCJrZXl3b3JkIGEiLCAia2V5d29yZCIpOwogICAgLy8ga2V5d29yZHMgdGhhdCB0YWtlIGp1c3QgYSBzdGF0ZW1lbnQgKGVsc2UpCiAgICB2YXIga2V5d29yZEIgPSByZXN1bHQoImtleXdvcmQgYiIsICJrZXl3b3JkIik7CiAgICAvLyBrZXl3b3JkcyB0aGF0IG9wdGlvbmFsbHkgdGFrZSBhbiBleHByZXNzaW9uLCBhbmQgZm9ybSBhCiAgICAvLyBzdGF0ZW1lbnQgKHJldHVybikKICAgIHZhciBrZXl3b3JkQyA9IHJlc3VsdCgia2V5d29yZCBjIiwgImtleXdvcmQiKTsKICAgIHZhciBvcGVyYXRvciA9IHJlc3VsdCgib3BlcmF0b3IiLCAia2V5d29yZCIpOwogICAgdmFyIGF0b20gPSByZXN1bHQoImF0b20iLCAiYXRvbSIpOwogICAgLy8ganVzdCBhIGtleXdvcmQgd2l0aCBubyBpbmRlbnRhdGlvbiBpbXBsaWNhdGlvbnMKICAgIHZhciBrZXl3b3JkRCA9IHJlc3VsdCgia2V5d29yZCBkIiwgImtleXdvcmQiKTsgCiAgICAKICAgIHJldHVybiB7CiAgICAgICJpZiI6IGtleXdvcmRBLCAid2hpbGUiOiBrZXl3b3JkQSwgIndpdGgiOiBrZXl3b3JkQSwKICAgICAgImVsc2UiOiBrZXl3b3JkQiwgImRvIjoga2V5d29yZEIsICJ0cnkiOiBrZXl3b3JkQiwgImZpbmFsbHkiOiBrZXl3b3JkQiwKICAgICAgInJldHVybiI6IGtleXdvcmRDLCAiYnJlYWsiOiBrZXl3b3JkQywgImNvbnRpbnVlIjoga2V5d29yZEMsICJuZXciOiBrZXl3b3JkQywgImRlbGV0ZSI6IGtleXdvcmRDLCAidGhyb3ciOiBrZXl3b3JkQywKICAgICAgImluIjogb3BlcmF0b3IsICJ0eXBlb2YiOiBvcGVyYXRvciwgImluc3RhbmNlb2YiOiBvcGVyYXRvciwKICAgICAgInZhciI6IHJlc3VsdCgidmFyIiwgImtleXdvcmQiKSwgImZ1bmN0aW9uIjogcmVzdWx0KCJmdW5jdGlvbiIsICJrZXl3b3JkIiksICJjYXRjaCI6IHJlc3VsdCgiY2F0Y2giLCAia2V5d29yZCIpLAogICAgICAiZm9yIjogcmVzdWx0KCJmb3IiLCAia2V5d29yZCIpLCAic3dpdGNoIjogcmVzdWx0KCJzd2l0Y2giLCAia2V5d29yZCIpLAogICAgICAiY2FzZSI6IHJlc3VsdCgiY2FzZSIsICJrZXl3b3JkIiksICJkZWZhdWx0IjogcmVzdWx0KCJkZWZhdWx0IiwgImtleXdvcmQiKSwKICAgICAgInRydWUiOiBhdG9tLCAiZmFsc2UiOiBhdG9tLCAibnVsbCI6IGF0b20sCiAgICAgIAogICAgICAiY2xhc3MiOiByZXN1bHQoImNsYXNzIiwgImtleXdvcmQiKSwgIm5hbWVzcGFjZSI6IHJlc3VsdCgiY2xhc3MiLCAia2V5d29yZCIpLAogICAgICAKICAgICAgInB1YmxpYyI6IGtleXdvcmRELCAicHJpdmF0ZSI6IGtleXdvcmRELCAicHJvdGVjdGVkIjoga2V5d29yZEQsICJpbnRlcm5hbCI6IGtleXdvcmRELAogICAgICAiZXh0ZXJuIjoga2V5d29yZEQsICJvdmVycmlkZSI6IGtleXdvcmRELCAidmlydHVhbCI6IGtleXdvcmRELCAiYWJzdHJhY3QiOiBrZXl3b3JkRCwgCiAgICAgICJzdGF0aWMiOiBrZXl3b3JkRCwgIm91dCI6IGtleXdvcmRELCAicmVmIjoga2V5d29yZEQsICJjb25zdCI6IGtleXdvcmRELAogICAgICAKICAgICAgImZvcmVhY2giOiByZXN1bHQoImZvciIsICJrZXl3b3JkIiksICJ1c2luZyI6IGtleXdvcmRDLAogICAgICAKICAgICAgImludCI6IGtleXdvcmRELCAiZG91YmxlIjoga2V5d29yZEQsICJsb25nIjoga2V5d29yZEQsICJib29sIjoga2V5d29yZEQsICJjaGFyIjoga2V5d29yZEQsIAogICAgICAidm9pZCI6IGtleXdvcmRELCAic3RyaW5nIjoga2V5d29yZEQsICJieXRlIjoga2V5d29yZEQsICJzYnl0ZSI6IGtleXdvcmRELCAiZGVjaW1hbCI6IGtleXdvcmRELAogICAgICAiZmxvYXQiOiBrZXl3b3JkRCwgInVpbnQiOiBrZXl3b3JkRCwgInVsb25nIjoga2V5d29yZEQsICJvYmplY3QiOiBrZXl3b3JkRCwKICAgICAgInNob3J0Ijoga2V5d29yZEQsICJ1c2hvcnQiOiBrZXl3b3JkRCwKICAgICAgCiAgICAgICJnZXQiOiBrZXl3b3JkRCwgInNldCI6IGtleXdvcmRELCAidmFsdWUiOiBrZXl3b3JkRCAgICAgIAogICAgfTsKICB9KCk7CgogIC8vIFNvbWUgaGVscGVyIHJlZ2V4cHMKICB2YXIgaXNPcGVyYXRvckNoYXIgPSAvWytcLSomJT08PiE/fF0vOwogIHZhciBpc0hleERpZ2l0ID0gL1swLTlBLUZhLWZdLzsKICB2YXIgaXNXb3JkQ2hhciA9IC9bXHdcJF9dLzsKCiAgLy8gV3JhcHBlciBhcm91bmQganNUb2tlbiB0aGF0IGhlbHBzIG1haW50YWluIHBhcnNlciBzdGF0ZSAod2hldGhlcgogIC8vIHdlIGFyZSBpbnNpZGUgb2YgYSBtdWx0aS1saW5lIGNvbW1lbnQgYW5kIHdoZXRoZXIgdGhlIG5leHQgdG9rZW4KICAvLyBjb3VsZCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbikuCiAgZnVuY3Rpb24ganNUb2tlblN0YXRlKGluc2lkZSwgcmVnZXhwKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgbmV3SW5zaWRlID0gaW5zaWRlOwogICAgICB2YXIgdHlwZSA9IGpzVG9rZW4oaW5zaWRlLCByZWdleHAsIHNvdXJjZSwgZnVuY3Rpb24oYykge25ld0luc2lkZSA9IGM7fSk7CiAgICAgIHZhciBuZXdSZWdleHAgPSB0eXBlLnR5cGUgPT0gIm9wZXJhdG9yIiB8fCB0eXBlLnR5cGUgPT0gImtleXdvcmQgYyIgfHwgdHlwZS50eXBlLm1hdGNoKC9eW1xbe31cKCw7Ol0kLyk7CiAgICAgIGlmIChuZXdSZWdleHAgIT0gcmVnZXhwIHx8IG5ld0luc2lkZSAhPSBpbnNpZGUpCiAgICAgICAgc2V0U3RhdGUoanNUb2tlblN0YXRlKG5ld0luc2lkZSwgbmV3UmVnZXhwKSk7CiAgICAgIHJldHVybiB0eXBlOwogICAgfTsKICB9CgogIC8vIFRoZSB0b2tlbiByZWFkZXIsIGludGVkZWQgdG8gYmUgdXNlZCBieSB0aGUgdG9rZW5pemVyIGZyb20KICAvLyB0b2tlbml6ZS5qcyAodGhyb3VnaCBqc1Rva2VuU3RhdGUpLiBBZHZhbmNlcyB0aGUgc291cmNlIHN0cmVhbQogIC8vIG92ZXIgYSB0b2tlbiwgYW5kIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHR5cGUgYW5kIHN0eWxlCiAgLy8gb2YgdGhhdCB0b2tlbi4KICBmdW5jdGlvbiBqc1Rva2VuKGluc2lkZSwgcmVnZXhwLCBzb3VyY2UsIHNldEluc2lkZSkgewogICAgZnVuY3Rpb24gcmVhZEhleE51bWJlcigpewogICAgICBzb3VyY2UubmV4dCgpOyAvLyBza2lwIHRoZSAneCcKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNIZXhEaWdpdCk7CiAgICAgIHJldHVybiB7dHlwZTogIm51bWJlciIsIHN0eWxlOiAiY3NoYXJwLWF0b20ifTsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkTnVtYmVyKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICBpZiAoc291cmNlLmVxdWFscygiZSIpIHx8IHNvdXJjZS5lcXVhbHMoIkUiKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiLSIpKQogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogImNzaGFycC1hdG9tIn07CiAgICB9CiAgICAvLyBSZWFkIGEgd29yZCwgbG9vayBpdCB1cCBpbiBrZXl3b3Jkcy4gSWYgbm90IGZvdW5kLCBpdCBpcyBhCiAgICAvLyB2YXJpYWJsZSwgb3RoZXJ3aXNlIGl0IGlzIGEga2V5d29yZCBvZiB0aGUgdHlwZSBmb3VuZC4KICAgIGZ1bmN0aW9uIHJlYWRXb3JkKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgIHZhciBrbm93biA9IGtleXdvcmRzLmhhc093blByb3BlcnR5KHdvcmQpICYmIGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICByZXR1cm4ga25vd24gPyB7dHlwZToga25vd24udHlwZSwgc3R5bGU6IGtub3duLnN0eWxlLCBjb250ZW50OiB3b3JkfSA6CiAgICAgIHt0eXBlOiAidmFyaWFibGUiLCBzdHlsZTogImNzaGFycC12YXJpYWJsZSIsIGNvbnRlbnQ6IHdvcmR9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFJlZ2V4cCgpIHsKICAgICAgbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgIi8iKTsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tnaV0vKTsKICAgICAgcmV0dXJuIHt0eXBlOiAicmVnZXhwIiwgc3R5bGU6ICJjc2hhcnAtc3RyaW5nIn07CiAgICB9CiAgICAvLyBNdXRsaS1saW5lIGNvbW1lbnRzIGFyZSB0cmlja3kuIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBuZXdsaW5lcwogICAgLy8gZW1iZWRkZWQgaW4gdGhlbSBhcyByZWd1bGFyIG5ld2xpbmUgdG9rZW5zLCBhbmQgdGhlbiBjb250aW51ZQogICAgLy8gcmV0dXJuaW5nIGEgY29tbWVudCB0b2tlbiBmb3IgZXZlcnkgbGluZSBvZiB0aGUgY29tbWVudC4gU28KICAgIC8vIHNvbWUgc3RhdGUgaGFzIHRvIGJlIHNhdmVkIChpbnNpZGUpIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgYXJlCiAgICAvLyBpbnNpZGUgYSAvKiAqLyBzZXF1ZW5jZS4KICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KXsKICAgICAgdmFyIG5ld0luc2lkZSA9ICIvKiI7CiAgICAgIHZhciBtYXliZUVuZCA9IChzdGFydCA9PSAiKiIpOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICBicmVhazsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gIi8iICYmIG1heWJlRW5kKXsKICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAobmV4dCA9PSAiKiIpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJjc2hhcnAtY29tbWVudCJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9wZXJhdG9yKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc09wZXJhdG9yQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogIm9wZXJhdG9yIiwgc3R5bGU6ICJjc2hhcnAtb3BlcmF0b3IifTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlYWRTdHJpbmcocXVvdGUpIHsKICAgICAgdmFyIGVuZEJhY2tTbGFzaCA9IG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIHF1b3RlKTsKICAgICAgc2V0SW5zaWRlKGVuZEJhY2tTbGFzaCA/IHF1b3RlIDogbnVsbCk7CiAgICAgIHJldHVybiB7dHlwZTogInN0cmluZyIsIHN0eWxlOiAiY3NoYXJwLXN0cmluZyJ9OwogICAgfQoKICAgIC8vIEZldGNoIHRoZSBuZXh0IHRva2VuLiBEaXNwYXRjaGVzIG9uIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUKICAgIC8vIHN0cmVhbSwgb3IgZmlyc3QgdHdvIGNoYXJhY3RlcnMgd2hlbiB0aGUgZmlyc3QgaXMgYSBzbGFzaC4KICAgIGlmIChpbnNpZGUgPT0gIlwiIiB8fCBpbnNpZGUgPT0gIiciKQogICAgICByZXR1cm4gcmVhZFN0cmluZyhpbnNpZGUpOwogICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgIGlmIChpbnNpZGUgPT0gIi8qIikKICAgICAgcmV0dXJuIHJlYWRNdWx0aWxpbmVDb21tZW50KGNoKTsKICAgIGVsc2UgaWYgKGNoID09ICJcIiIgfHwgY2ggPT0gIiciKQogICAgICByZXR1cm4gcmVhZFN0cmluZyhjaCk7CiAgICAvLyB3aXRoIHB1bmN0dWF0aW9uLCB0aGUgdHlwZSBvZiB0aGUgdG9rZW4gaXMgdGhlIHN5bWJvbCBpdHNlbGYKICAgIGVsc2UgaWYgKC9bXFtcXXt9XChcKSw7XDpcLl0vLnRlc3QoY2gpKQogICAgICByZXR1cm4ge3R5cGU6IGNoLCBzdHlsZTogImNzaGFycC1wdW5jdHVhdGlvbiJ9OwogICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIChzb3VyY2UuZXF1YWxzKCJ4IikgfHwgc291cmNlLmVxdWFscygiWCIpKSkKICAgICAgcmV0dXJuIHJlYWRIZXhOdW1iZXIoKTsKICAgIGVsc2UgaWYgKC9bMC05XS8udGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkTnVtYmVyKCk7CiAgICBlbHNlIGlmIChjaCA9PSAiLyIpewogICAgICBpZiAoc291cmNlLmVxdWFscygiKiIpKQogICAgICB7IHNvdXJjZS5uZXh0KCk7IHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7IH0KICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygiLyIpKQogICAgICB7IG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIG51bGwpOyByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJjc2hhcnAtY29tbWVudCJ9O30KICAgICAgZWxzZSBpZiAocmVnZXhwKQogICAgICAgIHJldHVybiByZWFkUmVnZXhwKCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CiAgICB9CiAgICBlbHNlIGlmIChjaCA9PSAiIyIpIHsgIC8vIHRyZWF0IGMjIHJlZ2lvbnMgbGlrZSBjb21tZW50cwogICAgICAgIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIG51bGwpOyByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJjc2hhcnAtY29tbWVudCJ9OwogICAgfQogICAgZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIudGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIGVsc2UKICAgICAgcmV0dXJuIHJlYWRXb3JkKCk7CiAgfQoKICAvLyBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSB0b2tlbml6ZXIuCiAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwganNUb2tlblN0YXRlKGZhbHNlLCB0cnVlKSk7CiAgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/groovy/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/groovy/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KICA8aGVhZD4NCiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvY29kZW1pcnJvci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCiAgICA8dGl0bGU+Q29kZU1pcnJvcjogR3Jvb3Z5IGRlbW9uc3RyYXRpb248L3RpdGxlPg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uL2Nzcy9kb2NzLmNzcyIvPg0KICA8L2hlYWQ+DQogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+DQoNCjxwPkRlbW9uc3RyYXRpb24gb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyBHcm9vdnkgaGlnaGxpZ2h0ZXIuPC9wPg0KDQo8cD5DcmVhdGVkIGJ5IGVYbyBQbGF0Zm9ybSBTQVMgKDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbGdwbC0yLjEucGhwIj5saWNlbnNlPC9hPikuPC9wPg0KDQo8cD5Ob3RlIHRoYXQgdGhlIGZpbGVzIGZvciB0aGlzIHBhcnNlciBhcmVuJ3QgaW5jbHVkZWQgaW4gdGhlIENvZGVNaXJyb3IgcmVwb3NpdG9yeSwgYnV0IGhhdmUgdG8gZmV0Y2hlZCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnLyI+c3ZuLmV4b3BsYXRmb3JtLm9yZzwvYT46PC9wPg0KDQo8dWw+DQogPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvanMvdG9rZW5pemVncm9vdnkuanMiPnRva2VuaXplZ3Jvb3Z5LmpzPC9hPjwvbGk+DQogPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvanMvcGFyc2Vncm9vdnkuanMiPnBhcnNlZ3Jvb3Z5LmpzPC9hPjwvbGk+DQogPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvY3NzL2dyb292eWNvbG9ycy5jc3MiPmdyb292eS5jb2xvcnMuY3NzPC9hPjwvbGk+DQo8L3VsPg0KDQo8ZGl2IGNsYXNzPSJib3JkZXIiPg0KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjUwIj4NCi8vIHNpbXBsZSBncm9vdnkgc2NyaXB0DQppbXBvcnQgamF2YXgud3MucnMuUGF0aA0KaW1wb3J0IGphdmF4LndzLnJzLkdFVA0KaW1wb3J0IGphdmF4LndzLnJzLlBhdGhQYXJhbQ0KaW1wb3J0IGphdmF4LndzLnJzLlBPU1QNCg0KQFBhdGgoIi8iKQ0KcHVibGljIGNsYXNzIEhlbGxvV29ybGQgew0KICBAR0VUDQogIEBQYXRoKCJoZWxsb3dvcmxkL3tuYW1lfSIpDQogIHB1YmxpYyBTdHJpbmcgaGVsbG8oQFBhdGhQYXJhbSgibmFtZSIpIFN0cmluZyBuYW1lKSB7DQogICAgcmV0dXJuICJIZWxsbyAiICsgbmFtZQ0KICB9DQogIA0KICBAUE9TVA0KICBAUGF0aCgiaGVsbG93b3JsZC97bmFtZX0iKQ0KICBwdWJsaWMgU3RyaW5nIGhlbGxvMihAUGF0aFBhcmFtKCJuYW1lIikgU3RyaW5nIG5hbWUpIHsNCiAgICByZXR1cm4gIkhlbGxvICIgKyBuYW1lDQogIH0NCn0NCjwvdGV4dGFyZWE+DQo8L2Rpdj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7DQogICAgaGVpZ2h0OiAiNDUwcHgiLA0KICAgIHBhcnNlcmZpbGU6IFsiaHR0cDovL3N2bi5leG9wbGF0Zm9ybS5vcmcvcHJvamVjdHMvZ3d0L3RydW5rL2V4by1nd3RmcmFtZXdvcmstZWRpdG9yL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvZXhvcGxhdGZvcm0vZ3d0ZnJhbWV3b3JrL2VkaXRvci9wdWJsaWMvY29kZW1pcnJvci9qcy9wYXJzZWdyb292eS5qcyIsICJodHRwOi8vc3ZuLmV4b3BsYXRmb3JtLm9yZy9wcm9qZWN0cy9nd3QvdHJ1bmsvZXhvLWd3dGZyYW1ld29yay1lZGl0b3Ivc3JjL21haW4vcmVzb3VyY2VzL29yZy9leG9wbGF0Zm9ybS9nd3RmcmFtZXdvcmsvZWRpdG9yL3B1YmxpYy9jb2RlbWlycm9yL2pzL3Rva2VuaXplZ3Jvb3Z5LmpzIl0sDQogICAgc3R5bGVzaGVldDogImh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvY3NzL2dyb292eWNvbG9ycy5jc3MiLA0KICAgIHBhdGg6ICIuLi8uLi9qcy8iLA0KICAgIHRleHRXcmFwcGluZzogZmFsc2UNCiAgfSk7DQo8L3NjcmlwdD4NCg0KPC9ib2R5Pg0KPC9odG1sPg0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/css/luacolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4ubHVhLWNvbW1lbnQgewogIGNvbG9yOiAjQkI5OTc3Owp9CgpzcGFuLmx1YS1rZXl3b3JkIHsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogYmx1ZTsKfQoKc3Bhbi5sdWEtc3RyaW5nIHsKICBjb2xvcjogI0FBMjIyMjsKfQoKc3Bhbi5sdWEtc3RkZnVuYyB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6ICMwNzc7Cn0Kc3Bhbi5sdWEtY3VzdG9tZnVuYyB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6ICMwQUE7Cn0KCgpzcGFuLmx1YS1pZGVudGlmaWVyIHsKICBjb2xvcjogYmxhY2s7Cn0KCnNwYW4ubHVhLW51bWJlciB7CiAgY29sb3I6ICMzQTM7Cn0KCnNwYW4ubHVhLXRva2VuIHsKICBjb2xvcjogIzE1MTsKfQoKc3Bhbi5sdWEtZXJyb3IgewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICNGMDA7Cn0KCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogTHVhIGRlbW9uc3RyYXRpb248L3RpdGxlPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBwYWdlIGRlbW9uc3RyYXRlcyA8YSBocmVmPSIuLi8uLi9pbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPidzCkx1YSBwYXJzZXIuIFdyaXR0ZW4gYnkgPGEgaHJlZj0iaHR0cDovL2ZyYW5jaW8ucGwvIj5GcmFuY2lzemVrCldhd3J6YWs8L2E+LCByZWxlYXNlZCB1bmRlciBhIEJTRC1zdHlsZSA8YQpocmVmPSJMSUNFTlNFIj5saWNlbnNlPC9hPi48L3A+Cgo8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMHB4OyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+Ci0tW1sKZXhhbXBsZSB1c2VsZXNzIGNvZGUgdG8gc2hvdyBsdWEgc3ludGF4IGhpZ2hsaWdodGluZwp0aGlzIGlzIG11bHRpbGluZSBjb21tZW50Cl1dCgpmdW5jdGlvbiBibGFoYmxhaGJsYWgoeCkKCiAgbG9jYWwgdGFibGUgPSB7CiAgICAiYXNkIiA9IDEyMywKICAgICJ4IiA9IDAuMzQsICAKICB9CiAgaWYgeCB+PSAzIHRoZW4KICAgIHByaW50KCB4ICkKICBlbHNlaWYgeCA9PSAic3RyaW5nIgogICAgbXlfY3VzdG9tX2Z1bmN0aW9uKCAweDM0ICkKICBlbHNlCiAgICB1bmtub3duX2Z1bmN0aW9uKCAic29tZSBzdHJpbmciICkKICBlbmQKCiAgLS1zaW5nbGUgbGluZSBjb21tZW50CiAgCmVuZAoKZnVuY3Rpb24gYmxhYmxhYmxhMygpCgogIGZvciBrLHYgaW4gaXBhaXJzKCB0YWJsZSApIGRvCiAgICAtLWFiY2RlLi4KICAgIHk9Wz1bCiAgeD1bWwogICAgICB4IGlzIGEgbXVsdGkgbGluZSBzdHJpbmcKICAgXV0KICBidXQgaXRzIGRlZmluaXRpb24gaXMgaXNpZGUgYSBoaWdoZXN0IGxldmVsIHN0cmluZyEKICBdPV0KICAgIHByaW50KCIgXCJcIiAiKQogIC0tdGhpcyBtYXJrcyBhIHBhcnNlciBlcnJvcjoKICBzID0gWz09IGFzZGFzZGFzZF1dCgogICAgcyA9IG1hdGguc2luKCB4ICkKICBlbmQKCmVuZAo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBwYXJzZXJmaWxlOiAiLi4vY29udHJpYi9sdWEvanMvcGFyc2VsdWEuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9sdWFjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICIuLi8uLi9qcy8iCiAgfSk7Cjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/js/parselua.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogCiBTaW1wbGUgcGFyc2VyIGZvciBMVUEgCiBXcml0dGVuIGZvciBMdWEgNS4xLCBiYXNlZCBvbiBwYXJzZWNzcyBhbmQgb3RoZXIgcGFyc2Vycy4gCiBmZWF0dXJlczogaGlnaGxpZ2h0cyBrZXl3b3Jkcywgc3RyaW5ncywgY29tbWVudHMgKG5vIGxldmVsaW5nIHN1cHBvcnRlZCEgKCJbPT1bIikpLHRva2VucywgYmFzaWMgaW5kZW50aW5nCgogdG8gbWFrZSB0aGlzIHBhcnNlciBoaWdobGlnaHQgeW91ciBzcGVjaWFsIGZ1bmN0aW9ucyBwYXNzIHRhYmxlIHdpdGggdGhpcyBmdW5jdGlvbnMgbmFtZXMgdG8gcGFyc2VyQ29uZmlnIGFyZ3VtZW50IG9mIGNyZWF0b3IsCgkKIHBhcnNlckNvbmZpZzogWyJteWZ1bmN0aW9uMSIsIm15ZnVuY3Rpb24yIl0sCiAqLwoKIApmdW5jdGlvbiBmaW5kRmlyc3RSZWdleHAod29yZHMpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKCJeKD86IiArIHdvcmRzLmpvaW4oInwiKSArICIpIiwgImkiKTsKfQoKZnVuY3Rpb24gbWF0Y2hSZWdleHAod29yZHMpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKCJeKD86IiArIHdvcmRzLmpvaW4oInwiKSArICIpJCIsICJpIik7Cn0KCgogCnZhciBsdWFDdXN0b21GdW5jdGlvbnM9IG1hdGNoUmVnZXhwKFtdKTsKIApmdW5jdGlvbiBjb25maWd1cmVMVUEocGFyc2VyQ29uZmlnKXsKCWlmKHBhcnNlckNvbmZpZykKCWx1YUN1c3RvbUZ1bmN0aW9ucz0gbWF0Y2hSZWdleHAocGFyc2VyQ29uZmlnKTsKfQoKCi8vbG9uZyBsaXN0IG9mIHN0YW5kYXJkIGZ1bmN0aW9ucyBmcm9tIGx1YSBtYW51YWwKdmFyIGx1YVN0ZEZ1bmN0aW9ucyA9IG1hdGNoUmVnZXhwKFsKIl9HIiwiX1ZFUlNJT04iLCJhc3NlcnQiLCJjb2xsZWN0Z2FyYmFnZSIsImRvZmlsZSIsImVycm9yIiwiZ2V0ZmVudiIsImdldG1ldGF0YWJsZSIsImlwYWlycyIsImxvYWQiLCJsb2FkZmlsZSIsImxvYWRzdHJpbmciLCJtb2R1bGUiLCJuZXh0IiwicGFpcnMiLCJwY2FsbCIsInByaW50IiwicmF3ZXF1YWwiLCJyYXdnZXQiLCJyYXdzZXQiLCJyZXF1aXJlIiwic2VsZWN0Iiwic2V0ZmVudiIsInNldG1ldGF0YWJsZSIsInRvbnVtYmVyIiwidG9zdHJpbmciLCJ0eXBlIiwidW5wYWNrIiwieHBjYWxsIiwKCiJjb3JvdXRpbmUuY3JlYXRlIiwiY29yb3V0aW5lLnJlc3VtZSIsImNvcm91dGluZS5ydW5uaW5nIiwiY29yb3V0aW5lLnN0YXR1cyIsImNvcm91dGluZS53cmFwIiwiY29yb3V0aW5lLnlpZWxkIiwKCiJkZWJ1Zy5kZWJ1ZyIsImRlYnVnLmdldGZlbnYiLCJkZWJ1Zy5nZXRob29rIiwiZGVidWcuZ2V0aW5mbyIsImRlYnVnLmdldGxvY2FsIiwiZGVidWcuZ2V0bWV0YXRhYmxlIiwiZGVidWcuZ2V0cmVnaXN0cnkiLCJkZWJ1Zy5nZXR1cHZhbHVlIiwiZGVidWcuc2V0ZmVudiIsImRlYnVnLnNldGhvb2siLCJkZWJ1Zy5zZXRsb2NhbCIsImRlYnVnLnNldG1ldGF0YWJsZSIsImRlYnVnLnNldHVwdmFsdWUiLCJkZWJ1Zy50cmFjZWJhY2siLAoKImNsb3NlIiwiZmx1c2giLCJsaW5lcyIsInJlYWQiLCJzZWVrIiwic2V0dmJ1ZiIsIndyaXRlIiwKCiJpby5jbG9zZSIsImlvLmZsdXNoIiwiaW8uaW5wdXQiLCJpby5saW5lcyIsImlvLm9wZW4iLCJpby5vdXRwdXQiLCJpby5wb3BlbiIsImlvLnJlYWQiLCJpby5zdGRlcnIiLCJpby5zdGRpbiIsImlvLnN0ZG91dCIsImlvLnRtcGZpbGUiLCJpby50eXBlIiwiaW8ud3JpdGUiLAoKIm1hdGguYWJzIiwibWF0aC5hY29zIiwibWF0aC5hc2luIiwibWF0aC5hdGFuIiwibWF0aC5hdGFuMiIsIm1hdGguY2VpbCIsIm1hdGguY29zIiwibWF0aC5jb3NoIiwibWF0aC5kZWciLCJtYXRoLmV4cCIsIm1hdGguZmxvb3IiLCJtYXRoLmZtb2QiLCJtYXRoLmZyZXhwIiwibWF0aC5odWdlIiwibWF0aC5sZGV4cCIsIm1hdGgubG9nIiwibWF0aC5sb2cxMCIsIm1hdGgubWF4IiwibWF0aC5taW4iLCJtYXRoLm1vZGYiLCJtYXRoLnBpIiwibWF0aC5wb3ciLCJtYXRoLnJhZCIsIm1hdGgucmFuZG9tIiwibWF0aC5yYW5kb21zZWVkIiwibWF0aC5zaW4iLCJtYXRoLnNpbmgiLCJtYXRoLnNxcnQiLCJtYXRoLnRhbiIsIm1hdGgudGFuaCIsCgoib3MuY2xvY2siLCJvcy5kYXRlIiwib3MuZGlmZnRpbWUiLCJvcy5leGVjdXRlIiwib3MuZXhpdCIsIm9zLmdldGVudiIsIm9zLnJlbW92ZSIsIm9zLnJlbmFtZSIsIm9zLnNldGxvY2FsZSIsIm9zLnRpbWUiLCJvcy50bXBuYW1lIiwKCiJwYWNrYWdlLmNwYXRoIiwicGFja2FnZS5sb2FkZWQiLCJwYWNrYWdlLmxvYWRlcnMiLCJwYWNrYWdlLmxvYWRsaWIiLCJwYWNrYWdlLnBhdGgiLCJwYWNrYWdlLnByZWxvYWQiLCJwYWNrYWdlLnNlZWFsbCIsCgoic3RyaW5nLmJ5dGUiLCJzdHJpbmcuY2hhciIsInN0cmluZy5kdW1wIiwic3RyaW5nLmZpbmQiLCJzdHJpbmcuZm9ybWF0Iiwic3RyaW5nLmdtYXRjaCIsInN0cmluZy5nc3ViIiwic3RyaW5nLmxlbiIsInN0cmluZy5sb3dlciIsInN0cmluZy5tYXRjaCIsInN0cmluZy5yZXAiLCJzdHJpbmcucmV2ZXJzZSIsInN0cmluZy5zdWIiLCJzdHJpbmcudXBwZXIiLAoKInRhYmxlLmNvbmNhdCIsInRhYmxlLmluc2VydCIsInRhYmxlLm1heG4iLCJ0YWJsZS5yZW1vdmUiLCJ0YWJsZS5zb3J0IgpdKTsKCgoKIHZhciBsdWFLZXl3b3JkcyA9IG1hdGNoUmVnZXhwKFsiYW5kIiwiYnJlYWsiLCJlbHNlaWYiLCJmYWxzZSIsIm5pbCIsIm5vdCIsIm9yIiwicmV0dXJuIiwKCQkJCSJ0cnVlIiwiZnVuY3Rpb24iLCAiZW5kIiwgImlmIiwgInRoZW4iLCAiZWxzZSIsICJkbyIsIAoJCQkJIndoaWxlIiwgInJlcGVhdCIsICJ1bnRpbCIsICJmb3IiLCAiaW4iLCAibG9jYWwiIF0pOwoKIHZhciBsdWFJbmRlbnRLZXlzID0gbWF0Y2hSZWdleHAoWyJmdW5jdGlvbiIsICJpZiIsInJlcGVhdCIsImZvciIsIndoaWxlIiwgIltcKF0iLCAieyJdKTsKIHZhciBsdWFVbmluZGVudEtleXMgPSBtYXRjaFJlZ2V4cChbImVuZCIsICJ1bnRpbCIsICJbXCldIiwgIn0iXSk7CgogdmFyIGx1YVVuaW5kZW50S2V5czIgPSBmaW5kRmlyc3RSZWdleHAoWyJlbmQiLCAidW50aWwiLCAiW1wpXSIsICJ9Il0pOwogdmFyIGx1YU1pZGRsZUtleXMgPSBmaW5kRmlyc3RSZWdleHAoWyJlbHNlIiwiZWxzZWlmIl0pOwoKCgp2YXIgTFVBUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICB2YXIgdG9rZW5pemVMVUEgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwoKICAgaWYgKGNoID09ICItIiAmJiBzb3VyY2UuZXF1YWxzKCItIikpIHsKICAgICAgICBzb3VyY2UubmV4dCgpOwogCQlzZXRTdGF0ZShpblNMQ29tbWVudCk7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gCgllbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikgewogICAgICAgIHNldFN0YXRlKGluU3RyaW5nKGNoKSk7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIGlmIChjaCA9PSAiWyIgJiYgKHNvdXJjZS5lcXVhbHMoIlsiKSB8fCBzb3VyY2UuZXF1YWxzKCI9IikpKSB7CiAgICAgICAgdmFyIGxldmVsID0gMDsKCQl3aGlsZShzb3VyY2UuZXF1YWxzKCI9IikpewoJCQlsZXZlbCArKzsKCQkJc291cmNlLm5leHQoKTsKCQl9CgkJaWYoISBzb3VyY2UuZXF1YWxzKCJbIikgKQoJCQlyZXR1cm4gImx1YS1lcnJvciI7CQkKCQlzZXRTdGF0ZShpbk1MU29tZXRoaW5nKGxldmVsLCJsdWEtc3RyaW5nIikpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9IAoJICAgIAogICAgICBlbHNlIGlmIChjaCA9PSAiPSIpIHsKCWlmIChzb3VyY2UuZXF1YWxzKCI9IikpCgkJc291cmNlLm5leHQoKTsKICAgICAgICByZXR1cm4gImx1YS10b2tlbiI7CiAgICAgIH0KICAJCiAgICAgIGVsc2UgaWYgKGNoID09ICIuIikgewoJaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSkKCQlzb3VyY2UubmV4dCgpOwoJaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSkKCQlzb3VyY2UubmV4dCgpOwogICAgICAgIHJldHVybiAibHVhLXRva2VuIjsKICAgICAgfQogICAgIAogICAgICBlbHNlIGlmIChjaCA9PSAiKyIgfHwgY2ggPT0gIi0iIHx8IGNoID09ICIqIiB8fCBjaCA9PSAiLyIgfHwgY2ggPT0gIiUiIHx8IGNoID09ICJeIiB8fCBjaCA9PSAiIyIgKSB7CiAgICAgICAgcmV0dXJuICJsdWEtdG9rZW4iOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICI+IiB8fCBjaCA9PSAiPCIgfHwgY2ggPT0gIigiIHx8IGNoID09ICIpIiB8fCBjaCA9PSAieyIgfHwgY2ggPT0gIn0iIHx8IGNoID09ICJbIiApIHsKICAgICAgICByZXR1cm4gImx1YS10b2tlbiI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIl0iIHx8IGNoID09ICI7IiB8fCBjaCA9PSAiOiIgfHwgY2ggPT0gIiwiKSB7CiAgICAgICAgcmV0dXJuICJsdWEtdG9rZW4iOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHNvdXJjZS5lcXVhbHMoIj0iKSAmJiAoY2ggPT0gIn4iIHx8IGNoID09ICI8IiB8fCBjaCA9PSAiPiIpKSB7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICByZXR1cm4gImx1YS10b2tlbiI7CiAgICAgIH0KCiAgICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHcuJV0vKTsKICAgICAgICByZXR1cm4gImx1YS1udW1iZXIiOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcXFwtXy5dLyk7CiAgICAgICAgcmV0dXJuICJsdWEtaWRlbnRpZmllciI7CiAgICAgIH0KICAgIH0KIApmdW5jdGlvbiBpblNMQ29tbWVudChzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBzdGFydCA9IHRydWU7Cgl2YXIgY291bnQ9MDsKICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKCSAJdmFyIGNoID0gc291cmNlLm5leHQoKTsKCQl2YXIgbGV2ZWwgPSAwOwoJCWlmICgoY2ggPT0iWyIpICYmIHN0YXJ0KXsKCQkJd2hpbGUoc291cmNlLmVxdWFscygiPSIpKXsKCQkJc291cmNlLm5leHQoKTsKCQkJbGV2ZWwrKzsKCQkJfQoJCQlpZiAoc291cmNlLmVxdWFscygiWyIpKXsKICAgICAgIAkJCQlzZXRTdGF0ZShpbk1MU29tZXRoaW5nKGxldmVsLCJsdWEtY29tbWVudCIpKTsKICAgICAgICAJCQlyZXR1cm4gbnVsbDsKICAJCQkJfQoJCSB9CgkJIHN0YXJ0ID0gZmFsc2U7CQoJfQoJc2V0U3RhdGUobm9ybWFsKTsgICAgICAJCQogICAgIHJldHVybiAibHVhLWNvbW1lbnQiOwoJCiAgICB9CgogICAgZnVuY3Rpb24gaW5NTFNvbWV0aGluZyhsZXZlbCx3aGF0KSB7CgkvL3dhdCBzaG9sdWQgYmUgImx1YS1zdHJpbmciIG9yICJsdWEtY29tbWVudCIsIGxldmVsIGlzIHRoZSBudW1iZXIgb2YgIj0iIGluIG9wZW5pbmcgbWFyay4KCXJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKXsKICAgICAgdmFyIGRhc2hlcyA9IDA7CiAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoZGFzaGVzID09IGxldmVsKzEgJiYgY2ggPT0gIl0iICkgewogICAgICAgICAgc2V0U3RhdGUobm9ybWFsKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCQlpZiAoZGFzaGVzID09IDApIAoJCQlkYXNoZXMgPSAoY2ggPT0gIl0iKSA/IDE6MDsKCQllbHNlCiAJCQlkYXNoZXMgPSAoY2ggPT0gIj0iKSA/IGRhc2hlcyArIDEgOiAwOwogICAgICAgIH0KICAgICAgcmV0dXJuIHdoYXQ7CgkgfQogICAgfQoKCiAgICBmdW5jdGlvbiBpblN0cmluZyhxdW90ZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBpZiAoY2ggPT0gcXVvdGUgJiYgIWVzY2FwZWQpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIGNoID09ICJcXCI7CiAgICAgICAgfQogICAgICAgIGlmICghZXNjYXBlZCkKICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgcmV0dXJuICJsdWEtc3RyaW5nIjsKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IG5vcm1hbCk7CiAgICB9OwogIH0pKCk7CgogIGZ1bmN0aW9uIGluZGVudExVQShpbmRlbnREZXB0aCwgYmFzZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycykgewoKICAgICAgdmFyIGNsb3NpbmcgPSAobHVhVW5pbmRlbnRLZXlzMi50ZXN0KG5leHRDaGFycykgfHwgbHVhTWlkZGxlS2V5cy50ZXN0KG5leHRDaGFycykpOwoKIAkKCXJldHVybiBiYXNlICsgKCBpbmRlbnRVbml0ICogKGluZGVudERlcHRoIC0gKGNsb3Npbmc/MTowKSkgKTsKICAgIH07CiAgfQoKICAKZnVuY3Rpb24gcGFyc2VMVUEoc291cmNlLGJhc2Vjb2x1bW4pIHsKICAgICBiYXNlY29sdW1uID0gYmFzZWNvbHVtbiB8fCAwOwogICAgCgl2YXIgdG9rZW5zID0gdG9rZW5pemVMVUEoc291cmNlKTsKICAgIHZhciBpbmRlbnREZXB0aCA9IDA7CgogICAgdmFyIGl0ZXIgPSB7CiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciB0b2tlbiA9IHRva2Vucy5uZXh0KCksIHN0eWxlID0gdG9rZW4uc3R5bGUsIGNvbnRlbnQgPSB0b2tlbi5jb250ZW50OwoKIAoJCglpZiAoc3R5bGUgPT0gImx1YS1pZGVudGlmaWVyIiAmJiBsdWFLZXl3b3Jkcy50ZXN0KGNvbnRlbnQpKXsKCSAgdG9rZW4uc3R5bGUgPSAibHVhLWtleXdvcmQiOwoJfQkKCWlmIChzdHlsZSA9PSAibHVhLWlkZW50aWZpZXIiICYmIGx1YVN0ZEZ1bmN0aW9ucy50ZXN0KGNvbnRlbnQpKXsKCSAgdG9rZW4uc3R5bGUgPSAibHVhLXN0ZGZ1bmMiOwoJfQoJaWYgKHN0eWxlID09ICJsdWEtaWRlbnRpZmllciIgJiYgbHVhQ3VzdG9tRnVuY3Rpb25zLnRlc3QoY29udGVudCkpewoJICB0b2tlbi5zdHlsZSA9ICJsdWEtY3VzdG9tZnVuYyI7Cgl9CgoJaWYgKGx1YUluZGVudEtleXMudGVzdChjb250ZW50KSkKICAgIAlpbmRlbnREZXB0aCsrOwoJZWxzZSBpZiAobHVhVW5pbmRlbnRLZXlzLnRlc3QoY29udGVudCkpCgkJaW5kZW50RGVwdGgtLTsKICAgICAgICAKCiAgICAgICAgaWYgKGNvbnRlbnQgPT0gIlxuIikKICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50TFVBKCBpbmRlbnREZXB0aCwgYmFzZWNvbHVtbik7CgogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfSwKCiAgICAgIGNvcHk6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciAgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGUsIF9pbmRlbnREZXB0aCA9IGluZGVudERlcHRoOwogICAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UpIHsKICAgICAgICAgIHRva2VucyA9IHRva2VuaXplTFVBKHNvdXJjZSwgX3Rva2VuU3RhdGUpOwogICAgICAKCSAgaW5kZW50RGVwdGggPSBfaW5kZW50RGVwdGg7CiAgICAgICAgICByZXR1cm4gaXRlcjsKICAgICAgICB9OwogICAgICB9CiAgICB9OwogICAgcmV0dXJuIGl0ZXI7CiAgfQoKICByZXR1cm4ge21ha2U6IHBhcnNlTFVBLCBjb25maWd1cmU6Y29uZmlndXJlTFVBLCBlbGVjdHJpY0NoYXJzOiAiZGVsZn0pIn07ICAgLy9lbltkXSBlbHNbZV0gdW50aVtsXSBlbHNlaVtmXSAgLy8gdGhpcyBzaG91bGQgYmUgdGFrZW4gZnJvbSBLZXlzIGtleXdvcmRzCn0pKCk7Cgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA5LCBGcmFuY2lzemVrIFdhd3J6YWsKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgZm9yIHVzZSBpbiBjb25uZWN0aW9uIHdpdGggdGhlCkNvZGVNaXJyb3Igc3VpdGUgb2YgbW9kdWxlcyBhbmQgdXRpbGl0aWVzLCBob3N0ZWQgYW5kIG1haW50YWluZWQKYXQgaHR0cDovL2NvZGVtaXJyb3IubmV0Ly4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQpmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgoKKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCiAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQogIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoKKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCiAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQogIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcgogIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkNPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCkNBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVApMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTgpBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/css/ometacolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uanMtcHVuY3R1YXRpb24gewogIGNvbG9yOiAjNjY2NjY2Owp9CgpzcGFuLmpzLW9wZXJhdG9yIHsKICBjb2xvcjogI0UxNTcwRjsKfQoKc3Bhbi5qcy1rZXl3b3JkIHsKICBjb2xvcjogIzc3MDA4ODsKfQoKc3Bhbi5qcy1hdG9tIHsKICBjb2xvcjogIzIyODgxMTsKfQoKc3Bhbi5qcy12YXJpYWJsZSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLXZhcmlhYmxlZGVmIHsKICBjb2xvcjogIzAwMDBGRjsKfQoKc3Bhbi5qcy1sb2NhbHZhcmlhYmxlIHsKICBjb2xvcjogIzAwNDQ5OTsKfQoKc3Bhbi5qcy1wcm9wZXJ0eSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLmpzLXN0cmluZyB7CiAgY29sb3I6ICNBQTIyMjI7Cn0KCnNwYW4ub21ldGEtYmluZGluZyB7CiAgY29sb3I6ICNGRjAwMDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPiAKICA8aGVhZD4gCiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvY29kZW1pcnJvci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4gCiAgICA8dGl0bGU+Q29kZU1pcnJvcjogT21ldGFKUyBkZW1vbnN0cmF0aW9uPC90aXRsZT4gCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4gCiAgPC9oZWFkPiAKICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPiAKCjxwPlRoaXMgcGFnZSBkZW1vbnN0cmF0ZXMgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyA8YQogICAgICBocmVmPSJodHRwOi8vd3d3LnRpbmxpenppZS5vcmcvb21ldGEiPk9tZXRhSlM8L2E+IHBhcnNlci48L3A+Cgo8cD5BZGFwdGVkIGZyb20gdGhlIG9mZmljaWFsIEphdmFzY3JpcHQgcGFyc2VyIGJ5IEVyaWMgS0VESkkKICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVyaWMua2VkamlAZ21haWwuY29tIj5lcmljLmtlZGppQGdtYWlsLmNvbTwvYT4mZ3Q7LjwvcD4KCjxkaXYgY2xhc3M9ImJvcmRlciI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+Ci8vIFNvdXJjZTogaHR0cDovL3d3dy50aW5saXp6aWUub3JnL29tZXRhLWpzLyNMaXNwCi8vIEluc3BpcmVkIGJ5IE1jQ2FydGh5J3MgbWV0YS1jaXJjdWxhciBsaXNwCgpvbWV0YSBMaXNwIHsKICBldiAgICAgPSBzdHJpbmc6YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gc2VsZi5lbnZbYV0KICAgICAgICAgfCBbI2xhbWJkYSA6ZnMgOmJvZHldICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gWyNsYW1iZGEsIGZzLCBib2R5XQogICAgICAgICB8IFsjcXVvdGUgIDphbnNdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBhbnMKICAgICAgICAgfCBbI2NvbmQgICBldkNvbmQ6YW5zXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gYW5zCiAgICAgICAgIHwgW2V2OmYgICAgZXYqOnhzXSAgICAgYXBwKGYsIHhzKTphbnMgICAgICAgICAgICAgIC0+IGFucywKCiAgZXZDb25kID0gY29uZEYqIGNvbmRUOmFucyBhbnl0aGluZyogICAgICAgICAgICAgICAgICAgICAgIC0+IHgsCiAgY29uZFQgID0gW2V2OnggP3ggZXY6YW5zXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IGFucywKICBjb25kRiAgPSB+Y29uZFQgYW55dGhpbmcsCgogIGFwcCAgICA9ICNjYXIgICAgICAgICAgICAgICAgW1s6aGQgYW55dGhpbmcqXV0gICAgICAgICAgICAtPiBoZAogICAgICAgICB8ICNjZHIgICAgICAgICAgICAgICAgW1s6aGQgYW55dGhpbmcqOnRsXV0gICAgICAgICAtPiB0bAogICAgICAgICB8ICNjb25zICAgICAgICAgICAgICAgWzpoZCA6dGxdICAgICAgICAgICAgICAgICAgICAtPiBbaGRdLmNvbmNhdCh0bCkKICAgICAgICAgfCAjYXRvbSAgICAgICAgICAgICAgIFs6eF0gICAgICAgICAgICAgICAgICAgICAgICAgLT4gKCEoeCBpbnN0YW5jZW9mIEFycmF5KSkKICAgICAgICAgfCAjZXEgICAgICAgICAgICAgICAgIFs6eCA6eV0gICAgICAgICAgICAgICAgICAgICAgLT4gKHggPT0geSkKICAgICAgICAgfCBbI2xhbWJkYSA6ZnMgOmJvZHldIDphcmdzCiAgICAgICAgICAgICBlbnRlciBiaW5kKGZzLCBhcmdzKSBldihib2R5KTphbnMgbGVhdmUgICAgICAgIC0+IGFucywKICBlbnRlciAgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gKHNlbGYuZW52ID0gc2VsZi5lbnYuZGVsZWdhdGVkKHtfcDogc2VsZi5lbnZ9KSksCiAgYmluZCAgID0gW10gICAgICAgICAgICAgICAgW10KICAgICAgICAgfCBbOmYgYW55dGhpbmcqOmZzXSBbOmEgYW55dGhpbmcqOmFzXSBiaW5kKGZzLCBhcykgLT4gKHNlbGYuZW52W2ZdID0gYSksCiAgbGVhdmUgID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IChzZWxmLmVudiA9IHNlbGYuZW52Ll9wKQp9Ckxpc3AuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkgeyB0aGlzLmVudiA9IHtjYXI6ICJjYXIiLCBjZHI6ICJjZHIiLCBjb25zOiAiY29ucyIsIGF0b206ICJhdG9tIiwgZXE6ICJlcSIsIG5pbDogbnVsbCwgVDogIlQifSB9Cmxpc3BFdmFsID0gZnVuY3Rpb24oeCkgeyByZXR1cm4gTGlzcC5tYXRjaCh4LCAiZXYiKSB9CgpsaXNwRXZhbChbYHF1b3RlLCBbMSwgMiwgM11dKQpsaXNwRXZhbChbYGNhciwgW2BxdW90ZSwgWzEsIDIsIDNdXV0pCmxpc3BFdmFsKFtgY2RyLCBbYHF1b3RlLCBbMSwgMiwgM11dXSkKbGlzcEV2YWwoW2Bjb25zLCBbYHF1b3RlLCBgeF0sIFtgcXVvdGUsIGB5XV0pCmxpc3BFdmFsKFtgZXEsIFtgcXVvdGUsIGB4XSwgW2BxdW90ZSwgYHhdXSkKbGlzcEV2YWwoW1tgbGFtYmRhLCBbYHhdLCBbYGNvbnMsIGB4LCBgeF1dLCBbYHF1b3RlLCBgYm9vXV0pCjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKiAgdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKTsKICB2YXIgZWRpdG9yID0gbmV3IE1pcnJvckZyYW1lKENvZGVNaXJyb3IucmVwbGFjZSh0ZXh0YXJlYSksIHsKICAgIGhlaWdodDogIjM1MHB4IiwKICAgIGNvbnRlbnQ6IHRleHRhcmVhLnZhbHVlLAogICAgcGFyc2VyZmlsZTogWyJ0b2tlbml6ZW9tZXRhLmpzIiwgInBhcnNlb21ldGEuanMiXSwKICAgIHN0eWxlc2hlZXQ6ICJjc3Mvb21ldGFjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iLAogICAgYXV0b01hdGNoUGFyZW5zOiB0cnVlCiAgfSk7CiovCiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgaGVpZ2h0OiAiNDUwcHgiLAogICAgcGFyc2VyZmlsZTogWyIuLi9jb250cmliL29tZXRhL2pzL3Rva2VuaXplb21ldGEuanMiLAogICAgICAiLi4vY29udHJpYi9vbWV0YS9qcy9wYXJzZW9tZXRhLmpzIl0sCiAgICBzdHlsZXNoZWV0OiAiY3NzL29tZXRhY29sb3JzLmNzcyIsCiAgICBwYXRoOiAiLi4vLi4vanMvIiwKICAgIHRleHRXcmFwcGluZzogZmFsc2UKICB9KTsKPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/js/parseometa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUGFyc2UgZnVuY3Rpb24gZm9yIEphdmFTY3JpcHQuIE1ha2VzIHVzZSBvZiB0aGUgdG9rZW5pemVyIGZyb20KICogdG9rZW5pemVqYXZhc2NyaXB0LmpzLiBOb3RlIHRoYXQgeW91ciBwYXJzZXJzIGRvIG5vdCBoYXZlIHRvIGJlCiAqIHRoaXMgY29tcGxpY2F0ZWQgLS0gaWYgeW91IGRvbid0IHdhbnQgdG8gcmVjb2duaXplIGxvY2FsIHZhcmlhYmxlcywKICogaW4gbWFueSBsYW5ndWFnZXMgaXQgaXMgZW5vdWdoIHRvIGp1c3QgbG9vayBmb3IgYnJhY2VzLCBzZW1pY29sb25zLAogKiBwYXJlbnRoZXNlcywgZXRjLCBhbmQga25vdyB3aGVuIHlvdSBhcmUgaW5zaWRlIGEgc3RyaW5nIG9yIGNvbW1lbnQuCiAqCiAqIFNlZSBtYW51YWwuaHRtbCBmb3IgbW9yZSBpbmZvIGFib3V0IHRoZSBwYXJzZXIgaW50ZXJmYWNlLgogKi8KCnZhciBKU1BhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgLy8gVG9rZW4gdHlwZXMgdGhhdCBjYW4gYmUgY29uc2lkZXJlZCB0byBiZSBhdG9tcy4KICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0cnVlLCAibnVtYmVyIjogdHJ1ZSwgInZhcmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJyZWdleHAiOiB0cnVlfTsKICAvLyBTZXR0aW5nIHRoYXQgY2FuIGJlIHVzZWQgdG8gaGF2ZSBKU09OIGRhdGEgaW5kZW50IHByb3Blcmx5LgogIHZhciBqc29uID0gZmFsc2U7CiAgLy8gQ29uc3RydWN0b3IgZm9yIHRoZSBsZXhpY2FsIGNvbnRleHQgb2JqZWN0cy4KICBmdW5jdGlvbiBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgndmFyZGVmJywgJ3N0YXQnIChzdGF0ZW1lbnQpLCAnZm9ybScgKHNwZWNpYWwgZm9ybSksICdbJywgJ3snLCBvciAnKCcpCiAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgLy8gJ1snLCAneycsIG9yICcoJyBibG9ja3MgdGhhdCBoYXZlIGFueSB0ZXh0IGFmdGVyIHRoZWlyIG9wZW5pbmcKICAgIC8vIGNoYXJhY3RlciBhcmUgc2FpZCB0byBiZSAnYWxpZ25lZCcgLS0gYW55IGxpbmVzIGJlbG93IGFyZQogICAgLy8gaW5kZW50ZWQgYWxsIHRoZSB3YXkgdG8gdGhlIG9wZW5pbmcgY2hhcmFjdGVyLgogICAgaWYgKGFsaWduICE9IG51bGwpCiAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjsKICAgIC8vIFBhcmVudCBzY29wZSwgaWYgYW55LgogICAgdGhpcy5wcmV2ID0gcHJldjsKICAgIHRoaXMuaW5mbyA9IGluZm87CiAgfQoKICAvLyBNeSBmYXZvdXJpdGUgSmF2YVNjcmlwdCBpbmRlbnRhdGlvbiBydWxlcy4KICBmdW5jdGlvbiBpbmRlbnRKUyhsZXhpY2FsKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZmlyc3RDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gZmlyc3RDaGFycyAmJiBmaXJzdENoYXJzLmNoYXJBdCgwKSwgdHlwZSA9IGxleGljYWwudHlwZTsKICAgICAgdmFyIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyA0OwogICAgICBlbHNlIGlmICh0eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IiB8fCB0eXBlID09ICJmb3JtIikKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuaW5mbyA9PSAic3dpdGNoIiAmJiAhY2xvc2luZykKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArICgvXig/OmNhc2V8ZGVmYXVsdClcYi8udGVzdChmaXJzdENoYXJzKSA/IGluZGVudFVuaXQgOiAyICogaW5kZW50VW5pdCk7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuYWxpZ24pCiAgICAgICAgcmV0dXJuIGxleGljYWwuY29sdW1uIC0gKGNsb3NpbmcgPyAxIDogMCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfTsKICB9CgogIC8vIFRoZSBwYXJzZXItaXRlcmF0b3ItcHJvZHVjaW5nIGZ1bmN0aW9uIGl0c2VsZi4KICBmdW5jdGlvbiBwYXJzZUpTKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplSmF2YVNjcmlwdChpbnB1dCk7CiAgICAvLyBUaGUgcGFyc2VyIHN0YXRlLiBjYyBpcyBhIHN0YWNrIG9mIGFjdGlvbnMgdGhhdCBoYXZlIHRvIGJlCiAgICAvLyBwZXJmb3JtZWQgdG8gZmluaXNoIHRoZSBjdXJyZW50IHN0YXRlbWVudC4gRm9yIGV4YW1wbGUgd2UgbWlnaHQKICAgIC8vIGtub3cgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGZpbmQgYSBjbG9zaW5nIHBhcmVudGhlc2lzIGFuZCBhCiAgICAvLyBzZW1pY29sb24uIEFjdGlvbnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RhY2sgZ28gZmlyc3QuIEl0IGlzCiAgICAvLyBpbml0aWFsaXplZCB3aXRoIGFuIGluZmluaXRlbHkgbG9vcGluZyBhY3Rpb24gdGhhdCBjb25zdW1lcwogICAgLy8gd2hvbGUgc3RhdGVtZW50cy4KICAgIHZhciBjYyA9IFtqc29uID8gZXhwcmVzc2lvbnMgOiBzdGF0ZW1lbnRzXTsKICAgIC8vIENvbnRleHQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbG9jYWwgc2NvcGUsIHRoZQogICAgLy8gdmFyaWFibGVzIGRlZmluZWQgaW4gdGhhdCwgYW5kIHRoZSBzY29wZXMgYWJvdmUgaXQuCiAgICB2YXIgY29udGV4dCA9IG51bGw7CiAgICAvLyBUaGUgbGV4aWNhbCBzY29wZSwgdXNlZCBtb3N0bHkgZm9yIGluZGVudGF0aW9uLgogICAgdmFyIGxleGljYWwgPSBuZXcgSlNMZXhpY2FsKChiYXNlY29sdW1uIHx8IDApIC0gaW5kZW50VW5pdCwgMCwgImJsb2NrIiwgZmFsc2UpOwogICAgLy8gQ3VycmVudCBjb2x1bW4sIGFuZCB0aGUgaW5kZW50YXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50CiAgICAvLyBsaW5lLiBVc2VkIHRvIGNyZWF0ZSBsZXhpY2FsIHNjb3BlIG9iamVjdHMuCiAgICB2YXIgY29sdW1uID0gMDsKICAgIHZhciBpbmRlbnRlZCA9IDA7CiAgICAvLyBWYXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgYnkgdGhlIG1hcmssIGNvbnQsIGFuZCBwYXNzIGZ1bmN0aW9ucwogICAgLy8gYmVsb3cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZHJpdmVyIGxvb3AgaW4gdGhlICduZXh0JwogICAgLy8gZnVuY3Rpb24uCiAgICB2YXIgY29uc3VtZSwgbWFya2VkOwogIAogICAgLy8gVGhlIGl0ZXJhdG9yIG9iamVjdC4KICAgIHZhciBwYXJzZXIgPSB7bmV4dDogbmV4dCwgY29weTogY29weX07CgogICAgZnVuY3Rpb24gbmV4dCgpewogICAgICAvLyBTdGFydCBieSBwZXJmb3JtaW5nIGFueSAnbGV4aWNhbCcgYWN0aW9ucyAoYWRqdXN0aW5nIHRoZQogICAgICAvLyBsZXhpY2FsIHZhcmlhYmxlKSwgb3IgdGhlIG9wZXJhdGlvbnMgYmVsb3cgd2lsbCBiZSB3b3JraW5nCiAgICAgIC8vIHdpdGggdGhlIHdyb25nIGxleGljYWwgc3RhdGUuCiAgICAgIHdoaWxlKGNjW2NjLmxlbmd0aCAtIDFdLmxleCkKICAgICAgICBjYy5wb3AoKSgpOwoKICAgICAgLy8gRmV0Y2ggYSB0b2tlbi4KICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKCiAgICAgIC8vIEFkanVzdCBjb2x1bW4gYW5kIGluZGVudGVkLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgJiYgY29sdW1uID09IDApCiAgICAgICAgaW5kZW50ZWQgPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGNvbHVtbiArPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpewogICAgICAgIGluZGVudGVkID0gY29sdW1uID0gMDsKICAgICAgICAvLyBJZiB0aGUgbGV4aWNhbCBzY29wZSdzIGFsaWduIHByb3BlcnR5IGlzIHN0aWxsIHVuZGVmaW5lZCBhdAogICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxpbmUsIGl0IGlzIGFuIHVuLWFsaWduZWQgc2NvcGUuCiAgICAgICAgaWYgKCEoImFsaWduIiBpbiBsZXhpY2FsKSkKICAgICAgICAgIGxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAvLyBOZXdsaW5lIHRva2VucyBnZXQgYW4gaW5kZW50YXRpb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgLy8gdGhlbS4KICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudEpTKGxleGljYWwpOwogICAgICAgIC8vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIG11bHRpbGluZSBzdHJpbmdzOiBrZWVwIGV2ZXJ5dGhpbmcgaW4gdGhlIGZpcnN0CiAgICAgICAgLy8gY29sdW1uLCBhcyBzcGFjZXMgYXQgdGhlIHN0YXJ0IG9mIGEgbXVsdGlsaW5lIHN0cmluZyBhcmUgc2lnbmlmaWNhbnQKICAgICAgICBpZiAobGV4aWNhbC5pbmZvID09ICJtdWx0aWxpbmVTdHJpbmciKSB7CiAgICAgICAgICBsZXhpY2FsLmFsaWduID0gZmFsc2U7CiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIE5vIG1vcmUgcHJvY2Vzc2luZyBmb3IgbWVhbmluZ2xlc3MgdG9rZW5zLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAiY29tbWVudCIpCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBUYWtlIG5vdGUgd2hlbiBhIG11bHRpbGluZSBzdHJpbmcgaXMgZm91bmQsIHNvIGFzIHRvCiAgICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgaW5kZW50YXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgbGluZQogICAgICAvLyAoc2VlIGFib3ZlLCBsaW5lIDk1KQogICAgICBpZiAodG9rZW4udHlwZSA9PSAibXVsdGlsaW5lU3RyaW5nIikKICAgICAgICBsZXhpY2FsLmluZm8gPSAnbXVsdGlsaW5lU3RyaW5nJzsKICAgICAgLy8gV2hlbiBhIG1lYW5pbmdmdWwgdG9rZW4gaXMgZm91bmQgYW5kIHRoZSBsZXhpY2FsIHNjb3BlJ3MKICAgICAgLy8gYWxpZ24gaXMgdW5kZWZpbmVkLCBpdCBpcyBhbiBhbGlnbmVkIHNjb3BlLgogICAgICBpZiAoISgiYWxpZ24iIGluIGxleGljYWwpKQogICAgICAgIGxleGljYWwuYWxpZ24gPSB0cnVlOwoKICAgICAgLy8gRXhlY3V0ZSBhY3Rpb25zIHVudGlsIG9uZSAnY29uc3VtZXMnIHRoZSB0b2tlbiBhbmQgd2UgY2FuCiAgICAgIC8vIHJldHVybiBpdC4KICAgICAgd2hpbGUodHJ1ZSkgewogICAgICAgIGNvbnN1bWUgPSBtYXJrZWQgPSBmYWxzZTsKICAgICAgICAvLyBUYWtlIGFuZCBleGVjdXRlIHRoZSB0b3Btb3N0IGFjdGlvbi4KICAgICAgICBjYy5wb3AoKSh0b2tlbi50eXBlLCB0b2tlbi5jb250ZW50KTsKICAgICAgICBpZiAoY29uc3VtZSl7CiAgICAgICAgICAvLyBNYXJrZWQgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICAgICAgICAgaWYgKG1hcmtlZCkKICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSBtYXJrZWQ7CiAgICAgICAgICAvLyBIZXJlIHdlIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2NhbCBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4KICAgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT0gInZhcmlhYmxlIiAmJiBpblNjb3BlKHRva2VuLmNvbnRlbnQpKQogICAgICAgICAgICB0b2tlbi5zdHlsZSA9ICJqcy1sb2NhbHZhcmlhYmxlIjsKICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBUaGlzIG1ha2VzIGEgY29weSBvZiB0aGUgcGFyc2VyIHN0YXRlLiBJdCBzdG9yZXMgYWxsIHRoZQogICAgLy8gc3RhdGVmdWwgdmFyaWFibGVzIGluIGEgY2xvc3VyZSwgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0CiAgICAvLyB3aWxsIHJlc3RvcmUgdGhlbSB3aGVuIGNhbGxlZCB3aXRoIGEgbmV3IGlucHV0IHN0cmVhbS4gTm90ZQogICAgLy8gdGhhdCB0aGUgY2MgYXJyYXkgaGFzIHRvIGJlIGNvcGllZCwgYmVjYXVzZSBpdCBpcyBjb250YW50bHkKICAgIC8vIGJlaW5nIG1vZGlmaWVkLiBMZXhpY2FsIG9iamVjdHMgYXJlIG5vdCBtdXRhdGVkLCBhbmQgY29udGV4dAogICAgLy8gb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQgaW4gYSBoYXJtZnVsIHdheSwgc28gdGhleSBjYW4gYmUgc2hhcmVkCiAgICAvLyBiZXR3ZWVuIHJ1bnMgb2YgdGhlIHBhcnNlci4KICAgIGZ1bmN0aW9uIGNvcHkoKXsKICAgICAgdmFyIF9jb250ZXh0ID0gY29udGV4dCwgX2xleGljYWwgPSBsZXhpY2FsLCBfY2MgPSBjYy5jb25jYXQoW10pLCBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZTsKICAKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvcHlQYXJzZXIoaW5wdXQpewogICAgICAgIGNvbnRleHQgPSBfY29udGV4dDsKICAgICAgICBsZXhpY2FsID0gX2xleGljYWw7CiAgICAgICAgY2MgPSBfY2MuY29uY2F0KFtdKTsgLy8gY29waWVzIHRoZSBhcnJheQogICAgICAgIGNvbHVtbiA9IGluZGVudGVkID0gMDsKICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZUphdmFTY3JpcHQoaW5wdXQsIF90b2tlblN0YXRlKTsKICAgICAgICByZXR1cm4gcGFyc2VyOwogICAgICB9OwogICAgfQoKICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHVzaGluZyBhIG51bWJlciBvZiBhY3Rpb25zIG9udG8gdGhlIGNjCiAgICAvLyBzdGFjayBpbiByZXZlcnNlIG9yZGVyLgogICAgZnVuY3Rpb24gcHVzaChmcyl7CiAgICAgIGZvciAodmFyIGkgPSBmcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkKICAgICAgICBjYy5wdXNoKGZzW2ldKTsKICAgIH0KICAgIC8vIGNvbnQgYW5kIHBhc3MgYXJlIHVzZWQgYnkgdGhlIGFjdGlvbiBmdW5jdGlvbnMgdG8gYWRkIG90aGVyCiAgICAvLyBhY3Rpb25zIHRvIHRoZSBzdGFjay4gY29udCB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IHRva2VuIHRvIGJlCiAgICAvLyBjb25zdW1lZCwgcGFzcyB3aWxsIGxlYXZlIGl0IGZvciB0aGUgbmV4dCBhY3Rpb24uCiAgICBmdW5jdGlvbiBjb250KCl7CiAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgY29uc3VtZSA9IHRydWU7CiAgICB9CiAgICBmdW5jdGlvbiBwYXNzKCl7CiAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgY29uc3VtZSA9IGZhbHNlOwogICAgfQogICAgLy8gVXNlZCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICAgZnVuY3Rpb24gbWFyayhzdHlsZSl7CiAgICAgIG1hcmtlZCA9IHN0eWxlOwogICAgfQoKICAgIC8vIFB1c2ggYSBuZXcgc2NvcGUuIFdpbGwgYXV0b21hdGljYWxseSBsaW5rIHRoZSBjdXJyZW50IHNjb3BlLgogICAgZnVuY3Rpb24gcHVzaGNvbnRleHQoKXsKICAgICAgY29udGV4dCA9IHtwcmV2OiBjb250ZXh0LCB2YXJzOiB7InRoaXMiOiB0cnVlLCAiYXJndW1lbnRzIjogdHJ1ZX19OwogICAgfQogICAgLy8gUG9wIG9mZiB0aGUgY3VycmVudCBzY29wZS4KICAgIGZ1bmN0aW9uIHBvcGNvbnRleHQoKXsKICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgIH0KICAgIC8vIFJlZ2lzdGVyIGEgdmFyaWFibGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCiAgICBmdW5jdGlvbiByZWdpc3Rlcih2YXJuYW1lKXsKICAgICAgaWYgKGNvbnRleHQpewogICAgICAgIG1hcmsoImpzLXZhcmlhYmxlZGVmIik7CiAgICAgICAgY29udGV4dC52YXJzW3Zhcm5hbWVdID0gdHJ1ZTsKICAgICAgfQogICAgfQogICAgLy8gQ2hlY2sgd2hldGhlciBhIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCiAgICBmdW5jdGlvbiBpblNjb3BlKHZhcm5hbWUpewogICAgICB2YXIgY3Vyc29yID0gY29udGV4dDsKICAgICAgd2hpbGUgKGN1cnNvcikgewogICAgICAgIGlmIChjdXJzb3IudmFyc1t2YXJuYW1lXSkKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGN1cnNvciA9IGN1cnNvci5wcmV2OwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAKICAgIC8vIFB1c2ggYSBuZXcgbGV4aWNhbCBjb250ZXh0IG9mIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gcHVzaGxleCh0eXBlLCBpbmZvKSB7CiAgICAgIHZhciByZXN1bHQgPSBmdW5jdGlvbigpewogICAgICAgIGxleGljYWwgPSBuZXcgSlNMZXhpY2FsKGluZGVudGVkLCBjb2x1bW4sIHR5cGUsIG51bGwsIGxleGljYWwsIGluZm8pCiAgICAgIH07CiAgICAgIHJlc3VsdC5sZXggPSB0cnVlOwogICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgLy8gUG9wIG9mZiB0aGUgY3VycmVudCBsZXhpY2FsIGNvbnRleHQuCiAgICBmdW5jdGlvbiBwb3BsZXgoKXsKICAgICAgbGV4aWNhbCA9IGxleGljYWwucHJldjsKICAgIH0KICAgIHBvcGxleC5sZXggPSB0cnVlOwogICAgLy8gVGhlICdsZXgnIGZsYWcgb24gdGhlc2UgYWN0aW9ucyBpcyB1c2VkIGJ5IHRoZSAnbmV4dCcgZnVuY3Rpb24KICAgIC8vIHRvIGtub3cgdGhleSBjYW4gKGFuZCBoYXZlIHRvKSBiZSByYW4gYmVmb3JlIG1vdmluZyBvbiB0byB0aGUKICAgIC8vIG5leHQgdG9rZW4uCiAgCiAgICAvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRpc2NhcmRzIHRva2VucyB1bnRpbCBpdCBmaW5kcyBvbmUgb2YKICAgIC8vIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCl7CiAgICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodHlwZSl7CiAgICAgICAgaWYgKHR5cGUgPT0gd2FudGVkKSBjb250KCk7CiAgICAgICAgZWxzZSBjb250KGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICB9OwogICAgfQoKICAgIC8vIExvb2tzIGZvciBhIHN0YXRlbWVudCwgYW5kIHRoZW4gY2FsbHMgaXRzZWxmLgogICAgZnVuY3Rpb24gc3RhdGVtZW50cyh0eXBlKXsKICAgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBzdGF0ZW1lbnRzKTsKICAgIH0KICAgIGZ1bmN0aW9uIGV4cHJlc3Npb25zKHR5cGUpewogICAgICByZXR1cm4gcGFzcyhleHByZXNzaW9uLCBleHByZXNzaW9ucyk7CiAgICB9CiAgICAvLyBEaXNwYXRjaGVzIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUKICAgIC8vIGN1cnJlbnQgdG9rZW4uCiAgICBmdW5jdGlvbiBzdGF0ZW1lbnQodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXIiKSBjb250KHB1c2hsZXgoInZhcmRlZiIpLCB2YXJkZWYxLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBhIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBiIikgY29udChwdXNobGV4KCJmb3JtIiksIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBibG9jaywgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZnVuY3Rpb24iKSBjb250KGZ1bmN0aW9uZGVmKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9yIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBlY3QoIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChwdXNobGV4KCJzdGF0IiksIG1heWJlbGFiZWwpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzd2l0Y2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgcHVzaGxleCgifSIsICJzd2l0Y2giKSwgZXhwZWN0KCJ7IiksIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhc2UiKSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZGVmYXVsdCIpIGNvbnQoZXhwZWN0KCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjYXRjaCIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBwdXNoY29udGV4dCwgZXhwZWN0KCIoIiksIGZ1bmFyZywgZXhwZWN0KCIpIiksIHN0YXRlbWVudCwgcG9wbGV4LCBwb3Bjb250ZXh0KTsKICAgICAgZWxzZSBwYXNzKHB1c2hsZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBEaXNwYXRjaCBleHByZXNzaW9uIHR5cGVzLgogICAgZnVuY3Rpb24gZXhwcmVzc2lvbih0eXBlKXsKICAgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpKSBjb250KG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGMiKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIl0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGNvbnQoKTsKICAgIH0KICAgIC8vIENhbGxlZCBmb3IgcGxhY2VzIHdoZXJlIG9wZXJhdG9ycywgZnVuY3Rpb24gY2FsbHMsIG9yCiAgICAvLyBzdWJzY3JpcHRzIGFyZSB2YWxpZC4gV2lsbCBza2lwIG9uIHRvIHRoZSBuZXh0IGFjdGlvbiBpZiBub25lCiAgICAvLyBpcyBmb3VuZC4KICAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3IodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIikiKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLiIpIGNvbnQocHJvcGVydHksIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJbIikgY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiXSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgfQogICAgLy8gV2hlbiBhIHN0YXRlbWVudCBzdGFydHMgd2l0aCBhIHZhcmlhYmxlIG5hbWUsIGl0IG1pZ2h0IGJlIGEKICAgIC8vIGxhYmVsLiBJZiBubyBjb2xvbiBmb2xsb3dzLCBpdCdzIGEgcmVndWxhciBzdGF0ZW1lbnQuCiAgICBmdW5jdGlvbiBtYXliZWxhYmVsKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAiOiIpIGNvbnQocG9wbGV4LCBzdGF0ZW1lbnQpOwogICAgICBlbHNlIHBhc3MobWF5YmVvcGVyYXRvciwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBQcm9wZXJ0eSBuYW1lcyBuZWVkIHRvIGhhdmUgdGhlaXIgc3R5bGUgYWRqdXN0ZWQgLS0gdGhlCiAgICAvLyB0b2tlbml6ZXIgdGhpbmtzIHRoZXkgYXJlIHZhcmlhYmxlcy4KICAgIGZ1bmN0aW9uIHByb3BlcnR5KHR5cGUpewogICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7bWFyaygianMtcHJvcGVydHkiKTsgY29udCgpO30KICAgIH0KICAgIC8vIFRoaXMgcGFyc2VzIGEgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBpbiBhbiBvYmplY3QgbGl0ZXJhbC4KICAgIGZ1bmN0aW9uIG9ianByb3AodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIG1hcmsoImpzLXByb3BlcnR5Iik7CiAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgY29udChleHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBQYXJzZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdGhpbmdzIHRoYXQgYXJlIHJlY29nbml6ZWQKICAgIC8vIGJ5IHRoZSAnd2hhdCcgYXJndW1lbnQuCiAgICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpewogICAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSAiLCIpIGNvbnQod2hhdCwgcHJvY2VlZCk7CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBlbmQpIGNvbnQoKTsKICAgICAgICBlbHNlIGNvbnQoZXhwZWN0KGVuZCkpOwogICAgICB9CiAgICAgIHJldHVybiBmdW5jdGlvbiBjb21tYVNlcGFyYXRlZCh0eXBlKSB7CiAgICAgICAgaWYgKHR5cGUgPT0gZW5kKSBjb250KCk7CiAgICAgICAgZWxzZSBwYXNzKHdoYXQsIHByb2NlZWQpOwogICAgICB9OwogICAgfQogICAgLy8gTG9vayBmb3Igc3RhdGVtZW50cyB1bnRpbCBhIGNsb3NpbmcgYnJhY2UgaXMgZm91bmQuCiAgICBmdW5jdGlvbiBibG9jayh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gIn0iKSBjb250KCk7CiAgICAgIGVsc2UgcGFzcyhzdGF0ZW1lbnQsIGJsb2NrKTsKICAgIH0KICAgIC8vIFZhcmlhYmxlIGRlZmluaXRpb25zIGFyZSBzcGxpdCBpbnRvIHR3byBhY3Rpb25zIC0tIDEgbG9va3MgZm9yCiAgICAvLyBhIG5hbWUgb3IgdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiwgMiBsb29rcyBmb3IgYW4gJz0nIHNpZ24gb3IKICAgIC8vIGEgY29tbWEuCiAgICBmdW5jdGlvbiB2YXJkZWYxKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KHZhcmRlZjIpO30KICAgICAgZWxzZSBjb250KCk7CiAgICB9CiAgICBmdW5jdGlvbiB2YXJkZWYyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHZhbHVlID09ICI9IikgY29udChleHByZXNzaW9uLCB2YXJkZWYyKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLCIpIGNvbnQodmFyZGVmMSk7CiAgICB9CiAgICAvLyBGb3IgbG9vcHMuCiAgICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQodmFyZGVmMSwgZm9yc3BlYzIpOwogICAgICBlbHNlIGlmICh0eXBlID09ICI7IikgcGFzcyhmb3JzcGVjMik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChmb3JtYXliZWluKTsKICAgICAgZWxzZSBwYXNzKGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1heWJlaW4odHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gIjsiKSBjb250KGZvcnNwZWMzKTsKICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMyk7CiAgICB9CiAgICBmdW5jdGlvbiBmb3JzcGVjMyh0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICIpIikgcGFzcygpOwogICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBBIGZ1bmN0aW9uIGRlZmluaXRpb24gY3JlYXRlcyBhIG5ldyBjb250ZXh0LCBhbmQgdGhlIHZhcmlhYmxlcwogICAgLy8gaW4gaXRzIGFyZ3VtZW50IGxpc3QgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGlzIGNvbnRleHQuCiAgICBmdW5jdGlvbiBmdW5jdGlvbmRlZih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpe3JlZ2lzdGVyKHZhbHVlKTsgY29udChmdW5jdGlvbmRlZik7fQogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNoY29udGV4dCwgY29tbWFzZXAoZnVuYXJnLCAiKSIpLCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOwogICAgfQogICAgZnVuY3Rpb24gZnVuYXJnKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KCk7fQogICAgfQogIAogICAgcmV0dXJuIHBhcnNlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZUpTLAogICAgZWxlY3RyaWNDaGFyczogInt9OiIsCiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKG9iaikgewogICAgICBpZiAob2JqLmpzb24gIT0gbnVsbCkganNvbiA9IG9iai5qc29uOwogICAgfQogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/js/tokenizeometa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBKYXZhU2NyaXB0IGNvZGUgKi8KCnZhciB0b2tlbml6ZUphdmFTY3JpcHQgPSAoZnVuY3Rpb24oKSB7CiAgLy8gQWR2YW5jZSB0aGUgc3RyZWFtIHVudGlsIHRoZSBnaXZlbiBjaGFyYWN0ZXIgKG5vdCBwcmVjZWRlZCBieSBhCiAgLy8gYmFja3NsYXNoKSBpcyBlbmNvdW50ZXJlZCwgb3IgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyByZWFjaGVkLgogIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgdmFyIGVzY2FwZWQgPSBmYWxzZTsKICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKG5leHQgPT0gZW5kICYmICFlc2NhcGVkKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgIH0KICAgIHJldHVybiBlc2NhcGVkOwogIH0KCiAgLy8gQSBtYXAgb2YgSmF2YVNjcmlwdCdzIGtleXdvcmRzLiBUaGUgYS9iL2Mga2V5d29yZCBkaXN0aW5jdGlvbiBpcwogIC8vIHZlcnkgcm91Z2gsIGJ1dCBpdCBnaXZlcyB0aGUgcGFyc2VyIGVub3VnaCBpbmZvcm1hdGlvbiB0byBwYXJzZQogIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogIC8vIGluY29ycmVjdCBjb2RlKS4gVGhlIHN0eWxlIGluZm9ybWF0aW9uIGluY2x1ZGVkIGluIHRoZXNlIG9iamVjdHMKICAvLyBpcyB1c2VkIGJ5IHRoZSBoaWdobGlnaHRlciB0byBwaWNrIHRoZSBjb3JyZWN0IENTUyBzdHlsZSBmb3IgYQogIC8vIHRva2VuLgogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiByZXN1bHQodHlwZSwgc3R5bGUpewogICAgICByZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiAianMtIiArIHN0eWxlfTsKICAgIH0KICAgIC8vIGtleXdvcmRzIHRoYXQgdGFrZSBhIHBhcmVudGhpc2VkIGV4cHJlc3Npb24sIGFuZCB0aGVuIGEKICAgIC8vIHN0YXRlbWVudCAoaWYpCiAgICB2YXIga2V5d29yZEEgPSByZXN1bHQoImtleXdvcmQgYSIsICJrZXl3b3JkIik7CiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UganVzdCBhIHN0YXRlbWVudCAoZWxzZSkKICAgIHZhciBrZXl3b3JkQiA9IHJlc3VsdCgia2V5d29yZCBiIiwgImtleXdvcmQiKTsKICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEKICAgIC8vIHN0YXRlbWVudCAocmV0dXJuKQogICAgdmFyIGtleXdvcmRDID0gcmVzdWx0KCJrZXl3b3JkIGMiLCAia2V5d29yZCIpOwogICAgdmFyIG9wZXJhdG9yID0gcmVzdWx0KCJvcGVyYXRvciIsICJrZXl3b3JkIik7CiAgICB2YXIgYXRvbSA9IHJlc3VsdCgiYXRvbSIsICJhdG9tIik7CiAgICByZXR1cm4gewogICAgICAiaWYiOiBrZXl3b3JkQSwgIndoaWxlIjoga2V5d29yZEEsICJ3aXRoIjoga2V5d29yZEEsCiAgICAgICJlbHNlIjoga2V5d29yZEIsICJkbyI6IGtleXdvcmRCLCAidHJ5Ijoga2V5d29yZEIsICJmaW5hbGx5Ijoga2V5d29yZEIsCiAgICAgICJyZXR1cm4iOiBrZXl3b3JkQywgImJyZWFrIjoga2V5d29yZEMsICJjb250aW51ZSI6IGtleXdvcmRDLCAibmV3Ijoga2V5d29yZEMsICJkZWxldGUiOiBrZXl3b3JkQywgInRocm93Ijoga2V5d29yZEMsCiAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjogb3BlcmF0b3IsICJpbnN0YW5jZW9mIjogb3BlcmF0b3IsCiAgICAgICJ2YXIiOiByZXN1bHQoInZhciIsICJrZXl3b3JkIiksICJmdW5jdGlvbiI6IHJlc3VsdCgiZnVuY3Rpb24iLCAia2V5d29yZCIpLCAiY2F0Y2giOiByZXN1bHQoImNhdGNoIiwgImtleXdvcmQiKSwKICAgICAgImZvciI6IHJlc3VsdCgiZm9yIiwgImtleXdvcmQiKSwgInN3aXRjaCI6IHJlc3VsdCgic3dpdGNoIiwgImtleXdvcmQiKSwKICAgICAgImNhc2UiOiByZXN1bHQoImNhc2UiLCAia2V5d29yZCIpLCAiZGVmYXVsdCI6IHJlc3VsdCgiZGVmYXVsdCIsICJrZXl3b3JkIiksCiAgICAgICJ0cnVlIjogYXRvbSwgImZhbHNlIjogYXRvbSwgIm51bGwiOiBhdG9tLCAidW5kZWZpbmVkIjogYXRvbSwgIk5hTiI6IGF0b20sICJJbmZpbml0eSI6IGF0b20sCiAgICAgICJvbWV0YSI6IGtleXdvcmRCCiAgICB9OwogIH0oKTsKCiAgLy8gU29tZSBoZWxwZXIgcmVnZXhwcwogIHZhciBpc09wZXJhdG9yQ2hhciA9IC9bK1wtKiYlPTw+IT98fl0vOwogIHZhciBpc0hleERpZ2l0ID0gL1swLTlBLUZhLWZdLzsKICB2YXIgaXNXb3JkQ2hhciA9IC9bXHdcJF9dLzsKCiAgLy8gV3JhcHBlciBhcm91bmQganNUb2tlbiB0aGF0IGhlbHBzIG1haW50YWluIHBhcnNlciBzdGF0ZSAod2hldGhlcgogIC8vIHdlIGFyZSBpbnNpZGUgb2YgYSBtdWx0aS1saW5lIGNvbW1lbnQgYW5kIHdoZXRoZXIgdGhlIG5leHQgdG9rZW4KICAvLyBjb3VsZCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbikuCiAgZnVuY3Rpb24ganNUb2tlblN0YXRlKGluc2lkZSwgcmVnZXhwKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgbmV3SW5zaWRlID0gaW5zaWRlOwogICAgICB2YXIgdHlwZSA9IGpzVG9rZW4oaW5zaWRlLCByZWdleHAsIHNvdXJjZSwgZnVuY3Rpb24oYykge25ld0luc2lkZSA9IGM7fSk7CiAgICAgIHZhciBuZXdSZWdleHAgPSB0eXBlLnR5cGUgPT0gIm9wZXJhdG9yIiB8fCB0eXBlLnR5cGUgPT0gImtleXdvcmQgYyIgfHwgdHlwZS50eXBlLm1hdGNoKC9eW1xbe31cKCw7Ol0kLyk7CiAgICAgIGlmIChuZXdSZWdleHAgIT0gcmVnZXhwIHx8IG5ld0luc2lkZSAhPSBpbnNpZGUpCiAgICAgICAgc2V0U3RhdGUoanNUb2tlblN0YXRlKG5ld0luc2lkZSwgbmV3UmVnZXhwKSk7CiAgICAgIHJldHVybiB0eXBlOwogICAgfTsKICB9CgogIC8vIFRoZSB0b2tlbiByZWFkZXIsIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIHRva2VuaXplciBmcm9tCiAgLy8gdG9rZW5pemUuanMgKHRocm91Z2gganNUb2tlblN0YXRlKS4gQWR2YW5jZXMgdGhlIHNvdXJjZSBzdHJlYW0KICAvLyBvdmVyIGEgdG9rZW4sIGFuZCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB0eXBlIGFuZCBzdHlsZQogIC8vIG9mIHRoYXQgdG9rZW4uCiAgZnVuY3Rpb24ganNUb2tlbihpbnNpZGUsIHJlZ2V4cCwgc291cmNlLCBzZXRJbnNpZGUpIHsKICAgIGZ1bmN0aW9uIHJlYWRIZXhOdW1iZXIoKXsKICAgICAgc291cmNlLm5leHQoKTsgLy8gc2tpcCB0aGUgJ3gnCiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzSGV4RGlnaXQpOwogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogImpzLWF0b20ifTsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkTnVtYmVyKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICBpZiAoc291cmNlLmVxdWFscygiZSIpIHx8IHNvdXJjZS5lcXVhbHMoIkUiKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiLSIpKQogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogImpzLWF0b20ifTsKICAgIH0KICAgIC8vIFJlYWQgYSB3b3JkLCBsb29rIGl0IHVwIGluIGtleXdvcmRzLiBJZiBub3QgZm91bmQsIGl0IGlzIGEKICAgIC8vIHZhcmlhYmxlLCBvdGhlcndpc2UgaXQgaXMgYSBrZXl3b3JkIG9mIHRoZSB0eXBlIGZvdW5kLgogICAgZnVuY3Rpb24gcmVhZFdvcmQoKSB7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzV29yZENoYXIpOwogICAgICB2YXIgd29yZCA9IHNvdXJjZS5nZXQoKTsKICAgICAgdmFyIGtub3duID0ga2V5d29yZHMuaGFzT3duUHJvcGVydHkod29yZCkgJiYga2V5d29yZHMucHJvcGVydHlJc0VudW1lcmFibGUod29yZCkgJiYga2V5d29yZHNbd29yZF07CiAgICAgIHJldHVybiBrbm93biA/IHt0eXBlOiBrbm93bi50eXBlLCBzdHlsZToga25vd24uc3R5bGUsIGNvbnRlbnQ6IHdvcmR9IDoKICAgICAge3R5cGU6ICJ2YXJpYWJsZSIsIHN0eWxlOiAianMtdmFyaWFibGUiLCBjb250ZW50OiB3b3JkfTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlYWRSZWdleHAoKSB7CiAgICAgIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsICIvIik7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bZ2ldLyk7CiAgICAgIHJldHVybiB7dHlwZTogInJlZ2V4cCIsIHN0eWxlOiAianMtc3RyaW5nIn07CiAgICB9CiAgICAvLyBNdXRsaS1saW5lIGNvbW1lbnRzIGFyZSB0cmlja3kuIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBuZXdsaW5lcwogICAgLy8gZW1iZWRkZWQgaW4gdGhlbSBhcyByZWd1bGFyIG5ld2xpbmUgdG9rZW5zLCBhbmQgdGhlbiBjb250aW51ZQogICAgLy8gcmV0dXJuaW5nIGEgY29tbWVudCB0b2tlbiBmb3IgZXZlcnkgbGluZSBvZiB0aGUgY29tbWVudC4gU28KICAgIC8vIHNvbWUgc3RhdGUgaGFzIHRvIGJlIHNhdmVkIChpbnNpZGUpIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgYXJlCiAgICAvLyBpbnNpZGUgYSAvKiAqLyBzZXF1ZW5jZS4KICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KXsKICAgICAgdmFyIG5ld0luc2lkZSA9ICIvKiI7CiAgICAgIHZhciBtYXliZUVuZCA9IChzdGFydCA9PSAiKiIpOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICBicmVhazsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gIi8iICYmIG1heWJlRW5kKXsKICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAobmV4dCA9PSAiKiIpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJqcy1jb21tZW50In07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkTXVsdGlsaW5lU3RyaW5nKHN0YXJ0LCBxdW90ZXMpIHsKICAgICAgdmFyIG5ld0luc2lkZSA9IHF1b3RlczsKICAgICAgdmFyIHF1b3RlID0gcXVvdGVzLmNoYXJBdCgwKTsKICAgICAgdmFyIG1heWJlRW5kID0gKHN0YXJ0ID09IHF1b3RlKTsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgYnJlYWs7CiAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgIGlmIChuZXh0ID09IHF1b3RlICYmIHNvdXJjZS5wZWVrKCkgPT0gcXVvdGUgJiYgbWF5YmVFbmQpIHsKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBuZXdJbnNpZGUgPSBudWxsOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIG1heWJlRW5kID0gKG5leHQgPT0gcXVvdGUpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJtdWx0aWxpbmVTdHJpbmciLCBzdHlsZTogImpzLXN0cmluZyJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9wZXJhdG9yKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc09wZXJhdG9yQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogIm9wZXJhdG9yIiwgc3R5bGU6ICJqcy1vcGVyYXRvciJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFN0cmluZyhxdW90ZSkgewogICAgICB2YXIgZW5kQmFja1NsYXNoID0gbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgcXVvdGUpOwogICAgICBzZXRJbnNpZGUoZW5kQmFja1NsYXNoID8gcXVvdGUgOiBudWxsKTsKICAgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJqcy1zdHJpbmcifTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlYWRPbWV0YUlkZW50aWZpZXJTdHJpbmcoKSB7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzV29yZENoYXIpOwogICAgICByZXR1cm4ge3R5cGU6ICJzdHJpbmciLCBzdHlsZTogImpzLXN0cmluZyJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9tZXRhQmluZGluZygpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNXb3JkQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogInZhcmlhYmxlIiwgc3R5bGU6ICJvbWV0YS1iaW5kaW5nIn07CiAgICB9CgogICAgLy8gRmV0Y2ggdGhlIG5leHQgdG9rZW4uIERpc3BhdGNoZXMgb24gZmlyc3QgY2hhcmFjdGVyIGluIHRoZQogICAgLy8gc3RyZWFtLCBvciBmaXJzdCB0d28gY2hhcmFjdGVycyB3aGVuIHRoZSBmaXJzdCBpcyBhIHNsYXNoLgogICAgaWYgKGluc2lkZSA9PSAiXCIiIHx8IGluc2lkZSA9PSAiJyIpCiAgICAgIHJldHVybiByZWFkU3RyaW5nKGluc2lkZSk7CiAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgaWYgKGluc2lkZSA9PSAiLyoiKQogICAgICByZXR1cm4gcmVhZE11bHRpbGluZUNvbW1lbnQoY2gpOwogICAgaWYgKGluc2lkZSA9PSAnIiIiJyB8fCBpbnNpZGUgPT0gIicnJyIpCiAgICAgIHJldHVybiByZWFkTXVsdGlsaW5lU3RyaW5nKGNoLCBpbnNpZGUpOwogICAgaWYgKGNoID09ICciJyAmJiBzb3VyY2UubG9va0FoZWFkKCciIicsIHRydWUpIHx8IGNoID09ICInIiAmJiBzb3VyY2UubG9va0FoZWFkKCInJyIsIHRydWUpKQogICAgICByZXR1cm4gcmVhZE11bHRpbGluZVN0cmluZygnLScsIGNoK2NoK2NoKTsgLy8gd29yayBhcyBmYXIgYXMgJy0nIGlzIG5vdCAnIicgbm9yICInIgogICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIpCiAgICAgIHJldHVybiByZWFkU3RyaW5nKGNoKTsKICAgIGVsc2UgaWYgKGNoID09ICJgIiB8fCBjaCA9PSAiIyIgKQogICAgICByZXR1cm4gcmVhZE9tZXRhSWRlbnRpZmllclN0cmluZygpOwogICAgZWxzZSBpZiAoY2ggPT0gJzonICYmIGlzV29yZENoYXIudGVzdChzb3VyY2UucGVlaygpKSkgCiAgICAgIHJldHVybiByZWFkT21ldGFCaW5kaW5nKCk7CiAgICAvLyB3aXRoIHB1bmN0dWF0aW9uLCB0aGUgdHlwZSBvZiB0aGUgdG9rZW4gaXMgdGhlIHN5bWJvbCBpdHNlbGYKICAgIGVsc2UgaWYgKC9bXFtcXXt9XChcKSw7XDpcLl0vLnRlc3QoY2gpKQogICAgICByZXR1cm4ge3R5cGU6IGNoLCBzdHlsZTogImpzLXB1bmN0dWF0aW9uIn07CiAgICBlbHNlIGlmIChjaCA9PSAiMCIgJiYgKHNvdXJjZS5lcXVhbHMoIngiKSB8fCBzb3VyY2UuZXF1YWxzKCJYIikpKQogICAgICByZXR1cm4gcmVhZEhleE51bWJlcigpOwogICAgZWxzZSBpZiAoL1swLTldLy50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHJlYWROdW1iZXIoKTsKICAgIGVsc2UgaWYgKGNoID09ICIvIil7CiAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIqIikpCiAgICAgIHsgc291cmNlLm5leHQoKTsgcmV0dXJuIHJlYWRNdWx0aWxpbmVDb21tZW50KGNoKTsgfQogICAgICBlbHNlIGlmIChzb3VyY2UuZXF1YWxzKCIvIikpCiAgICAgIHsgbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgbnVsbCk7IHJldHVybiB7dHlwZTogImNvbW1lbnQiLCBzdHlsZTogImpzLWNvbW1lbnQifTt9CiAgICAgIGVsc2UgaWYgKHJlZ2V4cCkKICAgICAgICByZXR1cm4gcmVhZFJlZ2V4cCgpOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIHJlYWRPcGVyYXRvcigpOwogICAgfQogICAgZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIudGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIGVsc2UKICAgICAgcmV0dXJuIHJlYWRXb3JkKCk7CiAgfQoKICAvLyBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSB0b2tlbml6ZXIuCiAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwganNUb2tlblN0YXRlKGZhbHNlLCB0cnVlKSk7CiAgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAwNy0yMDA5IE1hcmlqbiBIYXZlcmJla2UKCiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQogZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgoKIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCiByZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgoKIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKICAgIG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcwogICAgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdAogICAgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgoKIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QKICAgIG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCgogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCiAgICBkaXN0cmlidXRpb24uCgogTWFyaWpuIEhhdmVyYmVrZQogbWFyaWpuaCBhdCBnbWFpbAo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/css/phpcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhlIGNvcHlyaWdodHMgZW1ib2RpZWQgaW4gdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGFyZSBsaWNlbnNlZCBieQpZYWhvbyEgSW5jLiB1bmRlciB0aGUgQlNEIChyZXZpc2VkKSBvcGVuIHNvdXJjZSBsaWNlbnNlCgpAYXV0aG9yIERhbiBWbGFkIERhc2NhbGVzY3UgPGRhbmR2QHlhaG9vLWluYy5jb20+CiovCgpodG1sIHsKICBjdXJzb3I6IHRleHQ7Cn0KCi5lZGl0Ym94IHsKICBtYXJnaW46IC40ZW07CiAgcGFkZGluZzogMDsKICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMTBwdDsKfQoKLypXZSBzaG91bGQgZGVmaW5lIHNwZWNpZmljIHN0eWxlcyBmb3IgZXZlcnkgZWxlbWVudCBvZiB0aGUgc3ludGF4LgogIHRoZSBzZXR0aW5nIGJlbG93IHdpbGwgY2F1c2Ugc29tZSBhbm5veWluZyBjb2xvciB0byBzaG93IHRocm91Z2ggaWYgd2UgbWlzc2VkCiAgZGVmaW5pbmcgYSBzdHlsZSBmb3IgYSB0b2tlbi4gVGhpcyBpcyBhbHNvIHRoZSAiY29sb3IiIG9mIHRoZSB3aGl0ZXNwYWNlIGFuZAogIG9mIHRoZSBjdXJzb3IuCiovCnByZS5jb2RlLCAuZWRpdGJveCB7CiAgY29sb3I6IHJlZDsKfQoKLmVkaXRib3ggcCB7CiAgbWFyZ2luOiAwOwp9CgpzcGFuLnBocC1wdW5jdHVhdGlvbiB7CiAgY29sb3I6IGJsdWU7Cn0KCnNwYW4ucGhwLWtleXdvcmQgewogIGNvbG9yOiAjNzcwMDg4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgpzcGFuLnBocC1vcGVyYXRvciB7CiAgY29sb3I6IGJsdWU7Cn0KCi8qIF9fRklMRV9fIGV0Yy47IGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9yZXNlcnZlZC5waHAgKi8Kc3Bhbi5waHAtY29tcGlsZS10aW1lLWNvbnN0YW50IHsKICBjb2xvcjogIzc3NjA4ODsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLyogb3V0cHV0IG9mIGdldF9kZWZpbmVkX2NvbnN0YW50cygpLiBEaWZmZXJzIGZyb20gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNvbnN0YW50cy5waHAgKi8Kc3Bhbi5waHAtcHJlZGVmaW5lZC1jb25zdGFudCB7CiAgY29sb3I6IGRhcmtncmVlbjsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLyogUEhQIHJlc2VydmVkICJsYW5ndWFnZSBjb25zdHJ1Y3RzIi4uLiBlY2hvKCkgZXRjLjsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLnBocCAqLwpzcGFuLnBocC1yZXNlcnZlZC1sYW5ndWFnZS1jb25zdHJ1Y3QgewogIGNvbG9yOiBncmVlbjsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLyogUEhQIGJ1aWx0LWluIGZ1bmN0aW9uczogZ2xvYigpLCBjaHIoKSBldGMuOyBvdXRwdXQgb2YgZ2V0X2RlZmluZWRfZnVuY3Rpb25zKClbImludGVybmFsIl0gKi8Kc3Bhbi5waHAtcHJlZGVmaW5lZC1mdW5jdGlvbiB7CiAgY29sb3I6IGdyZWVuOwp9CgovKiBQSFAgcHJlZGVmaW5lZCBjbGFzc2VzOiBQRE8sIEV4Y2VwdGlvbiBldGMuOyBvdXRwdXQgb2YgZ2V0X2RlY2xhcmVkX2NsYXNzZXMoKSBhbmQgZGlmZmVyZW50IGZyb20gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNsYXNzZXMucGhwICovCnNwYW4ucGhwLXByZWRlZmluZWQtY2xhc3MgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi5waHAtYXRvbSB7CiAgY29sb3I6ICMyMjg4MTE7Cn0KCi8qIGNsYXNzLCBpbnRlcmZhY2UsIG5hbWVzcGFjZSBvciBmdW5jdGlvbiBuYW1lcywgYnV0IG5vdCAkdmFyaWFibGVzICovCnNwYW4ucGhwLXRfc3RyaW5nIHsKICBjb2xvcjogYmxhY2s7Cn0KCnNwYW4ucGhwLXZhcmlhYmxlIHsKICBjb2xvcjogYmxhY2s7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCgpzcGFuLmpzLWxvY2FsdmFyaWFibGUgewogIGNvbG9yOiAjMDA0NDk5Owp9CgpzcGFuLnBocC1jb21tZW50IHsKICBjb2xvcjogI0FBNzcwMDsKICBmb250LXN0cmV0Y2g6IGNvbmRlbnNlZDsKLyogIGZvbnQtc3R5bGU6IGl0YWxpYzsgIFRoaXMgY2F1c2VzIGxpbmUgaGVpZ2h0IHRvIHNsaWdodGx5IGNoYW5nZSwgZ2V0dGluZyBsaW5lIG51bWJlcnMgb3V0IG9mIHN5bmMgKi8KfQoKc3Bhbi5waHAtc3RyaW5nLXNpbmdsZS1xdW90ZWQgewogIGNvbG9yOiAjQUEyMjIyOwp9Ci8qIGRvdWJsZSBxdW90ZWQgc3RyaW5ncyBhbGxvdyBpbnRlcnBvbGF0aW9uICovCnNwYW4ucGhwLXN0cmluZy1kb3VibGUtcXVvdGVkIHsKICBjb2xvcjogI0FBMjIyMjsKICBmb250LXdlaWdodDogYm9sZDsKfQoKc3Bhbi5zeW50YXgtZXJyb3IgewogIGJhY2tncm91bmQtY29sb3I6IHJlZDsKfQoKc3Bhbi5kZXByZWNhdGVkIHsKICBmb250LXNpemU6IHNtYWxsZXI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQpDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpUaGUgY29weXJpZ2h0cyBlbWJvZGllZCBpbiB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgYXJlIGxpY2Vuc2VkIGJ5CllhaG9vISBJbmMuIHVuZGVyIHRoZSBCU0QgKHJldmlzZWQpIG9wZW4gc291cmNlIGxpY2Vuc2UKCkBhdXRob3IgRGFuIFZsYWQgRGFzY2FsZXNjdSA8ZGFuZHZAeWFob28taW5jLmNvbT4KCi0tPgoKCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KICA8aGVhZD4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9jb2RlbWlycm9yLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IFBIUCtIVE1MK0phdmFTY3JpcHQrQ1NTIG1peGVkLW1vZGUgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KCiAgICA8cD5UaGlzIGlzIGEgY29tcGxleCBkZW1vbnN0cmF0aW9uIG9mIHRoZSA8Yj5QSFArSFRNTCtKYXZhU2NyaXB0K0NTUyBtaXhlZC1tb2RlCiAgICBzeW50YXggaGlnaGxpZ2h0PC9iPiBjYXBhYmlsaXRpZXMgb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4uCiAgICAmbHQ7P3BocCAuLi4gPz4gdGFncyB1c2UgdGhlIFBIUCBwYXJzZXIsICZsdDtzY3JpcHQ+IHRhZ3MgdXNlIHRoZSBKYXZhU2NyaXB0CiAgICBwYXJzZXIsIGFuZCAmbHQ7c3R5bGU+IHRhZ3MgdXNlIHRoZSBDU1MgcGFyc2VyLiBUaGUgcmVzdCBvZiB0aGUgY29udGVudCBpcwogICAgcGFyc2VkIHVzaW5nIHRoZSBYTUwgcGFyc2VyIGluIEhUTUwgbW9kZS48L3A+CgogICAgPHA+RmVhdHVyZXMgb2YgdGhlIFBIUCBwYXJzZXI6CiAgICA8dWw+CiAgICAgIDxsaT5zcGVjaWFsICJkZXByZWNhdGVkIiBzdHlsZSBmb3IgUEhQNCBrZXl3b3JkcyBsaWtlICd2YXInCiAgICAgIDxsaT5zdXBwb3J0IGZvciBQSFAgNS4zIGtleXdvcmRzOiAnbmFtZXNwYWNlJywgJ3VzZScKICAgICAgPGxpPjkxMSBwcmVkZWZpbmVkIGNvbnN0YW50cywgMTMwMSBwcmVkZWZpbmVkIGZ1bmN0aW9ucywgMTA1IHByZWRlY2xhcmVkIGNsYXNzZXMKICAgICAgICBmcm9tIGEgdHlwaWNhbCBQSFAgaW5zdGFsbGF0aW9uIGluIGEgTEFNUCBlbnZpcm9ubWVudAogICAgICA8bGk+bmV3IGZlYXR1cmU6IHN5bnRheCBlcnJvciBmbGFnZ2luZywgdGh1cyBlbmFibGluZyBzdHJpY3QgcGFyc2luZyBvZjoKICAgICAgICA8b2w+CiAgICAgICAgICA8bGk+ZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2l0aCBleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkgdHlwZWQgYXJndW1lbnRzIGFuZCBkZWZhdWx0IHZhbHVlcwogICAgICAgICAgPGxpPm1vZGlmaWVycyAocHVibGljLCBzdGF0aWMgZXRjLikgYXBwbGllZCB0byBtZXRob2QgYW5kIG1lbWJlciBkZWZpbml0aW9ucwogICAgICAgICAgPGxpPmZvcmVhY2goYXJyYXlfZXhwcmVzc2lvbiBhcyAka2V5IFs9PiAkdmFsdWVdKSBsb29wcwogICAgICAgIDwvb2w+CiAgICAgIDxsaT5kaWZmZXJlbnRpYXRpb24gYmV0d2VlbiBzaW5nbGUtcXVvdGVkIHN0cmluZ3MgYW5kIGRvdWJsZS1xdW90ZWQgaW50ZXJwb2xhdGluZyBzdHJpbmdzCiAgICA8L3VsPgoKICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAzcHg7IGJhY2tncm91bmQtY29sb3I6ICNGOEY4RjgiPgogICAgPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KVGhlICJyb290IiBwYXJzZXIgaXMgWE1MIGluIEhUTUwgbW9kZS4KTmV4dCwgd2UgY2FuIHN3aXRjaCBpbnRvIFBIUCBtb2RlLCBmb3IgZXhhbXBsZS4gVGhpcyBpcwo8P3BocCBlY2hvICd0ZXh0IG91dHB1dCBieSc7Cj8+ClBIUC4gPC9iPgpPbiB0aGUgbGluZSBhYm92ZSwgd2UganVzdCBoYWQgYW4gWE1MIHN5bnRheCBlcnJvciBkdWUgdG8gdGhlIDwvYj4gdGFnIG5vdCBiZWluZyBvcGVuZWQuCgo8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCcgc3RhbmRhbG9uZT0neWVzJz8+ICAgSFRNTCB0ZXh0IHdpbGwgZm9sbG93CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlNpbWlsYXJseSwgdGhlICdzY3JpcHQnIHRhZyB3aWxsIHN3aXRjaCB0byB0aGUgSmF2YVNjcmlwdCBwYXJzZXI6PC90aXRsZT4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgIC8vIFByZXNzIGVudGVyIGluc2lkZSB0aGUgb2JqZWN0IGFuZCB5b3VyIG5ldyBsaW5lIHdpbGwgYmUgc3VpdGFibHkKICAgICAgIC8vIGluZGVudGVkLgogICAgICAgdmFyIGtleUJpbmRpbmdzID0gewogICAgICAgICBlbnRlcjogIm5ld2xpbmUtYW5kLWluZGVudCIsCiAgICAgICAgIHRhYjogInJlaW5kZW50LXNlbGVjdGlvbiIsCiAgICAgICAgIGN0cmxfZW50ZXI6ICJyZXBhcnNlLWJ1ZmZlciIsCiAgICAgICAgIGN0cmxfejogInVuZG8iLAogICAgICAgICBjdHJsX3k6ICJyZWRvIiwKICAgICAgICAgY3RybF9iYWNrc3BhY2U6ICJ1bmRvLWZvci1zYWZhcmktd2hpY2gtc3R1cGlkbHktZW5vdWdoLWJsb2Nrcy1jdHJsLXoiCiAgICAgICB9OwoKICAgICAgIC8vIFByZXNzIHRhYiBvbiB0aGUgbmV4dCBsaW5lIGFuZCB0aGUgd3JvbmcgaW5kZW50YXRpb24gd2lsbCBiZSBmaXhlZC4KICAgICAgICAgICAgIHZhciByZWdleCA9IC9mb298YmFyL2k7CgogICAgICAgZnVuY3Rpb24gZXhhbXBsZSh4KSB7CiAgICAgICAgIC8vIExvY2FsIHZhcmlhYmxlcyBnZXQgYSBkaWZmZXJlbnQgY29sb3VyIHRoYW4gZ2xvYmFsIG9uZXMuCiAgICAgICAgIHZhciB5ID0gNDQuNDsKICAgICAgICAgcmV0dXJuIHggKyB5IC0gejsKICAgICAgIH0KICAgIDwvc2NyaXB0PgogICAgPHN0eWxlPgogICAgICAvKiBTb21lIGV4YW1wbGUgQ1NTICovCgogICAgICBAaW1wb3J0IHVybCgic29tZXRoaW5nLmNzcyIpOwoKICAgICAgYm9keSB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDNlbSA2ZW07CiAgICAgICAgZm9udC1mYW1pbHk6IHRhaG9tYSwgYXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgY29sb3I6ICMwMDA7CiAgICAgIH0KCiAgICAgICNuYXZpZ2F0aW9uIGEgewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBoMSB7CiAgICAgICAgZm9udC1zaXplOiAyLjVlbTsKICAgICAgfQoKICAgICAgaDE6YmVmb3JlLCBoMjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICI6OiI7CiAgICAgIH0KCiAgICAgIGNvZGUgewogICAgICAgIGZvbnQtZmFtaWx5OiBjb3VyaWVyLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiA4MCU7CiAgICAgICAgY29sb3I6ICM0MThBOEE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgoKICA8Ym9keT4KCiAgVGhlIFBIUCBjb2RlIGJlbG93IGNvbnRhaW5zIHNvbWUgZGVsaWJlcmF0ZSBlcnJvcnMuIFBsYXkgd2l0aCB0aGUgZWRpdG9yIGJ5IGZpeGluZyB0aGVtCiAgYW5kIG9ic2VydmluZyBob3cgdGhlIGhpZ2hsaWdodCBjaGFuZ2VzLgoKICAgIDw/cGhwCiAgICBuYW1lc3BhY2UgQTsKICAgIG5hbWVzcGFjZSBBOjpCOjpDOwogICAgbmFtZXNwYWNlIEE6Ojo6QjsKICAgIG5hbWVzcGFjZSBBOjpCOjpDOjo7CiAgICBuYW1lc3BhY2UgQTo6Qjo6Qzo6RCB4OwogICAgc2VsZjo6cmFuZ2UoJHJvd1snbGZ0J10sICRyb3dbJ3JndCddKSk7ICAvLyBlcnJvcjogZXh0cmEgJyknCiAgICAkYSA9IChiKCkgKyA0KSA1IGZvbzsgIC8vIGVycm9yOiBtaXNzaW5nIG9wZXJhdG9ycwogICAgc2VsZjo6JHZhcjsKICAgICRwYXJlbnQgPSBzZWxmOjpyYW5nZSgkbWF4ICsgMSwgJG1heCArIDEpOwogICAgJHJvd1thdHRyaWJ1dGVzXVskYXR0cmlidXRlX25hbWVdID0gJGF0dHJpYnV0ZV92YWx1ZTsKICAgICRyb3dbYXR0cmlidXRlcygpXVskYXR0cmlidXRlX25hbWVdID0gJGF0dHJpYnV0ZV92YWx1ZTsKICAgICRyb3dbYXR0cmlidXRlcyg1KV1bJGF0dHJpYnV0ZV9uYW1lXSA9ICRhdHRyaWJ1dGVfdmFsdWU7CiAgICAkcm93WyRhdHRyaWJ1dGVzKCldWyRhdHRyaWJ1dGVfbmFtZV0gPSAkYXR0cmlidXRlX3ZhbHVlOwogICAgYWJzdHJhY3QgY2xhc3MgNSBleHRlbmRzIGZvbyBpbXBsZW1lbnRzIGVjaG8gewogICAgICAgIHByaXZhdGUgZnVuY3Rpb24gZG9tYWluT2JqZWN0QnVpbGRlcigpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT51c2VfZG9tYWluX29iamVjdF9idWlsZGVyCiAgICAgICAgICAgICAgICAgICA/ICR0aGlzLT5kb21haW4oKS0+b2JqZWN0QnVpbGRlcigpCiAgICAgICAgICAgICAgICAgICA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICBjb25zdCAkbXljb25zdCA9ICdzb21lIHN0cmluZyc7CiAgICAgICAgJGFycmF5W215Y29uc3RdID0gNDsKICAgICAgICAvLyB0aGlzIGlzIGEgc2luZ2xlLWxpbmUgQysrLXN0eWxlIGNvbW1lbnQKICAgICAgICAjIHRoaXMgaXMgYSBzaW5nbGUtbGluZSBzaGVsbC1zdHlsZSBjb21tZW50CiAgICAgICAgcHJpdmF0ZSB2YXIgJGEgPSBfX0ZJTEVfXzsKICAgICAgICBwcm90ZWN0ZWQgc3RhdGljICRiID0gdGltZXpvbmVfdHJhbnNpdGlvbnNfZ2V0KCdzb21lIHBhcmFtZXRlciBoZXJlJyk7CiAgICAgICAgZ2xvYmFsICRnID0gaXNzZXQoInN0cmluZyIpOwogICAgICAgIHN0YXRpYyAkcyA9IGhhc2hfdXBkYXRlX2ZpbGU7ICAvLyB3YXJuaW5nOiBwcmVkZWZpbmVkIGZ1bmN0aW9uIG5vbi1jYWxsCiAgICAgICAgZnVuY3Rpb24gbWlrZSAoJHZhcikgJGZvbzsKICAgICAgICBtaWtlKEE6OmZ1bmMocGFyYW0pKTsKICAgICAgICBmdW5jKCRiICRjKTsgIC8vIGVycm9yOiBmdW5jdGlvbiBwYXJhbWV0ZXJzIG11c3QgYmUgY29tbWEtc2VwYXJhdGVkCiAgICAgICAgZm9vIGJhcjsgIC8vIGVycm9yOiBubyBvcGVyYXRvcgogICAgICAgICRiYXogJHF1dXg7ICAvLyBlcnJvcjogbm8gb3BlcmF0b3IKICAgICAgICBwdWJsaWMgYWJzdHJhY3QgZnVuY3Rpb24gbG9hZFBhZ2VYTUwodXRpbF9GaWxlUGF0aCAkZmlsZW5hbWUsICRtZXJnZT0wKyRmb28sICR4LCAkeT0zKSB7CiAgICAgICAgICAgICRuZXdyb3dbJGtleV0gPSAkdmFsOwogICAgICAgICAgICAkbmV3cmVzdWx0W10gPSAkcm93OwogICAgICAgICAgICAkc3RhdGUgPSAkcm93WydjJ10gPT0gMTsKICAgICAgICAgICAgJGF0dHJpYnV0ZV92YWx1ZXNbJGF0dHJpYnV0ZV9uYW1lXSA9IG51bGw7CiAgICAgICAgICAgICRyb3dbJ2F0dHJpYnV0ZXMnXVskYXR0cmlidXRlX25hbWVdID0gJGF0dHJpYnV0ZV92YWx1ZTsKICAgICAgICAgICAgJHJlc3VsdFskcm93WydlbGVtZW50J11dWyRyb3dbJ2F0dHJpYnV0ZSddXSA9ICRyb3dbJ3ZhbHVlJ107CiAgICAgICAgICAgICRzcWwgPSAibXVsdGlsaW5lIHN0cmluZwpsaW5lMiBpcyBzcGVjaWFsIC0gaXQnbGwgaW50ZXJwb2xhdGUgdmFyaWFibGVzIGxpa2UgJHN0YXRlIGFuZCBtZXRob2QgY2FsbHMKeyR0aGlzLT5jYWNoZS0+YWRkKCRrZXksIDUpfSBhbmQgbWF5YmUgXCJtb3JlXCIKCmxpbmU1IjsKICAgICAgICAgICAgJHNxbCA9ICdtdWx0aWxpbmUgc3RyaW5nCnNpbmdsZSBxdW90aW5nIG1lYW5zIG5vIFwnaW50ZXJwb2xhdGlvblwnIGxpa2UgIiRzdGFydCIgb3IgbWV0aG9kIGNhbGwKeyR0aGlzLT5jYWNoZS0+YWRkKCRrZXksIDUpfSB3aWxsIGhhcHBlbgoKbGluZTUnOwogICAgICAgICAgICAkYml0cGF0dGVybiA9IDEgPDwgMjsKICAgICAgICAgICAgJGJpdHBhdHRlcm4gPDw9IDM7CiAgICAgICAgICAgICRpbmNvcnJlY3QgPSA8PDwgNSBFT1NUUklORyAgLy8gRklYTUU6IENvZGVNaXJyb3IgdXBkYXRlIGJ1ZzogYWRkIGEgbGV0dGVyIGJlZm9yZSA1IGFuZCBub3RpY2UgdGhhdCBzeW50YXggaXMgbm90IHVwZGF0ZWQgdW50aWwgRU9GLCBldmVuIHdpdGggY29udGludW91c1NjYW5uaW5nOiA1MDAKZXJyb3I6IHRoZSBpZGVudGlmaWVyIG11c3QgY29uZm9ybSB0byB0aGUgaWRlbnRpZmllciBydWxlcwpFT1NUUklORzsKICAgICAgICAgICAgJHNxbCA9IDw8PCBFT1NRTAogICAgICAgICAgICAgICAgU0VMRUNUIGF0dHJpYnV0ZSwgZWxlbWVudCwgdmFsdWUKICAgICAgICAgICAgICAgIEZST00gYXR0cmlidXRlX3ZhbHVlcwogICAgICAgICAgICAgICAgV0hFUkUgZGltZW5zaW9uID0gPwpFT1NRTDsKICAgICAgICAgICAgJHRoaXMtPmxyX2NhY2hlLT5hZGQoJGtleSwgc2VsZjo6cmFuZ2UoJHJvd1snbGZ0J10sICRyb3dbJ3JndCddKSk7CiAgICAgICAgICAgICRjb21wb3NpdGVfc3RyaW5nID0gPDw8RU9TVFJJTkcKc29tZSBsaW5lcyBoZXJlCkVPU1RSSU5HCi4gJ3NvbWV0aGluZyBleHRyYSc7CiAgICAgICAgICAgICRwYWdlX2xmdCA9ICgkZG9tYWluLT5uYW1lKCkgPT0gJ3BhZ2UnKSA/ICRzdGFydCArIDEgOiAkcGFnZV9zdGFydCArIDE7CiAgICAgICAgICAgIGVjaG8gIlRoaXMgaXMgY2xhc3MgZm9vIjsKICAgICAgICAgICAgZWNobyAiYSA9ICIuJHRoaXMgLT5hWzIrMyokYXJyYXlbImZvbyJdXS4iIjsKICAgICAgICAgICAgZWNobyAiYiA9IHskdGhpcy0+Yn0iOyAgLy8gRklYTUU6IGhpZ2hsaWdodCBpbnRlcnBvbGF0aW9uIGluIHN0cmluZ3MKICAgICAgICB9CiAgICAgICAgZmluYWwgZnVuY3Rpb24gbWFrZWNvZmZlZSBlcnJvcigkdHlwZXMgPSBhcnJheSgiY2FwcHVjY2lubyIpLCAkY29mZmVlTWFrZXIgPSBOVUxMKSB7CiAgICAgICAgICAgICRvdXRfb2Zfd2F5X2Ftb3VudCA9ICRtYXggLSAkY2hpbGQtPmxlZnQoKSArIDE7CiAgICAgICAgICAgICRhYnNvbHV0ZV9wb3MgPSAkY2hpbGQtPmxlZnQoKSAtICRtb3ZlLT53aWR0aCgpOwogICAgICAgICAgICAkdmFyZnVuYygxLCAneCcpOwogICAgICAgICAgICAkdmFyZnVuYygxLCAneCcpICsgZm9vKCkgLSA1OwogICAgICAgICAgICAkZnVuY2FycmF5WyRpXSgncGFyYW0xJywgJHBhcmFtMik7CiAgICAgICAgICAgICAgICAkbHJbJGRvbWFpbl9uYW1lXSA9ICR0aGlzLT5nZXRfbGVmdF9hbmRfcmlnaHQoJGRvbWFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGltZW5zaW9uX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnRfbmFtZSk7CiAgICAgICAgICAgICRkb21haW5fbGlzdCA9IGlzX251bGwoJGRvbWFpbikgPwogICAgICAgICAgICAgICAgICAgICAgICAgICByM19Eb21haW46Om5hbWVzKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkZG9tYWluLT5uYW1lKCkpOwogICAgICAgICAgICBmb3JlYWNoIChyM19Eb21haW46Om5hbWVzKCkgYXMgJGRvbWFpbl9uYW1lKSB7CiAgICAgICAgICAgICAgICAkcGxhY2Vob2xkZXJzID0gJ2Rpc3RhbmNlIExJS0UgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBpbXBsb2RlKGFycmF5X2ZpbGwoMSwgJG51bV9kaXN0YW5jZXMsICc/JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBPUiBkaXN0YW5jZSBMSUtFICcpOwoKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnRhcmdldCokdGhpcy0+dHJhbnMrbXlmdW5jKF9fTUVUSE9EX18pOwogICAgICAgICAgICAvKgogICAgICAgICAgICBlY2hvICdUaGlzIGlzIGEgdGVzdCc7IC8qIFRoaXMgY29tbWVudCB3aWxsIGNhdXNlIGEgcHJvYmxlbSAqLwogICAgICAgICAgICAqLwogICAgICAgIH0KICAgICAgICBzd2l0Y2goICR0eXBlICkgewogICAgICAgICAgICBjYXNlICJyM2NvcmVfQWRkVGVtcGxhdGVUb1RhcmdldEV2ZW50IjoKICAgICAgICAgICAgICAgICR0aGlzLT5ub3RpZnlBZGRUZW1wbGF0ZVRvVGFyZ2V0KCAkZ2VuZXZlbnQgKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJyM2NvcmVfR2VuZXJhdGVUYXJnZXRFdmVudCIgJHRoaXM6CiAgICAgICAgICAgICAgICBmb3IoJGk9MDsgJGk8PXRoaXMtPm1ldGhvZCgpOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnU3ludGF4ICJoaWdobGlnaHRpbmciJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkYXJyYXkgeG9yICRsb2FkZXItPnBhcnNlX2ZuKCRmaWxlbmFtZSkgYXMgJGtleSA9PiB2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UgcjM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgICAgIC8qKiByZXN0b3JlIHRoZSBiYWNrdXAKICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5sb2FkQWxsKCR0bXAsICRldmVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgLy8gYHBocCAtbGAgZG9lc24ndCBjb21wbGFpbiBhdCBhbGwgYXQgdGhpcyAoaXQgYXNzdW1lcyBzdHJpbmcgY29uc3RhbnRzKToKICAgICAgICAgICAgICAgICAgICB0aGlzICsgbWFrZXMgKiBubyAtIHNlbnNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdCBtb286CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcjNfdXRpbF9FeGNlcHRpb24oIGdldF9jbGFzcyggJGdlbmV2ZW50ICkgLiAiIGRvZXMgbm90IG1hcCIgKTsKICAgICAgICB9CgoKICAgIH07CiAgICAKICAgIGlmKCRzb21ldGhpbmc9PXRydWUpOgogICAgCSR0ZXN0ID0gJ3NvbWV0aGluZyc7CiAgICBlbmRpZjsKICAgIAogICAgZm9yKCRpPTA7JGk8MjAwMDskaSsrKToKICAgIAllY2hvICRpOwogICAgCSRrID0gJGsgKyAxOwogICAgZW5kZm9yOwogICAgCiAgICBmb3JlYWNoKGFycmF5KCdvbmUnLCd0d28nKSBhcyAka2V5ID0+ICR2YWx1ZSk6CiAgICAJZWNobyAkbnVtYmVyIC4gJyA9ICcuICRrZXk7CiAgICBlbmRmb3JlYWNoOwoKICAgIC8qIGZhaWxzIGlmIG5lc3RlZCAqLwogICAgaWYoJG5lc3RlZCA8IDApOgogICAgCWlmKCRmYWlsID4gMSk6CiAgICAJCWVjaG8gJ1RoaXMgZmFpbHMuLi4uJzsKICAgIAllbmRpZjsKICAgIGVuZGlmOwogICAgPz4KCiAgICA8cjM6Y3BocD4KICAgICAgICBwaHAoIndvcmtzIiwgJGhlcmUsIDIpOwogICAgPC9yMzpjcGhwPgoKICAgIDxyNDpjcGhwPgogICAgY2xhc3MgZm9vIHsKICAgICAgICAvLyBhIGNvbW1lbnQKICAgICAgICB2YXIgJGE7CiAgICAgICAgdmFyICRiOwogICAgfTsKICAgIDwvcjQ6Y3BocD4KCiAgPGgxPlRoaXMgaXMgYW4gPD9waHAgIyBlY2hvICdzaW1wbGUnOz8+IGV4YW1wbGUuPC9oMT4KICA8cD5UaGUgaGVhZGVyIGFib3ZlIHdpbGwgc2F5ICdUaGlzIGlzIGFuICBleGFtcGxlJy48L3A+CiAgPGgxPlRoaXMgaXMgYW4gPD9waHAgLy8gZWNobyAnc2ltcGxlJzs/PiBleGFtcGxlLjwvaDE+CgogIDw/cGhwIGVjaG87ID8+CiAgICA8Ym9keT4KCjw/cGhwIGVjaG8gIjxodG1sPgogIDxoZWFkPgogICAgPHNjcmlwdD4KICAgIHZhciBmb28gPSAnYmFyJzsKICAgIDwvc2NyaXB0PgogICAgPHN0eWxlPgogICAgICBzcGFuLnRlc3Qge2ZvbnQtZmFtaWx5OiBhcmlhbCwgJ2x1Y2lkYSBjb25zb2xlJywgc2Fucy1zZXJpZn0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPCEtLSBjb21tZW50IC0tPgogIDwvYm9keT4KPC9odG1sPiI7ID8+Cgo8L2JvZHk+CjwvaHRtbD4KCgogICAgPC90ZXh0YXJlYT4KICAgIDwvZGl2PgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgICAgIGhlaWdodDogIjM1MHB4IiwKICAgICAgICBwYXJzZXJmaWxlOiBbInBhcnNleG1sLmpzIiwgInBhcnNlY3NzLmpzIiwgInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiLAogICAgICAgICAgICAgICAgICAgICAiLi4vY29udHJpYi9waHAvanMvdG9rZW5pemVwaHAuanMiLCAiLi4vY29udHJpYi9waHAvanMvcGFyc2VwaHAuanMiLAogICAgICAgICAgICAgICAgICAgICAiLi4vY29udHJpYi9waHAvanMvcGFyc2VwaHBodG1sbWl4ZWQuanMiXSwKICAgICAgICBzdHlsZXNoZWV0OiBbIi4uLy4uL2Nzcy94bWxjb2xvcnMuY3NzIiwgIi4uLy4uL2Nzcy9qc2NvbG9ycy5jc3MiLCAiLi4vLi4vY3NzL2Nzc2NvbG9ycy5jc3MiLCAiY3NzL3BocGNvbG9ycy5jc3MiXSwKICAgICAgICBwYXRoOiAiLi4vLi4vanMvIiwKICAgICAgICBjb250aW51b3VzU2Nhbm5pbmc6IDUwMAogICAgICB9KTsKICAgIDwvc2NyaXB0PgoKCiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/parsephp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhlIGNvcHlyaWdodHMgZW1ib2RpZWQgaW4gdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGFyZSBsaWNlbnNlZCBieQpZYWhvbyEgSW5jLiB1bmRlciB0aGUgQlNEIChyZXZpc2VkKSBvcGVuIHNvdXJjZSBsaWNlbnNlCgpAYXV0aG9yIERhbiBWbGFkIERhc2NhbGVzY3UgPGRhbmR2QHlhaG9vLWluYy5jb20+CgoKUGFyc2UgZnVuY3Rpb24gZm9yIFBIUC4gTWFrZXMgdXNlIG9mIHRoZSB0b2tlbml6ZXIgZnJvbSB0b2tlbml6ZXBocC5qcy4KQmFzZWQgb24gcGFyc2VqYXZhc2NyaXB0LmpzIGJ5IE1hcmlqbiBIYXZlcmJla2UuCgoKRmVhdHVyZXM6CiArIHNwZWNpYWwgImRlcHJlY2F0ZWQiIHN0eWxlIGZvciBQSFA0IGtleXdvcmRzIGxpa2UgJ3ZhcicKICsgc3VwcG9ydCBmb3IgUEhQIDUuMyBrZXl3b3JkczogJ25hbWVzcGFjZScsICd1c2UnCiArIDkxMSBwcmVkZWZpbmVkIGNvbnN0YW50cywgMTMwMSBwcmVkZWZpbmVkIGZ1bmN0aW9ucywgMTA1IHByZWRlY2xhcmVkIGNsYXNzZXMKICAgZnJvbSBhIHR5cGljYWwgUEhQIGluc3RhbGxhdGlvbiBpbiBhIExBTVAgZW52aXJvbm1lbnQKICsgbmV3IGZlYXR1cmU6IHN5bnRheCBlcnJvciBmbGFnZ2luZywgdGh1cyBlbmFibGluZyBzdHJpY3QgcGFyc2luZyBvZjoKICAgKyBmdW5jdGlvbiBkZWZpbml0aW9ucyB3aXRoIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSB0eXBlZCBhcmd1bWVudHMgYW5kIGRlZmF1bHQgdmFsdWVzCiAgICsgbW9kaWZpZXJzIChwdWJsaWMsIHN0YXRpYyBldGMuKSBhcHBsaWVkIHRvIG1ldGhvZCBhbmQgbWVtYmVyIGRlZmluaXRpb25zCiAgICsgZm9yZWFjaChhcnJheV9leHByZXNzaW9uIGFzICRrZXkgWz0+ICR2YWx1ZV0pIGxvb3BzCiArIGRpZmZlcmVudGlhdGlvbiBiZXR3ZWVuIHNpbmdsZS1xdW90ZWQgc3RyaW5ncyBhbmQgZG91YmxlLXF1b3RlZCBpbnRlcnBvbGF0aW5nIHN0cmluZ3MKCiovCgoKLy8gYWRkIHRoZSBBcnJheS5pbmRleE9mIG1ldGhvZCBmb3IgSlMgZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKGUuZy4gSUUpCi8vIGNvZGUgZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9Fbi9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9JbmRleE9mCmlmICghQXJyYXkucHJvdG90eXBlLmluZGV4T2YpCnsKICBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uKGVsdCAvKiwgZnJvbSovKQogIHsKICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aDsKCiAgICB2YXIgZnJvbSA9IE51bWJlcihhcmd1bWVudHNbMV0pIHx8IDA7CiAgICBmcm9tID0gKGZyb20gPCAwKQogICAgICAgICA/IE1hdGguY2VpbChmcm9tKQogICAgICAgICA6IE1hdGguZmxvb3IoZnJvbSk7CiAgICBpZiAoZnJvbSA8IDApCiAgICAgIGZyb20gKz0gbGVuOwoKICAgIGZvciAoOyBmcm9tIDwgbGVuOyBmcm9tKyspCiAgICB7CiAgICAgIGlmIChmcm9tIGluIHRoaXMgJiYKICAgICAgICAgIHRoaXNbZnJvbV0gPT09IGVsdCkKICAgICAgICByZXR1cm4gZnJvbTsKICAgIH0KICAgIHJldHVybiAtMTsKICB9Owp9CgoKdmFyIFBIUFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgLy8gVG9rZW4gdHlwZXMgdGhhdCBjYW4gYmUgY29uc2lkZXJlZCB0byBiZSBhdG9tcywgcGFydCBvZiBvcGVyYXRvciBleHByZXNzaW9ucwogIHZhciBhdG9taWNUeXBlcyA9IHsKICAgICJhdG9tIjogdHJ1ZSwgIm51bWJlciI6IHRydWUsICJ2YXJpYWJsZSI6IHRydWUsICJzdHJpbmciOiB0cnVlCiAgfTsKICAvLyBDb25zdHJ1Y3RvciBmb3IgdGhlIGxleGljYWwgY29udGV4dCBvYmplY3RzLgogIGZ1bmN0aW9uIFBIUExleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgnc3RhdCcgKHN0YXRlbWVudCksICdmb3JtJyAoc3BlY2lhbCBmb3JtKSwgJ1snLCAneycsIG9yICcoJykKICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAvLyAnWycsICd7Jywgb3IgJygnIGJsb2NrcyB0aGF0IGhhdmUgYW55IHRleHQgYWZ0ZXIgdGhlaXIgb3BlbmluZwogICAgLy8gY2hhcmFjdGVyIGFyZSBzYWlkIHRvIGJlICdhbGlnbmVkJyAtLSBhbnkgbGluZXMgYmVsb3cgYXJlCiAgICAvLyBpbmRlbnRlZCBhbGwgdGhlIHdheSB0byB0aGUgb3BlbmluZyBjaGFyYWN0ZXIuCiAgICBpZiAoYWxpZ24gIT0gbnVsbCkKICAgICAgdGhpcy5hbGlnbiA9IGFsaWduOwogICAgLy8gUGFyZW50IHNjb3BlLCBpZiBhbnkuCiAgICB0aGlzLnByZXYgPSBwcmV2OwogICAgdGhpcy5pbmZvID0gaW5mbzsKICB9CgogIC8vIFBIUCBpbmRlbnRhdGlvbiBydWxlcwogIGZ1bmN0aW9uIGluZGVudFBIUChsZXhpY2FsKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZmlyc3RDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gZmlyc3RDaGFycyAmJiBmaXJzdENoYXJzLmNoYXJBdCgwKSwgdHlwZSA9IGxleGljYWwudHlwZTsKICAgICAgdmFyIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKICAgICAgaWYgKHR5cGUgPT0gImZvcm0iICYmIGZpcnN0Q2hhciA9PSAieyIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQ7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInN0YXQiIHx8IHR5cGUgPT0gImZvcm0iKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgaW5kZW50VW5pdDsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5pbmZvID09ICJzd2l0Y2giICYmICFjbG9zaW5nKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKC9eKD86Y2FzZXxkZWZhdWx0KVxiLy50ZXN0KGZpcnN0Q2hhcnMpID8gaW5kZW50VW5pdCA6IDIgKiBpbmRlbnRVbml0KTsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5hbGlnbikKICAgICAgICByZXR1cm4gbGV4aWNhbC5jb2x1bW4gLSAoY2xvc2luZyA/IDEgOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKGNsb3NpbmcgPyAwIDogaW5kZW50VW5pdCk7CiAgICB9OwogIH0KCiAgLy8gVGhlIHBhcnNlci1pdGVyYXRvci1wcm9kdWNpbmcgZnVuY3Rpb24gaXRzZWxmLgogIGZ1bmN0aW9uIHBhcnNlUEhQKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplUEhQKGlucHV0KTsKICAgIC8vIFRoZSBwYXJzZXIgc3RhdGUuIGNjIGlzIGEgc3RhY2sgb2YgYWN0aW9ucyB0aGF0IGhhdmUgdG8gYmUKICAgIC8vIHBlcmZvcm1lZCB0byBmaW5pc2ggdGhlIGN1cnJlbnQgc3RhdGVtZW50LiBGb3IgZXhhbXBsZSB3ZSBtaWdodAogICAgLy8ga25vdyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZmluZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgYW5kIGEKICAgIC8vIHNlbWljb2xvbi4gQWN0aW9ucyBhdCB0aGUgZW5kIG9mIHRoZSBzdGFjayBnbyBmaXJzdC4gSXQgaXMKICAgIC8vIGluaXRpYWxpemVkIHdpdGggYW4gaW5maW5pdGVseSBsb29waW5nIGFjdGlvbiB0aGF0IGNvbnN1bWVzCiAgICAvLyB3aG9sZSBzdGF0ZW1lbnRzLgogICAgdmFyIGNjID0gW3N0YXRlbWVudHNdOwogICAgLy8gVGhlIGxleGljYWwgc2NvcGUsIHVzZWQgbW9zdGx5IGZvciBpbmRlbnRhdGlvbi4KICAgIHZhciBsZXhpY2FsID0gbmV3IFBIUExleGljYWwoKGJhc2Vjb2x1bW4gfHwgMCkgLSBpbmRlbnRVbml0LCAwLCAiYmxvY2siLCBmYWxzZSk7CiAgICAvLyBDdXJyZW50IGNvbHVtbiwgYW5kIHRoZSBpbmRlbnRhdGlvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQKICAgIC8vIGxpbmUuIFVzZWQgdG8gY3JlYXRlIGxleGljYWwgc2NvcGUgb2JqZWN0cy4KICAgIHZhciBjb2x1bW4gPSAwOwogICAgdmFyIGluZGVudGVkID0gMDsKICAgIC8vIFZhcmlhYmxlcyB3aGljaCBhcmUgdXNlZCBieSB0aGUgbWFyaywgY29udCwgYW5kIHBhc3MgZnVuY3Rpb25zCiAgICAvLyBiZWxvdyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkcml2ZXIgbG9vcCBpbiB0aGUgJ25leHQnIGZ1bmN0aW9uLgogICAgdmFyIGNvbnN1bWUsIG1hcmtlZDsKCiAgICAvLyBUaGUgaXRlcmF0b3Igb2JqZWN0LgogICAgdmFyIHBhcnNlciA9IHtuZXh0OiBuZXh0LCBjb3B5OiBjb3B5fTsKCiAgICAvLyBwYXJzaW5nIGlzIGFjY29tcGxpc2hlZCBieSBjYWxsaW5nIG5leHQoKSByZXBlYXRlZGx5CiAgICBmdW5jdGlvbiBuZXh0KCl7CiAgICAgIC8vIFN0YXJ0IGJ5IHBlcmZvcm1pbmcgYW55ICdsZXhpY2FsJyBhY3Rpb25zIChhZGp1c3RpbmcgdGhlCiAgICAgIC8vIGxleGljYWwgdmFyaWFibGUpLCBvciB0aGUgb3BlcmF0aW9ucyBiZWxvdyB3aWxsIGJlIHdvcmtpbmcKICAgICAgLy8gd2l0aCB0aGUgd3JvbmcgbGV4aWNhbCBzdGF0ZS4KICAgICAgd2hpbGUoY2NbY2MubGVuZ3RoIC0gMV0ubGV4KQogICAgICAgIGNjLnBvcCgpKCk7CgogICAgICAvLyBGZXRjaCB0aGUgbmV4dCB0b2tlbi4KICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKCiAgICAgIC8vIEFkanVzdCBjb2x1bW4gYW5kIGluZGVudGVkLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgJiYgY29sdW1uID09IDApCiAgICAgICAgaW5kZW50ZWQgPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGNvbHVtbiArPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpewogICAgICAgIGluZGVudGVkID0gY29sdW1uID0gMDsKICAgICAgICAvLyBJZiB0aGUgbGV4aWNhbCBzY29wZSdzIGFsaWduIHByb3BlcnR5IGlzIHN0aWxsIHVuZGVmaW5lZCBhdAogICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxpbmUsIGl0IGlzIGFuIHVuLWFsaWduZWQgc2NvcGUuCiAgICAgICAgaWYgKCEoImFsaWduIiBpbiBsZXhpY2FsKSkKICAgICAgICAgIGxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAvLyBOZXdsaW5lIHRva2VucyBnZXQgYW4gaW5kZW50YXRpb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgLy8gdGhlbS4KICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudFBIUChsZXhpY2FsKTsKICAgICAgfQogICAgICAvLyBObyBtb3JlIHByb2Nlc3NpbmcgZm9yIG1lYW5pbmdsZXNzIHRva2Vucy4KICAgICAgaWYgKHRva2VuLnR5cGUgPT0gIndoaXRlc3BhY2UiIHx8IHRva2VuLnR5cGUgPT0gImNvbW1lbnQiCiAgICAgICAgfHwgdG9rZW4udHlwZSA9PSAic3RyaW5nX25vdF90ZXJtaW5hdGVkIiApCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBXaGVuIGEgbWVhbmluZ2Z1bCB0b2tlbiBpcyBmb3VuZCBhbmQgdGhlIGxleGljYWwgc2NvcGUncwogICAgICAvLyBhbGlnbiBpcyB1bmRlZmluZWQsIGl0IGlzIGFuIGFsaWduZWQgc2NvcGUuCiAgICAgIGlmICghKCJhbGlnbiIgaW4gbGV4aWNhbCkpCiAgICAgICAgbGV4aWNhbC5hbGlnbiA9IHRydWU7CgogICAgICAvLyBFeGVjdXRlIGFjdGlvbnMgdW50aWwgb25lICdjb25zdW1lcycgdGhlIHRva2VuIGFuZCB3ZSBjYW4KICAgICAgLy8gcmV0dXJuIGl0LiAnbWFya2VkJyBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICAgIHdoaWxlKHRydWUpIHsKICAgICAgICBjb25zdW1lID0gbWFya2VkID0gZmFsc2U7CiAgICAgICAgLy8gVGFrZSBhbmQgZXhlY3V0ZSB0aGUgdG9wbW9zdCBhY3Rpb24uCiAgICAgICAgdmFyIGFjdGlvbiA9IGNjLnBvcCgpOwogICAgICAgIGFjdGlvbih0b2tlbik7CgogICAgICAgIGlmIChjb25zdW1lKXsKICAgICAgICAgIGlmIChtYXJrZWQpCiAgICAgICAgICAgIHRva2VuLnN0eWxlID0gbWFya2VkOwogICAgICAgICAgLy8gSGVyZSB3ZSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9jYWwgYW5kIGdsb2JhbCB2YXJpYWJsZXMuCiAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiAxOyAvLyBGaXJlYnVnIHdvcmthcm91bmQgZm9yIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9mYnVnL2lzc3Vlcy9kZXRhaWw/aWQ9MTIzOSNjMQogICAgfQoKICAgIC8vIFRoaXMgbWFrZXMgYSBjb3B5IG9mIHRoZSBwYXJzZXIgc3RhdGUuIEl0IHN0b3JlcyBhbGwgdGhlCiAgICAvLyBzdGF0ZWZ1bCB2YXJpYWJsZXMgaW4gYSBjbG9zdXJlLCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQKICAgIC8vIHdpbGwgcmVzdG9yZSB0aGVtIHdoZW4gY2FsbGVkIHdpdGggYSBuZXcgaW5wdXQgc3RyZWFtLiBOb3RlCiAgICAvLyB0aGF0IHRoZSBjYyBhcnJheSBoYXMgdG8gYmUgY29waWVkLCBiZWNhdXNlIGl0IGlzIGNvbnRhbnRseQogICAgLy8gYmVpbmcgbW9kaWZpZWQuIExleGljYWwgb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQsIHNvIHRoZXkgY2FuCiAgICAvLyBiZSBzaGFyZWQgYmV0d2VlbiBydW5zIG9mIHRoZSBwYXJzZXIuCiAgICBmdW5jdGlvbiBjb3B5KCl7CiAgICAgIHZhciBfbGV4aWNhbCA9IGxleGljYWwsIF9jYyA9IGNjLmNvbmNhdChbXSksIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlOwoKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvcHlQYXJzZXIoaW5wdXQpewogICAgICAgIGxleGljYWwgPSBfbGV4aWNhbDsKICAgICAgICBjYyA9IF9jYy5jb25jYXQoW10pOyAvLyBjb3BpZXMgdGhlIGFycmF5CiAgICAgICAgY29sdW1uID0gaW5kZW50ZWQgPSAwOwogICAgICAgIHRva2VucyA9IHRva2VuaXplUEhQKGlucHV0LCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgcmV0dXJuIHBhcnNlcjsKICAgICAgfTsKICAgIH0KCiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHB1c2hpbmcgYSBudW1iZXIgb2YgYWN0aW9ucyBvbnRvIHRoZSBjYwogICAgLy8gc3RhY2sgaW4gcmV2ZXJzZSBvcmRlci4KICAgIGZ1bmN0aW9uIHB1c2goZnMpewogICAgICBmb3IgKHZhciBpID0gZnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgICAgY2MucHVzaChmc1tpXSk7CiAgICB9CiAgICAvLyBjb250IGFuZCBwYXNzIGFyZSB1c2VkIGJ5IHRoZSBhY3Rpb24gZnVuY3Rpb25zIHRvIGFkZCBvdGhlcgogICAgLy8gYWN0aW9ucyB0byB0aGUgc3RhY2suIGNvbnQgd2lsbCBjYXVzZSB0aGUgY3VycmVudCB0b2tlbiB0byBiZQogICAgLy8gY29uc3VtZWQsIHBhc3Mgd2lsbCBsZWF2ZSBpdCBmb3IgdGhlIG5leHQgYWN0aW9uLgogICAgZnVuY3Rpb24gY29udCgpewogICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgIGNvbnN1bWUgPSB0cnVlOwogICAgfQogICAgZnVuY3Rpb24gcGFzcygpewogICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgIGNvbnN1bWUgPSBmYWxzZTsKICAgIH0KICAgIC8vIFVzZWQgdG8gY2hhbmdlIHRoZSBzdHlsZSBvZiB0aGUgY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIG1hcmsoc3R5bGUpewogICAgICBtYXJrZWQgPSBzdHlsZTsKICAgIH0KICAgIC8vIEFkZCBhIGx5ZXIgb2Ygc3R5bGUgdG8gdGhlIGN1cnJlbnQgdG9rZW4sIGZvciBleGFtcGxlIHN5bnRheC1lcnJvcgogICAgZnVuY3Rpb24gbWFya19hZGQoc3R5bGUpewogICAgICBtYXJrZWQgPSBtYXJrZWQgKyAnICcgKyBzdHlsZTsKICAgIH0KCiAgICAvLyBQdXNoIGEgbmV3IGxleGljYWwgY29udGV4dCBvZiB0aGUgZ2l2ZW4gdHlwZS4KICAgIGZ1bmN0aW9uIHB1c2hsZXgodHlwZSwgaW5mbykgewogICAgICB2YXIgcmVzdWx0ID0gZnVuY3Rpb24gcHVzaGxleGluZygpIHsKICAgICAgICBsZXhpY2FsID0gbmV3IFBIUExleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgbnVsbCwgbGV4aWNhbCwgaW5mbykKICAgICAgfTsKICAgICAgcmVzdWx0LmxleCA9IHRydWU7CiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICAvLyBQb3Agb2ZmIHRoZSBjdXJyZW50IGxleGljYWwgY29udGV4dC4KICAgIGZ1bmN0aW9uIHBvcGxleCgpewogICAgICBsZXhpY2FsID0gbGV4aWNhbC5wcmV2OwogICAgfQogICAgcG9wbGV4LmxleCA9IHRydWU7CiAgICAvLyBUaGUgJ2xleCcgZmxhZyBvbiB0aGVzZSBhY3Rpb25zIGlzIHVzZWQgYnkgdGhlICduZXh0JyBmdW5jdGlvbgogICAgLy8gdG8ga25vdyB0aGV5IGNhbiAoYW5kIGhhdmUgdG8pIGJlIHJhbiBiZWZvcmUgbW92aW5nIG9uIHRvIHRoZQogICAgLy8gbmV4dCB0b2tlbi4KCiAgICAvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRpc2NhcmRzIHRva2VucyB1bnRpbCBpdCBmaW5kcyBvbmUgb2YKICAgIC8vIHRoZSBnaXZlbiB0eXBlLiBUaGlzIHdpbGwgaWdub3JlIChhbmQgcmVjb3ZlciBmcm9tKSBzeW50YXggZXJyb3JzLgogICAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCl7CiAgICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodG9rZW4pewogICAgICAgIGlmICh0b2tlbi50eXBlID09IHdhbnRlZCkgY29udCgpOyAgLy8gY29uc3VtZSB0aGUgdG9rZW4KICAgICAgICBlbHNlIHsKICAgICAgICAgIGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7ICAvLyBjb250aW51ZSBleHBlY3RpbmcoKSAtIGNhbGwgaXRzZWxmCiAgICAgICAgfQogICAgICB9OwogICAgfQoKICAgIC8vIFJlcXVpcmUgYSBzcGVjaWZpYyB0b2tlbiB0eXBlLCBvciBvbmUgb2YgdGhlIHRva2VucyBwYXNzZWQgaW4gdGhlICd3YW50ZWQnIGFycmF5CiAgICAvLyBVc2VkIHRvIGRldGVjdCBibGF0YW50IHN5bnRheCBlcnJvcnMuICdleGVjdXRlJyBpcyB1c2VkIHRvIHBhc3MgZXh0cmEgY29kZQogICAgLy8gdG8gYmUgZXhlY3V0ZWQgaWYgdGhlIHRva2VuIGlzIG1hdGNoZWQuIEZvciBleGFtcGxlLCBhICcoJyBtYXRjaCBjb3VsZAogICAgLy8gJ2V4ZWN1dGUnIGEgY29udCggY29tcGFzZXAoZnVuY2FyZyksIHJlcXVpcmUoIikiKSApCiAgICBmdW5jdGlvbiByZXF1aXJlKHdhbnRlZCwgZXhlY3V0ZSl7CiAgICAgIHJldHVybiBmdW5jdGlvbiByZXF1aXJpbmcodG9rZW4pewogICAgICAgIHZhciBvazsKICAgICAgICB2YXIgdHlwZSA9IHRva2VuLnR5cGU7CiAgICAgICAgaWYgKHR5cGVvZih3YW50ZWQpID09ICJzdHJpbmciKQogICAgICAgICAgb2sgPSAodHlwZSA9PSB3YW50ZWQpIC0xOwogICAgICAgIGVsc2UKICAgICAgICAgIG9rID0gd2FudGVkLmluZGV4T2YodHlwZSk7CiAgICAgICAgaWYgKG9rID49IDApIHsKICAgICAgICAgIGlmIChleGVjdXRlICYmIHR5cGVvZihleGVjdXRlW29rXSkgPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgZXhlY3V0ZVtva10odG9rZW4pOwogICAgICAgICAgICBjb250KCk7ICAvLyBqdXN0IGNvbnN1bWUgdGhlIHRva2VuCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgaWYgKCFtYXJrZWQpIG1hcmsodG9rZW4uc3R5bGUpOwogICAgICAgICAgbWFya19hZGQoInN5bnRheC1lcnJvciIpOwogICAgICAgICAgY29udChhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9CgogICAgLy8gTG9va3MgZm9yIGEgc3RhdGVtZW50LCBhbmQgdGhlbiBjYWxscyBpdHNlbGYuCiAgICBmdW5jdGlvbiBzdGF0ZW1lbnRzKHRva2VuKXsKICAgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBzdGF0ZW1lbnRzKTsKICAgIH0KICAgIC8vIERpc3BhdGNoZXMgdmFyaW91cyB0eXBlcyBvZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICAgZnVuY3Rpb24gc3RhdGVtZW50KHRva2VuKXsKICAgICAgdmFyIHR5cGUgPSB0b2tlbi50eXBlOwogICAgICBpZiAodHlwZSA9PSAia2V5d29yZCBhIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIGFsdHN5bnRheCwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGIiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwdXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGZ1bmNkZWYoKTsKICAgICAgLy8gdGVjaG5pY2FsbHksICJjbGFzcyBpbXBsb2RlIHsuLi59IiBpcyBjb3JyZWN0LCBidXQgd2UnbGwgZmxhZyB0aGF0IGFzIGFuIGVycm9yIGJlY2F1c2UgaXQgb3ZlcnJpZGVzIGEgcHJlZGVmaW5lZCBmdW5jdGlvbgogICAgICBlbHNlIGlmICh0eXBlID09ICJjbGFzcyIpIGNsYXNzZGVmKCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZvcmVhY2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgcmVxdWlyZSgiKCIpLCBwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIHJlcXVpcmUoImFzIiksIHJlcXVpcmUoInZhcmlhYmxlIiksIC8qID0+ICR2YWx1ZSAqLyBleHBlY3QoIikiKSwgYWx0c3ludGF4LCBwb3BsZXgsIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9yIikgY29udChwdXNobGV4KCJmb3JtIiksIHJlcXVpcmUoIigiKSwgcHVzaGxleCgiKSIpLCBleHByZXNzaW9uLCByZXF1aXJlKCI7IiksIGV4cHJlc3Npb24sIHJlcXVpcmUoIjsiKSwgZXhwcmVzc2lvbiwgcmVxdWlyZSgiKSIpLCBhbHRzeW50YXgsIHBvcGxleCwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICAvLyBwdWJsaWMgZmluYWwgZnVuY3Rpb24gZm9vKCksIHByb3RlY3RlZCBzdGF0aWMgJGJhcjsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAibW9kaWZpZXIiKSBjb250KHJlcXVpcmUoWyJtb2RpZmllciIsICJ2YXJpYWJsZSIsICJmdW5jdGlvbiIsICJhYnN0cmFjdCJdLCBbbnVsbCwgbnVsbCwgZnVuY2RlZiwgYWJzZnVuXSkpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJhYnN0cmFjdCIpIGFicygpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzd2l0Y2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgcmVxdWlyZSgiKCIpLCBleHByZXNzaW9uLCByZXF1aXJlKCIpIiksIHB1c2hsZXgoIn0iLCAic3dpdGNoIiksIHJlcXVpcmUoWyI6IiwgInsiXSksIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhc2UiKSBjb250KGV4cHJlc3Npb24sIHJlcXVpcmUoIjoiKSk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImRlZmF1bHQiKSBjb250KHJlcXVpcmUoIjoiKSk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhdGNoIikgY29udChwdXNobGV4KCJmb3JtIiksIHJlcXVpcmUoIigiKSwgcmVxdWlyZSgidF9zdHJpbmciKSwgcmVxdWlyZSgidmFyaWFibGUiKSwgcmVxdWlyZSgiKSIpLCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNvbnN0IikgY29udChyZXF1aXJlKCJ0X3N0cmluZyIpKTsgIC8vICdjb25zdCBzdGF0aWMgeD01JyBpcyBhIHN5bnRheCBlcnJvcgogICAgICAvLyB0ZWNobmljYWxseSwgIm5hbWVzcGFjZSBpbXBsb2RlIHsuLi59IiBpcyBjb3JyZWN0LCBidXQgd2UnbGwgZmxhZyB0aGF0IGFzIGFuIGVycm9yIGJlY2F1c2UgaXQgb3ZlcnJpZGVzIGEgcHJlZGVmaW5lZCBmdW5jdGlvbgogICAgICBlbHNlIGlmICh0eXBlID09ICJuYW1lc3BhY2UiKSBjb250KG5hbWVzcGFjZWRlZiwgcmVxdWlyZSgiOyIpKTsKICAgICAgLy8gJHZhcmlhYmxlcyBtYXkgYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3JzLCAoKSBmb3IgdmFyaWFibGUgZnVuY3Rpb24gY2FsbHMsIG9yIFtdIHN1YnNjcmlwdHMKICAgICAgZWxzZSBwYXNzKHB1c2hsZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgcmVxdWlyZSgiOyIpLCBwb3BsZXgpOwogICAgfQogICAgLy8gRGlzcGF0Y2ggZXhwcmVzc2lvbiB0eXBlcy4KICAgIGZ1bmN0aW9uIGV4cHJlc3Npb24odG9rZW4pewogICAgICB2YXIgdHlwZSA9IHRva2VuLnR5cGU7CiAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgY29udChtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiPDw8IikgY29udChyZXF1aXJlKCJzdHJpbmciKSwgbWF5YmVvcGVyYXRvcik7ICAvLyBoZXJlZG9jL25vd2RvYwogICAgICBlbHNlIGlmICh0eXBlID09ICJ0X3N0cmluZyIpIGNvbnQobWF5YmVfZG91YmxlX2NvbG9uLCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBjIiB8fCB0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIC8vIGxhbWJkYQogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGxhbWJkYWRlZigpOwogICAgICAvLyBmdW5jdGlvbiBjYWxsIG9yIHBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbjogJGEgPSAoJGIgKyAxKSAqIDI7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZXhwcmVzc2lvbiksIHJlcXVpcmUoIikiKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgIH0KICAgIC8vIENhbGxlZCBmb3IgcGxhY2VzIHdoZXJlIG9wZXJhdG9ycywgZnVuY3Rpb24gY2FsbHMsIG9yIHN1YnNjcmlwdHMgYXJlCiAgICAvLyB2YWxpZC4gV2lsbCBza2lwIG9uIHRvIHRoZSBuZXh0IGFjdGlvbiBpZiBub25lIGlzIGZvdW5kLgogICAgZnVuY3Rpb24gbWF5YmVvcGVyYXRvcih0b2tlbil7CiAgICAgIHZhciB0eXBlID0gdG9rZW4udHlwZTsKICAgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgewogICAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICI/IikgY29udChleHByZXNzaW9uLCByZXF1aXJlKCI6IiksIGV4cHJlc3Npb24pOyAgLy8gdGVybmFyeSBvcGVyYXRvcgogICAgICAgIGVsc2UgY29udChleHByZXNzaW9uKTsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIGNvbW1hc2VwKGV4cHJlc3Npb24pLCByZXF1aXJlKCIpIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvciAvKiAkdmFyZnVuYygpICsgMyAqLyk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgZXhwcmVzc2lvbiwgcmVxdWlyZSgiXSIpLCBtYXliZW9wZXJhdG9yIC8qIGZvciBtdWx0aWRpbWVuc2lvbmFsIGFycmF5cywgb3IgJGZ1bmNbJGldKCkgKi8sIHBvcGxleCk7CiAgICB9CiAgICAvLyBBIHJlZ3VsYXIgdXNlIG9mIHRoZSBkb3VibGUgY29sb24gdG8gc3BlY2lmeSBhIGNsYXNzLCBhcyBpbiBzZWxmOjpmdW5jKCkgb3IgbXljbGFzczo6JHZhcjsKICAgIC8vIERpZmZlcnMgZnJvbSBgbmFtZXNwYWNlYCBvciBgdXNlYCBpbiB0aGF0IG9ubHkgb25lIGNsYXNzIGNhbiBiZSB0aGUgcGFyZW50OyBjaGFpbnMgKEE6OkI6OiR2YXIpIGFyZSBhIHN5bnRheCBlcnJvci4KICAgIGZ1bmN0aW9uIG1heWJlX2RvdWJsZV9jb2xvbih0b2tlbikgewogICAgICBpZiAodG9rZW4udHlwZSA9PSAidF9kb3VibGVfY29sb24iKQogICAgICAgIC8vIEE6OiR2YXIsIEE6OmZ1bmMoKSwgQTo6Y29uc3QKICAgICAgICBjb250KHJlcXVpcmUoWyJ0X3N0cmluZyIsICJ2YXJpYWJsZSJdKSwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgewogICAgICAgIC8vIGEgdF9zdHJpbmcgd2Fzbid0IGZvbGxvd2VkIGJ5IDo6LCBzdWNoIGFzIGluIGEgZnVuY3Rpb24gY2FsbDogZm9vKCkKICAgICAgICBwYXNzKGV4cHJlc3Npb24pCiAgICAgIH0KICAgIH0KICAgIC8vIHRoZSBkZWNsYXJhdGlvbiBvciBkZWZpbml0aW9uIG9mIGEgZnVuY3Rpb24KICAgIGZ1bmN0aW9uIGZ1bmNkZWYoKSB7CiAgICAgIGNvbnQocmVxdWlyZSgidF9zdHJpbmciKSwgcmVxdWlyZSgiKCIpLCBwdXNobGV4KCIpIiksIGNvbW1hc2VwKGZ1bmNhcmcpLCByZXF1aXJlKCIpIiksIHBvcGxleCwgYmxvY2spOwogICAgfQogICAgLy8gdGhlIGRlY2xhcmF0aW9uIG9yIGRlZmluaXRpb24gb2YgYSBsYW1iZGEKICAgIGZ1bmN0aW9uIGxhbWJkYWRlZigpIHsKICAgICAgY29udChyZXF1aXJlKCIoIiksIHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZnVuY2FyZyksIHJlcXVpcmUoIikiKSwgbWF5YmVfbGFtYmRhX3VzZSwgcG9wbGV4LCByZXF1aXJlKCJ7IiksIHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxleCk7CiAgICB9CiAgICAvLyBvcHRpb25hbCBsYW1iZGEgJ3VzZScgc3RhdGVtZW50CiAgICBmdW5jdGlvbiBtYXliZV9sYW1iZGFfdXNlKHRva2VuKSB7CiAgICAgIGlmKHRva2VuLnR5cGUgPT0gIm5hbWVzcGFjZSIpIHsKICAgICAgICBjb250KHJlcXVpcmUoJygnKSwgY29tbWFzZXAoZnVuY2FyZyksIHJlcXVpcmUoJyknKSk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgcGFzcyhleHByZXNzaW9uKTsKICAgICAgfQogICAgfQogICAgLy8gdGhlIGRlZmluaXRpb24gb2YgYSBjbGFzcwogICAgZnVuY3Rpb24gY2xhc3NkZWYoKSB7CiAgICAgIGNvbnQocmVxdWlyZSgidF9zdHJpbmciKSwgZXhwZWN0KCJ7IiksIHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxleCk7CiAgICB9CiAgICAvLyBlaXRoZXIgZnVuY2RlZiBpZiB0aGUgY3VycmVudCB0b2tlbiBpcyAiZnVuY3Rpb24iLCBvciB0aGUga2V5d29yZCAiZnVuY3Rpb24iICsgZnVuY2RlZgogICAgZnVuY3Rpb24gYWJzZnVuKHRva2VuKSB7CiAgICAgIGlmKHRva2VuLnR5cGUgPT0gImZ1bmN0aW9uIikgZnVuY2RlZigpOwogICAgICBlbHNlIGNvbnQocmVxdWlyZShbImZ1bmN0aW9uIl0sIFtmdW5jZGVmXSkpOwogICAgfQogICAgLy8gdGhlIGFic3RyYWN0IGNsYXNzIG9yIGZ1bmN0aW9uICh3aXRoIG9wdGlvbmFsIG1vZGlmaWVyKQogICAgZnVuY3Rpb24gYWJzKHRva2VuKSB7CiAgICAgIGNvbnQocmVxdWlyZShbIm1vZGlmaWVyIiwgImZ1bmN0aW9uIiwgImNsYXNzIl0sIFthYnNmdW4sIGZ1bmNkZWYsIGNsYXNzZGVmXSkpOwogICAgfQogICAgLy8gUGFyc2VzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHRoaW5ncyB0aGF0IGFyZSByZWNvZ25pemVkCiAgICAvLyBieSB0aGUgJ3doYXQnIGFyZ3VtZW50LgogICAgZnVuY3Rpb24gY29tbWFzZXAod2hhdCl7CiAgICAgIGZ1bmN0aW9uIHByb2NlZWQodG9rZW4pIHsKICAgICAgICBpZiAodG9rZW4udHlwZSA9PSAiLCIpIGNvbnQod2hhdCwgcHJvY2VlZCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvbW1hU2VwYXJhdGVkKCkgewogICAgICAgIHBhc3Mod2hhdCwgcHJvY2VlZCk7CiAgICAgIH07CiAgICB9CiAgICAvLyBMb29rIGZvciBzdGF0ZW1lbnRzIHVudGlsIGEgY2xvc2luZyBicmFjZSBpcyBmb3VuZC4KICAgIGZ1bmN0aW9uIGJsb2NrKHRva2VuKSB7CiAgICAgIGlmICh0b2tlbi50eXBlID09ICJ9IikgY29udCgpOwogICAgICBlbHNlIHBhc3Moc3RhdGVtZW50LCBibG9jayk7CiAgICB9CiAgICBmdW5jdGlvbiBlbXB0eV9wYXJlbnNfaWZfYXJyYXkodG9rZW4pIHsKICAgICAgaWYodG9rZW4uY29udGVudCA9PSAiYXJyYXkiKQogICAgICAgIGNvbnQocmVxdWlyZSgiKCIpLCByZXF1aXJlKCIpIikpOwogICAgfQogICAgZnVuY3Rpb24gbWF5YmVkZWZhdWx0cGFyYW1ldGVyKHRva2VuKXsKICAgICAgaWYgKHRva2VuLmNvbnRlbnQgPT0gIj0iKSBjb250KHJlcXVpcmUoWyJ0X3N0cmluZyIsICJzdHJpbmciLCAibnVtYmVyIiwgImF0b20iXSwgW2VtcHR5X3BhcmVuc19pZl9hcnJheSwgbnVsbCwgbnVsbF0pKTsKICAgIH0KICAgIGZ1bmN0aW9uIHZhcl9vcl9yZWZlcmVuY2UodG9rZW4pIHsKICAgICAgaWYodG9rZW4udHlwZSA9PSAidmFyaWFibGUiKSBjb250KG1heWJlZGVmYXVsdHBhcmFtZXRlcik7CiAgICAgIGVsc2UgaWYodG9rZW4uY29udGVudCA9PSAiJiIpIGNvbnQocmVxdWlyZSgidmFyaWFibGUiKSwgbWF5YmVkZWZhdWx0cGFyYW1ldGVyKTsKICAgIH0KICAgIC8vIHN1cHBvcnQgZm9yIGRlZmF1bHQgYXJndW1lbnRzOiBodHRwOi8vdXMucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb25zLmFyZ3VtZW50cy5waHAjZnVuY3Rpb25zLmFyZ3VtZW50cy5kZWZhdWx0CiAgICBmdW5jdGlvbiBmdW5jYXJnKHRva2VuKXsKICAgICAgLy8gZnVuY3Rpb24gZm9vKG15Y2xhc3MgJG9iaikgey4uLn0gb3IgZnVuY3Rpb24gZm9vKG15Y2xhc3MgJm9ianJlZikgey4uLn0KICAgICAgaWYgKHRva2VuLnR5cGUgPT0gInRfc3RyaW5nIikgY29udCh2YXJfb3JfcmVmZXJlbmNlKTsKICAgICAgLy8gZnVuY3Rpb24gZm9vKCR2YXIpIHsuLi59IG9yIGZ1bmN0aW9uIGZvbygmJHJlZikgey4uLn0KICAgICAgZWxzZSB2YXJfb3JfcmVmZXJlbmNlKHRva2VuKTsKICAgIH0KCiAgICAvLyBBIG5hbWVzcGFjZSBkZWZpbml0aW9uIG9yIHVzZQogICAgZnVuY3Rpb24gbWF5YmVfZG91YmxlX2NvbG9uX2RlZih0b2tlbikgewogICAgICBpZiAodG9rZW4udHlwZSA9PSAidF9kb3VibGVfY29sb24iKQogICAgICAgIGNvbnQobmFtZXNwYWNlZGVmKTsKICAgIH0KICAgIGZ1bmN0aW9uIG5hbWVzcGFjZWRlZih0b2tlbikgewogICAgICBwYXNzKHJlcXVpcmUoInRfc3RyaW5nIiksIG1heWJlX2RvdWJsZV9jb2xvbl9kZWYpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBhbHRzeW50YXgodG9rZW4pewogICAgCWlmKHRva2VuLmNvbnRlbnQ9PSc6JykKICAgIAkJY29udChhbHRzeW50YXhCbG9jayxwb3BsZXgpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBhbHRzeW50YXhCbG9jayh0b2tlbil7CiAgICAJaWYgKHRva2VuLnR5cGUgPT0gImFsdHN5bnRheGVuZCIpIGNvbnQocmVxdWlyZSgnOycpKTsKICAgICAgZWxzZSBwYXNzKHN0YXRlbWVudCwgYWx0c3ludGF4QmxvY2spOwogICAgfQoKCiAgICByZXR1cm4gcGFyc2VyOwogIH0KCiAgcmV0dXJuIHttYWtlOiBwYXJzZVBIUCwgZWxlY3RyaWNDaGFyczogInt9OiJ9OwoKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/parsephphtmlmixed.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhlIGNvcHlyaWdodHMgZW1ib2RpZWQgaW4gdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGFyZSBsaWNlbnNlZCBieQpZYWhvbyEgSW5jLiB1bmRlciB0aGUgQlNEIChyZXZpc2VkKSBvcGVuIHNvdXJjZSBsaWNlbnNlCgpAYXV0aG9yIERhbiBWbGFkIERhc2NhbGVzY3UgPGRhbmR2QHlhaG9vLWluYy5jb20+CgpCYXNlZCBvbiBwYXJzZWh0bWxtaXhlZC5qcyBieSBNYXJpam4gSGF2ZXJiZWtlLgoqLwoKdmFyIFBIUEhUTUxNaXhlZFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbnMgPSBbIjw/cGhwIl07CgogIGlmICghKFBIUFBhcnNlciAmJiBDU1NQYXJzZXIgJiYgSlNQYXJzZXIgJiYgWE1MUGFyc2VyKSkKICAgIHRocm93IG5ldyBFcnJvcigiUEhQLCBDU1MsIEpTLCBhbmQgWE1MIHBhcnNlcnMgbXVzdCBiZSBsb2FkZWQgZm9yIFBIUCtIVE1MIG1peGVkIG1vZGUgdG8gd29yay4iKTsKICBYTUxQYXJzZXIuY29uZmlndXJlKHt1c2VIVE1MS2x1ZGdlczogdHJ1ZX0pOwoKICBmdW5jdGlvbiBwYXJzZU1peGVkKHN0cmVhbSkgewogICAgdmFyIGh0bWxQYXJzZXIgPSBYTUxQYXJzZXIubWFrZShzdHJlYW0pLCBsb2NhbFBhcnNlciA9IG51bGwsCiAgICAgICAgaW5UYWcgPSBmYWxzZSwgbGFzdEF0dCA9IG51bGwsIHBocFBhcnNlclN0YXRlID0gbnVsbDsKICAgIHZhciBpdGVyID0ge25leHQ6IHRvcCwgY29weTogY29weX07CgogICAgZnVuY3Rpb24gdG9wKCkgewogICAgICB2YXIgdG9rZW4gPSBodG1sUGFyc2VyLm5leHQoKTsKICAgICAgaWYgKHRva2VuLmNvbnRlbnQgPT0gIjwiKQogICAgICAgIGluVGFnID0gdHJ1ZTsKICAgICAgZWxzZSBpZiAodG9rZW4uc3R5bGUgPT0gInhtbC10YWduYW1lIiAmJiBpblRhZyA9PT0gdHJ1ZSkKICAgICAgICBpblRhZyA9IHRva2VuLmNvbnRlbnQudG9Mb3dlckNhc2UoKTsKICAgICAgZWxzZSBpZiAodG9rZW4uc3R5bGUgPT0gInhtbC1hdHRuYW1lIikKICAgICAgICBsYXN0QXR0ID0gdG9rZW4uY29udGVudDsKICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PSAieG1sLXByb2Nlc3NpbmciKSB7CiAgICAgICAgLy8gc2VlIGlmIHRoaXMgb3BlbnMgYSBQSFAgYmxvY2sKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2Nlc3NpbmdJbnN0cnVjdGlvbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICBpZiAocHJvY2Vzc2luZ0luc3RydWN0aW9uc1tpXSA9PSB0b2tlbi5jb250ZW50KSB7CiAgICAgICAgICAgIGl0ZXIubmV4dCA9IGxvY2FsKFBIUFBhcnNlciwgIj8+Iik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UgaWYgKHRva2VuLnN0eWxlID09ICJ4bWwtYXR0cmlidXRlIiAmJiB0b2tlbi5jb250ZW50ID09ICJcInBocFwiIiAmJiBpblRhZyA9PSAic2NyaXB0IiAmJiBsYXN0QXR0ID09ICJsYW5ndWFnZSIpCiAgICAgICAgaW5UYWcgPSAic2NyaXB0L3BocCI7CiAgICAgIC8vICJ4bWwtcHJvY2Vzc2luZyIgdG9rZW5zIGFyZSBpZ25vcmVkLCBiZWNhdXNlIHRoZXkgc2hvdWxkIGJlIGhhbmRsZWQgYnkgYSBzcGVjaWZpYyBsb2NhbCBwYXJzZXIKICAgICAgZWxzZSBpZiAodG9rZW4uY29udGVudCA9PSAiPiIpIHsKICAgICAgICBpZiAoaW5UYWcgPT0gInNjcmlwdC9waHAiKQogICAgICAgICAgaXRlci5uZXh0ID0gbG9jYWwoUEhQUGFyc2VyLCAiPC9zY3JpcHQ+Iik7CiAgICAgICAgZWxzZSBpZiAoaW5UYWcgPT0gInNjcmlwdCIpCiAgICAgICAgICBpdGVyLm5leHQgPSBsb2NhbChKU1BhcnNlciwgIjwvc2NyaXB0Iik7CiAgICAgICAgZWxzZSBpZiAoaW5UYWcgPT0gInN0eWxlIikKICAgICAgICAgIGl0ZXIubmV4dCA9IGxvY2FsKENTU1BhcnNlciwgIjwvc3R5bGUiKTsKICAgICAgICBsYXN0QXR0ID0gbnVsbDsKICAgICAgICBpblRhZyA9IGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KICAgIGZ1bmN0aW9uIGxvY2FsKHBhcnNlciwgdGFnKSB7CiAgICAgIHZhciBiYXNlSW5kZW50ID0gaHRtbFBhcnNlci5pbmRlbnRhdGlvbigpOwogICAgICBpZiAocGFyc2VyID09IFBIUFBhcnNlciAmJiBwaHBQYXJzZXJTdGF0ZSkKICAgICAgICBsb2NhbFBhcnNlciA9IHBocFBhcnNlclN0YXRlKHN0cmVhbSk7CiAgICAgIGVsc2UKICAgICAgICBsb2NhbFBhcnNlciA9IHBhcnNlci5tYWtlKHN0cmVhbSwgYmFzZUluZGVudCArIGluZGVudFVuaXQpOwoKICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChzdHJlYW0ubG9va0FoZWFkKHRhZywgZmFsc2UsIGZhbHNlLCB0cnVlKSkgewogICAgICAgICAgaWYgKHBhcnNlciA9PSBQSFBQYXJzZXIpIHBocFBhcnNlclN0YXRlID0gbG9jYWxQYXJzZXIuY29weSgpOwogICAgICAgICAgbG9jYWxQYXJzZXIgPSBudWxsOwogICAgICAgICAgaXRlci5uZXh0ID0gdG9wOwogICAgICAgICAgcmV0dXJuIHRvcCgpOyAgLy8gcGFzcyB0aGUgZW5kaW5nIHRhZyB0byB0aGUgZW5jbG9zaW5nIHBhcnNlcgogICAgICAgIH0KCiAgICAgICAgdmFyIHRva2VuID0gbG9jYWxQYXJzZXIubmV4dCgpOwogICAgICAgIHZhciBsdCA9IHRva2VuLnZhbHVlLmxhc3RJbmRleE9mKCI8IiksIHN6ID0gTWF0aC5taW4odG9rZW4udmFsdWUubGVuZ3RoIC0gbHQsIHRhZy5sZW5ndGgpOwogICAgICAgIGlmIChsdCAhPSAtMSAmJiB0b2tlbi52YWx1ZS5zbGljZShsdCwgbHQgKyBzeikudG9Mb3dlckNhc2UoKSA9PSB0YWcuc2xpY2UoMCwgc3opICYmCiAgICAgICAgICAgIHN0cmVhbS5sb29rQWhlYWQodGFnLnNsaWNlKHN6KSwgZmFsc2UsIGZhbHNlLCB0cnVlKSkgewogICAgICAgICAgc3RyZWFtLnB1c2godG9rZW4udmFsdWUuc2xpY2UobHQpKTsKICAgICAgICAgIHRva2VuLnZhbHVlID0gdG9rZW4udmFsdWUuc2xpY2UoMCwgbHQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRva2VuLmluZGVudGF0aW9uKSB7CiAgICAgICAgICB2YXIgb2xkSW5kZW50ID0gdG9rZW4uaW5kZW50YXRpb247CiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGZ1bmN0aW9uKGNoYXJzKSB7CiAgICAgICAgICAgIGlmIChjaGFycyA9PSAiPC8iKQogICAgICAgICAgICAgIHJldHVybiBiYXNlSW5kZW50OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIG9sZEluZGVudChjaGFycyk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gY29weSgpIHsKICAgICAgdmFyIF9odG1sID0gaHRtbFBhcnNlci5jb3B5KCksIF9sb2NhbCA9IGxvY2FsUGFyc2VyICYmIGxvY2FsUGFyc2VyLmNvcHkoKSwKICAgICAgICAgIF9uZXh0ID0gaXRlci5uZXh0LCBfaW5UYWcgPSBpblRhZywgX2xhc3RBdHQgPSBsYXN0QXR0LCBfcGhwID0gcGhwUGFyc2VyU3RhdGU7CiAgICAgIHJldHVybiBmdW5jdGlvbihfc3RyZWFtKSB7CiAgICAgICAgc3RyZWFtID0gX3N0cmVhbTsKICAgICAgICBodG1sUGFyc2VyID0gX2h0bWwoX3N0cmVhbSk7CiAgICAgICAgbG9jYWxQYXJzZXIgPSBfbG9jYWwgJiYgX2xvY2FsKF9zdHJlYW0pOwogICAgICAgIHBocFBhcnNlclN0YXRlID0gX3BocDsKICAgICAgICBpdGVyLm5leHQgPSBfbmV4dDsKICAgICAgICBpblRhZyA9IF9pblRhZzsKICAgICAgICBsYXN0QXR0ID0gX2xhc3RBdHQ7CiAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgIH07CiAgICB9CiAgICByZXR1cm4gaXRlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZU1peGVkLAogICAgZWxlY3RyaWNDaGFyczogInt9LzoiLAogICAgY29uZmlndXJlOiBmdW5jdGlvbihjb25mKSB7CiAgICAgIGlmIChjb25mLm9wZW5pbmcgIT0gbnVsbCkgcHJvY2Vzc2luZ0luc3RydWN0aW9ucyA9IGNvbmYub3BlbmluZzsKICAgIH0KICB9OwoKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/tokenizephp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoZSBjb3B5cmlnaHRzIGVtYm9kaWVkIGluIHRoZSBjb250ZW50IG9mIHRoaXMgZmlsZSBhcmUgbGljZW5zZWQgYnkKWWFob28hIEluYy4gdW5kZXIgdGhlIEJTRCAocmV2aXNlZCkgb3BlbiBzb3VyY2UgbGljZW5zZQoKQGF1dGhvciBWbGFkIERhbiBEYXNjYWxlc2N1IDxkYW5kdkB5YWhvby1pbmMuY29tPgoKClRva2VuaXplciBmb3IgUEhQIGNvZGUKClJlZmVyZW5jZXM6CiAgKyBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQucGhwCiAgKyBodHRwOi8vcGhwLm5ldC90b2tlbnMKICArIGdldF9kZWZpbmVkX2NvbnN0YW50cygpLCBnZXRfZGVmaW5lZF9mdW5jdGlvbnMoKSwgZ2V0X2RlY2xhcmVkX2NsYXNzZXMoKQogICAgICBleGVjdXRlZCBvbiBhIHJlYWxpc3RpYyAobm90IHZhbmlsbGEpIFBIUCBpbnN0YWxsYXRpb24gd2l0aCB0eXBpY2FsIExBTVAgbW9kdWxlcy4KICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgUEhQIGJ1bmRsZWQgd2l0aCB0aGUgVW5pZm9ybSBXZWIgU2VydmVyICh3d3cudW5pZm9ybXNlcnZlci5jb20pLgoKKi8KCgovLyBhZGQgdGhlIGZvckVhY2ggbWV0aG9kIGZvciBKUyBlbmdpbmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAoZS5nLiBJRSkKLy8gY29kZSBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL0VuL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAppZiAoIUFycmF5LnByb3RvdHlwZS5mb3JFYWNoKQp7CiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihmdW4gLyosIHRoaXNwKi8pCiAgewogICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoOwogICAgaWYgKHR5cGVvZiBmdW4gIT0gImZ1bmN0aW9uIikKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpOwoKICAgIHZhciB0aGlzcCA9IGFyZ3VtZW50c1sxXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICB7CiAgICAgIGlmIChpIGluIHRoaXMpCiAgICAgICAgZnVuLmNhbGwodGhpc3AsIHRoaXNbaV0sIGksIHRoaXMpOwogICAgfQogIH07Cn0KCgp2YXIgdG9rZW5pemVQSFAgPSAoZnVuY3Rpb24oKSB7CiAgLyogQSBtYXAgb2YgUEhQJ3MgcmVzZXJ2ZWQgd29yZHMgKGtleXdvcmRzLCBwcmVkZWZpbmVkIGNsYXNzZXMsIGZ1bmN0aW9ucyBhbmQKICAgICBjb25zdGFudHMuIEVhY2ggdG9rZW4gaGFzIGEgdHlwZSAoJ2tleXdvcmQnLCAnb3BlcmF0b3InIGV0Yy4pIGFuZCBhIHN0eWxlLgogICAgIFRoZSBzdHlsZSBjb3JyZXNwb25kcyB0byB0aGUgQ1NTIHNwYW4gY2xhc3MgaW4gcGhwY29sb3JzLmNzcy4KCiAgICAgS2V5d29yZHMgY2FuIGJlIG9mIHRocmVlIHR5cGVzOgogICAgIGEgLSB0YWtlcyBhbiBleHByZXNzaW9uIGFuZCBmb3JtcyBhIHN0YXRlbWVudCAtIGUuZy4gaWYKICAgICBiIC0gdGFrZXMganVzdCBhIHN0YXRlbWVudCAtIGUuZy4gZWxzZQogICAgIGMgLSB0YWtlcyBhbiBvcHRpbm9hbCBleHByZXNzaW9uLCBidXQgbm8gc3RhdGVtZW50IC0gZS5nLiByZXR1cm4KICAgICBUaGlzIGRpc3RpbmN0aW9uIGdpdmVzIHRoZSBwYXJzZXIgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHBhcnNlCiAgICAgY29ycmVjdCBjb2RlIGNvcnJlY3RseSAod2UgZG9uJ3QgY2FyZSB0aGF0IG11Y2ggaG93IHdlIHBhcnNlCiAgICAgaW5jb3JyZWN0IGNvZGUpLgoKICAgICBSZWZlcmVuY2U6IGh0dHA6Ly91cy5waHAubmV0L21hbnVhbC9lbi9yZXNlcnZlZC5waHAKICAqLwogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiB0b2tlbih0eXBlLCBzdHlsZSl7CiAgICAgIHJldHVybiB7dHlwZTogdHlwZSwgc3R5bGU6IHN0eWxlfTsKICAgIH0KICAgIHZhciByZXN1bHQgPSB7fTsKCiAgICAvLyBmb3IgZWFjaCh2YXIgZWxlbWVudCBpbiBbIi4uLiIsICIuLi4iXSkgY2FuIHBpY2sgdXAgZWxlbWVudHMgYWRkZWQgdG8KICAgIC8vIEFycmF5LnByb3RvdHlwZSwgc28gd2UnbGwgdXNlIHRoZSBsb29wIHN0cnVjdHVyZSBiZWxvdy4gU2VlIGFsc28KICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2UvU3RhdGVtZW50cy9mb3JfZWFjaC4uLmluCgogICAgLy8ga2V5d29yZHMgdGhhdCB0YWtlIGFuIGV4cHJlc3Npb24gYW5kIGZvcm0gYSBzdGF0ZW1lbnQKICAgIFsiaWYiLCAiZWxzZWlmIiwgIndoaWxlIiwgImRlY2xhcmUiXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigia2V5d29yZCBhIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UganVzdCBhIHN0YXRlbWVudAogICAgWyJkbyIsICJlbHNlIiwgInRyeSIgXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigia2V5d29yZCBiIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UgYW4gb3B0aW9uYWwgZXhwcmVzc2lvbiwgYnV0IG5vIHN0YXRlbWVudAogICAgWyJyZXR1cm4iLCAiYnJlYWsiLCAiY29udGludWUiLCAgLy8gdGhlIGV4cHJlc3Npb24gaXMgb3B0aW9uYWwKICAgICAgIm5ldyIsICJjbG9uZSIsICJ0aHJvdyIgIC8vIHRoZSBleHByZXNzaW9uIGlzIG1hbmRhdG9yeQogICAgXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigia2V5d29yZCBjIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICBbIl9fQ0xBU1NfXyIsICJfX0RJUl9fIiwgIl9fRklMRV9fIiwgIl9fRlVOQ1RJT05fXyIsICJfX01FVEhPRF9fIiwgIl9fTkFNRVNQQUNFX18iXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigiYXRvbSIsICJwaHAtY29tcGlsZS10aW1lLWNvbnN0YW50Iik7CiAgICB9KTsKCiAgICBbInRydWUiLCAiZmFsc2UiLCAibnVsbCJdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJhdG9tIiwgInBocC1hdG9tIik7CiAgICB9KTsKCiAgICBbImFuZCIsICJvciIsICJ4b3IiLCAiaW5zdGFuY2VvZiJdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJvcGVyYXRvciIsICJwaHAta2V5d29yZCBwaHAtb3BlcmF0b3IiKTsKICAgIH0pOwoKICAgIFsiY2xhc3MiLCAiaW50ZXJmYWNlIl0uZm9yRWFjaChmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHsKICAgICAgcmVzdWx0W2VsZW1lbnRdID0gdG9rZW4oImNsYXNzIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKICAgIFsibmFtZXNwYWNlIiwgInVzZSIsICJleHRlbmRzIiwgImltcGxlbWVudHMiXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigibmFtZXNwYWNlIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICAvLyByZXNlcnZlZCAibGFuZ3VhZ2UgY29uc3RydWN0cyIuLi4gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLnBocAogICAgWyAiZGllIiwgImVjaG8iLCAiZW1wdHkiLCAiZXhpdCIsICJldmFsIiwgImluY2x1ZGUiLCAiaW5jbHVkZV9vbmNlIiwgImlzc2V0IiwKICAgICAgImxpc3QiLCAicmVxdWlyZSIsICJyZXF1aXJlX29uY2UiLCAicmV0dXJuIiwgInByaW50IiwgInVuc2V0IiwKICAgICAgImFycmF5IiAvLyBhIGtleXdvcmQgcmF0aGVyLCBidXQgbWFuZGF0ZXMgYSBwYXJlbnRoZXNpemVkIHBhcmFtZXRlciBsaXN0CiAgICBdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJ0X3N0cmluZyIsICJwaHAtcmVzZXJ2ZWQtbGFuZ3VhZ2UtY29uc3RydWN0Iik7CiAgICB9KTsKCiAgICByZXN1bHRbInN3aXRjaCJdID0gdG9rZW4oInN3aXRjaCIsICJwaHAta2V5d29yZCIpOwogICAgcmVzdWx0WyJjYXNlIl0gPSB0b2tlbigiY2FzZSIsICJwaHAta2V5d29yZCIpOwogICAgcmVzdWx0WyJkZWZhdWx0Il0gPSB0b2tlbigiZGVmYXVsdCIsICJwaHAta2V5d29yZCIpOwogICAgcmVzdWx0WyJjYXRjaCJdID0gdG9rZW4oImNhdGNoIiwgInBocC1rZXl3b3JkIik7CiAgICByZXN1bHRbImZ1bmN0aW9uIl0gPSB0b2tlbigiZnVuY3Rpb24iLCAicGhwLWtleXdvcmQiKTsKCiAgICAvLyBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vY29udHJvbC1zdHJ1Y3R1cmVzLmFsdGVybmF0aXZlLXN5bnRheC5waHAgbXVzdCBiZSBmb2xsb3dlZCBieSBhICc6JwogICAgWyJlbmRpZiIsICJlbmR3aGlsZSIsICJlbmRmb3IiLCAiZW5kZm9yZWFjaCIsICJlbmRzd2l0Y2giLCAiZW5kZGVjbGFyZSJdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJhbHRzeW50YXhlbmQiLCAicGhwLWtleXdvcmQiKTsKICAgIH0pOwoKICAgIHJlc3VsdFsiY29uc3QiXSA9IHRva2VuKCJjb25zdCIsICJwaHAta2V5d29yZCIpOwoKICAgIFsiZmluYWwiLCAicHJpdmF0ZSIsICJwcm90ZWN0ZWQiLCAicHVibGljIiwgImdsb2JhbCIsICJzdGF0aWMiXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigibW9kaWZpZXIiLCAicGhwLWtleXdvcmQiKTsKICAgIH0pOwogICAgcmVzdWx0WyJ2YXIiXSA9IHRva2VuKCJtb2RpZmllciIsICJwaHAta2V5d29yZCBkZXByZWNhdGVkIik7CiAgICByZXN1bHRbImFic3RyYWN0Il0gPSB0b2tlbigiYWJzdHJhY3QiLCAicGhwLWtleXdvcmQiKTsKCiAgICByZXN1bHRbImZvcmVhY2giXSA9IHRva2VuKCJmb3JlYWNoIiwgInBocC1rZXl3b3JkIik7CiAgICByZXN1bHRbImFzIl0gPSB0b2tlbigiYXMiLCAicGhwLWtleXdvcmQiKTsKICAgIHJlc3VsdFsiZm9yIl0gPSB0b2tlbigiZm9yIiwgInBocC1rZXl3b3JkIik7CgogICAgLy8gUEhQIGJ1aWx0LWluIGZ1bmN0aW9ucyAtIG91dHB1dCBvZiBnZXRfZGVmaW5lZF9mdW5jdGlvbnMoKVsiaW50ZXJuYWwiXQogICAgWyAiemVuZF92ZXJzaW9uIiwgImZ1bmNfbnVtX2FyZ3MiLCAiZnVuY19nZXRfYXJnIiwgImZ1bmNfZ2V0X2FyZ3MiLCAic3RybGVuIiwKICAgICAgInN0cmNtcCIsICJzdHJuY21wIiwgInN0cmNhc2VjbXAiLCAic3RybmNhc2VjbXAiLCAiZWFjaCIsICJlcnJvcl9yZXBvcnRpbmciLAogICAgICAiZGVmaW5lIiwgImRlZmluZWQiLCAiZ2V0X2NsYXNzIiwgImdldF9wYXJlbnRfY2xhc3MiLCAibWV0aG9kX2V4aXN0cyIsCiAgICAgICJwcm9wZXJ0eV9leGlzdHMiLCAiY2xhc3NfZXhpc3RzIiwgImludGVyZmFjZV9leGlzdHMiLCAiZnVuY3Rpb25fZXhpc3RzIiwKICAgICAgImdldF9pbmNsdWRlZF9maWxlcyIsICJnZXRfcmVxdWlyZWRfZmlsZXMiLCAiaXNfc3ViY2xhc3Nfb2YiLCAiaXNfYSIsCiAgICAgICJnZXRfY2xhc3NfdmFycyIsICJnZXRfb2JqZWN0X3ZhcnMiLCAiZ2V0X2NsYXNzX21ldGhvZHMiLCAidHJpZ2dlcl9lcnJvciIsCiAgICAgICJ1c2VyX2Vycm9yIiwgInNldF9lcnJvcl9oYW5kbGVyIiwgInJlc3RvcmVfZXJyb3JfaGFuZGxlciIsCiAgICAgICJzZXRfZXhjZXB0aW9uX2hhbmRsZXIiLCAicmVzdG9yZV9leGNlcHRpb25faGFuZGxlciIsICJnZXRfZGVjbGFyZWRfY2xhc3NlcyIsCiAgICAgICJnZXRfZGVjbGFyZWRfaW50ZXJmYWNlcyIsICJnZXRfZGVmaW5lZF9mdW5jdGlvbnMiLCAiZ2V0X2RlZmluZWRfdmFycyIsCiAgICAgICJjcmVhdGVfZnVuY3Rpb24iLCAiZ2V0X3Jlc291cmNlX3R5cGUiLCAiZ2V0X2xvYWRlZF9leHRlbnNpb25zIiwKICAgICAgImV4dGVuc2lvbl9sb2FkZWQiLCAiZ2V0X2V4dGVuc2lvbl9mdW5jcyIsICJnZXRfZGVmaW5lZF9jb25zdGFudHMiLAogICAgICAiZGVidWdfYmFja3RyYWNlIiwgImRlYnVnX3ByaW50X2JhY2t0cmFjZSIsICJiY2FkZCIsICJiY3N1YiIsICJiY211bCIsICJiY2RpdiIsCiAgICAgICJiY21vZCIsICJiY3BvdyIsICJiY3NxcnQiLCAiYmNzY2FsZSIsICJiY2NvbXAiLCAiYmNwb3dtb2QiLCAiamR0b2dyZWdvcmlhbiIsCiAgICAgICJncmVnb3JpYW50b2pkIiwgImpkdG9qdWxpYW4iLCAianVsaWFudG9qZCIsICJqZHRvamV3aXNoIiwgImpld2lzaHRvamQiLAogICAgICAiamR0b2ZyZW5jaCIsICJmcmVuY2h0b2pkIiwgImpkZGF5b2Z3ZWVrIiwgImpkbW9udGhuYW1lIiwgImVhc3Rlcl9kYXRlIiwKICAgICAgImVhc3Rlcl9kYXlzIiwgInVuaXh0b2pkIiwgImpkdG91bml4IiwgImNhbF90b19qZCIsICJjYWxfZnJvbV9qZCIsCiAgICAgICJjYWxfZGF5c19pbl9tb250aCIsICJjYWxfaW5mbyIsICJ2YXJpYW50X3NldCIsICJ2YXJpYW50X2FkZCIsICJ2YXJpYW50X2NhdCIsCiAgICAgICJ2YXJpYW50X3N1YiIsICJ2YXJpYW50X211bCIsICJ2YXJpYW50X2FuZCIsICJ2YXJpYW50X2RpdiIsICJ2YXJpYW50X2VxdiIsCiAgICAgICJ2YXJpYW50X2lkaXYiLCAidmFyaWFudF9pbXAiLCAidmFyaWFudF9tb2QiLCAidmFyaWFudF9vciIsICJ2YXJpYW50X3BvdyIsCiAgICAgICJ2YXJpYW50X3hvciIsICJ2YXJpYW50X2FicyIsICJ2YXJpYW50X2ZpeCIsICJ2YXJpYW50X2ludCIsICJ2YXJpYW50X25lZyIsCiAgICAgICJ2YXJpYW50X25vdCIsICJ2YXJpYW50X3JvdW5kIiwgInZhcmlhbnRfY21wIiwgInZhcmlhbnRfZGF0ZV90b190aW1lc3RhbXAiLAogICAgICAidmFyaWFudF9kYXRlX2Zyb21fdGltZXN0YW1wIiwgInZhcmlhbnRfZ2V0X3R5cGUiLCAidmFyaWFudF9zZXRfdHlwZSIsCiAgICAgICJ2YXJpYW50X2Nhc3QiLCAiY29tX2NyZWF0ZV9ndWlkIiwgImNvbV9ldmVudF9zaW5rIiwgImNvbV9wcmludF90eXBlaW5mbyIsCiAgICAgICJjb21fbWVzc2FnZV9wdW1wIiwgImNvbV9sb2FkX3R5cGVsaWIiLCAiY29tX2dldF9hY3RpdmVfb2JqZWN0IiwgImN0eXBlX2FsbnVtIiwKICAgICAgImN0eXBlX2FscGhhIiwgImN0eXBlX2NudHJsIiwgImN0eXBlX2RpZ2l0IiwgImN0eXBlX2xvd2VyIiwgImN0eXBlX2dyYXBoIiwKICAgICAgImN0eXBlX3ByaW50IiwgImN0eXBlX3B1bmN0IiwgImN0eXBlX3NwYWNlIiwgImN0eXBlX3VwcGVyIiwgImN0eXBlX3hkaWdpdCIsCiAgICAgICJzdHJ0b3RpbWUiLCAiZGF0ZSIsICJpZGF0ZSIsICJnbWRhdGUiLCAibWt0aW1lIiwgImdtbWt0aW1lIiwgImNoZWNrZGF0ZSIsCiAgICAgICJzdHJmdGltZSIsICJnbXN0cmZ0aW1lIiwgInRpbWUiLCAibG9jYWx0aW1lIiwgImdldGRhdGUiLCAiZGF0ZV9jcmVhdGUiLAogICAgICAiZGF0ZV9wYXJzZSIsICJkYXRlX2Zvcm1hdCIsICJkYXRlX21vZGlmeSIsICJkYXRlX3RpbWV6b25lX2dldCIsCiAgICAgICJkYXRlX3RpbWV6b25lX3NldCIsICJkYXRlX29mZnNldF9nZXQiLCAiZGF0ZV90aW1lX3NldCIsICJkYXRlX2RhdGVfc2V0IiwKICAgICAgImRhdGVfaXNvZGF0ZV9zZXQiLCAidGltZXpvbmVfb3BlbiIsICJ0aW1lem9uZV9uYW1lX2dldCIsCiAgICAgICJ0aW1lem9uZV9uYW1lX2Zyb21fYWJiciIsICJ0aW1lem9uZV9vZmZzZXRfZ2V0IiwgInRpbWV6b25lX3RyYW5zaXRpb25zX2dldCIsCiAgICAgICJ0aW1lem9uZV9pZGVudGlmaWVyc19saXN0IiwgInRpbWV6b25lX2FiYnJldmlhdGlvbnNfbGlzdCIsCiAgICAgICJkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0IiwgImRhdGVfZGVmYXVsdF90aW1lem9uZV9nZXQiLCAiZGF0ZV9zdW5yaXNlIiwKICAgICAgImRhdGVfc3Vuc2V0IiwgImRhdGVfc3VuX2luZm8iLCAiZmlsdGVyX2lucHV0IiwgImZpbHRlcl92YXIiLAogICAgICAiZmlsdGVyX2lucHV0X2FycmF5IiwgImZpbHRlcl92YXJfYXJyYXkiLCAiZmlsdGVyX2xpc3QiLCAiZmlsdGVyX2hhc192YXIiLAogICAgICAiZmlsdGVyX2lkIiwgImZ0cF9jb25uZWN0IiwgImZ0cF9sb2dpbiIsICJmdHBfcHdkIiwgImZ0cF9jZHVwIiwgImZ0cF9jaGRpciIsCiAgICAgICJmdHBfZXhlYyIsICJmdHBfcmF3IiwgImZ0cF9ta2RpciIsICJmdHBfcm1kaXIiLCAiZnRwX2NobW9kIiwgImZ0cF9hbGxvYyIsCiAgICAgICJmdHBfbmxpc3QiLCAiZnRwX3Jhd2xpc3QiLCAiZnRwX3N5c3R5cGUiLCAiZnRwX3Bhc3YiLCAiZnRwX2dldCIsICJmdHBfZmdldCIsCiAgICAgICJmdHBfcHV0IiwgImZ0cF9mcHV0IiwgImZ0cF9zaXplIiwgImZ0cF9tZHRtIiwgImZ0cF9yZW5hbWUiLCAiZnRwX2RlbGV0ZSIsCiAgICAgICJmdHBfc2l0ZSIsICJmdHBfY2xvc2UiLCAiZnRwX3NldF9vcHRpb24iLCAiZnRwX2dldF9vcHRpb24iLCAiZnRwX25iX2ZnZXQiLAogICAgICAiZnRwX25iX2dldCIsICJmdHBfbmJfY29udGludWUiLCAiZnRwX25iX3B1dCIsICJmdHBfbmJfZnB1dCIsICJmdHBfcXVpdCIsCiAgICAgICJoYXNoIiwgImhhc2hfZmlsZSIsICJoYXNoX2htYWMiLCAiaGFzaF9obWFjX2ZpbGUiLCAiaGFzaF9pbml0IiwgImhhc2hfdXBkYXRlIiwKICAgICAgImhhc2hfdXBkYXRlX3N0cmVhbSIsICJoYXNoX3VwZGF0ZV9maWxlIiwgImhhc2hfZmluYWwiLCAiaGFzaF9hbGdvcyIsICJpY29udiIsCiAgICAgICJvYl9pY29udl9oYW5kbGVyIiwgImljb252X2dldF9lbmNvZGluZyIsICJpY29udl9zZXRfZW5jb2RpbmciLCAiaWNvbnZfc3RybGVuIiwKICAgICAgImljb252X3N1YnN0ciIsICJpY29udl9zdHJwb3MiLCAiaWNvbnZfc3RycnBvcyIsICJpY29udl9taW1lX2VuY29kZSIsCiAgICAgICJpY29udl9taW1lX2RlY29kZSIsICJpY29udl9taW1lX2RlY29kZV9oZWFkZXJzIiwgImpzb25fZW5jb2RlIiwgImpzb25fZGVjb2RlIiwKICAgICAgIm9kYmNfYXV0b2NvbW1pdCIsICJvZGJjX2Jpbm1vZGUiLCAib2RiY19jbG9zZSIsICJvZGJjX2Nsb3NlX2FsbCIsCiAgICAgICJvZGJjX2NvbHVtbnMiLCAib2RiY19jb21taXQiLCAib2RiY19jb25uZWN0IiwgIm9kYmNfY3Vyc29yIiwKICAgICAgIm9kYmNfZGF0YV9zb3VyY2UiLCAib2RiY19leGVjdXRlIiwgIm9kYmNfZXJyb3IiLCAib2RiY19lcnJvcm1zZyIsICJvZGJjX2V4ZWMiLAogICAgICAib2RiY19mZXRjaF9hcnJheSIsICJvZGJjX2ZldGNoX29iamVjdCIsICJvZGJjX2ZldGNoX3JvdyIsICJvZGJjX2ZldGNoX2ludG8iLAogICAgICAib2RiY19maWVsZF9sZW4iLCAib2RiY19maWVsZF9zY2FsZSIsICJvZGJjX2ZpZWxkX25hbWUiLCAib2RiY19maWVsZF90eXBlIiwKICAgICAgIm9kYmNfZmllbGRfbnVtIiwgIm9kYmNfZnJlZV9yZXN1bHQiLCAib2RiY19nZXR0eXBlaW5mbyIsICJvZGJjX2xvbmdyZWFkbGVuIiwKICAgICAgIm9kYmNfbmV4dF9yZXN1bHQiLCAib2RiY19udW1fZmllbGRzIiwgIm9kYmNfbnVtX3Jvd3MiLCAib2RiY19wY29ubmVjdCIsCiAgICAgICJvZGJjX3ByZXBhcmUiLCAib2RiY19yZXN1bHQiLCAib2RiY19yZXN1bHRfYWxsIiwgIm9kYmNfcm9sbGJhY2siLAogICAgICAib2RiY19zZXRvcHRpb24iLCAib2RiY19zcGVjaWFsY29sdW1ucyIsICJvZGJjX3N0YXRpc3RpY3MiLCAib2RiY190YWJsZXMiLAogICAgICAib2RiY19wcmltYXJ5a2V5cyIsICJvZGJjX2NvbHVtbnByaXZpbGVnZXMiLCAib2RiY190YWJsZXByaXZpbGVnZXMiLAogICAgICAib2RiY19mb3JlaWdua2V5cyIsICJvZGJjX3Byb2NlZHVyZXMiLCAib2RiY19wcm9jZWR1cmVjb2x1bW5zIiwgIm9kYmNfZG8iLAogICAgICAib2RiY19maWVsZF9wcmVjaXNpb24iLCAicHJlZ19tYXRjaCIsICJwcmVnX21hdGNoX2FsbCIsICJwcmVnX3JlcGxhY2UiLAogICAgICAicHJlZ19yZXBsYWNlX2NhbGxiYWNrIiwgInByZWdfc3BsaXQiLCAicHJlZ19xdW90ZSIsICJwcmVnX2dyZXAiLAogICAgICAicHJlZ19sYXN0X2Vycm9yIiwgInNlc3Npb25fbmFtZSIsICJzZXNzaW9uX21vZHVsZV9uYW1lIiwgInNlc3Npb25fc2F2ZV9wYXRoIiwKICAgICAgInNlc3Npb25faWQiLCAic2Vzc2lvbl9yZWdlbmVyYXRlX2lkIiwgInNlc3Npb25fZGVjb2RlIiwgInNlc3Npb25fcmVnaXN0ZXIiLAogICAgICAic2Vzc2lvbl91bnJlZ2lzdGVyIiwgInNlc3Npb25faXNfcmVnaXN0ZXJlZCIsICJzZXNzaW9uX2VuY29kZSIsCiAgICAgICJzZXNzaW9uX3N0YXJ0IiwgInNlc3Npb25fZGVzdHJveSIsICJzZXNzaW9uX3Vuc2V0IiwKICAgICAgInNlc3Npb25fc2V0X3NhdmVfaGFuZGxlciIsICJzZXNzaW9uX2NhY2hlX2xpbWl0ZXIiLCAic2Vzc2lvbl9jYWNoZV9leHBpcmUiLAogICAgICAic2Vzc2lvbl9zZXRfY29va2llX3BhcmFtcyIsICJzZXNzaW9uX2dldF9jb29raWVfcGFyYW1zIiwKICAgICAgInNlc3Npb25fd3JpdGVfY2xvc2UiLCAic2Vzc2lvbl9jb21taXQiLCAic3BsX2NsYXNzZXMiLCAic3BsX2F1dG9sb2FkIiwKICAgICAgInNwbF9hdXRvbG9hZF9leHRlbnNpb25zIiwgInNwbF9hdXRvbG9hZF9yZWdpc3RlciIsICJzcGxfYXV0b2xvYWRfdW5yZWdpc3RlciIsCiAgICAgICJzcGxfYXV0b2xvYWRfZnVuY3Rpb25zIiwgInNwbF9hdXRvbG9hZF9jYWxsIiwgImNsYXNzX3BhcmVudHMiLAogICAgICAiY2xhc3NfaW1wbGVtZW50cyIsICJzcGxfb2JqZWN0X2hhc2giLCAiaXRlcmF0b3JfdG9fYXJyYXkiLCAiaXRlcmF0b3JfY291bnQiLAogICAgICAiaXRlcmF0b3JfYXBwbHkiLCAiY29uc3RhbnQiLCAiYmluMmhleCIsICJzbGVlcCIsICJ1c2xlZXAiLCAiZmx1c2giLAogICAgICAid29yZHdyYXAiLCAiaHRtbHNwZWNpYWxjaGFycyIsICJodG1sZW50aXRpZXMiLCAiaHRtbF9lbnRpdHlfZGVjb2RlIiwKICAgICAgImh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlIiwgImdldF9odG1sX3RyYW5zbGF0aW9uX3RhYmxlIiwgInNoYTEiLCAic2hhMV9maWxlIiwKICAgICAgIm1kNSIsICJtZDVfZmlsZSIsICJjcmMzMiIsICJpcHRjcGFyc2UiLCAiaXB0Y2VtYmVkIiwgImdldGltYWdlc2l6ZSIsCiAgICAgICJpbWFnZV90eXBlX3RvX21pbWVfdHlwZSIsICJpbWFnZV90eXBlX3RvX2V4dGVuc2lvbiIsICJwaHBpbmZvIiwgInBocHZlcnNpb24iLAogICAgICAicGhwY3JlZGl0cyIsICJwaHBfbG9nb19ndWlkIiwgInBocF9yZWFsX2xvZ29fZ3VpZCIsICJwaHBfZWdnX2xvZ29fZ3VpZCIsCiAgICAgICJ6ZW5kX2xvZ29fZ3VpZCIsICJwaHBfc2FwaV9uYW1lIiwgInBocF91bmFtZSIsICJwaHBfaW5pX3NjYW5uZWRfZmlsZXMiLAogICAgICAic3RybmF0Y21wIiwgInN0cm5hdGNhc2VjbXAiLCAic3Vic3RyX2NvdW50IiwgInN0cnNwbiIsICJzdHJjc3BuIiwgInN0cnRvayIsCiAgICAgICJzdHJ0b3VwcGVyIiwgInN0cnRvbG93ZXIiLCAic3RycG9zIiwgInN0cmlwb3MiLCAic3RycnBvcyIsICJzdHJyaXBvcyIsCiAgICAgICJzdHJyZXYiLCAiaGVicmV2IiwgImhlYnJldmMiLCAibmwyYnIiLCAiYmFzZW5hbWUiLCAiZGlybmFtZSIsICJwYXRoaW5mbyIsCiAgICAgICJzdHJpcHNsYXNoZXMiLCAic3RyaXBjc2xhc2hlcyIsICJzdHJzdHIiLCAic3RyaXN0ciIsICJzdHJyY2hyIiwgInN0cl9zaHVmZmxlIiwKICAgICAgInN0cl93b3JkX2NvdW50IiwgInN0cl9zcGxpdCIsICJzdHJwYnJrIiwgInN1YnN0cl9jb21wYXJlIiwgInN0cmNvbGwiLAogICAgICAic3Vic3RyIiwgInN1YnN0cl9yZXBsYWNlIiwgInF1b3RlbWV0YSIsICJ1Y2ZpcnN0IiwgInVjd29yZHMiLCAic3RydHIiLAogICAgICAiYWRkc2xhc2hlcyIsICJhZGRjc2xhc2hlcyIsICJydHJpbSIsICJzdHJfcmVwbGFjZSIsICJzdHJfaXJlcGxhY2UiLAogICAgICAic3RyX3JlcGVhdCIsICJjb3VudF9jaGFycyIsICJjaHVua19zcGxpdCIsICJ0cmltIiwgImx0cmltIiwgInN0cmlwX3RhZ3MiLAogICAgICAic2ltaWxhcl90ZXh0IiwgImV4cGxvZGUiLCAiaW1wbG9kZSIsICJzZXRsb2NhbGUiLCAibG9jYWxlY29udiIsICJzb3VuZGV4IiwKICAgICAgImxldmVuc2h0ZWluIiwgImNociIsICJvcmQiLCAicGFyc2Vfc3RyIiwgInN0cl9wYWQiLCAiY2hvcCIsICJzdHJjaHIiLAogICAgICAic3ByaW50ZiIsICJwcmludGYiLCAidnByaW50ZiIsICJ2c3ByaW50ZiIsICJmcHJpbnRmIiwgInZmcHJpbnRmIiwgInNzY2FuZiIsCiAgICAgICJmc2NhbmYiLCAicGFyc2VfdXJsIiwgInVybGVuY29kZSIsICJ1cmxkZWNvZGUiLCAicmF3dXJsZW5jb2RlIiwKICAgICAgInJhd3VybGRlY29kZSIsICJodHRwX2J1aWxkX3F1ZXJ5IiwgInVubGluayIsICJleGVjIiwgInN5c3RlbSIsCiAgICAgICJlc2NhcGVzaGVsbGNtZCIsICJlc2NhcGVzaGVsbGFyZyIsICJwYXNzdGhydSIsICJzaGVsbF9leGVjIiwgInByb2Nfb3BlbiIsCiAgICAgICJwcm9jX2Nsb3NlIiwgInByb2NfdGVybWluYXRlIiwgInByb2NfZ2V0X3N0YXR1cyIsICJyYW5kIiwgInNyYW5kIiwKICAgICAgImdldHJhbmRtYXgiLCAibXRfcmFuZCIsICJtdF9zcmFuZCIsICJtdF9nZXRyYW5kbWF4IiwgImdldHNlcnZieW5hbWUiLAogICAgICAiZ2V0c2VydmJ5cG9ydCIsICJnZXRwcm90b2J5bmFtZSIsICJnZXRwcm90b2J5bnVtYmVyIiwgImdldG15dWlkIiwgImdldG15Z2lkIiwKICAgICAgImdldG15cGlkIiwgImdldG15aW5vZGUiLCAiZ2V0bGFzdG1vZCIsICJiYXNlNjRfZGVjb2RlIiwgImJhc2U2NF9lbmNvZGUiLAogICAgICAiY29udmVydF91dWVuY29kZSIsICJjb252ZXJ0X3V1ZGVjb2RlIiwgImFicyIsICJjZWlsIiwgImZsb29yIiwgInJvdW5kIiwgInNpbiIsCiAgICAgICJjb3MiLCAidGFuIiwgImFzaW4iLCAiYWNvcyIsICJhdGFuIiwgImF0YW4yIiwgInNpbmgiLCAiY29zaCIsICJ0YW5oIiwgInBpIiwKICAgICAgImlzX2Zpbml0ZSIsICJpc19uYW4iLCAiaXNfaW5maW5pdGUiLCAicG93IiwgImV4cCIsICJsb2ciLCAibG9nMTAiLCAic3FydCIsCiAgICAgICJoeXBvdCIsICJkZWcycmFkIiwgInJhZDJkZWciLCAiYmluZGVjIiwgImhleGRlYyIsICJvY3RkZWMiLCAiZGVjYmluIiwKICAgICAgImRlY29jdCIsICJkZWNoZXgiLCAiYmFzZV9jb252ZXJ0IiwgIm51bWJlcl9mb3JtYXQiLCAiZm1vZCIsICJpcDJsb25nIiwKICAgICAgImxvbmcyaXAiLCAiZ2V0ZW52IiwgInB1dGVudiIsICJtaWNyb3RpbWUiLCAiZ2V0dGltZW9mZGF5IiwgInVuaXFpZCIsCiAgICAgICJxdW90ZWRfcHJpbnRhYmxlX2RlY29kZSIsICJjb252ZXJ0X2N5cl9zdHJpbmciLCAiZ2V0X2N1cnJlbnRfdXNlciIsCiAgICAgICJzZXRfdGltZV9saW1pdCIsICJnZXRfY2ZnX3ZhciIsICJtYWdpY19xdW90ZXNfcnVudGltZSIsCiAgICAgICJzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUiLCAiZ2V0X21hZ2ljX3F1b3Rlc19ncGMiLCAiZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lIiwKICAgICAgImltcG9ydF9yZXF1ZXN0X3ZhcmlhYmxlcyIsICJlcnJvcl9sb2ciLCAiZXJyb3JfZ2V0X2xhc3QiLCAiY2FsbF91c2VyX2Z1bmMiLAogICAgICAiY2FsbF91c2VyX2Z1bmNfYXJyYXkiLCAiY2FsbF91c2VyX21ldGhvZCIsICJjYWxsX3VzZXJfbWV0aG9kX2FycmF5IiwKICAgICAgInNlcmlhbGl6ZSIsICJ1bnNlcmlhbGl6ZSIsICJ2YXJfZHVtcCIsICJ2YXJfZXhwb3J0IiwgImRlYnVnX3p2YWxfZHVtcCIsCiAgICAgICJwcmludF9yIiwgIm1lbW9yeV9nZXRfdXNhZ2UiLCAibWVtb3J5X2dldF9wZWFrX3VzYWdlIiwKICAgICAgInJlZ2lzdGVyX3NodXRkb3duX2Z1bmN0aW9uIiwgInJlZ2lzdGVyX3RpY2tfZnVuY3Rpb24iLAogICAgICAidW5yZWdpc3Rlcl90aWNrX2Z1bmN0aW9uIiwgImhpZ2hsaWdodF9maWxlIiwgInNob3dfc291cmNlIiwKICAgICAgImhpZ2hsaWdodF9zdHJpbmciLCAicGhwX3N0cmlwX3doaXRlc3BhY2UiLCAiaW5pX2dldCIsICJpbmlfZ2V0X2FsbCIsCiAgICAgICJpbmlfc2V0IiwgImluaV9hbHRlciIsICJpbmlfcmVzdG9yZSIsICJnZXRfaW5jbHVkZV9wYXRoIiwgInNldF9pbmNsdWRlX3BhdGgiLAogICAgICAicmVzdG9yZV9pbmNsdWRlX3BhdGgiLCAic2V0Y29va2llIiwgInNldHJhd2Nvb2tpZSIsICJoZWFkZXIiLCAiaGVhZGVyc19zZW50IiwKICAgICAgImhlYWRlcnNfbGlzdCIsICJjb25uZWN0aW9uX2Fib3J0ZWQiLCAiY29ubmVjdGlvbl9zdGF0dXMiLCAiaWdub3JlX3VzZXJfYWJvcnQiLAogICAgICAicGFyc2VfaW5pX2ZpbGUiLCAiaXNfdXBsb2FkZWRfZmlsZSIsICJtb3ZlX3VwbG9hZGVkX2ZpbGUiLCAiZ2V0aG9zdGJ5YWRkciIsCiAgICAgICJnZXRob3N0YnluYW1lIiwgImdldGhvc3RieW5hbWVsIiwgImludHZhbCIsICJmbG9hdHZhbCIsICJkb3VibGV2YWwiLCAic3RydmFsIiwKICAgICAgImdldHR5cGUiLCAic2V0dHlwZSIsICJpc19udWxsIiwgImlzX3Jlc291cmNlIiwgImlzX2Jvb2wiLCAiaXNfbG9uZyIsCiAgICAgICJpc19mbG9hdCIsICJpc19pbnQiLCAiaXNfaW50ZWdlciIsICJpc19kb3VibGUiLCAiaXNfcmVhbCIsICJpc19udW1lcmljIiwKICAgICAgImlzX3N0cmluZyIsICJpc19hcnJheSIsICJpc19vYmplY3QiLCAiaXNfc2NhbGFyIiwgImlzX2NhbGxhYmxlIiwgImVyZWciLAogICAgICAiZXJlZ19yZXBsYWNlIiwgImVyZWdpIiwgImVyZWdpX3JlcGxhY2UiLCAic3BsaXQiLCAic3BsaXRpIiwgImpvaW4iLAogICAgICAic3FsX3JlZ2Nhc2UiLCAiZGwiLCAicGNsb3NlIiwgInBvcGVuIiwgInJlYWRmaWxlIiwgInJld2luZCIsICJybWRpciIsICJ1bWFzayIsCiAgICAgICJmY2xvc2UiLCAiZmVvZiIsICJmZ2V0YyIsICJmZ2V0cyIsICJmZ2V0c3MiLCAiZnJlYWQiLCAiZm9wZW4iLCAiZnBhc3N0aHJ1IiwKICAgICAgImZ0cnVuY2F0ZSIsICJmc3RhdCIsICJmc2VlayIsICJmdGVsbCIsICJmZmx1c2giLCAiZndyaXRlIiwgImZwdXRzIiwgIm1rZGlyIiwKICAgICAgInJlbmFtZSIsICJjb3B5IiwgInRlbXBuYW0iLCAidG1wZmlsZSIsICJmaWxlIiwgImZpbGVfZ2V0X2NvbnRlbnRzIiwKICAgICAgImZpbGVfcHV0X2NvbnRlbnRzIiwgInN0cmVhbV9zZWxlY3QiLCAic3RyZWFtX2NvbnRleHRfY3JlYXRlIiwKICAgICAgInN0cmVhbV9jb250ZXh0X3NldF9wYXJhbXMiLCAic3RyZWFtX2NvbnRleHRfc2V0X29wdGlvbiIsCiAgICAgICJzdHJlYW1fY29udGV4dF9nZXRfb3B0aW9ucyIsICJzdHJlYW1fY29udGV4dF9nZXRfZGVmYXVsdCIsCiAgICAgICJzdHJlYW1fZmlsdGVyX3ByZXBlbmQiLCAic3RyZWFtX2ZpbHRlcl9hcHBlbmQiLCAic3RyZWFtX2ZpbHRlcl9yZW1vdmUiLAogICAgICAic3RyZWFtX3NvY2tldF9jbGllbnQiLCAic3RyZWFtX3NvY2tldF9zZXJ2ZXIiLCAic3RyZWFtX3NvY2tldF9hY2NlcHQiLAogICAgICAic3RyZWFtX3NvY2tldF9nZXRfbmFtZSIsICJzdHJlYW1fc29ja2V0X3JlY3Zmcm9tIiwgInN0cmVhbV9zb2NrZXRfc2VuZHRvIiwKICAgICAgInN0cmVhbV9zb2NrZXRfZW5hYmxlX2NyeXB0byIsICJzdHJlYW1fc29ja2V0X3NodXRkb3duIiwKICAgICAgInN0cmVhbV9jb3B5X3RvX3N0cmVhbSIsICJzdHJlYW1fZ2V0X2NvbnRlbnRzIiwgImZnZXRjc3YiLCAiZnB1dGNzdiIsICJmbG9jayIsCiAgICAgICJnZXRfbWV0YV90YWdzIiwgInN0cmVhbV9zZXRfd3JpdGVfYnVmZmVyIiwgInNldF9maWxlX2J1ZmZlciIsCiAgICAgICJzZXRfc29ja2V0X2Jsb2NraW5nIiwgInN0cmVhbV9zZXRfYmxvY2tpbmciLCAic29ja2V0X3NldF9ibG9ja2luZyIsCiAgICAgICJzdHJlYW1fZ2V0X21ldGFfZGF0YSIsICJzdHJlYW1fZ2V0X2xpbmUiLCAic3RyZWFtX3dyYXBwZXJfcmVnaXN0ZXIiLAogICAgICAic3RyZWFtX3JlZ2lzdGVyX3dyYXBwZXIiLCAic3RyZWFtX3dyYXBwZXJfdW5yZWdpc3RlciIsCiAgICAgICJzdHJlYW1fd3JhcHBlcl9yZXN0b3JlIiwgInN0cmVhbV9nZXRfd3JhcHBlcnMiLCAic3RyZWFtX2dldF90cmFuc3BvcnRzIiwKICAgICAgImdldF9oZWFkZXJzIiwgInN0cmVhbV9zZXRfdGltZW91dCIsICJzb2NrZXRfc2V0X3RpbWVvdXQiLCAic29ja2V0X2dldF9zdGF0dXMiLAogICAgICAicmVhbHBhdGgiLCAiZnNvY2tvcGVuIiwgInBmc29ja29wZW4iLCAicGFjayIsICJ1bnBhY2siLCAiZ2V0X2Jyb3dzZXIiLAogICAgICAiY3J5cHQiLCAib3BlbmRpciIsICJjbG9zZWRpciIsICJjaGRpciIsICJnZXRjd2QiLCAicmV3aW5kZGlyIiwgInJlYWRkaXIiLAogICAgICAiZGlyIiwgInNjYW5kaXIiLCAiZ2xvYiIsICJmaWxlYXRpbWUiLCAiZmlsZWN0aW1lIiwgImZpbGVncm91cCIsICJmaWxlaW5vZGUiLAogICAgICAiZmlsZW10aW1lIiwgImZpbGVvd25lciIsICJmaWxlcGVybXMiLCAiZmlsZXNpemUiLCAiZmlsZXR5cGUiLCAiZmlsZV9leGlzdHMiLAogICAgICAiaXNfd3JpdGFibGUiLCAiaXNfd3JpdGVhYmxlIiwgImlzX3JlYWRhYmxlIiwgImlzX2V4ZWN1dGFibGUiLCAiaXNfZmlsZSIsCiAgICAgICJpc19kaXIiLCAiaXNfbGluayIsICJzdGF0IiwgImxzdGF0IiwgImNob3duIiwgImNoZ3JwIiwgImNobW9kIiwgInRvdWNoIiwKICAgICAgImNsZWFyc3RhdGNhY2hlIiwgImRpc2tfdG90YWxfc3BhY2UiLCAiZGlza19mcmVlX3NwYWNlIiwgImRpc2tmcmVlc3BhY2UiLAogICAgICAibWFpbCIsICJlem1sbV9oYXNoIiwgIm9wZW5sb2ciLCAic3lzbG9nIiwgImNsb3NlbG9nIiwKICAgICAgImRlZmluZV9zeXNsb2dfdmFyaWFibGVzIiwgImxjZ192YWx1ZSIsICJtZXRhcGhvbmUiLCAib2Jfc3RhcnQiLCAib2JfZmx1c2giLAogICAgICAib2JfY2xlYW4iLCAib2JfZW5kX2ZsdXNoIiwgIm9iX2VuZF9jbGVhbiIsICJvYl9nZXRfZmx1c2giLCAib2JfZ2V0X2NsZWFuIiwKICAgICAgIm9iX2dldF9sZW5ndGgiLCAib2JfZ2V0X2xldmVsIiwgIm9iX2dldF9zdGF0dXMiLCAib2JfZ2V0X2NvbnRlbnRzIiwKICAgICAgIm9iX2ltcGxpY2l0X2ZsdXNoIiwgIm9iX2xpc3RfaGFuZGxlcnMiLCAia3NvcnQiLCAia3Jzb3J0IiwgIm5hdHNvcnQiLAogICAgICAibmF0Y2FzZXNvcnQiLCAiYXNvcnQiLCAiYXJzb3J0IiwgInNvcnQiLCAicnNvcnQiLCAidXNvcnQiLCAidWFzb3J0IiwgInVrc29ydCIsCiAgICAgICJzaHVmZmxlIiwgImFycmF5X3dhbGsiLCAiYXJyYXlfd2Fsa19yZWN1cnNpdmUiLCAiY291bnQiLCAiZW5kIiwgInByZXYiLAogICAgICAibmV4dCIsICJyZXNldCIsICJjdXJyZW50IiwgImtleSIsICJtaW4iLCAibWF4IiwgImluX2FycmF5IiwgImFycmF5X3NlYXJjaCIsCiAgICAgICJleHRyYWN0IiwgImNvbXBhY3QiLCAiYXJyYXlfZmlsbCIsICJhcnJheV9maWxsX2tleXMiLCAicmFuZ2UiLAogICAgICAiYXJyYXlfbXVsdGlzb3J0IiwgImFycmF5X3B1c2giLCAiYXJyYXlfcG9wIiwgImFycmF5X3NoaWZ0IiwgImFycmF5X3Vuc2hpZnQiLAogICAgICAiYXJyYXlfc3BsaWNlIiwgImFycmF5X3NsaWNlIiwgImFycmF5X21lcmdlIiwgImFycmF5X21lcmdlX3JlY3Vyc2l2ZSIsCiAgICAgICJhcnJheV9rZXlzIiwgImFycmF5X3ZhbHVlcyIsICJhcnJheV9jb3VudF92YWx1ZXMiLCAiYXJyYXlfcmV2ZXJzZSIsCiAgICAgICJhcnJheV9yZWR1Y2UiLCAiYXJyYXlfcGFkIiwgImFycmF5X2ZsaXAiLCAiYXJyYXlfY2hhbmdlX2tleV9jYXNlIiwKICAgICAgImFycmF5X3JhbmQiLCAiYXJyYXlfdW5pcXVlIiwgImFycmF5X2ludGVyc2VjdCIsICJhcnJheV9pbnRlcnNlY3Rfa2V5IiwKICAgICAgImFycmF5X2ludGVyc2VjdF91a2V5IiwgImFycmF5X3VpbnRlcnNlY3QiLCAiYXJyYXlfaW50ZXJzZWN0X2Fzc29jIiwKICAgICAgImFycmF5X3VpbnRlcnNlY3RfYXNzb2MiLCAiYXJyYXlfaW50ZXJzZWN0X3Vhc3NvYyIsICJhcnJheV91aW50ZXJzZWN0X3Vhc3NvYyIsCiAgICAgICJhcnJheV9kaWZmIiwgImFycmF5X2RpZmZfa2V5IiwgImFycmF5X2RpZmZfdWtleSIsICJhcnJheV91ZGlmZiIsCiAgICAgICJhcnJheV9kaWZmX2Fzc29jIiwgImFycmF5X3VkaWZmX2Fzc29jIiwgImFycmF5X2RpZmZfdWFzc29jIiwKICAgICAgImFycmF5X3VkaWZmX3Vhc3NvYyIsICJhcnJheV9zdW0iLCAiYXJyYXlfcHJvZHVjdCIsICJhcnJheV9maWx0ZXIiLAogICAgICAiYXJyYXlfbWFwIiwgImFycmF5X2NodW5rIiwgImFycmF5X2NvbWJpbmUiLCAiYXJyYXlfa2V5X2V4aXN0cyIsICJwb3MiLAogICAgICAic2l6ZW9mIiwgImtleV9leGlzdHMiLCAiYXNzZXJ0IiwgImFzc2VydF9vcHRpb25zIiwgInZlcnNpb25fY29tcGFyZSIsCiAgICAgICJzdHJfcm90MTMiLCAic3RyZWFtX2dldF9maWx0ZXJzIiwgInN0cmVhbV9maWx0ZXJfcmVnaXN0ZXIiLAogICAgICAic3RyZWFtX2J1Y2tldF9tYWtlX3dyaXRlYWJsZSIsICJzdHJlYW1fYnVja2V0X3ByZXBlbmQiLAogICAgICAic3RyZWFtX2J1Y2tldF9hcHBlbmQiLCAic3RyZWFtX2J1Y2tldF9uZXciLCAib3V0cHV0X2FkZF9yZXdyaXRlX3ZhciIsCiAgICAgICJvdXRwdXRfcmVzZXRfcmV3cml0ZV92YXJzIiwgInN5c19nZXRfdGVtcF9kaXIiLCAidG9rZW5fZ2V0X2FsbCIsICJ0b2tlbl9uYW1lIiwKICAgICAgInJlYWRnemZpbGUiLCAiZ3pyZXdpbmQiLCAiZ3pjbG9zZSIsICJnemVvZiIsICJnemdldGMiLCAiZ3pnZXRzIiwgImd6Z2V0c3MiLAogICAgICAiZ3pyZWFkIiwgImd6b3BlbiIsICJnenBhc3N0aHJ1IiwgImd6c2VlayIsICJnenRlbGwiLCAiZ3p3cml0ZSIsICJnenB1dHMiLAogICAgICAiZ3pmaWxlIiwgImd6Y29tcHJlc3MiLCAiZ3p1bmNvbXByZXNzIiwgImd6ZGVmbGF0ZSIsICJnemluZmxhdGUiLCAiZ3plbmNvZGUiLAogICAgICAib2JfZ3poYW5kbGVyIiwgInpsaWJfZ2V0X2NvZGluZ190eXBlIiwgImxpYnhtbF9zZXRfc3RyZWFtc19jb250ZXh0IiwKICAgICAgImxpYnhtbF91c2VfaW50ZXJuYWxfZXJyb3JzIiwgImxpYnhtbF9nZXRfbGFzdF9lcnJvciIsICJsaWJ4bWxfY2xlYXJfZXJyb3JzIiwKICAgICAgImxpYnhtbF9nZXRfZXJyb3JzIiwgImRvbV9pbXBvcnRfc2ltcGxleG1sIiwgInNpbXBsZXhtbF9sb2FkX2ZpbGUiLAogICAgICAic2ltcGxleG1sX2xvYWRfc3RyaW5nIiwgInNpbXBsZXhtbF9pbXBvcnRfZG9tIiwgIndkZHhfc2VyaWFsaXplX3ZhbHVlIiwKICAgICAgIndkZHhfc2VyaWFsaXplX3ZhcnMiLCAid2RkeF9wYWNrZXRfc3RhcnQiLCAid2RkeF9wYWNrZXRfZW5kIiwgIndkZHhfYWRkX3ZhcnMiLAogICAgICAid2RkeF9kZXNlcmlhbGl6ZSIsICJ4bWxfcGFyc2VyX2NyZWF0ZSIsICJ4bWxfcGFyc2VyX2NyZWF0ZV9ucyIsCiAgICAgICJ4bWxfc2V0X29iamVjdCIsICJ4bWxfc2V0X2VsZW1lbnRfaGFuZGxlciIsICJ4bWxfc2V0X2NoYXJhY3Rlcl9kYXRhX2hhbmRsZXIiLAogICAgICAieG1sX3NldF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX2hhbmRsZXIiLCAieG1sX3NldF9kZWZhdWx0X2hhbmRsZXIiLAogICAgICAieG1sX3NldF91bnBhcnNlZF9lbnRpdHlfZGVjbF9oYW5kbGVyIiwgInhtbF9zZXRfbm90YXRpb25fZGVjbF9oYW5kbGVyIiwKICAgICAgInhtbF9zZXRfZXh0ZXJuYWxfZW50aXR5X3JlZl9oYW5kbGVyIiwgInhtbF9zZXRfc3RhcnRfbmFtZXNwYWNlX2RlY2xfaGFuZGxlciIsCiAgICAgICJ4bWxfc2V0X2VuZF9uYW1lc3BhY2VfZGVjbF9oYW5kbGVyIiwgInhtbF9wYXJzZSIsICJ4bWxfcGFyc2VfaW50b19zdHJ1Y3QiLAogICAgICAieG1sX2dldF9lcnJvcl9jb2RlIiwgInhtbF9lcnJvcl9zdHJpbmciLCAieG1sX2dldF9jdXJyZW50X2xpbmVfbnVtYmVyIiwKICAgICAgInhtbF9nZXRfY3VycmVudF9jb2x1bW5fbnVtYmVyIiwgInhtbF9nZXRfY3VycmVudF9ieXRlX2luZGV4IiwKICAgICAgInhtbF9wYXJzZXJfZnJlZSIsICJ4bWxfcGFyc2VyX3NldF9vcHRpb24iLCAieG1sX3BhcnNlcl9nZXRfb3B0aW9uIiwKICAgICAgInV0ZjhfZW5jb2RlIiwgInV0ZjhfZGVjb2RlIiwgInhtbHdyaXRlcl9vcGVuX3VyaSIsICJ4bWx3cml0ZXJfb3Blbl9tZW1vcnkiLAogICAgICAieG1sd3JpdGVyX3NldF9pbmRlbnQiLCAieG1sd3JpdGVyX3NldF9pbmRlbnRfc3RyaW5nIiwKICAgICAgInhtbHdyaXRlcl9zdGFydF9jb21tZW50IiwgInhtbHdyaXRlcl9lbmRfY29tbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfc3RhcnRfYXR0cmlidXRlIiwgInhtbHdyaXRlcl9lbmRfYXR0cmlidXRlIiwKICAgICAgInhtbHdyaXRlcl93cml0ZV9hdHRyaWJ1dGUiLCAieG1sd3JpdGVyX3N0YXJ0X2F0dHJpYnV0ZV9ucyIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfYXR0cmlidXRlX25zIiwgInhtbHdyaXRlcl9zdGFydF9lbGVtZW50IiwKICAgICAgInhtbHdyaXRlcl9lbmRfZWxlbWVudCIsICJ4bWx3cml0ZXJfZnVsbF9lbmRfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfc3RhcnRfZWxlbWVudF9ucyIsICJ4bWx3cml0ZXJfd3JpdGVfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfZWxlbWVudF9ucyIsICJ4bWx3cml0ZXJfc3RhcnRfcGkiLCAieG1sd3JpdGVyX2VuZF9waSIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfcGkiLCAieG1sd3JpdGVyX3N0YXJ0X2NkYXRhIiwgInhtbHdyaXRlcl9lbmRfY2RhdGEiLAogICAgICAieG1sd3JpdGVyX3dyaXRlX2NkYXRhIiwgInhtbHdyaXRlcl90ZXh0IiwgInhtbHdyaXRlcl93cml0ZV9yYXciLAogICAgICAieG1sd3JpdGVyX3N0YXJ0X2RvY3VtZW50IiwgInhtbHdyaXRlcl9lbmRfZG9jdW1lbnQiLAogICAgICAieG1sd3JpdGVyX3dyaXRlX2NvbW1lbnQiLCAieG1sd3JpdGVyX3N0YXJ0X2R0ZCIsICJ4bWx3cml0ZXJfZW5kX2R0ZCIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfZHRkIiwgInhtbHdyaXRlcl9zdGFydF9kdGRfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfZW5kX2R0ZF9lbGVtZW50IiwgInhtbHdyaXRlcl93cml0ZV9kdGRfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfc3RhcnRfZHRkX2F0dGxpc3QiLCAieG1sd3JpdGVyX2VuZF9kdGRfYXR0bGlzdCIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfZHRkX2F0dGxpc3QiLCAieG1sd3JpdGVyX3N0YXJ0X2R0ZF9lbnRpdHkiLAogICAgICAieG1sd3JpdGVyX2VuZF9kdGRfZW50aXR5IiwgInhtbHdyaXRlcl93cml0ZV9kdGRfZW50aXR5IiwKICAgICAgInhtbHdyaXRlcl9vdXRwdXRfbWVtb3J5IiwgInhtbHdyaXRlcl9mbHVzaCIsICJnZF9pbmZvIiwgImltYWdlYXJjIiwKICAgICAgImltYWdlZWxsaXBzZSIsICJpbWFnZWNoYXIiLCAiaW1hZ2VjaGFydXAiLCAiaW1hZ2Vjb2xvcmF0IiwKICAgICAgImltYWdlY29sb3JhbGxvY2F0ZSIsICJpbWFnZXBhbGV0dGVjb3B5IiwgImltYWdlY3JlYXRlZnJvbXN0cmluZyIsCiAgICAgICJpbWFnZWNvbG9yY2xvc2VzdCIsICJpbWFnZWNvbG9yZGVhbGxvY2F0ZSIsICJpbWFnZWNvbG9ycmVzb2x2ZSIsCiAgICAgICJpbWFnZWNvbG9yZXhhY3QiLCAiaW1hZ2Vjb2xvcnNldCIsICJpbWFnZWNvbG9ydHJhbnNwYXJlbnQiLAogICAgICAiaW1hZ2Vjb2xvcnN0b3RhbCIsICJpbWFnZWNvbG9yc2ZvcmluZGV4IiwgImltYWdlY29weSIsICJpbWFnZWNvcHltZXJnZSIsCiAgICAgICJpbWFnZWNvcHltZXJnZWdyYXkiLCAiaW1hZ2Vjb3B5cmVzaXplZCIsICJpbWFnZWNyZWF0ZSIsCiAgICAgICJpbWFnZWNyZWF0ZXRydWVjb2xvciIsICJpbWFnZWlzdHJ1ZWNvbG9yIiwgImltYWdldHJ1ZWNvbG9ydG9wYWxldHRlIiwKICAgICAgImltYWdlc2V0dGhpY2tuZXNzIiwgImltYWdlZmlsbGVkYXJjIiwgImltYWdlZmlsbGVkZWxsaXBzZSIsCiAgICAgICJpbWFnZWFscGhhYmxlbmRpbmciLCAiaW1hZ2VzYXZlYWxwaGEiLCAiaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEiLAogICAgICAiaW1hZ2Vjb2xvcnJlc29sdmVhbHBoYSIsICJpbWFnZWNvbG9yY2xvc2VzdGFscGhhIiwgImltYWdlY29sb3JleGFjdGFscGhhIiwKICAgICAgImltYWdlY29weXJlc2FtcGxlZCIsICJpbWFnZWdyYWJ3aW5kb3ciLCAiaW1hZ2VncmFic2NyZWVuIiwgImltYWdlcm90YXRlIiwKICAgICAgImltYWdlYW50aWFsaWFzIiwgImltYWdlc2V0dGlsZSIsICJpbWFnZXNldGJydXNoIiwgImltYWdlc2V0c3R5bGUiLAogICAgICAiaW1hZ2VjcmVhdGVmcm9tcG5nIiwgImltYWdlY3JlYXRlZnJvbWdpZiIsICJpbWFnZWNyZWF0ZWZyb21qcGVnIiwKICAgICAgImltYWdlY3JlYXRlZnJvbXdibXAiLCAiaW1hZ2VjcmVhdGVmcm9teGJtIiwgImltYWdlY3JlYXRlZnJvbWdkIiwKICAgICAgImltYWdlY3JlYXRlZnJvbWdkMiIsICJpbWFnZWNyZWF0ZWZyb21nZDJwYXJ0IiwgImltYWdlcG5nIiwgImltYWdlZ2lmIiwKICAgICAgImltYWdlanBlZyIsICJpbWFnZXdibXAiLCAiaW1hZ2VnZCIsICJpbWFnZWdkMiIsICJpbWFnZWRlc3Ryb3kiLAogICAgICAiaW1hZ2VnYW1tYWNvcnJlY3QiLCAiaW1hZ2VmaWxsIiwgImltYWdlZmlsbGVkcG9seWdvbiIsICJpbWFnZWZpbGxlZHJlY3RhbmdsZSIsCiAgICAgICJpbWFnZWZpbGx0b2JvcmRlciIsICJpbWFnZWZvbnR3aWR0aCIsICJpbWFnZWZvbnRoZWlnaHQiLCAiaW1hZ2VpbnRlcmxhY2UiLAogICAgICAiaW1hZ2VsaW5lIiwgImltYWdlbG9hZGZvbnQiLCAiaW1hZ2Vwb2x5Z29uIiwgImltYWdlcmVjdGFuZ2xlIiwKICAgICAgImltYWdlc2V0cGl4ZWwiLCAiaW1hZ2VzdHJpbmciLCAiaW1hZ2VzdHJpbmd1cCIsICJpbWFnZXN4IiwgImltYWdlc3kiLAogICAgICAiaW1hZ2VkYXNoZWRsaW5lIiwgImltYWdldHRmYmJveCIsICJpbWFnZXR0ZnRleHQiLCAiaW1hZ2VmdGJib3giLAogICAgICAiaW1hZ2VmdHRleHQiLCAiaW1hZ2Vwc2xvYWRmb250IiwgImltYWdlcHNmcmVlZm9udCIsICJpbWFnZXBzZW5jb2RlZm9udCIsCiAgICAgICJpbWFnZXBzZXh0ZW5kZm9udCIsICJpbWFnZXBzc2xhbnRmb250IiwgImltYWdlcHN0ZXh0IiwgImltYWdlcHNiYm94IiwKICAgICAgImltYWdldHlwZXMiLCAianBlZzJ3Ym1wIiwgInBuZzJ3Ym1wIiwgImltYWdlMndibXAiLCAiaW1hZ2VsYXllcmVmZmVjdCIsCiAgICAgICJpbWFnZWNvbG9ybWF0Y2giLCAiaW1hZ2V4Ym0iLCAiaW1hZ2VmaWx0ZXIiLCAiaW1hZ2Vjb252b2x1dGlvbiIsCiAgICAgICJtYl9jb252ZXJ0X2Nhc2UiLCAibWJfc3RydG91cHBlciIsICJtYl9zdHJ0b2xvd2VyIiwgIm1iX2xhbmd1YWdlIiwKICAgICAgIm1iX2ludGVybmFsX2VuY29kaW5nIiwgIm1iX2h0dHBfaW5wdXQiLCAibWJfaHR0cF9vdXRwdXQiLCAibWJfZGV0ZWN0X29yZGVyIiwKICAgICAgIm1iX3N1YnN0aXR1dGVfY2hhcmFjdGVyIiwgIm1iX3BhcnNlX3N0ciIsICJtYl9vdXRwdXRfaGFuZGxlciIsCiAgICAgICJtYl9wcmVmZXJyZWRfbWltZV9uYW1lIiwgIm1iX3N0cmxlbiIsICJtYl9zdHJwb3MiLCAibWJfc3RycnBvcyIsICJtYl9zdHJpcG9zIiwKICAgICAgIm1iX3N0cnJpcG9zIiwgIm1iX3N0cnN0ciIsICJtYl9zdHJyY2hyIiwgIm1iX3N0cmlzdHIiLCAibWJfc3RycmljaHIiLAogICAgICAibWJfc3Vic3RyX2NvdW50IiwgIm1iX3N1YnN0ciIsICJtYl9zdHJjdXQiLCAibWJfc3Ryd2lkdGgiLCAibWJfc3RyaW13aWR0aCIsCiAgICAgICJtYl9jb252ZXJ0X2VuY29kaW5nIiwgIm1iX2RldGVjdF9lbmNvZGluZyIsICJtYl9saXN0X2VuY29kaW5ncyIsCiAgICAgICJtYl9jb252ZXJ0X2thbmEiLCAibWJfZW5jb2RlX21pbWVoZWFkZXIiLCAibWJfZGVjb2RlX21pbWVoZWFkZXIiLAogICAgICAibWJfY29udmVydF92YXJpYWJsZXMiLCAibWJfZW5jb2RlX251bWVyaWNlbnRpdHkiLCAibWJfZGVjb2RlX251bWVyaWNlbnRpdHkiLAogICAgICAibWJfc2VuZF9tYWlsIiwgIm1iX2dldF9pbmZvIiwgIm1iX2NoZWNrX2VuY29kaW5nIiwgIm1iX3JlZ2V4X2VuY29kaW5nIiwKICAgICAgIm1iX3JlZ2V4X3NldF9vcHRpb25zIiwgIm1iX2VyZWciLCAibWJfZXJlZ2kiLCAibWJfZXJlZ19yZXBsYWNlIiwKICAgICAgIm1iX2VyZWdpX3JlcGxhY2UiLCAibWJfc3BsaXQiLCAibWJfZXJlZ19tYXRjaCIsICJtYl9lcmVnX3NlYXJjaCIsCiAgICAgICJtYl9lcmVnX3NlYXJjaF9wb3MiLCAibWJfZXJlZ19zZWFyY2hfcmVncyIsICJtYl9lcmVnX3NlYXJjaF9pbml0IiwKICAgICAgIm1iX2VyZWdfc2VhcmNoX2dldHJlZ3MiLCAibWJfZXJlZ19zZWFyY2hfZ2V0cG9zIiwgIm1iX2VyZWdfc2VhcmNoX3NldHBvcyIsCiAgICAgICJtYnJlZ2V4X2VuY29kaW5nIiwgIm1iZXJlZyIsICJtYmVyZWdpIiwgIm1iZXJlZ19yZXBsYWNlIiwgIm1iZXJlZ2lfcmVwbGFjZSIsCiAgICAgICJtYnNwbGl0IiwgIm1iZXJlZ19tYXRjaCIsICJtYmVyZWdfc2VhcmNoIiwgIm1iZXJlZ19zZWFyY2hfcG9zIiwKICAgICAgIm1iZXJlZ19zZWFyY2hfcmVncyIsICJtYmVyZWdfc2VhcmNoX2luaXQiLCAibWJlcmVnX3NlYXJjaF9nZXRyZWdzIiwKICAgICAgIm1iZXJlZ19zZWFyY2hfZ2V0cG9zIiwgIm1iZXJlZ19zZWFyY2hfc2V0cG9zIiwgIm15c3FsX2Nvbm5lY3QiLAogICAgICAibXlzcWxfcGNvbm5lY3QiLCAibXlzcWxfY2xvc2UiLCAibXlzcWxfc2VsZWN0X2RiIiwgIm15c3FsX3F1ZXJ5IiwKICAgICAgIm15c3FsX3VuYnVmZmVyZWRfcXVlcnkiLCAibXlzcWxfZGJfcXVlcnkiLCAibXlzcWxfbGlzdF9kYnMiLAogICAgICAibXlzcWxfbGlzdF90YWJsZXMiLCAibXlzcWxfbGlzdF9maWVsZHMiLCAibXlzcWxfbGlzdF9wcm9jZXNzZXMiLAogICAgICAibXlzcWxfZXJyb3IiLCAibXlzcWxfZXJybm8iLCAibXlzcWxfYWZmZWN0ZWRfcm93cyIsICJteXNxbF9pbnNlcnRfaWQiLAogICAgICAibXlzcWxfcmVzdWx0IiwgIm15c3FsX251bV9yb3dzIiwgIm15c3FsX251bV9maWVsZHMiLCAibXlzcWxfZmV0Y2hfcm93IiwKICAgICAgIm15c3FsX2ZldGNoX2FycmF5IiwgIm15c3FsX2ZldGNoX2Fzc29jIiwgIm15c3FsX2ZldGNoX29iamVjdCIsCiAgICAgICJteXNxbF9kYXRhX3NlZWsiLCAibXlzcWxfZmV0Y2hfbGVuZ3RocyIsICJteXNxbF9mZXRjaF9maWVsZCIsCiAgICAgICJteXNxbF9maWVsZF9zZWVrIiwgIm15c3FsX2ZyZWVfcmVzdWx0IiwgIm15c3FsX2ZpZWxkX25hbWUiLAogICAgICAibXlzcWxfZmllbGRfdGFibGUiLCAibXlzcWxfZmllbGRfbGVuIiwgIm15c3FsX2ZpZWxkX3R5cGUiLAogICAgICAibXlzcWxfZmllbGRfZmxhZ3MiLCAibXlzcWxfZXNjYXBlX3N0cmluZyIsICJteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmciLAogICAgICAibXlzcWxfc3RhdCIsICJteXNxbF90aHJlYWRfaWQiLCAibXlzcWxfY2xpZW50X2VuY29kaW5nIiwgIm15c3FsX3BpbmciLAogICAgICAibXlzcWxfZ2V0X2NsaWVudF9pbmZvIiwgIm15c3FsX2dldF9ob3N0X2luZm8iLCAibXlzcWxfZ2V0X3Byb3RvX2luZm8iLAogICAgICAibXlzcWxfZ2V0X3NlcnZlcl9pbmZvIiwgIm15c3FsX2luZm8iLCAibXlzcWxfc2V0X2NoYXJzZXQiLCAibXlzcWwiLAogICAgICAibXlzcWxfZmllbGRuYW1lIiwgIm15c3FsX2ZpZWxkdGFibGUiLCAibXlzcWxfZmllbGRsZW4iLCAibXlzcWxfZmllbGR0eXBlIiwKICAgICAgIm15c3FsX2ZpZWxkZmxhZ3MiLCAibXlzcWxfc2VsZWN0ZGIiLCAibXlzcWxfZnJlZXJlc3VsdCIsICJteXNxbF9udW1maWVsZHMiLAogICAgICAibXlzcWxfbnVtcm93cyIsICJteXNxbF9saXN0ZGJzIiwgIm15c3FsX2xpc3R0YWJsZXMiLCAibXlzcWxfbGlzdGZpZWxkcyIsCiAgICAgICJteXNxbF9kYl9uYW1lIiwgIm15c3FsX2RibmFtZSIsICJteXNxbF90YWJsZW5hbWUiLCAibXlzcWxfdGFibGVfbmFtZSIsCiAgICAgICJteXNxbGlfYWZmZWN0ZWRfcm93cyIsICJteXNxbGlfYXV0b2NvbW1pdCIsICJteXNxbGlfY2hhbmdlX3VzZXIiLAogICAgICAibXlzcWxpX2NoYXJhY3Rlcl9zZXRfbmFtZSIsICJteXNxbGlfY2xvc2UiLCAibXlzcWxpX2NvbW1pdCIsICJteXNxbGlfY29ubmVjdCIsCiAgICAgICJteXNxbGlfY29ubmVjdF9lcnJubyIsICJteXNxbGlfY29ubmVjdF9lcnJvciIsICJteXNxbGlfZGF0YV9zZWVrIiwKICAgICAgIm15c3FsaV9kZWJ1ZyIsICJteXNxbGlfZGlzYWJsZV9yZWFkc19mcm9tX21hc3RlciIsICJteXNxbGlfZGlzYWJsZV9ycGxfcGFyc2UiLAogICAgICAibXlzcWxpX2R1bXBfZGVidWdfaW5mbyIsICJteXNxbGlfZW5hYmxlX3JlYWRzX2Zyb21fbWFzdGVyIiwKICAgICAgIm15c3FsaV9lbmFibGVfcnBsX3BhcnNlIiwgIm15c3FsaV9lbWJlZGRlZF9zZXJ2ZXJfZW5kIiwKICAgICAgIm15c3FsaV9lbWJlZGRlZF9zZXJ2ZXJfc3RhcnQiLCAibXlzcWxpX2Vycm5vIiwgIm15c3FsaV9lcnJvciIsCiAgICAgICJteXNxbGlfc3RtdF9leGVjdXRlIiwgIm15c3FsaV9leGVjdXRlIiwgIm15c3FsaV9mZXRjaF9maWVsZCIsCiAgICAgICJteXNxbGlfZmV0Y2hfZmllbGRzIiwgIm15c3FsaV9mZXRjaF9maWVsZF9kaXJlY3QiLCAibXlzcWxpX2ZldGNoX2xlbmd0aHMiLAogICAgICAibXlzcWxpX2ZldGNoX2FycmF5IiwgIm15c3FsaV9mZXRjaF9hc3NvYyIsICJteXNxbGlfZmV0Y2hfb2JqZWN0IiwKICAgICAgIm15c3FsaV9mZXRjaF9yb3ciLCAibXlzcWxpX2ZpZWxkX2NvdW50IiwgIm15c3FsaV9maWVsZF9zZWVrIiwKICAgICAgIm15c3FsaV9maWVsZF90ZWxsIiwgIm15c3FsaV9mcmVlX3Jlc3VsdCIsICJteXNxbGlfZ2V0X2NoYXJzZXQiLAogICAgICAibXlzcWxpX2dldF9jbGllbnRfaW5mbyIsICJteXNxbGlfZ2V0X2NsaWVudF92ZXJzaW9uIiwgIm15c3FsaV9nZXRfaG9zdF9pbmZvIiwKICAgICAgIm15c3FsaV9nZXRfcHJvdG9faW5mbyIsICJteXNxbGlfZ2V0X3NlcnZlcl9pbmZvIiwgIm15c3FsaV9nZXRfc2VydmVyX3ZlcnNpb24iLAogICAgICAibXlzcWxpX2dldF93YXJuaW5ncyIsICJteXNxbGlfaW5pdCIsICJteXNxbGlfaW5mbyIsICJteXNxbGlfaW5zZXJ0X2lkIiwKICAgICAgIm15c3FsaV9raWxsIiwgIm15c3FsaV9zZXRfbG9jYWxfaW5maWxlX2RlZmF1bHQiLAogICAgICAibXlzcWxpX3NldF9sb2NhbF9pbmZpbGVfaGFuZGxlciIsICJteXNxbGlfbWFzdGVyX3F1ZXJ5IiwKICAgICAgIm15c3FsaV9tb3JlX3Jlc3VsdHMiLCAibXlzcWxpX211bHRpX3F1ZXJ5IiwgIm15c3FsaV9uZXh0X3Jlc3VsdCIsCiAgICAgICJteXNxbGlfbnVtX2ZpZWxkcyIsICJteXNxbGlfbnVtX3Jvd3MiLCAibXlzcWxpX29wdGlvbnMiLCAibXlzcWxpX3BpbmciLAogICAgICAibXlzcWxpX3ByZXBhcmUiLCAibXlzcWxpX3JlcG9ydCIsICJteXNxbGlfcXVlcnkiLCAibXlzcWxpX3JlYWxfY29ubmVjdCIsCiAgICAgICJteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nIiwgIm15c3FsaV9yZWFsX3F1ZXJ5IiwgIm15c3FsaV9yb2xsYmFjayIsCiAgICAgICJteXNxbGlfcnBsX3BhcnNlX2VuYWJsZWQiLCAibXlzcWxpX3JwbF9wcm9iZSIsICJteXNxbGlfcnBsX3F1ZXJ5X3R5cGUiLAogICAgICAibXlzcWxpX3NlbGVjdF9kYiIsICJteXNxbGlfc2V0X2NoYXJzZXQiLCAibXlzcWxpX3N0bXRfYXR0cl9nZXQiLAogICAgICAibXlzcWxpX3N0bXRfYXR0cl9zZXQiLCAibXlzcWxpX3N0bXRfZmllbGRfY291bnQiLCAibXlzcWxpX3N0bXRfaW5pdCIsCiAgICAgICJteXNxbGlfc3RtdF9wcmVwYXJlIiwgIm15c3FsaV9zdG10X3Jlc3VsdF9tZXRhZGF0YSIsCiAgICAgICJteXNxbGlfc3RtdF9zZW5kX2xvbmdfZGF0YSIsICJteXNxbGlfc3RtdF9iaW5kX3BhcmFtIiwKICAgICAgIm15c3FsaV9zdG10X2JpbmRfcmVzdWx0IiwgIm15c3FsaV9zdG10X2ZldGNoIiwgIm15c3FsaV9zdG10X2ZyZWVfcmVzdWx0IiwKICAgICAgIm15c3FsaV9zdG10X2dldF93YXJuaW5ncyIsICJteXNxbGlfc3RtdF9pbnNlcnRfaWQiLCAibXlzcWxpX3N0bXRfcmVzZXQiLAogICAgICAibXlzcWxpX3N0bXRfcGFyYW1fY291bnQiLCAibXlzcWxpX3NlbmRfcXVlcnkiLCAibXlzcWxpX3NsYXZlX3F1ZXJ5IiwKICAgICAgIm15c3FsaV9zcWxzdGF0ZSIsICJteXNxbGlfc3NsX3NldCIsICJteXNxbGlfc3RhdCIsCiAgICAgICJteXNxbGlfc3RtdF9hZmZlY3RlZF9yb3dzIiwgIm15c3FsaV9zdG10X2Nsb3NlIiwgIm15c3FsaV9zdG10X2RhdGFfc2VlayIsCiAgICAgICJteXNxbGlfc3RtdF9lcnJubyIsICJteXNxbGlfc3RtdF9lcnJvciIsICJteXNxbGlfc3RtdF9udW1fcm93cyIsCiAgICAgICJteXNxbGlfc3RtdF9zcWxzdGF0ZSIsICJteXNxbGlfc3RvcmVfcmVzdWx0IiwgIm15c3FsaV9zdG10X3N0b3JlX3Jlc3VsdCIsCiAgICAgICJteXNxbGlfdGhyZWFkX2lkIiwgIm15c3FsaV90aHJlYWRfc2FmZSIsICJteXNxbGlfdXNlX3Jlc3VsdCIsCiAgICAgICJteXNxbGlfd2FybmluZ19jb3VudCIsICJteXNxbGlfYmluZF9wYXJhbSIsICJteXNxbGlfYmluZF9yZXN1bHQiLAogICAgICAibXlzcWxpX2NsaWVudF9lbmNvZGluZyIsICJteXNxbGlfZXNjYXBlX3N0cmluZyIsICJteXNxbGlfZmV0Y2giLAogICAgICAibXlzcWxpX3BhcmFtX2NvdW50IiwgIm15c3FsaV9nZXRfbWV0YWRhdGEiLCAibXlzcWxpX3NlbmRfbG9uZ19kYXRhIiwKICAgICAgIm15c3FsaV9zZXRfb3B0IiwgInBkb19kcml2ZXJzIiwgInNvY2tldF9zZWxlY3QiLCAic29ja2V0X2NyZWF0ZSIsCiAgICAgICJzb2NrZXRfY3JlYXRlX2xpc3RlbiIsICJzb2NrZXRfYWNjZXB0IiwgInNvY2tldF9zZXRfbm9uYmxvY2siLAogICAgICAic29ja2V0X3NldF9ibG9jayIsICJzb2NrZXRfbGlzdGVuIiwgInNvY2tldF9jbG9zZSIsICJzb2NrZXRfd3JpdGUiLAogICAgICAic29ja2V0X3JlYWQiLCAic29ja2V0X2dldHNvY2tuYW1lIiwgInNvY2tldF9nZXRwZWVybmFtZSIsICJzb2NrZXRfY29ubmVjdCIsCiAgICAgICJzb2NrZXRfc3RyZXJyb3IiLCAic29ja2V0X2JpbmQiLCAic29ja2V0X3JlY3YiLCAic29ja2V0X3NlbmQiLAogICAgICAic29ja2V0X3JlY3Zmcm9tIiwgInNvY2tldF9zZW5kdG8iLCAic29ja2V0X2dldF9vcHRpb24iLCAic29ja2V0X3NldF9vcHRpb24iLAogICAgICAic29ja2V0X3NodXRkb3duIiwgInNvY2tldF9sYXN0X2Vycm9yIiwgInNvY2tldF9jbGVhcl9lcnJvciIsICJzb2NrZXRfZ2V0b3B0IiwKICAgICAgInNvY2tldF9zZXRvcHQiLCAiZWFjY2VsZXJhdG9yX3B1dCIsICJlYWNjZWxlcmF0b3JfZ2V0IiwgImVhY2NlbGVyYXRvcl9ybSIsCiAgICAgICJlYWNjZWxlcmF0b3JfZ2MiLCAiZWFjY2VsZXJhdG9yX2xvY2siLCAiZWFjY2VsZXJhdG9yX3VubG9jayIsCiAgICAgICJlYWNjZWxlcmF0b3JfY2FjaGluZyIsICJlYWNjZWxlcmF0b3Jfb3B0aW1pemVyIiwgImVhY2NlbGVyYXRvcl9jbGVhciIsCiAgICAgICJlYWNjZWxlcmF0b3JfY2xlYW4iLCAiZWFjY2VsZXJhdG9yX2luZm8iLCAiZWFjY2VsZXJhdG9yX3B1cmdlIiwKICAgICAgImVhY2NlbGVyYXRvcl9jYWNoZWRfc2NyaXB0cyIsICJlYWNjZWxlcmF0b3JfcmVtb3ZlZF9zY3JpcHRzIiwKICAgICAgImVhY2NlbGVyYXRvcl9saXN0X2tleXMiLCAiZWFjY2VsZXJhdG9yX2VuY29kZSIsICJlYWNjZWxlcmF0b3JfbG9hZCIsCiAgICAgICJfZWFjY2VsZXJhdG9yX2xvYWRlcl9maWxlIiwgIl9lYWNjZWxlcmF0b3JfbG9hZGVyX2xpbmUiLAogICAgICAiZWFjY2VsZXJhdG9yX3NldF9zZXNzaW9uX2hhbmRsZXJzIiwgIl9lYWNjZWxlcmF0b3Jfb3V0cHV0X2hhbmRsZXIiLAogICAgICAiZWFjY2VsZXJhdG9yX2NhY2hlX3BhZ2UiLCAiZWFjY2VsZXJhdG9yX3JtX3BhZ2UiLCAiZWFjY2VsZXJhdG9yX2NhY2hlX291dHB1dCIsCiAgICAgICJlYWNjZWxlcmF0b3JfY2FjaGVfcmVzdWx0IiwgInhkZWJ1Z19nZXRfc3RhY2tfZGVwdGgiLAogICAgICAieGRlYnVnX2dldF9mdW5jdGlvbl9zdGFjayIsICJ4ZGVidWdfcHJpbnRfZnVuY3Rpb25fc3RhY2siLAogICAgICAieGRlYnVnX2dldF9kZWNsYXJlZF92YXJzIiwgInhkZWJ1Z19jYWxsX2NsYXNzIiwgInhkZWJ1Z19jYWxsX2Z1bmN0aW9uIiwKICAgICAgInhkZWJ1Z19jYWxsX2ZpbGUiLCAieGRlYnVnX2NhbGxfbGluZSIsICJ4ZGVidWdfdmFyX2R1bXAiLCAieGRlYnVnX2RlYnVnX3p2YWwiLAogICAgICAieGRlYnVnX2RlYnVnX3p2YWxfc3Rkb3V0IiwgInhkZWJ1Z19lbmFibGUiLCAieGRlYnVnX2Rpc2FibGUiLAogICAgICAieGRlYnVnX2lzX2VuYWJsZWQiLCAieGRlYnVnX2JyZWFrIiwgInhkZWJ1Z19zdGFydF90cmFjZSIsICJ4ZGVidWdfc3RvcF90cmFjZSIsCiAgICAgICJ4ZGVidWdfZ2V0X3RyYWNlZmlsZV9uYW1lIiwgInhkZWJ1Z19nZXRfcHJvZmlsZXJfZmlsZW5hbWUiLAogICAgICAieGRlYnVnX2R1bXBfYWdncl9wcm9maWxpbmdfZGF0YSIsICJ4ZGVidWdfY2xlYXJfYWdncl9wcm9maWxpbmdfZGF0YSIsCiAgICAgICJ4ZGVidWdfbWVtb3J5X3VzYWdlIiwgInhkZWJ1Z19wZWFrX21lbW9yeV91c2FnZSIsICJ4ZGVidWdfdGltZV9pbmRleCIsCiAgICAgICJ4ZGVidWdfc3RhcnRfZXJyb3JfY29sbGVjdGlvbiIsICJ4ZGVidWdfc3RvcF9lcnJvcl9jb2xsZWN0aW9uIiwKICAgICAgInhkZWJ1Z19nZXRfY29sbGVjdGVkX2Vycm9ycyIsICJ4ZGVidWdfc3RhcnRfY29kZV9jb3ZlcmFnZSIsCiAgICAgICJ4ZGVidWdfc3RvcF9jb2RlX2NvdmVyYWdlIiwgInhkZWJ1Z19nZXRfY29kZV9jb3ZlcmFnZSIsCiAgICAgICJ4ZGVidWdfZ2V0X2Z1bmN0aW9uX2NvdW50IiwgInhkZWJ1Z19kdW1wX3N1cGVyZ2xvYmFscyIsCiAgICAgICJfIiAvLyBhbGlhcyBmb3IgZ2V0dGV4dCgpCiAgICBdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJ0X3N0cmluZyIsICJwaHAtcHJlZGVmaW5lZC1mdW5jdGlvbiIpOwogICAgfSk7CgogICAgLy8gb3V0cHV0IG9mIGdldF9kZWZpbmVkX2NvbnN0YW50cygpLiBEaWZmZXJzIHNpZ25pZmljYW50bHkgZnJvbSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQuY29uc3RhbnRzLnBocAogICAgWyAiRV9FUlJPUiIsICJFX1JFQ09WRVJBQkxFX0VSUk9SIiwgIkVfV0FSTklORyIsICJFX1BBUlNFIiwgIkVfTk9USUNFIiwKICAgICAgIkVfU1RSSUNUIiwgIkVfQ09SRV9FUlJPUiIsICJFX0NPUkVfV0FSTklORyIsICJFX0NPTVBJTEVfRVJST1IiLAogICAgICAiRV9DT01QSUxFX1dBUk5JTkciLCAiRV9VU0VSX0VSUk9SIiwgIkVfVVNFUl9XQVJOSU5HIiwgIkVfVVNFUl9OT1RJQ0UiLAogICAgICAiRV9BTEwiLCAiVFJVRSIsICJGQUxTRSIsICJOVUxMIiwgIlpFTkRfVEhSRUFEX1NBRkUiLCAiUEhQX1ZFUlNJT04iLCAiUEhQX09TIiwKICAgICAgIlBIUF9TQVBJIiwgIkRFRkFVTFRfSU5DTFVERV9QQVRIIiwgIlBFQVJfSU5TVEFMTF9ESVIiLCAiUEVBUl9FWFRFTlNJT05fRElSIiwKICAgICAgIlBIUF9FWFRFTlNJT05fRElSIiwgIlBIUF9QUkVGSVgiLCAiUEhQX0JJTkRJUiIsICJQSFBfTElCRElSIiwgIlBIUF9EQVRBRElSIiwKICAgICAgIlBIUF9TWVNDT05GRElSIiwgIlBIUF9MT0NBTFNUQVRFRElSIiwgIlBIUF9DT05GSUdfRklMRV9QQVRIIiwKICAgICAgIlBIUF9DT05GSUdfRklMRV9TQ0FOX0RJUiIsICJQSFBfU0hMSUJfU1VGRklYIiwgIlBIUF9FT0wiLCAiUEhQX0VPTCIsCiAgICAgICJQSFBfSU5UX01BWCIsICJQSFBfSU5UX1NJWkUiLCAiUEhQX09VVFBVVF9IQU5ETEVSX1NUQVJUIiwKICAgICAgIlBIUF9PVVRQVVRfSEFORExFUl9DT05UIiwgIlBIUF9PVVRQVVRfSEFORExFUl9FTkQiLCAiVVBMT0FEX0VSUl9PSyIsCiAgICAgICJVUExPQURfRVJSX0lOSV9TSVpFIiwgIlVQTE9BRF9FUlJfRk9STV9TSVpFIiwgIlVQTE9BRF9FUlJfUEFSVElBTCIsCiAgICAgICJVUExPQURfRVJSX05PX0ZJTEUiLCAiVVBMT0FEX0VSUl9OT19UTVBfRElSIiwgIlVQTE9BRF9FUlJfQ0FOVF9XUklURSIsCiAgICAgICJVUExPQURfRVJSX0VYVEVOU0lPTiIsICJDQUxfR1JFR09SSUFOIiwgIkNBTF9KVUxJQU4iLCAiQ0FMX0pFV0lTSCIsCiAgICAgICJDQUxfRlJFTkNIIiwgIkNBTF9OVU1fQ0FMUyIsICJDQUxfRE9XX0RBWU5PIiwgIkNBTF9ET1dfU0hPUlQiLCAiQ0FMX0RPV19MT05HIiwKICAgICAgIkNBTF9NT05USF9HUkVHT1JJQU5fU0hPUlQiLCAiQ0FMX01PTlRIX0dSRUdPUklBTl9MT05HIiwKICAgICAgIkNBTF9NT05USF9KVUxJQU5fU0hPUlQiLCAiQ0FMX01PTlRIX0pVTElBTl9MT05HIiwgIkNBTF9NT05USF9KRVdJU0giLAogICAgICAiQ0FMX01PTlRIX0ZSRU5DSCIsICJDQUxfRUFTVEVSX0RFRkFVTFQiLCAiQ0FMX0VBU1RFUl9ST01BTiIsCiAgICAgICJDQUxfRUFTVEVSX0FMV0FZU19HUkVHT1JJQU4iLCAiQ0FMX0VBU1RFUl9BTFdBWVNfSlVMSUFOIiwKICAgICAgIkNBTF9KRVdJU0hfQUREX0FMQUZJTV9HRVJFU0giLCAiQ0FMX0pFV0lTSF9BRERfQUxBRklNIiwKICAgICAgIkNBTF9KRVdJU0hfQUREX0dFUkVTSEFZSU0iLCAiQ0xTQ1RYX0lOUFJPQ19TRVJWRVIiLCAiQ0xTQ1RYX0lOUFJPQ19IQU5ETEVSIiwKICAgICAgIkNMU0NUWF9MT0NBTF9TRVJWRVIiLCAiQ0xTQ1RYX1JFTU9URV9TRVJWRVIiLCAiQ0xTQ1RYX1NFUlZFUiIsICJDTFNDVFhfQUxMIiwKICAgICAgIlZUX05VTEwiLCAiVlRfRU1QVFkiLCAiVlRfVUkxIiwgIlZUX0kxIiwgIlZUX1VJMiIsICJWVF9JMiIsICJWVF9VSTQiLCAiVlRfSTQiLAogICAgICAiVlRfUjQiLCAiVlRfUjgiLCAiVlRfQk9PTCIsICJWVF9FUlJPUiIsICJWVF9DWSIsICJWVF9EQVRFIiwgIlZUX0JTVFIiLAogICAgICAiVlRfREVDSU1BTCIsICJWVF9VTktOT1dOIiwgIlZUX0RJU1BBVENIIiwgIlZUX1ZBUklBTlQiLCAiVlRfSU5UIiwgIlZUX1VJTlQiLAogICAgICAiVlRfQVJSQVkiLCAiVlRfQllSRUYiLCAiQ1BfQUNQIiwgIkNQX01BQ0NQIiwgIkNQX09FTUNQIiwgIkNQX1VURjciLCAiQ1BfVVRGOCIsCiAgICAgICJDUF9TWU1CT0wiLCAiQ1BfVEhSRUFEX0FDUCIsICJWQVJDTVBfTFQiLCAiVkFSQ01QX0VRIiwgIlZBUkNNUF9HVCIsCiAgICAgICJWQVJDTVBfTlVMTCIsICJOT1JNX0lHTk9SRUNBU0UiLCAiTk9STV9JR05PUkVOT05TUEFDRSIsICJOT1JNX0lHTk9SRVNZTUJPTFMiLAogICAgICAiTk9STV9JR05PUkVXSURUSCIsICJOT1JNX0lHTk9SRUtBTkFUWVBFIiwgIkRJU1BfRV9ESVZCWVpFUk8iLAogICAgICAiRElTUF9FX09WRVJGTE9XIiwgIkRJU1BfRV9CQURJTkRFWCIsICJNS19FX1VOQVZBSUxBQkxFIiwgIklOUFVUX1BPU1QiLAogICAgICAiSU5QVVRfR0VUIiwgIklOUFVUX0NPT0tJRSIsICJJTlBVVF9FTlYiLCAiSU5QVVRfU0VSVkVSIiwgIklOUFVUX1NFU1NJT04iLAogICAgICAiSU5QVVRfUkVRVUVTVCIsICJGSUxURVJfRkxBR19OT05FIiwgIkZJTFRFUl9SRVFVSVJFX1NDQUxBUiIsCiAgICAgICJGSUxURVJfUkVRVUlSRV9BUlJBWSIsICJGSUxURVJfRk9SQ0VfQVJSQVkiLCAiRklMVEVSX05VTExfT05fRkFJTFVSRSIsCiAgICAgICJGSUxURVJfVkFMSURBVEVfSU5UIiwgIkZJTFRFUl9WQUxJREFURV9CT09MRUFOIiwgIkZJTFRFUl9WQUxJREFURV9GTE9BVCIsCiAgICAgICJGSUxURVJfVkFMSURBVEVfUkVHRVhQIiwgIkZJTFRFUl9WQUxJREFURV9VUkwiLCAiRklMVEVSX1ZBTElEQVRFX0VNQUlMIiwKICAgICAgIkZJTFRFUl9WQUxJREFURV9JUCIsICJGSUxURVJfREVGQVVMVCIsICJGSUxURVJfVU5TQUZFX1JBVyIsCiAgICAgICJGSUxURVJfU0FOSVRJWkVfU1RSSU5HIiwgIkZJTFRFUl9TQU5JVElaRV9TVFJJUFBFRCIsCiAgICAgICJGSUxURVJfU0FOSVRJWkVfRU5DT0RFRCIsICJGSUxURVJfU0FOSVRJWkVfU1BFQ0lBTF9DSEFSUyIsCiAgICAgICJGSUxURVJfU0FOSVRJWkVfRU1BSUwiLCAiRklMVEVSX1NBTklUSVpFX1VSTCIsICJGSUxURVJfU0FOSVRJWkVfTlVNQkVSX0lOVCIsCiAgICAgICJGSUxURVJfU0FOSVRJWkVfTlVNQkVSX0ZMT0FUIiwgIkZJTFRFUl9TQU5JVElaRV9NQUdJQ19RVU9URVMiLAogICAgICAiRklMVEVSX0NBTExCQUNLIiwgIkZJTFRFUl9GTEFHX0FMTE9XX09DVEFMIiwgIkZJTFRFUl9GTEFHX0FMTE9XX0hFWCIsCiAgICAgICJGSUxURVJfRkxBR19TVFJJUF9MT1ciLCAiRklMVEVSX0ZMQUdfU1RSSVBfSElHSCIsICJGSUxURVJfRkxBR19FTkNPREVfTE9XIiwKICAgICAgIkZJTFRFUl9GTEFHX0VOQ09ERV9ISUdIIiwgIkZJTFRFUl9GTEFHX0VOQ09ERV9BTVAiLAogICAgICAiRklMVEVSX0ZMQUdfTk9fRU5DT0RFX1FVT1RFUyIsICJGSUxURVJfRkxBR19FTVBUWV9TVFJJTkdfTlVMTCIsCiAgICAgICJGSUxURVJfRkxBR19BTExPV19GUkFDVElPTiIsICJGSUxURVJfRkxBR19BTExPV19USE9VU0FORCIsCiAgICAgICJGSUxURVJfRkxBR19BTExPV19TQ0lFTlRJRklDIiwgIkZJTFRFUl9GTEFHX1NDSEVNRV9SRVFVSVJFRCIsCiAgICAgICJGSUxURVJfRkxBR19IT1NUX1JFUVVJUkVEIiwgIkZJTFRFUl9GTEFHX1BBVEhfUkVRVUlSRUQiLAogICAgICAiRklMVEVSX0ZMQUdfUVVFUllfUkVRVUlSRUQiLCAiRklMVEVSX0ZMQUdfSVBWNCIsICJGSUxURVJfRkxBR19JUFY2IiwKICAgICAgIkZJTFRFUl9GTEFHX05PX1JFU19SQU5HRSIsICJGSUxURVJfRkxBR19OT19QUklWX1JBTkdFIiwgIkZUUF9BU0NJSSIsCiAgICAgICJGVFBfVEVYVCIsICJGVFBfQklOQVJZIiwgIkZUUF9JTUFHRSIsICJGVFBfQVVUT1JFU1VNRSIsICJGVFBfVElNRU9VVF9TRUMiLAogICAgICAiRlRQX0FVVE9TRUVLIiwgIkZUUF9GQUlMRUQiLCAiRlRQX0ZJTklTSEVEIiwgIkZUUF9NT1JFREFUQSIsICJIQVNIX0hNQUMiLAogICAgICAiSUNPTlZfSU1QTCIsICJJQ09OVl9WRVJTSU9OIiwgIklDT05WX01JTUVfREVDT0RFX1NUUklDVCIsCiAgICAgICJJQ09OVl9NSU1FX0RFQ09ERV9DT05USU5VRV9PTl9FUlJPUiIsICJPREJDX1RZUEUiLCAiT0RCQ19CSU5NT0RFX1BBU1NUSFJVIiwKICAgICAgIk9EQkNfQklOTU9ERV9SRVRVUk4iLCAiT0RCQ19CSU5NT0RFX0NPTlZFUlQiLCAiU1FMX09EQkNfQ1VSU09SUyIsCiAgICAgICJTUUxfQ1VSX1VTRV9EUklWRVIiLCAiU1FMX0NVUl9VU0VfSUZfTkVFREVEIiwgIlNRTF9DVVJfVVNFX09EQkMiLAogICAgICAiU1FMX0NPTkNVUlJFTkNZIiwgIlNRTF9DT05DVVJfUkVBRF9PTkxZIiwgIlNRTF9DT05DVVJfTE9DSyIsCiAgICAgICJTUUxfQ09OQ1VSX1JPV1ZFUiIsICJTUUxfQ09OQ1VSX1ZBTFVFUyIsICJTUUxfQ1VSU09SX1RZUEUiLAogICAgICAiU1FMX0NVUlNPUl9GT1JXQVJEX09OTFkiLCAiU1FMX0NVUlNPUl9LRVlTRVRfRFJJVkVOIiwgIlNRTF9DVVJTT1JfRFlOQU1JQyIsCiAgICAgICJTUUxfQ1VSU09SX1NUQVRJQyIsICJTUUxfS0VZU0VUX1NJWkUiLCAiU1FMX0ZFVENIX0ZJUlNUIiwgIlNRTF9GRVRDSF9ORVhUIiwKICAgICAgIlNRTF9DSEFSIiwgIlNRTF9WQVJDSEFSIiwgIlNRTF9MT05HVkFSQ0hBUiIsICJTUUxfREVDSU1BTCIsICJTUUxfTlVNRVJJQyIsCiAgICAgICJTUUxfQklUIiwgIlNRTF9USU5ZSU5UIiwgIlNRTF9TTUFMTElOVCIsICJTUUxfSU5URUdFUiIsICJTUUxfQklHSU5UIiwKICAgICAgIlNRTF9SRUFMIiwgIlNRTF9GTE9BVCIsICJTUUxfRE9VQkxFIiwgIlNRTF9CSU5BUlkiLCAiU1FMX1ZBUkJJTkFSWSIsCiAgICAgICJTUUxfTE9OR1ZBUkJJTkFSWSIsICJTUUxfREFURSIsICJTUUxfVElNRSIsICJTUUxfVElNRVNUQU1QIiwKICAgICAgIlBSRUdfUEFUVEVSTl9PUkRFUiIsICJQUkVHX1NFVF9PUkRFUiIsICJQUkVHX09GRlNFVF9DQVBUVVJFIiwKICAgICAgIlBSRUdfU1BMSVRfTk9fRU1QVFkiLCAiUFJFR19TUExJVF9ERUxJTV9DQVBUVVJFIiwgIlBSRUdfU1BMSVRfT0ZGU0VUX0NBUFRVUkUiLAogICAgICAiUFJFR19HUkVQX0lOVkVSVCIsICJQUkVHX05PX0VSUk9SIiwgIlBSRUdfSU5URVJOQUxfRVJST1IiLAogICAgICAiUFJFR19CQUNLVFJBQ0tfTElNSVRfRVJST1IiLCAiUFJFR19SRUNVUlNJT05fTElNSVRfRVJST1IiLAogICAgICAiUFJFR19CQURfVVRGOF9FUlJPUiIsICJEQVRFX0FUT00iLCAiREFURV9DT09LSUUiLCAiREFURV9JU084NjAxIiwKICAgICAgIkRBVEVfUkZDODIyIiwgIkRBVEVfUkZDODUwIiwgIkRBVEVfUkZDMTAzNiIsICJEQVRFX1JGQzExMjMiLCAiREFURV9SRkMyODIyIiwKICAgICAgIkRBVEVfUkZDMzMzOSIsICJEQVRFX1JTUyIsICJEQVRFX1czQyIsICJTVU5GVU5DU19SRVRfVElNRVNUQU1QIiwKICAgICAgIlNVTkZVTkNTX1JFVF9TVFJJTkciLCAiU1VORlVOQ1NfUkVUX0RPVUJMRSIsICJMSUJYTUxfVkVSU0lPTiIsCiAgICAgICJMSUJYTUxfRE9UVEVEX1ZFUlNJT04iLCAiTElCWE1MX05PRU5UIiwgIkxJQlhNTF9EVERMT0FEIiwgIkxJQlhNTF9EVERBVFRSIiwKICAgICAgIkxJQlhNTF9EVERWQUxJRCIsICJMSUJYTUxfTk9FUlJPUiIsICJMSUJYTUxfTk9XQVJOSU5HIiwgIkxJQlhNTF9OT0JMQU5LUyIsCiAgICAgICJMSUJYTUxfWElOQ0xVREUiLCAiTElCWE1MX05TQ0xFQU4iLCAiTElCWE1MX05PQ0RBVEEiLCAiTElCWE1MX05PTkVUIiwKICAgICAgIkxJQlhNTF9DT01QQUNUIiwgIkxJQlhNTF9OT1hNTERFQ0wiLCAiTElCWE1MX05PRU1QVFlUQUciLCAiTElCWE1MX0VSUl9OT05FIiwKICAgICAgIkxJQlhNTF9FUlJfV0FSTklORyIsICJMSUJYTUxfRVJSX0VSUk9SIiwgIkxJQlhNTF9FUlJfRkFUQUwiLAogICAgICAiQ09OTkVDVElPTl9BQk9SVEVEIiwgIkNPTk5FQ1RJT05fTk9STUFMIiwgIkNPTk5FQ1RJT05fVElNRU9VVCIsICJJTklfVVNFUiIsCiAgICAgICJJTklfUEVSRElSIiwgIklOSV9TWVNURU0iLCAiSU5JX0FMTCIsICJQSFBfVVJMX1NDSEVNRSIsICJQSFBfVVJMX0hPU1QiLAogICAgICAiUEhQX1VSTF9QT1JUIiwgIlBIUF9VUkxfVVNFUiIsICJQSFBfVVJMX1BBU1MiLCAiUEhQX1VSTF9QQVRIIiwKICAgICAgIlBIUF9VUkxfUVVFUlkiLCAiUEhQX1VSTF9GUkFHTUVOVCIsICJNX0UiLCAiTV9MT0cyRSIsICJNX0xPRzEwRSIsICJNX0xOMiIsCiAgICAgICJNX0xOMTAiLCAiTV9QSSIsICJNX1BJXzIiLCAiTV9QSV80IiwgIk1fMV9QSSIsICJNXzJfUEkiLCAiTV9TUVJUUEkiLAogICAgICAiTV8yX1NRUlRQSSIsICJNX0xOUEkiLCAiTV9FVUxFUiIsICJNX1NRUlQyIiwgIk1fU1FSVDFfMiIsICJNX1NRUlQzIiwgIklORiIsCiAgICAgICJOQU4iLCAiSU5GT19HRU5FUkFMIiwgIklORk9fQ1JFRElUUyIsICJJTkZPX0NPTkZJR1VSQVRJT04iLCAiSU5GT19NT0RVTEVTIiwKICAgICAgIklORk9fRU5WSVJPTk1FTlQiLCAiSU5GT19WQVJJQUJMRVMiLCAiSU5GT19MSUNFTlNFIiwgIklORk9fQUxMIiwKICAgICAgIkNSRURJVFNfR1JPVVAiLCAiQ1JFRElUU19HRU5FUkFMIiwgIkNSRURJVFNfU0FQSSIsICJDUkVESVRTX01PRFVMRVMiLAogICAgICAiQ1JFRElUU19ET0NTIiwgIkNSRURJVFNfRlVMTFBBR0UiLCAiQ1JFRElUU19RQSIsICJDUkVESVRTX0FMTCIsCiAgICAgICJIVE1MX1NQRUNJQUxDSEFSUyIsICJIVE1MX0VOVElUSUVTIiwgIkVOVF9DT01QQVQiLCAiRU5UX1FVT1RFUyIsCiAgICAgICJFTlRfTk9RVU9URVMiLCAiU1RSX1BBRF9MRUZUIiwgIlNUUl9QQURfUklHSFQiLCAiU1RSX1BBRF9CT1RIIiwKICAgICAgIlBBVEhJTkZPX0RJUk5BTUUiLCAiUEFUSElORk9fQkFTRU5BTUUiLCAiUEFUSElORk9fRVhURU5TSU9OIiwKICAgICAgIlBBVEhJTkZPX0ZJTEVOQU1FIiwgIkNIQVJfTUFYIiwgIkxDX0NUWVBFIiwgIkxDX05VTUVSSUMiLCAiTENfVElNRSIsCiAgICAgICJMQ19DT0xMQVRFIiwgIkxDX01PTkVUQVJZIiwgIkxDX0FMTCIsICJTRUVLX1NFVCIsICJTRUVLX0NVUiIsICJTRUVLX0VORCIsCiAgICAgICJMT0NLX1NIIiwgIkxPQ0tfRVgiLCAiTE9DS19VTiIsICJMT0NLX05CIiwgIlNUUkVBTV9OT1RJRllfQ09OTkVDVCIsCiAgICAgICJTVFJFQU1fTk9USUZZX0FVVEhfUkVRVUlSRUQiLCAiU1RSRUFNX05PVElGWV9BVVRIX1JFU1VMVCIsCiAgICAgICJTVFJFQU1fTk9USUZZX01JTUVfVFlQRV9JUyIsICJTVFJFQU1fTk9USUZZX0ZJTEVfU0laRV9JUyIsCiAgICAgICJTVFJFQU1fTk9USUZZX1JFRElSRUNURUQiLCAiU1RSRUFNX05PVElGWV9QUk9HUkVTUyIsICJTVFJFQU1fTk9USUZZX0ZBSUxVUkUiLAogICAgICAiU1RSRUFNX05PVElGWV9DT01QTEVURUQiLCAiU1RSRUFNX05PVElGWV9SRVNPTFZFIiwKICAgICAgIlNUUkVBTV9OT1RJRllfU0VWRVJJVFlfSU5GTyIsICJTVFJFQU1fTk9USUZZX1NFVkVSSVRZX1dBUk4iLAogICAgICAiU1RSRUFNX05PVElGWV9TRVZFUklUWV9FUlIiLCAiU1RSRUFNX0ZJTFRFUl9SRUFEIiwgIlNUUkVBTV9GSUxURVJfV1JJVEUiLAogICAgICAiU1RSRUFNX0ZJTFRFUl9BTEwiLCAiU1RSRUFNX0NMSUVOVF9QRVJTSVNURU5UIiwgIlNUUkVBTV9DTElFTlRfQVNZTkNfQ09OTkVDVCIsCiAgICAgICJTVFJFQU1fQ0xJRU5UX0NPTk5FQ1QiLCAiU1RSRUFNX0NSWVBUT19NRVRIT0RfU1NMdjJfQ0xJRU5UIiwKICAgICAgIlNUUkVBTV9DUllQVE9fTUVUSE9EX1NTTHYzX0NMSUVOVCIsICJTVFJFQU1fQ1JZUFRPX01FVEhPRF9TU0x2MjNfQ0xJRU5UIiwKICAgICAgIlNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU19DTElFTlQiLCAiU1RSRUFNX0NSWVBUT19NRVRIT0RfU1NMdjJfU0VSVkVSIiwKICAgICAgIlNUUkVBTV9DUllQVE9fTUVUSE9EX1NTTHYzX1NFUlZFUiIsICJTVFJFQU1fQ1JZUFRPX01FVEhPRF9TU0x2MjNfU0VSVkVSIiwKICAgICAgIlNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU19TRVJWRVIiLCAiU1RSRUFNX1NIVVRfUkQiLCAiU1RSRUFNX1NIVVRfV1IiLAogICAgICAiU1RSRUFNX1NIVVRfUkRXUiIsICJTVFJFQU1fUEZfSU5FVCIsICJTVFJFQU1fUEZfSU5FVDYiLCAiU1RSRUFNX1BGX1VOSVgiLAogICAgICAiU1RSRUFNX0lQUFJPVE9fSVAiLCAiU1RSRUFNX0lQUFJPVE9fVENQIiwgIlNUUkVBTV9JUFBST1RPX1VEUCIsCiAgICAgICJTVFJFQU1fSVBQUk9UT19JQ01QIiwgIlNUUkVBTV9JUFBST1RPX1JBVyIsICJTVFJFQU1fU09DS19TVFJFQU0iLAogICAgICAiU1RSRUFNX1NPQ0tfREdSQU0iLCAiU1RSRUFNX1NPQ0tfUkFXIiwgIlNUUkVBTV9TT0NLX1NFUVBBQ0tFVCIsCiAgICAgICJTVFJFQU1fU09DS19SRE0iLCAiU1RSRUFNX1BFRUsiLCAiU1RSRUFNX09PQiIsICJTVFJFQU1fU0VSVkVSX0JJTkQiLAogICAgICAiU1RSRUFNX1NFUlZFUl9MSVNURU4iLCAiRklMRV9VU0VfSU5DTFVERV9QQVRIIiwgIkZJTEVfSUdOT1JFX05FV19MSU5FUyIsCiAgICAgICJGSUxFX1NLSVBfRU1QVFlfTElORVMiLCAiRklMRV9BUFBFTkQiLCAiRklMRV9OT19ERUZBVUxUX0NPTlRFWFQiLAogICAgICAiUFNGU19QQVNTX09OIiwgIlBTRlNfRkVFRF9NRSIsICJQU0ZTX0VSUl9GQVRBTCIsICJQU0ZTX0ZMQUdfTk9STUFMIiwKICAgICAgIlBTRlNfRkxBR19GTFVTSF9JTkMiLCAiUFNGU19GTEFHX0ZMVVNIX0NMT1NFIiwgIkNSWVBUX1NBTFRfTEVOR1RIIiwKICAgICAgIkNSWVBUX1NURF9ERVMiLCAiQ1JZUFRfRVhUX0RFUyIsICJDUllQVF9NRDUiLCAiQ1JZUFRfQkxPV0ZJU0giLAogICAgICAiRElSRUNUT1JZX1NFUEFSQVRPUiIsICJQQVRIX1NFUEFSQVRPUiIsICJHTE9CX0JSQUNFIiwgIkdMT0JfTUFSSyIsCiAgICAgICJHTE9CX05PU09SVCIsICJHTE9CX05PQ0hFQ0siLCAiR0xPQl9OT0VTQ0FQRSIsICJHTE9CX0VSUiIsICJHTE9CX09OTFlESVIiLAogICAgICAiTE9HX0VNRVJHIiwgIkxPR19BTEVSVCIsICJMT0dfQ1JJVCIsICJMT0dfRVJSIiwgIkxPR19XQVJOSU5HIiwgIkxPR19OT1RJQ0UiLAogICAgICAiTE9HX0lORk8iLCAiTE9HX0RFQlVHIiwgIkxPR19LRVJOIiwgIkxPR19VU0VSIiwgIkxPR19NQUlMIiwgIkxPR19EQUVNT04iLAogICAgICAiTE9HX0FVVEgiLCAiTE9HX1NZU0xPRyIsICJMT0dfTFBSIiwgIkxPR19ORVdTIiwgIkxPR19VVUNQIiwgIkxPR19DUk9OIiwKICAgICAgIkxPR19BVVRIUFJJViIsICJMT0dfUElEIiwgIkxPR19DT05TIiwgIkxPR19PREVMQVkiLCAiTE9HX05ERUxBWSIsCiAgICAgICJMT0dfTk9XQUlUIiwgIkxPR19QRVJST1IiLCAiRVhUUl9PVkVSV1JJVEUiLCAiRVhUUl9TS0lQIiwgIkVYVFJfUFJFRklYX1NBTUUiLAogICAgICAiRVhUUl9QUkVGSVhfQUxMIiwgIkVYVFJfUFJFRklYX0lOVkFMSUQiLCAiRVhUUl9QUkVGSVhfSUZfRVhJU1RTIiwKICAgICAgIkVYVFJfSUZfRVhJU1RTIiwgIkVYVFJfUkVGUyIsICJTT1JUX0FTQyIsICJTT1JUX0RFU0MiLCAiU09SVF9SRUdVTEFSIiwKICAgICAgIlNPUlRfTlVNRVJJQyIsICJTT1JUX1NUUklORyIsICJTT1JUX0xPQ0FMRV9TVFJJTkciLCAiQ0FTRV9MT1dFUiIsCiAgICAgICJDQVNFX1VQUEVSIiwgIkNPVU5UX05PUk1BTCIsICJDT1VOVF9SRUNVUlNJVkUiLCAiQVNTRVJUX0FDVElWRSIsCiAgICAgICJBU1NFUlRfQ0FMTEJBQ0siLCAiQVNTRVJUX0JBSUwiLCAiQVNTRVJUX1dBUk5JTkciLCAiQVNTRVJUX1FVSUVUX0VWQUwiLAogICAgICAiU1RSRUFNX1VTRV9QQVRIIiwgIlNUUkVBTV9JR05PUkVfVVJMIiwgIlNUUkVBTV9FTkZPUkNFX1NBRkVfTU9ERSIsCiAgICAgICJTVFJFQU1fUkVQT1JUX0VSUk9SUyIsICJTVFJFQU1fTVVTVF9TRUVLIiwgIlNUUkVBTV9VUkxfU1RBVF9MSU5LIiwKICAgICAgIlNUUkVBTV9VUkxfU1RBVF9RVUlFVCIsICJTVFJFQU1fTUtESVJfUkVDVVJTSVZFIiwgIklNQUdFVFlQRV9HSUYiLAogICAgICAiSU1BR0VUWVBFX0pQRUciLCAiSU1BR0VUWVBFX1BORyIsICJJTUFHRVRZUEVfU1dGIiwgIklNQUdFVFlQRV9QU0QiLAogICAgICAiSU1BR0VUWVBFX0JNUCIsICJJTUFHRVRZUEVfVElGRl9JSSIsICJJTUFHRVRZUEVfVElGRl9NTSIsICJJTUFHRVRZUEVfSlBDIiwKICAgICAgIklNQUdFVFlQRV9KUDIiLCAiSU1BR0VUWVBFX0pQWCIsICJJTUFHRVRZUEVfSkIyIiwgIklNQUdFVFlQRV9TV0MiLAogICAgICAiSU1BR0VUWVBFX0lGRiIsICJJTUFHRVRZUEVfV0JNUCIsICJJTUFHRVRZUEVfSlBFRzIwMDAiLCAiSU1BR0VUWVBFX1hCTSIsCiAgICAgICJUX0lOQ0xVREUiLCAiVF9JTkNMVURFX09OQ0UiLCAiVF9FVkFMIiwgIlRfUkVRVUlSRSIsICJUX1JFUVVJUkVfT05DRSIsCiAgICAgICJUX0xPR0lDQUxfT1IiLCAiVF9MT0dJQ0FMX1hPUiIsICJUX0xPR0lDQUxfQU5EIiwgIlRfUFJJTlQiLCAiVF9QTFVTX0VRVUFMIiwKICAgICAgIlRfTUlOVVNfRVFVQUwiLCAiVF9NVUxfRVFVQUwiLCAiVF9ESVZfRVFVQUwiLCAiVF9DT05DQVRfRVFVQUwiLCAiVF9NT0RfRVFVQUwiLAogICAgICAiVF9BTkRfRVFVQUwiLCAiVF9PUl9FUVVBTCIsICJUX1hPUl9FUVVBTCIsICJUX1NMX0VRVUFMIiwgIlRfU1JfRVFVQUwiLAogICAgICAiVF9CT09MRUFOX09SIiwgIlRfQk9PTEVBTl9BTkQiLCAiVF9JU19FUVVBTCIsICJUX0lTX05PVF9FUVVBTCIsCiAgICAgICJUX0lTX0lERU5USUNBTCIsICJUX0lTX05PVF9JREVOVElDQUwiLCAiVF9JU19TTUFMTEVSX09SX0VRVUFMIiwKICAgICAgIlRfSVNfR1JFQVRFUl9PUl9FUVVBTCIsICJUX1NMIiwgIlRfU1IiLCAiVF9JTkMiLCAiVF9ERUMiLCAiVF9JTlRfQ0FTVCIsCiAgICAgICJUX0RPVUJMRV9DQVNUIiwgIlRfU1RSSU5HX0NBU1QiLCAiVF9BUlJBWV9DQVNUIiwgIlRfT0JKRUNUX0NBU1QiLAogICAgICAiVF9CT09MX0NBU1QiLCAiVF9VTlNFVF9DQVNUIiwgIlRfTkVXIiwgIlRfRVhJVCIsICJUX0lGIiwgIlRfRUxTRUlGIiwgIlRfRUxTRSIsCiAgICAgICJUX0VORElGIiwgIlRfTE5VTUJFUiIsICJUX0ROVU1CRVIiLCAiVF9TVFJJTkciLCAiVF9TVFJJTkdfVkFSTkFNRSIsCiAgICAgICJUX1ZBUklBQkxFIiwgIlRfTlVNX1NUUklORyIsICJUX0lOTElORV9IVE1MIiwgIlRfQ0hBUkFDVEVSIiwKICAgICAgIlRfQkFEX0NIQVJBQ1RFUiIsICJUX0VOQ0FQU0VEX0FORF9XSElURVNQQUNFIiwgIlRfQ09OU1RBTlRfRU5DQVBTRURfU1RSSU5HIiwKICAgICAgIlRfRUNITyIsICJUX0RPIiwgIlRfV0hJTEUiLCAiVF9FTkRXSElMRSIsICJUX0ZPUiIsICJUX0VOREZPUiIsICJUX0ZPUkVBQ0giLAogICAgICAiVF9FTkRGT1JFQUNIIiwgIlRfREVDTEFSRSIsICJUX0VORERFQ0xBUkUiLCAiVF9BUyIsICJUX1NXSVRDSCIsICJUX0VORFNXSVRDSCIsCiAgICAgICJUX0NBU0UiLCAiVF9ERUZBVUxUIiwgIlRfQlJFQUsiLCAiVF9DT05USU5VRSIsICJUX0ZVTkNUSU9OIiwgIlRfQ09OU1QiLAogICAgICAiVF9SRVRVUk4iLCAiVF9VU0UiLCAiVF9HTE9CQUwiLCAiVF9TVEFUSUMiLCAiVF9WQVIiLCAiVF9VTlNFVCIsICJUX0lTU0VUIiwKICAgICAgIlRfRU1QVFkiLCAiVF9DTEFTUyIsICJUX0VYVEVORFMiLCAiVF9JTlRFUkZBQ0UiLCAiVF9JTVBMRU1FTlRTIiwKICAgICAgIlRfT0JKRUNUX09QRVJBVE9SIiwgIlRfRE9VQkxFX0FSUk9XIiwgIlRfTElTVCIsICJUX0FSUkFZIiwgIlRfQ0xBU1NfQyIsCiAgICAgICJUX0ZVTkNfQyIsICJUX01FVEhPRF9DIiwgIlRfTElORSIsICJUX0ZJTEUiLCAiVF9DT01NRU5UIiwgIlRfRE9DX0NPTU1FTlQiLAogICAgICAiVF9PUEVOX1RBRyIsICJUX09QRU5fVEFHX1dJVEhfRUNITyIsICJUX0NMT1NFX1RBRyIsICJUX1dISVRFU1BBQ0UiLAogICAgICAiVF9TVEFSVF9IRVJFRE9DIiwgIlRfRU5EX0hFUkVET0MiLCAiVF9ET0xMQVJfT1BFTl9DVVJMWV9CUkFDRVMiLAogICAgICAiVF9DVVJMWV9PUEVOIiwgIlRfUEFBTUFZSU1fTkVLVURPVEFZSU0iLCAiVF9ET1VCTEVfQ09MT04iLCAiVF9BQlNUUkFDVCIsCiAgICAgICJUX0NBVENIIiwgIlRfRklOQUwiLCAiVF9JTlNUQU5DRU9GIiwgIlRfUFJJVkFURSIsICJUX1BST1RFQ1RFRCIsICJUX1BVQkxJQyIsCiAgICAgICJUX1RIUk9XIiwgIlRfVFJZIiwgIlRfQ0xPTkUiLCAiVF9IQUxUX0NPTVBJTEVSIiwgIkZPUkNFX0daSVAiLAogICAgICAiRk9SQ0VfREVGTEFURSIsICJYTUxfRUxFTUVOVF9OT0RFIiwgIlhNTF9BVFRSSUJVVEVfTk9ERSIsICJYTUxfVEVYVF9OT0RFIiwKICAgICAgIlhNTF9DREFUQV9TRUNUSU9OX05PREUiLCAiWE1MX0VOVElUWV9SRUZfTk9ERSIsICJYTUxfRU5USVRZX05PREUiLAogICAgICAiWE1MX1BJX05PREUiLCAiWE1MX0NPTU1FTlRfTk9ERSIsICJYTUxfRE9DVU1FTlRfTk9ERSIsCiAgICAgICJYTUxfRE9DVU1FTlRfVFlQRV9OT0RFIiwgIlhNTF9ET0NVTUVOVF9GUkFHX05PREUiLCAiWE1MX05PVEFUSU9OX05PREUiLAogICAgICAiWE1MX0hUTUxfRE9DVU1FTlRfTk9ERSIsICJYTUxfRFREX05PREUiLCAiWE1MX0VMRU1FTlRfREVDTF9OT0RFIiwKICAgICAgIlhNTF9BVFRSSUJVVEVfREVDTF9OT0RFIiwgIlhNTF9FTlRJVFlfREVDTF9OT0RFIiwgIlhNTF9OQU1FU1BBQ0VfREVDTF9OT0RFIiwKICAgICAgIlhNTF9MT0NBTF9OQU1FU1BBQ0UiLCAiWE1MX0FUVFJJQlVURV9DREFUQSIsICJYTUxfQVRUUklCVVRFX0lEIiwKICAgICAgIlhNTF9BVFRSSUJVVEVfSURSRUYiLCAiWE1MX0FUVFJJQlVURV9JRFJFRlMiLCAiWE1MX0FUVFJJQlVURV9FTlRJVFkiLAogICAgICAiWE1MX0FUVFJJQlVURV9OTVRPS0VOIiwgIlhNTF9BVFRSSUJVVEVfTk1UT0tFTlMiLCAiWE1MX0FUVFJJQlVURV9FTlVNRVJBVElPTiIsCiAgICAgICJYTUxfQVRUUklCVVRFX05PVEFUSU9OIiwgIkRPTV9QSFBfRVJSIiwgIkRPTV9JTkRFWF9TSVpFX0VSUiIsCiAgICAgICJET01TVFJJTkdfU0laRV9FUlIiLCAiRE9NX0hJRVJBUkNIWV9SRVFVRVNUX0VSUiIsICJET01fV1JPTkdfRE9DVU1FTlRfRVJSIiwKICAgICAgIkRPTV9JTlZBTElEX0NIQVJBQ1RFUl9FUlIiLCAiRE9NX05PX0RBVEFfQUxMT1dFRF9FUlIiLAogICAgICAiRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIsICJET01fTk9UX0ZPVU5EX0VSUiIsCiAgICAgICJET01fTk9UX1NVUFBPUlRFRF9FUlIiLCAiRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIiLCAiRE9NX0lOVkFMSURfU1RBVEVfRVJSIiwKICAgICAgIkRPTV9TWU5UQVhfRVJSIiwgIkRPTV9JTlZBTElEX01PRElGSUNBVElPTl9FUlIiLCAiRE9NX05BTUVTUEFDRV9FUlIiLAogICAgICAiRE9NX0lOVkFMSURfQUNDRVNTX0VSUiIsICJET01fVkFMSURBVElPTl9FUlIiLCAiWE1MX0VSUk9SX05PTkUiLAogICAgICAiWE1MX0VSUk9SX05PX01FTU9SWSIsICJYTUxfRVJST1JfU1lOVEFYIiwgIlhNTF9FUlJPUl9OT19FTEVNRU5UUyIsCiAgICAgICJYTUxfRVJST1JfSU5WQUxJRF9UT0tFTiIsICJYTUxfRVJST1JfVU5DTE9TRURfVE9LRU4iLAogICAgICAiWE1MX0VSUk9SX1BBUlRJQUxfQ0hBUiIsICJYTUxfRVJST1JfVEFHX01JU01BVENIIiwKICAgICAgIlhNTF9FUlJPUl9EVVBMSUNBVEVfQVRUUklCVVRFIiwgIlhNTF9FUlJPUl9KVU5LX0FGVEVSX0RPQ19FTEVNRU5UIiwKICAgICAgIlhNTF9FUlJPUl9QQVJBTV9FTlRJVFlfUkVGIiwgIlhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZIiwKICAgICAgIlhNTF9FUlJPUl9SRUNVUlNJVkVfRU5USVRZX1JFRiIsICJYTUxfRVJST1JfQVNZTkNfRU5USVRZIiwKICAgICAgIlhNTF9FUlJPUl9CQURfQ0hBUl9SRUYiLCAiWE1MX0VSUk9SX0JJTkFSWV9FTlRJVFlfUkVGIiwKICAgICAgIlhNTF9FUlJPUl9BVFRSSUJVVEVfRVhURVJOQUxfRU5USVRZX1JFRiIsICJYTUxfRVJST1JfTUlTUExBQ0VEX1hNTF9QSSIsCiAgICAgICJYTUxfRVJST1JfVU5LTk9XTl9FTkNPRElORyIsICJYTUxfRVJST1JfSU5DT1JSRUNUX0VOQ09ESU5HIiwKICAgICAgIlhNTF9FUlJPUl9VTkNMT1NFRF9DREFUQV9TRUNUSU9OIiwgIlhNTF9FUlJPUl9FWFRFUk5BTF9FTlRJVFlfSEFORExJTkciLAogICAgICAiWE1MX09QVElPTl9DQVNFX0ZPTERJTkciLCAiWE1MX09QVElPTl9UQVJHRVRfRU5DT0RJTkciLAogICAgICAiWE1MX09QVElPTl9TS0lQX1RBR1NUQVJUIiwgIlhNTF9PUFRJT05fU0tJUF9XSElURSIsICJYTUxfU0FYX0lNUEwiLCAiSU1HX0dJRiIsCiAgICAgICJJTUdfSlBHIiwgIklNR19KUEVHIiwgIklNR19QTkciLCAiSU1HX1dCTVAiLCAiSU1HX1hQTSIsICJJTUdfQ09MT1JfVElMRUQiLAogICAgICAiSU1HX0NPTE9SX1NUWUxFRCIsICJJTUdfQ09MT1JfQlJVU0hFRCIsICJJTUdfQ09MT1JfU1RZTEVEQlJVU0hFRCIsCiAgICAgICJJTUdfQ09MT1JfVFJBTlNQQVJFTlQiLCAiSU1HX0FSQ19ST1VOREVEIiwgIklNR19BUkNfUElFIiwgIklNR19BUkNfQ0hPUkQiLAogICAgICAiSU1HX0FSQ19OT0ZJTEwiLCAiSU1HX0FSQ19FREdFRCIsICJJTUdfR0QyX1JBVyIsICJJTUdfR0QyX0NPTVBSRVNTRUQiLAogICAgICAiSU1HX0VGRkVDVF9SRVBMQUNFIiwgIklNR19FRkZFQ1RfQUxQSEFCTEVORCIsICJJTUdfRUZGRUNUX05PUk1BTCIsCiAgICAgICJJTUdfRUZGRUNUX09WRVJMQVkiLCAiR0RfQlVORExFRCIsICJJTUdfRklMVEVSX05FR0FURSIsCiAgICAgICJJTUdfRklMVEVSX0dSQVlTQ0FMRSIsICJJTUdfRklMVEVSX0JSSUdIVE5FU1MiLCAiSU1HX0ZJTFRFUl9DT05UUkFTVCIsCiAgICAgICJJTUdfRklMVEVSX0NPTE9SSVpFIiwgIklNR19GSUxURVJfRURHRURFVEVDVCIsICJJTUdfRklMVEVSX0dBVVNTSUFOX0JMVVIiLAogICAgICAiSU1HX0ZJTFRFUl9TRUxFQ1RJVkVfQkxVUiIsICJJTUdfRklMVEVSX0VNQk9TUyIsICJJTUdfRklMVEVSX01FQU5fUkVNT1ZBTCIsCiAgICAgICJJTUdfRklMVEVSX1NNT09USCIsICJQTkdfTk9fRklMVEVSIiwgIlBOR19GSUxURVJfTk9ORSIsICJQTkdfRklMVEVSX1NVQiIsCiAgICAgICJQTkdfRklMVEVSX1VQIiwgIlBOR19GSUxURVJfQVZHIiwgIlBOR19GSUxURVJfUEFFVEgiLCAiUE5HX0FMTF9GSUxURVJTIiwKICAgICAgIk1CX09WRVJMT0FEX01BSUwiLCAiTUJfT1ZFUkxPQURfU1RSSU5HIiwgIk1CX09WRVJMT0FEX1JFR0VYIiwgIk1CX0NBU0VfVVBQRVIiLAogICAgICAiTUJfQ0FTRV9MT1dFUiIsICJNQl9DQVNFX1RJVExFIiwgIk1ZU1FMX0FTU09DIiwgIk1ZU1FMX05VTSIsICJNWVNRTF9CT1RIIiwKICAgICAgIk1ZU1FMX0NMSUVOVF9DT01QUkVTUyIsICJNWVNRTF9DTElFTlRfU1NMIiwgIk1ZU1FMX0NMSUVOVF9JTlRFUkFDVElWRSIsCiAgICAgICJNWVNRTF9DTElFTlRfSUdOT1JFX1NQQUNFIiwgIk1ZU1FMSV9SRUFEX0RFRkFVTFRfR1JPVVAiLAogICAgICAiTVlTUUxJX1JFQURfREVGQVVMVF9GSUxFIiwgIk1ZU1FMSV9PUFRfQ09OTkVDVF9USU1FT1VUIiwKICAgICAgIk1ZU1FMSV9PUFRfTE9DQUxfSU5GSUxFIiwgIk1ZU1FMSV9JTklUX0NPTU1BTkQiLCAiTVlTUUxJX0NMSUVOVF9TU0wiLAogICAgICAiTVlTUUxJX0NMSUVOVF9DT01QUkVTUyIsICJNWVNRTElfQ0xJRU5UX0lOVEVSQUNUSVZFIiwKICAgICAgIk1ZU1FMSV9DTElFTlRfSUdOT1JFX1NQQUNFIiwgIk1ZU1FMSV9DTElFTlRfTk9fU0NIRU1BIiwKICAgICAgIk1ZU1FMSV9DTElFTlRfRk9VTkRfUk9XUyIsICJNWVNRTElfU1RPUkVfUkVTVUxUIiwgIk1ZU1FMSV9VU0VfUkVTVUxUIiwKICAgICAgIk1ZU1FMSV9BU1NPQyIsICJNWVNRTElfTlVNIiwgIk1ZU1FMSV9CT1RIIiwKICAgICAgIk1ZU1FMSV9TVE1UX0FUVFJfVVBEQVRFX01BWF9MRU5HVEgiLCAiTVlTUUxJX1NUTVRfQVRUUl9DVVJTT1JfVFlQRSIsCiAgICAgICJNWVNRTElfQ1VSU09SX1RZUEVfTk9fQ1VSU09SIiwgIk1ZU1FMSV9DVVJTT1JfVFlQRV9SRUFEX09OTFkiLAogICAgICAiTVlTUUxJX0NVUlNPUl9UWVBFX0ZPUl9VUERBVEUiLCAiTVlTUUxJX0NVUlNPUl9UWVBFX1NDUk9MTEFCTEUiLAogICAgICAiTVlTUUxJX1NUTVRfQVRUUl9QUkVGRVRDSF9ST1dTIiwgIk1ZU1FMSV9OT1RfTlVMTF9GTEFHIiwKICAgICAgIk1ZU1FMSV9QUklfS0VZX0ZMQUciLCAiTVlTUUxJX1VOSVFVRV9LRVlfRkxBRyIsICJNWVNRTElfTVVMVElQTEVfS0VZX0ZMQUciLAogICAgICAiTVlTUUxJX0JMT0JfRkxBRyIsICJNWVNRTElfVU5TSUdORURfRkxBRyIsICJNWVNRTElfWkVST0ZJTExfRkxBRyIsCiAgICAgICJNWVNRTElfQVVUT19JTkNSRU1FTlRfRkxBRyIsICJNWVNRTElfVElNRVNUQU1QX0ZMQUciLCAiTVlTUUxJX1NFVF9GTEFHIiwKICAgICAgIk1ZU1FMSV9OVU1fRkxBRyIsICJNWVNRTElfUEFSVF9LRVlfRkxBRyIsICJNWVNRTElfR1JPVVBfRkxBRyIsCiAgICAgICJNWVNRTElfVFlQRV9ERUNJTUFMIiwgIk1ZU1FMSV9UWVBFX1RJTlkiLCAiTVlTUUxJX1RZUEVfU0hPUlQiLAogICAgICAiTVlTUUxJX1RZUEVfTE9ORyIsICJNWVNRTElfVFlQRV9GTE9BVCIsICJNWVNRTElfVFlQRV9ET1VCTEUiLAogICAgICAiTVlTUUxJX1RZUEVfTlVMTCIsICJNWVNRTElfVFlQRV9USU1FU1RBTVAiLCAiTVlTUUxJX1RZUEVfTE9OR0xPTkciLAogICAgICAiTVlTUUxJX1RZUEVfSU5UMjQiLCAiTVlTUUxJX1RZUEVfREFURSIsICJNWVNRTElfVFlQRV9USU1FIiwKICAgICAgIk1ZU1FMSV9UWVBFX0RBVEVUSU1FIiwgIk1ZU1FMSV9UWVBFX1lFQVIiLCAiTVlTUUxJX1RZUEVfTkVXREFURSIsCiAgICAgICJNWVNRTElfVFlQRV9FTlVNIiwgIk1ZU1FMSV9UWVBFX1NFVCIsICJNWVNRTElfVFlQRV9USU5ZX0JMT0IiLAogICAgICAiTVlTUUxJX1RZUEVfTUVESVVNX0JMT0IiLCAiTVlTUUxJX1RZUEVfTE9OR19CTE9CIiwgIk1ZU1FMSV9UWVBFX0JMT0IiLAogICAgICAiTVlTUUxJX1RZUEVfVkFSX1NUUklORyIsICJNWVNRTElfVFlQRV9TVFJJTkciLCAiTVlTUUxJX1RZUEVfQ0hBUiIsCiAgICAgICJNWVNRTElfVFlQRV9JTlRFUlZBTCIsICJNWVNRTElfVFlQRV9HRU9NRVRSWSIsICJNWVNRTElfVFlQRV9ORVdERUNJTUFMIiwKICAgICAgIk1ZU1FMSV9UWVBFX0JJVCIsICJNWVNRTElfUlBMX01BU1RFUiIsICJNWVNRTElfUlBMX1NMQVZFIiwgIk1ZU1FMSV9SUExfQURNSU4iLAogICAgICAiTVlTUUxJX05PX0RBVEEiLCAiTVlTUUxJX0RBVEFfVFJVTkNBVEVEIiwgIk1ZU1FMSV9SRVBPUlRfSU5ERVgiLAogICAgICAiTVlTUUxJX1JFUE9SVF9FUlJPUiIsICJNWVNRTElfUkVQT1JUX1NUUklDVCIsICJNWVNRTElfUkVQT1JUX0FMTCIsCiAgICAgICJNWVNRTElfUkVQT1JUX09GRiIsICJBRl9VTklYIiwgIkFGX0lORVQiLCAiQUZfSU5FVDYiLCAiU09DS19TVFJFQU0iLAogICAgICAiU09DS19ER1JBTSIsICJTT0NLX1JBVyIsICJTT0NLX1NFUVBBQ0tFVCIsICJTT0NLX1JETSIsICJNU0dfT09CIiwKICAgICAgIk1TR19XQUlUQUxMIiwgIk1TR19QRUVLIiwgIk1TR19ET05UUk9VVEUiLCAiU09fREVCVUciLCAiU09fUkVVU0VBRERSIiwKICAgICAgIlNPX0tFRVBBTElWRSIsICJTT19ET05UUk9VVEUiLCAiU09fTElOR0VSIiwgIlNPX0JST0FEQ0FTVCIsICJTT19PT0JJTkxJTkUiLAogICAgICAiU09fU05EQlVGIiwgIlNPX1JDVkJVRiIsICJTT19TTkRMT1dBVCIsICJTT19SQ1ZMT1dBVCIsICJTT19TTkRUSU1FTyIsCiAgICAgICJTT19SQ1ZUSU1FTyIsICJTT19UWVBFIiwgIlNPX0VSUk9SIiwgIlNPTF9TT0NLRVQiLCAiU09NQVhDT05OIiwKICAgICAgIlBIUF9OT1JNQUxfUkVBRCIsICJQSFBfQklOQVJZX1JFQUQiLCAiU09DS0VUX0VJTlRSIiwgIlNPQ0tFVF9FQkFERiIsCiAgICAgICJTT0NLRVRfRUFDQ0VTIiwgIlNPQ0tFVF9FRkFVTFQiLCAiU09DS0VUX0VJTlZBTCIsICJTT0NLRVRfRU1GSUxFIiwKICAgICAgIlNPQ0tFVF9FV09VTERCTE9DSyIsICJTT0NLRVRfRUlOUFJPR1JFU1MiLCAiU09DS0VUX0VBTFJFQURZIiwKICAgICAgIlNPQ0tFVF9FTk9UU09DSyIsICJTT0NLRVRfRURFU1RBRERSUkVRIiwgIlNPQ0tFVF9FTVNHU0laRSIsCiAgICAgICJTT0NLRVRfRVBST1RPVFlQRSIsICJTT0NLRVRfRU5PUFJPVE9PUFQiLCAiU09DS0VUX0VQUk9UT05PU1VQUE9SVCIsCiAgICAgICJTT0NLRVRfRVNPQ0tUTk9TVVBQT1JUIiwgIlNPQ0tFVF9FT1BOT1RTVVBQIiwgIlNPQ0tFVF9FUEZOT1NVUFBPUlQiLAogICAgICAiU09DS0VUX0VBRk5PU1VQUE9SVCIsICJTT0NLRVRfRUFERFJJTlVTRSIsICJTT0NLRVRfRUFERFJOT1RBVkFJTCIsCiAgICAgICJTT0NLRVRfRU5FVERPV04iLCAiU09DS0VUX0VORVRVTlJFQUNIIiwgIlNPQ0tFVF9FTkVUUkVTRVQiLAogICAgICAiU09DS0VUX0VDT05OQUJPUlRFRCIsICJTT0NLRVRfRUNPTk5SRVNFVCIsICJTT0NLRVRfRU5PQlVGUyIsICJTT0NLRVRfRUlTQ09OTiIsCiAgICAgICJTT0NLRVRfRU5PVENPTk4iLCAiU09DS0VUX0VTSFVURE9XTiIsICJTT0NLRVRfRVRPT01BTllSRUZTIiwKICAgICAgIlNPQ0tFVF9FVElNRURPVVQiLCAiU09DS0VUX0VDT05OUkVGVVNFRCIsICJTT0NLRVRfRUxPT1AiLAogICAgICAiU09DS0VUX0VOQU1FVE9PTE9ORyIsICJTT0NLRVRfRUhPU1RET1dOIiwgIlNPQ0tFVF9FSE9TVFVOUkVBQ0giLAogICAgICAiU09DS0VUX0VOT1RFTVBUWSIsICJTT0NLRVRfRVBST0NMSU0iLCAiU09DS0VUX0VVU0VSUyIsICJTT0NLRVRfRURRVU9UIiwKICAgICAgIlNPQ0tFVF9FU1RBTEUiLCAiU09DS0VUX0VSRU1PVEUiLCAiU09DS0VUX0VESVNDT04iLCAiU09DS0VUX1NZU05PVFJFQURZIiwKICAgICAgIlNPQ0tFVF9WRVJOT1RTVVBQT1JURUQiLCAiU09DS0VUX05PVElOSVRJQUxJU0VEIiwgIlNPQ0tFVF9IT1NUX05PVF9GT1VORCIsCiAgICAgICJTT0NLRVRfVFJZX0FHQUlOIiwgIlNPQ0tFVF9OT19SRUNPVkVSWSIsICJTT0NLRVRfTk9fREFUQSIsCiAgICAgICJTT0NLRVRfTk9fQUREUkVTUyIsICJTT0xfVENQIiwgIlNPTF9VRFAiLCAiRUFDQ0VMRVJBVE9SX1ZFUlNJT04iLAogICAgICAiRUFDQ0VMRVJBVE9SX1NITV9BTkRfRElTSyIsICJFQUNDRUxFUkFUT1JfU0hNIiwgIkVBQ0NFTEVSQVRPUl9TSE1fT05MWSIsCiAgICAgICJFQUNDRUxFUkFUT1JfRElTS19PTkxZIiwgIkVBQ0NFTEVSQVRPUl9OT05FIiwgIlhERUJVR19UUkFDRV9BUFBFTkQiLAogICAgICAiWERFQlVHX1RSQUNFX0NPTVBVVEVSSVpFRCIsICJYREVCVUdfVFJBQ0VfSFRNTCIsICJYREVCVUdfQ0NfVU5VU0VEIiwKICAgICAgIlhERUJVR19DQ19ERUFEX0NPREUiLCAiU1RESU4iLCAiU1RET1VUIiwgIlNUREVSUiIKICAgIF0uZm9yRWFjaChmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHsKICAgICAgcmVzdWx0W2VsZW1lbnRdID0gdG9rZW4oImF0b20iLCAicGhwLXByZWRlZmluZWQtY29uc3RhbnQiKTsKICAgIH0pOwoKICAgIC8vIFBIUCBkZWNsYXJlZCBjbGFzc2VzIC0gb3V0cHV0IG9mIGdldF9kZWNsYXJlZF9jbGFzc2VzKCkuIERpZmZlcnMgZnJvbSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQuY2xhc3Nlcy5waHAKICAgIFsgICJzdGRDbGFzcyIsICJFeGNlcHRpb24iLCAiRXJyb3JFeGNlcHRpb24iLCAiQ09NUGVyc2lzdEhlbHBlciIsICJjb21fZXhjZXB0aW9uIiwKICAgICAgImNvbV9zYWZlYXJyYXlfcHJveHkiLCAidmFyaWFudCIsICJjb20iLCAiZG90bmV0IiwgIlJlZmxlY3Rpb25FeGNlcHRpb24iLAogICAgICAiUmVmbGVjdGlvbiIsICJSZWZsZWN0aW9uRnVuY3Rpb25BYnN0cmFjdCIsICJSZWZsZWN0aW9uRnVuY3Rpb24iLAogICAgICAiUmVmbGVjdGlvblBhcmFtZXRlciIsICJSZWZsZWN0aW9uTWV0aG9kIiwgIlJlZmxlY3Rpb25DbGFzcyIsCiAgICAgICJSZWZsZWN0aW9uT2JqZWN0IiwgIlJlZmxlY3Rpb25Qcm9wZXJ0eSIsICJSZWZsZWN0aW9uRXh0ZW5zaW9uIiwgIkRhdGVUaW1lIiwKICAgICAgIkRhdGVUaW1lWm9uZSIsICJMaWJYTUxFcnJvciIsICJfX1BIUF9JbmNvbXBsZXRlX0NsYXNzIiwgInBocF91c2VyX2ZpbHRlciIsCiAgICAgICJEaXJlY3RvcnkiLCAiU2ltcGxlWE1MRWxlbWVudCIsICJET01FeGNlcHRpb24iLCAiRE9NU3RyaW5nTGlzdCIsCiAgICAgICJET01OYW1lTGlzdCIsICJET01JbXBsZW1lbnRhdGlvbkxpc3QiLCAiRE9NSW1wbGVtZW50YXRpb25Tb3VyY2UiLAogICAgICAiRE9NSW1wbGVtZW50YXRpb24iLCAiRE9NTm9kZSIsICJET01OYW1lU3BhY2VOb2RlIiwgIkRPTURvY3VtZW50RnJhZ21lbnQiLAogICAgICAiRE9NRG9jdW1lbnQiLCAiRE9NTm9kZUxpc3QiLCAiRE9NTmFtZWROb2RlTWFwIiwgIkRPTUNoYXJhY3RlckRhdGEiLCAiRE9NQXR0ciIsCiAgICAgICJET01FbGVtZW50IiwgIkRPTVRleHQiLCAiRE9NQ29tbWVudCIsICJET01UeXBlaW5mbyIsICJET01Vc2VyRGF0YUhhbmRsZXIiLAogICAgICAiRE9NRG9tRXJyb3IiLCAiRE9NRXJyb3JIYW5kbGVyIiwgIkRPTUxvY2F0b3IiLCAiRE9NQ29uZmlndXJhdGlvbiIsCiAgICAgICJET01DZGF0YVNlY3Rpb24iLCAiRE9NRG9jdW1lbnRUeXBlIiwgIkRPTU5vdGF0aW9uIiwgIkRPTUVudGl0eSIsCiAgICAgICJET01FbnRpdHlSZWZlcmVuY2UiLCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIiwgIkRPTVN0cmluZ0V4dGVuZCIsCiAgICAgICJET01YUGF0aCIsICJSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yIiwgIkl0ZXJhdG9ySXRlcmF0b3IiLCAiRmlsdGVySXRlcmF0b3IiLAogICAgICAiUmVjdXJzaXZlRmlsdGVySXRlcmF0b3IiLCAiUGFyZW50SXRlcmF0b3IiLCAiTGltaXRJdGVyYXRvciIsCiAgICAgICJDYWNoaW5nSXRlcmF0b3IiLCAiUmVjdXJzaXZlQ2FjaGluZ0l0ZXJhdG9yIiwgIk5vUmV3aW5kSXRlcmF0b3IiLAogICAgICAiQXBwZW5kSXRlcmF0b3IiLCAiSW5maW5pdGVJdGVyYXRvciIsICJSZWdleEl0ZXJhdG9yIiwKICAgICAgIlJlY3Vyc2l2ZVJlZ2V4SXRlcmF0b3IiLCAiRW1wdHlJdGVyYXRvciIsICJBcnJheU9iamVjdCIsICJBcnJheUl0ZXJhdG9yIiwKICAgICAgIlJlY3Vyc2l2ZUFycmF5SXRlcmF0b3IiLCAiU3BsRmlsZUluZm8iLCAiRGlyZWN0b3J5SXRlcmF0b3IiLAogICAgICAiUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IiLCAiU3BsRmlsZU9iamVjdCIsICJTcGxUZW1wRmlsZU9iamVjdCIsCiAgICAgICJTaW1wbGVYTUxJdGVyYXRvciIsICJMb2dpY0V4Y2VwdGlvbiIsICJCYWRGdW5jdGlvbkNhbGxFeGNlcHRpb24iLAogICAgICAiQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbiIsICJEb21haW5FeGNlcHRpb24iLCAiSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIiwKICAgICAgIkxlbmd0aEV4Y2VwdGlvbiIsICJPdXRPZlJhbmdlRXhjZXB0aW9uIiwgIlJ1bnRpbWVFeGNlcHRpb24iLAogICAgICAiT3V0T2ZCb3VuZHNFeGNlcHRpb24iLCAiT3ZlcmZsb3dFeGNlcHRpb24iLCAiUmFuZ2VFeGNlcHRpb24iLAogICAgICAiVW5kZXJmbG93RXhjZXB0aW9uIiwgIlVuZXhwZWN0ZWRWYWx1ZUV4Y2VwdGlvbiIsICJTcGxPYmplY3RTdG9yYWdlIiwKICAgICAgIlhNTFJlYWRlciIsICJYTUxXcml0ZXIiLCAibXlzcWxpX3NxbF9leGNlcHRpb24iLCAibXlzcWxpX2RyaXZlciIsICJteXNxbGkiLAogICAgICAibXlzcWxpX3dhcm5pbmciLCAibXlzcWxpX3Jlc3VsdCIsICJteXNxbGlfc3RtdCIsICJQRE9FeGNlcHRpb24iLCAiUERPIiwKICAgICAgIlBET1N0YXRlbWVudCIsICJQRE9Sb3ciCiAgICBdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJ0X3N0cmluZyIsICJwaHAtcHJlZGVmaW5lZC1jbGFzcyIpOwogICAgfSk7CgogICAgcmV0dXJuIHJlc3VsdDsKCiAgfSgpOwoKICAvLyBIZWxwZXIgcmVnZXhwcwogIHZhciBpc09wZXJhdG9yQ2hhciA9IC9bKyomJVwvPTw+IT8ufC1dLzsKICB2YXIgaXNIZXhEaWdpdCA9IC9bMC05QS1GYS1mXS87CiAgdmFyIGlzV29yZENoYXIgPSAvW1x3XCRfXFxdLzsKCiAgLy8gV3JhcHBlciBhcm91bmQgcGhwVG9rZW4gdGhhdCBoZWxwcyBtYWludGFpbiBwYXJzZXIgc3RhdGUgKHdoZXRoZXIKICAvLyB3ZSBhcmUgaW5zaWRlIG9mIGEgbXVsdGktbGluZSBjb21tZW50KQogIGZ1bmN0aW9uIHBocFRva2VuU3RhdGUoaW5zaWRlKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgbmV3SW5zaWRlID0gaW5zaWRlOwogICAgICB2YXIgdHlwZSA9IHBocFRva2VuKGluc2lkZSwgc291cmNlLCBmdW5jdGlvbihjKSB7bmV3SW5zaWRlID0gYzt9KTsKICAgICAgaWYgKG5ld0luc2lkZSAhPSBpbnNpZGUpCiAgICAgICAgc2V0U3RhdGUocGhwVG9rZW5TdGF0ZShuZXdJbnNpZGUpKTsKICAgICAgcmV0dXJuIHR5cGU7CiAgICB9OwogIH0KCiAgLy8gVGhlIHRva2VuIHJlYWRlciwgaW50ZWRlZCB0byBiZSB1c2VkIGJ5IHRoZSB0b2tlbml6ZXIgZnJvbQogIC8vIHRva2VuaXplLmpzICh0aHJvdWdoIHBocFRva2VuU3RhdGUpLiBBZHZhbmNlcyB0aGUgc291cmNlIHN0cmVhbQogIC8vIG92ZXIgYSB0b2tlbiwgYW5kIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHR5cGUgYW5kIHN0eWxlCiAgLy8gb2YgdGhhdCB0b2tlbi4KICBmdW5jdGlvbiBwaHBUb2tlbihpbnNpZGUsIHNvdXJjZSwgc2V0SW5zaWRlKSB7CiAgICBmdW5jdGlvbiByZWFkSGV4TnVtYmVyKCl7CiAgICAgIHNvdXJjZS5uZXh0KCk7ICAvLyBza2lwIHRoZSAneCcKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNIZXhEaWdpdCk7CiAgICAgIHJldHVybiB7dHlwZTogIm51bWJlciIsIHN0eWxlOiAicGhwLWF0b20ifTsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkTnVtYmVyKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICBpZiAoc291cmNlLmVxdWFscygiZSIpIHx8IHNvdXJjZS5lcXVhbHMoIkUiKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiLSIpKQogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogInBocC1hdG9tIn07CiAgICB9CiAgICAvLyBSZWFkIGEgd29yZCBhbmQgbG9vayBpdCB1cCBpbiB0aGUga2V5d29yZHMgYXJyYXkuIElmIGZvdW5kLCBpdCdzIGEKICAgIC8vIGtleXdvcmQgb2YgdGhhdCB0eXBlOyBvdGhlcndpc2UgaXQncyBhIFBIUCBUX1NUUklORy4KICAgIGZ1bmN0aW9uIHJlYWRXb3JkKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgIHZhciBrbm93biA9IGtleXdvcmRzLmhhc093blByb3BlcnR5KHdvcmQpICYmIGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICAvLyBzaW5jZSB3ZSBjYWxsZWQgZ2V0KCksIHRva2VuaXplOjp0YWtlIHdvbid0IGdldCgpIGFueXRoaW5nLiBUaHVzLCB3ZSBtdXN0IHNldCB0b2tlbi5jb250ZW50CiAgICAgIHJldHVybiBrbm93biA/IHt0eXBlOiBrbm93bi50eXBlLCBzdHlsZToga25vd24uc3R5bGUsIGNvbnRlbnQ6IHdvcmR9IDoKICAgICAge3R5cGU6ICJ0X3N0cmluZyIsIHN0eWxlOiAicGhwLXRfc3RyaW5nIiwgY29udGVudDogd29yZH07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkVmFyaWFibGUoKSB7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzV29yZENoYXIpOwogICAgICB2YXIgd29yZCA9IHNvdXJjZS5nZXQoKTsKICAgICAgLy8gaW4gUEhQLCAnJHRoaXMnIGlzIGEgcmVzZXJ2ZWQgd29yZCwgYnV0ICd0aGlzJyBpc24ndC4gWW91IGNhbiBoYXZlIGZ1bmN0aW9uIHRoaXMoKSB7Li4ufQogICAgICBpZiAod29yZCA9PSAiJHRoaXMiKQogICAgICAgIHJldHVybiB7dHlwZTogInZhcmlhYmxlIiwgc3R5bGU6ICJwaHAta2V5d29yZCIsIGNvbnRlbnQ6IHdvcmR9OwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIHt0eXBlOiAidmFyaWFibGUiLCBzdHlsZTogInBocC12YXJpYWJsZSIsIGNvbnRlbnQ6IHdvcmR9OwogICAgfQoKICAgIC8vIEFkdmFuY2UgdGhlIHN0cmVhbSB1bnRpbCB0aGUgZ2l2ZW4gY2hhcmFjdGVyIChub3QgcHJlY2VkZWQgYnkgYQogICAgLy8gYmFja3NsYXNoKSBpcyBlbmNvdW50ZXJlZCwgb3IgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyByZWFjaGVkLgogICAgZnVuY3Rpb24gbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgZW5kKSB7CiAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgIHdoaWxlKCFzb3VyY2UuZW5kT2ZMaW5lKCkpewogICAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2FwZWQpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgZXNjYXBlZCA9IG5leHQgPT0gIlxcIiAmJiAhZXNjYXBlZDsKICAgICAgfQogICAgICByZXR1cm4gZXNjYXBlZDsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkU2luZ2xlTGluZUNvbW1lbnQoKSB7CiAgICAgIC8vIHJlYWQgdW50aWwgdGhlIGVuZCBvZiB0aGUgbGluZSBvciB1bnRpbCA/Piwgd2hpY2ggdGVybWluYXRlcyBzaW5nbGUtbGluZSBjb21tZW50cwogICAgICAvLyBgPD9waHAgZWNobyAxOyAvLyBjb21tZW50ID8+IGZvb2Agd2lsbCBkaXNwbGF5ICIxIGZvbyIKICAgICAgd2hpbGUoIXNvdXJjZS5sb29rQWhlYWQoIj8+IikgJiYgIXNvdXJjZS5lbmRPZkxpbmUoKSkKICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJwaHAtY29tbWVudCJ9OwogICAgfQogICAgLyogRm9yIG11bHRpLWxpbmUgY29tbWVudHMsIHdlIHdhbnQgdG8gcmV0dXJuIGEgY29tbWVudCB0b2tlbiBmb3IKICAgICAgIGV2ZXJ5IGxpbmUgb2YgdGhlIGNvbW1lbnQsIGJ1dCB3ZSBhbHNvIHdhbnQgdG8gcmV0dXJuIHRoZSBuZXdsaW5lcwogICAgICAgaW4gdGhlbSBhcyByZWd1bGFyIG5ld2xpbmUgdG9rZW5zLiBXZSB0aGVyZWZvcmUgbmVlZCB0byBzYXZlIGEKICAgICAgIHN0YXRlIHZhcmlhYmxlICgiaW5zaWRlIikgdG8gaW5kaWNhdGUgd2hldGhlciB3ZSBhcmUgaW5zaWRlIGEKICAgICAgIG11bHRpLWxpbmUgY29tbWVudC4KICAgICovCgogICAgZnVuY3Rpb24gcmVhZE11bHRpbGluZUNvbW1lbnQoc3RhcnQpewogICAgICB2YXIgbmV3SW5zaWRlID0gIi8qIjsKICAgICAgdmFyIG1heWJlRW5kID0gKHN0YXJ0ID09ICIqIik7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5lbmRPZkxpbmUoKSkKICAgICAgICAgIGJyZWFrOwogICAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAobmV4dCA9PSAiLyIgJiYgbWF5YmVFbmQpewogICAgICAgICAgbmV3SW5zaWRlID0gbnVsbDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBtYXliZUVuZCA9IChuZXh0ID09ICIqIik7CiAgICAgIH0KICAgICAgc2V0SW5zaWRlKG5ld0luc2lkZSk7CiAgICAgIHJldHVybiB7dHlwZTogImNvbW1lbnQiLCBzdHlsZTogInBocC1jb21tZW50In07CiAgICB9CgogICAgLy8gc2ltaWxhciB0byByZWFkTXVsdGlsaW5lQ29tbWVudCBhbmQgbmV4dFVudGlsVW5lc2NhcGVkCiAgICAvLyB1bmxpa2UgY29tbWVudHMsIHN0cmluZ3MgYXJlIG5vdCBzdG9wcGVkIGJ5ID8+CiAgICBmdW5jdGlvbiByZWFkTXVsdGlsaW5lU3RyaW5nKHN0YXJ0KXsKICAgICAgdmFyIG5ld0luc2lkZSA9IHN0YXJ0OwogICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICBicmVhazsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQgJiYgIWVzY2FwZWQpewogICAgICAgICAgbmV3SW5zaWRlID0gbnVsbDsgIC8vIHdlJ3JlIG91dHNpZGUgb2YgdGhlIHN0cmluZyBub3cKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBlc2NhcGVkID0gKG5leHQgPT0gIlxcIiAmJiAhZXNjYXBlZCk7CiAgICAgIH0KICAgICAgc2V0SW5zaWRlKG5ld0luc2lkZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgdHlwZTogbmV3SW5zaWRlID09IG51bGw/ICJzdHJpbmciIDogInN0cmluZ19ub3RfdGVybWluYXRlZCIsCiAgICAgICAgc3R5bGU6IChzdGFydCA9PSAiJyI/ICJwaHAtc3RyaW5nLXNpbmdsZS1xdW90ZWQiIDogInBocC1zdHJpbmctZG91YmxlLXF1b3RlZCIpCiAgICAgIH07CiAgICB9CgogICAgLy8gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLnR5cGVzLnN0cmluZy5waHAjbGFuZ3VhZ2UudHlwZXMuc3RyaW5nLnN5bnRheC5oZXJlZG9jCiAgICAvLyBTZWUgYWxzbyAnbm93ZG9jJyBvbiB0aGUgcGFnZS4gSGVyZWRvY3MgYXJlIG5vdCBpbnRlcnJ1cHRlZCBieSB0aGUgJz8+JyB0b2tlbi4KICAgIGZ1bmN0aW9uIHJlYWRIZXJlZG9jKGlkZW50aWZpZXIpewogICAgICB2YXIgdG9rZW4gPSB7fTsKICAgICAgaWYgKGlkZW50aWZpZXIgPT0gIjw8PCIpIHsKICAgICAgICAvLyBvbiBvdXIgZmlyc3QgaW52b2NhdGlvbiBhZnRlciByZWFkaW5nIHRoZSA8PDwsIHdlIG11c3QgZGV0ZXJtaW5lIHRoZSBjbG9zaW5nIGlkZW50aWZpZXIKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiJyIpKSB7CiAgICAgICAgICAvLyBub3dkb2MKICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzV29yZENoYXIpOwogICAgICAgICAgaWRlbnRpZmllciA9ICInIiArIHNvdXJjZS5nZXQoKSArICInIjsKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7ICAvLyBjb25zdW1lIHRoZSBjbG9zaW5nICInIgogICAgICAgIH0gZWxzZSBpZiAoc291cmNlLm1hdGNoZXMoL1tBLVphLXpfXS8pKSB7CiAgICAgICAgICAvLyBoZXJlZG9jCiAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgICAgIGlkZW50aWZpZXIgPSBzb3VyY2UuZ2V0KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIHN5bnRheCBlcnJvcgogICAgICAgICAgc2V0SW5zaWRlKG51bGwpOwogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImVycm9yIiwgc3R5bGU6ICJzeW50YXgtZXJyb3IiIH07CiAgICAgICAgfQogICAgICAgIHNldEluc2lkZShpZGVudGlmaWVyKTsKICAgICAgICB0b2tlbi50eXBlID0gInN0cmluZ19ub3RfdGVybWluYXRlZCI7CiAgICAgICAgdG9rZW4uc3R5bGUgPSBpZGVudGlmaWVyLmNoYXJBdCgwKSA9PSAiJyI/ICJwaHAtc3RyaW5nLXNpbmdsZS1xdW90ZWQiIDogInBocC1zdHJpbmctZG91YmxlLXF1b3RlZCI7CiAgICAgICAgdG9rZW4uY29udGVudCA9IGlkZW50aWZpZXI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdG9rZW4uc3R5bGUgPSBpZGVudGlmaWVyLmNoYXJBdCgwKSA9PSAiJyI/ICJwaHAtc3RyaW5nLXNpbmdsZS1xdW90ZWQiIDogInBocC1zdHJpbmctZG91YmxlLXF1b3RlZCI7CiAgICAgICAgLy8gY29uc3VtZSBhIGxpbmUgb2YgaGVyZWRvYyBhbmQgY2hlY2sgaWYgaXQgZXF1YWxzIHRoZSBjbG9zaW5nIGlkZW50aWZpZXIgcGx1cyBhbiBvcHRpb25hbCBzZW1pY29sb24KICAgICAgICBpZiAoc291cmNlLmxvb2tBaGVhZChpZGVudGlmaWVyLCB0cnVlKSAmJiAoc291cmNlLmxvb2tBaGVhZCgiO1xuIikgfHwgc291cmNlLmVuZE9mTGluZSgpKSkgewogICAgICAgICAgLy8gdGhlIGNsb3NpbmcgaWRlbnRpZmllciBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZQogICAgICAgICAgLy8gbm90ZSB0aGF0IGV2ZW4gd2hpdGVzcGFjZSBhZnRlciB0aGUgIjsiIGlzIGZvcmJpZGRlbiBieSB0aGUgUEhQIGhlcmVkb2Mgc3ludGF4CiAgICAgICAgICB0b2tlbi50eXBlID0gInN0cmluZyI7CiAgICAgICAgICB0b2tlbi5jb250ZW50ID0gc291cmNlLmdldCgpOyAgLy8gZG9uJ3QgZ2V0IHRoZSAiOyIgaWYgdGhlcmUgaXMgb25lCiAgICAgICAgICBzZXRJbnNpZGUobnVsbCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRva2VuLnR5cGUgPSAic3RyaW5nX25vdF90ZXJtaW5hdGVkIjsKICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXlxuXS8pOwogICAgICAgICAgdG9rZW4uY29udGVudCA9IHNvdXJjZS5nZXQoKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRva2VuOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlYWRPcGVyYXRvcigpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNPcGVyYXRvckNoYXIpOwogICAgICByZXR1cm4ge3R5cGU6ICJvcGVyYXRvciIsIHN0eWxlOiAicGhwLW9wZXJhdG9yIn07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkU3RyaW5nU2luZ2xlUXVvdGVkKCkgewogICAgICB2YXIgZW5kQmFja1NsYXNoID0gbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgIiciLCBmYWxzZSk7CiAgICAgIHNldEluc2lkZShlbmRCYWNrU2xhc2ggPyAiJyIgOiBudWxsKTsKICAgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJwaHAtc3RyaW5nLXNpbmdsZS1xdW90ZWQifTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlYWRTdHJpbmdEb3VibGVRdW90ZWQoKSB7CiAgICAgIHZhciBlbmRCYWNrU2xhc2ggPSBuZXh0VW50aWxVbmVzY2FwZWQoc291cmNlLCAiXCIiLCBmYWxzZSk7CiAgICAgIHNldEluc2lkZShlbmRCYWNrU2xhc2ggPyAiXCIiOiBudWxsKTsKICAgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJwaHAtc3RyaW5nLWRvdWJsZS1xdW90ZWQifTsKICAgIH0KCiAgICAvLyBGZXRjaCB0aGUgbmV4dCB0b2tlbi4gRGlzcGF0Y2hlcyBvbiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlCiAgICAvLyBzdHJlYW0sIG9yIGZpcnN0IHR3byBjaGFyYWN0ZXJzIHdoZW4gdGhlIGZpcnN0IGlzIGEgc2xhc2guCiAgICBzd2l0Y2ggKGluc2lkZSkgewogICAgICBjYXNlIG51bGw6CiAgICAgIGNhc2UgZmFsc2U6IGJyZWFrOwogICAgICBjYXNlICInIjoKICAgICAgY2FzZSAiXCIiOiByZXR1cm4gcmVhZE11bHRpbGluZVN0cmluZyhpbnNpZGUpOwogICAgICBjYXNlICIvKiI6IHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChzb3VyY2UubmV4dCgpKTsKICAgICAgZGVmYXVsdDogcmV0dXJuIHJlYWRIZXJlZG9jKGluc2lkZSk7CiAgICB9CiAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgaWYgKGNoID09ICInIiB8fCBjaCA9PSAiXCIiKQogICAgICByZXR1cm4gcmVhZE11bHRpbGluZVN0cmluZyhjaCk7CiAgICBlbHNlIGlmIChjaCA9PSAiIyIpCiAgICAgIHJldHVybiByZWFkU2luZ2xlTGluZUNvbW1lbnQoKTsKICAgIGVsc2UgaWYgKGNoID09ICIkIikKICAgICAgcmV0dXJuIHJlYWRWYXJpYWJsZSgpOwogICAgZWxzZSBpZiAoY2ggPT0gIjoiICYmIHNvdXJjZS5lcXVhbHMoIjoiKSkgewogICAgICBzb3VyY2UubmV4dCgpOwogICAgICAvLyB0aGUgVF9ET1VCTEVfQ09MT04gY2FuIG9ubHkgZm9sbG93IGEgVF9TVFJJTkcgKGNsYXNzIG5hbWUpCiAgICAgIHJldHVybiB7dHlwZTogInRfZG91YmxlX2NvbG9uIiwgc3R5bGU6ICJwaHAtb3BlcmF0b3IifQogICAgfQogICAgLy8gd2l0aCBwdW5jdHVhdGlvbiwgdGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzIHRoZSBzeW1ib2wgaXRzZWxmCiAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksOzpdLy50ZXN0KGNoKSkgewogICAgICByZXR1cm4ge3R5cGU6IGNoLCBzdHlsZTogInBocC1wdW5jdHVhdGlvbiJ9OwogICAgfQogICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIChzb3VyY2UuZXF1YWxzKCJ4IikgfHwgc291cmNlLmVxdWFscygiWCIpKSkKICAgICAgcmV0dXJuIHJlYWRIZXhOdW1iZXIoKTsKICAgIGVsc2UgaWYgKC9bMC05XS8udGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkTnVtYmVyKCk7CiAgICBlbHNlIGlmIChjaCA9PSAiLyIpIHsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIioiKSkKICAgICAgeyBzb3VyY2UubmV4dCgpOyByZXR1cm4gcmVhZE11bHRpbGluZUNvbW1lbnQoY2gpOyB9CiAgICAgIGVsc2UgaWYgKHNvdXJjZS5lcXVhbHMoIi8iKSkKICAgICAgICByZXR1cm4gcmVhZFNpbmdsZUxpbmVDb21tZW50KCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CiAgICB9CiAgICBlbHNlIGlmIChjaCA9PSAiPCIpIHsKICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWQoIjw8IiwgdHJ1ZSkpIHsKICAgICAgICBzZXRJbnNpZGUoIjw8PCIpOwogICAgICAgIHJldHVybiB7dHlwZTogIjw8PCIsIHN0eWxlOiAicGhwLXB1bmN0dWF0aW9uIn07CiAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIH0KICAgIGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFyLnRlc3QoY2gpKQogICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CiAgICBlbHNlCiAgICAgIHJldHVybiByZWFkV29yZCgpOwogIH0KCiAgLy8gVGhlIGV4dGVybmFsIGludGVyZmFjZSB0byB0aGUgdG9rZW5pemVyLgogIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHN0YXJ0U3RhdGUpIHsKICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IHBocFRva2VuU3RhdGUoZmFsc2UsIHRydWUpKTsKICB9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA4LTIwMDksIFlhaG9vISBJbmMuCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGZvciB1c2UgaW4gY29ubmVjdGlvbiB3aXRoIHRoZQpDb2RlTWlycm9yIHN1aXRlIG9mIG1vZHVsZXMgYW5kIHV0aWxpdGllcywgaG9zdGVkIGFuZCBtYWludGFpbmVkCmF0IGh0dHA6Ly9jb2RlbWlycm9yLm5ldC8uCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRoaXMgc29mdHdhcmUgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsCndpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUKZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQogIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCiogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQogIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIKICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgoKKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFlhaG9vISBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwogIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKICB3cml0dGVuIHBlcm1pc3Npb24gb2YgWWFob28hIEluYy4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULApJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLApCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CkxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCkxJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCkFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQpQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/license.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA4LTIwMDksIFlhaG9vISBJbmMuCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGZvciB1c2UgaW4gY29ubmVjdGlvbiB3aXRoIHRoZQpDb2RlTWlycm9yIHN1aXRlIG9mIG1vZHVsZXMgYW5kIHV0aWxpdGllcywgaG9zdGVkIGFuZCBtYWludGFpbmVkCmF0IGh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLAp3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlCmZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCiAgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCiAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyCiAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KCiogTmVpdGhlciB0aGUgbmFtZSBvZiBZYWhvbyEgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCiAgd3JpdHRlbiBwZXJtaXNzaW9uIG9mIFlhaG9vISBJbmMuCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkNPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCkNBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVApMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTgpBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/css/plsqlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4ucGxzcWwta2V5d29yZCB7CiAgY29sb3I6IGJsdWU7Cn0KCnNwYW4ucGxzcWwtdmFyIHsKICBjb2xvcjogcmVkOwp9CgpzcGFuLnBsc3FsLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLnBsc3FsLWxpdGVyYWwgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi5wbHNxbC1vcGVyYXRvciB7CiAgY29sb3I6IGJsdWU7Cn0KCnNwYW4ucGxzcWwtd29yZCB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnBsc3FsLWZ1bmN0aW9uIHsKICBjb2xvcjogZGFya29yYW5nZTsKfQoKc3Bhbi5wbHNxbC10eXBlIHsKICBjb2xvcjogcHVycGxlOwp9CgpzcGFuLnBsc3FsLXNlcGFyYXRvciB7CiAgY29sb3I6ICM2NjY2NjY7Cn0KCnNwYW4ucGxzcWwtbnVtYmVyIHsKICBjb2xvcjogZGFya2N5YW47Cn0KCgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogUExTUUwgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KCjxwPkRlbW9uc3RyYXRpb24gb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyBQTFNRTApoaWdobGlnaHRlci48L3A+Cgo8cD5Xcml0dGVuIGJ5IFBldGVyIFJhZ2FuaXRzY2ggKDxhIGhyZWY9IkxJQ0VOU0UiPmxpY2Vuc2U8L2E+KSwgYmFzZWQKb24gSm9obiBCZW5lZGlrdHNzb24gPGEgaHJlZj0iLi4vc3FsL2luZGV4Lmh0bWwiPlNRTCBwYXJzZXI8L2E+LjwvcD4KCjxkaXYgY2xhc3M9ImJvcmRlciI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSI1MCI+ClBST0NFRFVSRSBnZW5lcmF0ZVJlc3VsdAogICggcFJvdXRpbmVUeXBlICAgSU4gVkFSQ0hBUjIKICAsIHBSZWZlcmVuY2VUeXBlIElOIFZBUkNIQVIyCiAgLCBwUmVmZXJlbmNlSWQgICBJTiBOVU1CRVIKICApCklTCiAgICBST1VUSU5FX05BTUUgICAgICBDT05TVEFOVCBWQVJDSEFSMigzMCkgOj0gJ2dlbmVyYXRlUmVzdWx0JzsKICAgIC0tCiAgICB2RGlzcGxheUFzICAgICAgICBBUEVYTElCX1ZfUEFHRV9JVEVNLkRJU1BMQVlfQVMgICAgICAlVFlQRTsKICAgIHZMb3ZRdWVyeSAgICAgICAgIEFQRVhMSUJfVl9QQUdFX0lURU0uTE9WX1FVRVJZICAgICAgICVUWVBFOwogICAgdkRpc3BsYXlOdWxsVmFsdWUgQVBFWExJQl9WX1BBR0VfSVRFTS5MT1ZfRElTUExBWV9OVUxMJVRZUEU7CiAgICB2TG92TnVsbFRleHQgICAgICBBUEVYTElCX1ZfUEFHRV9JVEVNLkxPVl9OVUxMX1RFWFQgICAlVFlQRTsKICAgIHZMb3ZOdWxsVmFsdWUgICAgIEFQRVhMSUJfVl9QQUdFX0lURU0uTE9WX05VTExfVkFMVUUgICVUWVBFOwogICAgdkFwcGxpY2F0aW9uSWQgICAgQVBFWExJQl9WX1BBR0VfSVRFTS5BUFBMSUNBVElPTl9JRCAgJVRZUEU7CiAgICB2UGFnZUlkICAgICAgICAgICBBUEVYTElCX1ZfUEFHRV9JVEVNLlBBR0VfSUQgICAgICAgICAlVFlQRTsKQkVHSU4KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0tIERldGVybWluZSB3aGljaCByb3V0aW5lIHRvIGNhbGwgYW5kIHBhc3MgcGFyYW1ldGVycwogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgQ0FTRSBwUm91dGluZVR5cGUKICAgIFdIRU4gJ0xPVicKICAgIFRIRU4KICAgICAgICBBcGV4TGliX0xvdi5nZW5lcmF0ZUxvdlJlc3VsdCggcFJlZmVyZW5jZVR5cGUsIHBSZWZlcmVuY2VJZCApOwogICAgLS0KICAgIFdIRU4gJ0NPTVBVVEFUSU9OJwogICAgVEhFTgogICAgICAgIEFwZXhMaWJfQ29tcHV0YXRpb24uZ2VuZXJhdGVDb21wdXRhdGlvblJlc3VsdCggcFJlZmVyZW5jZVR5cGUsIHBSZWZlcmVuY2VJZCApOwogICAgLS0KICAgIEVMU0UKICAgICAgICBBcGV4bGliX0Vycm9yLnJhaXNlSW1wbEVycm9yKCdVbnN1cHBvcnRlZCByb3V0aW5lIHR5cGUgIid8fHBSb3V0aW5lVHlwZXx8JyIhJyk7CiAgICBFTkQgQ0FTRTsKICAgIC0tCkVYQ0VQVElPTiBXSEVOIE9USEVSUyBUSEVOCiAgICBIVFAucHJuKCdFcnJvcjogJ3x8U1FMRVJSTSk7CiAgICAtLSBSQUlTRTsgbm8gcmFpc2UsIGJlY2F1c2UgQVBFWCBkb2Vzbid0IGNhcmUgYW55d2F5LgpFTkQgZ2VuZXJhdGVSZXN1bHQ7CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgnY29kZScsIHsKICAgIGhlaWdodDogIjQ1MHB4IiwKICAgIHBhcnNlcmZpbGU6ICIuLi9jb250cmliL3Bsc3FsL2pzL3BhcnNlcGxzcWwuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9wbHNxbGNvbG9ycy5jc3MiLAogICAgcGF0aDogIi4uLy4uL2pzLyIsCiAgICB0ZXh0V3JhcHBpbmc6IGZhbHNlCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/js/parseplsql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFBsc3FsUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKCiAgZnVuY3Rpb24gd29yZFJlZ2V4cCh3b3JkcykgewogICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiICsgd29yZHMuam9pbigifCIpICsgIikkIiwgImkiKTsKICB9CgogIHZhciBmdW5jdGlvbnMgPSB3b3JkUmVnZXhwKFsKImFicyIsImFjb3MiLCJhZGRfbW9udGhzIiwiYXNjaWkiLCJhc2luIiwiYXRhbiIsImF0YW4yIiwiYXZlcmFnZSIsCiJiZmlsZW5hbWUiLAoiY2VpbCIsImNoYXJ0b3Jvd2lkIiwiY2hyIiwiY29uY2F0IiwiY29udmVydCIsImNvcyIsImNvc2giLCJjb3VudCIsCiJkZWNvZGUiLCJkZXJlZiIsImR1YWwiLCJkdW1wIiwiZHVwX3ZhbF9vbl9pbmRleCIsCiJlbXB0eSIsImVycm9yIiwiZXhwIiwKImZhbHNlIiwiZmxvb3IiLCJmb3VuZCIsCiJnbGIiLCJncmVhdGVzdCIsCiJoZXh0b3JhdyIsCiJpbml0Y2FwIiwiaW5zdHIiLCJpbnN0cmIiLCJpc29wZW4iLAoibGFzdF9kYXkiLCJsZWFzdCIsImxlbmdodCIsImxlbmdodGIiLCJsbiIsImxvd2VyIiwibHBhZCIsImx0cmltIiwibHViIiwKIm1ha2VfcmVmIiwibWF4IiwibWluIiwibW9kIiwibW9udGhzX2JldHdlZW4iLAoibmV3X3RpbWUiLCJuZXh0X2RheSIsIm5leHR2YWwiLCJubHNfY2hhcnNldF9kZWNsX2xlbiIsIm5sc19jaGFyc2V0X2lkIiwibmxzX2NoYXJzZXRfbmFtZSIsIm5sc19pbml0Y2FwIiwibmxzX2xvd2VyIiwKIm5sc19zb3J0IiwibmxzX3VwcGVyIiwibmxzc29ydCIsIm5vX2RhdGFfZm91bmQiLCJub3Rmb3VuZCIsIm51bGwiLCJudmwiLAoib3RoZXJzIiwKInBvd2VyIiwKInJhd3RvaGV4IiwicmVmdG9oZXgiLCJyb3VuZCIsInJvd2NvdW50Iiwicm93aWR0b2NoYXIiLCJycGFkIiwicnRyaW0iLAoic2lnbiIsInNpbiIsInNpbmgiLCJzb3VuZGV4Iiwic3FsY29kZSIsInNxbGVycm0iLCJzcXJ0Iiwic3RkZGV2Iiwic3Vic3RyIiwic3Vic3RyYiIsInN1bSIsInN5c2RhdGUiLAoidGFuIiwidGFuaCIsInRvX2NoYXIiLCJ0b19kYXRlIiwidG9fbGFiZWwiLCJ0b19tdWx0aV9ieXRlIiwidG9fbnVtYmVyIiwidG9fc2luZ2xlX2J5dGUiLCJ0cmFuc2xhdGUiLCJ0cnVlIiwidHJ1bmMiLAoidWlkIiwidXBwZXIiLCJ1c2VyIiwidXNlcmVudiIsCiJ2YXJpYW5jZSIsInZzaXplIgoKICBdKTsKCiAgdmFyIGtleXdvcmRzID0gd29yZFJlZ2V4cChbCiJhYm9ydCIsImFjY2VwdCIsImFjY2VzcyIsImFkZCIsImFsbCIsImFsdGVyIiwiYW5kIiwiYW55IiwiYXJyYXkiLCJhcnJheWxlbiIsImFzIiwiYXNjIiwiYXNzZXJ0IiwiYXNzaWduIiwiYXQiLCJhdHRyaWJ1dGVzIiwiYXVkaXQiLAoiYXV0aG9yaXphdGlvbiIsImF2ZyIsCiJiYXNlX3RhYmxlIiwiYmVnaW4iLCJiZXR3ZWVuIiwiYmluYXJ5X2ludGVnZXIiLCJib2R5IiwiYm9vbGVhbiIsImJ5IiwKImNhc2UiLCJjYXN0IiwiY2hhciIsImNoYXJfYmFzZSIsImNoZWNrIiwiY2xvc2UiLCJjbHVzdGVyIiwiY2x1c3RlcnMiLCJjb2xhdXRoIiwiY29sdW1uIiwiY29tbWVudCIsImNvbW1pdCIsImNvbXByZXNzIiwiY29ubmVjdCIsCiJjb25uZWN0ZWQiLCJjb25zdGFudCIsImNvbnN0cmFpbnQiLCJjcmFzaCIsImNyZWF0ZSIsImN1cnJlbnQiLCJjdXJydmFsIiwiY3Vyc29yIiwKImRhdGFfYmFzZSIsImRhdGFiYXNlIiwiZGF0ZSIsImRiYSIsImRlYWxsb2NhdGUiLCJkZWJ1Z29mZiIsImRlYnVnb24iLCJkZWNpbWFsIiwiZGVjbGFyZSIsImRlZmF1bHQiLCJkZWZpbml0aW9uIiwiZGVsYXkiLCJkZWxldGUiLAoiZGVzYyIsImRpZ2l0cyIsImRpc3Bvc2UiLCJkaXN0aW5jdCIsImRvIiwiZHJvcCIsCiJlbHNlIiwiZWxzaWYiLCJlbmFibGUiLCJlbmQiLCJlbnRyeSIsImVzY2FwZSIsImV4Y2VwdGlvbiIsImV4Y2VwdGlvbl9pbml0IiwiZXhjaGFuZ2UiLCJleGNsdXNpdmUiLCJleGlzdHMiLCJleGl0IiwiZXh0ZXJuYWwiLAoiZmFzdCIsImZldGNoIiwiZmlsZSIsImZvciIsImZvcmNlIiwiZm9ybSIsImZyb20iLCJmdW5jdGlvbiIsCiJnZW5lcmljIiwiZ290byIsImdyYW50IiwiZ3JvdXAiLAoiaGF2aW5nIiwKImlkZW50aWZpZWQiLCJpZiIsImltbWVkaWF0ZSIsImluIiwiaW5jcmVtZW50IiwiaW5kZXgiLCJpbmRleGVzIiwiaW5kaWNhdG9yIiwiaW5pdGlhbCIsImluaXRyYW5zIiwiaW5zZXJ0IiwiaW50ZXJmYWNlIiwiaW50ZXJzZWN0IiwKImludG8iLCJpcyIsCiJrZXkiLAoibGV2ZWwiLCJsaWJyYXJ5IiwibGlrZSIsImxpbWl0ZWQiLCJsb2NhbCIsImxvY2siLCJsb2ciLCJsb2dnaW5nIiwibG9uZyIsImxvb3AiLAoibWFzdGVyIiwibWF4ZXh0ZW50cyIsIm1heHRyYW5zIiwibWVtYmVyIiwibWluZXh0ZW50cyIsIm1pbnVzIiwibWlzbGFiZWwiLCJtb2RlIiwibW9kaWZ5IiwibXVsdGlzZXQiLAoibmV3IiwibmV4dCIsIm5vIiwibm9hdWRpdCIsIm5vY29tcHJlc3MiLCJub2xvZ2dpbmciLCJub3BhcmFsbGVsIiwibm90Iiwibm93YWl0IiwibnVtYmVyX2Jhc2UiLAoib2JqZWN0Iiwib2YiLCJvZmYiLCJvZmZsaW5lIiwib24iLCJvbmxpbmUiLCJvbmx5Iiwib3BlbiIsIm9wdGlvbiIsIm9yIiwib3JkZXIiLCJvdXQiLAoicGFja2FnZSIsInBhcmFsbGVsIiwicGFydGl0aW9uIiwicGN0ZnJlZSIsInBjdGluY3JlYXNlIiwicGN0dXNlZCIsInBsc19pbnRlZ2VyIiwicG9zaXRpdmUiLCJwb3NpdGl2ZW4iLCJwcmFnbWEiLCJwcmltYXJ5IiwicHJpb3IiLAoicHJpdmF0ZSIsInByaXZpbGVnZXMiLCJwcm9jZWR1cmUiLCJwdWJsaWMiLAoicmFpc2UiLCJyYW5nZSIsInJhdyIsInJlYWQiLCJyZWJ1aWxkIiwicmVjb3JkIiwicmVmIiwicmVmZXJlbmNlcyIsInJlZnJlc2giLCJyZWxlYXNlIiwicmVuYW1lIiwicmVwbGFjZSIsInJlc291cmNlIiwicmVzdHJpY3QiLCJyZXR1cm4iLAoicmV0dXJuaW5nIiwicmV2ZXJzZSIsInJldm9rZSIsInJvbGxiYWNrIiwicm93Iiwicm93aWQiLCJyb3dsYWJlbCIsInJvd251bSIsInJvd3MiLCJydW4iLAoic2F2ZXBvaW50Iiwic2NoZW1hIiwic2VnbWVudCIsInNlbGVjdCIsInNlcGFyYXRlIiwic2Vzc2lvbiIsInNldCIsInNoYXJlIiwic25hcHNob3QiLCJzb21lIiwic3BhY2UiLCJzcGxpdCIsInNxbCIsInN0YXJ0Iiwic3RhdGVtZW50IiwKInN0b3JhZ2UiLCJzdWJ0eXBlIiwic3VjY2Vzc2Z1bCIsInN5bm9ueW0iLAoidGFiYXV0aCIsInRhYmxlIiwidGFibGVzIiwidGFibGVzcGFjZSIsInRhc2siLCJ0ZXJtaW5hdGUiLCJ0aGVuIiwidG8iLCJ0cmlnZ2VyIiwidHJ1bmNhdGUiLCJ0eXBlIiwKInVuaW9uIiwidW5pcXVlIiwidW5saW1pdGVkIiwidW5yZWNvdmVyYWJsZSIsInVudXNhYmxlIiwidXBkYXRlIiwidXNlIiwidXNpbmciLAoidmFsaWRhdGUiLCJ2YWx1ZSIsInZhbHVlcyIsInZhcmlhYmxlIiwidmlldyIsInZpZXdzIiwKIndoZW4iLCJ3aGVuZXZlciIsIndoZXJlIiwid2hpbGUiLCJ3aXRoIiwid29yayIKICBdKTsKCiAgdmFyIHR5cGVzID0gd29yZFJlZ2V4cChbCiJiZmlsZSIsImJsb2IiLAoiY2hhcmFjdGVyIiwiY2xvYiIsCiJkZWMiLAoiZmxvYXQiLAoiaW50IiwiaW50ZWdlciIsCiJtbHNsYWJlbCIsCiJuYXR1cmFsIiwibmF0dXJhbG4iLCJuY2hhciIsIm5jbG9iIiwibnVtYmVyIiwibnVtZXJpYyIsIm52YXJjaGFyMiIsCiJyZWFsIiwicm93dHlwZSIsCiJzaWdudHlwZSIsInNtYWxsaW50Iiwic3RyaW5nIiwKInZhcmNoYXIiLCJ2YXJjaGFyMiIKICBdKTsKCiAgdmFyIG9wZXJhdG9ycyA9IHdvcmRSZWdleHAoWwogICAgIjo9IiwgIjwiLCAiPD0iLCAiPT0iLCAiIT0iLCAiPD4iLCAiPiIsICI+PSIsICJsaWtlIiwgInJsaWtlIiwgImluIiwgInhvciIsICJiZXR3ZWVuIgogIF0pOwoKICB2YXIgb3BlcmF0b3JDaGFycyA9IC9bKitcLTw+PSZ8OlwvXS87CgogIHZhciB0b2tlbml6ZVNxbCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIG5vcm1hbChzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgIGlmIChjaCA9PSAiQCIgfHwgY2ggPT0gIiQiKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkXS8pOwogICAgICAgIHJldHVybiAicGxzcWwtdmFyIjsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIiB8fCBjaCA9PSAiYCIpIHsKICAgICAgICBzZXRTdGF0ZShpbkxpdGVyYWwoY2gpKTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiLCIgfHwgY2ggPT0gIjsiKSB7CiAgICAgICAgcmV0dXJuICJwbHNxbC1zZXBhcmF0b3IiCiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gJy0nKSB7CiAgICAgICAgaWYgKHNvdXJjZS5wZWVrKCkgPT0gIi0iKSB7CiAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgc291cmNlLm5leHQoKTsKICAgICAgICAgIHJldHVybiAicGxzcWwtY29tbWVudCI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKC9cZC8udGVzdChzb3VyY2UucGVlaygpKSkgewogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSAnLicpIHsKICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gInBsc3FsLW51bWJlciI7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiAicGxzcWwtb3BlcmF0b3IiOwogICAgICB9CiAgICAgIGVsc2UgaWYgKG9wZXJhdG9yQ2hhcnMudGVzdChjaCkpIHsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhvcGVyYXRvckNoYXJzKTsKICAgICAgICByZXR1cm4gInBsc3FsLW9wZXJhdG9yIjsKICAgICAgfQogICAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgaWYgKHNvdXJjZS5wZWVrKCkgPT0gJy4nKSB7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAicGxzcWwtbnVtYmVyIjsKICAgICAgfQogICAgICBlbHNlIGlmICgvWygpXS8udGVzdChjaCkpIHsKICAgICAgICByZXR1cm4gInBsc3FsLXB1bmN0dWF0aW9uIjsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW19cd1xkXS8pOwogICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpLCB0eXBlOwogICAgICAgIGlmIChvcGVyYXRvcnMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAicGxzcWwtb3BlcmF0b3IiOwogICAgICAgIGVsc2UgaWYgKGtleXdvcmRzLnRlc3Qod29yZCkpCiAgICAgICAgICB0eXBlID0gInBsc3FsLWtleXdvcmQiOwogICAgICAgIGVsc2UgaWYgKGZ1bmN0aW9ucy50ZXN0KHdvcmQpKQogICAgICAgICAgdHlwZSA9ICJwbHNxbC1mdW5jdGlvbiI7CiAgICAgICAgZWxzZSBpZiAodHlwZXMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAicGxzcWwtdHlwZSI7CiAgICAgICAgZWxzZQogICAgICAgICAgdHlwZSA9ICJwbHNxbC13b3JkIjsKICAgICAgICByZXR1cm4ge3N0eWxlOiB0eXBlLCBjb250ZW50OiB3b3JkfTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluTGl0ZXJhbChxdW90ZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBpZiAoY2ggPT0gcXVvdGUgJiYgIWVzY2FwZWQpIHsKICAgICAgICAgICAgc2V0U3RhdGUobm9ybWFsKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQgJiYgY2ggPT0gIlxcIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHF1b3RlID09ICJgIiA/ICJwbHNxbC13b3JkIiA6ICJwbHNxbC1saXRlcmFsIjsKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IG5vcm1hbCk7CiAgICB9OwogIH0pKCk7CgogIGZ1bmN0aW9uIGluZGVudFNxbChjb250ZXh0KSB7CiAgICByZXR1cm4gZnVuY3Rpb24obmV4dENoYXJzKSB7CiAgICAgIHZhciBmaXJzdENoYXIgPSBuZXh0Q2hhcnMgJiYgbmV4dENoYXJzLmNoYXJBdCgwKTsKICAgICAgdmFyIGNsb3NpbmcgPSBjb250ZXh0ICYmIGZpcnN0Q2hhciA9PSBjb250ZXh0LnR5cGU7CiAgICAgIGlmICghY29udGV4dCkKICAgICAgICByZXR1cm4gMDsKICAgICAgZWxzZSBpZiAoY29udGV4dC5hbGlnbikKICAgICAgICByZXR1cm4gY29udGV4dC5jb2wgLSAoY2xvc2luZyA/IGNvbnRleHQud2lkdGggOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBjb250ZXh0LmluZGVudCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VTcWwoc291cmNlKSB7CiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVTcWwoc291cmNlKTsKICAgIHZhciBjb250ZXh0ID0gbnVsbCwgaW5kZW50ID0gMCwgY29sID0gMDsKICAgIGZ1bmN0aW9uIHB1c2hDb250ZXh0KHR5cGUsIHdpZHRoLCBhbGlnbikgewogICAgICBjb250ZXh0ID0ge3ByZXY6IGNvbnRleHQsIGluZGVudDogaW5kZW50LCBjb2w6IGNvbCwgdHlwZTogdHlwZSwgd2lkdGg6IHdpZHRoLCBhbGlnbjogYWxpZ259OwogICAgfQogICAgZnVuY3Rpb24gcG9wQ29udGV4dCgpIHsKICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgIH0KCiAgICB2YXIgaXRlciA9IHsKICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKICAgICAgICB2YXIgdHlwZSA9IHRva2VuLnN0eWxlLCBjb250ZW50ID0gdG9rZW4uY29udGVudCwgd2lkdGggPSB0b2tlbi52YWx1ZS5sZW5ndGg7CgogICAgICAgIGlmIChjb250ZW50ID09ICJcbiIpIHsKICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50U3FsKGNvbnRleHQpOwogICAgICAgICAgaW5kZW50ID0gY29sID0gMDsKICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuYWxpZ24gPT0gbnVsbCkgY29udGV4dC5hbGlnbiA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0eXBlID09ICJ3aGl0ZXNwYWNlIiAmJiBjb2wgPT0gMCkgewogICAgICAgICAgaW5kZW50ID0gd2lkdGg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFjb250ZXh0ICYmIHR5cGUgIT0gInBsc3FsLWNvbW1lbnQiKSB7CiAgICAgICAgICBwdXNoQ29udGV4dCgiOyIsIDAsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIGlmIChjb250ZW50ICE9ICJcbiIpIGNvbCArPSB3aWR0aDsKCiAgICAgICAgaWYgKHR5cGUgPT0gInBsc3FsLXB1bmN0dWF0aW9uIikgewogICAgICAgICAgaWYgKGNvbnRlbnQgPT0gIigiKQogICAgICAgICAgICBwdXNoQ29udGV4dCgiKSIsIHdpZHRoKTsKICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gIikiKQogICAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInBsc3FsLXNlcGFyYXRvciIgJiYgY29udGVudCA9PSAiOyIgJiYgY29udGV4dCAmJiAhY29udGV4dC5wcmV2KSB7CiAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgIH0sCgogICAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgX2NvbnRleHQgPSBjb250ZXh0LCBfaW5kZW50ID0gaW5kZW50LCBfY29sID0gY29sLCBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlKSB7CiAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZVNxbChzb3VyY2UsIF90b2tlblN0YXRlKTsKICAgICAgICAgIGNvbnRleHQgPSBfY29udGV4dDsKICAgICAgICAgIGluZGVudCA9IF9pbmRlbnQ7CiAgICAgICAgICBjb2wgPSBfY29sOwogICAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgICAgfTsKICAgICAgfQogICAgfTsKICAgIHJldHVybiBpdGVyOwogIH0KCiAgcmV0dXJuIHttYWtlOiBwYXJzZVNxbCwgZWxlY3RyaWNDaGFyczogIikifTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAxMCBQZXRlciBSYWdhbml0c2NoCgogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkKIGRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KCiBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKIHB1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZAogcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKCiAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0CiAgICBub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKICAgIHNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QKICAgIGRvY3VtZW50YXRpb24gd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KCiAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0CiAgICBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgoKIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQogICAgZGlzdHJpYnV0aW9uLgoKIFBldGVyIFJhZ2FuaXRzY2gK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/css/pythoncolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgcGFkZGluZzogLjRlbTsKICBtYXJnaW46IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgbGluZS1oZWlnaHQ6IDEuMWVtOwogIGNvbG9yOiBibGFjazsKfQoKcHJlLmNvZGUsIC5lZGl0Ym94IHsKICBjb2xvcjogIzY2NjY2NjsKfQoKLmVkaXRib3ggcCB7CiAgbWFyZ2luOiAwOwp9CgpzcGFuLnB5LWRlbGltaXRlciwgc3Bhbi5weS1zcGVjaWFsIHsKICBjb2xvcjogIzY2NjY2NjsKfQoKc3Bhbi5weS1vcGVyYXRvciB7CiAgY29sb3I6ICM2NjY2NjY7Cn0KCnNwYW4ucHktZXJyb3IgewogIGJhY2tncm91bmQtY29sb3I6ICM2NjAwMDA7CiAgY29sb3I6ICNGRkZGRkY7Cn0KCnNwYW4ucHkta2V5d29yZCB7CiAgY29sb3I6ICM3NzAwODg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCnNwYW4ucHktbGl0ZXJhbCB7CiAgY29sb3I6ICMyMjg4MTE7Cn0KCnNwYW4ucHktaWRlbnRpZmllciwgc3Bhbi5weS1mdW5jICB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnB5LXR5cGUsIHNwYW4ucHktZGVjb3JhdG9yIHsKICBjb2xvcjogIzAwMDBGRjsKfQoKc3Bhbi5weS1jb21tZW50IHsKICBjb2xvcjogI0FBNzcwMDsKfQoKc3Bhbi5weS1zdHJpbmcsIHNwYW4ucHktYnl0ZXMsIHNwYW4ucHktcmF3LCBzcGFuLnB5LXVuaWNvZGUgewogIGNvbG9yOiAjQUEyMjIyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9jb2RlbWlycm9yLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IFB5dGhvbiBkZW1vbnN0cmF0aW9uPC90aXRsZT4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIC5Db2RlTWlycm9yLWxpbmUtbnVtYmVycyB7CiAgICAgICAgd2lkdGg6IDIuMmVtOwogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZzogLjRlbTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEwcHQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMWVtOwogICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+CjxwPgogICAgVGhpcyBpcyBhIHNpbXBsZSBkZW1vbnN0cmF0aW9uIG9mIHRoZSBQeXRob24gc3ludGF4IGhpZ2hsaWdodGluZyBtb2R1bGUKICAgIGZvciA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPi4KPC9wPgo8cD4KICAgIEZlYXR1cmVzIG9mIHRoaXMgcGFyc2VyIGluY2x1ZGU6CjwvcD4KPHVsPgogICAgPGxpPlRva2VuLWJhc2VkIHN5bnRheCBoaWdobGlnaHRpbmcgLSBjdXJyZW50bHkgdmVyeSBsaXR0bGUgbGV4aWNhbCBhbmFseXNpcyBoYXBwZW5zLiAgRmV3IGxleGljYWwgZXJyb3JzIHdpbGwgYmUgZGV0ZWN0ZWQuPC9saT4KICAgIDxsaT5Vc2UgdGhlIG5vcm1hbCBpbmRlbnRhdGlvbiBtb2RlIHRvIGVuZm9yY2UgcmVndWxhciBpbmRlbnRhdGlvbiwgb3RoZXJ3aXNlIHRoZSAic2hpZnQiIGluZGVudGF0aW9uIG1vZGUgd2lsbCBnaXZlIHlvdSBtb3JlIGZsZXhpYmlsaXR5LjwvbGk+CiAgICA8bGk+UGFyc2VyIE9wdGlvbnM6CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+cHl0aG9uVmVyc2lvbiAoSW50ZWdlcikgLSAyIG9yIDMgdG8gaW5kaWNhdGUgd2hpY2ggdmVyc2lvbiBvZiBQeXRob24gdG8gcGFyc2UuICBEZWZhdWx0ID0gMjwvbGk+CiAgICAgICAgICAgIDxsaT5zdHJpY3RFcnJvcnMgKEJvb2wpIC0gdHJ1ZSB0byBoaWdobGlnaHQgZXJyb3JzIHRoYXQgbWF5IG5vdCBiZSBQeXRob24gZXJyb3JzIGJ1dCBjYXVzZSBjb25mdXNpb24gZm9yIHRoaXMgcGFyc2VyLiBEZWZhdWx0ID0gdHJ1ZTwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CjwvdWw+CjxwPldyaXR0ZW4gYnkgVGltb3RoeSBGYXJyZWxsICg8YSBocmVmPSJMSUNFTlNFIj5saWNlbnNlPC9hPikuIFNwZWNpYWwKdGhhbmtzIHRvIEFkYW0gQnJhbmQgYW5kIE1hcmlqbiBIYXZlcmJla2UgZm9yIHRoZWlyIGhlbHAgaW4gZGVidWdnaW5nCmFuZCBwcm92aWRpbmcgZm9yIHRoaXMgcGFyc2VyLjwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAwcHg7Ij4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMDAiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6MTAwJSI+CiMgTGl0ZXJhbHMKMTIzNAowLjBlMTAxCi4xMjMKMGIwMTAxMDAxMTEwMAowbzAxMjM0NTY3CjB4MDk4NzY1NDMyMWFiY2RlZgojIEVycm9yIExpdGVyYWxzCi4wYjAwMAowLjBlCjBlCgojIFN0cmluZyBMaXRlcmFscwonRm9yXCcnCiJHb2RcIiIKIiIic28gbG92ZWQKdGhlIHdvcmxkIiIiCicnJ3RoYXQgaGUgZ2F2ZQpoaXMgb25seSBiZWdvdHRlblwnICcnJwondGhhdCB3aG9zb2V2ZXIgYmVsaWV2ZXRoIFwKaW4gaGltJwonJwoKIyBJZGVudGlmaWVycwpfX2FfXwphLmIKYS5iLmMKIyBFcnJvciBJZGVudGlmaWVycwphLgoKIyBPcGVyYXRvcnMKKyAtICogLyAlICYgfCBeIH4gPCA+Cj09ICE9IDw9ID49IDw+IDw8ID4+IC8vICoqCmFuZCBvciBub3QgaW4gaXMKCiMgRGVsaW1pdGVycwooKSBbXSB7fSAsIDogYCA9IDsgQCAuICMgQXQtc2lnbnMgYW5kIHBlcmlvZHMgcmVxdWlyZSBjb250ZXh0Cis9IC09ICo9IC89ICU9ICY9IHw9IF49Ci8vPSA+Pj0gPDw9ICoqPQoKIyBLZXl3b3JkcwphcyBhc3NlcnQgYnJlYWsgY2xhc3MgY29udGludWUgZGVmIGRlbCBlbGlmIGVsc2UgZXhjZXB0CmZpbmFsbHkgZm9yIGZyb20gZ2xvYmFsIGlmIGltcG9ydCBsYW1iZGEgcGFzcyByYWlzZQpyZXR1cm4gdHJ5IHdoaWxlIHdpdGggeWllbGQKCiMgUHl0aG9uIDIgS2V5d29yZHMgKG90aGVyd2lzZSBJZGVudGlmaWVycykKZXhlYyBwcmludAoKIyBQeXRob24gMyBLZXl3b3JkcyAob3RoZXJ3aXNlIElkZW50aWZpZXJzKQpub25sb2NhbAoKIyBUeXBlcwpib29sIGNsYXNzbWV0aG9kIGNvbXBsZXggZGljdCBlbnVtZXJhdGUgZmxvYXQgZnJvemVuc2V0IGludCBsaXN0IG9iamVjdApwcm9wZXJ0eSByZXZlcnNlZCBzZXQgc2xpY2Ugc3RhdGljbWV0aG9kIHN0ciBzdXBlciB0dXBsZSB0eXBlCgojIFB5dGhvbiAyIFR5cGVzIChvdGhlcndpc2UgSWRlbnRpZmllcnMpCmJhc2VzdHJpbmcgYnVmZmVyIGZpbGUgbG9uZyB1bmljb2RlIHhyYW5nZQoKIyBQeXRob24gMyBUeXBlcyAob3RoZXJ3aXNlIElkZW50aWZpZXJzKQpieXRlYXJyYXkgYnl0ZXMgZmlsdGVyIG1hcCBtZW1vcnl2aWV3IG9wZW4gcmFuZ2UgemlwCgojIEV4YW1wbGUgU3RyaWN0IEVycm9ycwpkZWYgZG9lc05vdGhpbmcoKToKICAgcGFzcyAjIGluZGVudFVuaXQgaXMgc2V0IHRvIDQgYnV0IHRoaXMgbGluZSBpcyBpbmRlbnRlZCAzCgojIFNvbWUgRXhhbXBsZSBjb2RlCmltcG9ydCBvcwpmcm9tIHBhY2thZ2UgaW1wb3J0IFBhcmVudENsYXNzCgpAbm9uc2Vuc2VEZWNvcmF0b3IKZGVmIGRvZXNOb3RoaW5nKCk6CiAgICBwYXNzCgpjbGFzcyBFeGFtcGxlQ2xhc3MoUGFyZW50Q2xhc3MpOgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIGV4YW1wbGUoaW5wdXRTdHIpOgogICAgICAgIGEgPSBsaXN0KGlucHV0U3RyKQogICAgICAgIGEucmV2ZXJzZSgpCiAgICAgICAgcmV0dXJuICcnLmpvaW4oYSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWl4aW4gPSAnSGVsbG8nKToKICAgICAgICBzZWxmLm1peGluID0gbWl4aW4KCjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgICAgIHBhcnNlcmZpbGU6IFsiLi4vY29udHJpYi9weXRob24vanMvcGFyc2VweXRob24uanMiXSwKICAgICAgICBzdHlsZXNoZWV0OiAiY3NzL3B5dGhvbmNvbG9ycy5jc3MiLAogICAgICAgIHBhdGg6ICIuLi8uLi9qcy8iLAogICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLAogICAgICAgIHRleHRXcmFwcGluZzogZmFsc2UsCiAgICAgICAgaW5kZW50VW5pdDogNCwKICAgICAgICBwYXJzZXJDb25maWc6IHsncHl0aG9uVmVyc2lvbic6IDIsICdzdHJpY3RFcnJvcnMnOiB0cnVlfQogICAgfSk7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/js/parsepython.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFB5dGhvblBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiB3b3JkUmVnZXhwKHdvcmRzKSB7CiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiICsgd29yZHMuam9pbigifCIpICsgIikkIik7CiAgICB9CiAgICB2YXIgREVMSU1JVEVSQ0xBU1MgPSAncHktZGVsaW1pdGVyJzsKICAgIHZhciBMSVRFUkFMQ0xBU1MgPSAncHktbGl0ZXJhbCc7CiAgICB2YXIgRVJST1JDTEFTUyA9ICdweS1lcnJvcic7CiAgICB2YXIgT1BFUkFUT1JDTEFTUyA9ICdweS1vcGVyYXRvcic7CiAgICB2YXIgSURFTlRJRklFUkNMQVNTID0gJ3B5LWlkZW50aWZpZXInOwogICAgdmFyIFNUUklOR0NMQVNTID0gJ3B5LXN0cmluZyc7CiAgICB2YXIgQllURVNDTEFTUyA9ICdweS1ieXRlcyc7CiAgICB2YXIgVU5JQ09ERUNMQVNTID0gJ3B5LXVuaWNvZGUnOwogICAgdmFyIFJBV0NMQVNTID0gJ3B5LXJhdyc7CiAgICB2YXIgTk9STUFMQ09OVEVYVCA9ICdub3JtYWwnOwogICAgdmFyIFNUUklOR0NPTlRFWFQgPSAnc3RyaW5nJzsKICAgIHZhciBzaW5nbGVPcGVyYXRvcnMgPSAnKy0qLyUmfF5+PD4nOwogICAgdmFyIGRvdWJsZU9wZXJhdG9ycyA9IHdvcmRSZWdleHAoWyc9PScsICchPScsICdcXDw9JywgJ1xcPj0nLCAnXFw8XFw+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFw8XFw8JywgJ1xcPlxcPicsICdcXC9cXC8nLCAnXFwqXFwqJ10pOwogICAgdmFyIHNpbmdsZURlbGltaXRlcnMgPSAnKClbXXt9QCw6YD07JzsKICAgIHZhciBkb3VibGVEZWxpbWl0ZXJzID0gWydcXCs9JywgJ1xcLT0nLCAnXFwqPScsICcvPScsICclPScsICcmPScsICdcXHw9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXF49J107CiAgICB2YXIgdHJpcGxlRGVsaW1pdGVycyA9IHdvcmRSZWdleHAoWycvLz0nLCdcXD5cXD49JywnXFw8XFw8PScsJ1xcKlxcKj0nXSk7CiAgICB2YXIgc2luZ2xlU3RhcnRlcnMgPSBzaW5nbGVPcGVyYXRvcnMgKyBzaW5nbGVEZWxpbWl0ZXJzICsgJz0hJzsKICAgIHZhciBkb3VibGVTdGFydGVycyA9ICc9PD4qLyc7CiAgICB2YXIgaWRlbnRpZmllclN0YXJ0ZXJzID0gL1tfQS1aYS16XS87CgogICAgdmFyIHdvcmRPcGVyYXRvcnMgPSB3b3JkUmVnZXhwKFsnYW5kJywgJ29yJywgJ25vdCcsICdpcycsICdpbiddKTsKICAgIHZhciBjb21tb25rZXl3b3JkcyA9IFsnYXMnLCAnYXNzZXJ0JywgJ2JyZWFrJywgJ2NsYXNzJywgJ2NvbnRpbnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmJywgJ2RlbCcsICdlbGlmJywgJ2Vsc2UnLCAnZXhjZXB0JywgJ2ZpbmFsbHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICdmb3InLCAnZnJvbScsICdnbG9iYWwnLCAnaWYnLCAnaW1wb3J0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAnbGFtYmRhJywgJ3Bhc3MnLCAncmFpc2UnLCAncmV0dXJuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5JywgJ3doaWxlJywgJ3dpdGgnLCAneWllbGQnXTsKICAgIHZhciBjb21tb250eXBlcyA9IFsnYm9vbCcsICdjbGFzc21ldGhvZCcsICdjb21wbGV4JywgJ2RpY3QnLCAnZW51bWVyYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAnZmxvYXQnLCAnZnJvemVuc2V0JywgJ2ludCcsICdsaXN0JywgJ29iamVjdCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5JywgJ3JldmVyc2VkJywgJ3NldCcsICdzbGljZScsICdzdGF0aWNtZXRob2QnLAogICAgICAgICAgICAgICAgICAgICAgICdzdHInLCAnc3VwZXInLCAndHVwbGUnLCAndHlwZSddOwogICAgdmFyIHB5MiA9IHsndHlwZXMnOiBbJ2Jhc2VzdHJpbmcnLCAnYnVmZmVyJywgJ2ZpbGUnLCAnbG9uZycsICd1bmljb2RlJywKICAgICAgICAgICAgICAgICAgICAgICAgICd4cmFuZ2UnXSwKICAgICAgICAgICAgICAgJ2tleXdvcmRzJzogWydleGVjJywgJ3ByaW50J10sCiAgICAgICAgICAgICAgICd2ZXJzaW9uJzogMiB9OwogICAgdmFyIHB5MyA9IHsndHlwZXMnOiBbJ2J5dGVhcnJheScsICdieXRlcycsICdmaWx0ZXInLCAnbWFwJywgJ21lbW9yeXZpZXcnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ29wZW4nLCAncmFuZ2UnLCAnemlwJ10sCiAgICAgICAgICAgICAgICdrZXl3b3Jkcyc6IFsnbm9ubG9jYWwnXSwKICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAzfTsKCiAgICB2YXIgcHksIGtleXdvcmRzLCB0eXBlcywgc3RyaW5nU3RhcnRlcnMsIHN0cmluZ1R5cGVzLCBjb25maWc7CgogICAgZnVuY3Rpb24gY29uZmlndXJlKGNvbmYpIHsKICAgICAgICBpZiAoIWNvbmYuaGFzT3duUHJvcGVydHkoJ3B5dGhvblZlcnNpb24nKSkgewogICAgICAgICAgICBjb25mLnB5dGhvblZlcnNpb24gPSAyOwogICAgICAgIH0KICAgICAgICBpZiAoIWNvbmYuaGFzT3duUHJvcGVydHkoJ3N0cmljdEVycm9ycycpKSB7CiAgICAgICAgICAgIGNvbmYuc3RyaWN0RXJyb3JzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGNvbmYucHl0aG9uVmVyc2lvbiAhPSAyICYmIGNvbmYucHl0aG9uVmVyc2lvbiAhPSAzKSB7CiAgICAgICAgICAgIGFsZXJ0KCdDb2RlTWlycm9yOiBVbmtub3duIFB5dGhvbiBWZXJzaW9uICInICsKICAgICAgICAgICAgICAgICAgY29uZi5weXRob25WZXJzaW9uICsKICAgICAgICAgICAgICAgICAgJyIsIGRlZmF1bHRpbmcgdG8gUHl0aG9uIDIueC4nKTsKICAgICAgICAgICAgY29uZi5weXRob25WZXJzaW9uID0gMjsKICAgICAgICB9CiAgICAgICAgaWYgKGNvbmYucHl0aG9uVmVyc2lvbiA9PSAzKSB7CiAgICAgICAgICAgIHB5ID0gcHkzOwogICAgICAgICAgICBzdHJpbmdTdGFydGVycyA9IC9bXCdcInJiUkJdLzsKICAgICAgICAgICAgc3RyaW5nVHlwZXMgPSAvW3JiXS87CiAgICAgICAgICAgIGRvdWJsZURlbGltaXRlcnMucHVzaCgnXFwtXFw+Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHkgPSBweTI7CiAgICAgICAgICAgIHN0cmluZ1N0YXJ0ZXJzID0gL1tcJ1wiUlVydV0vOwogICAgICAgICAgICBzdHJpbmdUeXBlcyA9IC9bcnVdLzsKICAgICAgICB9CiAgICAgICAgY29uZmlnID0gY29uZjsKICAgICAgICBrZXl3b3JkcyA9IHdvcmRSZWdleHAoY29tbW9ua2V5d29yZHMuY29uY2F0KHB5LmtleXdvcmRzKSk7CiAgICAgICAgdHlwZXMgPSB3b3JkUmVnZXhwKGNvbW1vbnR5cGVzLmNvbmNhdChweS50eXBlcykpOwogICAgICAgIGRvdWJsZURlbGltaXRlcnMgPSB3b3JkUmVnZXhwKGRvdWJsZURlbGltaXRlcnMpOwogICAgfQoKICAgIHZhciB0b2tlbml6ZVB5dGhvbiA9IChmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgICAgICB2YXIgc3RyaW5nRGVsaW0sIHRocmVlU3RyLCB0ZW1wLCB0eXBlLCB3b3JkLCBwb3NzaWJsZSA9IHt9OwogICAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAKICAgICAgICAgICAgZnVuY3Rpb24gZmlsdGVyUG9zc2libGUodG9rZW4sIHN0eWxlSWZQb3NzaWJsZSkgewogICAgICAgICAgICAgICAgaWYgKCFwb3NzaWJsZS5zdHlsZSAmJiAhcG9zc2libGUuY29udGVudCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKHRva2VuKSA9PSBTVFJJTkdDT05URVhUKSB7CiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB7Y29udGVudDogc291cmNlLmdldCgpLCBzdHlsZTogdG9rZW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlLnN0eWxlIHx8IHN0eWxlSWZQb3NzaWJsZSkgewogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gc3R5bGVJZlBvc3NpYmxlID8gc3R5bGVJZlBvc3NpYmxlIDogcG9zc2libGUuc3R5bGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocG9zc2libGUuY29udGVudCkgewogICAgICAgICAgICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSBwb3NzaWJsZS5jb250ZW50ICsgdG9rZW4uY29udGVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBvc3NpYmxlID0ge307CiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEhhbmRsZSBjb21tZW50cwogICAgICAgICAgICBpZiAoY2ggPT0gJyMnKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJ3B5LWNvbW1lbnQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEhhbmRsZSBzcGVjaWFsIGNoYXJzCiAgICAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciB3aGl0ZXNwYWNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZighKC9bXHNcdTAwYTBdLy50ZXN0KHNvdXJjZS5uZXh0KCkpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVzcGFjZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghd2hpdGVzcGFjZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JDTEFTUzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJ3B5LXNwZWNpYWwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEhhbmRsZSBvcGVyYXRvcnMgYW5kIGRlbGltaXRlcnMKICAgICAgICAgICAgaWYgKHNpbmdsZVN0YXJ0ZXJzLmluZGV4T2YoY2gpICE9IC0xIHx8IChjaCA9PSAiLiIgJiYgIXNvdXJjZS5tYXRjaGVzKC9cZC8pKSkgewogICAgICAgICAgICAgICAgaWYgKGRvdWJsZVN0YXJ0ZXJzLmluZGV4T2Yoc291cmNlLnBlZWsoKSkgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wID0gY2ggKyBzb3VyY2UucGVlaygpOwogICAgICAgICAgICAgICAgICAgIC8vIEl0IG11c3QgYmUgYSBkb3VibGUgZGVsaW1pdGVyIG9yIG9wZXJhdG9yIG9yIHRyaXBsZSBkZWxpbWl0ZXIKICAgICAgICAgICAgICAgICAgICBpZiAoZG91YmxlT3BlcmF0b3JzLnRlc3QodGVtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRDaGFyID0gc291cmNlLnBlZWsoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRDaGFyICYmIHRyaXBsZURlbGltaXRlcnMudGVzdCh0ZW1wICsgbmV4dENoYXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERFTElNSVRFUkNMQVNTOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QRVJBVE9SQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvdWJsZURlbGltaXRlcnMudGVzdCh0ZW1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVMSU1JVEVSQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gSXQgbXVzdCBiZSBhIHNpbmdsZSBkZWxpbWl0ZXIgb3Igb3BlcmF0b3IKICAgICAgICAgICAgICAgIGlmIChzaW5nbGVPcGVyYXRvcnMuaW5kZXhPZihjaCkgIT0gLTEgfHwgY2ggPT0gIi4iKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QRVJBVE9SQ0xBU1M7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNpbmdsZURlbGltaXRlcnMuaW5kZXhPZihjaCkgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ0AnICYmIHNvdXJjZS5tYXRjaGVzKC9cdy8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcZF9dLyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7c3R5bGU6J3B5LWRlY29yYXRvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogc291cmNlLmdldCgpfTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVMSU1JVEVSQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JDTEFTUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBIYW5kbGUgbnVtYmVyIGxpdGVyYWxzCiAgICAgICAgICAgIGlmICgvXGQvLnRlc3QoY2gpIHx8IChjaCA9PSAiLiIgJiYgc291cmNlLm1hdGNoZXMoL1xkLykpKSB7CiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICcwJyAmJiAhc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzb3VyY2UucGVlaygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtN10vKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZShMSVRFUkFMQ0xBU1MsIEVSUk9SQ0xBU1MpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnWCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTlBLUZhLWZdLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyUG9zc2libGUoTElURVJBTENMQVNTLCBFUlJPUkNMQVNTKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bMDFdLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyUG9zc2libGUoTElURVJBTENMQVNTLCBFUlJPUkNMQVNTKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvXGQvKTsKICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnLicgJiYgc291cmNlLnBlZWsoKSA9PSAnLicpIHsKICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cZC8pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gR3JhYiBhbiBleHBvbmVudAogICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5tYXRjaGVzKC9lL2kpKSB7CiAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSAnKycgfHwgc291cmNlLnBlZWsoKSA9PSAnLScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5tYXRjaGVzKC9cZC8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cZC8pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZShFUlJPUkNMQVNTKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBHcmFiIGEgY29tcGxleCBudW1iZXIKICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubWF0Y2hlcygvai9pKSkgewogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlclBvc3NpYmxlKExJVEVSQUxDTEFTUyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gSGFuZGxlIHN0cmluZ3MKICAgICAgICAgICAgaWYgKHN0cmluZ1N0YXJ0ZXJzLnRlc3QoY2gpKSB7CiAgICAgICAgICAgICAgICB2YXIgcGVlayA9IHNvdXJjZS5wZWVrKCk7CiAgICAgICAgICAgICAgICB2YXIgc3RyaW5nVHlwZSA9IFNUUklOR0NMQVNTOwogICAgICAgICAgICAgICAgaWYgKChzdHJpbmdUeXBlcy50ZXN0KGNoKSkgJiYgKHBlZWsgPT0gJyInIHx8IHBlZWsgPT0gIiciKSkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2gudG9Mb3dlckNhc2UoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ1R5cGUgPSBCWVRFU0NMQVNTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nVHlwZSA9IFJBV0NMQVNTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nVHlwZSA9IFVOSUNPREVDTEFTUzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nRGVsaW0gPSBjaDsKICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSAhPSBzdHJpbmdEZWxpbSkgewogICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShpblN0cmluZyhzdHJpbmdUeXBlLCBzdHJpbmdEZWxpbSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSBzdHJpbmdEZWxpbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVlU3RyID0gc3RyaW5nRGVsaW0gKyBzdHJpbmdEZWxpbSArIHN0cmluZ0RlbGltOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUoaW5TdHJpbmcoc3RyaW5nVHlwZSwgdGhyZWVTdHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICInIiB8fCBjaCA9PSAnIicpIHsKICAgICAgICAgICAgICAgICAgICBzdHJpbmdEZWxpbSA9IGNoOwogICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UucGVlaygpICE9IHN0cmluZ0RlbGltKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGluU3RyaW5nKHN0cmluZ1R5cGUsIHN0cmluZ0RlbGltKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UucGVlaygpID09IHN0cmluZ0RlbGltKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWVTdHIgPSBzdHJpbmdEZWxpbSArIHN0cmluZ0RlbGltICsgc3RyaW5nRGVsaW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShpblN0cmluZyhzdHJpbmdUeXBlLCB0aHJlZVN0cikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nVHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBIYW5kbGUgSWRlbnRpZmllcgogICAgICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ZXJzLnRlc3QoY2gpKSB7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW1x3XGRfXS8pOwogICAgICAgICAgICAgICAgd29yZCA9IHNvdXJjZS5nZXQoKTsKICAgICAgICAgICAgICAgIGlmICh3b3JkT3BlcmF0b3JzLnRlc3Qod29yZCkpIHsKICAgICAgICAgICAgICAgICAgICB0eXBlID0gT1BFUkFUT1JDTEFTUzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5d29yZHMudGVzdCh3b3JkKSkgewogICAgICAgICAgICAgICAgICAgIHR5cGUgPSAncHkta2V5d29yZCc7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVzLnRlc3Qod29yZCkpIHsKICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ3B5LXR5cGUnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0eXBlID0gSURFTlRJRklFUkNMQVNTOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChzb3VyY2UucGVlaygpID09ICcuJykgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLm1hdGNoZXMoaWRlbnRpZmllclN0YXJ0ZXJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkXS8pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEVSUk9SQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZCArIHNvdXJjZS5nZXQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZSh7c3R5bGU6IHR5cGUsIGNvbnRlbnQ6IHdvcmR9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgRG9sbGFyIHNpZ24gYW5kIFF1ZXN0aW9uIG1hcmsgYXMgZXJyb3JzLiBBbHdheXMhCiAgICAgICAgICAgIGlmICgvXCRcPy8udGVzdChjaCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZShFUlJPUkNMQVNTKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZpbHRlclBvc3NpYmxlKEVSUk9SQ0xBU1MpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaW5TdHJpbmcoc3R5bGUsIHRlcm1pbmF0b3IpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICAgICAgICAgIHZhciBtYXRjaGVzID0gW107CiAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHdoaWxlICghZm91bmQgJiYgIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCksIG5ld01hdGNoZXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UucGVlaygpID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gdGVybWluYXRvci5jaGFyQXQoMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHRlcm1pbmF0b3IpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gbWF0Y2hlc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoLmNoYXJBdCgwKSA9PSBjaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUobm9ybWFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld01hdGNoZXMucHVzaChtYXRjaC5zbGljZSgxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG5ld01hdGNoZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGU7CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IG5vcm1hbCk7CiAgICAgICAgfTsKICAgIH0pKCk7CgogICAgZnVuY3Rpb24gcGFyc2VQeXRob24oc291cmNlLCBiYXNlY29sdW1uKSB7CiAgICAgICAgaWYgKCFrZXl3b3JkcykgewogICAgICAgICAgICBjb25maWd1cmUoe30pOwogICAgICAgIH0KICAgICAgICBiYXNlY29sdW1uID0gYmFzZWNvbHVtbiB8fCAwOwoKICAgICAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVQeXRob24oc291cmNlKTsKICAgICAgICB2YXIgbGFzdFRva2VuID0gbnVsbDsKICAgICAgICB2YXIgY29sdW1uID0gYmFzZWNvbHVtbjsKICAgICAgICB2YXIgY29udGV4dCA9IHtwcmV2OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgIGVuZE9mU2NvcGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TmV3U2NvcGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiBiYXNlY29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogTk9STUFMQ09OVEVYVAogICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIHB1c2hDb250ZXh0KGxldmVsLCB0eXBlKSB7CiAgICAgICAgICAgIHR5cGUgPSB0eXBlID8gdHlwZSA6IE5PUk1BTENPTlRFWFQ7CiAgICAgICAgICAgIGNvbnRleHQgPSB7cHJldjogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICBlbmRPZlNjb3BlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICBzdGFydE5ld1Njb3BlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHBvcENvbnRleHQocmVtb3ZlKSB7CiAgICAgICAgICAgIHJlbW92ZSA9IHJlbW92ZSA/IHJlbW92ZSA6IGZhbHNlOwogICAgICAgICAgICBpZiAoY29udGV4dC5wcmV2KSB7CiAgICAgICAgICAgICAgICBpZiAocmVtb3ZlKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5leHQgPSBudWxsOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnByZXYubmV4dCA9IGNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaW5kZW50UHl0aG9uKGNvbnRleHQpIHsKICAgICAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuZXh0Q2hhcnMsIGN1cnJlbnRMZXZlbCwgZGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSBudWxsIHx8IGRpcmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRDaGFycykgewogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmxldmVsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRMZXZlbCA9PSBjb250ZXh0LmxldmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm5leHQubGV2ZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5sZXZlbDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBjb250ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGVtcC5wcmV2ICYmIHRlbXAucHJldi5sZXZlbCA+IGN1cnJlbnRMZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAucHJldjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVtcC5sZXZlbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudExldmVsID4gY29udGV4dC5sZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5sZXZlbDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQucHJldikgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gY29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXAucHJldiAmJiB0ZW1wLnByZXYubGV2ZWwgPj0gY3VycmVudExldmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcC5wcmV2OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wLnByZXYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wLnByZXYubGV2ZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVtcC5sZXZlbDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmxldmVsOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgdmFyIGl0ZXIgPSB7CiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKICAgICAgICAgICAgICAgIHZhciB0eXBlID0gdG9rZW4uc3R5bGU7CiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHRva2VuLmNvbnRlbnQ7CgogICAgICAgICAgICAgICAgaWYgKGxhc3RUb2tlbikgewogICAgICAgICAgICAgICAgICAgIGlmIChsYXN0VG9rZW4uY29udGVudCA9PSAnZGVmJyAmJiB0eXBlID09IElERU5USUZJRVJDTEFTUykgewogICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9ICdweS1mdW5jJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RUb2tlbi5jb250ZW50ID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBDdHggPSBjb250ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgYSBkaWZmZXJlbnQgc2NvcGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ3doaXRlc3BhY2UnICYmIGNvbnRleHQudHlwZSA9PSBOT1JNQUxDT05URVhUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUubGVuZ3RoIDwgY29udGV4dC5sZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0b2tlbi52YWx1ZS5sZW5ndGggPCBjb250ZXh0LmxldmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcENvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZS5sZW5ndGggIT0gY29udGV4dC5sZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gdGVtcEN0eDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5zdHJpY3RFcnJvcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gRVJST1JDTEFTUzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubmV4dCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubGV2ZWwgIT09IGJhc2Vjb2x1bW4gJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnR5cGUgPT0gTk9STUFMQ09OVEVYVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGJhc2Vjb2x1bW4gIT09IGNvbnRleHQubGV2ZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQubGV2ZWwgIT09IGJhc2Vjb2x1bW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gdGVtcEN0eDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnN0cmljdEVycm9ycykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9IEVSUk9SQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBTY29wZSBDaGFuZ2VzCiAgICAgICAgICAgICAgICBzd2l0Y2godHlwZSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgU1RSSU5HQ0xBU1M6CiAgICAgICAgICAgICAgICAgICAgY2FzZSBCWVRFU0NMQVNTOgogICAgICAgICAgICAgICAgICAgIGNhc2UgUkFXQ0xBU1M6CiAgICAgICAgICAgICAgICAgICAgY2FzZSBVTklDT0RFQ0xBU1M6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnR5cGUgIT09IFNUUklOR0NPTlRFWFQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hDb250ZXh0KGNvbnRleHQubGV2ZWwgKyAxLCBTVFJJTkdDT05URVhUKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC50eXBlID09PSBTVFJJTkdDT05URVhUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BDb250ZXh0KHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3dpdGNoKGNvbnRlbnQpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdAJzoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgZGVsaW1pdGVycyBkb24ndCBhcHBlYXIgYnkgdGhlbXNlbHZlcwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCAhPT0gdG9rZW4udmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gRVJST1JDTEFTUzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICc6JzoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29sb25zIG9ubHkgZGVsaW1pdCBzY29wZSBpbnNpZGUgYSBub3JtYWwgc2NvcGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gTk9STUFMQ09OVEVYVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGFydE5ld1Njb3BlID0gY29udGV4dC5sZXZlbCtpbmRlbnRVbml0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJygnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3snOgogICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBzdGFydCBhIHNlcXVlbmNlIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hDb250ZXh0KGNvbHVtbiArIGNvbnRlbnQubGVuZ3RoLCAnc2VxdWVuY2UnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnKSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnXSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnfSc6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGVuZCBhIHNlcXVlbmNlIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcENvbnRleHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bhc3MnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JldHVybic6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGVuZCBhIG5vcm1hbCBzY29wZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC50eXBlID09PSBOT1JNQUxDT05URVhUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuZE9mU2NvcGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1xuJzoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgb3VyIGNvbHVtbgogICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSBiYXNlY29sdW1uOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGFueSBzY29wZSBjaGFuZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVuZE9mU2NvcGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZW5kT2ZTY29wZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQuc3RhcnROZXdTY29wZSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gY29udGV4dC5zdGFydE5ld1Njb3BlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGFydE5ld1Njb3BlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoQ29udGV4dCh0ZW1wLCBOT1JNQUxDT05URVhUKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXdsaW5lcyByZXF1aXJlIGFuIGluZGVudGF0aW9uIGZ1bmN0aW9uIHdyYXBwZWQgaW4gYSBjbG9zdXJlIGZvciBwcm9wZXIgY29udGV4dC4KICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uaW5kZW50YXRpb24gPSBpbmRlbnRQeXRob24oY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudCBjb2x1bW4gZm9yIGNlcnRhaW4gc2NvcGVzLgogICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgIT0gJ1xuJykgewogICAgICAgICAgICAgICAgICAgIGNvbHVtbiArPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGFzdFRva2VuID0gdG9rZW47CiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBfY29udGV4dCA9IGNvbnRleHQsIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSkgewogICAgICAgICAgICAgICAgICAgIHRva2VucyA9IHRva2VuaXplUHl0aG9uKHNvdXJjZSwgX3Rva2VuU3RhdGUpOwogICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBfY29udGV4dDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcjsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHJldHVybiBpdGVyOwogICAgfQoKICAgIHJldHVybiB7bWFrZTogcGFyc2VQeXRob24sCiAgICAgICAgICAgIGVsZWN0cmljQ2hhcnM6ICIiLAogICAgICAgICAgICBjb25maWd1cmU6IGNvbmZpZ3VyZX07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA5LCBUaW1vdGh5IEZhcnJlbGwNCkFsbCByaWdodHMgcmVzZXJ2ZWQuDQoNClRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgZm9yIHVzZSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpDb2RlTWlycm9yIHN1aXRlIG9mIG1vZHVsZXMgYW5kIHV0aWxpdGllcywgaG9zdGVkIGFuZCBtYWludGFpbmVkDQphdCBodHRwOi8vY29kZW1pcnJvci5uZXQvLg0KDQpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRoaXMgc29mdHdhcmUgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQp3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlDQpmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KDQoqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCiAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCg0KKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQogIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCiAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQogIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQoNClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQpMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCkNPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQpCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7DQpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSDQpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCkxJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElODQpBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/css/schemecolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKLmVkaXRib3ggewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBtYXJnaW46IDBwdDsKICBwYWRkaW5nOiAwOwogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgZm9udC1zaXplOiAxMHB0OwogIGNvbG9yOiBibGFjazsKfQoKCgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uc2NoZW1lLXN0cmluZwl7Y29sb3I6IGdyZWVuO30Kc3Bhbi5zY2hlbWUtbnVtYmVyCXtjb2xvcjogYmx1ZTt9CnNwYW4uc2NoZW1lLWJvb2xlYW4gICAgIHtjb2xvcjogZGFya3JlZDt9CnNwYW4uc2NoZW1lLWNoYXJhY3Rlcgl7Y29sb3I6IG9yYW5nZTt9CnNwYW4uc2NoZW1lLXN5bWJvbAl7Y29sb3I6IHN0ZWVsYmx1ZTt9CnNwYW4uc2NoZW1lLXB1bmN0dWF0aW9uIHtjb2xvcjogYmxhY2s7fQpzcGFuLnNjaGVtZS1scGFyZW4gICAgICB7Y29sb3I6IGJsYWNrO30Kc3Bhbi5zY2hlbWUtcnBhcmVuICAgICAge2NvbG9yOiBibGFjazt9CnNwYW4uc2NoZW1lLWNvbW1lbnQgICAgIHsgY29sb3I6IG9yYW5nZTsgfQoKc3Bhbi5nb29kLW1hdGNoaW5nLXBhcmVuIHsgCiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGNvbG9yOiAjMzM5OUZGOyAgCn0Kc3Bhbi5iYWQtbWF0Y2hpbmctcGFyZW4gewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBjb2xvcjogcmVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvbWlycm9yZnJhbWUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogU2NoZW1lIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY3NzL2RvY3MuY3NzIi8+CgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgICAgLkNvZGVNaXJyb3ItbGluZS1udW1iZXJzIHsKICAgICAgICB3aWR0aDogMi4yZW07CiAgICAgICAgY29sb3I6ICNhYWE7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuM2VtOwogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIHBhZGRpbmctdG9wOiAuNGVtOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBwYWdlIGRlbW9uc3RyYXRlcyA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPidzClNjaGVtZSBwYXJzZXIuICg8YSBocmVmPSJMSUNFTlNFIj5saWNlbnNlPC9hPik8L3A+Cgo8ZGl2IGNsYXNzPSJib3JkZXIiPgo8dGV4dGFyZWEgaWQ9ImNvZGUiIGNvbHM9IjEyMCIgcm93cz0iMzAiPgooZGVmaW5lIChmYWN0b3JpYWwgeCkKICAoY29uZAogICAgWyg9IHggMCkKICAgICAxXQogICAgW2Vsc2UKICAgICAoKiB4IChmYWN0b3JpYWwgKHN1YjEgeCkpKV0pKQoKKGxpc3QgIlRoaXMgaXMgYSBzdHJpbmciCiAgICAgICdib29sZWFuCiAgICAgIHRydWUKICAgICAgMy4xNCkKCihsb2NhbCBbKGRlZmluZSB4IDQyKV0KICAocHJpbnRmICJva35uIikpCjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCFlZGl0b3Iud2luLmhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIHsKICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAoKGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCIgIikpLmNvbmNhdChbY2xhc3NOYW1lXSkpLmpvaW4oIiAiKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKGVkaXRvci53aW4uaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSkgewogICAgICB2YXIgY2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCIgIik7CiAgICAgIGZvciAodmFyIGkgPSBjbGFzc2VzLmxlbmd0aCAtIDEgOyBpID49IDA7IGktLSkgewogICAgICAgIGlmIChjbGFzc2VzW2ldID09PSBjbGFzc05hbWUpIHsKICAgICAgICAgICAgY2xhc3Nlcy5zcGxpY2UoaSwgMSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3Nlcy5qb2luKCIgIik7CiAgICB9CiAgfQoKICB2YXIgdGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpOwogIHZhciBlZGl0b3IgPSBuZXcgQ29kZU1pcnJvcihDb2RlTWlycm9yLnJlcGxhY2UodGV4dGFyZWEpLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBjb250ZW50OiB0ZXh0YXJlYS52YWx1ZSwKICAgIHBhdGg6ICIuLi8uLi9qcy8iLAogICAgcGFyc2VyZmlsZTogWyIuLi9jb250cmliL3NjaGVtZS9qcy90b2tlbml6ZXNjaGVtZS5qcyIsCiAgICAgICAgICAgICAgICAgIi4uL2NvbnRyaWIvc2NoZW1lL2pzL3BhcnNlc2NoZW1lLmpzIl0sCiAgICBzdHlsZXNoZWV0OiAgImNzcy9zY2hlbWVjb2xvcnMuY3NzIiwKICAgIGF1dG9NYXRjaFBhcmVuczogdHJ1ZSwKICAgIGRpc2FibGVTcGVsbGNoZWNrOiB0cnVlLAogICAgbGluZU51bWJlcnM6IHRydWUsCiAgICBtYXJrUGFyZW46IGZ1bmN0aW9uKHNwYW4sIGdvb2QpIHthZGRDbGFzcyhzcGFuLCBnb29kID8gImdvb2QtbWF0Y2hpbmctcGFyZW4iIDogImJhZC1tYXRjaGluZy1wYXJlbiIpO30sCiAgICB1bm1hcmtQYXJlbjogZnVuY3Rpb24oc3Bhbikge3JlbW92ZUNsYXNzKHNwYW4sICJnb29kLW1hdGNoaW5nLXBhcmVuIik7IHJlbW92ZUNsYXNzKHNwYW4sICJiYWQtbWF0Y2hpbmctcGFyZW4iKTt9CiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/js/parsescheme.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFNjaGVtZVBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CgoKICAgIC8vIGlzTHBhcmVuOiBjaGFyIC0+IGJvb2xlYW4KICAgIHZhciBpc0xwYXJlbiA9IGZ1bmN0aW9uKGNoKSB7CglyZXR1cm4gY2ggPT09ICcoJyB8fCBjaCA9PT0gJ1snIHx8IGNoID09PSAneyc7CiAgICB9OwoKICAgIC8vIGlzUnBhcmVuOiBjaGFyIC0+IGJvb2xlYW4KICAgIHZhciBpc1JwYXJlbiA9IGZ1bmN0aW9uKGNoKSB7CglyZXR1cm4gY2ggPT09ICcpJyB8fCBjaCA9PT0gJ10nIHx8IGNoID09PSAnfSc7CiAgICB9OwoKICAgIC8vIGlzTWF0Y2hpbmdQYXJlbnM6IGNoYXIgY2hhciAtPiBib29sZWFuCiAgICB2YXIgaXNNYXRjaGluZ1BhcmVucyA9IGZ1bmN0aW9uKGxwYXJlbiwgcnBhcmVuKSB7CglyZXR1cm4gKChscGFyZW4gPT09ICcoJyAmJiBycGFyZW4gPT09ICcpJykgfHwKCQkobHBhcmVuID09PSAnWycgJiYgcnBhcmVuID09PSAnXScpIHx8CgkJKGxwYXJlbiA9PT0gJ3snICYmIHJwYXJlbiA9PT0gJ30nKSk7CiAgICB9OwoKCiAgICAvLyBDb21wdXRlIHRoZSBpbmRlbnRhdGlvbiBjb250ZXh0IGVuY2xvc2luZyB0aGUgZW5kIG9mIHRoZSB0b2tlbgogICAgLy8gc2VxdWVuY2UgdG9rZW5zLgogICAgLy8gVGhlIGNvbnRleHQgaXMgdGhlIHRva2VuIHNlcXVlbmNlIG9mIHRoZSBlbmNsb3Npbmcgcy1leHByZXNzaW9uLAogICAgLy8gYXVnbWVudGVkIHdpdGggY29sdW1uIGluZm9ybWF0aW9uLgogICAgdmFyIGdldEluZGVudGF0aW9uQ29udGV4dCA9IGZ1bmN0aW9uKHRva2VuU3RhY2spIHsKCXZhciBFTVBUWV9DT05URVhUID0gW107CgoJdmFyIHBlbmRpbmdQYXJlbnMgPSBbXSwgaSA9IDAsIGosIGxpbmUsIGNvbHVtbiwgY29udGV4dDsKCXZhciB0b2tlbnMgPSBbXTsKCgkvLyBTY2FuIGZvciB0aGUgc3RhcnQgb2YgdGhlIGluZGVudGF0aW9uIGNvbnRleHQsIGFjY3VtdWxhdGluZyB0b2tlbnMuCgl3aGlsZSAoISBpc0VtcHR5UGFpcih0b2tlblN0YWNrKSkgewoJICAgIGkrKzsKCSAgICB0b2tlbnMucHVzaChwYWlyRmlyc3QodG9rZW5TdGFjaykpOwoJICAgIGlmIChpc0xwYXJlbihwYWlyRmlyc3QodG9rZW5TdGFjaykudHlwZSkpIHsKCQlpZiAocGVuZGluZ1BhcmVucy5sZW5ndGggPT09IDApIHsKCQkgICAgYnJlYWs7CgkJfSBlbHNlIHsKCQkgICAgaWYgKGlzTWF0Y2hpbmdQYXJlbnMocGFpckZpcnN0KHRva2VuU3RhY2spLnZhbHVlLAoJCQkJCSBwZW5kaW5nUGFyZW5zW3BlbmRpbmdQYXJlbnMubGVuZ3RoIC0gMV0pKSB7CgkJCXBlbmRpbmdQYXJlbnMucG9wKCk7CgkJICAgIH0gZWxzZSB7CgkJCS8vIEVycm9yIGNvbmRpdGlvbjogd2Ugc2VlIG1pc21hdGNoaW5nIHBhcmVucywKCQkJLy8gc28gd2UgZXhpdCB3aXRoIG5vIGtub3duIGluZGVudGF0aW9uIGNvbnRleHQuCgkJCXJldHVybiBFTVBUWV9DT05URVhUOwoJCSAgICB9CgkJfQoJICAgIH0gZWxzZSBpZiAoaXNScGFyZW4ocGFpckZpcnN0KHRva2VuU3RhY2spLnR5cGUpKSAgewoJCXBlbmRpbmdQYXJlbnMucHVzaChwYWlyRmlyc3QodG9rZW5TdGFjaykudHlwZSk7CgkgICAgfQoJICAgIHRva2VuU3RhY2sgPSBwYWlyUmVzdCh0b2tlblN0YWNrKTsKCX0KCgkvLyBJZiB3ZSBzY2FubmVkIGJhY2t3YXJkIHRvbyBmYXIsIHdlIGNvdWxkbid0IGZpbmQgYSBjb250ZXh0LiAgSnVzdAoJLy8gcmV0dXJuIHRoZSBlbXB0eSBjb250ZXh0LgoJaWYgKGlzRW1wdHlQYWlyKHRva2VuU3RhY2spKSB7IAoJICAgIHJldHVybiBFTVBUWV9DT05URVhUOyAKCX0KCgkvLyBQb3NpdGlvbiB0b2tlblN0YWNrIHRvIHRoZSBuZXh0IHRva2VuIGJleW9uZC4KCXRva2VuU3RhY2sgPSBwYWlyUmVzdCh0b2tlblN0YWNrKTsKCgkvLyBXZSBub3cgc2NhbiBiYWNrd2FyZHMgdG8gY2xvc2VzdCBuZXdsaW5lIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbHVtbgoJLy8gbnVtYmVyOgoJd2hpbGUgKCEgaXNFbXB0eVBhaXIodG9rZW5TdGFjaykpIHsKCSAgICBpZihwYWlyRmlyc3QodG9rZW5TdGFjaykudHlwZSA9PT0gJ3doaXRlc3BhY2UnICYmIAoJICAgICAgIHBhaXJGaXJzdCh0b2tlblN0YWNrKS52YWx1ZSA9PT0gJ1xuJykgewoJCWJyZWFrOwoJICAgIH0KCSAgICB0b2tlbnMucHVzaChwYWlyRmlyc3QodG9rZW5TdGFjaykpOwoJICAgIHRva2VuU3RhY2sgPSBwYWlyUmVzdCh0b2tlblN0YWNrKTsKCX0KCglsaW5lID0gMDsKCWNvbHVtbiA9IDA7Cgljb250ZXh0ID0gW107CgkvLyBTdGFydCBnZW5lcmF0aW5nIHRoZSBjb250ZXh0LCB3YWxraW5nIGZvcndhcmQuCglmb3IgKGogPSB0b2tlbnMubGVuZ3RoLTE7IGogPj0gMDsgai0tKSB7CgkgICAgaWYgKGogPCBpKSB7CgkJY29udGV4dC5wdXNoKHsgdHlwZTogdG9rZW5zW2pdLnR5cGUsCgkJCSAgICAgICB2YWx1ZTogdG9rZW5zW2pdLnZhbHVlLAoJCQkgICAgICAgbGluZTogbGluZSwKCQkJICAgICAgIGNvbHVtbjogY29sdW1uIH0pOwoJICAgIH0KCgkgICAgaWYgKHRva2Vuc1tqXS50eXBlID09PSAnd2hpdGVzcGFjZScgJiYgCgkJdG9rZW5zW2pdLnZhbHVlID09PSAnXG4nKSB7CgkJY29sdW1uID0gMDsKCQlsaW5lKys7CgkgICAgfSBlbHNlIHsKCQljb2x1bW4gKz0gdG9rZW5zW2pdLnZhbHVlLmxlbmd0aDsKCSAgICB9Cgl9CglyZXR1cm4gY29udGV4dDsKCgogICAgfTsKCgoKCgogICAgLy8gY2FsY3VsYXRlSW5kZW50YXRpb25Gcm9tQ29udGV4dDogaW5kZW50YXRpb24tY29udGV4dCBudW1iZXIgLT4gbnVtYmVyCiAgICB2YXIgY2FsY3VsYXRlSW5kZW50YXRpb25Gcm9tQ29udGV4dCA9IGZ1bmN0aW9uKGNvbnRleHQsIGN1cnJlbnRJbmRlbnRhdGlvbikgewoJaWYgKGNvbnRleHQubGVuZ3RoID09PSAwKSB7CgkgICAgcmV0dXJuIDA7Cgl9CiAJaWYgKGlzQmVnaW5MaWtlQ29udGV4dChjb250ZXh0KSkgewoJICAgIHJldHVybiBiZWdpbkxpa2VJbmRlbnRhdGlvbihjb250ZXh0KTsKIAl9CglpZiAoaXNEZWZpbmVMaWtlQ29udGV4dChjb250ZXh0KSkgewoJICAgIHJldHVybiBkZWZpbmVMaWtlSW5kZW50YXRpb24oY29udGV4dCk7Cgl9CiAgCWlmIChpc0xhbWJkYUxpa2VDb250ZXh0KGNvbnRleHQpKSB7CgkgICAgcmV0dXJuIGxhbWJkYUxpa2VJbmRlbnRhdGlvbihjb250ZXh0KTsKICAJfQoJcmV0dXJuIGJlZ2luTGlrZUluZGVudGF0aW9uKGNvbnRleHQsIDApOwogICAgfTsKCgoKICAgIC8vIGZpbmRDb250ZXh0RWxlbWVudDogaW5kZW50YXRpb24tY29udGV4dCBudW1iZXIgLT4gaW5kZXggb3IgLTEKICAgIHZhciBmaW5kQ29udGV4dEVsZW1lbnQgPSBmdW5jdGlvbihjb250ZXh0LCBpbmRleCkgewoJdmFyIGRlcHRoID0gMDsKCWZvcih2YXIgaSA9IDA7IGkgPCBjb250ZXh0Lmxlbmd0aDsgaSsrKSB7CgkgICAgaWYgKGNvbnRleHRbaV0udHlwZSAhPT0gJ3doaXRlc3BhY2UnICYmIGRlcHRoID09PSAxKSB7CgkJaWYgKGluZGV4ID09PSAwKQoJCSAgICByZXR1cm4gaTsKCQllbHNlCgkJICAgIGluZGV4LS07CgkgICAgfQoKCSAgICBpZiAoaXNMcGFyZW4oY29udGV4dFtpXS50eXBlKSkgewoJCWRlcHRoKys7CgkgICAgfQoJICAgIGlmIChpc1JwYXJlbihjb250ZXh0W2ldLnR5cGUpKSB7CgkJZGVwdGggPSBNYXRoLm1heChkZXB0aCAtIDEsIDApOwoJICAgIH0KCX0KCXJldHVybiAtMTsKICAgIH07CgogICAgLy8gY29udGV4dEVsZW1lbnQ6IGNvbnRleHQgLT4gKGFycmF5b2YgaW5kZXgpCiAgICB2YXIgY29udGV4dEVsZW1lbnRzID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGkgPSAwLCBpbmRleCwgcmVzdWx0cyA9IFtdOwoJCgl3aGlsZSAoKGluZGV4ID0gZmluZENvbnRleHRFbGVtZW50KGNvbnRleHQsIGkrKykpICE9IC0xKSB7CgkgICAgcmVzdWx0cy5wdXNoKGluZGV4KTsKCX0KCXJldHVybiByZXN1bHRzOwogICAgfTsKCgoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICB2YXIgQkVHSU5fTElLRV9LRVlXT1JEUyA9IFsiY2FzZS1sYW1iZGEiLCAKCQkJICAgICAgICJjb21wb3VuZC11bml0IiwKCQkJICAgICAgICJjb21wb3VuZC11bml0L3NpZyIsCgkJCSAgICAgICAiY29uZCIsCgkJCSAgICAgICAiZGVsYXkiLAoJCQkgICAgICAgImluaGVyaXQiLAoJCQkgICAgICAgIm1hdGNoLWxhbWJkYSIsCgkJCSAgICAgICAibWF0Y2gtbGFtYmRhKiIsCgkJCSAgICAgICAib3ZlcnJpZGUiLAoJCQkgICAgICAgInByaXZhdGUiLAoJCQkgICAgICAgInB1YmxpYyIsCgkJCSAgICAgICAic2VxdWVuY2UiLAoJCQkgICAgICAgInVuaXQiXTsKCiAgICB2YXIgaXNCZWdpbkxpa2VDb250ZXh0ID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGogPSBmaW5kQ29udGV4dEVsZW1lbnQoY29udGV4dCwgMCk7CglpZiAoaiA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlOyB9CglyZXR1cm4gKC9eYmVnaW4vLnRlc3QoY29udGV4dFtqXS52YWx1ZSkgfHwKCQlpc01lbWJlcihjb250ZXh0W2pdLnZhbHVlLCBCRUdJTl9MSUtFX0tFWVdPUkRTKSk7CiAgICB9OwoKCiAgICAvLyBCZWdpbjogaWYgdGhlcmUncyBubyBlbGVtZW50cyB3aXRoaW4gdGhlIGJlZ2luIGNvbnRleHQsCiAgICAvLyB0aGUgaW5kZW50YXRpb24gaXMgdGhhdCBvZiB0aGUgYmVnaW4ga2V5d29yZCdzIGNvbHVtbiArIG9mZnNldC4KICAgIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbGVhZGluZyBlbGVtZW50IG9uIHRoZSBsYXN0IGxpbmUuCiAgICAvLyBBbHNvIHVzZWQgZm9yIGRlZmF1bHQgaW5kZW50YXRpb24uCiAgICB2YXIgYmVnaW5MaWtlSW5kZW50YXRpb24gPSBmdW5jdGlvbihjb250ZXh0LCBvZmZzZXQpIHsKCWlmICh0eXBlb2Yob2Zmc2V0KSA9PT0gJ3VuZGVmaW5lZCcpIHsgb2Zmc2V0ID0gMTsgfQoKCXZhciBpbmRpY2VzID0gY29udGV4dEVsZW1lbnRzKGNvbnRleHQpLCBqOwoJaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7CgkgICAgcmV0dXJuIGNvbnRleHRbMF0uY29sdW1uICsgMTsKCX0gZWxzZSBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDEpIHsKCSAgICAvLyBpZiB3ZSBvbmx5IHNlZSB0aGUgYmVnaW4ga2V5d29yZCwgaW5kZW50YXRpb24gaXMgYmFzZWQKCSAgICAvLyBvZmYgdGhlIGtleXdvcmQuCgkgICAgcmV0dXJuIGNvbnRleHRbaW5kaWNlc1swXV0uY29sdW1uICsgb2Zmc2V0OwoJfSBlbHNlIHsKCSAgICAvLyBPdGhlcndpc2UsIHdlIHNjYW4gZm9yIHRoZSBjb250ZXh0RWxlbWVudCBvZiB0aGUgbGFzdCBsaW5lCgkgICAgZm9yIChqID0gaW5kaWNlcy5sZW5ndGggLTE7IGogPiAxOyBqLS0pIHsKCQlpZiAoY29udGV4dFtpbmRpY2VzW2pdXS5saW5lICE9PQoJCSAgICBjb250ZXh0W2luZGljZXNbai0xXV0ubGluZSkgewoJCSAgICByZXR1cm4gY29udGV4dFtpbmRpY2VzW2pdXS5jb2x1bW47CgkJfQoJICAgIH0KCSAgICByZXR1cm4gY29udGV4dFtpbmRpY2VzW2pdXS5jb2x1bW47Cgl9CiAgICB9OwoKCgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKCiAgICB2YXIgREVGSU5FX0xJS0VfS0VZV09SRFMgPSBbImxvY2FsIl07CgogICAgdmFyIGlzRGVmaW5lTGlrZUNvbnRleHQgPSBmdW5jdGlvbihjb250ZXh0KSB7Cgl2YXIgaiA9IGZpbmRDb250ZXh0RWxlbWVudChjb250ZXh0LCAwKTsKCWlmIChqID09PSAtMSkgeyByZXR1cm4gZmFsc2U7IH0KCXJldHVybiAoL15kZWYvLnRlc3QoY29udGV4dFtqXS52YWx1ZSkgfHwKCQlpc01lbWJlcihjb250ZXh0W2pdLnZhbHVlLCBERUZJTkVfTElLRV9LRVlXT1JEUykpOwogICAgfTsKCgogICAgdmFyIGRlZmluZUxpa2VJbmRlbnRhdGlvbiA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKCXZhciBpID0gZmluZENvbnRleHRFbGVtZW50KGNvbnRleHQsIDApOwoJaWYgKGkgPT09IC0xKSB7IHJldHVybiAwOyB9CglyZXR1cm4gY29udGV4dFtpXS5jb2x1bW4gKzE7IAogICAgfTsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgdmFyIExBTUJEQV9MSUtFX0tFWVdPUkRTID0gWyJjYXNlcyIsCgkJCQkiaW5zdGFudGlhdGUiLAoJCQkJInN1cGVyLWluc3RhbnRpYXRlIiwKCQkJCSJzeW50YXgvbG9jIiwKCQkJCSJxdWFzaXN5bnRheC9sb2MiLAoJCQkJImxhbWJkYSIsCgkJCQkibGV0IiwKCQkJCSJsZXQqIiwKCQkJCSJsZXRyZWMiLAoJCQkJInJlY3VyIiwKCQkJCSJsYW1iZGEva3ciLAoJCQkJImxldHJlYy12YWx1ZXMiLAoJCQkJIndpdGgtc3ludGF4IiwKCQkJCSJ3aXRoLWNvbnRpbnVhdGlvbi1tYXJrIiwKCQkJCSJtb2R1bGUiLAoJCQkJIm1hdGNoIiwKCQkJCSJtYXRjaC1sZXQiLAoJCQkJIm1hdGNoLWxldCoiLAoJCQkJIm1hdGNoLWxldHJlYyIsCgkJCQkibGV0L2NjIiwKCQkJCSJsZXQvZWMiLAoJCQkJImxldGNjIiwKCQkJCSJjYXRjaCIsCgkJCQkibGV0LXN5bnRheCIsCgkJCQkibGV0cmVjLXN5bnRheCIsCgkJCQkiZmx1aWQtbGV0LXN5bnRheCIsCgkJCQkibGV0cmVjLXN5bnRheGVzK3ZhbHVlcyIsCgkJCQkiZm9yIiwKCQkJCSJmb3IvbGlzdCIsCgkJCQkiZm9yL2hhc2giLAoJCQkJImZvci9oYXNoZXEiLAoJCQkJImZvci9hbmQiLAoJCQkJImZvci9vciIsCgkJCQkiZm9yL2xpc3RzIiwKCQkJCSJmb3IvZmlyc3QiLAoJCQkJImZvci9sYXN0IiwKCQkJCSJmb3IvZm9sZCIsCgkJCQkiZm9yKiIsCgkJCQkiZm9yKi9saXN0IiwKCQkJCSJmb3IqL2hhc2giLAoJCQkJImZvciovaGFzaGVxIiwKCQkJCSJmb3IqL2FuZCIsCgkJCQkiZm9yKi9vciIsCgkJCQkiZm9yKi9saXN0cyIsCgkJCQkiZm9yKi9maXJzdCIsCgkJCQkiZm9yKi9sYXN0IiwKCQkJCSJmb3IqL2ZvbGQiLAoJCQkJImtlcm5lbC1zeW50YXgtY2FzZSIsCgkJCQkic3ludGF4LWNhc2UiLAoJCQkJInN5bnRheC1jYXNlKiIsCgkJCQkic3ludGF4LXJ1bGVzIiwKCQkJCSJzeW50YXgtaWQtcnVsZXMiLAoJCQkJImxldC1zaWduYXR1cmUiLAoJCQkJImZsdWlkLWxldCIsCgkJCQkibGV0LXN0cnVjdCIsCgkJCQkibGV0LW1hY3JvIiwKCQkJCSJsZXQtdmFsdWVzIiwKCQkJCSJsZXQqLXZhbHVlcyIsCgkJCQkiY2FzZSIsCgkJCQkid2hlbiIsCgkJCQkidW5sZXNzIiwKCQkJCSJsZXQtZW51bWVyYXRlIiwKCQkJCSJjbGFzcyIsCgkJCQkiY2xhc3MqIiwKCQkJCSJjbGFzcy1hc2kiLAoJCQkJImNsYXNzLWFzaSoiLAoJCQkJImNsYXNzKi9uYW1lcyIsCgkJCQkiY2xhc3MxMDAiLAoJCQkJImNsYXNzMTAwKiIsCgkJCQkiY2xhc3MxMDAtYXNpIiwKCQkJCSJjbGFzczEwMC1hc2kqIiwKCQkJCSJjbGFzczEwMCovbmFtZXMiLAoJCQkJInJlYyIsCgkJCQkibWFrZS1vYmplY3QiLAoJCQkJIm1peGluIiwKCQkJCSJkZWZpbmUtc29tZSIsCgkJCQkiZG8iLAoJCQkJIm9wdC1sYW1iZGEiLAoJCQkJInNlbmQqIiwKCQkJCSJ3aXRoLW1ldGhvZCIsCgkJCQkiZGVmaW5lLXJlY29yZCIsCgkJCQkiY2F0Y2giLAoJCQkJInNoYXJlZCIsCgkJCQkidW5pdC9zaWciLAoJCQkJInVuaXQvbGFuZyIsCgkJCQkid2l0aC1oYW5kbGVycyIsCgkJCQkiaW50ZXJmYWNlIiwKCQkJCSJwYXJhbWV0ZXJpemUiLAoJCQkJImNhbGwtd2l0aC1pbnB1dC1maWxlIiwKCQkJCSJjYWxsLXdpdGgtaW5wdXQtZmlsZSoiLAoJCQkJIndpdGgtaW5wdXQtZnJvbS1maWxlIiwKCQkJCSJ3aXRoLWlucHV0LWZyb20tcG9ydCIsCgkJCQkiY2FsbC13aXRoLW91dHB1dC1maWxlIiwKCQkJCSJ3aXRoLW91dHB1dC10by1maWxlIiwKCQkJCSJ3aXRoLW91dHB1dC10by1wb3J0IiwKCQkJCSJmb3ItYWxsIl07CgoKICAgIHZhciBpc0xhbWJkYUxpa2VDb250ZXh0ID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGogPSBmaW5kQ29udGV4dEVsZW1lbnQoY29udGV4dCwgMCk7CglpZiAoaiA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlOyB9CglyZXR1cm4gKGlzTWVtYmVyKGNvbnRleHRbal0udmFsdWUsIExBTUJEQV9MSUtFX0tFWVdPUkRTKSk7CiAgICB9OwoKCiAgICB2YXIgbGFtYmRhTGlrZUluZGVudGF0aW9uID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGkgPSBmaW5kQ29udGV4dEVsZW1lbnQoY29udGV4dCwgMCk7CglpZiAoaSA9PT0gLTEpIHsgcmV0dXJuIDA7IH0KCXZhciBqID0gZmluZENvbnRleHRFbGVtZW50KGNvbnRleHQsIDEpOwoJaWYgKGogPT09IC0xKSB7IAoJICAgIHJldHVybiBjb250ZXh0W2ldLmNvbHVtbiArIDQ7IAoJfSBlbHNlIHsKCSAgICByZXR1cm4gY29udGV4dFtpXS5jb2x1bW4gKyAxOwoJfQogICAgfTsKCgoKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAvLyBIZWxwZXJzCiAgICB2YXIgaXNNZW1iZXIgPSBmdW5jdGlvbih4LCBsKSB7Cglmb3IgKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspIHsKCSAgICBpZiAoeCA9PT0gbFtpXSkgeyByZXR1cm4gdHJ1ZTsgfQoJfQoJcmV0dXJuIGZhbHNlOwogICAgfTsKCgoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICB2YXIgcGFpciA9IGZ1bmN0aW9uKHgsIHkpIHsKCXJldHVybiBbeCx5XTsKICAgIH07CiAgICB2YXIgRU1QVFlfUEFJUiA9IFtdOwogICAgdmFyIHBhaXJGaXJzdCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIHBbMF07IH0KICAgIHZhciBwYWlyUmVzdCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIHBbMV07IH0KICAgIHZhciBpc0VtcHR5UGFpciA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAgPT09IEVNUFRZX1BBSVI7IH0KICAgIHZhciBwYWlyTGVuZ3RoID0gZnVuY3Rpb24ocCkgewoJdmFyIGwgPSAwOwoJd2hpbGUgKCEgaXNFbXB0eVBhaXIocCkpIHsKCSAgICBwID0gcGFpclJlc3QocCk7Cgl9CglyZXR1cm4gbDsKICAgIH07CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKCgoKICAgIHZhciBpbmRlbnRUbyA9IGZ1bmN0aW9uKHRva2VuU3RhY2spIHsKCXJldHVybiBmdW5jdGlvbih0b2tlblRleHQsIGN1cnJlbnRJbmRlbnRhdGlvbiwgZGlyZWN0aW9uKSB7CgoJICAgIC8vIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYW4gdW5jbG9zZWQgdG9rZW4sCgkgICAgLy8gZG8gbm90IGNoYW5nZSBpbmRlbnRhdGlvbi4KCSAgICBpZiAoKCEgaXNFbXB0eVBhaXIodG9rZW5TdGFjaykpICYmCgkJKCEgaXNFbXB0eVBhaXIocGFpclJlc3QodG9rZW5TdGFjaykpKSAmJgoJCShwYWlyRmlyc3QocGFpclJlc3QodG9rZW5TdGFjaykpLmlzVW5jbG9zZWQpKSB7CgkJcmV0dXJuIGN1cnJlbnRJbmRlbnRhdGlvbjsKCSAgICB9CgoJICAgIHZhciBpbmRlbnRhdGlvbkNvbnRleHQgPSAKCQlnZXRJbmRlbnRhdGlvbkNvbnRleHQodG9rZW5TdGFjayk7CgkgICAgcmV0dXJuIGNhbGN1bGF0ZUluZGVudGF0aW9uRnJvbUNvbnRleHQoaW5kZW50YXRpb25Db250ZXh0LAoJCQkJCQkgICBjdXJyZW50SW5kZW50YXRpb24pOwkJCgl9OwogICAgfTsKCgogICAgdmFyIHN0YXJ0UGFyc2UgPSBmdW5jdGlvbihzb3VyY2UpIHsKCXNvdXJjZSA9IHRva2VuaXplU2NoZW1lKHNvdXJjZSk7CQoJdmFyIHRva2VuU3RhY2sgPSBFTVBUWV9QQUlSOwoJdmFyIGl0ZXIgPSB7CgkgICAgbmV4dDogZnVuY3Rpb24oKSB7CgkJdmFyIHRvayA9IHNvdXJjZS5uZXh0KCk7CgkJdG9rZW5TdGFjayA9IHBhaXIodG9rLCB0b2tlblN0YWNrKTsKCQlpZiAodG9rLnR5cGUgPT09ICJ3aGl0ZXNwYWNlIikgewoJCSAgICBpZiAodG9rLnZhbHVlID09PSAiXG4iKSB7CgkJCXRvay5pbmRlbnRhdGlvbiA9IGluZGVudFRvKHRva2VuU3RhY2spOwoJCSAgICB9CgkJfQoJCXJldHVybiB0b2s7CgkgICAgfSwKCgkgICAgY29weTogZnVuY3Rpb24oKSB7CgkJdmFyIF90b2tlblN0YWNrID0gdG9rZW5TdGFjazsKCQl2YXIgX3Rva2VuU3RhdGUgPSBzb3VyY2Uuc3RhdGU7CgkJcmV0dXJuIGZ1bmN0aW9uKF9zb3VyY2UpIHsKCQkgICAgdG9rZW5TdGFjayA9IF90b2tlblN0YWNrOwoJCSAgICBzb3VyY2UgPSB0b2tlbml6ZVNjaGVtZShfc291cmNlLCBfdG9rZW5TdGF0ZSk7CgkJICAgIHJldHVybiBpdGVyOwoJCX07CgkgICAgfQoJfTsKCXJldHVybiBpdGVyOwogICAgfTsKICAgIHJldHVybiB7IG1ha2U6IHN0YXJ0UGFyc2UgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/js/tokenizescheme.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBTY2hlbWUgY29kZSAqLwoKCgoKLyoqCiAgVE9ETzogZm9sbG93IHRoZSBkZWZpbml0aW9ucyBpbjoKCiAgICAgIGh0dHA6Ly9kb2NzLnJhY2tldC1sYW5nLm9yZy9yZWZlcmVuY2UvcmVhZGVyLmh0bWwKCiAgdG8gdGhlIGxldHRlcjsgYXQgdGhlIG1vbWVudCwgd2UndmUganVzdCBkb25lIHNvbWV0aGluZyBxdWljay1hbmQtZGlydHkuCgoqLwoKCnZhciB0b2tlbml6ZVNjaGVtZSA9IChmdW5jdGlvbigpIHsKICAgIHZhciBpc1doaXRlU3BhY2UgPSBmdW5jdGlvbihjaCkgewoJLy8gVGhlIG1lc3N5IHJlZ2V4cCBpcyBiZWNhdXNlIElFJ3MgcmVnZXhwIG1hdGNoZXIgaXMgb2YgdGhlCgkvLyBvcGluaW9uIHRoYXQgbm9uLWJyZWFraW5nIHNwYWNlcyBhcmUgbm8gd2hpdGVzcGFjZS4KCXJldHVybiBjaCAhPSAiXG4iICYmIC9eW1xzXHUwMGEwXSokLy50ZXN0KGNoKTsKICAgIH07CgoKICAgIC8vIHNjYW5VbnRpbFVuZXNjYXBlZDogc3RyaW5nLXN0cmVhbSBjaGFyIC0+IGJvb2xlYW4KICAgIC8vIEFkdmFuY2VzIHRoZSBzdHJlYW0gdW50aWwgdGhlIGdpdmVuIGNoYXJhY3RlciAobm90IHByZWNlZGVkIGJ5IGEKICAgIC8vIGJhY2tzbGFzaCkgaXMgZW5jb3VudGVyZWQuCiAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGl0IGVuZCBvZiBsaW5lIHdpdGhvdXQgY2xvc2luZy4KICAgIC8vIFJldHVybnMgZmFsc2Ugb3RoZXJ3aXNlLgogICAgdmFyIHNjYW5VbnRpbFVuZXNjYXBlZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZW5kKSB7Cgl2YXIgZXNjYXBlZCA9IGZhbHNlOwoJd2hpbGUgKHRydWUpIHsKCSAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKSB7CgkJcmV0dXJuIHRydWU7CgkgICAgfQoJICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKCSAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2FwZWQpCgkJcmV0dXJuIGZhbHNlOwoJICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBuZXh0ID09ICJcXCI7Cgl9CglyZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKCiAgICAvLyBBZHZhbmNlIHRoZSBzdHJlYW0gdW50aWwgZW5kbGluZS4KICAgIHZhciBzY2FuVW50aWxFbmRsaW5lID0gZnVuY3Rpb24oc291cmNlLCBlbmQpIHsKCXdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CgkgICAgc291cmNlLm5leHQoKTsKCX0KICAgIH0KCiAgICAKICAgIC8vIFNvbWUgaGVscGVyIHJlZ2V4cHMKICAgIHZhciBpc0hleERpZ2l0ID0gL1swLTlBLUZhLWZdLzsKICAgIAoKICAgIHZhciB3aGl0ZXNwYWNlQ2hhciA9IG5ldyBSZWdFeHAoIltcXHNcXHUwMGEwXSIpOwogICAgCiAgICB2YXIgaXNEZWxpbWl0ZXJDaGFyID0gCgluZXcgUmVnRXhwKCJbXFxzXFxcKFxcXClcXFxbXFxcXVxcXHtcXFx9XFxcIlxcXCxcXFwnXFxcYFxcXDtdIik7CgogICAgdmFyIGlzTm90RGVsaW1pdGVyQ2hhciA9IAoJbmV3IFJlZ0V4cCgiW15cXHNcXFwoXFxcKVxcXFtcXFxdXFxce1xcXH1cXFwiXFxcLFxcXCdcXFxgXFxcO10iKTsKCgogICAgdmFyIG51bWJlckhlYWRlciA9ICgiKD86KD86XFxkK1xcL1xcZCspfCIrCgkJCSggICIoPzooPzpcXGQrXFwuXFxkK3xcXGQrXFwufFxcLlxcZCspKD86W2VFXVsrXFwtXT9cXGQrKT8pfCIpKwoJCQkoICAiKD86XFxkKyg/OltlRV1bK1xcLV0/XFxkKyk/KSkiKSk7CiAgICB2YXIgbnVtYmVyUGF0dGVybnMgPSBbCgkvLyBjb21wbGV4IG51bWJlcnMKCW5ldyBSZWdFeHAoIl4oKD86KD86XFwjW2VpXSk/WytcXC1dPyIgKyBudW1iZXJIZWFkZXIgKyIpPyIKCQkgICArICIoPzpbK1xcLV0iICsgbnVtYmVySGVhZGVyICsgIilpJCkiKSwKCSAgICAvXigoPzpcI1tlaV0pP1srLV1pbmYuMCkkLywKCSAgICAvXigoPzpcI1tlaV0pP1srLV1uYW4uMCkkLywKCW5ldyBSZWdFeHAoIl4oKD86XFwjW2VpXSk/WytcXC1dPyIgKyBudW1iZXJIZWFkZXIgKyAiJCkiKSwKCW5ldyBSZWdFeHAoIl4wW3hYXVswLTlBLUZhLWZdKyQiKV07CiAgIAoKICAgIC8vIGxvb2tzTGlrZU51bWJlcjogc3RyaW5nIC0+IGJvb2xlYW4KICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdHJpbmcgcyBsb29rcyBsaWtlIGEgbnVtYmVyLgogICAgdmFyIGxvb2tzTGlrZU51bWJlciA9IGZ1bmN0aW9uKHMpIHsKCWZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyUGF0dGVybnMubGVuZ3RoOyBpKyspIHsKCSAgICBpZiAobnVtYmVyUGF0dGVybnNbaV0udGVzdChzKSkgewoJCXJldHVybiB0cnVlOwoJICAgIH0KCX0KCXJldHVybiBmYWxzZTsKICAgIH07CgoKCiAgICB2YXIgVU5DTE9TRURfU1RSSU5HID0gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewoJdmFyIHJlYWROZXdsaW5lID0gZnVuY3Rpb24oKSB7CgkgICAgdmFyIGNvbnRlbnQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgcmV0dXJuIHsgdHlwZTond2hpdGVzcGFjZScsIHN0eWxlOid3aGl0ZXNwYWNlJywgY29udGVudDogY29udGVudCB9OwoJfTsKCgl2YXIgY2ggPSBzb3VyY2UucGVlaygpOwoJaWYgKGNoID09PSAnXG4nKSB7CgkgICAgc291cmNlLm5leHQoKTsKCSAgICByZXR1cm4gcmVhZE5ld2xpbmUoKTsKCX0gZWxzZSB7CgkgICAgdmFyIGlzVW5jbG9zZWRTdHJpbmcgPSBzY2FuVW50aWxVbmVzY2FwZWQoc291cmNlLCAnIicpOwoJICAgIGlmIChpc1VuY2xvc2VkU3RyaW5nKSB7CgkJc2V0U3RhdGUoVU5DTE9TRURfU1RSSU5HKTsKCSAgICB9IGVsc2UgewoJCXNldFN0YXRlKFNUQVJUKTsKCSAgICB9CgkgICAgdmFyIGNvbnRlbnQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJzY2hlbWUtc3RyaW5nIiwgY29udGVudDogY29udGVudCwKCQkgICAgaXNVbmNsb3NlZDogaXNVbmNsb3NlZFN0cmluZ307Cgl9CiAgICB9OwoKCgogICAgdmFyIFNUQVJUID0gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewoJdmFyIHJlYWRIZXhOdW1iZXIgPSBmdW5jdGlvbigpewoJICAgIHNvdXJjZS5uZXh0KCk7IC8vIHNraXAgdGhlICd4JwoJICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzSGV4RGlnaXQpOwoJICAgIHJldHVybiB7dHlwZTogIm51bWJlciIsIHN0eWxlOiAic2NoZW1lLW51bWJlciJ9OwoJfTsKCgoJdmFyIHJlYWROdW1iZXIgPSBmdW5jdGlvbigpIHsKCSAgICBzY2FuU2ltcGxlTnVtYmVyKCk7CgkgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi0iKSB8fCBzb3VyY2UuZXF1YWxzKCIrIikpIHsKCQlzb3VyY2UubmV4dCgpOwoJICAgIH0KCSAgICBzY2FuU2ltcGxlTnVtYmVyKCk7CgkgICAgaWYgKHNvdXJjZS5lcXVhbHMoImkiKSkgewoJCXNvdXJjZS5uZXh0KCk7CgkgICAgfQoJICAgIHJldHVybiB7dHlwZTogIm51bWJlciIsIHN0eWxlOiAic2NoZW1lLW51bWJlciJ9OwoJfTsKCgoJLy8gUmVhZCBhIHdvcmQsIGxvb2sgaXQgdXAgaW4ga2V5d29yZHMuIElmIG5vdCBmb3VuZCwgaXQgaXMgYQoJLy8gdmFyaWFibGUsIG90aGVyd2lzZSBpdCBpcyBhIGtleXdvcmQgb2YgdGhlIHR5cGUgZm91bmQuCgl2YXIgcmVhZFdvcmRPck51bWJlciA9IGZ1bmN0aW9uKCkgewoJICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzTm90RGVsaW1pdGVyQ2hhcik7CgkgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgaWYgKGxvb2tzTGlrZU51bWJlcih3b3JkKSkgewoJCXJldHVybiB7dHlwZTogIm51bWJlciIsIHN0eWxlOiAic2NoZW1lLW51bWJlciIsIGNvbnRlbnQ6IHdvcmR9OwoJICAgIH0gZWxzZSB7CgkJcmV0dXJuIHt0eXBlOiAidmFyaWFibGUiLCBzdHlsZTogInNjaGVtZS1zeW1ib2wiLCBjb250ZW50OiB3b3JkfTsKCSAgICB9Cgl9OwoKCgl2YXIgcmVhZFN0cmluZyA9IGZ1bmN0aW9uKHF1b3RlKSB7CgkgICAgdmFyIGlzVW5jbG9zZWRTdHJpbmcgPSBzY2FuVW50aWxVbmVzY2FwZWQoc291cmNlLCBxdW90ZSk7CgkgICAgaWYgKGlzVW5jbG9zZWRTdHJpbmcpIHsKCQlzZXRTdGF0ZShVTkNMT1NFRF9TVFJJTkcpOwoJICAgIH0KCSAgICB2YXIgd29yZCA9IHNvdXJjZS5nZXQoKTsKCSAgICByZXR1cm4ge3R5cGU6ICJzdHJpbmciLCBzdHlsZTogInNjaGVtZS1zdHJpbmciLCBjb250ZW50OiB3b3JkLAoJCSAgICBpc1VuY2xvc2VkOiBpc1VuY2xvc2VkU3RyaW5nfTsKCX07CgoKCXZhciByZWFkUG91bmQgPSBmdW5jdGlvbigpIHsKCSAgICB2YXIgdGV4dDsKCSAgICAvLyBGSVhNRTogaGFuZGxlIHNwZWNpYWwgdGhpbmdzIGhlcmUKCSAgICBpZiAoc291cmNlLmVxdWFscygiOyIpKSB7CgkJc291cmNlLm5leHQoKTsKCQl0ZXh0ID0gc291cmNlLmdldCgpOwoJCXJldHVybiB7dHlwZTogdGV4dCwgCgkJCXN0eWxlOiJzY2hlbWUtc3ltYm9sIiwKCQkJY29udGVudDogdGV4dH07CgkgICAgfSBlbHNlIHsKCQl0ZXh0ID0gc291cmNlLmdldCgpOwoKCQlyZXR1cm4ge3R5cGUgOiAic3ltYm9sIiwKCQkJc3R5bGU6ICJzY2hlbWUtc3ltYm9sIiwKCQkJY29udGVudDogdGV4dH07CgkgICAgfQoKCX07CgkKCXZhciByZWFkTGluZUNvbW1lbnQgPSBmdW5jdGlvbigpIHsKCSAgICBzY2FuVW50aWxFbmRsaW5lKHNvdXJjZSk7CgkgICAgdmFyIHRleHQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgcmV0dXJuIHsgdHlwZTogImNvbW1lbnQiLCBzdHlsZTogInNjaGVtZS1jb21tZW50IiwgY29udGVudDogdGV4dH07CQoJfTsKCgoJdmFyIHJlYWRXaGl0ZXNwYWNlID0gZnVuY3Rpb24oKSB7CgkgICAgc291cmNlLm5leHRXaGlsZShpc1doaXRlU3BhY2UpOwoJICAgIHZhciBjb250ZW50ID0gc291cmNlLmdldCgpOwoJICAgIHJldHVybiB7IHR5cGU6ICd3aGl0ZXNwYWNlJywgc3R5bGU6J3doaXRlc3BhY2UnLCBjb250ZW50OiBjb250ZW50IH07Cgl9OwoKCXZhciByZWFkTmV3bGluZSA9IGZ1bmN0aW9uKCkgewoJICAgIHZhciBjb250ZW50ID0gc291cmNlLmdldCgpOwoJICAgIHJldHVybiB7IHR5cGU6J3doaXRlc3BhY2UnLCBzdHlsZTond2hpdGVzcGFjZScsIGNvbnRlbnQ6IGNvbnRlbnQgfTsKCX07CgoKCS8vIEZldGNoIHRoZSBuZXh0IHRva2VuLiBEaXNwYXRjaGVzIG9uIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUKCS8vIHN0cmVhbSwgb3IgZmlyc3QgdHdvIGNoYXJhY3RlcnMgd2hlbiB0aGUgZmlyc3QgaXMgYSBzbGFzaC4KCXZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CglpZiAoY2ggPT09ICdcbicpIHsKCSAgICByZXR1cm4gcmVhZE5ld2xpbmUoKTsKCX0gZWxzZSBpZiAod2hpdGVzcGFjZUNoYXIudGVzdChjaCkpIHsKCSAgICByZXR1cm4gcmVhZFdoaXRlc3BhY2UoKTsKCX0gZWxzZSBpZiAoY2ggPT09ICIjIikgewoJICAgIHJldHVybiByZWFkUG91bmQoKTsKCX0gZWxzZSBpZiAoY2ggPT09JzsnKSB7CgkgICAgcmV0dXJuIHJlYWRMaW5lQ29tbWVudCgpOwoJfSBlbHNlIGlmIChjaCA9PT0gIlwiIikgewoJICAgIHJldHVybiByZWFkU3RyaW5nKGNoKTsKCX0gZWxzZSBpZiAoaXNEZWxpbWl0ZXJDaGFyLnRlc3QoY2gpKSB7CgkgICAgcmV0dXJuIHt0eXBlOiBjaCwgc3R5bGU6ICJzY2hlbWUtcHVuY3R1YXRpb24ifTsKCX0gZWxzZSB7CgkgICAgcmV0dXJuIHJlYWRXb3JkT3JOdW1iZXIoKTsKCX0KICAgIH0KCgoKCgoKCiAgICB2YXIgbWFrZVRva2VuaXplciA9IGZ1bmN0aW9uKHNvdXJjZSwgc3RhdGUpIHsKCS8vIE5ld2xpbmVzIGFyZSBhbHdheXMgYSBzZXBhcmF0ZSB0b2tlbi4KCgl2YXIgdG9rZW5pemVyID0gewoJICAgIHN0YXRlOiBzdGF0ZSwKCgkgICAgdGFrZTogZnVuY3Rpb24odHlwZSkgewogCQlpZiAodHlwZW9mKHR5cGUpID09ICJzdHJpbmciKQogCQkgICAgdHlwZSA9IHtzdHlsZTogdHlwZSwgdHlwZTogdHlwZX07CgogCQl0eXBlLmNvbnRlbnQgPSAodHlwZS5jb250ZW50IHx8ICIiKSArIHNvdXJjZS5nZXQoKTsKCQl0eXBlLnZhbHVlID0gdHlwZS5jb250ZW50OwoJCXJldHVybiB0eXBlOwoJICAgIH0sCgoJICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCQlpZiAoIXNvdXJjZS5tb3JlKCkpIHRocm93IFN0b3BJdGVyYXRpb247CgoJCXZhciB0eXBlOwoJCXdoaWxlICghdHlwZSkgewoJCSAgICB0eXBlID0gdG9rZW5pemVyLnN0YXRlKHNvdXJjZSwgZnVuY3Rpb24ocykgewoJCQl0b2tlbml6ZXIuc3RhdGUgPSBzOwoJCSAgICB9KTsKCQl9CgkJdmFyIHJlc3VsdCA9IHRoaXMudGFrZSh0eXBlKTsKCQlyZXR1cm4gcmVzdWx0OwkJICAgIAoJICAgIH0KCX07CglyZXR1cm4gdG9rZW5pemVyOwogICAgfTsKCgogICAgLy8gVGhlIGV4dGVybmFsIGludGVyZmFjZSB0byB0aGUgdG9rZW5pemVyLgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewoJcmV0dXJuIG1ha2VUb2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IFNUQVJUKTsKICAgIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAxMCBEYW5ueSBZb28KCiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQogZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgoKIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCiByZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgoKIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKICAgIG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcwogICAgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdAogICAgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgoKIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QKICAgIG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCgogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCiAgICBkaXN0cmlidXRpb24uCgogRGFubnkgWW9vCiBkeW9vQGNzLndwaS5lZHUK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/css/sqlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uc3FsLWtleXdvcmQgewogIGNvbG9yOiBibHVlOwp9CgpzcGFuLnNxbC12YXIgewogIGNvbG9yOiByZWQ7Cn0KCnNwYW4uc3FsLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLnNxbC1saXRlcmFsIHsKICBjb2xvcjogZ3JlZW47Cn0KCnNwYW4uc3FsLW9wZXJhdG9yIHsKICBjb2xvcjogYmx1ZTsKfQoKc3Bhbi5zcWwtd29yZCB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnNxbC1mdW5jdGlvbiB7CiAgY29sb3I6IGRhcmtvcmFuZ2U7Cn0KCnNwYW4uc3FsLXR5cGUgewogIGNvbG9yOiBwdXJwbGU7Cn0KCnNwYW4uc3FsLXNlcGFyYXRvciB7CiAgY29sb3I6ICM2NjY2NjY7Cn0KCnNwYW4uc3FsLW51bWJlciB7CiAgY29sb3I6IGRhcmtjeWFuOwp9CgoK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogU1FMIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5EZW1vbnN0cmF0aW9uIG9mIDxhIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MgU1FMCmhpZ2hsaWdodGVyLjwvcD4KCjxwPldyaXR0ZW4gYnkgSm9obiBCZW5lZGlrdHNzb24gKDxhIGhyZWY9IkxJQ0VOU0UiPmxpY2Vuc2U8L2E+KS48L3A+Cgo8ZGl2IGNsYXNzPSJib3JkZXIiPgo8dGV4dGFyZWEgaWQ9ImNvZGUiIGNvbHM9IjEyMCIgcm93cz0iNTAiPgpjcmVhdGUgdGFibGUgaWYgbm90IGV4aXN0cyB0YWJsZTEoCiAgYSAgYmlnaW50KDEzKSBub3QgbnVsbCBwcmltYXJ5IGtleSwKICBiICBjaGFyKDQpICAgIG5vdCBudWxsLAogIGMgIGNoYXIoNTApICAgbm90IG51bGwsCiAgZCAgaW50KDkpICAgICBub3QgbnVsbCwKKTsKCmluc2VydCBpbnRvIHRhYmxlMSB2YWx1ZXMgKDEyMzQ1Njc4OTAxMjMsICJiIiwgImMiLCAwKTsKCnNlbGVjdCBmcm9tX3VuaXh0aW1lKGEvMTAwMCksIGIsIGMsIG1pbihkKSBhcyBgdXNpbmdgCiAgZnJvbSB0YWJsZTEgdDEKICBsZWZ0IGpvaW4gdGFibGUyIHQyIHVzaW5nIChhKQogIC0tIGlubmVyIGpvaW4gdGFibGUzIHQzIG9uIHQzLl9hID0gdDEuYQogIGpvaW4gKAogICAgc2VsZWN0IGEsIGIsIGMKICAgIGZyb20gZGF0YQogICkgYXMgZm9vIG9uIGZvby5hID0gdDEuYQoKICB3aGVyZSBhICZndDsgMTAKICBhbmQgYiBsaWtlICclZm9vJwogIG9yIGMgPSAzLjE0MTU5CiAgYW5kIGQgJmx0OyAtMTUuNwogIG9yZGVyIGJ5IDEgZGVzYwo7CgpzZWxlY3QgQHRvdGFsIDo9IHN1bShkKSBmcm9tIGRhdGE7CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgnY29kZScsIHsKICAgIGhlaWdodDogIjQ1MHB4IiwKICAgIHBhcnNlcmZpbGU6ICIuLi9jb250cmliL3NxbC9qcy9wYXJzZXNxbC5qcyIsCiAgICBzdHlsZXNoZWV0OiAiY3NzL3NxbGNvbG9ycy5jc3MiLAogICAgcGF0aDogIi4uLy4uL2pzLyIsCiAgICB0ZXh0V3JhcHBpbmc6IGZhbHNlCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/js/parsesql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFNxbFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CgogIGZ1bmN0aW9uIHdvcmRSZWdleHAod29yZHMpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKCJeKD86IiArIHdvcmRzLmpvaW4oInwiKSArICIpJCIsICJpIik7CiAgfQoKICB2YXIgZnVuY3Rpb25zID0gd29yZFJlZ2V4cChbCiAgICAiYWJzIiwgImFjb3MiLCAiYWRkZGF0ZSIsICJhZXNfZW5jcnlwdCIsICJhZXNfZGVjcnlwdCIsICJhc2NpaSIsCiAgICAiYXNpbiIsICJhdGFuIiwgImF0YW4yIiwgImF2ZyIsICJiZW5jaG1hcmsiLCAiYmluIiwgImJpdF9hbmQiLAogICAgImJpdF9jb3VudCIsICJiaXRfbGVuZ3RoIiwgImJpdF9vciIsICJjYXN0IiwgImNlaWwiLCAiY2VpbGluZyIsCiAgICAiY2hhcl9sZW5ndGgiLCAiY2hhcmFjdGVyX2xlbmd0aCIsICJjb2FsZXNjZSIsICJjb25jYXQiLCAiY29uY2F0X3dzIiwKICAgICJjb25uZWN0aW9uX2lkIiwgImNvbnYiLCAiY29udmVydCIsICJjb3MiLCAiY290IiwgImNvdW50IiwgImN1cmRhdGUiLAogICAgImN1cnJlbnRfZGF0ZSIsICJjdXJyZW50X3RpbWUiLCAiY3VycmVudF90aW1lc3RhbXAiLCAiY3VycmVudF91c2VyIiwKICAgICJjdXJ0aW1lIiwgImRhdGFiYXNlIiwgImRhdGVfYWRkIiwgImRhdGVfZm9ybWF0IiwgImRhdGVfc3ViIiwKICAgICJkYXluYW1lIiwgImRheW9mbW9udGgiLCAiZGF5b2Z3ZWVrIiwgImRheW9meWVhciIsICJkZWNvZGUiLCAiZGVncmVlcyIsCiAgICAiZGVzX2VuY3J5cHQiLCAiZGVzX2RlY3J5cHQiLCAiZWx0IiwgImVuY29kZSIsICJlbmNyeXB0IiwgImV4cCIsCiAgICAiZXhwb3J0X3NldCIsICJleHRyYWN0IiwgImZpZWxkIiwgImZpbmRfaW5fc2V0IiwgImZsb29yIiwgImZvcm1hdCIsCiAgICAiZm91bmRfcm93cyIsICJmcm9tX2RheXMiLCAiZnJvbV91bml4dGltZSIsICJnZXRfbG9jayIsICJncmVhdGVzdCIsCiAgICAiZ3JvdXBfdW5pcXVlX3VzZXJzIiwgImhleCIsICJpZm51bGwiLCAiaW5ldF9hdG9uIiwgImluZXRfbnRvYSIsICJpbnN0ciIsCiAgICAiaW50ZXJ2YWwiLCAiaXNfZnJlZV9sb2NrIiwgImlzbnVsbCIsICJsYXN0X2luc2VydF9pZCIsICJsY2FzZSIsICJsZWFzdCIsCiAgICAibGVmdCIsICJsZW5ndGgiLCAibG4iLCAibG9hZF9maWxlIiwgImxvY2F0ZSIsICJsb2ciLCAibG9nMiIsICJsb2cxMCIsCiAgICAibG93ZXIiLCAibHBhZCIsICJsdHJpbSIsICJtYWtlX3NldCIsICJtYXN0ZXJfcG9zX3dhaXQiLCAibWF4IiwgIm1kNSIsCiAgICAibWlkIiwgIm1pbiIsICJtb2QiLCAibW9udGhuYW1lIiwgIm5vdyIsICJudWxsaWYiLCAib2N0IiwgIm9jdGV0X2xlbmd0aCIsCiAgICAib3JkIiwgInBhc3N3b3JkIiwgInBlcmlvZF9hZGQiLCAicGVyaW9kX2RpZmYiLCAicGkiLCAicG9zaXRpb24iLAogICAgInBvdyIsICJwb3dlciIsICJxdWFydGVyIiwgInF1b3RlIiwgInJhZGlhbnMiLCAicmFuZCIsICJyZWxlYXNlX2xvY2siLAogICAgInJlcGVhdCIsICJyZXZlcnNlIiwgInJpZ2h0IiwgInJvdW5kIiwgInJwYWQiLCAicnRyaW0iLCAic2VjX3RvX3RpbWUiLAogICAgInNlc3Npb25fdXNlciIsICJzaGEiLCAic2hhMSIsICJzaWduIiwgInNpbiIsICJzb3VuZGV4IiwgInNwYWNlIiwgInNxcnQiLAogICAgInN0ZCIsICJzdGRkZXYiLCAic3RyY21wIiwgInN1YmRhdGUiLCAic3Vic3RyaW5nIiwgInN1YnN0cmluZ19pbmRleCIsCiAgICAic3VtIiwgInN5c2RhdGUiLCAic3lzdGVtX3VzZXIiLCAidGFuIiwgInRpbWVfZm9ybWF0IiwgInRpbWVfdG9fc2VjIiwKICAgICJ0b19kYXlzIiwgInRyaW0iLCAidWNhc2UiLCAidW5pcXVlX3VzZXJzIiwgInVuaXhfdGltZXN0YW1wIiwgInVwcGVyIiwKICAgICJ1c2VyIiwgInZlcnNpb24iLCAid2VlayIsICJ3ZWVrZGF5IiwgInllYXJ3ZWVrIgogIF0pOwoKICB2YXIga2V5d29yZHMgPSB3b3JkUmVnZXhwKFsKICAgICJhbHRlciIsICJncmFudCIsICJyZXZva2UiLCAicHJpbWFyeSIsICJrZXkiLCAidGFibGUiLCAic3RhcnQiLCAidG9wIiwKICAgICJ0cmFuc2FjdGlvbiIsICJzZWxlY3QiLCAidXBkYXRlIiwgImluc2VydCIsICJkZWxldGUiLCAiY3JlYXRlIiwgImRlc2NyaWJlIiwKICAgICJmcm9tIiwgImludG8iLCAidmFsdWVzIiwgIndoZXJlIiwgImpvaW4iLCAiaW5uZXIiLCAibGVmdCIsICJuYXR1cmFsIiwgImFuZCIsCiAgICAib3IiLCAiaW4iLCAibm90IiwgInhvciIsICJsaWtlIiwgInVzaW5nIiwgIm9uIiwgIm9yZGVyIiwgImdyb3VwIiwgImJ5IiwKICAgICJhc2MiLCAiZGVzYyIsICJsaW1pdCIsICJvZmZzZXQiLCAidW5pb24iLCAiYWxsIiwgImFzIiwgImRpc3RpbmN0IiwgInNldCIsCiAgICAiY29tbWl0IiwgInJvbGxiYWNrIiwgInJlcGxhY2UiLCAidmlldyIsICJkYXRhYmFzZSIsICJzZXBhcmF0b3IiLCAiaWYiLAogICAgImV4aXN0cyIsICJudWxsIiwgInRydW5jYXRlIiwgInN0YXR1cyIsICJzaG93IiwgImxvY2siLCAidW5pcXVlIiwgImhhdmluZyIKICBdKTsKCiAgdmFyIHR5cGVzID0gd29yZFJlZ2V4cChbCiAgICAiYmlnaW50IiwgImJpbmFyeSIsICJiaXQiLCAiYmxvYiIsICJib29sIiwgImNoYXIiLCAiY2hhcmFjdGVyIiwgImRhdGUiLAogICAgImRhdGV0aW1lIiwgImRlYyIsICJkZWNpbWFsIiwgImRvdWJsZSIsICJlbnVtIiwgImZsb2F0IiwgImZsb2F0NCIsICJmbG9hdDgiLAogICAgImludCIsICJpbnQxIiwgImludDIiLCAiaW50MyIsICJpbnQ0IiwgImludDgiLCAiaW50ZWdlciIsICJsb25nIiwgImxvbmdibG9iIiwKICAgICJsb25ndGV4dCIsICJtZWRpdW1ibG9iIiwgIm1lZGl1bWludCIsICJtZWRpdW10ZXh0IiwgIm1pZGRsZWludCIsICJuY2hhciIsCiAgICAibnVtZXJpYyIsICJyZWFsIiwgInNldCIsICJzbWFsbGludCIsICJ0ZXh0IiwgInRpbWUiLCAidGltZXN0YW1wIiwgInRpbnlibG9iIiwKICAgICJ0aW55aW50IiwgInRpbnl0ZXh0IiwgInZhcmJpbmFyeSIsICJ2YXJjaGFyIiwgInllYXIiCiAgXSk7CgogIHZhciBvcGVyYXRvcnMgPSB3b3JkUmVnZXhwKFsKICAgICI6PSIsICI8IiwgIjw9IiwgIj09IiwgIjw+IiwgIj4iLCAiPj0iLCAibGlrZSIsICJybGlrZSIsICJpbiIsICJ4b3IiLCAiYmV0d2VlbiIKICBdKTsKCiAgdmFyIG9wZXJhdG9yQ2hhcnMgPSAvWyorXC08Pj0mfDpcL10vOwoKICB2YXIgdG9rZW5pemVTcWwgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICBpZiAoY2ggPT0gIkAiIHx8IGNoID09ICIkIikgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcZF0vKTsKICAgICAgICByZXR1cm4gInNxbC12YXIiOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICJbIil7CgkgICAgc2V0U3RhdGUoaW5BbGlhcyhjaCkpCgkgIAlyZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIiB8fCBjaCA9PSAiYCIpIHsKICAgICAgICBzZXRTdGF0ZShpbkxpdGVyYWwoY2gpKTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiLCIgfHwgY2ggPT0gIjsiKSB7CiAgICAgICAgcmV0dXJuICJzcWwtc2VwYXJhdG9yIgogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICctJykgewogICAgICAgIGlmIChzb3VyY2UucGVlaygpID09ICItIikgewogICAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICByZXR1cm4gInNxbC1jb21tZW50IjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoL1xkLy50ZXN0KHNvdXJjZS5wZWVrKCkpKSB7CiAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvXGQvKTsKICAgICAgICAgIGlmIChzb3VyY2UucGVlaygpID09ICcuJykgewogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvXGQvKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiAic3FsLW51bWJlciI7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiAic3FsLW9wZXJhdG9yIjsKICAgICAgfQogICAgICBlbHNlIGlmIChvcGVyYXRvckNoYXJzLnRlc3QoY2gpKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMob3BlcmF0b3JDaGFycyk7CiAgICAgICAgcmV0dXJuICJzcWwtb3BlcmF0b3IiOwogICAgICB9CiAgICAgIGVsc2UgaWYgKC9cZC8udGVzdChjaCkpIHsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvXGQvKTsKICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSAnLicpIHsKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvXGQvKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICJzcWwtbnVtYmVyIjsKICAgICAgfQogICAgICBlbHNlIGlmICgvWygpXS8udGVzdChjaCkpIHsKICAgICAgICByZXR1cm4gInNxbC1wdW5jdHVhdGlvbiI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tfXHdcZF0vKTsKICAgICAgICB2YXIgd29yZCA9IHNvdXJjZS5nZXQoKSwgdHlwZTsKICAgICAgICBpZiAob3BlcmF0b3JzLnRlc3Qod29yZCkpCiAgICAgICAgICB0eXBlID0gInNxbC1vcGVyYXRvciI7CiAgICAgICAgZWxzZSBpZiAoa2V5d29yZHMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAic3FsLWtleXdvcmQiOwogICAgICAgIGVsc2UgaWYgKGZ1bmN0aW9ucy50ZXN0KHdvcmQpKQogICAgICAgICAgdHlwZSA9ICJzcWwtZnVuY3Rpb24iOwogICAgICAgIGVsc2UgaWYgKHR5cGVzLnRlc3Qod29yZCkpCiAgICAgICAgICB0eXBlID0gInNxbC10eXBlIjsKICAgICAgICBlbHNlCiAgICAgICAgICB0eXBlID0gInNxbC13b3JkIjsKICAgICAgICByZXR1cm4ge3N0eWxlOiB0eXBlLCBjb250ZW50OiB3b3JkfTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluQWxpYXMocXVvdGUpIHsKCSAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKCSAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewoJCSAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKCQkgIGlmIChjaCA9PSAnXScpIHsKCQkgICAgc2V0U3RhdGUobm9ybWFsKTsKCQkgICAgYnJlYWs7CgkJICB9CgkgICAgfQoJICAgIHJldHVybiAic3FsLXdvcmQiOwoJICB9CiAgICB9CgogICAgZnVuY3Rpb24gaW5MaXRlcmFsKHF1b3RlKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgICAgdmFyIGVzY2FwZWQgPSBmYWxzZTsKICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICAgIGlmIChjaCA9PSBxdW90ZSAmJiAhZXNjYXBlZCkgewogICAgICAgICAgICBzZXRTdGF0ZShub3JtYWwpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBjaCA9PSAiXFwiOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcXVvdGUgPT0gImAiID8gInNxbC13b3JkIiA6ICJzcWwtbGl0ZXJhbCI7CiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBub3JtYWwpOwogICAgfTsKICB9KSgpOwoKICBmdW5jdGlvbiBpbmRlbnRTcWwoY29udGV4dCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gbmV4dENoYXJzICYmIG5leHRDaGFycy5jaGFyQXQoMCk7CiAgICAgIHZhciBjbG9zaW5nID0gY29udGV4dCAmJiBmaXJzdENoYXIgPT0gY29udGV4dC50eXBlOwogICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGVsc2UgaWYgKGNvbnRleHQuYWxpZ24pCiAgICAgICAgcmV0dXJuIGNvbnRleHQuY29sIC0gKGNsb3NpbmcgPyBjb250ZXh0LndpZHRoIDogMCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gY29udGV4dC5pbmRlbnQgKyAoY2xvc2luZyA/IDAgOiBpbmRlbnRVbml0KTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlU3FsKHNvdXJjZSkgewogICAgdmFyIHRva2VucyA9IHRva2VuaXplU3FsKHNvdXJjZSk7CiAgICB2YXIgY29udGV4dCA9IG51bGwsIGluZGVudCA9IDAsIGNvbCA9IDA7CiAgICBmdW5jdGlvbiBwdXNoQ29udGV4dCh0eXBlLCB3aWR0aCwgYWxpZ24pIHsKICAgICAgY29udGV4dCA9IHtwcmV2OiBjb250ZXh0LCBpbmRlbnQ6IGluZGVudCwgY29sOiBjb2wsIHR5cGU6IHR5cGUsIHdpZHRoOiB3aWR0aCwgYWxpZ246IGFsaWdufTsKICAgIH0KICAgIGZ1bmN0aW9uIHBvcENvbnRleHQoKSB7CiAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CiAgICB9CgogICAgdmFyIGl0ZXIgPSB7CiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciB0b2tlbiA9IHRva2Vucy5uZXh0KCk7CiAgICAgICAgdmFyIHR5cGUgPSB0b2tlbi5zdHlsZSwgY29udGVudCA9IHRva2VuLmNvbnRlbnQsIHdpZHRoID0gdG9rZW4udmFsdWUubGVuZ3RoOwoKICAgICAgICBpZiAoY29udGVudCA9PSAiXG4iKSB7CiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudFNxbChjb250ZXh0KTsKICAgICAgICAgIGluZGVudCA9IGNvbCA9IDA7CiAgICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LmFsaWduID09IG51bGwpIGNvbnRleHQuYWxpZ24gPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAid2hpdGVzcGFjZSIgJiYgY29sID09IDApIHsKICAgICAgICAgIGluZGVudCA9IHdpZHRoOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICghY29udGV4dCAmJiB0eXBlICE9ICJzcWwtY29tbWVudCIpIHsKICAgICAgICAgIHB1c2hDb250ZXh0KCI7IiwgMCwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbnRlbnQgIT0gIlxuIikgY29sICs9IHdpZHRoOwoKICAgICAgICBpZiAodHlwZSA9PSAic3FsLXB1bmN0dWF0aW9uIikgewogICAgICAgICAgaWYgKGNvbnRlbnQgPT0gIigiKQogICAgICAgICAgICBwdXNoQ29udGV4dCgiKSIsIHdpZHRoKTsKICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gIikiKQogICAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInNxbC1zZXBhcmF0b3IiICYmIGNvbnRlbnQgPT0gIjsiICYmIGNvbnRleHQgJiYgIWNvbnRleHQucHJldikgewogICAgICAgICAgcG9wQ29udGV4dCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICB9LAoKICAgICAgY29weTogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIF9jb250ZXh0ID0gY29udGV4dCwgX2luZGVudCA9IGluZGVudCwgX2NvbCA9IGNvbCwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGU7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSkgewogICAgICAgICAgdG9rZW5zID0gdG9rZW5pemVTcWwoc291cmNlLCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgICBjb250ZXh0ID0gX2NvbnRleHQ7CiAgICAgICAgICBpbmRlbnQgPSBfaW5kZW50OwogICAgICAgICAgY29sID0gX2NvbDsKICAgICAgICAgIHJldHVybiBpdGVyOwogICAgICAgIH07CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gaXRlcjsKICB9CgogIHJldHVybiB7bWFrZTogcGFyc2VTcWwsIGVsZWN0cmljQ2hhcnM6ICIpIn07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAwOSBKb2huIEJlbmVkaWt0c3NvbgoKIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCiB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55CiBkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCgogUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiBwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQKIHJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CgogMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdAogICAgbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCiAgICBzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0CiAgICBkb2N1bWVudGF0aW9uIHdvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCgogMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdAogICAgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KCiAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UKICAgIGRpc3RyaWJ1dGlvbi4KCiBKb2huIEJlbmVkaWt0c3Nvbgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/xqcolors-dark.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci5lZGl0Ym94IHsKICBtYXJnaW46IC40ZW07CiAgcGFkZGluZzogMDsKICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMTBwdDsKICBjb2xvcjogd2hpdGU7CiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgbGluZS1oZWlnaHQ6IDE2cHg7Cn0KCnNwYW4ud29yZCB7CiAgICBjb2xvcjp3aGl0ZTsKfQoKc3Bhbi54cXVlcnlLZXl3b3JkIHsKICBjb2xvcjogI2ZmYmQ0MDsgCiAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovCn0KCnNwYW4ueHF1ZXJ5Q29tbWVudCB7CiAgY29sb3I6ICNDRENEQ0Q7CiAgZm9udC1zdHlsZTppdGFsaWM7Cn0KCnNwYW4ueHF1ZXJ5TW9kaWZpZXIgewpjb2xvcjojNmM4Y2Q1OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgpzcGFuLnhxdWVyeVR5cGUgewogIGNvbG9yOiM2YzhjZDU7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCnNwYW4ueHF1ZXJ5QXRvbSB7CiAgY29sb3I6IzZjOGNkNTsKICBmb250LXdlaWdodDogYm9sZDsgIAp9CgpzcGFuLnhxdWVyeVN0cmluZyB7CiAgY29sb3I6ICM5ZmVlMDA7Cn0KCnNwYW4ueHF1ZXJ5UmVnZXhwIHsKICBjb2xvcjogcmdiKDEyOCwwLDY0KTsKfQoKc3Bhbi54cXVlcnlOdW1iZXIgewogIGNvbG9yOiByZ2IoMjU1LDAsMCk7IAp9CgpzcGFuLnhxdWVyeVZhcmlhYmxlIHsKCn0KCnNwYW4ueHF1ZXJ5RnVuY3Rpb24gewogICAgY29sb3I6I0ZGRjcwMDsKfQoKc3Bhbi54cXVlcnlMb2NhbHZhcmlhYmxlIHsKICAgIGNvbG9yOiB3aGl0ZTsKfQoKc3Bhbi54cXVlcnlQcm9wZXJ0eQp7CiAgY29sb3I6IHdoaXRlOwp9CgpzcGFuLnhxdWVyeU9wZXJhdG9yIHsKICBjb2xvcjogb3JhbmdlOwp9CgpzcGFuLnhxdWVyeVB1bmN0dWF0aW9uIHsKICAgIGNvbG9yOiB3aGl0ZTsKfQoKc3Bhbi54cXVlcnktZG9jLWRpcmVjdGl2ZSB7CiAgICBjb2xvcjogd2hpdGU7IAp9CgpzcGFuLnhtbC10YWduYW1lIHsKICAgIGNvbG9yOiAjZmZiZDQwOyA7Cn0KCnNwYW4ueG1sLWF0dHJpYnV0ZSB7CiAgICBjb2xvcjogI0ZGRjcwMDsKfQoKc3Bhbi54bWwtYXR0cmlidXRlLXZhbHVlIHsKICAgIGNvbG9yOiAjRkZGNzAwOwogICAgZm9udC1zdHlsZTppdGFsaWM7Cn0=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/xqcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogIGxpbmUtaGVpZ2h0OiAxNnB4Owp9CgpzcGFuLndvcmQgewp9CgpzcGFuLnhxdWVyeUtleXdvcmQgewogIGNvbG9yOiByZWQ7IC8qICMxMjQwQUI7ICovCiAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovCn0KCnNwYW4ueHF1ZXJ5Q29tbWVudCB7CiAgY29sb3I6IGdyYXk7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9CgpzcGFuLnhxdWVyeU1vZGlmaWVyIHsKICBjb2xvcjogcmdiKDAsMTAyLDE1Myk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCnNwYW4ueHF1ZXJ5VHlwZSB7CiAgY29sb3I6IHB1cnBsZTsKICBmb250LXdlaWdodDogYm9sZDsKfQoKc3Bhbi54cXVlcnlBdG9tIHsKICBjb2xvcjogcmdiKDAsMTAyLDE1Myk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7ICAKfQoKc3Bhbi54cXVlcnlTdHJpbmcgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi54cXVlcnlSZWdleHAgewogIGNvbG9yOiByZ2IoMTI4LDAsNjQpOwp9CgpzcGFuLnhxdWVyeU51bWJlciB7CiAgY29sb3I6ICMxMjQwQUI7Cn0KCnNwYW4ueHF1ZXJ5VmFyaWFibGUgewogICAgLyogY29sb3I6IHJlZDsgKi8KfQoKc3Bhbi54cXVlcnlGdW5jdGlvbiB7CiAgICBjb2xvcjogIzEyNDBBQjsgICAgIAogICAgLyogZm9udC13ZWlnaHQ6Ym9sZDsgKi8gCn0KCgpzcGFuLnhxdWVyeU9wZXJhdG9yIHsKICAgIGNvbG9yOiByZWQ7Cn0KCnNwYW4ueHF1ZXJ5UHVuY3R1YXRpb24gewogICAgY29sb3I6IERJTUdyYXk7Cn0KCnNwYW4ueG1sLXRhZ25hbWUgewogICAgY29sb3I6IHB1cnBsZTsKfQoKc3Bhbi54bWwtYXR0cmlidXRlIHsKICAgIGNvbG9yOiBwdXJwbGU7CiAgICBmb250LXN0eWxlOml0YWxpYzsKfQoKc3Bhbi54bWwtYXR0cmlidXRlLXZhbHVlIHsKICAgIGNvbG9yOiBwdXJwbGU7CiAgICBmb250LXN0eWxlOml0YWxpYzsKfQ==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/xqcolors2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogIGxpbmUtaGVpZ2h0OiAxNnB4Owp9CgpzcGFuLndvcmQgewp9CgpzcGFuLnhxdWVyeUtleXdvcmQgewogIGNvbG9yOiBibHVlOyAKICAvKiBmb250LXdlaWdodDogYm9sZDsgKi8KfQoKc3Bhbi54cXVlcnlDb21tZW50IHsKICBjb2xvcjogZ3JheTsKfQoKc3Bhbi54cXVlcnlNb2RpZmllciB7CiAgY29sb3I6IHJnYigwLDEwMiwxNTMpOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgpzcGFuLnhxdWVyeVR5cGUgewogIGNvbG9yOiByZ2IoMCwxMzUsMjU1KTsKICBmb250LXdlaWdodDogYm9sZDsKfQoKc3Bhbi54cXVlcnlBdG9tIHsKICBjb2xvcjogcmdiKDAsMTAyLDE1Myk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7ICAKfQoKc3Bhbi54cXVlcnlTdHJpbmcgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi54cXVlcnlSZWdleHAgewogIGNvbG9yOiByZ2IoMTI4LDAsNjQpOwp9CgpzcGFuLnhxdWVyeU51bWJlciB7CiAgY29sb3I6IHJnYigyNTUsMCwwKTsgCn0KCnNwYW4ueHF1ZXJ5VmFyaWFibGUgewogICAgY29sb3I6IHJlZDsKfQoKc3Bhbi54cXVlcnlGdW5jdGlvbiB7CiAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lCn0KCgpzcGFuLnhxdWVyeU9wZXJhdG9yIHsKICAgIGNvbG9yOiBEaW1HcmF5Owp9CgpzcGFuLnhxdWVyeVB1bmN0dWF0aW9uIHsKfQoKc3Bhbi54bWwtdGFnbmFtZSB7CiAgICBjb2xvcjogcHVycGxlOwp9CgpzcGFuLnhtbC1hdHRyaWJ1dGUgewogICAgY29sb3I6IHB1cnBsZTsKICAgIGZvbnQtc3R5bGU6aXRhbGljOwp9CgpzcGFuLnhtbC1hdHRyaWJ1dGUtdmFsdWUgewogICAgY29sb3I6IHB1cnBsZTsKICAgIGZvbnQtc3R5bGU6aXRhbGljOwp9]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjQuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDx0aXRsZT5Db2RlTWlycm9yOiBYUXVlcnkgaGlnaGxpZ2h0aW5nIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgICAgLkNvZGVNaXJyb3ItbGluZS1udW1iZXJzIHsKICAgICAgICB3aWR0aDogMi4yZW07CiAgICAgICAgY29sb3I6ICNhYWE7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuM2VtOwogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIHBhZGRpbmctdG9wOiAuNGVtOwogICAgICB9CiAgICAgIGJvZHkgewogICAgICAgICAgZm9udC1mYW1pbHk6IGhlbHZldGljYTsKICAgICAgICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAgICAgICAgICBtYXgtd2lkdGg6NDAwMHB4OwogICAgICB9CiAgICAgIGEgewogICAgICAgICAgY29sb3I6ICNFQjFEMUQ7CiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0gICAgIAogICAgICBhOmhvdmVyIHsKICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CiAgICAgIGRpdi5ib3JkZXIgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgICB9CiAgICAgIC5jc3Mtc3dpdGNoIHsKICAgICAgICAgIG1hcmdpbi1yaWdodDoxNXB4OwogICAgICAgICAgcGFkZGluZy1ib3R0b206NXB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPGRpdiBzdHlsZT0ibWFyZ2luOmF1dG87IHdpZHRoOjkyMHB4OyBib3JkZXItd2lkdGg6MXB4OyI+CjxoMj5YUXVlcnkgU3ludGF4IFN1cHBvcnQgZm9yIENvZGVNaXJyb3I8L2gyPgo8cCBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeTsgIHdvcmQtc3BhY2luZzogM3B4OyI+VGhpcyBpcyBhIGRlbW9uc3RyYXRpb24gb2YgdGhlIFhRdWVyeSBoaWdobGlnaHRpbmcgbW9kdWxlCmZvciA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPi4gVGhlIGZvcm1hdHRpbmcgaXMgQ1NTIGRyaXZlbiBhbmQgdmVyeSBlYXN5IHRvIGN1c3RvbWl6ZSB0byB5b3VyIGxpa2luZy4KVGhlcmUgYXJlIHRocmVlIHNhbXBsZSBzdHlsZXMgc2V0cyBiZWxvdy4KWW91IGNhbiBlZGl0IG9yIHBhc3RlIGluIGFueSBjb2RlIGJlbG93IHRvIGdpdmUgaXQgYSB0ZXN0IHJ1bi4KPC9wPgoKPGEgaHJlZj0iIyIgcmVsPSJ4cWNvbG9ycy5jc3MiIGNsYXNzPSJjc3Mtc3dpdGNoIj5MaWdodCAxPC9hPiAgPGEgaHJlZj0iIyIgcmVsPSJ4cWNvbG9yczIuY3NzIiBjbGFzcz0iY3NzLXN3aXRjaCI+TGlnaHQgMjwvYT4gPGEgaHJlZj0iIyIgcmVsPSJ4cWNvbG9ycy1kYXJrLmNzcyIgY2xhc3M9ImNzcy1zd2l0Y2giPkRhcms8L2E+IAoKPGRpdiBjbGFzcz0iYm9yZGVyIj4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjUwIj4KeHF1ZXJ5IHZlcnNpb24gJnF1b3Q7MS4wLW1sJnF1b3Q7OwooOiB0aGlzIGlzCiA6IGEgCiAgICJjb21tZW50IiA6KQpsZXQgJGxldCA6PSAmbHQ7eCBhdHRyPSZxdW90O3ZhbHVlJnF1b3Q7Jmd0OyZxdW90O3Rlc3QmcXVvdDsmbHQ7L3gmZ3Q7CmxldCAkam9lOj0xCnJldHVybiBlbGVtZW50IGVsZW1lbnQgewogIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgeyAxIH0sCiAgZWxlbWVudCB0ZXN0IHsgJiMzOTthJiMzOTsgfSwgCiAgYXR0cmlidXRlIGZvbyB7ICZxdW90O2JhciZxdW90OyB9LAogIGZuOmRvYygpWyBmb28vQGJhciBlcSAkbGV0IF0sCiAgLy94IH0gICAgCiAgCiAgCiAgbW9kdWxlIG5hbWVzcGFjZSBjb21vbXMtZGxzID0gJnF1b3Q7aHR0cDovL21hcmtsb2dpYy5jb20vY29tb21zLWRscyZxdW90OzsKICBpbXBvcnQgbW9kdWxlIG5hbWVzcGFjZSBkbHMgPSAmcXVvdDtodHRwOi8vbWFya2xvZ2ljLmNvbS94ZG1wL2RscyZxdW90OyBhdCAmcXVvdDsvTWFya0xvZ2ljL2Rscy54cXkmcXVvdDs7CiAgaW1wb3J0IG1vZHVsZSBuYW1lc3BhY2UgY29tb21zLXV0aWwgPSAmcXVvdDtodHRwOi8vbWFya2xvZ2ljLmNvbS9jb21vbXMtdXRpbCZxdW90OyBhdCAmcXVvdDsvbGliL2NvbW9tcy11dGlsLnhxeSZxdW90OzsKICBpbXBvcnQgbW9kdWxlIG5hbWVzcGFjZSBjb21vbXMtdXNlciA9ICZxdW90O2h0dHA6Ly9tYXJrbG9naWMuY29tL2NvbW9tcy11c2VyJnF1b3Q7IGF0ICZxdW90Oy9saWIvY29tb21zLXVzZXIueHF5JnF1b3Q7OwoKCgoKICAoOn4KICAgOiBNYWtlIGEgY2FsbCB0byBpbnNlcnQgYW5kIE1hbmFnZS4gVGhpcyBJUyBOT1QgRE9ORSBXSVRISU4gQU4gRVZBTCBiZWN1YXNlCiAgIDogaGF2ZW4mIzM5O3QgZmlndXJlZCBvdXQgaG93IHRvIHBhc3MgdGhlIHBlcm1pc3Npb25zIHZhcmlhYmxlIHRocm91Z2ggdG8gYmUgYm91bmQKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6aW5zZXJ0KCR1cmkgYXMgeHM6c3RyaW5nLCAkZG9jIGFzIG5vZGUoKSwgICRub3RlIGFzIHhzOnN0cmluZyl7CiAgICAgIGxldCAkbG9nIDo9IHhkbXA6bG9nKCZxdW90O2luIGNvbW9tcy1kbHM6aW5zZXJ0LiZxdW90OykKICAgICAgbGV0ICRjb2xsZWN0aW9uIDo9ICZxdW90O0RSQUZUUyZxdW90OwogICAgICBsZXQgJHBlcm1pc3Npb25zIDo9ICh4ZG1wOnBlcm1pc3Npb24oJiMzOTtta3AtYWRtaW4mIzM5OywgJiMzOTt1cGRhdGUmIzM5OyksIHhkbXA6cGVybWlzc2lvbigmIzM5O21rcC1hZG1pbiYjMzk7LCAmIzM5O3JlYWQmIzM5OykpIAogICAgICByZXR1cm4gZGxzOmRvY3VtZW50LWluc2VydC1hbmQtbWFuYWdlKCR1cmksIGZuOmZhbHNlKCksICRkb2MsICRub3RlLCAkcGVybWlzc2lvbnMsICRjb2xsZWN0aW9uKQoKICAgICAgKDoKICAgICAgbGV0ICRjb2xsZWN0aW9uIDo9ICZxdW90O0RSQUZUUyZxdW90OwogICAgICByZXR1cm4KICAgICAgICAgIHhkbXA6ZXZhbCgKICAgICAgICAgICAgICBmbjpjb25jYXQoCiAgICAgICAgICAgICAgICAgIGNvbW9tcy1kbHM6X2ltcG9ydCgpLCAKICAgICAgICAgICAgICAgICAgJnF1b3Q7CiAgICAgICAgICAgICAgICAgIGRlY2xhcmUgdmFyaWFibGUgJHVyaSBhcyB4czpzdHJpbmcgZXh0ZXJuYWw7CiAgICAgICAgICAgICAgICAgIGRlY2xhcmUgdmFyaWFibGUgJGRvYyBhcyBub2RlKCkgZXh0ZXJuYWw7CiAgICAgICAgICAgICAgICAgIGRlY2xhcmUgdmFyaWFibGUgJGNvbGxlY3Rpb24gYXMgeHM6c3RyaW5nIGV4dGVybmFsOwogICAgICAgICAgICAgICAgICBkZWNsYXJlIHZhcmlhYmxlICRub3RlIGFzIHhzOnN0cmluZyBleHRlcm5hbDsKICAgICAgICAgICAgICAgICAgZGxzOmRvY3VtZW50LWluc2VydC1hbmQtbWFuYWdlKCR1cmksIGZuOnRydWUoKSwgJGRvYywgJG5vdGUsIAogICAgICAgICAgICAgICAgICAgICAgKHhkbXA6cGVybWlzc2lvbigmIzM5O21rcC1hbm9uJiMzOTssICYjMzk7cmVhZCYjMzk7KSwgeGRtcDpwZXJtaXNzaW9uKCYjMzk7bWtwLWFkbWluJiMzOTssICYjMzk7dXBkYXRlJiMzOTspKSAsICRjb2xsZWN0aW9uKQogICAgICAgICAgICAgICAgICAmcXVvdDsKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICh4czpRTmFtZSgmcXVvdDt1cmkmcXVvdDspLCAkdXJpLCB4czpRTmFtZSgmcXVvdDtkb2MmcXVvdDspLCAkZG9jLCB4czpRTmFtZSgmcXVvdDtub3RlJnF1b3Q7KSwgJG5vdGUsIHhzOlFOYW1lKCZxdW90O2NvbGxlY3Rpb24mcXVvdDspLCAkY29sbGVjdGlvbikKICAgICAgICAgICkgICAgCiAgICAgIDopICAgIAoKICB9OwoKCgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczptYW5hZ2UoJHVyaSwgJG1hbmFnZU5vdGUpewogICAgICBsZXQgJGxvZyA6PSB4ZG1wOmxvZygmcXVvdDtpbiBjb21vbXMtZGxzOm1hbmFnZSB3aXRoIG5vdGUuJnF1b3Q7KQogICAgICByZXR1cm4gKAogICAgICAgICAgeGRtcDpldmFsKAogICAgICAgICAgICAgIGZuOmNvbmNhdCgKICAgICAgICAgICAgICAgICAgY29tb21zLWRsczpfaW1wb3J0KCksIAogICAgICAgICAgICAgICAgICAmcXVvdDsKICAgICAgICAgICAgICAgICAgZGVjbGFyZSB2YXJpYWJsZSAkdXJpIGFzIHhzOnN0cmluZyBleHRlcm5hbDsKICAgICAgICAgICAgICAgICAgZGVjbGFyZSB2YXJpYWJsZSAkbWFuYWdlTm90ZSBhcyB4czpzdHJpbmcgZXh0ZXJuYWw7CiAgICAgICAgICAgICAgICAgIGRsczpkb2N1bWVudC1tYW5hZ2UoJHVyaSwgZm46ZmFsc2UoKSwgJG1hbmFnZU5vdGUpCiAgICAgICAgICAgICAgICAgICZxdW90OwogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKHhzOlFOYW1lKCZxdW90O3VyaSZxdW90OyksICR1cmksIHhzOlFOYW1lKCZxdW90O21hbmFnZU5vdGUmcXVvdDspLCAkbWFuYWdlTm90ZSkKICAgICAgICAgICkKICAgICAgKSAgICAKICB9OwoKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6dXBkYXRlKCR1cmkgYXMgeHM6c3RyaW5nLCAkZG9jIGFzIG5vZGUoKSwgJG5vdGUgYXMgeHM6c3RyaW5nKXsKCiAgICAgIHhkbXA6ZXZhbCgKICAgICAgICAgIGZuOmNvbmNhdCgKICAgICAgICAgICAgICBjb21vbXMtZGxzOl9pbXBvcnQoKSwgCiAgICAgICAgICAgICAgJnF1b3Q7CiAgICAgICAgICAgICAgZGVjbGFyZSB2YXJpYWJsZSAkdXJpIGFzIHhzOnN0cmluZyBleHRlcm5hbDsKICAgICAgICAgICAgICBkZWNsYXJlIHZhcmlhYmxlICRkb2MgYXMgbm9kZSgpIGV4dGVybmFsOwogICAgICAgICAgICAgIGRlY2xhcmUgdmFyaWFibGUgJG5vdGUgYXMgeHM6c3RyaW5nIGV4dGVybmFsOwogICAgICAgICAgICAgIGRsczpkb2N1bWVudC11cGRhdGUoJHVyaSwgJGRvYywgJG5vdGUsIGZuOnRydWUoKSwgKHhkbXA6cGVybWlzc2lvbigmIzM5O21rcC1hZG1pbiYjMzk7LCAmIzM5O3VwZGF0ZSYjMzk7KSwgeGRtcDpwZXJtaXNzaW9uKCYjMzk7bWtwLWFkbWluJiMzOTssICYjMzk7cmVhZCYjMzk7KSkgKQogICAgICAgICAgICAgICZxdW90OwogICAgICAgICAgKSwKICAgICAgICAgICh4czpRTmFtZSgmcXVvdDt1cmkmcXVvdDspLCAkdXJpLCB4czpRTmFtZSgmcXVvdDtkb2MmcXVvdDspLCAkZG9jLCB4czpRTmFtZSgmcXVvdDtub3RlJnF1b3Q7KSwgJG5vdGUpCiAgICAgICkKCiAgfTsKCgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczptYW5hZ2UoJHVyaSl7CiAgICAgIGxldCAkbG9nIDo9IHhkbXA6bG9nKCZxdW90O2luIGNvbW9tcy1kbHM6bWFuYWdlIHdpdGhvdXQgbm90ZS4mcXVvdDspCiAgICAgIHJldHVybiAoeGRtcDpldmFsKAogICAgICAgICAgZm46Y29uY2F0KGNvbW9tcy1kbHM6X2ltcG9ydCgpLCAmcXVvdDtkbHM6ZG9jdW1lbnQtbWFuYWdlKCYjMzk7JnF1b3Q7LCAkdXJpLCAmcXVvdDsmIzM5OywgZm46ZmFsc2UoKSkmcXVvdDspKQogICAgICApCiAgfTsKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOnVubWFuYWdlQW5kRGVsZXRlKCR1cmlzKXsKICAgICAgZm9yICR1cmkgaW4gJHVyaXMKICAgICAgbGV0ICR1bnB1Ymxpc2ggOj0gKHhkbXA6ZXZhbCgKICAgICAgICAgIGZuOmNvbmNhdChjb21vbXMtZGxzOl9pbXBvcnQoKSwgCiAgICAgICAgICAgICAgJnF1b3Q7aW1wb3J0IG1vZHVsZSBuYW1lc3BhY2UgY29tb21zLWRscyA9ICYjMzk7aHR0cDovL21hcmtsb2dpYy5jb20vY29tb21zLWRscyYjMzk7IGF0ICYjMzk7L2xpYi9jb21vbXMtZGxzLnhxeSYjMzk7OyBjb21vbXMtZGxzOnVucHVibGlzaCgmIzM5OyZxdW90OywgCiAgICAgICAgICAgICAgJHVyaSwgJnF1b3Q7JiMzOTspJnF1b3Q7KSkpCiAgICAgIGxldCAkdW5tYW5hZ2UgOj0gICh4ZG1wOmV2YWwoCiAgICAgICAgICBmbjpjb25jYXQoY29tb21zLWRsczpfaW1wb3J0KCksICZxdW90O2Rsczpkb2N1bWVudC11bm1hbmFnZSgmIzM5OyZxdW90OywgJHVyaSwgJnF1b3Q7JiMzOTssIGZuOmZhbHNlKCksIGZuOnRydWUoKSkmcXVvdDspKQogICAgICApCiAgICAgIHJldHVybgogICAgICAgICAgeGRtcDpkb2N1bWVudC1kZWxldGUoJHVyaSkKICB9OwoKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmNoZWNrb3V0KCR1cmkpIHsKICAgICAgeGRtcDpldmFsKAogICAgICAgICAgZm46Y29uY2F0KGNvbW9tcy1kbHM6X2ltcG9ydCgpLCAmcXVvdDtkbHM6ZG9jdW1lbnQtY2hlY2tvdXQoJiMzOTsmcXVvdDssICR1cmksICZxdW90OyYjMzk7LCBmbjpmYWxzZSgpKSZxdW90OykpCiAgfTsgCgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpjaGVja2luKCR1cmkpIHsKICAgICAgeGRtcDpldmFsKAogICAgICAgICAgZm46Y29uY2F0KGNvbW9tcy1kbHM6X2ltcG9ydCgpLCAmcXVvdDtkbHM6ZG9jdW1lbnQtY2hlY2tpbigmIzM5OyZxdW90OywgJHVyaSwgJnF1b3Q7JiMzOTssIGZuOmZhbHNlKCkpJnF1b3Q7KSkKICB9OyAKCgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczphZGQoJHVyaSkgewogICAgICB4ZG1wOmV2YWwoCiAgICAgICAgICBmbjpjb25jYXQoY29tb21zLWRsczpfaW1wb3J0KCksICZxdW90O2Rsczpkb2N1bWVudC1tYW5hZ2UoJiMzOTsmcXVvdDssICR1cmksICZxdW90OyYjMzk7LCBmbjpmYWxzZSgpKSZxdW90OykKICAgICAgKSAgICAKICB9OyAKCgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpkb2N1bWVudEhpc3RvcnkoJHVyaSkgewogICAgICB4ZG1wOmV2YWwoCiAgICAgICAgICBmbjpjb25jYXQoY29tb21zLWRsczpfaW1wb3J0KCksICZxdW90O2Rsczpkb2N1bWVudC1oaXN0b3J5KCYjMzk7JnF1b3Q7LCAkdXJpLCAmcXVvdDsmIzM5OykmcXVvdDspCiAgICAgICkKICB9OwoKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6Y2hlY2tvdXRTdGF0dXMoJHVyaSkgewogICAgICB4ZG1wOmV2YWwoCiAgICAgICAgICBmbjpjb25jYXQoY29tb21zLWRsczpfaW1wb3J0KCksICZxdW90O2Rsczpkb2N1bWVudC1jaGVja291dC1zdGF0dXMoJiMzOTsmcXVvdDssICR1cmksICZxdW90OyYjMzk7KSZxdW90OykKICAgICAgKQogIH07CgogICg6fgogICA6IGNhbGwgZm46ZG9jIGJ1dCB3cmFwcGVkIGluIGFuIGV2YWwgCiAgIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmRvY0luRXZhbCgkdXJpKSB7CiAgICAgIHhkbXA6ZXZhbCgKICAgICAgICAgIGZuOmNvbmNhdChjb21vbXMtZGxzOl9pbXBvcnQoKSwgJnF1b3Q7Zm46ZG9jKCYjMzk7JnF1b3Q7LCAkdXJpLCAmcXVvdDsmIzM5OykmcXVvdDspCiAgICAgICkKICB9OwoKICAoOiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgOikKICAoOiBQVUJMSVNISU5HIEZVTkNUSU9OUyA6KQogICg6ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyA6KQoKICAoOn4KICAgOiBHaXZlbiBhIHNlcXVlbmNlIG9mIHZlcnNpb24gVVJJcywgcHVibGlzaCBhbGwgb2YgdGhlc2UgdmVyc2lvbnMgb2YgZWFjaCBkb2N1bWVudAogICA6IElmIHRoZXJlIGlzIGEgdmVyc2lvbiBvZiB0aGUgc2FtZSBkb2N1bWVudCBhbHJlYWR5IHB1Ymxpc2hlZCwgdW5wdWJsaXNoIGl0IDFzdAogICA6IAogICA6IFdoZW4gJnF1b3Q7cHVibGlzaCZxdW90OyBpcyByZWZlcnJlZCB0bywgd2UgbWVhbiB0aGF0IGl0IGlzIHB1dCBpbnRvIHRoZSBQVUJMSVNIRUQgY29sbGVjdGlvbgogICA6IHVucHVibGlzaCByZW1vdmVzIGNvbnRlbnQgZnJvbSB0aGlzIGNvbGxlY3Rpb24KICAgOiBAcGFyYW0gJHZlcnNpb25fdXJpcyAtIHNlcXVlbmNlIG9mIHVyaXMgb2YgdmVyc2lvbnMgb2YgbWFuYWdlZCBkb2N1bWVudHMgdG8gcHVibGlzaAogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpwdWJsaXNoKCR2ZXJzaW9uX3VyaXMgYXMgaXRlbSgpKikgewogICAgICBmb3IgJHVyaSBpbiAkdmVyc2lvbl91cmlzCiAgICAgIGxldCAkZG9jIDo9IGZuOmRvYygkdXJpKQogICAgICBsZXQgJG1hbmFnZWRfYmFzZV91cmkgOj0gJGRvYy9ub2RlKCkvcHJvcGVydHk6OmRsczp2ZXJzaW9uL2Rsczpkb2N1bWVudC11cmkvdGV4dCgpCiAgICAgIGxldCAkZXhpc3RpbmcgOj0gIGNvbW9tcy1kbHM6cHVibGlzaGVkRG9jKCRtYW5hZ2VkX2Jhc2VfdXJpKQogICAgICBsZXQgJHVucHVibGlzaEV4aXN0aW5nIDo9IGlmKCRleGlzdGluZykgdGhlbiBjb21vbXMtZGxzOnVucHVibGlzaFZlcnNpb24oKHhkbXA6bm9kZS11cmkoJGV4aXN0aW5nKSkpICBlbHNlICgpCiAgICAgIGxldCAkYWRkUGVybWlzc2lvbnMgOj0gZGxzOmRvY3VtZW50LWFkZC1wZXJtaXNzaW9ucygkdXJpLCAoeGRtcDpwZXJtaXNzaW9uKCYjMzk7bWtwLWFub24mIzM5OywgJiMzOTtyZWFkJiMzOTspKSkKICAgICAgcmV0dXJuCiAgICAgICAgICBkbHM6ZG9jdW1lbnQtYWRkLWNvbGxlY3Rpb25zKCR1cmksICgmcXVvdDtQVUJMSVNIRUQmcXVvdDspKSAgICAKICB9OwoKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6cHVibGlzaExhdGVzdCgkdXJpKSB7CiAgICAgICg6IFRPRE8gY2hlY2sgaWYgaXQmIzM5O3MgaW4gdGhlIGRyYWZ0IGNvbGxlY3Rpb24gcHJvYmFibHkgOikKCiAgICAgIGxldCAkbGF0ZXN0X3ZlcnNpb25fdXJpIDo9IGNvbW9tcy1kbHM6bGF0ZXN0VmVyc2lvblVyaSgkdXJpKQogICAgICBsZXQgJGxvZzo9IHhkbXA6bG9nKGZuOmNvbmNhdCgmcXVvdDtsYXRlc3Q6ICZxdW90OywgJGxhdGVzdF92ZXJzaW9uX3VyaSkpICAgIAogICAgICBsZXQgJGxvZzo9IHhkbXA6bG9nKGZuOmNvbmNhdCgmcXVvdDt1cmk6ICZxdW90OywgJHVyaSkpICAgICAgICAgICAgCiAgICAgIHJldHVybiBjb21vbXMtZGxzOnB1Ymxpc2goJGxhdGVzdF92ZXJzaW9uX3VyaSkgICAgCgogIH07CgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpsYXRlc3RWZXJzaW9uVXJpKCR1cmkpIHsKICAgICAgbGV0ICRsYXRlc3RfdmVyc2lvbl9udW0gOj0KICAgICAgICAgICgKICAgICAgICAgIGZvciAkdmVyc2lvbiBpbiBkbHM6ZG9jdW1lbnQtaGlzdG9yeSgkdXJpKS9kbHM6dmVyc2lvbgogICAgICAgICAgb3JkZXIgYnkgZm46bnVtYmVyKCR2ZXJzaW9uLy9kbHM6dmVyc2lvbi1pZC90ZXh0KCkpIGRlc2NlbmRpbmcKICAgICAgICAgIHJldHVybiAkdmVyc2lvbi8vZGxzOnZlcnNpb24taWQvdGV4dCgpCiAgICAgICAgICApWzFdCgoKICAgICAgcmV0dXJuIGRsczpkb2N1bWVudC12ZXJzaW9uLXVyaSgkdXJpLCAkbGF0ZXN0X3ZlcnNpb25fbnVtKQogIH07CgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczp1bnB1Ymxpc2goJHVyaXMgYXMgaXRlbSgpKikgewogICAgICBmb3IgJHVyaSBpbiAkdXJpcwogICAgICByZXR1cm4KICAgICAgICAgIGxldCAkcHVibGlzaGVkX2RvYyA6PSBjb21vbXMtZGxzOnB1Ymxpc2hlZERvYygkdXJpKQogICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgaWYoJHB1Ymxpc2hlZF9kb2MpIHRoZW4KICAgICAgICAgICAgICAgICAgbGV0ICRwdWJsaXNoZWRfdmVyc2lvbl91cmkgOj0geGRtcDpub2RlLXVyaSgkcHVibGlzaGVkX2RvYykKICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW9tcy1kbHM6dW5wdWJsaXNoVmVyc2lvbigkcHVibGlzaGVkX3ZlcnNpb25fdXJpKSAgICAgICAgCiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAoKQogIH07CgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpsYXRlc3RQdWJsaXNoZWREb2NBdXRob3IoJHVyaSkgewogICAgICBsZXQgJGF1dGhvcl9pZCA6PSBkb2MoJHVyaSkvcHJvcGVydHk6OmRsczp2ZXJzaW9uL2RsczphdXRob3IvdGV4dCgpCiAgICAgIHJldHVybgogICAgICAgICAgaWYoJGF1dGhvcl9pZCkgdGhlbgogICAgICAgICAgICAgIGNvbW9tcy11c2VyOmdldFVzZXJuYW1lKCRhdXRob3JfaWQpCiAgICAgICAgICBlbHNlIAogICAgICAgICAgICAgICgpCgogIH07CgogICg6fgogICA6IEdpdmVuIGEgc2VxdWVuY2Ugb2YgdmVyc2lvbiBVUklzLCB1bnB1Ymxpc2ggYWxsIG9mIHRoZXNlIHZlcnNpb25zIG9mIGVhY2ggZG9jdW1lbnQKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6dW5wdWJsaXNoVmVyc2lvbigkdmVyc2lvbl91cmlzIGFzIGl0ZW0oKSopIHsKICAgICAgZm9yICR1cmkgaW4gJHZlcnNpb25fdXJpcwogICAgICByZXR1cm4KICAgICAgICAgIGxldCAkcmVtb3ZlUGVybWlzc2lvbnMgOj0gZGxzOmRvY3VtZW50LXJlbW92ZS1wZXJtaXNzaW9ucygkdXJpLCAoeGRtcDpwZXJtaXNzaW9uKCYjMzk7bWtwLWFub24mIzM5OywgJiMzOTtyZWFkJiMzOTspKSkKICAgICAgICAgIHJldHVybiBkbHM6ZG9jdW1lbnQtcmVtb3ZlLWNvbGxlY3Rpb25zKCR1cmksICgmcXVvdDtQVUJMSVNIRUQmcXVvdDspKSAgICAgICAgCiAgfTsKCiAgKDp+CiAgIDogR2l2ZW4gdGhlIGJhc2UgVVJJIG9mIGEgbWFuYWdlZCBwaWVjZSBvZiBjb250ZW50LCByZXR1cm4gdGhlIGRvY3VtZW50IG9mIHRoZSBub2RlCiAgIDogb2YgdGhlIHZlcnNpb24gdGhhdCBpcyBwdWJsaXNoZWQKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6cHVibGlzaGVkRG9jKCR1cmkpIHsKICAgICAgZm46Y29sbGVjdGlvbigmcXVvdDtQVUJMSVNIRUQmcXVvdDspW3Byb3BlcnR5OjpkbHM6dmVyc2lvbi9kbHM6ZG9jdW1lbnQtdXJpID0gJHVyaV0gCiAgfTsKCgogICg6fgogICA6IFRlc3QgaWYgYW55IHZlcnNpb24gb2YgdGhlIG1hbmFnZWQgZG9jdW1lbnQgaXMgcHVibGlzaGVkCiAgIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmlzUHVibGlzaGVkKCR1cmkpIHsKICAgICAgaWYoIGNvbW9tcy1kbHM6cHVibGlzaGVkRG9jKCR1cmkpKSB0aGVuCiAgICAgICAgICBmbjp0cnVlKCkKICAgICAgZWxzZQogICAgICAgICAgZm46ZmFsc2UoKQogIH07CgoKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6cHVibGlzaGVkU3RhdGUoJHVyaSkgewogICAgICBsZXQgJGRvYyA6PSBjb21vbXMtZGxzOnB1Ymxpc2hlZERvYygkdXJpKQogICAgICBsZXQgJHB1Ymxpc2hlZF91cmkgOj0gaWYoJGRvYykgdGhlbiB4ZG1wOm5vZGUtdXJpKCRkb2MpIGVsc2UgKCkKICAgICAgbGV0ICRsYXRlc3QgOj0gY29tb21zLWRsczpsYXRlc3RWZXJzaW9uVXJpKCR1cmkpCiAgICAgIHJldHVybgogICAgICAgICAgaWYoJGRvYykgdGhlbgogICAgICAgICAgICAgIGlmKCRsYXRlc3QgbmUgJHB1Ymxpc2hlZF91cmkpIHRoZW4KICAgICAgICAgICAgICAgICAgJnF1b3Q7c3RhbGUmcXVvdDsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICZxdW90O3B1Ymxpc2hlZCZxdW90OwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgICZxdW90O3VucHVibGlzaGVkJnF1b3Q7CiAgfTsKCgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpnZXRNYW5hZ2VkRG9jVXJpKCR1cmkpIHsKICAgICAgbGV0ICRkb2MgOj0gZm46ZG9jKCR1cmkpCiAgICAgIGxldCAkbWFuYWdlZF91cmkgOj0gJGRvYy9wcm9wZXJ0eTo6ZGxzOnZlcnNpb24vZGxzOmRvY3VtZW50LXVyaS90ZXh0KCkKICAgICAgbGV0ICRtYW5hZ2VkX3VyaSA6PSBpZigkbWFuYWdlZF91cmkpIHRoZW4gJG1hbmFnZWRfdXJpIGVsc2UgJHVyaQogICAgICByZXR1cm4gJG1hbmFnZWRfdXJpCiAgfTsKCiAgKDp+CiAgIDogR2l2ZW4gYSBtYW5hZ2UgY29udGVudCB1cmwgKGUuZy4gL2NvbnRlbnQvMTIzNDU2LnhtbCkgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZQogICA6IHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IGJhc2VkIG9uIHdoYXQgc3RhZ2UgY29sbGVjdGlvbiBpcyBiZWluZyB2aWV3ZWQgYW5kIAogICA6IHdoYXQmIzM5O3MgcHVibGlzaGVkCiAgIDoKICAgOiBAcGFyYW0gJHVyaSBhIG1hbmFnZSBjb250ZW50IHVybCAoZS5nLiAvY29udGVudC8xMjM0NTYueG1sKSAtIE5PVCBBIFZFUlNJT05FRCBVUkkKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6ZG9jKCR1cmkpIHsKICAgICAgbGV0ICRkb2MgOj0gZm46cm9vdChjb21vbXMtZGxzOmNvbGxlY3Rpb24oKVtwcm9wZXJ0eTo6ZGxzOnZlcnNpb24vZGxzOmRvY3VtZW50LXVyaSA9ICR1cmldWzFdKQogICAgICByZXR1cm4KICAgICAgICAgIGlmKCRkb2MpIHRoZW4gCiAgICAgICAgICAgICAgJGRvYyAKICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgbGV0ICRtYW5hZ2VkRG9jSW5Db2xsZWN0aW9uIDo9IGNvbW9tcy1kbHM6Y29sbGVjdGlvbi1uYW1lKCkgPSB4ZG1wOmRvY3VtZW50LWdldC1jb2xsZWN0aW9ucygkdXJpKQogICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICBpZigkbWFuYWdlZERvY0luQ29sbGVjdGlvbikgdGhlbgogICAgICAgICAgICAgICAgICAgICAgZm46ZG9jKCR1cmkpCiAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICgpCiAgfTsKCiAgKDp+IAogICA6IEdldCB0aGUgY29sbGVjdGlvbiB0byBiZSB1c2VkIHdoZW4gcXVlcnlpbmcgZm9yIGNvbnRlbnQKICAgOiBUSElTIG9yIGNvbW9tcy1kbHM6Y29sbGVjdGlvbi1uYW1lKCkgU0hPVUxEIEJFIFVTRUQgV0hFTiBCVUlMRElORyBBTlkgUVVFUlkgRk9SIE1BTkFHRUQgQ09OVEVOVAogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpjb2xsZWN0aW9uKCkgIHsKICAgICAgZm46Y29sbGVjdGlvbiggY29tb21zLWRsczpjb2xsZWN0aW9uLW5hbWUoKSApCiAgfTsKCiAgKDp+IAogICA6IEdldCB0aGUgY29sbGVjdGlvbiBuYW1ldG8gYmUgdXNlZCB3aGVuIHF1ZXJ5aW5nIGZvciBjb250ZW50CiAgIDogVEhJUyBvciBjb21vbXMtZGxzOmNvbGxlY3Rpb24oKSBTSE9VTEQgQkUgVVNFRCBXSEVOIEJVSUxESU5HIEFOWSBRVUVSWSBGT1IgTUFOQUdFRCBDT05URU5UIAogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpjb2xsZWN0aW9uLW5hbWUoKSBhcyB4czpzdHJpbmcgewogICAgICBsZXQgJGRlZmF1bHRfY29sbGVjdGlvbiA6PSAmcXVvdDtQVUJMSVNIRUQmcXVvdDsKICAgICAgcmV0dXJuCiAgICAgICAgICBpZihjb21vbXMtdXNlcjppc0FkbWluKCkpIHRoZW4gCiAgICAgICAgICAgICAgbGV0ICRwdWJfc3RhZ2VfY29sbGVjdGlvbl9jb29raWUgOj0gY29tb21zLXV0aWw6Z2V0Q29va2llKCZxdW90O0NPTU9NU19DT0xMRUNUSU9OJnF1b3Q7KQogICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICBpZigkcHViX3N0YWdlX2NvbGxlY3Rpb25fY29va2llKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAkcHViX3N0YWdlX2NvbGxlY3Rpb25fY29va2llCiAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0X2NvbGxlY3Rpb24KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAkZGVmYXVsdF9jb2xsZWN0aW9uCiAgfTsKCiAgKDp+CiAgIDogQ2hlY2sgaWYgdGhlIHB1Ymxpc2hlZCBjb2xsZWN0aW9uIGlzIGJlaW5nIHZpZXdlZAogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczppc1ZpZXdpbmdQdWJsaXNoZWQoKSB7CiAgICAgIGlmKGNvbW9tcy1kbHM6Y29sbGVjdGlvbi1uYW1lKCkgPSAmcXVvdDtQVUJMSVNIRUQmcXVvdDspIHRoZW4KICAgICAgICAgIGZuOnRydWUoKQogICAgICBlbHNlCiAgICAgICAgICBmbjpmYWxzZSgpCiAgfTsKCiAgKDp+CiAgIDogR2V0IHRoZSBiZXN0IFVSTCBmb3IgdGhlIGNvbnRlbnQgVVJJLiAKICAgOiBUaGlzIGlzIGVpdGhlciB0aGUgZGVmYXVsdCBVUkkgYmFzZWQgb24gZGV0YWlsIHR5cGUgb3Igc2hvdWxkIGFsc28gdGFrZQogICA6IGludG8gYWNjb3VudCBmcmllbmRseSB1cmxzIGFuZCBuYXZpZ2F0aW9uIHN0cnVjdHVyZXMgdG8gZmlndXJlIG91dCB0aGUgCiAgIDogYmVzdCBjaG9pY2UKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6Y29udGVudFVybCgkdXJpKSB7CgogICAgICAoOiBUT0RPOiBhZGQgZnJpZW5kbHkgVVJMIGFuZCBuYXYgc3RydWN0dXJlIGxvZ2ljIDFzdCA6KQoKICAgICAgbGV0ICRkb2MgOj0gZm46ZG9jKCR1cmkpCiAgICAgIGxldCAkbWFuYWdlZERvY1VyaSA6PSAkZG9jL3Byb3BlcnR5OjpkbHM6dmVyc2lvbi9kbHM6ZG9jdW1lbnQtdXJpCiAgICAgIGxldCAkdXJpIDo9IGlmKCRtYW5hZ2VkRG9jVXJpKSB0aGVuICRtYW5hZ2VkRG9jVXJpIGVsc2UgJHVyaQogICAgICBsZXQgJHR5cGUgOj0gJGRvYy9ub2RlKCkvZm46bmFtZSgpCiAgICAgIGxldCAkY29udGVudF9pZCA6PSBmbjp0b2tlbml6ZSggZm46dG9rZW5pemUoJHVyaSwgJnF1b3Q7LyZxdW90OylbM10sICZxdW90O1wuJnF1b3Q7KVsxXQogICAgICByZXR1cm4KICAgICAgICAgIGZuOmNvbmNhdCgmcXVvdDsvJnF1b3Q7LCAkdHlwZSwgJnF1b3Q7LyZxdW90OywgJGNvbnRlbnRfaWQpCiAgfTsKCiAgKDoKICAgOgogICA6ICBnZXRzIGxpc3Qgb2YgZG9jIHZlcnNpb25zIGFuZCB1cmkuIAogICA6CiAgIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOnZlcnNpb25IaXN0b3J5KCR1cmkpIHsKICAgICAgbGV0ICRwdWJsaXNoZWRfZG9jIDo9IGNvbW9tcy1kbHM6cHVibGlzaGVkRG9jKCR1cmkpCiAgICAgIGxldCAkcHVibGlzaGVkX3VyaSA6PSBpZigkcHVibGlzaGVkX2RvYykgdGhlbiB4ZG1wOm5vZGUtdXJpKCRwdWJsaXNoZWRfZG9jKSBlbHNlICgpCiAgICAgIHJldHVybgogICAgICAmbHQ7dmVyc2lvbnMmZ3Q7CiAgICAgICAgICB7CiAgICAgICAgICBmb3IgJHZlcnNpb24gaW4gZGxzOmRvY3VtZW50LWhpc3RvcnkoJHVyaSkvZGxzOnZlcnNpb24KICAgICAgICAgICAgbGV0ICR2ZXJzaW9uX251bSA6PSAkdmVyc2lvbi9kbHM6dmVyc2lvbi1pZC90ZXh0KCkKICAgICAgICAgICAgbGV0ICRjcmVhdGVkIDo9ICR2ZXJzaW9uL2RsczpjcmVhdGVkL3RleHQoKQogICAgICAgICAgICBsZXQgJGF1dGhvcl9pZCA6PSAkdmVyc2lvbi9kbHM6YXV0aG9yL3RleHQoKQogICAgICAgICAgICBsZXQgJGF1dGhvciA6PSBjb21vbXMtdXNlcjpnZXRVc2VybmFtZSgkYXV0aG9yX2lkKQoKCiAgICAgICAgICAgIGxldCAkbm90ZSA6PSAkdmVyc2lvbi9kbHM6YW5ub3RhdGlvbi90ZXh0KCkKICAgICAgICAgICAgbGV0ICR2ZXJzaW9uX3VyaSA6PSB4ZG1wOm5vZGUtdXJpKGRsczpkb2N1bWVudC12ZXJzaW9uKCR1cmksICR2ZXJzaW9uX251bSkpCiAgICAgICAgICAgIGxldCAkcHVibGlzaGVkIDo9ICRwdWJsaXNoZWRfdXJpIGVxICR2ZXJzaW9uX3VyaQogICAgICAgICAgICByZXR1cm4gCiAgICAgICAgICAgICAgJmx0O3ZlcnNpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICZsdDt2ZXJzaW9uLW51bWJlciZndDt7JHZlcnNpb25fbnVtfSZsdDsvdmVyc2lvbi1udW1iZXImZ3Q7CiAgICAgICAgICAgICAgICAgICZsdDtjcmVhdGVkJmd0O3skY3JlYXRlZH0mbHQ7L2NyZWF0ZWQmZ3Q7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAmbHQ7YXV0aG9yJmd0O3skYXV0aG9yfSZsdDsvYXV0aG9yJmd0OwogICAgICAgICAgICAgICAgICAmbHQ7cHVibGlzaGVkJmd0O3skcHVibGlzaGVkfSZsdDsvcHVibGlzaGVkJmd0OwogICAgICAgICAgICAgICAgICAmbHQ7dmVyc2lvbi11cmkmZ3Q7eyR2ZXJzaW9uX3VyaX0mbHQ7L3ZlcnNpb24tdXJpJmd0OwogICAgICAgICAgICAgICZsdDsvdmVyc2lvbiZndDsgIAogICAgICAgICAgfSAgICAgICAgCiAgICAgICZsdDsvdmVyc2lvbnMmZ3Q7CiAgfTsKCgoKCiAgKDogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDopCiAgKDogUFJJVkFURSBGVU5DVElPTlMgOikKICAoOiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgOikKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOl9pbXBvcnQoKSB7CiAgICAgICZxdW90O3hxdWVyeSB2ZXJzaW9uICYjMzk7MS4wLW1sJiMzOTs7CiAgICAgICBpbXBvcnQgbW9kdWxlIG5hbWVzcGFjZSBkbHMgPSAmIzM5O2h0dHA6Ly9tYXJrbG9naWMuY29tL3hkbXAvZGxzJiMzOTsgYXQgJiMzOTsvTWFya0xvZ2ljL2Rscy54cXkmIzM5OzsgJnF1b3Q7IAogIH07ICAKICAKICAoOiBDT0RFIFNBTVBMRSBCRUxPVyBCT1JST1dFRCBGUk9NIFBBUlRJQ0sgV0lFRCA6KQogIGRlY2xhcmUgZnVuY3Rpb24gbG9jYWw6ZG9jdW1lbnQtbW92ZS1mb3Jlc3QoJHVyaSBhcyB4czpzdHJpbmcsICRmb3Jlc3QtaWRzIGFzIHhzOnVuc2lnbmVkTG9uZyopCiAgewogICAgeGRtcDpkb2N1bWVudC1pbnNlcnQoCiAgICAgICR1cmksCiAgICAgIGZuOmRvYygkdXJpKSwKICAgICAgeGRtcDpkb2N1bWVudC1nZXQtcGVybWlzc2lvbnMoJHVyaSksCiAgICAgIHhkbXA6ZG9jdW1lbnQtZ2V0LWNvbGxlY3Rpb25zKCR1cmkpLAogICAgICB4ZG1wOmRvY3VtZW50LWdldC1xdWFsaXR5KCR1cmkpLAogICAgICAkZm9yZXN0LWlkcwogICAgKQogIH07CgogIGxldCAkeG1sIDo9CiAgICAmbHQ7eG1sIGF0dD0mcXVvdDtibGFoJnF1b3Q7IGF0dDI9JnF1b3Q7YmxhaCZxdW90OyZndDsKICAgICAgc2Rhc2QmbHQ7YiZndDthc2Rhc2QmbHQ7L2ImZ3Q7CiAgICAmbHQ7L3htbCZndDsKICAoOiAtLS0tLS0tLSA6KQogIGZvciAkZCBpbiBmbjpkb2MoJnF1b3Q7ZGVwdHMueG1sJnF1b3Q7KS9kZXB0cy9kZXB0bm8KICBsZXQgJGUgOj0gZm46ZG9jKCZxdW90O2VtcHMueG1sJnF1b3Q7KS9lbXBzL2VtcFtkZXB0bm8gPSAkZF0KICB3aGVyZSBmbjpjb3VudCgkZSkgJmd0Oz0gMTAKICBvcmRlciBieSBmbjphdmcoJGUvc2FsYXJ5KSBkZXNjZW5kaW5nCiAgcmV0dXJuCiAgICAgJmx0O2JpZy1kZXB0Jmd0OwogICAgICAgIHsKICAgICAgICAkZCwKICAgICAgICAmbHQ7aGVhZGNvdW50Jmd0O3tmbjpjb3VudCgkZSl9Jmx0Oy9oZWFkY291bnQmZ3Q7LAogICAgICAgICZsdDthdmdzYWwmZ3Q7e2ZuOmF2ZygkZS9zYWxhcnkpfSZsdDsvYXZnc2FsJmd0OwogICAgICAgIH0KICAgICAmbHQ7L2JpZy1kZXB0Jmd0OwogICg6IC0tLS0tLS0tIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBsb2NhbDpkZXB0aCgkZSBhcyBub2RlKCkpIGFzIHhzOmludGVnZXIKICB7CiAgICAgKDogQSBub2RlIHdpdGggbm8gY2hpbGRyZW4gaGFzIGRlcHRoIDEgOikKICAgICAoOiBPdGhlcndpc2UsIGFkZCAxIHRvIG1heCBkZXB0aCBvZiBjaGlsZHJlbiA6KQogICAgIGlmIChmbjplbXB0eSgkZS8qKSkgdGhlbiAxCiAgICAgZWxzZSBmbjptYXgoZm9yICRjIGluICRlLyogcmV0dXJuIGxvY2FsOmRlcHRoKCRjKSkgKyAxCiAgfTsKCiAgbG9jYWw6ZGVwdGgoZm46ZG9jKCZxdW90O3BhcnRsaXN0LnhtbCZxdW90OykpCgogICg6IC0tLS0tLS0tIDopCiAgJmx0O2h0bWwmZ3Q7Jmx0O2hlYWQvJmd0OyZsdDtib2R5Jmd0OwogIHsKICAgIGZvciAkYWN0IGluIGRvYygmcXVvdDtoYW1sZXQueG1sJnF1b3Q7KS8vQUNUCiAgICBsZXQgJHNwZWFrZXJzIDo9IGRpc3RpbmN0LXZhbHVlcygkYWN0Ly9TUEVBS0VSKQogICAgcmV0dXJuCiAgICAgICZsdDtkaXYmZ3Q7eyBzdHJpbmcoJGFjdC9USVRMRSkgfSZsdDsvaDEmZ3Q7CiAgICAgICAgJmx0O3VsJmd0OwogICAgICAgIHsKICAgICAgICAgIGZvciAkc3BlYWtlciBpbiAkc3BlYWtlcnMKICAgICAgICAgIHJldHVybiAmbHQ7bGkmZ3Q7eyAkc3BlYWtlciB9Jmx0Oy9saSZndDsKICAgICAgICB9CiAgICAgICAgJmx0Oy91bCZndDsKICAgICAgJmx0Oy9kaXYmZ3Q7CiAgfQogICZsdDsvYm9keSZndDsmbHQ7L2h0bWwmZ3Q7CiAgKDogLS0tLS0tLS0gOikKICB7CiAgICAgICAgICBmb3IgJGJvb2sgaW4gZG9jKCZxdW90O2Jvb2tzLnhtbCZxdW90OykvL2Jvb2sKICAgICAgICAgIHJldHVybgogICAgICAgICAgaWYgKGNvbnRhaW5zKCRib29rL2F1dGhvci90ZXh0KCksJnF1b3Q7SGVyYmVydCZxdW90Oykgb3IgY29udGFpbnMoJGJvb2svYXV0aG9yL3RleHQoKSwmcXVvdDtBc2ltb3YmcXVvdDspKQogICAgICAgICAgICAgICAgICB0aGVuICRib29rCiAgICAgICAgICBlbHNlICRib29rL3RleHQoKQoKICAgICAgICAgIGxldCAkbGV0IDo9ICZsdDt4Jmd0OyZxdW90O3Rlc3QmcXVvdDsmbHQ7L3gmZ3Q7CiAgICAgICAgICByZXR1cm4gZWxlbWVudCBlbGVtZW50IHsKICAgICAgICAgIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgeyAxIH0sCiAgICAgICAgICBlbGVtZW50IHRlc3QgeyAmIzM5O2EmIzM5OyB9LAogICAgICAgICAgYXR0cmlidXRlIGZvbyB7ICZxdW90O2JhciZxdW90OyB9LAogICAgICAgICAgZm46ZG9jKClbIGZvby9AYmFyIGVxICRsZXQgXSwKICAgICAgICAgIC8veCB9CiAgfQogICg6IC0tLS0tLS0tIDopCiAgJmx0O2JpYiZndDsKICAgewogICAgZm9yICRiIGluIGRvYygmcXVvdDtodHRwOi8vYnN0b3JlMS5leGFtcGxlLmNvbS9iaWIueG1sJnF1b3Q7KS9iaWIvYm9vawogICAgd2hlcmUgJGIvcHVibGlzaGVyID0gJnF1b3Q7QWRkaXNvbi1XZXNsZXkmcXVvdDsgYW5kICRiL0B5ZWFyICZndDsgMTk5MQogICAgcmV0dXJuCiAgICAgICZsdDtib29rIHllYXI9JnF1b3Q7eyAkYi9AeWVhciB9JnF1b3Q7Jmd0OwogICAgICAgeyAkYi90aXRsZSB9CiAgICAgICZsdDsvYm9vayZndDsKICAgfQogICZsdDsvYmliJmd0OwogICg6IC0tLS0tLS0tIDopCjwvdGV4dGFyZWE+CjwvZGl2Pgo8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOjE1cHg7Ij4KICAgIERldmVsb3BlZCBieSA8YSBocmVmPSJodHRwOi8vbWlrZS5icmV2b29ydC5jb20iPk1pa2UgQnJldm9vcnQ8L2E+ICg8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20iPkBtYnJldm9vcnQ8L2E+KSAKICAgIDxici8+PHNtYWxsPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+PC9zbWFsbD48L2Rpdj4KCjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgaGVpZ2h0OiAiNTUwcHgiLAogICAgcGFyc2VyZmlsZTogWyIuLi9jb250cmliL3hxdWVyeS9qcy90b2tlbml6ZXhxdWVyeS5qcyIsICIuLi9jb250cmliL3hxdWVyeS9qcy9wYXJzZXhxdWVyeS5qcyIgXSwKICAgIHN0eWxlc2hlZXQ6IFsiY3NzL3hxY29sb3JzLmNzcyJdLAogICAgcGF0aDogIi4uLy4uL2pzLyIsCiAgICBjb250aW51b3VzU2Nhbm5pbmc6IGZhbHNlLCAvLzUwMCwKICAgIGxpbmVOdW1iZXJzOiB0cnVlCiAgfSk7CiAgCiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICQoIi5jc3Mtc3dpdGNoIikuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgIGVkaXRvci5zZXRTdHlsZXNoZWV0KCJjc3MvIiArICQodGhpcykuYXR0cigicmVsIikpOwogICAgICB9KTsKICB9KTsKPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/js/parsexquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwoKLy8gVGhlIFhRdWVyeSBwYXJzZXIgdXNlcyB0aGUgeHF1ZXJ5IHRva2VuaXplciBpbiB0b2tlbml6ZXhxdWVyeS5qcy4gR2l2ZW4gdGhlCi8vIHN0cmVhbSBvZiB0b2tlbnMsIGl0IG1ha2VzIGRlY2lzaW9ucyB0byBvdmVycmlkZSB0aGUgdG9rZW5zIHN0eWxlcyBieSBldmFsdWF0aW5nCi8vIGl0J3MgY29udGV4dCB3aXRoIHJlc3BlY3QgdG8gdGhlIG90aGVyIHRva2Vucy4gCgp2YXIgWHF1ZXJ5UGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIHhxdWVyeUxleGljYWwoc3RhcnRDb2x1bW4sIGN1cnJlbnRUb2tlbiwgYWxpZ24sIHByZXZpb3VzVG9rZW4sIGVuY2xvc2VMZXZlbCkgewogICAgICAgIHRoaXMuc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IGN1cnJlbnRUb2tlbjsKICAgICAgICBpZiAoYWxpZ24gIT0gbnVsbCkKICAgICAgICB0aGlzLmFsaWduID0gYWxpZ247CiAgICAgICAgdGhpcy5wcmV2aW91c1Rva2VuID0gcHJldmlvdXNUb2tlbjsKICAgICAgICB0aGlzLmVuY2xvc2VMZXZlbCA9IGVuY2xvc2VMZXZlbDsKICAgIH0KCiAgICAvLyBYcXVlcnkgaW5kZW50YXRpb24gcnVsZXMuCiAgICBmdW5jdGlvbiBpbmRlbnRYcXVlcnkobGV4aWNhbCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbihmaXJzdENoYXJzLCBjdXJJbmRlbnQsIGRpcmVjdGlvbikgewogICAgICAgICAgICAvLyB0ZXN0IGlmIHRoaXMgaXMgbmV4dCByb3cgYWZ0ZXIgdGhlIG9wZW4gYnJhY2UKICAgICAgICAgICAgaWYgKGxleGljYWwuZW5jbG9zZUxldmVsICE9PSAwICYmIGZpcnN0Q2hhcnMgPT09ICJ9IikgewogICAgICAgICAgICAgICAgcmV0dXJuIGxleGljYWwuc3RhcnRDb2x1bW4gLSBpbmRlbnRVbml0OwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbGV4aWNhbC5zdGFydENvbHVtbjsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlWHF1ZXJ5KHNvdXJjZSkgewogICAgICAgIHZhciB0b2tlbnMgPSB0b2tlbml6ZVhxdWVyeShzb3VyY2UpOwoKICAgICAgICB2YXIgY29sdW1uID0gMDsKICAgICAgICAvLyB0ZWxscyB0aGUgZmlyc3Qgbm9uLXdoaXRlc3BhY2Ugc3ltYm9sIGZyb20gdGhlCiAgICAgICAgLy8gc3RhcnQgb2Ygcm93LgogICAgICAgIHZhciBwcmV2aW91c1Rva2VuID0gbnVsbDsKICAgICAgICB2YXIgcHJldmlvdXNUb2tlbnMgPSBbXTsKICAgICAgICAvL21iCiAgICAgICAgdmFyIGFsaWduID0gZmFsc2U7CiAgICAgICAgLy8gdGVsbHMgaWYgdGhlIHRleHQgYWZ0ZXIgdGhlIG9wZW4gYnJhY2UKICAgICAgICB2YXIgZW5jbG9zZUxldmVsID0gMDsKICAgICAgICAvLyB0ZWxscyBjdXJlbnQgb3BlbmVkIGJyYWNlcyBxdWFudGl0eQogICAgICAgIHZhciBjYyA9IFtzdGF0ZW1lbnRzXTsKICAgICAgICB2YXIgY29uc3VtZSwKICAgICAgICBtYXJrZWQ7CgogICAgICAgIHZhciBpdGVyID0gewogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHRva2Vucy5uZXh0KCk7CgogICAgICAgICAgICAgICAgLy8gc2luY2UgYXR0cmlidXRlIGFuZCBlbGVtZW50cyBjYW4gYmUgbmFtZWQgdGhlIHNhbWUsIGFzc3VtZSB0aGUKICAgICAgICAgICAgICAgIC8vIGZvbGxvd2luZyB3b3JkIG9mIGVhY2ggaXMgYSB2YXJpYWJsZQogICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVG9rZW4gJiYgKHByZXZpb3VzVG9rZW4uY29udGVudCA9PSAiYXR0cmlidXRlIiB8fCBwcmV2aW91c1Rva2VuLmNvbnRlbnQgPT0gImVsZW1lbnQiKSAmJiBwcmV2aW91c1Rva2VuLnR5cGUgPT0gInhxdWVyeUtleXdvcmRDIikgewogICAgICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgPSAidmFyaWFibGUiOwogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gInhxdWVyeVZhcmlhYmxlIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcmV2aW91c1Rva2VuICYmIHByZXZpb3VzVG9rZW4uY29udGVudCA9PSAieHF1ZXJ5IiAmJiB0b2tlbi5jb250ZW50ID09ICJ2ZXJzaW9uIikgewogICAgICAgICAgICAgICAgICAgIC8vdG9rZW4udHlwZT0idmFyaWFibGUiOwogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gInhxdWVyeU1vZGlmaWVyIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbi50eXBlID09ICJ3b3JkIiAmJiAoZ2V0UHJldmlvdXMoMykuc3R5bGUgPT0gInhtbC1hdHRyaWJ1dGUiIHx8IHByZXZpb3VzVG9rZW4udHlwZSA9PSAieG1sLXRhZy1vcGVuIikgJiYKICAgICAgICAgICAgICAgIHByZXZpb3VzVG9rZW4uY29udGVudC5zdWJzdHJpbmcocHJldmlvdXNUb2tlbi5jb250ZW50Lmxlbmd0aCAtIDEpICE9ICI+IikgewogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gInhtbC1hdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAocHJldmlvdXNUb2tlbiAmJiBwcmV2aW91c1Rva2VuLmNvbnRlbnQgPT0gIj0iICYmIHByZXZpb3VzVG9rZW5zLmxlbmd0aCA+IDIKICAgICAgICAgICAgICAgICYmIGdldFByZXZpb3VzKDIpLnN0eWxlID09ICJ4bWwtYXR0cmlidXRlIikgewogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gInhtbC1hdHRyaWJ1dGUtdmFsdWUiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZih0b2tlbi50eXBlID09ICJzdHJpbmciICYmIHByZXZpb3VzVG9rZW4udHlwZSA9PSAifSIpIHsKICAgICAgICAgICAgICAgICAgICAvLyBsb29raW5nIGZvciBleHByZXNzaW9ucyB3aXRoaW4gYSBzdHJpbmcgYW5kIGRldGVjdGluZyBpZiB0aGUgZXhwcmVzc2lvbiBpcyB3aXRoaW4gYW4gYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgdmFyIGk9MDsKICAgICAgICAgICAgICAgICAgICB3aGlsZShpKysgPCBwcmV2aW91c1Rva2Vucy5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZihnZXRQcmV2aW91cyhpKS5zdHlsZSA9PSAieG1sLWF0dHJpYnV0ZS12YWx1ZSIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9ICJ4bWwtYXR0cmlidXRlLXZhbHVlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGdldFByZXZpb3VzKGkpLnR5cGUgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgCiAgICAgICAgICAgICAgICBlbHNlIGlmKHRva2VuLnR5cGUgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAvLyBicnV0ZSBmb3JjZSBjaGVjayBmb3Igc3RyaW5ncyBpbnNpZGUgWE1MIFRPRE8uLi4gc29tZXRoaW5nIGVsc2UKICAgICAgICAgICAgICAgICAgICB2YXIgaT0wOwogICAgICAgICAgICAgICAgICAgIHZhciBjbG9zZUNvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZShpKysgPCBwcmV2aW91c1Rva2Vucy5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IGdldFByZXZpb3VzKGkpOyAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZihwcmV2LnR5cGUgPT0gInhtbC10YWctb3BlbiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsb3NlQ291bnQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gIndvcmQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYocHJldi50eXBlID09ICJ4bWwtdGFnLWNsb3NlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VDb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYocHJldi5jb250ZW50ID09ICI6PSIgfHwgcHJldi5jb250ZW50ID09ICJyZXR1cm4iIHx8IHByZXYuY29udGVudCA9PSAieyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKGdldFByZXZpb3VzKDIpLmNvbnRlbnQgPT0gIm1vZHVsZSIgJiYgZ2V0UHJldmlvdXMoMSkuY29udGVudCA9PSAibmFtZXNwYWNlIikgCiAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGU9InhxdWVyeUZ1bmN0aW9uIjsKICAgICAgICAgICAgICAgIGVsc2UgaWYodG9rZW4uY29udGVudCA9PSAiPSIgJiYgZ2V0UHJldmlvdXMoMSkuc3R5bGUgPT0gInhtbC1hdHRyaWJ1dGUiKQogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlPSJ4bWwtYXR0cmlidXRlIgoKICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09ICJ3aGl0ZXNwYWNlIikgewogICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PSAiXG4iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlc3QgaWYgdGhpcyBpcyBlbmQgb2YgbGluZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNUb2tlbiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVG9rZW4udHlwZSA9PT0gInsiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVzdCBpZiB0aGVyZSBpcyBvcGVuIGJyYWNlIGF0IHRoZSBlbmQgb2YgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gKz0gaW5kZW50VW5pdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNsb3NlTGV2ZWwrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1Rva2VuLnR5cGUgPT09ICJ9IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlc3QgaWYgdGhlcmUgaXMgY2xvc2UgYnJhY2UgYXQgdGhlIGVuZCBvZiBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5jbG9zZUxldmVsID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNsb3NlTGV2ZWwtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2xvc2VMZXZlbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxleGljYWwgPSBuZXcgeHF1ZXJ5TGV4aWNhbChjb2x1bW4sIHRva2VuLCBhbGlnbiwgcHJldmlvdXNUb2tlbiwgZW5jbG9zZUxldmVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50WHF1ZXJ5KGxleGljYWwpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbWFpbnRhaW4gdGhlIHByZXZpb3VzIHRva2VucyBhcnJheSBzbyB0aGF0IGl0IGRvZXNuJ3QgY29udGludWUgdG8gbGVhawogICAgICAgICAgICAgICAgLy8ga2VlcCBvbmx5IHRoZSBsYXN0IDUwMDAKICAgICAgICAgICAgICAgIGlmKHByZXZpb3VzVG9rZW5zLmxlbmd0aCA+IDUwMDApIHByZXZpb3VzVG9rZW5zLnNoaWZ0KCk7CgogICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdW1lID0gbWFya2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgLy8gVGFrZSBhbmQgZXhlY3V0ZSB0aGUgdG9wbW9zdCBhY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgY2MucG9wKCkodG9rZW4udHlwZSwgdG9rZW4uY29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFya2VkIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBzdHlsZSBvZiB0aGUgY3VycmVudCB0b2tlbi4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlZCkKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSBtYXJrZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhlcmUgd2UgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGxvY2FsIGFuZCBnbG9iYWwgdmFyaWFibGVzLgogICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1Rva2VuID0gdG9rZW47CiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzVG9rZW5zW3ByZXZpb3VzVG9rZW5zLmxlbmd0aF0gPSB0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBfY2MgPSBjYy5jb25jYXQoW10pLAogICAgICAgICAgICAgICAgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGUsCiAgICAgICAgICAgICAgICBfY29sdW1uID0gY29sdW1uOwoKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBjb3B5UGFyc2VyKF9zb3VyY2UpIHsKICAgICAgICAgICAgICAgICAgICBjYyA9IF9jYy5jb25jYXQoW10pOwogICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IGluZGVudGVkID0gX2NvbHVtbjsKICAgICAgICAgICAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZVhxdWVyeShfc291cmNlLCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgfSwKCiAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gc3RhdGVtZW50cyh0eXBlKSB7CiAgICAgICAgICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgc3RhdGVtZW50cyk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzdGF0ZW1lbnQodHlwZSkgewogICAgICAgICAgICBjb250KCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwdXNoKGZzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSBmcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkKICAgICAgICAgICAgY2MucHVzaChmc1tpXSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjb250KCkgewogICAgICAgICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgICAgICAgIGNvbnN1bWUgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcGFzcygpIHsKICAgICAgICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICAgICAgICBjb25zdW1lID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAoKICAgICAgICBmdW5jdGlvbiBnZXRQcmV2aW91cyhudW1iZXJGcm9tQ3VycmVudCkgewogICAgICAgICAgICB2YXIgbCA9IHByZXZpb3VzVG9rZW5zLmxlbmd0aDsKICAgICAgICAgICAgaWYgKGwgLSBudW1iZXJGcm9tQ3VycmVudCA+PSAwKQogICAgICAgICAgICByZXR1cm4gcHJldmlvdXNUb2tlbnNbbCAtIG51bWJlckZyb21DdXJyZW50XTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIiIsCiAgICAgICAgICAgICAgICBzdHlsZTogIiIsCiAgICAgICAgICAgICAgICBjb250ZW50OiAiIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGl0ZXI7CgoKICAgIH0KICAgIHJldHVybiB7CiAgICAgICAgbWFrZTogcGFyc2VYcXVlcnkKICAgIH07Cn0pKCk7]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/js/tokenizexquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwoKLy8gQSB0b2tlbml6ZXIgZm9yIHhRdWVyeSwgbG9va3MgYXQgdGhlIHNvdXJjZSBzdHJlYW0gYW5kIHRva2VuaXplcywgYXBwbHlpbmcKLy8gbWV0YWRhdGEgdG8gYmUgYWJsZSB0byBhcHBseSB0aGUgcHJvcGVyIENTUyBjbGFzc2VzIGluIHRoZSBwYXJzZXIuCgp2YXIgdG9rZW5pemVYcXVlcnkgPSAoZnVuY3Rpb24oKSB7CiAgICAvLyBBZHZhbmNlIHRoZSBzdHJlYW0gdW50aWwgdGhlIGdpdmVuIGNoYXJhY3RlciAobm90IHByZWNlZGVkIGJ5IGEKICAgIC8vIGJhY2tzbGFzaCkgaXMgZW5jb3VudGVyZWQsIG9yIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgcmVhY2hlZC4KICAgIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2FwZWQpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgICAgICAgICAgY29uc29sZS5kZWJ1Zyhlc2NhcGVkKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICB9CgogICAgLy8gQSBtYXAgb2YgWHF1ZXJ5J3Mga2V5d29yZHMuIFRoZSBhL2IvYyBrZXl3b3JkIGRpc3RpbmN0aW9uIGlzCiAgICAvLyB2ZXJ5IHJvdWdoLCBidXQgaXQgZ2l2ZXMgdGhlIHBhcnNlciBlbm91Z2ggaW5mb3JtYXRpb24gdG8gcGFyc2UKICAgIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogICAgLy8gaW5jb3JyZWN0IGNvZGUpLiBUaGUgc3R5bGUgaW5mb3JtYXRpb24gaW5jbHVkZWQgaW4gdGhlc2Ugb2JqZWN0cwogICAgLy8gaXMgdXNlZCBieSB0aGUgaGlnaGxpZ2h0ZXIgdG8gcGljayB0aGUgY29ycmVjdCBDU1Mgc3R5bGUgZm9yIGEKICAgIC8vIHRva2VuLgogICAgdmFyIGtleXdvcmRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gcmVzdWx0KHR5cGUsIHN0eWxlKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAogICAgICAgICAgICAgICAgc3R5bGU6IHN0eWxlCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICB2YXIgYWxsS2V5d29yZHMgPSB7fTsKICAgICAgICB2YXIga2V5d29yZHNMaXN0ID0ge307CiAgICAgICAgCiAgICAgICAgLy8gYW4gYXJyYXkgb2YgYWxsIG9mIHRoZSBrZXl3b3JkcyB0aGF0IHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LCBvdGhlcndpc2Uga2V5d29yZHMgd2lsbCBiZSBtb3JlIHNwZWNpZmljYWxseSBzcGVjaWZpZWQgYW5kIG92ZXJyaWRkZW4gYmVsb3cKICAgICAgICB2YXIgYWxsS2V5d29yZHNBcnJheSA9IG5ldyBBcnJheSgnYWZ0ZXInLCdhbmNlc3RvcicsJ2FuY2VzdG9yLW9yLXNlbGYnLCdhbmQnLCdhcycsJ2FzY2VuZGluZycsJ2Fzc2VydCcsJ2F0dHJpYnV0ZScsJ2JlZm9yZScsJ2J5JywnY2FzZScsJ2Nhc3QnLCdjaGlsZCcsJ2NvbW1lbnQnLCdjb21tZW50JywnZGVjbGFyZScsJ2RlZmF1bHQnLCdkZWZpbmUnLCdkZXNjZW5kYW50JywnZGVzY2VuZGFudC1vci1zZWxmJywnZGVzY2VuZGluZycsJ2RvY3VtZW50LW5vZGUnLCdlbGVtZW50JywnZWxlbWVudCcsJ2Vsc2UnLCdlcScsJ2V2ZXJ5JywnZXhjZXB0JywnZXh0ZXJuYWwnLCdmb2xsb3dpbmcnLCdmb2xsb3dpbmctc2libGluZycsJ2ZvbGxvd3MnLCdmb3InLCdmdW5jdGlvbicsJ2lmJywnaW1wb3J0JywnaW4nLCdpbnN0YW5jZScsJ2ludGVyc2VjdCcsJ2l0ZW0nLCdsZXQnLCdtb2R1bGUnLCduYW1lc3BhY2UnLCdub2RlJywnbm9kZScsJ29mJywnb25seScsJ29yJywnb3JkZXInLCdwYXJlbnQnLCdwcmVjZWRlcycsJ3ByZWNlZGluZycsJ3ByZWNlZGluZy1zaWJsaW5nJywncHJvY2Vzc2luZy1pbnN0cnVjdGlvbicsJ3JlZicsJ3JldHVybicsJ3JldHVybnMnLCdzYXRpc2ZpZXMnLCdzY2hlbWEnLCdzY2hlbWEtZWxlbWVudCcsJ3NlbGYnLCdzb21lJywnc29ydGJ5Jywnc3RhYmxlJywndGV4dCcsJ3RoZW4nLCd0bycsJ3RyZWF0JywndHlwZXN3aXRjaCcsJ3VuaW9uJywndmFyaWFibGUnLCd2ZXJzaW9uJywnd2hlcmUnLCd4cXVlcnknKTsKCiAgICAgICAgZm9yKHZhciBpIGluIGFsbEtleXdvcmRzQXJyYXkpIHsKICAgICAgICAgICAgYWxsS2V5d29yZHNbYWxsS2V5d29yZHNBcnJheVtpXV0gPSByZXN1bHQoImtleXdvcmQiLCAieHF1ZXJ5S2V5d29yZCIpOwogICAgICAgIH0KCiAgICAgICAgLyogVGhpcyBuZXh0IGJpdCBpcyBicm9rZW4gZG93biB0aGlzIHdhcyBmb3IgZnV0dXJlIGluZGVudGF0aW9uIHN1cHBvcnQgKi8KICAgICAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UgYSBwYXJlbnRoaXNlZCBleHByZXNzaW9uLCBhbmQgdGhlbiBhIHN0YXRlbWVudCAoaWYpCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlLZXl3b3JkQSddID0gbmV3IEFycmF5KCdpZicsICdzd2l0Y2gnLCAnd2hpbGUnLCAnZm9yJyk7CgogICAgICAgIC8vIGtleXdvcmRzIHRoYXQgdGFrZSBqdXN0IGEgc3RhdGVtZW50IChlbHNlKQogICAgICAgIGtleXdvcmRzTGlzdFsneHF1ZXJ5S2V5d29yZEInXSA9IG5ldyBBcnJheSgnZWxzZScsICd0aGVuJywgJ3RyeScsICdmaW5hbGx5Jyk7CgogICAgICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEgc3RhdGVtZW50IChyZXR1cm4pCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlLZXl3b3JkQyddID0gbmV3IEFycmF5KCdlbGVtZW50JywgJ2F0dHJpYnV0ZScsICdsZXQnLCAnaW1wbGVtZW50cycsICdpbXBvcnQnLCAnbW9kdWxlJywgJ25hbWVzcGFjZScsICdyZXR1cm4nLCAnc3VwZXInLCAndGhpcycsICd0aHJvd3MnLCAnd2hlcmUnKTsKCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlPcGVyYXRvciddID0gbmV3IEFycmF5KCdlcScsICduZScsICdsdCcsICdsZScsICdndCcsICdnZScpOwoKICAgICAgICBmb3IgKHZhciBrZXl3b3JkVHlwZSBpbiBrZXl3b3Jkc0xpc3QpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXl3b3Jkc0xpc3Rba2V5d29yZFR5cGVdLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBhbGxLZXl3b3Jkc1trZXl3b3Jkc0xpc3Rba2V5d29yZFR5cGVdW2ldXSA9IHJlc3VsdChrZXl3b3JkVHlwZSwgInhxdWVyeUtleXdvcmQiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAga2V5d29yZHNMaXN0ID0ge307CgogICAgICAgIGtleXdvcmRzTGlzdFsneHF1ZXJ5QXRvbSddID0gbmV3IEFycmF5KCdudWxsJywgJ2ZuOmZhbHNlKCknLCAnZm46dHJ1ZSgpJyk7CiAgICAgICAgZm9yICh2YXIga2V5d29yZFR5cGUgaW4ga2V5d29yZHNMaXN0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWxsS2V5d29yZHNba2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXVtpXV0gPSByZXN1bHQoa2V5d29yZFR5cGUsIGtleXdvcmRUeXBlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAga2V5d29yZHNMaXN0ID0ge307CiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlNb2RpZmllciddID0gbmV3IEFycmF5KCd4cXVlcnknLCAnYXNjZW5kaW5nJywgJ2Rlc2NlbmRpbmcnKTsKICAgICAgICBrZXl3b3Jkc0xpc3RbJ3hxdWVyeVR5cGUnXSA9IG5ldyBBcnJheSgneHM6c3RyaW5nJywgJ3hzOmZsb2F0JywgJ3hzOmRlY2ltYWwnLCAneHM6ZG91YmxlJywgJ3hzOmludGVnZXInLCAneHM6Ym9vbGVhbicsICd4czpkYXRlJywgJ3hzOmRhdGVUaW1lJywgJ3hzOnRpbWUnLCAneHM6ZHVyYXRpb24nLCAneHM6ZGF5VGltZUR1cmF0aW9uJywgJ3hzOnRpbWUnLCAneHM6eWVhck1vbnRoRHVyYXRpb24nLCAnbnVtZXJpYycsICd4czpoZXhCaW5hcnknLCAneHM6YmFzZTY0QmluYXJ5JywgJ3hzOmFueVVSSScsICd4czpRTmFtZScsICd4czpieXRlJywneHM6Ym9vbGVhbicsJ3hzOmFueVVSSScsJ3hmOnllYXJNb250aER1cmF0aW9uJyk7CiAgICAgICAgZm9yICh2YXIga2V5d29yZFR5cGUgaW4ga2V5d29yZHNMaXN0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWxsS2V5d29yZHNba2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXVtpXV0gPSByZXN1bHQoJ2Z1bmN0aW9uJywga2V5d29yZFR5cGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBhbGxLZXl3b3JkcyA9IG9iamVjdENvbmNhdChhbGxLZXl3b3JkcywgewogICAgICAgICAgICAiY2F0Y2giOiByZXN1bHQoImNhdGNoIiwgInhxdWVyeUtleXdvcmQiKSwKICAgICAgICAgICAgImZvciI6IHJlc3VsdCgiZm9yIiwgInhxdWVyeUtleXdvcmQiKSwKICAgICAgICAgICAgImNhc2UiOiByZXN1bHQoImNhc2UiLCAieHF1ZXJ5S2V5d29yZCIpLAogICAgICAgICAgICAiZGVmYXVsdCI6IHJlc3VsdCgiZGVmYXVsdCIsICJ4cXVlcnlLZXl3b3JkIiksCiAgICAgICAgICAgICJpbnN0YW5jZW9mIjogcmVzdWx0KCJvcGVyYXRvciIsICJ4cXVlcnlLZXl3b3JkIikKICAgICAgICB9KTsKCiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSB4cXVlcnkga2V5d29yZHMKICAgICAgICB2YXIga2V5d29yZHNMaXN0ID0ge307CgogICAgICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEgc3RhdGVtZW50IChyZXR1cm4pCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlLZXl3b3JkQyddID0gbmV3IEFycmF5KCdhc3NlcnQnLCAncHJvcGVydHknKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXdvcmRzTGlzdFsneHF1ZXJ5S2V5d29yZEMnXS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBhbGxLZXl3b3Jkc1trZXl3b3Jkc0xpc3RbJ3hxdWVyeUtleXdvcmRDJ11baV1dID0gcmVzdWx0KCJ4cXVlcnlLZXl3b3JkQyIsICJ4cXVlcnlLZXl3b3JkIik7CiAgICAgICAgfQoKICAgICAgICAvLyBvdGhlciB4cXVlcnkga2V5d29yZHMKICAgICAgICBhbGxLZXl3b3JkcyA9IG9iamVjdENvbmNhdChhbGxLZXl3b3JkcywgewogICAgICAgICAgICAiYXMiOiByZXN1bHQoIm9wZXJhdG9yIiwgInhxdWVyeUtleXdvcmQiKSwKICAgICAgICAgICAgImluIjogcmVzdWx0KCJvcGVyYXRvciIsICJ4cXVlcnlLZXl3b3JkIiksCiAgICAgICAgICAgICJhdCI6IHJlc3VsdCgib3BlcmF0b3IiLCAieHF1ZXJ5S2V5d29yZCIpLAogICAgICAgICAgICAiZGVjbGFyZSI6IHJlc3VsdCgiZnVuY3Rpb24iLCAieHF1ZXJ5S2V5d29yZCIpLAogICAgICAgICAgICAiZnVuY3Rpb24iOiByZXN1bHQoImZ1bmN0aW9uIiwgInhxdWVyeUtleXdvcmQiKQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBhbGxLZXl3b3JkczsKICAgIH0gKCk7CgogICAgLy8gdGhlcmUgYXJlIHNvbWUgc3BlY2lhbCBjYXNlcyB3aGVyZSBvcmRpbmFyaWx5IHRleHQgbGlrZSB4czpzdHJpbmcoKSB3b3VsZAogICAgLy8gbG9vayBsaWtlIGEgZnVuY3Rpb24gY2FsbCB3aGVuIGl0IGlzIHJlYWxseSBhIHR5cGUsIGV0Yy4KICAgIGZ1bmN0aW9uIHNwZWNpYWxDYXNlcyhzb3VyY2UsIHdvcmQpIHsKICAgICAgICBpZiAod29yZCBpbiB7CiAgICAgICAgICAgICJmbjp0cnVlIjogIiIsCiAgICAgICAgICAgICJmbjpmYWxzZSI6ICIiCiAgICAgICAgfSAmJiBzb3VyY2UubG9va0FoZWFkKCIoKSIsIGZhbHNlKSkgewogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAiZnVuY3Rpb24iLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4cXVlcnlBdG9tIiwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHdvcmQgKyAiKCkiCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHdvcmQgaW4gewogICAgICAgICAgICAibm9kZSI6ICIiLAogICAgICAgICAgICAiaXRlbSI6ICIiLAogICAgICAgICAgICAidGV4dCI6ICIiCiAgICAgICAgfSAmJiBzb3VyY2UubG9va0FoZWFkKCIoKSIsIGZhbHNlKSkgewogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAiZnVuY3Rpb24iLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4cXVlcnlUeXBlIiwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHdvcmQgKyAiKCkiCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHNvdXJjZS5sb29rQWhlYWQoIigiKSkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogImZ1bmN0aW9uIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5RnVuY3Rpb24iLAogICAgICAgICAgICAgICAgY29udGVudDogd29yZAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHJldHVybiBudWxsOwogICAgfQoKICAgIC8vIFNvbWUgaGVscGVyIHJlZ2V4cCBtYXRjaGVycy4KICAgIHZhciBpc09wZXJhdG9yQ2hhciA9IC9bPStcLSomJSE/QFwvXS87IAogICAgdmFyIGlzRGlnaXQgPSAvWzAtOV0vOwogICAgdmFyIGlzSGV4RGlnaXQgPSAvXlswLTlBLUZhLWZdJC87CiAgICB2YXIgaXNXb3JkQ2hhciA9IC9bXHdcOlwtXCRfXS87CiAgICB2YXIgaXNWYXJpYWJsZUNoYXIgPSAvW1x3XCRfLV0vOwogICAgdmFyIGlzWHF1ZXJ5VmFyaWFibGVDaGFyID0gL1tcd1wuKClcW1xde31dLzsKICAgIHZhciBpc1B1bmN0dWF0aW9uID0gL1tcW1xde31cKFwpLDtcLl0vOwogICAgdmFyIGlzU3RyaW5nRGVsaW1ldGVyID0gL15bXC8nIl0kLzsKICAgIHZhciBpc1JlZ2V4cERlbGltZXRlciA9IC9eW1wvJyRdLzsKICAgIHZhciB0YWduYW1lQ2hhciA9IC9bPFx3XDpcLVwvX10vOwoKICAgIC8vIFdyYXBwZXIgYXJvdW5kIHhxdWVyeVRva2VuIHRoYXQgaGVscHMgbWFpbnRhaW4gcGFyc2VyIHN0YXRlICh3aGV0aGVyCiAgICAvLyB3ZSBhcmUgaW5zaWRlIG9mIGEgbXVsdGktbGluZSBjb21tZW50IGFuZCB3aGV0aGVyIHRoZSBuZXh0IHRva2VuCiAgICAvLyBjb3VsZCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbikuCiAgICBmdW5jdGlvbiB4cXVlcnlUb2tlblN0YXRlKGluc2lkZSwgcmVnZXhwKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICAgICAgdmFyIG5ld0luc2lkZSA9IGluc2lkZTsKICAgICAgICAgICAgdmFyIHR5cGUgPSB4cXVlcnlUb2tlbihpbnNpZGUsIHJlZ2V4cCwgc291cmNlLAogICAgICAgICAgICBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICBuZXdJbnNpZGUgPSBjOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIG5ld1JlZ2V4cCA9IHR5cGUudHlwZSA9PSAib3BlcmF0b3IiIHx8IHR5cGUudHlwZSA9PSAieHF1ZXJ5S2V5d29yZEMiIHx8IHR5cGUudHlwZSA9PSAieHF1ZXJ5S2V5d29yZEMiIHx8IHR5cGUudHlwZS5tYXRjaCgvXltcW3t9XCgsOzpdJC8pOwogICAgICAgICAgICBpZiAobmV3UmVnZXhwICE9IHJlZ2V4cCB8fCBuZXdJbnNpZGUgIT0gaW5zaWRlKQogICAgICAgICAgICBzZXRTdGF0ZSh4cXVlcnlUb2tlblN0YXRlKG5ld0luc2lkZSwgbmV3UmVnZXhwKSk7CiAgICAgICAgICAgIHJldHVybiB0eXBlOwogICAgICAgIH07CiAgICB9CgogICAgLy8gVGhlIHRva2VuIHJlYWRlciwgaW50ZWRlZCB0byBiZSB1c2VkIGJ5IHRoZSB0b2tlbml6ZXIgZnJvbQogICAgLy8gdG9rZW5pemUuanMgKHRocm91Z2ggeHF1ZXJ5VG9rZW5TdGF0ZSkuIEFkdmFuY2VzIHRoZSBzb3VyY2Ugc3RyZWFtCiAgICAvLyBvdmVyIGEgdG9rZW4sIGFuZCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB0eXBlIGFuZCBzdHlsZQogICAgLy8gb2YgdGhhdCB0b2tlbi4KICAgIGZ1bmN0aW9uIHhxdWVyeVRva2VuKGluc2lkZSwgcmVnZXhwLCBzb3VyY2UsIHNldEluc2lkZSkgewogICAgICAgIGZ1bmN0aW9uIHJlYWRIZXhOdW1iZXIoKSB7CiAgICAgICAgICAgIHNldEluc2lkZShudWxsKTsKICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgLy8gc2tpcCB0aGUgJ3gnCiAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzSGV4RGlnaXQpOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeU51bWJlciIKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlYWROdW1iZXIoKSB7CiAgICAgICAgICAgIHNldEluc2lkZShudWxsKTsKICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNEaWdpdCk7CiAgICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIuIikpIHsKICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CgogICAgICAgICAgICAgICAgLy8gcmVhZCByYW5nZXMKICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIuIikpCiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwoKICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzRGlnaXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCJlIikgfHwgc291cmNlLmVxdWFscygiRSIpKSB7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi0iKSkKICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc0RpZ2l0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeU51bWJlciIKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgLy8gUmVhZCBhIHdvcmQsIGxvb2sgaXQgdXAgaW4ga2V5d29yZHMuIElmIG5vdCBmb3VuZCwgaXQgaXMgYQogICAgICAgIC8vIHZhcmlhYmxlLCBvdGhlcndpc2UgaXQgaXMgYSBrZXl3b3JkIG9mIHRoZSB0eXBlIGZvdW5kLgogICAgICAgIGZ1bmN0aW9uIHJlYWRXb3JkKCkgewogICAgICAgICAgICAvL3NldEluc2lkZShudWxsKTsKICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNXb3JkQ2hhcik7CiAgICAgICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpOwogICAgICAgICAgICB2YXIgc3BlY2lhbENhc2UgPSBzcGVjaWFsQ2FzZXMoc291cmNlLCB3b3JkKTsKICAgICAgICAgICAgaWYgKHNwZWNpYWxDYXNlKSByZXR1cm4gc3BlY2lhbENhc2U7CiAgICAgICAgICAgIHZhciBrbm93biA9IGtleXdvcmRzLmhhc093blByb3BlcnR5KHdvcmQpICYmIGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICAgICAgICBpZiAoa25vd24pIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBrbm93bi50eXBlLAogICAgICAgICAgICAgICAgc3R5bGU6IGtub3duLnN0eWxlLAogICAgICAgICAgICAgICAgY29udGVudDogd29yZAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAid29yZCIsCiAgICAgICAgICAgICAgICBzdHlsZTogIndvcmQiLAogICAgICAgICAgICAgICAgY29udGVudDogd29yZAogICAgICAgICAgICB9OwogICAgICAgIH0KCgogICAgICAgIC8vIHJlYWQgcmVnZXhwIGxpa2UgL1x3ezF9OlxcLitcXC4rLwogICAgICAgIGZ1bmN0aW9uIHJlYWRSZWdleHAoKSB7CiAgICAgICAgICAgIC8vIGdvIHRvIHRoZSBlbmQgLyBub3QgXC8KICAgICAgICAgICAgbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgIi8iKTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAicmVnZXhwIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5UmVnZXhwIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgLy8gTXV0bGktbGluZSBjb21tZW50cyBhcmUgdHJpY2t5LiBXZSB3YW50IHRvIHJldHVybiB0aGUgbmV3bGluZXMKICAgICAgICAvLyBlbWJlZGRlZCBpbiB0aGVtIGFzIHJlZ3VsYXIgbmV3bGluZSB0b2tlbnMsIGFuZCB0aGVuIGNvbnRpbnVlCiAgICAgICAgLy8gcmV0dXJuaW5nIGEgY29tbWVudCB0b2tlbiBmb3IgZXZlcnkgbGluZSBvZiB0aGUgY29tbWVudC4gU28KICAgICAgICAvLyBzb21lIHN0YXRlIGhhcyB0byBiZSBzYXZlZCAoaW5zaWRlKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlIGFyZQogICAgICAgIC8vIGluc2lkZSBhICg6IDopIHNlcXVlbmNlLgogICAgICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KSB7CiAgICAgICAgICAgIHZhciBuZXdJbnNpZGUgPSAiKDoiOwogICAgICAgICAgICB2YXIgbWF5YmVFbmQgPSAoc3RhcnQgPT0gIjoiKTsKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgIGlmIChuZXh0ID09ICIpIiAmJiBtYXliZUVuZCkgewogICAgICAgICAgICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtYXliZUVuZCA9IChuZXh0ID09ICI6Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0SW5zaWRlKG5ld0luc2lkZSk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAiY29tbWVudCIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeUNvbW1lbnQiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZWFkT3BlcmF0b3IoKSB7CiAgICAgICAgICAgIGlmIChjaCA9PSAiPSIpCiAgICAgICAgICAgIHNldEluc2lkZSgiPSIpCiAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICJ+IikKICAgICAgICAgICAgc2V0SW5zaWRlKCJ+IikKICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gIjoiICYmIHNvdXJjZS5lcXVhbHMoIj0iKSkgewogICAgICAgICAgICAgICAgc2V0SW5zaWRlKG51bGwpOwogICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1s6PV0vKTsKICAgICAgICAgICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAib3BlcmF0b3IiLAogICAgICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5T3BlcmF0b3IiLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHdvcmQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBzZXRJbnNpZGUobnVsbCk7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm9wZXJhdG9yIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5T3BlcmF0b3IiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyByZWFkIGEgc3RyaW5nLCBidXQgbG9vayBmb3IgZW1iZWRkZWQgZXhwcmVzc2lvbnMgd3JhcHBlZCBpbiBjdXJseQogICAgICAgIC8vIGJyYWNrZXRzLiAKICAgICAgICBmdW5jdGlvbiByZWFkU3RyaW5nKHF1b3RlKSB7CiAgICAgICAgICAgIHZhciBuZXdJbnNpZGUgPSBxdW90ZTsKICAgICAgICAgICAgdmFyIHByZXZpb3VzID0gIiI7CiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBpZihzb3VyY2UubG9va0FoZWFkKCJ7IiwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgbmV3SW5zaWRlID0gcXVvdGUgKyAieyI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9ICAgIAogICAgICAgICAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKG5leHQgPT0gcXVvdGUgJiYgcHJldmlvdXMgIT0gIlxcIikgewogICAgICAgICAgICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcmV2aW91cyA9IG5leHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0SW5zaWRlKG5ld0luc2lkZSk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAic3RyaW5nIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5U3RyaW5nIgogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBHaXZlbiBhbiBleHByZXNzaW9uIGVuZCBieSBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCwgbWFyayB0aGUgfSBhcwogICAgICAgIC8vIHB1bmN0dWF0aW9uIGFuIHJlc3VtZSB0aGUgc3RyaW5nIHByb2Nlc3NpbmcgYnkgc2V0dGluZyAiaW5zaWRlIiB0bwogICAgICAgIC8vIHRoZSB0eXBlIG9mIHN0cmluZyBpdCdzIGVtYmVkZGVkIGluLiAKICAgICAgICAvLyBUaGlzIGlzIGtub3duIGJlY2F1c2UgdGhlIHJlYWRTdHJpbmcoKSBmdW5jdGlvbiBzZXRzIGluc2lkZSB0byB0aGUgCiAgICAgICAgLy8gcXVvdGUgdHlwZSB0aGVuIGFuIG9wZW4gY3VybHkgYnJhY2tldCBsaWtlICJ7ICBvciAnewogICAgICAgIGZ1bmN0aW9uIHJlYWRFeHByZXNzaW9uRW5kSW5TdHJpbmcoaW5zaWRlKSB7CiAgICAgICAgICAgIHZhciBxdW90ZSA9IGluc2lkZS5zdWJzdHIoMCwxKTsKICAgICAgICAgICAgc2V0SW5zaWRlKHF1b3RlKTsKICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogY2gsIHN0eWxlOiAieHF1ZXJ5UHVuY3R1YXRpb24ifTsgICAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlYWRWYXJpYWJsZSgpIHsKICAgICAgICAgICAgLy9zZXRJbnNpZGUobnVsbCk7CiAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzVmFyaWFibGVDaGFyKTsKICAgICAgICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAidmFyaWFibGUiLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4cXVlcnlWYXJpYWJsZSIsCiAgICAgICAgICAgICAgICBjb250ZW50OiB3b3JkCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyByZWFkIGFuIFhNTCBUYWduYW1lLCBib3RoIGNsb3NpbmcgYW5kIG9wZW5pbmcKICAgICAgICBmdW5jdGlvbiByZWFkVGFnbmFtZShsdCkgewogICAgICAgICAgICB2YXIgdGFndHlwZSA9IChzb3VyY2UubG9va0FoZWFkKCIvIiwgZmFsc2UpKSA/ICJ4bWwtdGFnLWNsb3NlIjogInhtbC10YWctb3BlbiI7CiAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKHRhZ25hbWVDaGFyKTsKICAgICAgICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKCI+IiwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiB0YWd0eXBlLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4bWwtdGFnbmFtZSIsCiAgICAgICAgICAgICAgICBjb250ZW50OiB3b3JkCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyBGZXRjaCB0aGUgbmV4dCB0b2tlbi4gRGlzcGF0Y2hlcyBvbiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmVhbQogICAgICAgIC8vIHdoYXQgZm9sbG93cyBpcyBhIGJpZyBpZiBzdGF0ZW1lbnQgdGhhdCBtYWtlcyBkZWNpc2lvbnMgYmFzZWQgb24gdGhlIAogICAgICAgIC8vIGNoYXJhY3RlciwgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIgYW5kIHRoZSBpbnNpZGUgdmFyaWFibGUKCiAgICAgICAgaWYgKGluc2lkZSA9PSAiXCIiIHx8IGluc2lkZSA9PSAiJyIpCiAgICAgICAgICAgIHJldHVybiByZWFkU3RyaW5nKGluc2lkZSk7CiAgICAgICAgICAgIAogICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKGluc2lkZSAmJiBpbnNpZGUuaW5kZXhPZigieyIpID09IDEgJiYgY2ggPT0gIn0iKSB7CiAgICAgICAgICAgIHJldHVybiByZWFkRXhwcmVzc2lvbkVuZEluU3RyaW5nKGluc2lkZSk7CiAgICAgICAgfSAgICAKICAgICAgICBpZiAoaW5zaWRlID09ICIoOiIpCiAgICAgICAgICAgIHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7CiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIpCiAgICAgICAgICAgIHJldHVybiByZWFkU3RyaW5nKGNoKTsKCgogICAgICAgIC8vIHRlc3QgaWYgdGhpcyBpcyByYW5nZQogICAgICAgIGVsc2UgaWYgKGNoID09ICIuIiAmJiBzb3VyY2UuZXF1YWxzKCIuIikpIHsKICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6ICIuLiIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeU9wZXJhdG9yIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIigiICYmIHNvdXJjZS5lcXVhbHMoIjoiKSkgewogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICByZXR1cm4gcmVhZE11bHRpbGluZUNvbW1lbnQoY2gpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjaCA9PSAiJCIpCiAgICAgICAgICAgIHJldHVybiByZWFkVmFyaWFibGUoKTsKICAgICAgICBlbHNlIGlmIChjaCA9PSAiOiIgJiYgc291cmNlLmVxdWFscygiPSIpKQogICAgICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CgogICAgICAgIC8vIHdpdGggcHVuY3R1YXRpb24sIHRoZSB0eXBlIG9mIHRoZSB0b2tlbiBpcyB0aGUgc3ltYm9sIGl0c2VsZgogICAgICAgIGVsc2UgaWYgKGlzUHVuY3R1YXRpb24udGVzdChjaCkpCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBjaCwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5UHVuY3R1YXRpb24iCiAgICAgICAgICAgIH07CiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIChzb3VyY2UuZXF1YWxzKCJ4IikgfHwgc291cmNlLmVxdWFscygiWCIpKSkKICAgICAgICAgICAgcmV0dXJuIHJlYWRIZXhOdW1iZXIoKTsKICAgICAgICBlbHNlIGlmIChpc0RpZ2l0LnRlc3QoY2gpKQogICAgICAgICAgICByZXR1cm4gcmVhZE51bWJlcigpOwoKICAgICAgICBlbHNlIGlmIChjaCA9PSAifiIpIHsKICAgICAgICAgICAgc2V0SW5zaWRlKCJ+Iik7CiAgICAgICAgICAgIC8vIHByZXBhcmUgdG8gcmVhZCBzbGFzaHkgc3RyaW5nIGxpa2UgfiAvXHd7MX06XFwuK1xcLisvCiAgICAgICAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoY2gpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpc09wZXJhdG9yQ2hhci50ZXN0KGNoKSkgewogICAgICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKGNoKTsgICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgLy8gc29tZSB4bWwgaGFuZGxpbmcgc3R1ZmYKICAgICAgICBlbHNlIGlmIChjaCA9PSAiPCIpCiAgICAgICAgICAgIHJldHVybiByZWFkVGFnbmFtZShjaCk7CiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIj4iKQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogInhtbC10YWciLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4bWwtdGFnbmFtZSIKICAgICAgICAgICAgfTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiByZWFkV29yZCgpOwogICAgfQoKICAgIC8vIHJldHVybnMgbmV3IG9iamVjdCA9IG9iamVjdDEgKyBvYmplY3QyCiAgICBmdW5jdGlvbiBvYmplY3RDb25jYXQob2JqZWN0MSwgb2JqZWN0MikgewogICAgICAgIGZvciAodmFyIG5hbWUgaW4gb2JqZWN0MikgewogICAgICAgICAgICBpZiAoIW9iamVjdDIuaGFzT3duUHJvcGVydHkobmFtZSkpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAob2JqZWN0MS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgY29udGludWU7CiAgICAgICAgICAgIG9iamVjdDFbbmFtZV0gPSBvYmplY3QyW25hbWVdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2JqZWN0MTsKICAgIH0KCiAgICAvLyBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSB0b2tlbml6ZXIuCiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwgeHF1ZXJ5VG9rZW5TdGF0ZShmYWxzZSwgdHJ1ZSkpOwogICAgfTsKfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydAoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/css/csscolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uY3NzLWF0IHsKICBjb2xvcjogIzcwODsKfQoKc3Bhbi5jc3MtdW5pdCB7CiAgY29sb3I6ICMyODE7Cn0KCnNwYW4uY3NzLXZhbHVlIHsKICBjb2xvcjogIzcwODsKfQoKc3Bhbi5jc3MtaWRlbnRpZmllciB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmNzcy1zZWxlY3RvciB7CiAgY29sb3I6ICMxMUI7Cn0KCnNwYW4uY3NzLWltcG9ydGFudCB7CiAgY29sb3I6ICMwMEY7Cn0KCnNwYW4uY3NzLWNvbG9yY29kZSB7CiAgY29sb3I6ICMyOTk7Cn0KCnNwYW4uY3NzLWNvbW1lbnQgewogIGNvbG9yOiAjQTcwOwp9CgpzcGFuLmNzcy1zdHJpbmcgewogIGNvbG9yOiAjQTIyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/docs.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgZm9udC1mYW1pbHk6IERyb2lkIFNhbnMsIEFyaWFsLCBzYW5zLXNlcmlmOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgbWF4LXdpZHRoOiA2NC4zZW07CiAgbWFyZ2luOiAzZW0gYXV0bzsKICBwYWRkaW5nOiAwIDFlbTsKfQoKaDEgewogIGxldHRlci1zcGFjaW5nOiAtM3B4OwogIGZvbnQtc2l6ZTogMy4yM2VtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbjogMDsKfQoKaDIgewogIGZvbnQtc2l6ZTogMS4yM2VtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbjogLjVlbSAwOwogIGxldHRlci1zcGFjaW5nOiAtMXB4Owp9CgpoMyB7CiAgZm9udC1zaXplOiAxZW07CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgbWFyZ2luOiAuNGVtIDA7Cn0KCnByZSB7CiAgZm9udC1mYW1pbHk6IERyb2lkIFNhbnMgTW9ubywgQ291cmllciBOZXcsIG1vbm9zcGFjZWQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICBib3JkZXItcmFkaXVzOiA2cHg7CiAgcGFkZGluZzogMWVtOwp9CgpwcmUuY29kZSB7CiAgbWFyZ2luOiAwIDFlbTsKfQoKLmdyZXkgewogIGZvbnQtc2l6ZTogMmVtOwogIHBhZGRpbmc6IC41ZW0gMWVtOwogIGxpbmUtaGVpZ2h0OiAxLjJlbTsKICBtYXJnaW4tdG9wOiAuNWVtOwp9CgphOmxpbmssIGE6dmlzaXRlZCwgLnF1YXNpbGluayB7CiAgY29sb3I6ICNkZjAwMTk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpob3ZlciB7CiAgY29sb3I6ICM4MDAwMDQ7Cn0KCnVsIHsKICBtYXJnaW46IDA7CiAgcGFkZGluZy1sZWZ0OiAxLjJlbTsKfQoKYS5kb3dubG9hZCB7CiAgY29sb3I6IHdoaXRlOwogIGJhY2tncm91bmQtY29sb3I6ICNkZjAwMTk7CiAgd2lkdGg6IDEwMCU7CiAgZGlzcGxheTogYmxvY2s7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtc2l6ZTogMS4yM2VtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsKICBib3JkZXItcmFkaXVzOiA2cHg7CiAgcGFkZGluZzogLjVlbSAwOwogIG1hcmdpbi1ib3R0b206IDFlbTsKfQoKYS5kb3dubG9hZDpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JiMDAxMDsKfQoKLnJlbCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLnJlbC1ub3RlIHsKICBjb2xvcjogIzc3NzsKICBmb250LXNpemU6IC45ZW07CiAgbWFyZ2luLXRvcDogLjFlbTsKfQoKLmxvZ28tYnJhY2VzIHsKICBjb2xvcjogI2RmMDAxOTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAtNHB4Owp9CgouYmxrIHsKICBmbG9hdDogbGVmdDsKfQoKLmxlZnQgewogIHdpZHRoOiAzN2VtOwogIHBhZGRpbmctcmlnaHQ6IDYuNTNlbTsKICBwYWRkaW5nLWJvdHRvbTogMWVtOwp9CgoubGVmdDEgewogIHdpZHRoOiAxNS4yNGVtOwogIHBhZGRpbmctcmlnaHQ6IDYuNDVlbTsKfQoKLmxlZnQyIHsKICB3aWR0aDogMTUuMjRlbTsKfQoKLnJpZ2h0IHsKICB3aWR0aDogMjAuNjhlbTsKfQoKLmxlZnRiaWcgewogIHdpZHRoOiA0Mi40NGVtOwogIHBhZGRpbmctcmlnaHQ6IDYuNTNlbTsKfQoKLnJpZ2h0c21hbGwgewogIHdpZHRoOiAxNS4yNGVtOwp9CgouY2xlYXI6YWZ0ZXIgewogIHZpc2liaWxpdHk6IGhpZGRlbjsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDA7CiAgY29udGVudDogIiAiOwogIGNsZWFyOiBib3RoOwogIGhlaWdodDogMDsKfQouY2xlYXIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KLyogc3RhcnQgY29tbWVudGVkIGJhY2tzbGFzaCBoYWNrIFwqLwoqIGh0bWwgLmNsZWFyIHsgaGVpZ2h0OiAxJTsgfQouY2xlYXIgeyBkaXNwbGF5OiBibG9jazsgfQovKiBjbG9zZSBjb21tZW50ZWQgYmFja3NsYXNoIGhhY2sgKi8K]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/jscolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uanMtcHVuY3R1YXRpb24gewogIGNvbG9yOiAjNjY2NjY2Owp9CgpzcGFuLmpzLW9wZXJhdG9yIHsKICBjb2xvcjogIzY2NjY2NjsKfQoKc3Bhbi5qcy1rZXl3b3JkIHsKICBjb2xvcjogIzc3MDA4ODsKfQoKc3Bhbi5qcy1hdG9tIHsKICBjb2xvcjogIzIyODgxMTsKfQoKc3Bhbi5qcy12YXJpYWJsZSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLXZhcmlhYmxlZGVmIHsKICBjb2xvcjogIzAwMDBGRjsKfQoKc3Bhbi5qcy1sb2NhbHZhcmlhYmxlIHsKICBjb2xvcjogIzAwNDQ5OTsKfQoKc3Bhbi5qcy1wcm9wZXJ0eSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLmpzLXN0cmluZyB7CiAgY29sb3I6ICNBQTIyMjI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/people.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAD0AK8DASIAAhEBAxEB/8QAHAAAAAcBAQAAAAAAAAAAAAAAAAIEBQYHCAMB/8QARxAAAQMDAwEFBQUDCQcEAwAAAQIDBAAFEQYSITEHEyJBURQyYXGBFUKRobEWI8EIM1JicpKistEkNENTc4LhFzXC8VSDk//EABsBAAEFAQEAAAAAAAAAAAAAAAYBAgMEBQcA/8QAOBEAAQMCBAMGAwgCAgMAAAAAAQACAwQRBRIhMQZBURNhcYGhwRQikRUWMkJSsdHwB+EjQzNT8f/aAAwDAQACEQMRAD8A2A9K7jaXTgH4Ub2tjPvc+lM2r7g1Btbk57PcspUp3A5CQM8Vm1zW2rg4dt9lhOeOQB+lUK3EI6QgPF79Fs4Tgk2JhzoyAB1Wp3JcdKtyia8NxijqVD6Vl0az1XsBXfJfP9elFs1JqmW/uOoJ+1PhUO89f4VSGPQk2yn0/lazuDqpouZB6/wtLKu0JKiNyiR6CiLvcJP/ADP7hrLrV5urd4kzIlxksuSHCHHO88Sk58yevlTmvVV7bcU2m9SlpI+8rkfOkZj8RHzNKWTg6dp+WQH6/wC1pEXqBjO9X92iJvtvzhTpB/smszr1PqRKSpN7kH5KApN+1OplnH21LGT5OUv29B+k+n8r33Nqv1j1/hahXe7fkbXT9EmjC9QCnPen5bTWYJGqdRFrYLvK3jg+PPFFb1TqAnx3eZtPlvpDj8P6T6L33Nqv1j1/hagN7gBSBudO444bJxxnn8KKq/21PvKcH/Yay9+0+o0P5+2JWwE8BzqCMV6jUupFL3C8SgT6rzXvt+Dk0+i8ODao/nHr/C09+0VszjvVj/8AWaMnUFtV7rqifTYazAvVF/WnCrpI6YyFYNERqO/oQUovEwZ55dJpv3giv+Apw4Mqrf8AkHqtSIvkBSsBxWf7NdBd4ZGQtWPlWWBqXUqVf++zAR6OGui9U6iDYUi+T9+fJ0077fh/SfRJ9zKr/wBjfX+FqRF0jKJG5QI+FepucVStqVkn5VlqNqvUqR+8vc7zz+9NHOr9R4wi8zkceTxr32/B+kpDwbVj84WpROZPQq/CjplNqPRX5VlRWrdUHOL/AHBOfR08UdrVWqggrOop/p/PGk+8EPJpTvuXVH/sb6/wtTuy2mgCtKhnpgda6NvoWgKGRnPUelZZterdTuXWKld+nuDvkZSXSQeRWm7StbsBpwYVkE5PrnmtCirmVYJaLWWHiuDyYa5rXuBv0SLVTaHI6G3EJW2sLCkKTkKGPMVmrRxs67043dVstJLCxHLydzSXfulQ80jng1prUoPsydqNxwv9DWZG3F21T0+I1HfjSkFl5p1vI2lQO0+fVIORg1hcTMMjABvYoh4SBdHMwG17e6kK7MwTCZv7MF2JKkhtm52lxttKVYPhUkI2kE4PQEYPJ6Uig2OBCuvsU5qe06/c/YWe7kpGGyQCo5bO7G5PPGc+WKajc03Blm1OKjWm3JcU9+6bWtPebSApWSpR8hwTjOcUrvWpXpGo4VzHdS1QW20oKwoIccSMleAQfe5HToMjyoLbHODlB5HqPDuueYCKhDPfL1B7vDuueYBXW62G2pt9/cguzEu2eSlpRdWlQdSpZRwAkYII9Tn4V01vGt++yNW+A6zIk21hwFC0kL3bhhSQgFSyceLPPpSB7UzzrF2Z+zYKRdVhyQR3mQoHIKfHxhWVefJ9MAc3dSTHGoWY0P2iE220zJ7slxKW1bkjk7evmBnHGeac2KfMHHl39w97qRkNRmDna27+oHvdOty0xb41tuE9puYyLe60HGHprLji0LVt5CAe6V/aB+uKLqKxWS3Whu5xjOcYmNIMIqeTnvOd+8bOAOOh5/HCI6sfWLi05abYpu4rSuUna6N6kqKgcheRyc8HH50JmqpMq2ybe9boBYfUFhOHP3RCQlJR4/DgD+ByOKRsdUCM3XrysO/rfy08GtjqwW5uvXlYd/W/lp4KeylxxGuoKUOKSlxLqVgHAUO7UcH1GQD8wKSybZbP2bYvkb2wtpn+yPNOOJysbN+5JCfDkeRCsfGkOnbu9Y7oi4xmGHn20qCO+CiEkjBOEkc4JHPHPyrv9vH7F+yPsuB7L7V7VjLud/pnf02+H5fHmpZIpO3zt20H0vf9wppIpe37Rmxyj6Zr/uFINTWOP9v6hlzZcx+PbUMFe0oS66pxKQkZCcAfHb5UW3QLfAlaTuttXOQ9cZ2Fb3k4QhLgQpGAkE5CsZz0zxzwjZ1Gu6Xa4Srg7boSZcZKHm1surZkKSQEhQSSpJA+8n+j8c0a8aiitCwot7UWQq0lxzhDiWStSgpISCQshOAcnqeueaqhk9mxOvtr0tl26fiVMR1FmxOvtY9LZNun4l01Ja4EtWp7lHVJRJt8797vUkoc7x1SeABkYPxOae0tm4az0umRIlJefsbag+haSsL2OEqO9KgrIyPrnPFRF3Uz7jF2ZNugAXVYckEd5kKByCnx8YVlXnyfTAChvWEtu5wbi3bLcl+BH9mj8O4SjGBkFfJAKhn+sc54wrqacsy25EDbm0D97pX0s5ZltsCBtzaB+9/JJ02u3RNPwLncTKcVcHHEtJYWlIbSghJUcg7jk9OPnUpgW+HZdR6ns0Z2Z7G3ZXFO73AorO1J3YAA4CyBnPnzzimC13CI9aUMTJdsaQ1KWtmNIjvr7hJwctqTnIzkbVk+7znNdLpq0HU94uMKCw8zcGhHPtAXnutoSR4VDG7aD6jyxzSysmlcW68/DcW+gullZPK5zLHn4fiFvoLo8K0Wtq4aWuCGn3IlzkFC47y0qIUhwI5O3BSSQcY5GRkZyFVniwHu1R2DEblQkh+QhKmnGzsWnfkpBbwE4BATjjPXimBeopJhWqK3FiNfZTneRnEBe7dncc5UQcqAJ48uMDiu8fVcli+pvLVstqJSVOLyELwVue8o+PJOMjGcDJwM8058E7g7qQ4DXvNvSykfBO5rupDgNe82v5WRodss40ei9y0z1Oif7KtDTyAlQ2bsjKDt4+fTyzwouelolvuN+MmRIchWlLRKWyEuOl3GwZIIHXk4PTpTb9vH7F+yPsuB7L7V7VjLud/pnf02+H5fHml6NRrul3uEq4O26EmZGCHm3GXlsyFJKdoUEkqSQOik/wBH45pzm1DXF2ttfpcbeV/qnObUtcXC9te/S428sw8/oqh2m0Q7fZbvEMzvJ61kh9xJDYQ4EYACRk5I5z5dOeNG2PP2WyT1xWb7ndYctiyW2GWlCCFBSmUKQ2St1BwkL8WAB1PJrR1gIVa2yM43KHP9o0ZcKlxhfn3ud+lzb0sgfinP/wAZde/zb9L6ei5aiSVRRj0V+hrKn2g4Yb0NxO5KlZCs88f/AFWsLyncwR5bVE/SslPDuXV90oOJUVeXQZPWpcf0LD4q/wAGNa7tAe73XAdM0KW6af06jVNub1g8uPaZKVlGxKtrpBKfEpPKQFDHxqc3t3sd3pbOnJ0RlCu775SJUdRI9FDg8EdaowYPJLH2hcGg9Vq1nFNNTzmGNpfbp7dVXDqu5QXF+EJG7n0oraJaYcOVKbaaRNC1MJSslRSnbkkEDHvAdT0NT+Dp7shmy0SHb/cFwkncuM5PSUHHO1X3znHTPNC8R4vaHa2JVqSzZJNoedaiNPjKX2FYJDhT7isgHPPWrLMGsx7SQX8gCqMvFOaaN7WlsQNnEjrsFAAcrwEnNHqRPaB1gwwXmbQm4N596FJbd/LIV+VR+S2/FmOQpkZ+LKb99l9soWPoax5qSeHWRpCKKbEqWq0hkDvAqVWW3WdjRxvs9uNLcM3ue5dceQNoQVbAUD3z5E5SARk5yKb/ANmJ/eez99F9v7nvvYtyu927d3ptzjnGc/CvftO3/sN9i7pXtnt3tee6T3fu7Nu7dnpznHXjHnTl+1ED9oP2m7qV9p9zt7janue87vu927OcY527frWKe3aXFtzcn0tYdwOtyoD8Q1zy25uTa/dbKO4HW59U3s6ZfXAt8tV0tjLFw3d0pxaxhSTgpV4OMHPPTjr0y3adhs3K+QYL73ctSH0NqVznBOMDg8noOMZIzxS+8XOBJ0vZrbHVK9pgd73hW0lKFd4rccEKJ4Ix0568dKa7JKTAu8OapBWI0hDpSOp2qBx+VWGdqY3EnXW31NvSysx9q6N5J11tp3m3pZSexWO1jtFNif7q4Q1Leb95xKm9m4gEjb4htGcZTycfBlk2GW1AYmsPR5bT0j2YdwpRKXcZ2HIHPxGR8aebdfbFD1sNQJ+0lJU6+8tBZRnLmQEgb+g3KJVnngYHWk8S926DptmDFXLclx7qme0pxhKUK2jaEnCyRwM9Dzx8arB07XAi50bv11v4clVa6oa8EXOjd+vzX8OSQSdOy2Uy9kqI+/CSVSo7SlFbQBAJOUgHBODtJxTPUrvWpW5iprzVxvahKSsCG48Qy0VdeQvxJGThO0DpnjgxSrVM6Vzf+Qf3+/0q5TOlc28g/v8Af6UKFChVlWUVRwlXOPSuaSd4zXRYyMnoK5qzwcceVLa6eLWS62HFyinOMPIOf+4VrPTyVJtiQrr3jn+c1kqD/vrH/UT+ta4soIgoBIPjX/mNEnD2ufyXP+NRrCfH2RLwf3XzQv8Aymso2aA9eL7DtTCyhcp/uwsI3bBySrHngAmtYXVIUzz1CFkfhWXNF3SFYtYQLrNU4mMy6rvVp+4lSVJJPw8QJ+AqfFg0zxB+yqcNvkjpKl0f4gBb1T12vtOacmadtFpvdohsR4hbRCuLHed+Qr30qKVBJ+OU/OmrW7yZt0taWg8w+mEl+QlBSqM54W0lSfPJJA+hp27ZdV6VvV2jR4uq4UCTbHT3pXAEttwKSD6Hgeo9ajV7uES56kjS4LrEiMzb0NLfZbUlC1KUg4AOMABOQMedaFTlNM7NsAh/DnO+PiLL3JCSBsBwAJSOR5UeM0thxclqW/FfSnCVtOKQVDzBKTz8q9c5eO0jrXJ5xSjtJ4FAschbq02IXZJYmStLHAEJdE1JqeIlSI97WoH3Q+yhWPqAFH8aVXC+XjU3Z2Jt7jsmXCuyG2JKeu0laVtg9SMAKwf4UzEh1IwnCkDp8PWvC/c0WpiyKnBVrZlKmJY7tOe8Vv53gZI/eK4Pw9K1afE39m9kziQQbeKHazAYe2hmpGBrmuBNtNEWhQouFZHPFZCJlIYel3ZVgcvabrbkQ2lBDyld9ltR2+EgNnJ8Q6ZHxrhc9OzYVrbuqHo0yCtW3v4yypKT6EEAj6ipPptMdXZDeUynXWmfbk7lNNhahyzjCSpIPPxFN7V1gP2OPo+zIkhE6Wjv5MoJB3FSRwkE4HCfPy+NZbaiYvdbUB1jppawN79f7ZZLamcvdbUNdY6aZbA3v1/tlD9wzjkfE9K9qxJWnLDE1GuzymYTEFLWFTXbkhMhKyjduKCvGMnGNnx6U0WqwQGdPXq+SymemA/7Oy2hwhtw7kjeSk5I8QIwfWpm18Tm3F9bW777f0qduIwuaHAHW1ttb7f0qJpxnxZx8K8qVP2iBP0K9qKLGEJ+LI7l1pC1KbWDt5G4kg+MefkaX6shWK02OxT2LIwp+fH71xCn3u7HhQTgb89Vcc/PNO+NYXBoBuSRy3Av16J3x7C4MDTckjluBfr0UQtMJVxuUeA280yuQsNoU5nbuPABwCeTgdPOul/tciy3Z+2SltLeZ27lNklJykKGMgHofSpZMskK26k0ncIAW2xcnWHgypW7uzuQSAeuPEOvoaXXKxMag7XLjDlOKSw20h1YScFQDbYwD8yKg+Pbnzfkyk99wbKv9otz5/yZSe+4ICrZXTFOytNTv2UGo/aIvsgXs7vervM7tvTGPj16U+O2e0S7Hc3nU262S4ye8ipj3JDxeSASUkb1c8DkYznpSRuao9lvsJQ9u+0857pWzZsz72Nud3lnNSuqHPAMf6gD4Kc1bngdlp8wB8O62ij8EZmsD1cT+ta4sgSm3gI6BavPP3jWSrSkLusRCuin0A/3hWtrNkQikpxhxY/xGjPh4H5z4IP41cM0I8fZEupG1OR/w1856cCsiqK1rUoqA+nFa6ueMDcMju1/wrJKikOkpUCM9RTeITbIncFC5l8vdR2LZWrZC1bc2oja22beJDK1EEtrU6lBxk9PF/8AVS7T4TK7N2nUIAIc79ZJAyMAZz58EDHwqB6j1fKtk28WdMVpxifb/ZlleQRlQUFpweoKRSuDfp180hB0XYYpMlTZakPO7QkNg+XoPzrWo43T0WSXciyG8TnbSYqZoBo11+nipIycKPBGRXJR5yBmmrT7Mu3SJ9pfkplJgPBlDmCM+EE9eeCeM07g5IAHJ9BQZPAaeQxHkur4fVNraZlQBYOF0VC1IJUBg4NAkHlIwMdK4PTIzboaXJaStRwElYyfpXdstqZICVd4lXiO4EY8uPWoi0jkpzJGXaHVChRkIKs48hmjym+7cKc8A9PSkTr62T1D1Q7GsDljTarcuG6oLeSrvsuKG3xEhwYPhHTA+FMLa1NuJcQopWkgpUDggjzryhUbImMvlG+6jZCyO+Ub7qQO6rmvTm7i9Ct7txbACZam1b8gcKwFbCR6lNJLdf7hDRMaJbksTTmSy+CpLhznJwQQfiCKaqFMFNEBbLomCmiAy5dP428E6z77Kk2tFraaYhwUr7zuGArCleqiolR+pqW60uURvTOnY6BabkY0cNyGjICy2sIQB/NrCscK6HHTPlVe0KjfSMc5pGliT43UT6NjnMcNMpJ8bi26epGpbhIvUO6SG47ioW32djaUtN7fdwEkHg4PXyGcjijydVXN3Un7QMpYizSkJX3QVtXgY5CifLA+g8+aYVEBJ458q9eWyUrVylZV4U7cJ21KKWLSzRtby6KX4WEW+Xlby6J5dvzpjy2osKFA9rSUyFx0q3LT1KfEo7QT5DFczqa4/swNOfufYyvcTs8fvbsZz0zz0zTSC0YxSFL7zIx4Rt+PPX0rmEgrGSd3w86d8NFYXHf58intpoju3Y38+qX2j/3aHn/no/zCtcQvC0pISffUevqayPZ8fa8PPT2hH+YVrmBwyQMnxq5Pzor4d2f5ID42/HF4H2XG5jwdf+Ev69KyApSd5yNvPStf3MgJBIzhtf6Csf7dylZI6mmcRD8HmpOCTczeXuq37TEJY1Bv4UHI6SAeqcEilWgry1Zb3MuCN6kogvKGOmRyB+IFJO04hWokpCyrawkc+XJP8ajLTziQsE+8naflWzhmlMw9yFsescQmHK6svQ0l962TbhNUpJflOOlajweBuP60gu98l3m8MWK1pdjh11CC8TtJCsDn0HPnS6JdIVo7L7O2l9pq4vuuqQD4sJKjkqx0GAMUp7DxJvWt4sNaYjUJ1SkSe7KUuykkng5yojnJ8gB8qrNwsfGPlkFxuFoS8QP+y46aA5SNCoo1py6B+aW7ZPeEEKXKXswG0pPKgvkfjXsSUtMJp+JKmMyinckEEh4ZAwD5knPGD7prTfa5f9M2DTLdgdgpaipWloJVG/2VI64UkAbxnkgAj1INVK3dNF27UzF8m3dq5ynFhuM3CjBliMB4QdileEgdCceZrSETHg3CHfiJYXfKdVw0zLXMsXtzpHtKVltxvBCkcdVZ+NOcte6TvJJ3oCqsWLCsV30zOu1qyEz4x9occCTucaSDvBSSP6PIJqt3VBSWSfNsfqaDsWpWQTXZsV1PhjEH1tKe1N3NNvdeUKFCspEiFA9eOlCvD06Zry8vaFeqxk7QQPLNFJwM15eQUSBkHBFSbs3isSpd2nzihxmFCCQ2obipSyQD8MbVfiKi6yCkgGrH0NbWonZhLujqwF3KSQCkY3NoVtQM/MLP1rWwenEs9zyQ7xTWmkoTY2JP/wBVbqKGysnOxKsDPn6VYGmtMw7FaV6h1aG2chPcx3leFpKiEhawOhyoYHl+kS0Tf2tNakkxVWWPcFOzg3GkPAqdZO8A4JyANpPQA5qQ64vQasq3rmoy413Q9bpZJ39ysM72ClPllY5+QxitmnwgQOMkmpQpifE0tW1tPDdoNvEps1H7CjXqWLa0huM3KbQEo6EhYya1TEG1ojJPiNY4sjjyrhbXJHLpca7z+1kVsSE4FtLIB4WRXsGLXPlLdrp/FMbo46Zrjc5db9dFzuWO6Of+WusfHhxSR0ya2BdMBo/2F4/CsglGXTng5NVOIdcnmr/BI1l8vdVd2jKJ1KvJ6NN/LB4qPymTHcSkqSslO7jy56VKe0uG41e48vG5t9KUj5pPI/Oo7cT3j4Kk7Vbc4HzrZw1wdSsI6IUx1pbiEwd1/dJCtagkEkgDABPTp/4q/wD+SXabe+5KvBbQ7ObmNxjvcUO7aUMg7R1yoDrxxVDQ3UNupK0hQByc/T/SrV0dqGVonUkTV8CM25bpMdDcyNnaNpwM/MEZB/1qeadrHNYfzbKrBSOmifI38tr+HVaG13onR13uv2pebY9NmrTkAKccIbQOQE5wPj6/OqCuQYvt/wBTW6LaXY6pcxuTDY9m2raCBt2Og/zeR6+dalvMBq/WRxhE1+KZCE4kR17XEZIOM+h8x51R+oLOoanlWqVEkRwyjiamG2wp8AjH7wLKlZ+X4U+EZjlKrz6fMpN2aKtCNCyIDFrTAAkKRJadBGwFGHFcccpH6VW76QQ13fujISfhnipffrw7bLK7bIoSDOTh5ZO47UnGB9RioWlZCNo4HWhfHpmOmEY/KukcGU0rKUzv0D9h4X1XuSFYNGrl5811rARk4IUKFCvJqFFUfu48jRq5OImTZkW02mKZdxlna2hPISPNavRI9amgidK8NaFBU1EdNGZJDYBce+K5zFtjp7+fKOyOwk+Jaj0+nnn0Bqfa4vDPZ9pGy6QkH7QmbFynSlWAhZUSE48kkqVg/wBWmftIFv7KU6dlWhxq4XmK689JDwyt3e2UBxWAdrYUeB8fnVeWRq53efIvN9lOvzJRLjpdzlKfr09AKMqDD2UjS7c81y7GcYfikoZl+UGwHjopjadPl0/aF3kBYdX3wQ2spAJOc5/DpXe+PwU2aPZIkdgx25HfrJbBJUEgA7upPX8ab5ElyVnJKG0ABtvOQkY6VxSAlYJJx6ZrMxDGu0uyEWHVEeDcKdjIJ6l1yNm8vNKbMgOXSKTnwvNngf1hWv7cnDLmcfzqv1rJNhQTeWC2tSU94gkA8KG9JwfxrW8EAB4D/mZ/wipOH9GvVPjU3li8D7JPdnEo27jjKVgfhWRSdyzg4561rPUCkpLW4ZG1zHz21khKyFk48+lRcQ/kU/BP/YfD3UL7TnE+02xg+JQcKvmMgfwqMavS23PbQ2hCB3KcgHzGc09dpIc+24bqz4O6wkgcjB5+vSmLULivakEEEbTyoDOd6h/CtbCxalYAhjiNxdiMl+Vv2TPtz6VYGiYUnWDjdiamoZTGYQtEQjK5e1QKwk9AQnJANQMrSQSrGfWnqxT5Vg1FDucJa0PxFIeHl5cj5HJH1q6+JryC4bbLJiqJI2ua02zaFah7TIt/dgwtZ9mdwkCVGCYsyC14u8A4G5s5G5HQ5HQg1T69T3idqm5yNQS7jGuTEdSpTaorbRQE7QEBXUbiUgYHn1q29CzpN/t7uptHS2rddkrIuEOWP9lmddu4DlKsffT9c1W+v+/l9qzH2nbFWx+4OMuTlrcSphQaHRtY4Ujwg5ODnAOMUsd8yhlN2pfPchsQrJZ3pbbd2TB7xyOsEKdK1rWSkn3iOQR14pF4cZHNN0qEnW/agh21rWqLDj92uWhJ2JWkLKVZ6EbinjzxTDqHUGotOXV61XaFEXJQQrvEIUkKSckFPOMH5Vh4nhEk0pli57o04c4qipqdtPU302I6KXp65rok5+dMNi1FGucUuPbYzqQCtClAcH7wJ8qc2ZkR5pTrUllbaDhSkrBA+ZoclppGGzgugQV0FQwPY8EFKt2CQeflRnihC9oVu4H44pjumoLbCYDxkoeGcBDKwpRNRe/6xVMhqjwm3GAr31qxux8MVYp8Nmn2bYKhXY7RUTSXvueg5qfxvbZ9zatNnjGbdH890wn7gBwVrPkkfGpxeLvpzsYsbjClNXTV05oqWrAKueQFH7rYPQDk4rPum9a6h06EmyzjEeLoccdCQpbuOiVKOcp/q9D55rpGRdtY6jlXK5SVyFqIfmPqHOM4ASB5nolIx5UVUeHtpW2bqeq5vi2NyYjJcizeQ/lIJsi86gvRlS3pMudMOcqJUpeT0Hw/0qSQdO6vjuNKmMSY8RDqS4HnQAcHOACeanuldMtWIuXy8d2JxThttr3WE44QnPn8f/NGuU6Rc17lZSlsZQjPT/zUeIV8dOwsvdx5Kxw/gstbMJjowHU+HJNwSkEnGMjyoAZr3rg5JzRsBPnQXuuuW1S/T2PtuID/AE0jj+0DWuLerIeOD/OfwFZCtfgvEIAEOd+kH+8K1zaOW3/+sf0FE3D+rXjwXOuNhaSK3Q+yR6lGEMn4LH+E/wClZLCOevnWtNTZU2zgdCvP9w1koJ5yrPB6VHj5sWX71LwYbCXy91D+0+OgwIsk53NvbPoR/wCKiup2GWVR1NJUAtKiCrz8ajU07Ro7rtgUpKSpKHApWPujBH8aadXWxb1qs89CCGX2nA4ojhCknn9avYLJmpgOhWJxYy2Ik2tcBQttsuJO0c9BmltxVtua0o6JCUk/IDP51zcQUlKm8pSkjaT5/GivsubtxJUVc59a2ENAWUwserrtb7Qu1217uEuq3rUgeJRxjA9KeHYU11mLA1HJeetdxKFRZnJVGfPTOemRkYquEv7AkpQUlJ6/EVZelrqdVaKuVikHE1hje0T94J5BHxyB+NSxWOirzXDdE63K16glOuWbTbn2HZYayxyVIVIcABK+OTnOMk1DtaNSJ2noS50SY1NtCTAeeUO8bf8AGVAlYOQrC/PqB1qyNFXRV505EmLVvdSnu3DjopPUfp+NOdwtzFxtsuE+gKRKb2r9cjofpgfhU/Ytc26rNncx1iFnaU+2tphDUVLK2wd7m9Siv8TgD5V7GbkSHURIyVqceUEBCc+Ik+lOtmsUi46gdsqmiJDbb6fgFIBI/MY+tSCPaE6W0p9tyw4LxO/cQW+P3IPClYHJOOPrVQRA6ELQMpaNCVDmLVJkXgWqOEPye9LWG+RkdTn0Hma4XBhEac9HZfTJQ2opDqUkJXjqRnyzViWvTcjTnZ9c73MR3E+Qx3SCoZLaVnGPgpWfyHxpl7OdHS9Q3FuRJZULa2crUrPjx90fxpxYAbJgkJBPJRSLFfky2orDZW+6oIQgdVE9BWh9F6Sh6asLTUoocmFwPvuHhIUBgfRIJx8Tmu1s0barffF3liKEPLSlCOmxsBOCQP1NItS3EyXRGju7mUe8oH3z/pVWvnbSR5ideS1MGoJMUqRE0WbuT0Se83L7QkfuwUspJ2A9VfE0jYUpD6VISVKB4A865JGK9yQ14ffzkUBSyulcXO3K7PT0sVLEIoxYBdXo7rC1pU2pIScc1wPvDOQAec0ollzv1hLiykY6mi5WdpJBI9RUV1P+Vd4Km1XyM8nke1IUB6+MGtc2tISh8Dp3p/yprI9qSkXKIAlP+8Nc454VWuoZKQ6APvjP90UT8P6h9u5c841/HF4H2SW/kFpHHTd/kNZIPiWQOMHmta6lKG4YJJ53D/Cay23AckPn2dvvCtRASDyfl61FxALlnmn8HSNaJST0902vQvbWXIhPhdQUH05HU/KpH2a2ODrPS8/RU4tARGkvwJH/ABEuhIQpfxBwjim25sOQZHsxwFbQo4+NeaZuD2k9f2W7tkJhzHvZ5AUcJDbm1Jz8ikGo8BlyudGpeL4GyRR1A5G3kq31FpiXZbpNtVxaIfiOltw48J5wCPgeoppkx21T2o7PiwjJyeB0rd8u2W6U8XpUCI+4Ud2VraSoqTnODnqM881nDtp7Mbn+3Mp/SFnUuK7DEp1tkABCt21QSPPPBx86Jg++65+5tjoqQLCXIdzWSAph1soAHGCVA/wo+l7suy3uNPRkJQcOD1Qeop30pAdkjUcMIUt1m2vOrG3kFGM/hn8qiIG1IKTxnH1qVrrWIUDm6aq6+z0NQpN6gtOBTaZgeQP6i0JINSwrPeYSSkKP4VU3ZrdHF6giMuHl+GqOSTjcUHKSfjg4+gqzlrWADnk1oROBbcLPlb82qTWvT6Y3aa3fWUqDMqM73oI4S4NoyPmP40+OaWbm6j+2J6++VG4iND3Gh6gevxrtZ5O1te8btg3dPhz+lIZOrnFZESK0hBHCnMrPzx0/Ksytro6W2c7rawzCarEiRA29tzfZLdR6cYv6IzE54ot0VfeOMpICXFj3dyvQen51ykXe0WyOWYTSZDjY2oSkbWk/XqfypgnXadNQUPzHljPKQrCfwFIaG6zH3uNoRbvKO8M4Kijs6sOYjkNv9pXdbzcbgr/aZCtgGAhI2pA9BikCQTn8qOODkE/jXtYMk75Dd5uUbQwRQNyxNDR3Iu0cUZGEqCsZwc0KFQ3UqO4UqUtfQqOcfjmiUKFeXkqs6FOXeIhHXvkH5c1riGtOHf7Q/QCsm2khE+GNwRueRzjn3hWr7fhYUTzhWM/QGinh/RjyO5c+40IMkfcD7Ju1ipSYCB13OKA/uKrLUWS/GklxhwoGcn485rU+sEFcNjHk6T/gVWUW3CB0GKi4gJBZZScFtBbLfu90pny35bvfSFlXOE5GAkdcU2doNxkRNDsPMJQosvd2FKSCQDuP6gU7Qtjm87ApQHGfL40j1JC9v0Vco4bLi0oWpIH9JJQQfzrJw6Ux1DXIjxqlbPRPjaNlpPQs1V10fZrg8sLXJgsuLV18RQM/nTsppPebsJJBHOOSKrH+TDcXpfZXDhSVI9ptzi2FpC9xSkncjOOh2mrQ4HXJJ/KjR2jjZcoFrBZm7KdOtvau7T1tNkiPHmQmVdBucUvj54QPxqh4UFb9puElIwmIhLqyPPLiEAfma3FoXS0ax268uYK3bxPfmP8Ax3KO0D5JI/E1jdLDrGltSbElDbkyKyB81Oqx/h/Spm7lVnNNrleaFaMjWFmioAQG3t5UB1G3Jq5nEpUvanOM45qoNHvC39ocYKSAS6WMHyy3j9cVcG4tuBSDg+Rq9AdLLNqdHhSZhuEhgtMNu7tgTuUMbiRUAWhtJUFFQUjO5J81DyqVWqSoMukqKlo8WSc54NQ0rU4AtZypRKlfEmhbiUgFnXX2XRf8fZnGYcvl910TjaMDFe15nDe7HGcUEkkdKEzuukW5r2hQoUiRCjpACCVA88A0Shk4xk4pQbJCujrqlp2/dByPWghQJAKQCT1xXOhXrk7r1kthgG8xfEDiSjryPeFassW4sKKjnx/ltFZMt4xcYpBx+/R/mFaw06sLjOEeTmPwAoo4fPyPt1C59xmLOiHcfZF1WtDcBKl8DeR/gVWTdyQ1swOvWtV62O6zpwf+KP0NZVcZ2nepeVjqPX1+tR8Qi2RT8EOsJR4e6PHdSg5T6YNO1tdYTZZ5kr2NpQVKUTzjaT/8RTIFeqab7/LUppMJK9mUlwkdDgFI48+orFoI+1naxE+OT/DUb5VPf5H8KQw1qOR3hEN9bJbR5bgV5/7gMcehq/1JCutRvstssaw6FtUCNGSwTGQ48PNTigFKJPrk1JsUbOIvYLkLbnU81yVwknaVYGdoPJ+A+NZc7QLND/8AS2HIZCIjlw1Cp9SO72lxLSFoyfTzrU/AOSKz9/KFtS2LbpXTsFZS8p2Q5gqJyVqSk/m6akh3AUcoFrlZ8QHkT7Vc1fzj1xWrPxC04/WrzfA75QR0BIFU3gRtOaceeHiFxUpWPPChn9KszUU82+6Wx0uLDD8lTLqc/wBJPB+hFakRygnwWLUXc4DxUm0+gKLqDwTwPrUSKCh5baxhaCQoehBxUvsqVBTqsHhQ58hzUZuiSi6ywoYJfWefIZzQvxOy7GP8V0L/AB5L88zOoHof9rhQoUKDl05ChQoV5eQoU92axfaNinT0vbHI7yG0pI4O5Kic/QUwNOtPth6M8iQyfdcR0UPhn48VM6nkawSEaHZVYq2CWZ0DXfM3cLpR2WH3yQww46UgqVsTnaB1JPQAepp8tulZUtmQZcyPbXW46nwy+oJdKB97B90ZxyrA5psuUO9GKWFx3o1pIRvbjOFxt8gAb3HB72eu3hPwqeOkdlzyaD1VeTEWuf2cFnHrewHn7BKLRCiOx2pT1ya75MppCmmUFYSVHIBV0zxzjODWntKf7k8OeHj1+QrMVhjuuQVlhClkXKKEpQnOOF5xitRafASw9xgFzP8AhFEeDsAa7KLDRBHFrnZow52Yi/skOvsJsIIzkOjGPkazFc2nG3vGpPPv+qT6fOtNdoqj+z2U9Q+j+NZjLi32thwAD4/RWOlVeIdcnmrfBd7yeSTHHln5GozMf7ztFtEFHJcCEhJ6FReH+lSRxIOCOmKi1kSzM7dbFHkbVNmUw2UkcHJzg/iKoYE29VfoCtfjCXLhtuZcFtZkbUhOAMJAwPLijg4oYIWrOPoK8opO65sgrkGqw7Q7S7du1PSyQEFlmLJeWCeTsKSBj03FHNWWpSQeVCm+VAYVeEXbq+iKqMjzwCsKJ/FIpzSQdEyRuZtisUahiLToG3ykkYiTnFH4hSiB+dP/AGry9mn7e+0oFS5CSF/9meK7XlmMvQkxhx1r3nTsKwDw6T09abNbOx5mgbU9vQlS+52pz08JBrXcPlJB5LCBJe3Tn6K1tJz2pdmZKgAHUIcSr5gE0g1pD7uSxNTyl5PdrPQ70/D5EUz9lLiX9HR0g7u63NcfA8VK7k8yqwzG5YIabSHdxGdoT1/LNZuLU3xNKQNxqFucN15oMSY47E2PmocFDO09fSvcjz4rs3Ek3dRd05DcnNZ/nSQ0yM+iz1x6YzTZLTa4DvcX6/rflg4Vb7MkrI+BVjP4baDocHqZRmIyjvXU6vimgg+VpL3dG6pakJcUG0SY4eV7jKnAlxfH3Qev0robZdXLHMuH2c/HQylJQZCdu8lWD4fexjnJxSK2O3J2YmNpPTMW3qdOEvzEl+Uo+uM8fUkVKLpYZUG2ORdYSkXJ9xYUr7RfTHjMqHkkJw44f6qePia1oMPoGak5iN+iHa3G8YlBDGiMHa/4rev7J40U1Cj6KueL/EmI9uaDkgAJbQQhQwnBJV8hk1E9PSdPWvS8VNluxjLJU0J9xj7SohXVvG4N5O4eIbuPKpXZpkV2wTe6jP3UNrbQ24EojMxxhXhR4QQk/wBVsfM9aZdU3m4WLsq0wqB7BAS9cRHRB9nRI9nGXDkrd3Er88gDgitCaJskALNGjzWBTVctPWu7U5nusDra9yN9NQnDS2nbk41c7glxh2O9DdSuWqR4VLOCMrUc5PrTVGXAtJ7xWoHXXk8Fq0J7459C5kIH4mmic4u4O7p8mROWkk7n3VOAc+QJIT9AKMg5UlCeSRhKB1PoBQu+aO4DATbqulR4fUkHO4NB5NHTvOnopDD1tcvaY8WJa4bLTryUOPSSHX3BnGVbQlOcE+taVsC9zDqcDhzbwf6qazDGsqIT8aRepBiqW4lTUZACnlcjBIHuDPrzWltJulyJIUfJ/wD+IrewmV7w4OFtkFcT00EJZ2JJve5+myS6/SRYHM+6HkEk/OswqWltIbAUMnJH6VqDXqwuxLbKCQXEAn/urONyhrbXlLCjuGQcZ6np+FV8dhe9rXtF7KXhKriic9j3WLrel0jmKadYQlI5IB6Y2nzHxqJdj8RF4/lFQCv3GJi3iNwH82klI5+ITUsfhvIaS45lsKHh3JPJ9OPOq70sTP7brW00paUi9NBICjnh0Z/Sq+BxPjqHh4sbK9xdPFLRxmJ2YZj6BbnPXzpFeXp0e3uO22GiZKSMtsre7oKPpuwcUuc4WaIryreO6CBss2dr+re2VKA4qyzNO2+OFFbkF3vARkcrcBPA58hVLTda6ukqKX9T3dzBPWYv1+day/lJXAW3siu+xzu1ye7jp2kjO5fP5A1izaWVlC0bSPI+VWGkEbKvK4tdZGkPF1DZWpRWCStSjkrUeck0nUSo55GPKnt+1qhacTc31FDktW1hBHVA6n8f0pk6mnuaRuoQU/WPVN+tDfdQ7pIaQkk90TlJ+GDVlaO7THHDi/WhQSjAW6wgjcD1O08fnQ7KIVndtSLgxCbXJWCHHHAFKSv05HT/AFqwZ0Fq5WiTDXGbcWUhxtO0A7k8jH51LLnhjc+97BQQ5J5mxnS5tdQZSZk9K3595nTGXcKbZXhtoo+6ChPB4x1pY5crK0pxqTFTA3qSe97pSEFOB0Vj/WiOOqWtS1JJJ8umK7N61mQx7JN01JfipASFsPJcyAMZKTigykc2vkeKmSw5arq+IxHCKeN9FAHHmR4b/VSO1OOROzPWMm0zkoUIQUzIaUkKSonBwtOfT/xTJbLY1JZakPpS248hKlSUqCVOKKRknqFflTNqC76Iuenrg5bX0Qrq42UJQpK4y9wPQ4wkjr1NPjdnuK3vtCwX+JNQDw0/hYAxwneg9B0HH41tnDXtibHEQ4DyQizHmPqZJpwWuI33sVIdOsiHp64xil5aVyWVJUEEJSAFdT05z5GorqFSrb2S9nrRYZEpyetmSHG0lSkpKyArPPpz1pdYb9dLQy7ab3CkNGUveytkJfQruwVK93C8geWK66anWW5o0zZN6S66ZHesyu7LjJS6NhVwFAnco+uKtwx5aYRgZd1n1tW2XEDMXdoNNdr7IyLLHumkZSnA3b2nso9ocBOzke71UrnyA4zUh09apFkjxTaYiBHZYUl2ZMQEvOK2KwfFwlJOMbSfiaZblqK5XrSk1t+/vxkp7xoPQnV4CQrAUB1HxBximy2R5DNpZjLuC5oCAUyA6Fd5wOTk81SrouxgZ8tz1AWtg1UayslGfKDqA4kjwTm1Agybi0/cnItvkl0Ky1LDveKz5pySCf7VX7oPd9mvdVAyFc/QYrNEBlkXNjdhKw8jOxI5O4dQDitJ9njp+ypAKTkSD+gqPC7HNbuVriZpHZNPQ+HLZedo7y06ZfW5+7QFt+L/ALhVe6Sg2e+6QlXhLinw0pwIUFEDhI8qsfXsWXcdOOxozPfuKWghCOuAeagGg9J3fTmlnbGzDkOMPuLdUXQQpJUAMcfKtg3tohNwzEKDYZksJS6AQpYOQSCOKrHsSgtS/wCUBEQ0D3TU998HrgI3qA/ECr9/YSXHSN7EpSWzzsQcn8qYdA9mKtIawXqWK3cpT6g6A25FUEgrPJ4HoSPrSuYC7PbVV4hI0dmT8o28VejygkDJrmFbqj71yvDiQfsiRj/or/0oqbreUowLPI//AIOf6VD2ZV4PFlVn8rB5+bE0/p6EFPvyZKnjHB4XgBKc/VeKzjNtDkrVz9nYWqQ6ZKmlrHmQcKI+Fa3u2n5F01lD1PLt89UmG2ENMGMooBBUd3u9cnP0FQW0djiLRenbrGF5kPLUo5XHIGScnoKnjZa11UlubkKlu1p1tOoGbTHUO5gMpZSPIEdfr5/WoWsjvVeQx51o+/8AYam53aVcHF3sKkLK8CL0JxjyorH8n6P36FvKvDiB1SY2Mj6Cnvu43TGss2yrXsQu6Yd+Xb33QGpQ8AWeN4GRj4mr2iOIYnMPY3I3eKog32CJiz2pbDt93NO94jbF93B46irEj6Wuq43cC13AjqFKaKT+lP3bYqN8Rz5mqC3SyOJ1C9HZZcUyolaDjgg89elIlWG6qJT7OlPP3nEj+NWZcdNageCEItk1koRgrDfebqbk6C1XKadCLjc4oI//AA2kkfLKSawvsGmJJcSi9nF+INYI2BoAFuaj9403Zbb2F6gkKtMBF0MV9xchLaSv30/e+tcdB9ndgf09PfuEJPtTcNt1p5hSmltnaTnKTz9amh0deHtFTdKzk3WUJLDjTktbY7whSgrIxxxjFItMdn1+04ZZYu19l+1IS2sSY3e4Sn08h9K0WQNbl7tlhzVUshcTb5t9P26KEWLSeof2cF3c1E+J8Ve1LM1pEhtO4lPB4UAUgdD50zwrvebqLWzO0mzdzcY6n2kwiVLQlLpbKilWdvKT51ddt0zckW6RbTGnLDqkLKywU42/Pim3RvZ5O05OivxzcHDHhmIkOMDGwvl4+XXKttWjcbLOZDfdUohmyjSTbEm63S0x5SXW3CWstL8ZznhQBBwCcg0vsrMkQO4t7kK5xmEoabcYcCF4CE4IySM9QRx0q0B2RuI0rJsPfXAsvl1ZWGBlHeKCjjHXBFNbnYRb2rchtt26tyEJCA+xHwvI+9xjJqCoYJAGubmV6gc+me57JMh5X1uoE9cZMfVbTMuO81ESiKkB5oZDp9/xDPn0PnWpOz1LibQ9lBwp8kZ8uAKpy0dmt4t7qdk3VEkAoJ7+KhW7b5ZIJH4+dXZomJNYtG2XFUysuqIS4MKx5ZpGwCNxPX0T5KqSeNrHgaX18VIwhKTkCvT79ChT1CvFe+KMOTzQoUvJLyXvShgHrQoUiRFVQCQBwKFClOyaN14oZIzRhQoV7kvHdDNDNChTU9DNAUKFKF5e15QoV4pEM17QoV4JSiq4rzqTQoUwk3TSgCdwFHoUKelGwX//2Q==]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/sparqlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uc3Ata2V5d29yZCB7CiAgY29sb3I6ICM3MDg7Cn0KCnNwYW4uc3AtcHJlZml4ZWQgewogIGNvbG9yOiAjNWQxOwp9CgpzcGFuLnNwLXZhciB7CiAgY29sb3I6ICMwMGM7Cn0KCnNwYW4uc3AtY29tbWVudCB7CiAgY29sb3I6ICNhNzA7Cn0KCnNwYW4uc3AtbGl0ZXJhbCB7CiAgY29sb3I6ICNhMjI7Cn0KCnNwYW4uc3AtdXJpIHsKICBjb2xvcjogIzI5MjsKfQoKc3Bhbi5zcC1vcGVyYXRvciB7CiAgY29sb3I6ICMwODg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/xmlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4ueG1sLXRhZ25hbWUgewogIGNvbG9yOiAjQTBCOwp9CgpzcGFuLnhtbC1hdHRyaWJ1dGUgewogIGNvbG9yOiAjMjgxOwp9CgpzcGFuLnhtbC1wdW5jdHVhdGlvbiB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnhtbC1hdHRuYW1lIHsKICBjb2xvcjogIzAwRjsKfQoKc3Bhbi54bWwtY29tbWVudCB7CiAgY29sb3I6ICNBNzA7Cn0KCnNwYW4ueG1sLWNkYXRhIHsKICBjb2xvcjogIzQ4QTsKfQoKc3Bhbi54bWwtcHJvY2Vzc2luZyB7CiAgY29sb3I6ICM5OTk7Cn0KCnNwYW4ueG1sLWVudGl0eSB7CiAgY29sb3I6ICNBMjI7Cn0KCnNwYW4ueG1sLWVycm9yIHsKIGNvbG9yOiAjRjAwICFpbXBvcnRhbnQ7Cn0KCnNwYW4ueG1sLXRleHQgewogIGNvbG9yOiBibGFjazsKfQo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/csstest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogQ1NTIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5EZW1vbnN0cmF0aW9uIG9mIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MgQ1NTCmhpZ2hsaWdodGVyLjwvcD4KCjxkaXYgY2xhc3M9ImJvcmRlciI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+Ci8qIFNvbWUgZXhhbXBsZSBDU1MgKi8KCkBpbXBvcnQgdXJsKCJzb21ldGhpbmcuY3NzIik7Cgpib2R5IHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogM2VtIDZlbTsKICBmb250LWZhbWlseTogdGFob21hLCBhcmlhbCwgc2Fucy1zZXJpZjsKICBjb2xvcjogIzAwMDsKfQoKI25hdmlnYXRpb24gYSB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7Cn0KCmgxIHsKICBmb250LXNpemU6IDIuNWVtOwp9CgpoMiB7CiAgZm9udC1zaXplOiAxLjdlbTsKfQoKaDE6YmVmb3JlLCBoMjpiZWZvcmUgewogIGNvbnRlbnQ6ICI6OiI7Cn0KCmNvZGUgewogIGZvbnQtZmFtaWx5OiBjb3VyaWVyLCBtb25vc3BhY2U7CiAgZm9udC1zaXplOiA4MCU7CiAgY29sb3I6ICM0MThBOEE7Cn0KPC90ZXh0YXJlYT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgaGVpZ2h0OiAiZHluYW1pYyIsCiAgICBwYXJzZXJmaWxlOiAicGFyc2Vjc3MuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9jc3Njb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/faq.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IEZBUTwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PURyb2lkK1NhbnN8RHJvaWQrU2FucytNb25vfERyb2lkK1NhbnM6Ym9sZCIvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz4KICA8L2hlYWQ+CiAgPGJvZHk+Cgo8aDE+PHNwYW4gY2xhc3M9ImxvZ28tYnJhY2VzIj57IH08L3NwYW4+IENvZGVNaXJyb3I8L2gxPgoKPHByZSBjbGFzcz0iZ3JleSI+Ci8qIEZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zICovCjwvcHJlPgoKPGRpdiBjbGFzcz0iY2xlYXIiPjxkaXYgY2xhc3M9ImxlZnRiaWcgYmxrIj4KCiAgICA8aDIgaWQ9ImxpY2Vuc2UiPlE6IENhbiBJIHVzZSBDb2RlTWlycm9yIGluIG15IHN1Y2gtYW5kLXN1Y2ggcHJvamVjdD88L2gyPgoKICAgIDxwPkE6IFllcy4gVGhlIDxhIGhyZWY9IkxJQ0VOU0UiPmxpY2Vuc2U8L2E+IGlzIHNob3J0LCBzaW1wbGUsIGFuZAogICAgcGVybWlzc2l2ZS48L3A+CgogICAgPGgyIGlkPSJjYWNoZSI+UTogWW91IHNhaWQgeW91IGZpeGVkIHRoaXMtYW5kLXRoaXMgaXNzdWUsIGJ1dCBJJ20KICAgIHN0aWxsIHNlZWluZyBpdC48L2gyPgoKICAgIDxwPkE6IE9uZSBwb3NzaWJpbGl0eSBpcyB0aGF0IEkgc2NyZXdlZCB1cCwgYnV0IGEgdmVyeSByZWFsCiAgICBhbHRlcm5hdGl2ZSBpcyB0aGF0IHlvdSdyZSBsb29raW5nIGF0IGEgY2FjaGVkIHZlcnNpb24gb2YgdGhlCiAgICBDb2RlTWlycm9yIHNjcmlwdHMuIEJlY2F1c2UgdGhlIHNjcmlwdHMgYXJlIGxvYWRlZCBpbnRvIGFuIGlmcmFtZSwKICAgIHRoZSBjdHJsLWY1IHlvdSBpc3N1ZWQgb24gdGhlIG91dGVyIHBhZ2UgZG9lc24ndCBhbHdheXMgY2F1c2UgdGhlbQogICAgdG8gYmUgcmVsb2FkZWQgKElFLCBPcGVyYSwgYW5kIEZpcmVmb3ggYXJlIHRoZSB3b3JzdCBvZmZlbmRlcnMKICAgIGhlcmUpLiBDbGVhciB5b3VyIGNhY2hlIGFuZCByZS10cnkuPC9wPgoKICAgIDxoMiBpZD0idGV4dGFyZWEiPlE6IEkgY2FuJ3QgcHV0IGNvbnRlbnQgY29udGFpbmluZwogICAgPGNvZGU+Jmx0Oy90ZXh0YXJlYT48L2NvZGU+IGludG8gQ29kZU1pcnJvciE8L2gyPgoKICAgIDxwPkE6IFtXZWItcHJvZ3JhbW1pbmcgMTAxXSBUaGUgZmlyc3QgPGNvZGU+Jmx0Oy90ZXh0YXJlYT48L2NvZGU+CiAgICBmb2xsb3dpbmcgYSA8Y29kZT4mbHQ7dGV4dGFyZWE+PC9jb2RlPiB0YWcgd2lsbCBjbG9zZSB0aGUKICAgIHRleHRhcmVhLiBUaGlzIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggQ29kZU1pcnJvci4gU2l0IGRvd24sIGFuZAogICAgc3BlbmQgdGVuIG1pbnV0ZXMgdGhpbmtpbmcgYWJvdXQgd2h5IEhUTUwtZXNjYXBpbmcgd2FzCiAgICBpbnZlbnRlZC48L3A+CgogICAgPGgyIGlkPSJkZWJ1ZyI+UTogSSBoYXZlIHRoaXMgaHVnZSBjaHVuayBvZiBjb2RlIHRoYXQgZG9lcyBub3QKICAgIHdvcmssIGNhbiB5b3UgZGVidWcgaXQgZm9yIG1lPzwvaDI+CgogICAgPHA+QTogTm9wZS4gSWYgeW91IGNhbid0IGJlIGJvdGhlcmVkIGlzb2xhdGUgeW91ciBwcm9ibGVtIGluIDIwCiAgICBsaW5lcyBvZiBjb2RlIG9yIGxlc3MsIEkgY2FuJ3QgYmUgYm90aGVyZWQgdG8gdGhpbmsgYWJvdXQgaXQuPC9wPgoKICAgIDxoMiBpZD0icGF0Y2giPlE6IEhvdyBkbyBJIHN1Ym1pdCBwYXRjaGVzIGZvciBDb2RlTWlycm9yPzwvaDI+CgogICAgPHA+QTogUHJlZmVycmVkIHdheSBpcyB0byBjcmVhdGUgYSBmb3JrIG9uIDxhCiAgICBocmVmPSJodHRwOi8vZ2l0aHViLmNvbS9tYXJpam5oL0NvZGVNaXJyb3IiPmdpdGh1YjwvYT4sIGFkZCB5b3VyCiAgICBwYXRjaCwgYW5kIHNlbmQgbWUgYSBwdWxsIHJlcXVlc3QuIERpZmZzIChhZ2FpbnN0IHRoZSBsYXRlc3QKICAgIHZlcnNpb24hKSBieSBtYWlsIGFyZSBhbHNvIGNvb2wuPC9wPgoKCjwvZGl2PjxkaXYgY2xhc3M9InJpZ2h0c21hbGwgYmxrIj4KCiAgPGgyPlF1ZXN0aW9uczwvaDI+CgogIDx1bD4KICAgIDxsaT48YSBocmVmPSIjbGljZW5zZSI+TGljZW5zaW5nPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2NhY2hlIj5DYWNoZSBJc3N1ZXM8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjdGV4dGFyZWEiPjxjb2RlPiZsdDt0ZXh0YXJlYT48L2NvZGU+PC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2RlYnVnIj5Db2RlIFF1ZXN0aW9uczwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNwYXRjaCI+U3VibWl0dGluZyBQYXRjaGVzPC9hPjwvbGk+CiAgPC91bD4KCiAgPGgyPlNpdGU8L2gyPgoKICA8dWw+CiAgICA8bGk+PGEgaHJlZj0iaW5kZXguaHRtbCI+RnJvbnQgUGFnZTwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Im1hbnVhbC5odG1sIj5Vc2VyIE1hbnVhbDwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9jb2RlbWlycm9yIj5Hb29nbGUgR3JvdXA8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJjb21wcmVzcy5odG1sIj5Db21wcmVzc2lvbiBIZWxwZXI8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJzdG9yeS5odG1sIj5XYXIgU3Rvcnk8L2E+PC9saT4KICA8L3VsPgoKPC9kaXY+PC9kaXY+Cgo8ZGl2IHN0eWxlPSJoZWlnaHQ6IDJlbSI+Jm5ic3A7PC9kaXY+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/favicon.ico</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAD0AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/gAAAAAAAAAAAAAADAAAAPsAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP8AAAAA3/0AAN/9AADBwQAA4IMAAP4/AAD/fwAA/38AAP//AAD//wAA/38AAP9/AAD+PwAA4IMAAMHBAADf/QAA3/0AAA==]]></data>
	</file>
	<file>
	  <filename>/codemirror/highlight.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2hpZ2hsaWdodC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJqcy9zdHJpbmdzdHJlYW0uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ianMvdG9rZW5pemUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ianMvdG9rZW5pemVqYXZhc2NyaXB0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImpzL3BhcnNlamF2YXNjcmlwdC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDx0aXRsZT5Db2RlTWlycm9yOiBTdHJpbmcgaGlnaGxpZ2h0IGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pzY29sb3JzLmNzcyIvPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IC40ZW07Ij4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjIwIiBzdHlsZT0iYm9yZGVyLXdpZHRoOiAwIj4KLy8gRGVtbyBmb3IgcnVubmluZyBhIENvZGVNaXJyb3IgcGFyc2VyIG92ZXIgYSBwaWVjZSBvZiBjb2RlIHdpdGhvdXQKLy8gY3JlYXRpbmcgYW4gYWN0dWFsIGVkaXRvci4KCihmdW5jdGlvbigpewogIGZ1bmN0aW9uIG5vcm1hbGlzZVN0cmluZyhzdHJpbmcpIHsKICAgIHZhciB0YWIgPSAiIjsKICAgIGZvciAodmFyIGkgPSAwOyBpICZsdDsgaW5kZW50VW5pdDsgaSsrKSB0YWIgKz0gIiAiOwoKICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cdC9nLCB0YWIpLnJlcGxhY2UoL1x1MDBhMC9nLCAiICIpLnJlcGxhY2UoL1xyXG4/L2csICJcbiIpOwogICAgdmFyIHBvcyA9IDAsIHBhcnRzID0gW10sIGxpbmVzID0gc3RyaW5nLnNwbGl0KCJcbiIpOwogICAgZm9yICh2YXIgbGluZSA9IDA7IGxpbmUgJmx0OyBsaW5lcy5sZW5ndGg7IGxpbmUrKykgewogICAgICBpZiAobGluZSAhPSAwKSBwYXJ0cy5wdXNoKCJcbiIpOwogICAgICBwYXJ0cy5wdXNoKGxpbmVzW2xpbmVdKTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICBpZiAocG9zICZsdDsgcGFydHMubGVuZ3RoKSByZXR1cm4gcGFydHNbcG9zKytdOwogICAgICAgIGVsc2UgdGhyb3cgU3RvcEl0ZXJhdGlvbjsKICAgICAgfQogICAgfTsKICB9CgogIHdpbmRvdy5oaWdobGlnaHRUZXh0ID0gZnVuY3Rpb24oc3RyaW5nLCBvdXRwdXQsIHBhcnNlcikgewogICAgdmFyIHBhcnNlciA9IChwYXJzZXIgfHwgRWRpdG9yLlBhcnNlcikubWFrZShzdHJpbmdTdHJlYW0obm9ybWFsaXNlU3RyaW5nKHN0cmluZykpKTsKICAgIHRyeSB7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdmFyIHRva2VuID0gcGFyc2VyLm5leHQoKTsKICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTsKICAgICAgICBzcGFuLmNsYXNzTmFtZSA9IHRva2VuLnN0eWxlOwogICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodG9rZW4udmFsdWUpKTsKICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoc3Bhbik7CiAgICAgIH0KICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgIGlmIChlICE9IFN0b3BJdGVyYXRpb24pIHRocm93IGU7CiAgICB9CiAgfQp9KSgpOwo8L3RleHRhcmVhPgo8L2Rpdj4KCjxidXR0b24gb25jbGljaz0iaGlnaGxpZ2h0KCkiPlJ1biBoaWdobGlnaHRlcjwvYnV0dG9uPgoKPGRpdj4KPGRpdiBpZD0ibnVtYmVycyIgc3R5bGU9ImZsb2F0OiBsZWZ0OyB3aWR0aDogMmVtOyBtYXJnaW4tcmlnaHQ6IC41ZW07IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBjb2xvcjogI0NDQzsiPjwvZGl2Pgo8cHJlIGlkPSJvdXRwdXQiIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlIj48L3ByZT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgLy8gU2ltcGxlIGhhY2sgdG8gZGVtb25zdHJhdGUgYWRkaW5nIGxpbmUgbnVtYmVycy4gSnVzdCBwYXNzIHRoZSBET00gbm9kZSBhcwogIC8vIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gaGlnaGxpZ2h0VGV4dCB3aGVuIHlvdSBkb24ndCBuZWVkIHRob3NlCiAgZnVuY3Rpb24gaGlnaGxpZ2h0KCkgewogICAgdmFyIGxpbmVObyA9IDEsIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKSwgbnVtYmVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJudW1iZXJzIik7CiAgICBvdXRwdXQuaW5uZXJIVE1MID0gbnVtYmVycy5pbm5lckhUTUwgPSAiIjsKCiAgICBmdW5jdGlvbiBhZGRMaW5lKGxpbmUpIHsKICAgICAgbnVtYmVycy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcobGluZU5vKyspKSk7CiAgICAgIG51bWJlcnMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiQlIiKSk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykgb3V0cHV0LmFwcGVuZENoaWxkKGxpbmVbaV0pOwogICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiQlIiKSk7CiAgICB9CiAgICBoaWdobGlnaHRUZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb2RlIikudmFsdWUsIGFkZExpbmUpOwogIH0KPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/htmltest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSFRNTC9YTUwgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIC5Db2RlTWlycm9yLWxpbmUtbnVtYmVycyB7CiAgICAgICAgd2lkdGg6IDIuMmVtOwogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogLjNlbTsKICAgICAgICBmb250LXNpemU6IDEwcHQ7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBwYWRkaW5nLXRvcDogLjRlbTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KCjxwPlRoaXMgaXMgYSBzaW1wbGUgZGVtb25zdHJhdGlvbiBvZiB0aGUgWE1ML0hUTUwgaW5kZW50YXRpb24gbW9kdWxlCmZvciA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPi4gVGhlIDxhCmhyZWY9ImpzL3BhcnNleG1sLmpzIj5qYXZhc2NyaXB0PC9hPiBmaWxlIGNvbnRhaW5zIHNvbWUgY29tbWVudHMgd2l0aAptb3JlIGluZm9ybWF0aW9uLjwvcD4KCjxkaXYgY2xhc3M9ImJvcmRlciI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+CiZsdDtodG1sIHN0eWxlPSJjb2xvcjogZ3JlZW4iJmd0OwogICZsdDshLS0gdGhpcyBpcyBhIGNvbW1lbnQgLS0mZ3Q7CiAgJmx0O2hlYWQmZ3Q7CiAgICAmbHQ7dGl0bGUmZ3Q7SFRNTCBFeGFtcGxlJmx0Oy90aXRsZSZndDsKICAmbHQ7L2hlYWQmZ3Q7CiAgJmx0O2JvZHkmZ3Q7CiAgICBUaGUgaW5kZW50YXRpb24gdHJpZXMgdG8gYmUgJmx0O2VtJmd0O3NvbWV3aGF0ICZhbXA7cXVvdDtkbyB3aGF0CiAgICBJIG1lYW4mYW1wO3F1b3Q7Jmx0Oy9lbSZndDsuLi4gYnV0IG1pZ2h0IG5vdCBtYXRjaCB5b3VyIHN0eWxlLgogICZsdDsvYm9keSZndDsKJmx0Oy9odG1sJmd0Owo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBwYXJzZXJmaWxlOiAicGFyc2V4bWwuanMiLAogICAgc3R5bGVzaGVldDogImNzcy94bWxjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iLAogICAgY29udGludW91c1NjYW5uaW5nOiA1MDAsCiAgICBsaW5lTnVtYmVyczogdHJ1ZQogIH0pOwo8L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I8L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Ecm9pZCtTYW5zfERyb2lkK1NhbnMrTW9ub3xEcm9pZCtTYW5zOmJvbGQiLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+CiAgPC9oZWFkPgogIDxib2R5PgoKPGgxPjxzcGFuIGNsYXNzPSJsb2dvLWJyYWNlcyI+eyB9PC9zcGFuPiBDb2RlTWlycm9yPC9oMT4KCjxwcmUgY2xhc3M9ImdyZXkiPgovKiBJbi1icm93c2VyIGNvZGUgZWRpdGluZwogICBtYWRlIGFsbW9zdCBiZWFyYWJsZSAqLwo8L3ByZT4KCjxkaXYgY2xhc3M9ImNsZWFyIj48ZGl2IGNsYXNzPSJsZWZ0IGJsayI+CgogIDxwIHN0eWxlPSJtYXJnaW4tdG9wOiAwIj5Db2RlTWlycm9yIGlzIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEKICByZWxhdGl2ZWx5IHBsZWFzYW50IGVkaXRvciBpbnRlcmZhY2UgZm9yIGNvZGUtbGlrZSBjb250ZW50ICYjeDIwMTU7CiAgY29tcHV0ZXIgcHJvZ3JhbXMsIEhUTUwgbWFya3VwLCBhbmQgc2ltaWxhci4gSWYgYSBwYXJzZXIgaGFzIGJlZW4KICB3cml0dGVuIGZvciB0aGUgbGFuZ3VhZ2UgeW91IGFyZSBlZGl0aW5nIChzZWUgYmVsb3cgZm9yIGEgbGlzdCBvZgogIHN1cHBvcnRlZCBsYW5ndWFnZXMpLCB0aGUgY29kZSB3aWxsIGJlIGNvbG91cmVkLCBhbmQgdGhlIGVkaXRvciB3aWxsCiAgaGVscCB5b3Ugd2l0aCBpbmRlbnRhdGlvbi48L3A+CiAKICA8ZGl2IGNsYXNzPSJjbGVhciI+PGRpdiBjbGFzcz0ibGVmdDEgYmxrIj4KCiAgICA8aDIgc3R5bGU9Im1hcmdpbi10b3A6IDAiPlRyeSB0aGUgcGFyc2VyIHRlc3QgcGFnZXM6PC9oMj4KCiAgICA8dWw+CiAgICAgIDxsaT48YSBocmVmPSJqc3Rlc3QuaHRtbCI+SmF2YVNjcmlwdDwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iaHRtbHRlc3QuaHRtbCI+WE1ML0hUTUw8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNzc3Rlc3QuaHRtbCI+Q1NTPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJtaXhlZHRlc3QuaHRtbCI+SFRNTCBtaXhlZC1tb2RlPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJzcGFycWx0ZXN0Lmh0bWwiPlNQQVJRTDwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iY29udHJpYi9waHAvaW5kZXguaHRtbCI+SFRNTCtQSFAgbWl4ZWQtbW9kZTwvYT4gKGNvdXJ0ZXN5IG9mIDxhIGhyZWY9ImNvbnRyaWIvcGhwL0xJQ0VOU0UiPllhaG9vITwvYT4pPC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvcHl0aG9uL2luZGV4Lmh0bWwiPlB5dGhvbjwvYT4gKGJ5IDxhIGhyZWY9ImNvbnRyaWIvcHl0aG9uL0xJQ0VOU0UiPlRpbW90aHkgRmFycmVsbDwvYT4pPC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvbHVhL2luZGV4Lmh0bWwiPkx1YTwvYT4gKGJ5IDxhIGhyZWY9Imh0dHA6Ly9mcmFuY2lvLnBsLyI+RnJhbmNpc3playBXYXdyemFrPC9hPik8L2xpPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vaGFrdW5pbi9ydWJ5LWluLWNvZGVtaXJyb3IvdHJlZS9tYXN0ZXIiPlJ1Ynk8L2E+IChieSBNaWNoYWwgSGFudGwsIHVuZmluaXNoZWQpPC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvc3FsL2luZGV4Lmh0bWwiPlNRTDwvYT4gKGJ5IEpvaG4gQmVuZWRpa3Rzc29uKTwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJjb250cmliL3Bsc3FsL2luZGV4Lmh0bWwiPlBMU1FMPC9hPiAoYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5vcmFjbGUtYW5kLWFwZXguY29tLyI+UGV0ZXIgUmFnYW5pdHNjaDwvYT4pPC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubGlyYW51bmEuY29tL2RpZmYtcGFyc2VyLWZvci1jb2RlbWlycm9yLyI+ZGlmZjwvYT4gKGNvdXJ0ZXN5IG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cubGlyYW51bmEuY29tIj5MaXJhbiBOdW5hPC9hPik8L2xpPgogICAgICA8bGk+PGEgaHJlZj0iY29udHJpYi9ncm9vdnkvaW5kZXguaHRtbCI+R3Jvb3Z5PC9hPiAoYnkgPGEgaHJlZj0iaHR0cDovL2V4b3BsYXRmb3JtLm9yZy8iPmVYbyBQbGF0Zm9ybTwvYT4pPC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvY3NoYXJwL2luZGV4Lmh0bWwiPkMjPC9hPiAoYnkgPGEgaHJlZj0iaHR0cDovL3NraWxsdGVzdGluZy5jb20vIj5Cb3JpcyBHYWJlciBhbmQgQ2hyaXN0b3BoZXIgQnVjaGlubzwvYT4pPC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvc2NoZW1lL2luZGV4Lmh0bWwiPlNjaGVtZTwvYT4gKGJ5IDxhIGhyZWY9Imh0dHA6Ly9oYXNoY29sbGlzaW9uLm9yZy8iPkRhbm55IFlvbzwvYT4pPC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIveHF1ZXJ5L2luZGV4Lmh0bWwiPlhRdWVyeTwvYT4gKGJ5IDxhIGhyZWY9Imh0dHA6Ly9taWtlLmJyZXZvb3J0LmNvbS8iPk1pa2UgQnJldm9vcnQ8L2E+KTwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJjb250cmliL29tZXRhL2luZGV4Lmh0bWwiPk9tZXRhSlM8L2E+IChieSA8YSBocmVmPSJodHRwOi8vZXJpY2tlZGppLndvcmRwcmVzcy5jb20vIj5FcmljIEtFREpJPC9hPik8L2xpPgogICAgPC91bD4KCiAgPC9kaXY+PGRpdiBjbGFzcz0ibGVmdDIgYmxrIj4KCiAgICA8aDIgc3R5bGU9Im1hcmdpbi10b3A6IDAiPlNvbWUgcmVhbC13b3JsZCB1c2VzOjwvaDI+CgogICAgPHVsPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2ttbC1zYW1wbGVzLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9pbnRlcmFjdGl2ZS9pbmRleC5odG1sIj5Hb29nbGUgRWFydGggS01MIHNhbXBsZXI8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9lbG9xdWVudGphdmFzY3JpcHQubmV0L2NoYXB0ZXIxLmh0bWwiPkVsb3F1ZW50IEphdmFTY3JpcHQncyBjb25zb2xlPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGVtby5xb294ZG9vLm9yZy9jdXJyZW50L3BsYXlncm91bmQvI0hlbGxvX1dvcmxkIj5UaGUgcW9veGRvbyBwbGF5Z3JvdW5kPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vYmlsbG1pbGwub3JnL3N0YXRpYy9jYW52YXN0dXRvcmlhbC9pbmRleC5odG1sIj5BIGNvb2wgdHV0b3JpYWwgYWJvdXQgdGhlICZsdDtjYW52YXM+IGVsZW1lbnQ8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vcmMuY3NyZXMudXRleGFzLmVkdS90cnlvcmMuc2h0bWwiPkFuIG9ubGluZSBJREUgZm9yIHRoZSBPcmMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBpcy9hamF4L3BsYXlncm91bmQiPkdvb2dsZSdzIEFQSSBwbGF5Z3JvdW5kPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vY3JhaWMuY29tL3R1dG9yaWFscy9qYXZhc2NyaXB0L3JhcGhhZWxfbGl2ZS9yYXBoYWVsX2xpdmUuaHRtbCI+UmFwaGHDq2wgTGl2ZTwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2pzYmluLmNvbS8iPkpTIEJpbjwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5yb2NrZXR0aGVtZS5jb20vZXh0ZW5zaW9ucy1qb29tbGEvcm9rcGFkIj5UaGUgUm9rUGFkIHBsdWdpbiBmb3IgSm9vbWxhPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vc2NyYXBlcndpa2kuY29tL2VkaXRvci8iPlRoZSBzY3JhcGVyd2lraSBlZGl0b3I8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubGluYi5uZXQvVmlzdWFsSlMvVUlCdWlsZGVyLmh0bWwiPmpzTGluYiBVSSBCdWlsZGVyPC9hPjwvbGk+CiAgICA8L3VsPgoKICA8L2Rpdj48L2Rpdj4KCiAgPGgyIGlkPSJzdXBwb3J0ZWQiPlN1cHBvcnRlZCBicm93c2VyczwvaDI+CgogIDxwPlRoZSBmb2xsb3dpbmcgYnJvd3NlcnMgYXJlIGFibGUgdG8gcnVuIENvZGVNaXJyb3I6PC9wPgoKICA8dWw+CiAgICA8bGk+RmlyZWZveCAxLjUgb3IgaGlnaGVyPC9saT4KICAgIDxsaT5JbnRlcm5ldCBFeHBsb3JlciA2IG9yIGhpZ2hlcjwvbGk+CiAgICA8bGk+U2FmYXJpIDMgb3IgaGlnaGVyPC9saT4KICAgIDxsaT5PcGVyYSA5LjUyIG9yIGhpZ2hlcjwvbGk+CiAgICA8bGk+Q2hyb21lPC9saT4KICA8L3VsPgoKICA8cD5JIGFtIG5vdCBhY3RpdmVseSB0ZXN0aW5nIGFnYWluc3QgZXZlcnkgbmV3IGJyb3dzZXIgcmVsZWFzZSwgYW5kCiAgdmVuZG9ycyBoYXZlIGEgaGFiaXQgb2YgaW50cm9kdWNpbmcgYnVncyBhbGwgdGhlIHRpbWUsIHNvIEkgYW0KICByZWx5aW5nIG9uIHRoZSBjb21tdW5pdHkgdG8gdGVsbCBtZSB3aGVuIHNvbWV0aGluZyBicmVha3MuIFNlZSA8YQogIGhyZWY9IiNzdXBwb3J0Ij5iZWxvdzwvYT4gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IG1lLjwvcD4KCiAgPGgyIGlkPSJjb2RlIj5HZXR0aW5nIHRoZSBjb2RlPC9oMj4KCiAgPHA+QWxsIG9mIENvZGVNaXJyb3IgaXMgcmVsZWFzZWQgdW5kZXIgYSA8YQogIGhyZWY9IkxJQ0VOU0UiPnpsaWItc3R5bGU8L2E+IGxpY2Vuc2UuIFRvIGdldCBpdCwgeW91IGNhbiBkb3dubG9hZAogIHRoZSA8YSBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci56aXAiPmxhdGVzdAogIHJlbGVhc2U8L2E+IG9yIHRoZSBjdXJyZW50IDxhCiAgaHJlZj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3ItbGF0ZXN0LnppcCI+ZGV2ZWxvcG1lbnQKICBzbmFwc2hvdDwvYT4gYXMgemlwIGZpbGVzLiBUbyBjcmVhdGUgYSBjdXN0b20gbWluaWZpZWQgc2NyaXB0IGZpbGUsCiAgeW91IGNhbiB1c2UgdGhlIDxhIGhyZWY9ImNvbXByZXNzLmh0bWwiPmNvbXByZXNzaW9uIEFQSTwvYT4uPC9wPgoKICA8cD5XZSB1c2UgPGEgaHJlZj0iaHR0cDovL2dpdC1zY20uY29tLyI+Z2l0PC9hPiBmb3IgdmVyc2lvbiBjb250cm9sLgogIFRoZSBtYWluIHJlcG9zaXRvcnkgY2FuIGJlIGZldGNoZWQgaW4gdGhpcyB3YXk6PC9wPgoKICA8cHJlIGNsYXNzPSJjb2RlIj5naXQgY2xvbmUgaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvZ2l0L2NvZGVtaXJyb3I8L3ByZT4KCiAgPHA+Q29kZU1pcnJvciBjYW4gYWxzbyBiZSBmb3VuZCBvbiBHaXRIdWI6IDxhCiAgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vbWFyaWpuaC9Db2RlTWlycm9yIj5odHRwOi8vZ2l0aHViLmNvbS9tYXJpam5oL0NvZGVNaXJyb3I8L2E+LgogIElmIHlvdSBwbGFuIHRvIGhhY2sgb24gdGhlIGNvZGUgYW5kIGNvbnRyaWJ1dGUgcGF0Y2hlcywgdGhlIGJlc3Qgd2F5CiAgdG8gZG8gaXQgaXMgdG8gY3JlYXRlIGEgR2l0SHViIGZvcmssIGFuZCBzZW5kIHB1bGwgcmVxdWVzdHMuPC9wPgoKICA8aDIgaWQ9ImRvY3VtZW50aW9uIj5Eb2N1bWVudGF0aW9uPC9oMj4KCiAgPHA+VGhlIDxhIGhyZWY9Im1hbnVhbC5odG1sIj5tYW51YWw8L2E+IGlzIHlvdXIgZmlyc3Qgc3RvcCBmb3IKICBsZWFybmluZyBob3cgdG8gdXNlIHRoaXMgbGlicmFyeS4gSXQgc3RhcnRzIHdpdGggYSBxdWljayBleHBsYW5hdGlvbgogIG9mIGhvdyB0byB1c2UgdGhlIGVkaXRvciwgYW5kIHRoZW4gZGVzY3JpYmVzIGFsbCBvZiB0aGUgKG1hbnkpCiAgb3B0aW9ucyBhbmQgbWV0aG9kcyB0aGF0IENvZGVNaXJyb3IgZXhwb3Nlcy48L3A+CgogIDxwPkZvciB0aG9zZSB3aG8gd2FudCB0byBsZWFybiBtb3JlIGFib3V0IHRoZSBjb2RlLCA8YQogIGhyZWY9InN0b3J5Lmh0bWwiPnRoaXMgZG9jdW1lbnQ8L2E+IGFib3V0IENvZGVNaXJyb3IncyBhcmNoaXRlY3R1cmUKICB3aWxsIGJlIHVzZWZ1bC4gVGhlIDxhCiAgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vbWFyaWpuaC9Db2RlTWlycm9yIj5zb3VyY2UgY29kZTwvYT4gaXRzZWxmCiAgaXMsIGZvciB0aGUgbW9zdCBwYXJ0LCBhbHNvIHZlcnkgd2VsbCBjb21tZW50ZWQuPC9wPgoKICA8aDIgaWQ9InN1cHBvcnQiPlN1cHBvcnQ8L2gyPgoKICA8cD5UaGVyZSBpcyBhIDxhCiAgaHJlZj0iaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2NvZGVtaXJyb3IiPkdvb2dsZSBncm91cDwvYT4gKGEKICBzb3J0IG9mIG1haWxpbmcgbGlzdC9uZXdzZ3JvdXAgdGhpbmcpIGZvciBkaXNjdXNzaW9uIGFuZCBuZXdzCiAgcmVsYXRlZCB0byBDb2RlTWlycm9yLiBQbGVhc2UgY2hlY2sgdGhlIDxhIGhyZWY9ImZhcS5odG1sIj5GQVE8L2E+CiAgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uLiBZb3UgY2FuIGFsc28gZS1tYWlsIG1lIGRpcmVjdGx5OiA8YQogIGhyZWY9Im1haWx0bzptYXJpam5oQGdtYWlsLmNvbSI+TWFyaWpuIEhhdmVyYmVrZTwvYT4uPC9wPgoKPC9kaXY+Cgo8ZGl2IGNsYXNzPSJyaWdodCBibGsiPgoKICA8YSBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci56aXAiIGNsYXNzPSJkb3dubG9hZCI+RG93bmxvYWQgdGhlIGxhdGVzdCByZWxlYXNlPC9hPgoKICA8aDI+TWFrZSBhIGRvbmF0aW9uPC9oMj4KCiAgPHVsPgogICAgPGxpPjxzcGFuIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXlwYWwnKS5zdWJtaXQoKTsiIGNsYXNzPSJxdWFzaWxpbmsiPlBheXBhbDwvc3Bhbj48L2xpPgogICAgPGxpPjxzcGFuIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYW5raW5mbycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyIgY2xhc3M9InF1YXNpbGluayI+QmFuazwvc3Bhbj48L2xpPgogIDwvdWw+CgogIDxwIGlkPSJiYW5raW5mbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgIEJhbms6IDxpPlJhYm9iYW5rPC9pPjxici8+CiAgICBDb3VudHJ5OiA8aT5OZXRoZXJsYW5kczwvaT48YnIvPgogICAgU1dJRlQ6IDxpPlJBQk9OTDJVPC9pPjxici8+CiAgICBBY2NvdW50OiA8aT4xNDc4NTA3NzA8L2k+PGJyLz4KICAgIE5hbWU6IDxpPk1hcmlqbiBIYXZlcmJla2U8L2k+PGJyLz4KICAgIElCQU46IDxpPk5MMjYgUkFCTyAwMTQ3IDg1MDcgNzA8L2k+CiAgPC9wPgoKICA8aDI+UmVsZWFzZXM6PC9oMj4KCiAgPHAgY2xhc3M9InJlbCI+MDItMTAtMjAxMDogPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjkuemlwIj5WZXJzaW9uIDAuOTwvYT46PC9wPgogIDx1bCBjbGFzcz0icmVsLW5vdGUiPgogICAgPGxpPkFkZCBzdXBwb3J0IGZvciBzZWFyY2hpbmcgYmFja3dhcmRzLjwvbGk+CiAgICA8bGk+VGhlcmUgYXJlIG5vdyBwYXJzZXJzIGZvciA8YSBocmVmPSJjb250cmliL3NjaGVtZS9pbmRleC5odG1sIj5TY2hlbWU8L2E+LCA8YSBocmVmPSJjb250cmliL3hxdWVyeS9pbmRleC5odG1sIj5YUXVlcnk8L2E+LCBhbmQgPGEgaHJlZj0iY29udHJpYi9vbWV0YS9pbmRleC5odG1sIj5PbWV0YUpTPC9hPi48L2xpPgogICAgPGxpPk1ha2VzIDxjb2RlPmhlaWdodDogImR5bmFtaWMiPC9jb2RlPiBtb3JlIHJvYnVzdC48L2xpPgogICAgPGxpPkZpeGVzIGJ1ZyB3aGVyZSBwYXN0ZSBkaWQgbm90IHdvcmsgb24gT1MgWC48L2xpPgogICAgPGxpPkFkZCBhIDxjb2RlPmVudGVyTW9kZTwvY29kZT4gYW5kIDxjb2RlPmVsZWN0cmljQ2hhcnM8L2NvZGU+IG9wdGlvbnMgdG8gbWFrZSBpbmRlbnRhdGlvbiBldmVuIG1vcmUgY3VzdG9taXphYmxlLjwvbGk+CiAgICA8bGk+QWRkIDxjb2RlPmZpcnN0TGluZU51bWJlcjwvY29kZT4gb3B0aW9uLjwvbGk+CiAgICA8bGk+Rml4IGJhZCBoYW5kbGluZyBvZiA8Y29kZT5AbWVkaWE8L2NvZGU+IHJ1bGVzIGJ5IHRoZSBDU1MgcGFyc2VyLjwvbGk+CiAgICA8bGk+VGFrZSBhIG5ldywgbW9yZSByb2J1c3QgYXBwcm9hY2ggdG8gd29ya2luZyBhcm91bmQgdGhlIGludmlzaWJsZS1sYXN0LWxpbmUgYnVnIGluIFdlYktpdC48L2xpPgogIDwvdWw+CgogIDxwIGNsYXNzPSJyZWwiPjIyLTA3LTIwMTA6IDxhCiAgaHJlZj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3ItMC44LnppcCI+VmVyc2lvbiAwLjg8L2E+OjwvcD4KICA8dWwgY2xhc3M9InJlbC1ub3RlIj4KICAgIDxsaT5BZGQgYSA8Y29kZT5jdXJzb3JDb29yZHM8L2NvZGU+IG1ldGhvZCB0byBmaW5kIHRoZSBzY3JlZW4KICAgIGNvb3JkaW5hdGVzIG9mIHRoZSBjdXJzb3IuPC9saT4KICAgIDxsaT5BIG51bWJlciBvZiBmaXhlcyBhbmQgc3VwcG9ydCBmb3IgbW9yZSBzeW50YXggaW4gdGhlIFBIUCBwYXJzZXIuPC9saT4KICAgIDxsaT5GaXggaW5kZW50YXRpb24gcHJvYmxlbSB3aXRoIEpTT04tbW9kZSBKUyBwYXJzZXIgaW4gV2Via2l0LjwvbGk+CiAgICA8bGk+QWRkIGEgPGEgaHJlZj0iY29tcHJlc3MuaHRtbCI+bWluaWZpY2F0aW9uPC9hPiBVSS48L2xpPgogICAgPGxpPlN1cHBvcnQgYSA8Y29kZT5oZWlnaHQ6IGR5bmFtaWM8L2NvZGU+IG1vZGUsIHdoZXJlIHRoZSBlZGl0b3IncwogICAgaGVpZ2h0IHdpbGwgYWRqdXN0IHRvIHRoZSBzaXplIG9mIGl0cyBjb250ZW50LjwvbGk+CiAgICA8bGk+QmV0dGVyIHN1cHBvcnQgZm9yIElNRSBpbnB1dCBtb2RlLjwvbGk+CiAgICA8bGk+Rml4IEphdmFTY3JpcHQgcGFyc2VyIGdldHRpbmcgY29uZnVzZWQgd2hlbiBzZWVpbmcgYSBuby1hcmd1bWVudAogICAgZnVuY3Rpb24gY2FsbC48L2xpPgogICAgPGxpPkhhdmUgQ1NTIHBhcnNlciBzZWUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBzZWxlY3RvcnMgYW5kIG90aGVyCiAgICBpZGVudGlmaWVycy48L2xpPgogICAgPGxpPkZpeCBzY3JvbGxpbmcgYnVnIHdoZW4gcGFzdGluZyBpbiBhIGhvcml6b250YWxseS1zY3JvbGxlZAogICAgZWRpdG9yLjwvbGk+CiAgICA8bGk+U3VwcG9ydCA8Y29kZT50b1RleHRBcmVhPC9jb2RlPiBtZXRob2QgaW4gaW5zdGFuY2VzIGNyZWF0ZWQgd2l0aAogICAgPGNvZGU+ZnJvbVRleHRBcmVhPC9jb2RlPi48L2xpPgogICAgPGxpPldvcmsgYXJvdW5kIG5ldyBPcGVyYSBjdXJzb3IgYnVnIHRoYXQgY2F1c2VzIHRoZSBjdXJzb3IgdG8ganVtcAogICAgd2hlbiBwcmVzc2luZyBiYWNrc3BhY2UgYXQgdGhlIGVuZCBvZiBhIGxpbmUuPC9saT4KICA8L3VsPgoKICA8cCBjbGFzcz0icmVsIj4yNy0wNC0yMDEwOiA8YQogIGhyZWY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLTAuNjcuemlwIj5WZXJzaW9uCiAgMC42NzwvYT46PC9wPgogIDxwIGNsYXNzPSJyZWwtbm90ZSI+TW9yZSBjb25zaXN0ZW50IHBhZ2UtdXAvcGFnZS1kb3duIGJlaGF2aW91cgogIGFjcm9zcyBicm93c2Vycy4gRml4IHNvbWUgaXNzdWVzIHdpdGggaGlkZGVuIGVkaXRvcnMgbG9vcGluZyBmb3JldmVyCiAgd2hlbiBsaW5lLW51bWJlcnMgd2VyZSBlbmFibGVkLiBNYWtlIFBIUCBwYXJzZXIgcGFyc2UKICA8Y29kZT4iXFwiPC9jb2RlPiBjb3JyZWN0bHkuIEhhdmUgPGNvZGU+anVtcFRvTGluZTwvY29kZT4gd29yayBvbgogIGxpbmUgaGFuZGxlcywgYW5kIGFkZCA8Y29kZT5jdXJzb3JMaW5lPC9jb2RlPiBmdW5jdGlvbiB0byBmZXRjaCB0aGUKICBsaW5lIGhhbmRsZSB3aGVyZSB0aGUgY3Vyc29yIGN1cnJlbnRseSBpcy4gQWRkIG5ldwogIDxjb2RlPnNldFN0eWxlc2hlZXQ8L2NvZGU+IGZ1bmN0aW9uIHRvIHN3aXRjaCBzdHlsZS1zaGVldHMgaW4gYQogIHJ1bm5pbmcgZWRpdG9yLjwvcD4KCiAgPHAgY2xhc3M9InJlbCI+MDEtMDMtMjAxMDogPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjY2LnppcCI+VmVyc2lvbgogIDAuNjY8L2E+OjwvcD4KICA8cCBjbGFzcz0icmVsLW5vdGUiPkFkZHMgPGNvZGU+cmVtb3ZlTGluZTwvY29kZT4gbWV0aG9kIHRvIEFQSS4KICBJbnRyb2R1Y2VzIHRoZSA8YSBocmVmPSJjb250cmliL3Bsc3FsL2luZGV4Lmh0bWwiPlBMU1FMIHBhcnNlcjwvYT4uCiAgTWFya3MgWE1MIGVycm9ycyBieSBhZGRpbmcgKHJhdGhlciB0aGFuIHJlcGxhY2luZykgYSBDU1MgY2xhc3MsIHNvCiAgdGhhdCB0aGV5IGNhbiBiZSBkaXNhYmxlZCBieSBtb2RpZnlpbmcgdGhlaXIgc3R5bGUuIEZpeGVzIHNldmVyYWwKICBzZWxlY3Rpb24gYnVncywgYW5kIGEgbnVtYmVyIG9mIHNtYWxsIGdsaXRjaGVzLjwvcD4KCiAgPHAgY2xhc3M9InJlbCI+MTItMTEtMjAwOTogPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjY1LnppcCI+VmVyc2lvbgogIDAuNjU8L2E+OjwvcD4KICA8cCBjbGFzcz0icmVsLW5vdGUiPkFkZCBzdXBwb3J0IGZvciBoYXZpbmcgYm90aCBsaW5lLXdyYXBwaW5nIGFuZAogIGxpbmUtbnVtYmVycyB0dXJuZWQgb24sIG1ha2UgcGFyZW4taGlnaGxpZ2h0aW5nIHN0eWxlIGN1c3RvbWlzYWJsZQogICg8Y29kZT5tYXJrUGFyZW48L2NvZGU+IGFuZCA8Y29kZT51bm1hcmtQYXJlbjwvY29kZT4gY29uZmlnCiAgb3B0aW9ucyksIHdvcmsgYXJvdW5kIGEgc2VsZWN0aW9uIGJ1ZyB0aGF0IE9wZXJhCiAgPGVtPnJlPC9lbT5pbnRyb2R1Y2VkIGluIHZlcnNpb24gMTAuPC9wPgoKICA8cCBjbGFzcz0icmVsIj4yMy0xMC0yMDA5OiA8YQogIGhyZWY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLTAuNjQuemlwIj5WZXJzaW9uCiAgMC42NDwvYT46PC9wPgoKICA8cCBjbGFzcz0icmVsLW5vdGUiPlNvbHZlcyBzb21lIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoZQogIHBhc3RlLWhhbmRsaW5nIGNoYW5nZXMgZnJvbSB0aGUgcHJldmlvdXMgcmVsZWFzZS4gQWRkcwogIDxjb2RlPnNldFNwZWxsY2hlY2s8L2NvZGU+LCA8Y29kZT5zZXRUZXh0V3JhcHBpbmc8L2NvZGU+LAogIDxjb2RlPnNldEluZGVudFVuaXQ8L2NvZGU+LCA8Y29kZT5zZXRVbmRvRGVwdGg8L2NvZGU+LAogIDxjb2RlPnNldFRhYk1vZGU8L2NvZGU+LCBhbmQgPGNvZGU+c2V0TGluZU51bWJlcnM8L2NvZGU+IHRvCiAgY3VzdG9taXNlIGEgcnVubmluZyBlZGl0b3IuIEludHJvZHVjZXMgYW4gPGEKICBocmVmPSJjb250cmliL3NxbC9pbmRleC5odG1sIj5TUUw8L2E+IHBhcnNlci4gRml4ZXMgYSBmZXcgc21hbGwKICBwcm9ibGVtcyBpbiB0aGUgPGEgaHJlZj0iY29udHJpYi9weXRob24vaW5kZXguaHRtbCI+UHl0aG9uPC9hPgogIHBhcnNlci4gQW5kLCBhcyB1c3VhbCwgYWRkIHdvcmthcm91bmRzIGZvciB2YXJpb3VzIG5ld2x5IGRpc2NvdmVyZWQKICBicm93c2VyIGluY29tcGF0aWJpbGl0aWVzLjwvcD4KCjwvZGl2PjwvZGl2PgoKPGRpdiBzdHlsZT0iaGVpZ2h0OiAyZW0iPiZuYnNwOzwvZGl2PgoKICA8Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCIgaWQ9InBheXBhbCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjbWQiIHZhbHVlPSJfcy14Y2xpY2siLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhvc3RlZF9idXR0b25faWQiIHZhbHVlPSIzRlZIUzVGR1VZN0NDIi8+CiAgPC9mb3JtPgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/js/codemirror.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogQ29kZU1pcnJvciBtYWluIG1vZHVsZSAoaHR0cDovL2NvZGVtaXJyb3IubmV0LykKICoKICogSW1wbGVtZW50cyB0aGUgQ29kZU1pcnJvciBjb25zdHJ1Y3RvciBhbmQgcHJvdG90eXBlLCB3aGljaCB0YWtlIGNhcmUKICogb2YgaW5pdGlhbGl6aW5nIHRoZSBlZGl0b3IgZnJhbWUsIGFuZCBwcm92aWRpbmcgdGhlIG91dHNpZGUgaW50ZXJmYWNlLgogKi8KCi8vIFRoZSBDb2RlTWlycm9yQ29uZmlnIG9iamVjdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSBkZWZhdWx0Ci8vIGNvbmZpZ3VyYXRpb24uIElmIHlvdSBzcGVjaWZ5IHN1Y2ggYW4gb2JqZWN0IGJlZm9yZSBsb2FkaW5nIHRoaXMKLy8gZmlsZSwgdGhlIHZhbHVlcyB5b3UgcHV0IGludG8gaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdHMgZ2l2ZW4KLy8gYmVsb3cuIFlvdSBjYW4gYWxzbyBhc3NpZ24gdG8gaXQgYWZ0ZXIgbG9hZGluZy4KdmFyIENvZGVNaXJyb3JDb25maWcgPSB3aW5kb3cuQ29kZU1pcnJvckNvbmZpZyB8fCB7fTsKCnZhciBDb2RlTWlycm9yID0gKGZ1bmN0aW9uKCl7CiAgZnVuY3Rpb24gc2V0RGVmYXVsdHMob2JqZWN0LCBkZWZhdWx0cykgewogICAgZm9yICh2YXIgb3B0aW9uIGluIGRlZmF1bHRzKSB7CiAgICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5KG9wdGlvbikpCiAgICAgICAgb2JqZWN0W29wdGlvbl0gPSBkZWZhdWx0c1tvcHRpb25dOwogICAgfQogIH0KICBmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBhY3Rpb24pIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspCiAgICAgIGFjdGlvbihhcnJheVtpXSk7CiAgfQoKICAvLyBUaGVzZSBkZWZhdWx0IG9wdGlvbnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGFzc2luZyBhIHNldCBvZgogIC8vIG9wdGlvbnMgdG8gYSBzcGVjaWZpYyBDb2RlTWlycm9yIGNvbnN0cnVjdG9yLiBTZWUgbWFudWFsLmh0bWwgZm9yCiAgLy8gdGhlaXIgbWVhbmluZy4KICBzZXREZWZhdWx0cyhDb2RlTWlycm9yQ29uZmlnLCB7CiAgICBzdHlsZXNoZWV0OiBbXSwKICAgIHBhdGg6ICIiLAogICAgcGFyc2VyZmlsZTogW10sCiAgICBiYXNlZmlsZXM6IFsidXRpbC5qcyIsICJzdHJpbmdzdHJlYW0uanMiLCAic2VsZWN0LmpzIiwgInVuZG8uanMiLCAiZWRpdG9yLmpzIiwgInRva2VuaXplLmpzIl0sCiAgICBpZnJhbWVDbGFzczogbnVsbCwKICAgIHBhc3NEZWxheTogMjAwLAogICAgcGFzc1RpbWU6IDUwLAogICAgbGluZU51bWJlckRlbGF5OiAyMDAsCiAgICBsaW5lTnVtYmVyVGltZTogNTAsCiAgICBjb250aW51b3VzU2Nhbm5pbmc6IGZhbHNlLAogICAgc2F2ZUZ1bmN0aW9uOiBudWxsLAogICAgb25DaGFuZ2U6IG51bGwsCiAgICB1bmRvRGVwdGg6IDUwLAogICAgdW5kb0RlbGF5OiA4MDAsCiAgICBkaXNhYmxlU3BlbGxjaGVjazogdHJ1ZSwKICAgIHRleHRXcmFwcGluZzogdHJ1ZSwKICAgIHJlYWRPbmx5OiBmYWxzZSwKICAgIHdpZHRoOiAiIiwKICAgIGhlaWdodDogIjMwMHB4IiwKICAgIG1pbkhlaWdodDogMTAwLAogICAgYXV0b01hdGNoUGFyZW5zOiBmYWxzZSwKICAgIHBhcnNlckNvbmZpZzogbnVsbCwKICAgIHRhYk1vZGU6ICJpbmRlbnQiLCAvLyBvciAic3BhY2VzIiwgImRlZmF1bHQiLCAic2hpZnQiCiAgICBlbnRlck1vZGU6ICJpbmRlbnQiLCAvLyBvciAia2VlcCIsICJmbGF0IgogICAgZWxlY3RyaWNDaGFyczogdHJ1ZSwKICAgIHJlaW5kZW50T25Mb2FkOiBmYWxzZSwKICAgIGFjdGl2ZVRva2VuczogbnVsbCwKICAgIGN1cnNvckFjdGl2aXR5OiBudWxsLAogICAgbGluZU51bWJlcnM6IGZhbHNlLAogICAgZmlyc3RMaW5lTnVtYmVyOiAxLAogICAgaW5kZW50VW5pdDogMiwKICAgIGRvbWFpbjogbnVsbAogIH0pOwoKICBmdW5jdGlvbiBhZGRMaW5lTnVtYmVyRGl2KGNvbnRhaW5lciwgZmlyc3ROdW0pIHsKICAgIHZhciBudW1zID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksCiAgICAgICAgc2Nyb2xsZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsKICAgIG51bXMuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgbnVtcy5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICBpZiAobnVtcy5zdHlsZS5zZXRFeHByZXNzaW9uKSB7CiAgICAgIHRyeSB7bnVtcy5zdHlsZS5zZXRFeHByZXNzaW9uKCJoZWlnaHQiLCAidGhpcy5wcmV2aW91c1NpYmxpbmcub2Zmc2V0SGVpZ2h0ICsgJ3B4JyIpO30KICAgICAgY2F0Y2goZSkge30gLy8gU2VlbXMgdG8gdGhyb3cgJ05vdCBJbXBsZW1lbnRlZCcgb24gc29tZSBJRTggdmVyc2lvbnMKICAgIH0KICAgIG51bXMuc3R5bGUudG9wID0gIjBweCI7CiAgICBudW1zLnN0eWxlLmxlZnQgPSAiMHB4IjsKICAgIG51bXMuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChudW1zKTsKICAgIHNjcm9sbGVyLmNsYXNzTmFtZSA9ICJDb2RlTWlycm9yLWxpbmUtbnVtYmVycyI7CiAgICBudW1zLmFwcGVuZENoaWxkKHNjcm9sbGVyKTsKICAgIHNjcm9sbGVyLmlubmVySFRNTCA9ICI8ZGl2PiIgKyBmaXJzdE51bSArICI8L2Rpdj4iOwogICAgcmV0dXJuIG51bXM7CiAgfQoKICBmdW5jdGlvbiBmcmFtZUhUTUwob3B0aW9ucykgewogICAgaWYgKHR5cGVvZiBvcHRpb25zLnBhcnNlcmZpbGUgPT0gInN0cmluZyIpCiAgICAgIG9wdGlvbnMucGFyc2VyZmlsZSA9IFtvcHRpb25zLnBhcnNlcmZpbGVdOwogICAgaWYgKHR5cGVvZiBvcHRpb25zLmJhc2VmaWxlcyA9PSAic3RyaW5nIikKICAgICAgb3B0aW9ucy5iYXNlZmlsZXMgPSBbb3B0aW9ucy5iYXNlZmlsZXNdOwogICAgaWYgKHR5cGVvZiBvcHRpb25zLnN0eWxlc2hlZXQgPT0gInN0cmluZyIpCiAgICAgIG9wdGlvbnMuc3R5bGVzaGVldCA9IFtvcHRpb25zLnN0eWxlc2hlZXRdOwoKICAgIHZhciBodG1sID0gWyI8IURPQ1RZUEUgSFRNTCBQVUJMSUMgXCItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOXCIgXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGRcIj48aHRtbD48aGVhZD4iXTsKICAgIC8vIEhhY2sgdG8gd29yayBhcm91bmQgYSBidW5jaCBvZiBJRTgtc3BlY2lmaWMgcHJvYmxlbXMuCiAgICBodG1sLnB1c2goIjxtZXRhIGh0dHAtZXF1aXY9XCJYLVVBLUNvbXBhdGlibGVcIiBjb250ZW50PVwiSUU9RW11bGF0ZUlFN1wiLz4iKTsKICAgIGZvckVhY2gob3B0aW9ucy5zdHlsZXNoZWV0LCBmdW5jdGlvbihmaWxlKSB7CiAgICAgIGh0bWwucHVzaCgiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIiICsgZmlsZSArICJcIi8+Iik7CiAgICB9KTsKICAgIGZvckVhY2gob3B0aW9ucy5iYXNlZmlsZXMuY29uY2F0KG9wdGlvbnMucGFyc2VyZmlsZSksIGZ1bmN0aW9uKGZpbGUpIHsKICAgICAgaWYgKCEvXmh0dHBzPzovLnRlc3QoZmlsZSkpIGZpbGUgPSBvcHRpb25zLnBhdGggKyBmaWxlOwogICAgICBodG1sLnB1c2goIjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cIiIgKyBmaWxlICsgIlwiPjwiICsgIi9zY3JpcHQ+Iik7CiAgICB9KTsKICAgIGh0bWwucHVzaCgiPC9oZWFkPjxib2R5IHN0eWxlPVwiYm9yZGVyLXdpZHRoOiAwO1wiIGNsYXNzPVwiZWRpdGJveFwiIHNwZWxsY2hlY2s9XCIiICsKICAgICAgICAgICAgICAob3B0aW9ucy5kaXNhYmxlU3BlbGxjaGVjayA/ICJmYWxzZSIgOiAidHJ1ZSIpICsgIlwiPjwvYm9keT48L2h0bWw+Iik7CiAgICByZXR1cm4gaHRtbC5qb2luKCIiKTsKICB9CgogIHZhciBpbnRlcm5ldEV4cGxvcmVyID0gZG9jdW1lbnQuc2VsZWN0aW9uICYmIHdpbmRvdy5BY3RpdmVYT2JqZWN0ICYmIC9NU0lFLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKICBmdW5jdGlvbiBDb2RlTWlycm9yKHBsYWNlLCBvcHRpb25zKSB7CiAgICAvLyBVc2UgcGFzc2VkIG9wdGlvbnMsIGlmIGFueSwgdG8gb3ZlcnJpZGUgZGVmYXVsdHMuCiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIHNldERlZmF1bHRzKG9wdGlvbnMsIENvZGVNaXJyb3JDb25maWcpOwoKICAgIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIGRlcHJlY2F0ZWQgb3B0aW9ucy4KICAgIGlmIChvcHRpb25zLmR1bWJUYWJzKSBvcHRpb25zLnRhYk1vZGUgPSAic3BhY2VzIjsKICAgIGVsc2UgaWYgKG9wdGlvbnMubm9ybWFsVGFiKSBvcHRpb25zLnRhYk1vZGUgPSAiZGVmYXVsdCI7CgogICAgdmFyIGZyYW1lID0gdGhpcy5mcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklGUkFNRSIpOwogICAgaWYgKG9wdGlvbnMuaWZyYW1lQ2xhc3MpIGZyYW1lLmNsYXNzTmFtZSA9IG9wdGlvbnMuaWZyYW1lQ2xhc3M7CiAgICBmcmFtZS5mcmFtZUJvcmRlciA9IDA7CiAgICBmcmFtZS5zdHlsZS5ib3JkZXIgPSAiMCI7CiAgICBmcmFtZS5zdHlsZS53aWR0aCA9ICcxMDAlJzsKICAgIGZyYW1lLnN0eWxlLmhlaWdodCA9ICcxMDAlJzsKICAgIC8vIGRpc3BsYXk6IGJsb2NrIG9jY2FzaW9uYWxseSBzdXBwcmVzc2VzIHNvbWUgRmlyZWZveCBidWdzLCBzbyB3ZQogICAgLy8gYWx3YXlzIGFkZCBpdCwgcmVkdW5kYW50IGFzIGl0IHNvdW5kcy4KICAgIGZyYW1lLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwoKICAgIHZhciBkaXYgPSB0aGlzLndyYXBwaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7CiAgICBkaXYuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwogICAgZGl2LmNsYXNzTmFtZSA9ICJDb2RlTWlycm9yLXdyYXBwaW5nIjsKICAgIGRpdi5zdHlsZS53aWR0aCA9IG9wdGlvbnMud2lkdGg7CiAgICBkaXYuc3R5bGUuaGVpZ2h0ID0gKG9wdGlvbnMuaGVpZ2h0ID09ICJkeW5hbWljIikgPyBvcHRpb25zLm1pbkhlaWdodCArICJweCIgOiBvcHRpb25zLmhlaWdodDsKICAgIC8vIFRoaXMgaXMgdXNlZCBieSBFZGl0b3IucmVyb3V0ZVBhc3RlRXZlbnQKICAgIHZhciB0ZUhhY2sgPSB0aGlzLnRleHRhcmVhSGFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRFWFRBUkVBIik7CiAgICBkaXYuYXBwZW5kQ2hpbGQodGVIYWNrKTsKICAgIHRlSGFjay5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICB0ZUhhY2suc3R5bGUubGVmdCA9ICItMTAwMDBweCI7CiAgICB0ZUhhY2suc3R5bGUud2lkdGggPSAiMTBweCI7CgogICAgLy8gTGluayBiYWNrIHRvIHRoaXMgb2JqZWN0LCBzbyB0aGF0IHRoZSBlZGl0b3IgY2FuIGZldGNoIG9wdGlvbnMKICAgIC8vIGFuZCBhZGQgYSByZWZlcmVuY2UgdG8gaXRzZWxmLgogICAgZnJhbWUuQ29kZU1pcnJvciA9IHRoaXM7CiAgICBpZiAob3B0aW9ucy5kb21haW4gJiYgaW50ZXJuZXRFeHBsb3JlcikgewogICAgICB0aGlzLmh0bWwgPSBmcmFtZUhUTUwob3B0aW9ucyk7CiAgICAgIGZyYW1lLnNyYyA9ICJqYXZhc2NyaXB0OihmdW5jdGlvbigpe2RvY3VtZW50Lm9wZW4oKTsiICsKICAgICAgICAob3B0aW9ucy5kb21haW4gPyAiZG9jdW1lbnQuZG9tYWluPVwiIiArIG9wdGlvbnMuZG9tYWluICsgIlwiOyIgOiAiIikgKwogICAgICAgICJkb2N1bWVudC53cml0ZSh3aW5kb3cuZnJhbWVFbGVtZW50LkNvZGVNaXJyb3IuaHRtbCk7ZG9jdW1lbnQuY2xvc2UoKTt9KSgpIjsKICAgIH0KICAgIGVsc2UgewogICAgICBmcmFtZS5zcmMgPSAiamF2YXNjcmlwdDo7IjsKICAgIH0KCiAgICBpZiAocGxhY2UuYXBwZW5kQ2hpbGQpIHBsYWNlLmFwcGVuZENoaWxkKGRpdik7CiAgICBlbHNlIHBsYWNlKGRpdik7CiAgICBkaXYuYXBwZW5kQ2hpbGQoZnJhbWUpOwogICAgaWYgKG9wdGlvbnMubGluZU51bWJlcnMpIHRoaXMubGluZU51bWJlcnMgPSBhZGRMaW5lTnVtYmVyRGl2KGRpdiwgb3B0aW9ucy5maXJzdExpbmVOdW1iZXIpOwoKICAgIHRoaXMud2luID0gZnJhbWUuY29udGVudFdpbmRvdzsKICAgIGlmICghb3B0aW9ucy5kb21haW4gfHwgIWludGVybmV0RXhwbG9yZXIpIHsKICAgICAgdGhpcy53aW4uZG9jdW1lbnQub3BlbigpOwogICAgICB0aGlzLndpbi5kb2N1bWVudC53cml0ZShmcmFtZUhUTUwob3B0aW9ucykpOwogICAgICB0aGlzLndpbi5kb2N1bWVudC5jbG9zZSgpOwogICAgfQogIH0KCiAgQ29kZU1pcnJvci5wcm90b3R5cGUgPSB7CiAgICBpbml0OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMub3B0aW9ucy5pbml0Q2FsbGJhY2spIHRoaXMub3B0aW9ucy5pbml0Q2FsbGJhY2sodGhpcyk7CiAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZU51bWJlcnMpIHRoaXMuYWN0aXZhdGVMaW5lTnVtYmVycygpOwogICAgICBpZiAodGhpcy5vcHRpb25zLnJlaW5kZW50T25Mb2FkKSB0aGlzLnJlaW5kZW50KCk7CiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGVpZ2h0ID09ICJkeW5hbWljIikgdGhpcy5zZXREeW5hbWljSGVpZ2h0KCk7CiAgICB9LAoKICAgIGdldENvZGU6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLmVkaXRvci5nZXRDb2RlKCk7fSwKICAgIHNldENvZGU6IGZ1bmN0aW9uKGNvZGUpIHt0aGlzLmVkaXRvci5pbXBvcnRDb2RlKGNvZGUpO30sCiAgICBzZWxlY3Rpb246IGZ1bmN0aW9uKCkge3RoaXMuZm9jdXNJZklFKCk7IHJldHVybiB0aGlzLmVkaXRvci5zZWxlY3RlZFRleHQoKTt9LAogICAgcmVpbmRlbnQ6IGZ1bmN0aW9uKCkge3RoaXMuZWRpdG9yLnJlaW5kZW50KCk7fSwKICAgIHJlaW5kZW50U2VsZWN0aW9uOiBmdW5jdGlvbigpIHt0aGlzLmZvY3VzSWZJRSgpOyB0aGlzLmVkaXRvci5yZWluZGVudFNlbGVjdGlvbihudWxsKTt9LAoKICAgIGZvY3VzSWZJRTogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGluIElFLCBhIGxvdCBvZiBzZWxlY3Rpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IG9ubHkgd29ya3Mgd2hlbiB0aGUgZnJhbWUgaXMgZm9jdXNlZAogICAgICBpZiAodGhpcy53aW4uc2VsZWN0LmllX3NlbGVjdGlvbikgdGhpcy5mb2N1cygpOwogICAgfSwKICAgIGZvY3VzOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy53aW4uZm9jdXMoKTsKICAgICAgaWYgKHRoaXMuZWRpdG9yLnNlbGVjdGlvblNuYXBzaG90KSAvLyBJRSBoYWNrCiAgICAgICAgdGhpcy53aW4uc2VsZWN0LnNldEJvb2ttYXJrKHRoaXMud2luLmRvY3VtZW50LmJvZHksIHRoaXMuZWRpdG9yLnNlbGVjdGlvblNuYXBzaG90KTsKICAgIH0sCiAgICByZXBsYWNlU2VsZWN0aW9uOiBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHRoaXMuZm9jdXMoKTsKICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVNlbGVjdGlvbih0ZXh0KTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAogICAgcmVwbGFjZUNoYXJzOiBmdW5jdGlvbih0ZXh0LCBzdGFydCwgZW5kKSB7CiAgICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VDaGFycyh0ZXh0LCBzdGFydCwgZW5kKTsKICAgIH0sCiAgICBnZXRTZWFyY2hDdXJzb3I6IGZ1bmN0aW9uKHN0cmluZywgZnJvbUN1cnNvciwgY2FzZUZvbGQpIHsKICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldFNlYXJjaEN1cnNvcihzdHJpbmcsIGZyb21DdXJzb3IsIGNhc2VGb2xkKTsKICAgIH0sCgogICAgdW5kbzogZnVuY3Rpb24oKSB7dGhpcy5lZGl0b3IuaGlzdG9yeS51bmRvKCk7fSwKICAgIHJlZG86IGZ1bmN0aW9uKCkge3RoaXMuZWRpdG9yLmhpc3RvcnkucmVkbygpO30sCiAgICBoaXN0b3J5U2l6ZTogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmhpc3RvcnkuaGlzdG9yeVNpemUoKTt9LAogICAgY2xlYXJIaXN0b3J5OiBmdW5jdGlvbigpIHt0aGlzLmVkaXRvci5oaXN0b3J5LmNsZWFyKCk7fSwKCiAgICBncmFiS2V5czogZnVuY3Rpb24oY2FsbGJhY2ssIGZpbHRlcikge3RoaXMuZWRpdG9yLmdyYWJLZXlzKGNhbGxiYWNrLCBmaWx0ZXIpO30sCiAgICB1bmdyYWJLZXlzOiBmdW5jdGlvbigpIHt0aGlzLmVkaXRvci51bmdyYWJLZXlzKCk7fSwKCiAgICBzZXRQYXJzZXI6IGZ1bmN0aW9uKG5hbWUsIHBhcnNlckNvbmZpZykge3RoaXMuZWRpdG9yLnNldFBhcnNlcihuYW1lLCBwYXJzZXJDb25maWcpO30sCiAgICBzZXRTcGVsbGNoZWNrOiBmdW5jdGlvbihvbikge3RoaXMud2luLmRvY3VtZW50LmJvZHkuc3BlbGxjaGVjayA9IG9uO30sCiAgICBzZXRTdHlsZXNoZWV0OiBmdW5jdGlvbihuYW1lcykgewogICAgICBpZiAodHlwZW9mIG5hbWVzID09PSAic3RyaW5nIikgbmFtZXMgPSBbbmFtZXNdOwogICAgICB2YXIgYWN0aXZlU3R5bGVzaGVldHMgPSB7fTsKICAgICAgdmFyIG1hdGNoZWROYW1lcyA9IHt9OwogICAgICB2YXIgbGlua3MgPSB0aGlzLndpbi5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOwogICAgICAvLyBDcmVhdGUgaGFzaGVzIG9mIGFjdGl2ZSBzdHlsZXNoZWV0cyBhbmQgbWF0Y2hlZCBuYW1lcy4KICAgICAgLy8gVGhpcyBpcyBPKG5eMikgYnV0IG4gaXMgZXhwZWN0ZWQgdG8gYmUgdmVyeSBzbWFsbC4KICAgICAgZm9yICh2YXIgeCA9IDAsIGxpbms7IGxpbmsgPSBsaW5rc1t4XTsgeCsrKSB7CiAgICAgICAgaWYgKGxpbmsucmVsLmluZGV4T2YoInN0eWxlc2hlZXQiKSAhPT0gLTEpIHsKICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgbmFtZXMubGVuZ3RoOyB5KyspIHsKICAgICAgICAgICAgdmFyIG5hbWUgPSBuYW1lc1t5XTsKICAgICAgICAgICAgaWYgKGxpbmsuaHJlZi5zdWJzdHJpbmcobGluay5ocmVmLmxlbmd0aCAtIG5hbWUubGVuZ3RoKSA9PT0gbmFtZSkgewogICAgICAgICAgICAgIGFjdGl2ZVN0eWxlc2hlZXRzW2xpbmsuaHJlZl0gPSB0cnVlOwogICAgICAgICAgICAgIG1hdGNoZWROYW1lc1tuYW1lXSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gQWN0aXZhdGUgdGhlIHNlbGVjdGVkIHN0eWxlc2hlZXRzIGFuZCBkaXNhYmxlIHRoZSByZXN0LgogICAgICBmb3IgKHZhciB4ID0gMCwgbGluazsgbGluayA9IGxpbmtzW3hdOyB4KyspIHsKICAgICAgICBpZiAobGluay5yZWwuaW5kZXhPZigic3R5bGVzaGVldCIpICE9PSAtMSkgewogICAgICAgICAgbGluay5kaXNhYmxlZCA9ICEobGluay5ocmVmIGluIGFjdGl2ZVN0eWxlc2hlZXRzKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gQ3JlYXRlIGFueSBuZXcgc3R5bGVzaGVldHMuCiAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgbmFtZXMubGVuZ3RoOyB5KyspIHsKICAgICAgICB2YXIgbmFtZSA9IG5hbWVzW3ldOwogICAgICAgIGlmICghKG5hbWUgaW4gbWF0Y2hlZE5hbWVzKSkgewogICAgICAgICAgdmFyIGxpbmsgPSB0aGlzLndpbi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CiAgICAgICAgICBsaW5rLnJlbCA9ICJzdHlsZXNoZWV0IjsKICAgICAgICAgIGxpbmsudHlwZSA9ICJ0ZXh0L2NzcyI7CiAgICAgICAgICBsaW5rLmhyZWYgPSBuYW1lOwogICAgICAgICAgdGhpcy53aW4uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChsaW5rKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBzZXRUZXh0V3JhcHBpbmc6IGZ1bmN0aW9uKG9uKSB7CiAgICAgIGlmIChvbiA9PSB0aGlzLm9wdGlvbnMudGV4dFdyYXBwaW5nKSByZXR1cm47CiAgICAgIHRoaXMud2luLmRvY3VtZW50LmJvZHkuc3R5bGUud2hpdGVTcGFjZSA9IG9uID8gIiIgOiAibm93cmFwIjsKICAgICAgdGhpcy5vcHRpb25zLnRleHRXcmFwcGluZyA9IG9uOwogICAgICBpZiAodGhpcy5saW5lTnVtYmVycykgewogICAgICAgIHRoaXMuc2V0TGluZU51bWJlcnMoZmFsc2UpOwogICAgICAgIHRoaXMuc2V0TGluZU51bWJlcnModHJ1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBzZXRJbmRlbnRVbml0OiBmdW5jdGlvbih1bml0KSB7dGhpcy53aW4uaW5kZW50VW5pdCA9IHVuaXQ7fSwKICAgIHNldFVuZG9EZXB0aDogZnVuY3Rpb24oZGVwdGgpIHt0aGlzLmVkaXRvci5oaXN0b3J5Lm1heERlcHRoID0gZGVwdGg7fSwKICAgIHNldFRhYk1vZGU6IGZ1bmN0aW9uKG1vZGUpIHt0aGlzLm9wdGlvbnMudGFiTW9kZSA9IG1vZGU7fSwKICAgIHNldEVudGVyTW9kZTogZnVuY3Rpb24obW9kZSkge3RoaXMub3B0aW9ucy5lbnRlck1vZGUgPSBtb2RlO30sCiAgICBzZXRMaW5lTnVtYmVyczogZnVuY3Rpb24ob24pIHsKICAgICAgaWYgKG9uICYmICF0aGlzLmxpbmVOdW1iZXJzKSB7CiAgICAgICAgdGhpcy5saW5lTnVtYmVycyA9IGFkZExpbmVOdW1iZXJEaXYodGhpcy53cmFwcGluZyk7CiAgICAgICAgdGhpcy5hY3RpdmF0ZUxpbmVOdW1iZXJzKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoIW9uICYmIHRoaXMubGluZU51bWJlcnMpIHsKICAgICAgICB0aGlzLndyYXBwaW5nLnJlbW92ZUNoaWxkKHRoaXMubGluZU51bWJlcnMpOwogICAgICAgIHRoaXMud3JhcHBpbmcuc3R5bGUubWFyZ2luTGVmdCA9ICIiOwogICAgICAgIHRoaXMubGluZU51bWJlcnMgPSBudWxsOwogICAgICB9CiAgICB9LAoKICAgIGN1cnNvclBvc2l0aW9uOiBmdW5jdGlvbihzdGFydCkge3RoaXMuZm9jdXNJZklFKCk7IHJldHVybiB0aGlzLmVkaXRvci5jdXJzb3JQb3NpdGlvbihzdGFydCk7fSwKICAgIGZpcnN0TGluZTogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmZpcnN0TGluZSgpO30sCiAgICBsYXN0TGluZTogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmxhc3RMaW5lKCk7fSwKICAgIG5leHRMaW5lOiBmdW5jdGlvbihsaW5lKSB7cmV0dXJuIHRoaXMuZWRpdG9yLm5leHRMaW5lKGxpbmUpO30sCiAgICBwcmV2TGluZTogZnVuY3Rpb24obGluZSkge3JldHVybiB0aGlzLmVkaXRvci5wcmV2TGluZShsaW5lKTt9LAogICAgbGluZUNvbnRlbnQ6IGZ1bmN0aW9uKGxpbmUpIHtyZXR1cm4gdGhpcy5lZGl0b3IubGluZUNvbnRlbnQobGluZSk7fSwKICAgIHNldExpbmVDb250ZW50OiBmdW5jdGlvbihsaW5lLCBjb250ZW50KSB7dGhpcy5lZGl0b3Iuc2V0TGluZUNvbnRlbnQobGluZSwgY29udGVudCk7fSwKICAgIHJlbW92ZUxpbmU6IGZ1bmN0aW9uKGxpbmUpe3RoaXMuZWRpdG9yLnJlbW92ZUxpbmUobGluZSk7fSwKICAgIGluc2VydEludG9MaW5lOiBmdW5jdGlvbihsaW5lLCBwb3NpdGlvbiwgY29udGVudCkge3RoaXMuZWRpdG9yLmluc2VydEludG9MaW5lKGxpbmUsIHBvc2l0aW9uLCBjb250ZW50KTt9LAogICAgc2VsZWN0TGluZXM6IGZ1bmN0aW9uKHN0YXJ0TGluZSwgc3RhcnRPZmZzZXQsIGVuZExpbmUsIGVuZE9mZnNldCkgewogICAgICB0aGlzLndpbi5mb2N1cygpOwogICAgICB0aGlzLmVkaXRvci5zZWxlY3RMaW5lcyhzdGFydExpbmUsIHN0YXJ0T2Zmc2V0LCBlbmRMaW5lLCBlbmRPZmZzZXQpOwogICAgfSwKICAgIG50aExpbmU6IGZ1bmN0aW9uKG4pIHsKICAgICAgdmFyIGxpbmUgPSB0aGlzLmZpcnN0TGluZSgpOwogICAgICBmb3IgKDsgbiA+IDEgJiYgbGluZSAhPT0gZmFsc2U7IG4tLSkKICAgICAgICBsaW5lID0gdGhpcy5uZXh0TGluZShsaW5lKTsKICAgICAgcmV0dXJuIGxpbmU7CiAgICB9LAogICAgbGluZU51bWJlcjogZnVuY3Rpb24obGluZSkgewogICAgICB2YXIgbnVtID0gMDsKICAgICAgd2hpbGUgKGxpbmUgIT09IGZhbHNlKSB7CiAgICAgICAgbnVtKys7CiAgICAgICAgbGluZSA9IHRoaXMucHJldkxpbmUobGluZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIG51bTsKICAgIH0sCiAgICBqdW1wVG9MaW5lOiBmdW5jdGlvbihsaW5lKSB7CiAgICAgIGlmICh0eXBlb2YgbGluZSA9PSAibnVtYmVyIikgbGluZSA9IHRoaXMubnRoTGluZShsaW5lKTsKICAgICAgdGhpcy5zZWxlY3RMaW5lcyhsaW5lLCAwKTsKICAgICAgdGhpcy53aW4uZm9jdXMoKTsKICAgIH0sCiAgICBjdXJyZW50TGluZTogZnVuY3Rpb24oKSB7IC8vIERlcHJlY2F0ZWQsIGJ1dCBzdGlsbCB0aGVyZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICByZXR1cm4gdGhpcy5saW5lTnVtYmVyKHRoaXMuY3Vyc29yTGluZSgpKTsKICAgIH0sCiAgICBjdXJzb3JMaW5lOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuY3Vyc29yUG9zaXRpb24oKS5saW5lOwogICAgfSwKICAgIGN1cnNvckNvb3JkczogZnVuY3Rpb24oc3RhcnQpIHtyZXR1cm4gdGhpcy5lZGl0b3IuY3Vyc29yQ29vcmRzKHN0YXJ0KTt9LAoKICAgIGFjdGl2YXRlTGluZU51bWJlcnM6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgZnJhbWUgPSB0aGlzLmZyYW1lLCB3aW4gPSBmcmFtZS5jb250ZW50V2luZG93LCBkb2MgPSB3aW4uZG9jdW1lbnQsIGJvZHkgPSBkb2MuYm9keSwKICAgICAgICAgIG51bXMgPSB0aGlzLmxpbmVOdW1iZXJzLCBzY3JvbGxlciA9IG51bXMuZmlyc3RDaGlsZCwgc2VsZiA9IHRoaXM7CiAgICAgIHZhciBiYXJXaWR0aCA9IG51bGw7CgogICAgICBmdW5jdGlvbiBzaXplQmFyKCkgewogICAgICAgIGlmIChmcmFtZS5vZmZzZXRXaWR0aCA9PSAwKSByZXR1cm47CiAgICAgICAgZm9yICh2YXIgcm9vdCA9IGZyYW1lOyByb290LnBhcmVudE5vZGU7IHJvb3QgPSByb290LnBhcmVudE5vZGUpe30KICAgICAgICBpZiAoIW51bXMucGFyZW50Tm9kZSB8fCByb290ICE9IGRvY3VtZW50IHx8ICF3aW4uRWRpdG9yKSB7CiAgICAgICAgICAvLyBDbGVhciBldmVudCBoYW5kbGVycyAodGhlaXIgbm9kZXMgbWlnaHQgYWxyZWFkeSBiZSBjb2xsZWN0ZWQsIHNvIHRyeS9jYXRjaCkKICAgICAgICAgIHRyeXtjbGVhcigpO31jYXRjaChlKXt9CiAgICAgICAgICBjbGVhckludGVydmFsKHNpemVJbnRlcnZhbCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAobnVtcy5vZmZzZXRXaWR0aCAhPSBiYXJXaWR0aCkgewogICAgICAgICAgYmFyV2lkdGggPSBudW1zLm9mZnNldFdpZHRoOwogICAgICAgICAgZnJhbWUucGFyZW50Tm9kZS5zdHlsZS5wYWRkaW5nTGVmdCA9IGJhcldpZHRoICsgInB4IjsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gZG9TY3JvbGwoKSB7CiAgICAgICAgbnVtcy5zY3JvbGxUb3AgPSBib2R5LnNjcm9sbFRvcCB8fCBkb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCAwOwogICAgICB9CiAgICAgIC8vIENsZWFudXAgZnVuY3Rpb24sIHJlZ2lzdGVyZWQgYnkgbm9uV3JhcHBpbmcgYW5kIHdyYXBwaW5nLgogICAgICB2YXIgY2xlYXIgPSBmdW5jdGlvbigpe307CiAgICAgIHNpemVCYXIoKTsKICAgICAgdmFyIHNpemVJbnRlcnZhbCA9IHNldEludGVydmFsKHNpemVCYXIsIDUwMCk7CgogICAgICBmdW5jdGlvbiBlbnN1cmVFbm91Z2hMaW5lTnVtYmVycyhmaWxsKSB7CiAgICAgICAgdmFyIGxpbmVIZWlnaHQgPSBzY3JvbGxlci5maXJzdENoaWxkLm9mZnNldEhlaWdodDsKICAgICAgICBpZiAobGluZUhlaWdodCA9PSAwKSByZXR1cm47CiAgICAgICAgdmFyIHRhcmdldEhlaWdodCA9IDUwICsgTWF0aC5tYXgoYm9keS5vZmZzZXRIZWlnaHQsIE1hdGgubWF4KGZyYW1lLm9mZnNldEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQgfHwgMCkpLAogICAgICAgICAgICBsYXN0TnVtYmVyID0gTWF0aC5jZWlsKHRhcmdldEhlaWdodCAvIGxpbmVIZWlnaHQpOwogICAgICAgIGZvciAodmFyIGkgPSBzY3JvbGxlci5jaGlsZE5vZGVzLmxlbmd0aDsgaSA8PSBsYXN0TnVtYmVyOyBpKyspIHsKICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsKICAgICAgICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmaWxsID8gU3RyaW5nKGkgKyBzZWxmLm9wdGlvbnMuZmlyc3RMaW5lTnVtYmVyKSA6ICJcdTAwYTAiKSk7CiAgICAgICAgICBzY3JvbGxlci5hcHBlbmRDaGlsZChkaXYpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgZnVuY3Rpb24gbm9uV3JhcHBpbmcoKSB7CiAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkgewogICAgICAgICAgZW5zdXJlRW5vdWdoTGluZU51bWJlcnModHJ1ZSk7CiAgICAgICAgICBkb1Njcm9sbCgpOwogICAgICAgIH0KICAgICAgICBzZWxmLnVwZGF0ZU51bWJlcnMgPSB1cGRhdGU7CiAgICAgICAgdmFyIG9uU2Nyb2xsID0gd2luLmFkZEV2ZW50SGFuZGxlcih3aW4sICJzY3JvbGwiLCBkb1Njcm9sbCwgdHJ1ZSksCiAgICAgICAgICAgIG9uUmVzaXplID0gd2luLmFkZEV2ZW50SGFuZGxlcih3aW4sICJyZXNpemUiLCB1cGRhdGUsIHRydWUpOwogICAgICAgIGNsZWFyID0gZnVuY3Rpb24oKXsKICAgICAgICAgIG9uU2Nyb2xsKCk7IG9uUmVzaXplKCk7CiAgICAgICAgICBpZiAoc2VsZi51cGRhdGVOdW1iZXJzID09IHVwZGF0ZSkgc2VsZi51cGRhdGVOdW1iZXJzID0gbnVsbDsKICAgICAgICB9OwogICAgICAgIHVwZGF0ZSgpOwogICAgICB9CgogICAgICBmdW5jdGlvbiB3cmFwcGluZygpIHsKICAgICAgICB2YXIgbm9kZSwgbGluZU51bSwgbmV4dCwgcG9zLCBjaGFuZ2VzID0gW10sIHN0eWxlTnVtcyA9IHNlbGYub3B0aW9ucy5zdHlsZU51bWJlcnM7CgogICAgICAgIGZ1bmN0aW9uIHNldE51bShuLCBub2RlKSB7CiAgICAgICAgICAvLyBEb2VzIG5vdCB0eXBpY2FsbHkgaGFwcGVuIChidXQgY2FuLCBpZiB5b3UgbWVzcyB3aXRoIHRoZQogICAgICAgICAgLy8gZG9jdW1lbnQgZHVyaW5nIHRoZSBudW1iZXJpbmcpCiAgICAgICAgICBpZiAoIWxpbmVOdW0pIGxpbmVOdW0gPSBzY3JvbGxlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSk7CiAgICAgICAgICBpZiAoc3R5bGVOdW1zKSBzdHlsZU51bXMobGluZU51bSwgbm9kZSwgbik7CiAgICAgICAgICAvLyBDaGFuZ2VzIGFyZSBhY2N1bXVsYXRlZCwgc28gdGhhdCB0aGUgZG9jdW1lbnQgbGF5b3V0CiAgICAgICAgICAvLyBkb2Vzbid0IGhhdmUgdG8gYmUgcmVjb21wdXRlZCBkdXJpbmcgdGhlIHBhc3MKICAgICAgICAgIGNoYW5nZXMucHVzaChsaW5lTnVtKTsgY2hhbmdlcy5wdXNoKG4pOwogICAgICAgICAgcG9zID0gbGluZU51bS5vZmZzZXRIZWlnaHQgKyBsaW5lTnVtLm9mZnNldFRvcDsKICAgICAgICAgIGxpbmVOdW0gPSBsaW5lTnVtLm5leHRTaWJsaW5nOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBjb21taXRDaGFuZ2VzKCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSArPSAyKQogICAgICAgICAgICBjaGFuZ2VzW2ldLmlubmVySFRNTCA9IGNoYW5nZXNbaSArIDFdOwogICAgICAgICAgY2hhbmdlcyA9IFtdOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiB3b3JrKCkgewogICAgICAgICAgaWYgKCFzY3JvbGxlci5wYXJlbnROb2RlIHx8IHNjcm9sbGVyLnBhcmVudE5vZGUgIT0gc2VsZi5saW5lTnVtYmVycykgcmV0dXJuOwoKICAgICAgICAgIHZhciBlbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBzZWxmLm9wdGlvbnMubGluZU51bWJlclRpbWU7CiAgICAgICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICAgICBzZXROdW0obmV4dCsrLCBub2RlLnByZXZpb3VzU2libGluZyk7CiAgICAgICAgICAgIGZvciAoOyBub2RlICYmICF3aW4uaXNCUihub2RlKTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpIHsKICAgICAgICAgICAgICB2YXIgYm90dCA9IG5vZGUub2Zmc2V0VG9wICsgbm9kZS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgICAgICAgd2hpbGUgKHNjcm9sbGVyLm9mZnNldEhlaWdodCAmJiBib3R0IC0gMyA+IHBvcykgc2V0TnVtKCImbmJzcDsiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobm9kZSkgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgICAgIGlmIChuZXcgRGF0ZSgpLmdldFRpbWUoKSA+IGVuZFRpbWUpIHsKICAgICAgICAgICAgICBjb21taXRDaGFuZ2VzKCk7CiAgICAgICAgICAgICAgcGVuZGluZyA9IHNldFRpbWVvdXQod29yaywgc2VsZi5vcHRpb25zLmxpbmVOdW1iZXJEZWxheSk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICB3aGlsZSAobGluZU51bSkgc2V0TnVtKG5leHQrKyk7CiAgICAgICAgICBjb21taXRDaGFuZ2VzKCk7CiAgICAgICAgICBkb1Njcm9sbCgpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBzdGFydChmaXJzdFRpbWUpIHsKICAgICAgICAgIGRvU2Nyb2xsKCk7CiAgICAgICAgICBlbnN1cmVFbm91Z2hMaW5lTnVtYmVycyhmaXJzdFRpbWUpOwogICAgICAgICAgbm9kZSA9IGJvZHkuZmlyc3RDaGlsZDsKICAgICAgICAgIGxpbmVOdW0gPSBzY3JvbGxlci5maXJzdENoaWxkOwogICAgICAgICAgcG9zID0gMDsKICAgICAgICAgIG5leHQgPSBzZWxmLm9wdGlvbnMuZmlyc3RMaW5lTnVtYmVyOwogICAgICAgICAgd29yaygpOwogICAgICAgIH0KCiAgICAgICAgc3RhcnQodHJ1ZSk7CiAgICAgICAgdmFyIHBlbmRpbmcgPSBudWxsOwogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpIHsKICAgICAgICAgIGlmIChwZW5kaW5nKSBjbGVhclRpbWVvdXQocGVuZGluZyk7CiAgICAgICAgICBpZiAoc2VsZi5lZGl0b3IuYWxsQ2xlYW4oKSkgc3RhcnQoKTsKICAgICAgICAgIGVsc2UgcGVuZGluZyA9IHNldFRpbWVvdXQodXBkYXRlLCAyMDApOwogICAgICAgIH0KICAgICAgICBzZWxmLnVwZGF0ZU51bWJlcnMgPSB1cGRhdGU7CiAgICAgICAgdmFyIG9uU2Nyb2xsID0gd2luLmFkZEV2ZW50SGFuZGxlcih3aW4sICJzY3JvbGwiLCBkb1Njcm9sbCwgdHJ1ZSksCiAgICAgICAgICAgIG9uUmVzaXplID0gd2luLmFkZEV2ZW50SGFuZGxlcih3aW4sICJyZXNpemUiLCB1cGRhdGUsIHRydWUpOwogICAgICAgIGNsZWFyID0gZnVuY3Rpb24oKXsKICAgICAgICAgIGlmIChwZW5kaW5nKSBjbGVhclRpbWVvdXQocGVuZGluZyk7CiAgICAgICAgICBpZiAoc2VsZi51cGRhdGVOdW1iZXJzID09IHVwZGF0ZSkgc2VsZi51cGRhdGVOdW1iZXJzID0gbnVsbDsKICAgICAgICAgIG9uU2Nyb2xsKCk7CiAgICAgICAgICBvblJlc2l6ZSgpOwogICAgICAgIH07CiAgICAgIH0KICAgICAgKHRoaXMub3B0aW9ucy50ZXh0V3JhcHBpbmcgfHwgdGhpcy5vcHRpb25zLnN0eWxlTnVtYmVycyA/IHdyYXBwaW5nIDogbm9uV3JhcHBpbmcpKCk7CiAgICB9LAoKICAgIHNldER5bmFtaWNIZWlnaHQ6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgc2VsZiA9IHRoaXMsIGFjdGl2aXR5ID0gc2VsZi5vcHRpb25zLmN1cnNvckFjdGl2aXR5LCB3aW4gPSBzZWxmLndpbiwgYm9keSA9IHdpbi5kb2N1bWVudC5ib2R5LAogICAgICAgICAgbGluZUhlaWdodCA9IG51bGwsIHRpbWVvdXQgPSBudWxsLCB2bWFyZ2luID0gMiAqIHNlbGYuZnJhbWUub2Zmc2V0VG9wOwogICAgICBib2R5LnN0eWxlLm92ZXJmbG93WSA9ICJoaWRkZW4iOwogICAgICB3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9ICJoaWRkZW4iOwogICAgICB0aGlzLmZyYW1lLnNjcm9sbGluZyA9ICJubyI7CgogICAgICBmdW5jdGlvbiB1cGRhdGVIZWlnaHQoKSB7CiAgICAgICAgdmFyIHRyYWlsaW5nTGluZXMgPSAwLCBub2RlID0gYm9keS5sYXN0Q2hpbGQsIGNvbXB1dGVkSGVpZ2h0OwogICAgICAgIHdoaWxlIChub2RlICYmIHdpbi5pc0JSKG5vZGUpKSB7CiAgICAgICAgICBpZiAoIW5vZGUuaGFja0JSKSB0cmFpbGluZ0xpbmVzKys7CiAgICAgICAgICBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgfQogICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICBsaW5lSGVpZ2h0ID0gbm9kZS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgICBjb21wdXRlZEhlaWdodCA9IG5vZGUub2Zmc2V0VG9wICsgKDEgKyB0cmFpbGluZ0xpbmVzKSAqIGxpbmVIZWlnaHQ7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGxpbmVIZWlnaHQpIHsKICAgICAgICAgIGNvbXB1dGVkSGVpZ2h0ID0gdHJhaWxpbmdMaW5lcyAqIGxpbmVIZWlnaHQ7CiAgICAgICAgfQogICAgICAgIGlmIChjb21wdXRlZEhlaWdodCkKICAgICAgICAgIHNlbGYud3JhcHBpbmcuc3R5bGUuaGVpZ2h0ID0gTWF0aC5tYXgodm1hcmdpbiArIGNvbXB1dGVkSGVpZ2h0LCBzZWxmLm9wdGlvbnMubWluSGVpZ2h0KSArICJweCI7CiAgICAgIH0KICAgICAgc2V0VGltZW91dCh1cGRhdGVIZWlnaHQsIDMwMCk7CiAgICAgIHNlbGYub3B0aW9ucy5jdXJzb3JBY3Rpdml0eSA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICBpZiAoYWN0aXZpdHkpIGFjdGl2aXR5KHgpOwogICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCh1cGRhdGVIZWlnaHQsIDEwMCk7CiAgICAgIH07CiAgICB9CiAgfTsKCiAgQ29kZU1pcnJvci5JbnZhbGlkTGluZUhhbmRsZSA9IHt0b1N0cmluZzogZnVuY3Rpb24oKXtyZXR1cm4gIkNvZGVNaXJyb3IuSW52YWxpZExpbmVIYW5kbGUiO319OwoKICBDb2RlTWlycm9yLnJlcGxhY2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT0gInN0cmluZyIpCiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50KTsKICAgIHJldHVybiBmdW5jdGlvbihuZXdFbGVtZW50KSB7CiAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RWxlbWVudCwgZWxlbWVudCk7CiAgICB9OwogIH07CgogIENvZGVNaXJyb3IuZnJvbVRleHRBcmVhID0gZnVuY3Rpb24oYXJlYSwgb3B0aW9ucykgewogICAgaWYgKHR5cGVvZiBhcmVhID09ICJzdHJpbmciKQogICAgICBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJlYSk7CgogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBpZiAoYXJlYS5zdHlsZS53aWR0aCAmJiBvcHRpb25zLndpZHRoID09IG51bGwpCiAgICAgIG9wdGlvbnMud2lkdGggPSBhcmVhLnN0eWxlLndpZHRoOwogICAgaWYgKGFyZWEuc3R5bGUuaGVpZ2h0ICYmIG9wdGlvbnMuaGVpZ2h0ID09IG51bGwpCiAgICAgIG9wdGlvbnMuaGVpZ2h0ID0gYXJlYS5zdHlsZS5oZWlnaHQ7CiAgICBpZiAob3B0aW9ucy5jb250ZW50ID09IG51bGwpIG9wdGlvbnMuY29udGVudCA9IGFyZWEudmFsdWU7CgogICAgaWYgKGFyZWEuZm9ybSkgewogICAgICBmdW5jdGlvbiB1cGRhdGVGaWVsZCgpIHsKICAgICAgICBhcmVhLnZhbHVlID0gbWlycm9yLmdldENvZGUoKTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIGFyZWEuZm9ybS5hZGRFdmVudExpc3RlbmVyID09ICJmdW5jdGlvbiIpCiAgICAgICAgYXJlYS5mb3JtLmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsIHVwZGF0ZUZpZWxkLCBmYWxzZSk7CiAgICAgIGVsc2UKICAgICAgICBhcmVhLmZvcm0uYXR0YWNoRXZlbnQoIm9uc3VibWl0IiwgdXBkYXRlRmllbGQpOwogICAgICB2YXIgcmVhbFN1Ym1pdCA9IGFyZWEuZm9ybS5zdWJtaXQ7CiAgICAgIGZ1bmN0aW9uIHdyYXBTdWJtaXQoKSB7CiAgICAgICAgdXBkYXRlRmllbGQoKTsKICAgICAgICAvLyBDYW4ndCB1c2UgcmVhbFN1Ym1pdC5hcHBseSBiZWNhdXNlIElFNiBpcyB0b28gc3R1cGlkCiAgICAgICAgYXJlYS5mb3JtLnN1Ym1pdCA9IHJlYWxTdWJtaXQ7CiAgICAgICAgYXJlYS5mb3JtLnN1Ym1pdCgpOwogICAgICAgIGFyZWEuZm9ybS5zdWJtaXQgPSB3cmFwU3VibWl0OwogICAgICB9CiAgICAgIGFyZWEuZm9ybS5zdWJtaXQgPSB3cmFwU3VibWl0OwogICAgfQoKICAgIGZ1bmN0aW9uIGluc2VydChmcmFtZSkgewogICAgICBpZiAoYXJlYS5uZXh0U2libGluZykKICAgICAgICBhcmVhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGZyYW1lLCBhcmVhLm5leHRTaWJsaW5nKTsKICAgICAgZWxzZQogICAgICAgIGFyZWEucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChmcmFtZSk7CiAgICB9CgogICAgYXJlYS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgdmFyIG1pcnJvciA9IG5ldyBDb2RlTWlycm9yKGluc2VydCwgb3B0aW9ucyk7CiAgICBtaXJyb3IudG9UZXh0QXJlYSA9IGZ1bmN0aW9uKCkgewogICAgICBhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobWlycm9yLndyYXBwaW5nKTsKICAgICAgYXJlYS5zdHlsZS5kaXNwbGF5ID0gIiI7CiAgICAgIGlmIChhcmVhLmZvcm0pIHsKICAgICAgICBhcmVhLmZvcm0uc3VibWl0ID0gcmVhbFN1Ym1pdDsKICAgICAgICBpZiAodHlwZW9mIGFyZWEuZm9ybS5yZW1vdmVFdmVudExpc3RlbmVyID09ICJmdW5jdGlvbiIpCiAgICAgICAgICBhcmVhLmZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3VibWl0IiwgdXBkYXRlRmllbGQsIGZhbHNlKTsKICAgICAgICBlbHNlCiAgICAgICAgICBhcmVhLmZvcm0uZGV0YWNoRXZlbnQoIm9uc3VibWl0IiwgdXBkYXRlRmllbGQpOwogICAgICB9CiAgICB9OwoKICAgIHJldHVybiBtaXJyb3I7CiAgfTsKCiAgQ29kZU1pcnJvci5pc1Byb2JhYmx5U3VwcG9ydGVkID0gZnVuY3Rpb24oKSB7CiAgICAvLyBUaGlzIGlzIHJhdGhlciBhd2Z1bCwgYnV0IGNhbiBiZSB1c2VmdWwuCiAgICB2YXIgbWF0Y2g7CiAgICBpZiAod2luZG93Lm9wZXJhKQogICAgICByZXR1cm4gTnVtYmVyKHdpbmRvdy5vcGVyYS52ZXJzaW9uKCkpID49IDkuNTI7CiAgICBlbHNlIGlmICgvQXBwbGUgQ29tcHV0ZXJzLCBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcikgJiYgKG1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVmVyc2lvblwvKFxkKyg/OlwuXGQrKT8pXC4vKSkpCiAgICAgIHJldHVybiBOdW1iZXIobWF0Y2hbMV0pID49IDM7CiAgICBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgd2luZG93LkFjdGl2ZVhPYmplY3QgJiYgKG1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRSAoXGQrKD86XC5cZCopPylcYi8pKSkKICAgICAgcmV0dXJuIE51bWJlcihtYXRjaFsxXSkgPj0gNjsKICAgIGVsc2UgaWYgKG1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvZ2Vja29cLyhcZHs4fSkvaSkpCiAgICAgIHJldHVybiBOdW1iZXIobWF0Y2hbMV0pID49IDIwMDUwOTAxOwogICAgZWxzZSBpZiAobWF0Y2ggPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFwvKFxkKykvKSkKICAgICAgcmV0dXJuIE51bWJlcihtYXRjaFsxXSkgPj0gNTI1OwogICAgZWxzZQogICAgICByZXR1cm4gbnVsbDsKICB9OwoKICByZXR1cm4gQ29kZU1pcnJvcjsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/editor.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVGhlIEVkaXRvciBvYmplY3QgbWFuYWdlcyB0aGUgY29udGVudCBvZiB0aGUgZWRpdGFibGUgZnJhbWUuIEl0CiAqIGNhdGNoZXMgZXZlbnRzLCBjb2xvdXJzIG5vZGVzLCBhbmQgaW5kZW50cyBsaW5lcy4gVGhpcyBmaWxlIGFsc28KICogaG9sZHMgc29tZSBmdW5jdGlvbnMgZm9yIHRyYW5zZm9ybWluZyBhcmJpdHJhcnkgRE9NIHN0cnVjdHVyZXMgaW50bwogKiBwbGFpbiBzZXF1ZW5jZXMgb2YgPHNwYW4+IGFuZCA8YnI+IGVsZW1lbnRzCiAqLwoKdmFyIGludGVybmV0RXhwbG9yZXIgPSBkb2N1bWVudC5zZWxlY3Rpb24gJiYgd2luZG93LkFjdGl2ZVhPYmplY3QgJiYgL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CnZhciB3ZWJraXQgPSAvQXBwbGVXZWJLaXQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CnZhciBzYWZhcmkgPSAvQXBwbGUgQ29tcHV0ZXJzLCBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7CnZhciBnZWNrbyA9IC9nZWNrb1wvKFxkezh9KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CnZhciBtYWMgPSAvTWFjLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7CgovLyBUT0RPIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgYmFja3NwYWNlLWF0LWVuZC1vZi1saW5lIGJ1Zy4gUmVtb3ZlCi8vIHRoaXMgaWYgT3BlcmEgZ2V0cyB0aGVpciBhY3QgdG9nZXRoZXIsIG1ha2UgdGhlIHZlcnNpb24gY2hlY2sgbW9yZQovLyBicm9hZCBpZiB0aGV5IGRvbid0Lgp2YXIgYnJva2VuT3BlcmEgPSB3aW5kb3cub3BlcmEgJiYgL1ZlcnNpb25cLzEwLls1Nl0vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7Ci8vIFRPRE8gcmVtb3ZlIHRoaXMgb25jZSBXZWJLaXQgNTMzIGJlY29tZXMgbGVzcyBjb21tb24uCnZhciBzbG93V2Via2l0ID0gL0FwcGxlV2ViS2l0XC81MzMvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CgovLyBNYWtlIHN1cmUgYSBzdHJpbmcgZG9lcyBub3QgY29udGFpbiB0d28gY29uc2VjdXRpdmUgJ2NvbGxhcHNlYWJsZScKLy8gd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgpmdW5jdGlvbiBtYWtlV2hpdGVTcGFjZShuKSB7CiAgdmFyIGJ1ZmZlciA9IFtdLCBuYiA9IHRydWU7CiAgZm9yICg7IG4gPiAwOyBuLS0pIHsKICAgIGJ1ZmZlci5wdXNoKChuYiB8fCBuID09IDEpID8gbmJzcCA6ICIgIik7CiAgICBuYiBePSB0cnVlOwogIH0KICByZXR1cm4gYnVmZmVyLmpvaW4oIiIpOwp9CgovLyBDcmVhdGUgYSBzZXQgb2Ygd2hpdGUtc3BhY2UgY2hhcmFjdGVycyB0aGF0IHdpbGwgbm90IGJlIGNvbGxhcHNlZAovLyBieSB0aGUgYnJvd3NlciwgYnV0IHdpbGwgbm90IGJyZWFrIHRleHQtd3JhcHBpbmcgZWl0aGVyLgpmdW5jdGlvbiBmaXhTcGFjZXMoc3RyaW5nKSB7CiAgaWYgKHN0cmluZy5jaGFyQXQoMCkgPT0gIiAiKSBzdHJpbmcgPSBuYnNwICsgc3RyaW5nLnNsaWNlKDEpOwogIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXHQvZywgZnVuY3Rpb24oKSB7cmV0dXJuIG1ha2VXaGl0ZVNwYWNlKGluZGVudFVuaXQpO30pCiAgICAucmVwbGFjZSgvWyBcdTAwYTBdezIsfS9nLCBmdW5jdGlvbihzKSB7cmV0dXJuIG1ha2VXaGl0ZVNwYWNlKHMubGVuZ3RoKTt9KTsKfQoKZnVuY3Rpb24gY2xlYW5UZXh0KHRleHQpIHsKICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cdTAwYTAvZywgIiAiKTsKfQoKLy8gQ3JlYXRlIGEgU1BBTiBub2RlIHdpdGggdGhlIGV4cGVjdGVkIHByb3BlcnRpZXMgZm9yIGRvY3VtZW50IHBhcnQKLy8gc3BhbnMuCmZ1bmN0aW9uIG1ha2VQYXJ0U3Bhbih2YWx1ZSkgewogIHZhciB0ZXh0ID0gdmFsdWU7CiAgaWYgKHZhbHVlLm5vZGVUeXBlID09IDMpIHRleHQgPSB2YWx1ZS5ub2RlVmFsdWU7CiAgZWxzZSB2YWx1ZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOwoKICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTsKICBzcGFuLmlzUGFydCA9IHRydWU7CiAgc3Bhbi5hcHBlbmRDaGlsZCh2YWx1ZSk7CiAgc3Bhbi5jdXJyZW50VGV4dCA9IHRleHQ7CiAgcmV0dXJuIHNwYW47Cn0KCi8vIE9uIHdlYmtpdCwgd2hlbiB0aGUgbGFzdCBCUiBvZiB0aGUgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZSB0ZXh0Ci8vIGJlaGluZCBpdCwgdGhlIGN1cnNvciBjYW4gbm90IGJlIHB1dCBvbiB0aGUgbGluZSBhZnRlciBpdC4gVGhpcwovLyBtYWtlcyBwcmVzc2luZyBlbnRlciBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudCBvY2Nhc2lvbmFsbHkgZG8KLy8gbm90aGluZyAob3IgYXQgbGVhc3Qgc2VlbSB0byBkbyBub3RoaW5nKS4gVG8gd29yayBhcm91bmQgaXQsIHRoaXMKLy8gZnVuY3Rpb24gbWFrZXMgc3VyZSB0aGUgZG9jdW1lbnQgZW5kcyB3aXRoIGEgc3BhbiBjb250YWluaW5nIGEKLy8gemVyby13aWR0aCBzcGFjZSBjaGFyYWN0ZXIuIFRoZSB0cmF2ZXJzZURPTSBpdGVyYXRvciBmaWx0ZXJzIHN1Y2gKLy8gY2hhcmFjdGVyIG91dCBhZ2Fpbiwgc28gdGhhdCB0aGUgcGFyc2VycyB3b24ndCBzZWUgdGhlbS4gVGhpcwovLyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBhIGZldyBzdHJhdGVnaWMgcGxhY2VzIHRvIG1ha2Ugc3VyZSB0aGUKLy8gendzcCBpcyByZXN0b3JlZCBhZnRlciB0aGUgaGlnaGxpZ2h0aW5nIHByb2Nlc3MgZWF0cyBpdC4KdmFyIHdlYmtpdExhc3RMaW5lSGFjayA9IHdlYmtpdCA/CiAgZnVuY3Rpb24oY29udGFpbmVyKSB7CiAgICB2YXIgbGFzdCA9IGNvbnRhaW5lci5sYXN0Q2hpbGQ7CiAgICBpZiAoIWxhc3QgfHwgIWxhc3QuaGFja0JSKSB7CiAgICAgIHZhciBiciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkJSIik7CiAgICAgIGJyLmhhY2tCUiA9IHRydWU7CiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChicik7CiAgICB9CiAgfSA6IGZ1bmN0aW9uKCkge307Cgp2YXIgRWRpdG9yID0gKGZ1bmN0aW9uKCl7CiAgLy8gVGhlIEhUTUwgZWxlbWVudHMgd2hvc2UgY29udGVudCBzaG91bGQgYmUgc3VmZml4ZWQgYnkgYSBuZXdsaW5lCiAgLy8gd2hlbiBjb252ZXJ0aW5nIHRoZW0gdG8gZmxhdCB0ZXh0LgogIHZhciBuZXdsaW5lRWxlbWVudHMgPSB7IlAiOiB0cnVlLCAiRElWIjogdHJ1ZSwgIkxJIjogdHJ1ZX07CgogIGZ1bmN0aW9uIGFzRWRpdG9yTGluZXMoc3RyaW5nKSB7CiAgICB2YXIgdGFiID0gbWFrZVdoaXRlU3BhY2UoaW5kZW50VW5pdCk7CiAgICByZXR1cm4gbWFwKHN0cmluZy5yZXBsYWNlKC9cdC9nLCB0YWIpLnJlcGxhY2UoL1x1MDBhMC9nLCAiICIpLnJlcGxhY2UoL1xyXG4/L2csICJcbiIpLnNwbGl0KCJcbiIpLCBmaXhTcGFjZXMpOwogIH0KCiAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0cmF2ZXJzZURPTS4gRmxhdHRlbnMgYW4gYXJiaXRyYXJ5IERPTSBub2RlCiAgLy8gaW50byBhbiBhcnJheSBvZiB0ZXh0bm9kZXMgYW5kIDxicj4gdGFncy4KICBmdW5jdGlvbiBzaW1wbGlmeURPTShyb290LCBhdEVuZCkgewogICAgdmFyIHJlc3VsdCA9IFtdOwogICAgdmFyIGxlYXZpbmcgPSB0cnVlOwoKICAgIGZ1bmN0aW9uIHNpbXBsaWZ5Tm9kZShub2RlLCB0b3ApIHsKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMykgewogICAgICAgIHZhciB0ZXh0ID0gbm9kZS5ub2RlVmFsdWUgPSBmaXhTcGFjZXMobm9kZS5ub2RlVmFsdWUucmVwbGFjZSgvXHIvZywgIiIpLnJlcGxhY2UoL1xuL2csICIgIikpOwogICAgICAgIGlmICh0ZXh0Lmxlbmd0aCkgbGVhdmluZyA9IGZhbHNlOwogICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGlzQlIobm9kZSkgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgbGVhdmluZyA9IHRydWU7CiAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgZm9yICh2YXIgbiA9IG5vZGUuZmlyc3RDaGlsZDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcpIHNpbXBsaWZ5Tm9kZShuKTsKICAgICAgICBpZiAoIWxlYXZpbmcgJiYgbmV3bGluZUVsZW1lbnRzLmhhc093blByb3BlcnR5KG5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSkpIHsKICAgICAgICAgIGxlYXZpbmcgPSB0cnVlOwogICAgICAgICAgaWYgKCFhdEVuZCB8fCAhdG9wKQogICAgICAgICAgICByZXN1bHQucHVzaChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJCUiIpKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBzaW1wbGlmeU5vZGUocm9vdCwgdHJ1ZSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0KCiAgLy8gQ3JlYXRlcyBhIE1vY2hpS2l0LXN0eWxlIGl0ZXJhdG9yIHRoYXQgZ29lcyBvdmVyIGEgc2VyaWVzIG9mIERPTQogIC8vIG5vZGVzLiBUaGUgdmFsdWVzIGl0IHlpZWxkcyBhcmUgc3RyaW5ncywgdGhlIHRleHR1YWwgY29udGVudCBvZgogIC8vIHRoZSBub2Rlcy4gSXQgbWFrZXMgc3VyZSB0aGF0IGFsbCBub2RlcyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQogIC8vIG9uZSB3aG9zZSB0ZXh0IGlzIGJlaW5nIHlpZWxkZWQgaGF2ZSBiZWVuICdub3JtYWxpemVkJyB0byBiZSBqdXN0CiAgLy8gPHNwYW4+IGFuZCA8YnI+IGVsZW1lbnRzLgogIGZ1bmN0aW9uIHRyYXZlcnNlRE9NKHN0YXJ0KXsKICAgIHZhciBub2RlUXVldWUgPSBbXTsKCiAgICAvLyBDcmVhdGUgYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGluc2VydCBub2RlcyBhZnRlciB0aGUKICAgIC8vIG9uZSBnaXZlbiBhcyBhcmd1bWVudC4KICAgIGZ1bmN0aW9uIHBvaW50QXQobm9kZSl7CiAgICAgIHZhciBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGU7CiAgICAgIHZhciBuZXh0ID0gbm9kZS5uZXh0U2libGluZzsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKG5ld25vZGUpIHsKICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5ld25vZGUsIG5leHQpOwogICAgICB9OwogICAgfQogICAgdmFyIHBvaW50ID0gbnVsbDsKCiAgICAvLyBUaGlzIGFuIE9wZXJhLXNwZWNpZmljIGhhY2sgLS0gYWx3YXlzIGluc2VydCBhbiBlbXB0eSBzcGFuCiAgICAvLyBiZXR3ZWVuIHR3byBCUnMsIGJlY2F1c2UgT3BlcmEncyBjdXJzb3IgY29kZSBnZXRzIHRlcnJpYmx5CiAgICAvLyBjb25mdXNlZCB3aGVuIHRoZSBjdXJzb3IgaXMgYmV0d2VlbiB0d28gQlJzLgogICAgdmFyIGFmdGVyQlIgPSB0cnVlOwoKICAgIC8vIEluc2VydCBhIG5vcm1hbGl6ZWQgbm9kZSBhdCB0aGUgY3VycmVudCBwb2ludC4gSWYgaXQgaXMgYSB0ZXh0CiAgICAvLyBub2RlLCB3cmFwIGl0IGluIGEgPHNwYW4+LCBhbmQgZ2l2ZSB0aGF0IHNwYW4gYSBjdXJyZW50VGV4dAogICAgLy8gcHJvcGVydHkgLS0gdGhpcyBpcyB1c2VkIHRvIGNhY2hlIHRoZSBub2RlVmFsdWUsIGJlY2F1c2UKICAgIC8vIGRpcmVjdGx5IGFjY2Vzc2luZyBub2RlVmFsdWUgaXMgaG9ycmlibHkgc2xvdyBvbiBzb21lIGJyb3dzZXJzLgogICAgLy8gVGhlIGRpcnR5IHByb3BlcnR5IGlzIHVzZWQgYnkgdGhlIGhpZ2hsaWdodGVyIHRvIGRldGVybWluZQogICAgLy8gd2hpY2ggcGFydHMgb2YgdGhlIGRvY3VtZW50IGhhdmUgdG8gYmUgcmUtaGlnaGxpZ2h0ZWQuCiAgICBmdW5jdGlvbiBpbnNlcnRQYXJ0KHBhcnQpewogICAgICB2YXIgdGV4dCA9ICJcbiI7CiAgICAgIGlmIChwYXJ0Lm5vZGVUeXBlID09IDMpIHsKICAgICAgICBzZWxlY3Quc25hcHNob3RDaGFuZ2VkKCk7CiAgICAgICAgcGFydCA9IG1ha2VQYXJ0U3BhbihwYXJ0KTsKICAgICAgICB0ZXh0ID0gcGFydC5jdXJyZW50VGV4dDsKICAgICAgICBhZnRlckJSID0gZmFsc2U7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgaWYgKGFmdGVyQlIgJiYgd2luZG93Lm9wZXJhKQogICAgICAgICAgcG9pbnQobWFrZVBhcnRTcGFuKCIiKSk7CiAgICAgICAgYWZ0ZXJCUiA9IHRydWU7CiAgICAgIH0KICAgICAgcGFydC5kaXJ0eSA9IHRydWU7CiAgICAgIG5vZGVRdWV1ZS5wdXNoKHBhcnQpOwogICAgICBwb2ludChwYXJ0KTsKICAgICAgcmV0dXJuIHRleHQ7CiAgICB9CgogICAgLy8gRXh0cmFjdCB0aGUgdGV4dCBhbmQgbmV3bGluZXMgZnJvbSBhIERPTSBub2RlLCBpbnNlcnQgdGhlbSBpbnRvCiAgICAvLyB0aGUgZG9jdW1lbnQsIGFuZCByZXR1cm4gdGhlIHRleHR1YWwgY29udGVudC4gVXNlZCB0byByZXBsYWNlCiAgICAvLyBub24tbm9ybWFsaXplZCBub2Rlcy4KICAgIGZ1bmN0aW9uIHdyaXRlTm9kZShub2RlLCBlbmQpIHsKICAgICAgdmFyIHNpbXBsaWZpZWQgPSBzaW1wbGlmeURPTShub2RlLCBlbmQpOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpbXBsaWZpZWQubGVuZ3RoOyBpKyspCiAgICAgICAgc2ltcGxpZmllZFtpXSA9IGluc2VydFBhcnQoc2ltcGxpZmllZFtpXSk7CiAgICAgIHJldHVybiBzaW1wbGlmaWVkLmpvaW4oIiIpOwogICAgfQoKICAgIC8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIGEgbm9ybWFsaXplZCA8c3Bhbj4gZWxlbWVudC4KICAgIGZ1bmN0aW9uIHBhcnROb2RlKG5vZGUpewogICAgICBpZiAobm9kZS5pc1BhcnQgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA9PSAxICYmIG5vZGUuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PSAzKSB7CiAgICAgICAgbm9kZS5jdXJyZW50VGV4dCA9IG5vZGUuZmlyc3RDaGlsZC5ub2RlVmFsdWU7CiAgICAgICAgcmV0dXJuICEvW1xuXHRccl0vLnRlc3Qobm9kZS5jdXJyZW50VGV4dCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIEFkdmFuY2UgdG8gbmV4dCBub2RlLCByZXR1cm4gc3RyaW5nIGZvciBjdXJyZW50IG5vZGUuCiAgICBmdW5jdGlvbiBuZXh0KCkgewogICAgICBpZiAoIXN0YXJ0KSB0aHJvdyBTdG9wSXRlcmF0aW9uOwogICAgICB2YXIgbm9kZSA9IHN0YXJ0OwogICAgICBzdGFydCA9IG5vZGUubmV4dFNpYmxpbmc7CgogICAgICBpZiAocGFydE5vZGUobm9kZSkpewogICAgICAgIG5vZGVRdWV1ZS5wdXNoKG5vZGUpOwogICAgICAgIGFmdGVyQlIgPSBmYWxzZTsKICAgICAgICByZXR1cm4gbm9kZS5jdXJyZW50VGV4dDsKICAgICAgfQogICAgICBlbHNlIGlmIChpc0JSKG5vZGUpKSB7CiAgICAgICAgaWYgKGFmdGVyQlIgJiYgd2luZG93Lm9wZXJhKQogICAgICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShtYWtlUGFydFNwYW4oIiIpLCBub2RlKTsKICAgICAgICBub2RlUXVldWUucHVzaChub2RlKTsKICAgICAgICBhZnRlckJSID0gdHJ1ZTsKICAgICAgICByZXR1cm4gIlxuIjsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICB2YXIgZW5kID0gIW5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgcG9pbnQgPSBwb2ludEF0KG5vZGUpOwogICAgICAgIHJlbW92ZUVsZW1lbnQobm9kZSk7CiAgICAgICAgcmV0dXJuIHdyaXRlTm9kZShub2RlLCBlbmQpOwogICAgICB9CiAgICB9CgogICAgLy8gTW9jaGlLaXQgaXRlcmF0b3JzIGFyZSBvYmplY3RzIHdpdGggYSBuZXh0IGZ1bmN0aW9uIHRoYXQKICAgIC8vIHJldHVybnMgdGhlIG5leHQgdmFsdWUgb3IgdGhyb3dzIFN0b3BJdGVyYXRpb24gd2hlbiB0aGVyZSBhcmUKICAgIC8vIG5vIG1vcmUgdmFsdWVzLgogICAgcmV0dXJuIHtuZXh0OiBuZXh0LCBub2Rlczogbm9kZVF1ZXVlfTsKICB9CgogIC8vIERldGVybWluZSB0aGUgdGV4dCBzaXplIG9mIGEgcHJvY2Vzc2VkIG5vZGUuCiAgZnVuY3Rpb24gbm9kZVNpemUobm9kZSkgewogICAgcmV0dXJuIGlzQlIobm9kZSkgPyAxIDogbm9kZS5jdXJyZW50VGV4dC5sZW5ndGg7CiAgfQoKICAvLyBTZWFyY2ggYmFja3dhcmRzIHRocm91Z2ggdGhlIHRvcC1sZXZlbCBub2RlcyB1bnRpbCB0aGUgbmV4dCBCUiBvcgogIC8vIHRoZSBzdGFydCBvZiB0aGUgZnJhbWUuCiAgZnVuY3Rpb24gc3RhcnRPZkxpbmUobm9kZSkgewogICAgd2hpbGUgKG5vZGUgJiYgIWlzQlIobm9kZSkpIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZzsKICAgIHJldHVybiBub2RlOwogIH0KICBmdW5jdGlvbiBlbmRPZkxpbmUobm9kZSwgY29udGFpbmVyKSB7CiAgICBpZiAoIW5vZGUpIG5vZGUgPSBjb250YWluZXIuZmlyc3RDaGlsZDsKICAgIGVsc2UgaWYgKGlzQlIobm9kZSkpIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwoKICAgIHdoaWxlIChub2RlICYmICFpc0JSKG5vZGUpKSBub2RlID0gbm9kZS5uZXh0U2libGluZzsKICAgIHJldHVybiBub2RlOwogIH0KCiAgZnVuY3Rpb24gdGltZSgpIHtyZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7fQoKICAvLyBDbGllbnQgaW50ZXJmYWNlIGZvciBzZWFyY2hpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGVkaXRvci4gQ3JlYXRlCiAgLy8gdGhlc2UgYnkgY2FsbGluZyBDb2RlTWlycm9yLmdldFNlYXJjaEN1cnNvci4gVG8gdXNlLCBjYWxsCiAgLy8gZmluZE5leHQgb24gdGhlIHJlc3VsdGluZyBvYmplY3QgLS0gdGhpcyByZXR1cm5zIGEgYm9vbGVhbgogIC8vIGluZGljYXRpbmcgd2hldGhlciBhbnl0aGluZyB3YXMgZm91bmQsIGFuZCBjYW4gYmUgY2FsbGVkIGFnYWluIHRvCiAgLy8gc2tpcCB0byB0aGUgbmV4dCBmaW5kLiBVc2UgdGhlIHNlbGVjdCBhbmQgcmVwbGFjZSBtZXRob2RzIHRvCiAgLy8gYWN0dWFsbHkgZG8gc29tZXRoaW5nIHdpdGggdGhlIGZvdW5kIGxvY2F0aW9ucy4KICBmdW5jdGlvbiBTZWFyY2hDdXJzb3IoZWRpdG9yLCBzdHJpbmcsIGZyb20sIGNhc2VGb2xkKSB7CiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjsKICAgIHRoaXMuaGlzdG9yeSA9IGVkaXRvci5oaXN0b3J5OwogICAgdGhpcy5oaXN0b3J5LmNvbW1pdCgpOwogICAgdGhpcy52YWxpZCA9ICEhc3RyaW5nOwogICAgdGhpcy5hdE9jY3VycmVuY2UgPSBmYWxzZTsKICAgIGlmIChjYXNlRm9sZCA9PSB1bmRlZmluZWQpIGNhc2VGb2xkID0gc3RyaW5nID09IHN0cmluZy50b0xvd2VyQ2FzZSgpOwoKICAgIGZ1bmN0aW9uIGdldFRleHQobm9kZSl7CiAgICAgIHZhciBsaW5lID0gY2xlYW5UZXh0KGVkaXRvci5oaXN0b3J5LnRleHRBZnRlcihub2RlKSk7CiAgICAgIHJldHVybiAoY2FzZUZvbGQgPyBsaW5lLnRvTG93ZXJDYXNlKCkgOiBsaW5lKTsKICAgIH0KCiAgICB2YXIgdG9wUG9zID0ge25vZGU6IG51bGwsIG9mZnNldDogMH07CiAgICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PSAib2JqZWN0IiAmJiB0eXBlb2YgZnJvbS5jaGFyYWN0ZXIgPT0gIm51bWJlciIpIHsKICAgICAgZWRpdG9yLmNoZWNrTGluZShmcm9tLmxpbmUpOwogICAgICB2YXIgcG9zID0ge25vZGU6IGZyb20ubGluZSwgb2Zmc2V0OiBmcm9tLmNoYXJhY3Rlcn07CiAgICAgIHRoaXMucG9zID0ge2Zyb206IHBvcywgdG86IHBvc307CiAgICB9CiAgICBlbHNlIGlmIChmcm9tKSB7CiAgICAgIHRoaXMucG9zID0ge2Zyb206IHNlbGVjdC5jdXJzb3JQb3MoZWRpdG9yLmNvbnRhaW5lciwgdHJ1ZSkgfHwgdG9wUG9zLAogICAgICAgICAgICAgICAgICB0bzogc2VsZWN0LmN1cnNvclBvcyhlZGl0b3IuY29udGFpbmVyLCBmYWxzZSkgfHwgdG9wUG9zfTsKICAgIH0KICAgIGVsc2UgewogICAgICB0aGlzLnBvcyA9IHtmcm9tOiB0b3BQb3MsIHRvOiB0b3BQb3N9OwogICAgfQoKICAgIGlmIChjYXNlRm9sZCkgc3RyaW5nID0gc3RyaW5nLnRvTG93ZXJDYXNlKCk7CiAgICAvLyBDcmVhdGUgYSBtYXRjaGVyIGZ1bmN0aW9uIGJhc2VkIG9uIHRoZSBraW5kIG9mIHN0cmluZyB3ZSBoYXZlLgogICAgdmFyIHRhcmdldCA9IHN0cmluZy5zcGxpdCgiXG4iKTsKICAgIHRoaXMubWF0Y2hlcyA9ICh0YXJnZXQubGVuZ3RoID09IDEpID8KICAgICAgLy8gRm9yIG9uZS1saW5lIHN0cmluZ3MsIHNlYXJjaGluZyBjYW4gYmUgZG9uZSBzaW1wbHkgYnkgY2FsbGluZwogICAgICAvLyBpbmRleE9mIG9yIGxhc3RJbmRleE9mIG9uIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgIGZ1bmN0aW9uKHJldmVyc2UsIG5vZGUsIG9mZnNldCkgewogICAgICAgIHZhciBsaW5lID0gZ2V0VGV4dChub2RlKSwgbGVuID0gc3RyaW5nLmxlbmd0aCwgbWF0Y2g7CiAgICAgICAgaWYgKHJldmVyc2UgPyAob2Zmc2V0ID49IGxlbiAmJiAobWF0Y2ggPSBsaW5lLmxhc3RJbmRleE9mKHN0cmluZywgb2Zmc2V0IC0gbGVuKSkgIT0gLTEpCiAgICAgICAgICAgICAgICAgICAgOiAobWF0Y2ggPSBsaW5lLmluZGV4T2Yoc3RyaW5nLCBvZmZzZXQpKSAhPSAtMSkKICAgICAgICAgIHJldHVybiB7ZnJvbToge25vZGU6IG5vZGUsIG9mZnNldDogbWF0Y2h9LAogICAgICAgICAgICAgICAgICB0bzoge25vZGU6IG5vZGUsIG9mZnNldDogbWF0Y2ggKyBsZW59fTsKICAgICAgfSA6CiAgICAgIC8vIE11bHRpLWxpbmUgc3RyaW5ncyByZXF1aXJlIGludGVybmFsIGl0ZXJhdGlvbiBvdmVyIGxpbmVzLCBhbmQKICAgICAgLy8gc29tZSBjbHVua3kgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgZmlyc3QgbWF0Y2ggZW5kcyBhdCB0aGUKICAgICAgLy8gZW5kIG9mIHRoZSBsaW5lIGFuZCB0aGUgbGFzdCBtYXRjaCBzdGFydHMgYXQgdGhlIHN0YXJ0LgogICAgICBmdW5jdGlvbihyZXZlcnNlLCBub2RlLCBvZmZzZXQpIHsKICAgICAgICB2YXIgaWR4ID0gKHJldmVyc2UgPyB0YXJnZXQubGVuZ3RoIC0gMSA6IDApLCBtYXRjaCA9IHRhcmdldFtpZHhdLCBsaW5lID0gZ2V0VGV4dChub2RlKTsKICAgICAgICB2YXIgb2Zmc2V0QSA9IChyZXZlcnNlID8gbGluZS5pbmRleE9mKG1hdGNoKSArIG1hdGNoLmxlbmd0aCA6IGxpbmUubGFzdEluZGV4T2YobWF0Y2gpKTsKICAgICAgICBpZiAocmV2ZXJzZSA/IG9mZnNldEEgPj0gb2Zmc2V0IHx8IG9mZnNldEEgIT0gbWF0Y2gubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgOiBvZmZzZXRBIDw9IG9mZnNldCB8fCBvZmZzZXRBICE9IGxpbmUubGVuZ3RoIC0gbWF0Y2gubGVuZ3RoKQogICAgICAgICAgcmV0dXJuOwoKICAgICAgICB2YXIgcG9zID0gbm9kZTsKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgaWYgKHJldmVyc2UgJiYgIXBvcykgcmV0dXJuOwogICAgICAgICAgcG9zID0gKHJldmVyc2UgPyB0aGlzLmhpc3Rvcnkubm9kZUJlZm9yZShwb3MpIDogdGhpcy5oaXN0b3J5Lm5vZGVBZnRlcihwb3MpICk7CiAgICAgICAgICBpZiAoIXJldmVyc2UgJiYgIXBvcykgcmV0dXJuOwoKICAgICAgICAgIGxpbmUgPSBnZXRUZXh0KHBvcyk7CiAgICAgICAgICBtYXRjaCA9IHRhcmdldFtyZXZlcnNlID8gLS1pZHggOiArK2lkeF07CgogICAgICAgICAgaWYgKGlkeCA+IDAgJiYgaWR4IDwgdGFyZ2V0Lmxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgaWYgKGxpbmUgIT0gbWF0Y2gpIHJldHVybjsKICAgICAgICAgICAgZWxzZSBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBvZmZzZXRCID0gKHJldmVyc2UgPyBsaW5lLmxhc3RJbmRleE9mKG1hdGNoKSA6IGxpbmUuaW5kZXhPZihtYXRjaCkgKyBtYXRjaC5sZW5ndGgpOwogICAgICAgICAgaWYgKHJldmVyc2UgPyBvZmZzZXRCICE9IGxpbmUubGVuZ3RoIC0gbWF0Y2gubGVuZ3RoIDogb2Zmc2V0QiAhPSBtYXRjaC5sZW5ndGgpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIHJldHVybiB7ZnJvbToge25vZGU6IHJldmVyc2UgPyBwb3MgOiBub2RlLCBvZmZzZXQ6IHJldmVyc2UgPyBvZmZzZXRCIDogb2Zmc2V0QX0sCiAgICAgICAgICAgICAgICAgIHRvOiB7bm9kZTogcmV2ZXJzZSA/IG5vZGUgOiBwb3MsIG9mZnNldDogcmV2ZXJzZSA/IG9mZnNldEEgOiBvZmZzZXRCfX07CiAgICAgICAgfQogICAgICB9OwogIH0KCiAgU2VhcmNoQ3Vyc29yLnByb3RvdHlwZSA9IHsKICAgIGZpbmROZXh0OiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5maW5kKGZhbHNlKTt9LAogICAgZmluZFByZXZpb3VzOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5maW5kKHRydWUpO30sCgogICAgZmluZDogZnVuY3Rpb24ocmV2ZXJzZSkgewogICAgICBpZiAoIXRoaXMudmFsaWQpIHJldHVybiBmYWxzZTsKCiAgICAgIHZhciBzZWxmID0gdGhpcywgcG9zID0gcmV2ZXJzZSA/IHRoaXMucG9zLmZyb20gOiB0aGlzLnBvcy50bywKICAgICAgICAgIG5vZGUgPSBwb3Mubm9kZSwgb2Zmc2V0ID0gcG9zLm9mZnNldDsKICAgICAgLy8gUmVzZXQgdGhlIGN1cnNvciBpZiB0aGUgY3VycmVudCBsaW5lIGlzIG5vIGxvbmdlciBpbiB0aGUgRE9NIHRyZWUuCiAgICAgIGlmIChub2RlICYmICFub2RlLnBhcmVudE5vZGUpIHsKICAgICAgICBub2RlID0gbnVsbDsgb2Zmc2V0ID0gMDsKICAgICAgfQogICAgICBmdW5jdGlvbiBzYXZlUG9zQW5kRmFpbCgpIHsKICAgICAgICB2YXIgcG9zID0ge25vZGU6IG5vZGUsIG9mZnNldDogb2Zmc2V0fTsKICAgICAgICBzZWxmLnBvcyA9IHtmcm9tOiBwb3MsIHRvOiBwb3N9OwogICAgICAgIHNlbGYuYXRPY2N1cnJlbmNlID0gZmFsc2U7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmICh0aGlzLnBvcyA9IHRoaXMubWF0Y2hlcyhyZXZlcnNlLCBub2RlLCBvZmZzZXQpKSB7CiAgICAgICAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IHRydWU7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChyZXZlcnNlKSB7CiAgICAgICAgICBpZiAoIW5vZGUpIHJldHVybiBzYXZlUG9zQW5kRmFpbCgpOwogICAgICAgICAgbm9kZSA9IHRoaXMuaGlzdG9yeS5ub2RlQmVmb3JlKG5vZGUpOwogICAgICAgICAgb2Zmc2V0ID0gdGhpcy5oaXN0b3J5LnRleHRBZnRlcihub2RlKS5sZW5ndGg7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgdmFyIG5leHQgPSB0aGlzLmhpc3Rvcnkubm9kZUFmdGVyKG5vZGUpOwogICAgICAgICAgaWYgKCFuZXh0KSB7CiAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuaGlzdG9yeS50ZXh0QWZ0ZXIobm9kZSkubGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gc2F2ZVBvc0FuZEZhaWwoKTsKICAgICAgICAgIH0KICAgICAgICAgIG5vZGUgPSBuZXh0OwogICAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICB9ICAgICAgICAKICAgICAgfQogICAgfSwKCiAgICBzZWxlY3Q6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5hdE9jY3VycmVuY2UpIHsKICAgICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuZWRpdG9yLmNvbnRhaW5lciwgdGhpcy5wb3MuZnJvbSwgdGhpcy5wb3MudG8pOwogICAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmVkaXRvci5jb250YWluZXIpOwogICAgICB9CiAgICB9LAoKICAgIHJlcGxhY2U6IGZ1bmN0aW9uKHN0cmluZykgewogICAgICBpZiAodGhpcy5hdE9jY3VycmVuY2UpIHsKICAgICAgICB2YXIgZW5kID0gdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKHRoaXMucG9zLmZyb20sIHRoaXMucG9zLnRvLCBzdHJpbmcpOwogICAgICAgIHRoaXMucG9zLnRvID0gZW5kOwogICAgICAgIHRoaXMuYXRPY2N1cnJlbmNlID0gZmFsc2U7CiAgICAgIH0KICAgIH0sCgogICAgcG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5hdE9jY3VycmVuY2UpCiAgICAgICAgcmV0dXJuIHtsaW5lOiB0aGlzLnBvcy5mcm9tLm5vZGUsIGNoYXJhY3RlcjogdGhpcy5wb3MuZnJvbS5vZmZzZXR9OwogICAgfQogIH07CgogIC8vIFRoZSBFZGl0b3Igb2JqZWN0IGlzIHRoZSBtYWluIGluc2lkZS10aGUtaWZyYW1lIGludGVyZmFjZS4KICBmdW5jdGlvbiBFZGl0b3Iob3B0aW9ucykgewogICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKICAgIHdpbmRvdy5pbmRlbnRVbml0ID0gb3B0aW9ucy5pbmRlbnRVbml0OwogICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7CiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIgPSBkb2N1bWVudC5ib2R5OwogICAgdGhpcy5oaXN0b3J5ID0gbmV3IFVuZG9IaXN0b3J5KGNvbnRhaW5lciwgb3B0aW9ucy51bmRvRGVwdGgsIG9wdGlvbnMudW5kb0RlbGF5LCB0aGlzKTsKICAgIHZhciBzZWxmID0gdGhpczsKCiAgICBpZiAoIUVkaXRvci5QYXJzZXIpCiAgICAgIHRocm93ICJObyBwYXJzZXIgbG9hZGVkLiI7CiAgICBpZiAob3B0aW9ucy5wYXJzZXJDb25maWcgJiYgRWRpdG9yLlBhcnNlci5jb25maWd1cmUpCiAgICAgIEVkaXRvci5QYXJzZXIuY29uZmlndXJlKG9wdGlvbnMucGFyc2VyQ29uZmlnKTsKCiAgICBpZiAoIW9wdGlvbnMucmVhZE9ubHkpCiAgICAgIHNlbGVjdC5zZXRDdXJzb3JQb3MoY29udGFpbmVyLCB7bm9kZTogbnVsbCwgb2Zmc2V0OiAwfSk7CgogICAgdGhpcy5kaXJ0eSA9IFtdOwogICAgdGhpcy5pbXBvcnRDb2RlKG9wdGlvbnMuY29udGVudCB8fCAiIik7CiAgICB0aGlzLmhpc3Rvcnkub25DaGFuZ2UgPSBvcHRpb25zLm9uQ2hhbmdlOwoKICAgIGlmICghb3B0aW9ucy5yZWFkT25seSkgewogICAgICBpZiAob3B0aW9ucy5jb250aW51b3VzU2Nhbm5pbmcgIT09IGZhbHNlKSB7CiAgICAgICAgdGhpcy5zY2FubmVyID0gdGhpcy5kb2N1bWVudFNjYW5uZXIob3B0aW9ucy5wYXNzVGltZSk7CiAgICAgICAgdGhpcy5kZWxheVNjYW5uaW5nKCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNldEVkaXRhYmxlKCkgewogICAgICAgIC8vIFVzZSBjb250ZW50RWRpdGFibGUgaW5zdGVhZCBvZiBkZXNpZ25Nb2RlIG9uIElFLCBzaW5jZSBkZXNpZ25Nb2RlIGZyYW1lcwogICAgICAgIC8vIGNhbiBub3QgcnVuIGFueSBzY3JpcHRzLiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIHVzZSBjb250ZW50RWRpdGFibGUKICAgICAgICAvLyBldmVyeXdoZXJlLCBidXQgaXQgaXMgc2lnbmlmaWNhbnRseSBmbGFraWVyIHRoYW4gZGVzaWduTW9kZSBvbiBldmVyeQogICAgICAgIC8vIHNpbmdsZSBub24tSUUgYnJvd3Nlci4KICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jb250ZW50RWRpdGFibGUgIT0gdW5kZWZpbmVkICYmIGludGVybmV0RXhwbG9yZXIpCiAgICAgICAgICBkb2N1bWVudC5ib2R5LmNvbnRlbnRFZGl0YWJsZSA9ICJ0cnVlIjsKICAgICAgICBlbHNlCiAgICAgICAgICBkb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9uIjsKCiAgICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgd2hlcmUgeW91IGhhdmUgdG8gY2xpY2sgb24gdGhlIGFjdHVhbAogICAgICAgIC8vIGJvZHkgb2YgdGhlIGRvY3VtZW50IHRvIGZvY3VzIGl0IGluIElFLCBtYWtpbmcgZm9jdXNpbmcKICAgICAgICAvLyBoYXJkIHdoZW4gdGhlIGRvY3VtZW50IGlzIHNtYWxsLgogICAgICAgIGlmIChpbnRlcm5ldEV4cGxvcmVyICYmIG9wdGlvbnMuaGVpZ2h0ICE9ICJkeW5hbWljIikKICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWluSGVpZ2h0ID0gKGZyYW1lRWxlbWVudC5jbGllbnRIZWlnaHQgLSAyICogZG9jdW1lbnQuYm9keS5vZmZzZXRUb3AgLSA1KSArICJweCI7CgogICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5ib3JkZXJXaWR0aCA9ICIwIjsKICAgICAgICBpZiAoIW9wdGlvbnMudGV4dFdyYXBwaW5nKQogICAgICAgICAgY29udGFpbmVyLnN0eWxlLndoaXRlU3BhY2UgPSAibm93cmFwIjsKICAgICAgfQoKICAgICAgLy8gSWYgc2V0dGluZyB0aGUgZnJhbWUgZWRpdGFibGUgZmFpbHMsIHRyeSBhZ2FpbiB3aGVuIHRoZSB1c2VyCiAgICAgIC8vIGZvY3VzIGl0IChoYXBwZW5zIHdoZW4gdGhlIGZyYW1lIGlzIG5vdCB2aXNpYmxlIG9uCiAgICAgIC8vIGluaXRpYWxpc2F0aW9uLCBpbiBGaXJlZm94KS4KICAgICAgdHJ5IHsKICAgICAgICBzZXRFZGl0YWJsZSgpOwogICAgICB9CiAgICAgIGNhdGNoKGUpIHsKICAgICAgICB2YXIgZm9jdXNFdmVudCA9IGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudCwgImZvY3VzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICBmb2N1c0V2ZW50KCk7CiAgICAgICAgICBzZXRFZGl0YWJsZSgpOwogICAgICAgIH0sIHRydWUpOwogICAgICB9CgogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJrZXlkb3duIiwgbWV0aG9kKHRoaXMsICJrZXlEb3duIikpOwogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJrZXlwcmVzcyIsIG1ldGhvZCh0aGlzLCAia2V5UHJlc3MiKSk7CiAgICAgIGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudCwgImtleXVwIiwgbWV0aG9kKHRoaXMsICJrZXlVcCIpKTsKCiAgICAgIGZ1bmN0aW9uIGN1cnNvckFjdGl2aXR5KCkge3NlbGYuY3Vyc29yQWN0aXZpdHkoZmFsc2UpO30KICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LmJvZHksICJtb3VzZXVwIiwgY3Vyc29yQWN0aXZpdHkpOwogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQuYm9keSwgImN1dCIsIGN1cnNvckFjdGl2aXR5KTsKCiAgICAgIC8vIHdvcmthcm91bmQgZm9yIGEgZ2Vja28gYnVnIFs/XSB3aGVyZSBnb2luZyBmb3J3YXJkIGFuZCB0aGVuCiAgICAgIC8vIGJhY2sgYWdhaW4gYnJlYWtzIGRlc2lnbm1vZGUgKG5vIG1vcmUgY3Vyc29yKQogICAgICBpZiAoZ2Vja28pCiAgICAgICAgYWRkRXZlbnRIYW5kbGVyKHdpbmRvdywgInBhZ2VoaWRlIiwgZnVuY3Rpb24oKXtzZWxmLnVubG9hZGVkID0gdHJ1ZTt9KTsKCiAgICAgIGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudC5ib2R5LCAicGFzdGUiLCBmdW5jdGlvbihldmVudCkgewogICAgICAgIGN1cnNvckFjdGl2aXR5KCk7CiAgICAgICAgdmFyIHRleHQgPSBudWxsOwogICAgICAgIHRyeSB7CiAgICAgICAgICB2YXIgY2xpcGJvYXJkRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGEgfHwgd2luZG93LmNsaXBib2FyZERhdGE7CiAgICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YSkgdGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgnVGV4dCcpOwogICAgICAgIH0KICAgICAgICBjYXRjaChlKSB7fQogICAgICAgIGlmICh0ZXh0ICE9PSBudWxsKSB7CiAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgICBzZWxmLnJlcGxhY2VTZWxlY3Rpb24odGV4dCk7CiAgICAgICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3Ioc2VsZi5jb250YWluZXIpOwogICAgICAgIH0KICAgICAgfSk7CgogICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9NYXRjaFBhcmVucykKICAgICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQuYm9keSwgImNsaWNrIiwgbWV0aG9kKHRoaXMsICJzY2hlZHVsZVBhcmVuSGlnaGxpZ2h0IikpOwogICAgfQogICAgZWxzZSBpZiAoIW9wdGlvbnMudGV4dFdyYXBwaW5nKSB7CiAgICAgIGNvbnRhaW5lci5zdHlsZS53aGl0ZVNwYWNlID0gIm5vd3JhcCI7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBpc1NhZmVLZXkoY29kZSkgewogICAgcmV0dXJuIChjb2RlID49IDE2ICYmIGNvZGUgPD0gMTgpIHx8IC8vIHNoaWZ0LCBjb250cm9sLCBhbHQKICAgICAgICAgICAoY29kZSA+PSAzMyAmJiBjb2RlIDw9IDQwKTsgLy8gYXJyb3dzLCBob21lLCBlbmQKICB9CgogIEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAvLyBJbXBvcnQgYSBwaWVjZSBvZiBjb2RlIGludG8gdGhlIGVkaXRvci4KICAgIGltcG9ydENvZGU6IGZ1bmN0aW9uKGNvZGUpIHsKICAgICAgdGhpcy5oaXN0b3J5LnB1c2gobnVsbCwgbnVsbCwgYXNFZGl0b3JMaW5lcyhjb2RlKSk7CiAgICAgIHRoaXMuaGlzdG9yeS5yZXNldCgpOwogICAgfSwKCiAgICAvLyBFeHRyYWN0IHRoZSBjb2RlIGZyb20gdGhlIGVkaXRvci4KICAgIGdldENvZGU6IGZ1bmN0aW9uKCkgewogICAgICBpZiAoIXRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpCiAgICAgICAgcmV0dXJuICIiOwoKICAgICAgdmFyIGFjY3VtID0gW107CiAgICAgIHNlbGVjdC5tYXJrU2VsZWN0aW9uKCk7CiAgICAgIGZvckVhY2godHJhdmVyc2VET00odGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCksIG1ldGhvZChhY2N1bSwgInB1c2giKSk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CiAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgICAgLy8gT24gd2Via2l0LCBkb24ndCBjb3VudCBsYXN0IChlbXB0eSkgbGluZSBpZiB0aGUgd2Via2l0TGFzdExpbmVIYWNrIEJSIGlzIHByZXNlbnQKICAgICAgaWYgKHdlYmtpdCAmJiB0aGlzLmNvbnRhaW5lci5sYXN0Q2hpbGQuaGFja0JSKQogICAgICAgIGFjY3VtLnBvcCgpOwogICAgICByZXR1cm4gY2xlYW5UZXh0KGFjY3VtLmpvaW4oIiIpKTsKICAgIH0sCgogICAgY2hlY2tMaW5lOiBmdW5jdGlvbihub2RlKSB7CiAgICAgIGlmIChub2RlID09PSBmYWxzZSB8fCAhKG5vZGUgPT0gbnVsbCB8fCBub2RlLnBhcmVudE5vZGUgPT0gdGhpcy5jb250YWluZXIpKQogICAgICAgIHRocm93IHBhcmVudC5Db2RlTWlycm9yLkludmFsaWRMaW5lSGFuZGxlOwogICAgfSwKCiAgICBjdXJzb3JQb3NpdGlvbjogZnVuY3Rpb24oc3RhcnQpIHsKICAgICAgaWYgKHN0YXJ0ID09IG51bGwpIHN0YXJ0ID0gdHJ1ZTsKICAgICAgdmFyIHBvcyA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHN0YXJ0KTsKICAgICAgaWYgKHBvcykgcmV0dXJuIHtsaW5lOiBwb3Mubm9kZSwgY2hhcmFjdGVyOiBwb3Mub2Zmc2V0fTsKICAgICAgZWxzZSByZXR1cm4ge2xpbmU6IG51bGwsIGNoYXJhY3RlcjogMH07CiAgICB9LAoKICAgIGZpcnN0TGluZTogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICBsYXN0TGluZTogZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aGlzLmNvbnRhaW5lci5sYXN0Q2hpbGQpIHJldHVybiBzdGFydE9mTGluZSh0aGlzLmNvbnRhaW5lci5sYXN0Q2hpbGQpOwogICAgICBlbHNlIHJldHVybiBudWxsOwogICAgfSwKCiAgICBuZXh0TGluZTogZnVuY3Rpb24obGluZSkgewogICAgICB0aGlzLmNoZWNrTGluZShsaW5lKTsKICAgICAgdmFyIGVuZCA9IGVuZE9mTGluZShsaW5lLCB0aGlzLmNvbnRhaW5lcik7CiAgICAgIHJldHVybiBlbmQgfHwgZmFsc2U7CiAgICB9LAoKICAgIHByZXZMaW5lOiBmdW5jdGlvbihsaW5lKSB7CiAgICAgIHRoaXMuY2hlY2tMaW5lKGxpbmUpOwogICAgICBpZiAobGluZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiBzdGFydE9mTGluZShsaW5lLnByZXZpb3VzU2libGluZyk7CiAgICB9LAoKICAgIHZpc2libGVMaW5lQ291bnQ6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgbGluZSA9IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgIHdoaWxlIChsaW5lICYmIGlzQlIobGluZSkpIGxpbmUgPSBsaW5lLm5leHRTaWJsaW5nOyAvLyBCUiBoZWlnaHRzIGFyZSB1bnJlbGlhYmxlCiAgICAgIGlmICghbGluZSkgcmV0dXJuIGZhbHNlOwogICAgICB2YXIgaW5uZXJIZWlnaHQgPSAod2luZG93LmlubmVySGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGlubmVySGVpZ2h0IC8gbGluZS5vZmZzZXRIZWlnaHQpOwogICAgfSwKCiAgICBzZWxlY3RMaW5lczogZnVuY3Rpb24oc3RhcnRMaW5lLCBzdGFydE9mZnNldCwgZW5kTGluZSwgZW5kT2Zmc2V0KSB7CiAgICAgIHRoaXMuY2hlY2tMaW5lKHN0YXJ0TGluZSk7CiAgICAgIHZhciBzdGFydCA9IHtub2RlOiBzdGFydExpbmUsIG9mZnNldDogc3RhcnRPZmZzZXR9LCBlbmQgPSBudWxsOwogICAgICBpZiAoZW5kT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLmNoZWNrTGluZShlbmRMaW5lKTsKICAgICAgICBlbmQgPSB7bm9kZTogZW5kTGluZSwgb2Zmc2V0OiBlbmRPZmZzZXR9OwogICAgICB9CiAgICAgIHNlbGVjdC5zZXRDdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHN0YXJ0LCBlbmQpOwogICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3IodGhpcy5jb250YWluZXIpOwogICAgfSwKCiAgICBsaW5lQ29udGVudDogZnVuY3Rpb24obGluZSkgewogICAgICB2YXIgYWNjdW0gPSBbXTsKICAgICAgZm9yIChsaW5lID0gbGluZSA/IGxpbmUubmV4dFNpYmxpbmcgOiB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICAgICAgIGxpbmUgJiYgIWlzQlIobGluZSk7IGxpbmUgPSBsaW5lLm5leHRTaWJsaW5nKQogICAgICAgIGFjY3VtLnB1c2gobm9kZVRleHQobGluZSkpOwogICAgICByZXR1cm4gY2xlYW5UZXh0KGFjY3VtLmpvaW4oIiIpKTsKICAgIH0sCgogICAgc2V0TGluZUNvbnRlbnQ6IGZ1bmN0aW9uKGxpbmUsIGNvbnRlbnQpIHsKICAgICAgdGhpcy5oaXN0b3J5LmNvbW1pdCgpOwogICAgICB0aGlzLnJlcGxhY2VSYW5nZSh7bm9kZTogbGluZSwgb2Zmc2V0OiAwfSwKICAgICAgICAgICAgICAgICAgICAgICAge25vZGU6IGxpbmUsIG9mZnNldDogdGhpcy5oaXN0b3J5LnRleHRBZnRlcihsaW5lKS5sZW5ndGh9LAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50KTsKICAgICAgdGhpcy5hZGREaXJ0eU5vZGUobGluZSk7CiAgICAgIHRoaXMuc2NoZWR1bGVIaWdobGlnaHQoKTsKICAgIH0sCgogICAgcmVtb3ZlTGluZTogZnVuY3Rpb24obGluZSkgewogICAgICB2YXIgbm9kZSA9IGxpbmUgPyBsaW5lLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICB2YXIgbmV4dCA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgcmVtb3ZlRWxlbWVudChub2RlKTsKICAgICAgICBpZiAoaXNCUihub2RlKSkgYnJlYWs7CiAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAgIH0KICAgICAgdGhpcy5hZGREaXJ0eU5vZGUobGluZSk7CiAgICAgIHRoaXMuc2NoZWR1bGVIaWdobGlnaHQoKTsKICAgIH0sCgogICAgaW5zZXJ0SW50b0xpbmU6IGZ1bmN0aW9uKGxpbmUsIHBvc2l0aW9uLCBjb250ZW50KSB7CiAgICAgIHZhciBiZWZvcmUgPSBudWxsOwogICAgICBpZiAocG9zaXRpb24gPT0gImVuZCIpIHsKICAgICAgICBiZWZvcmUgPSBlbmRPZkxpbmUobGluZSwgdGhpcy5jb250YWluZXIpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIGZvciAodmFyIGN1ciA9IGxpbmUgPyBsaW5lLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsgY3VyOyBjdXIgPSBjdXIubmV4dFNpYmxpbmcpIHsKICAgICAgICAgIGlmIChwb3NpdGlvbiA9PSAwKSB7CiAgICAgICAgICAgIGJlZm9yZSA9IGN1cjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgdGV4dCA9IG5vZGVUZXh0KGN1cik7CiAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPiBwb3NpdGlvbikgewogICAgICAgICAgICBiZWZvcmUgPSBjdXIubmV4dFNpYmxpbmc7CiAgICAgICAgICAgIGNvbnRlbnQgPSB0ZXh0LnNsaWNlKDAsIHBvc2l0aW9uKSArIGNvbnRlbnQgKyB0ZXh0LnNsaWNlKHBvc2l0aW9uKTsKICAgICAgICAgICAgcmVtb3ZlRWxlbWVudChjdXIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHBvc2l0aW9uIC09IHRleHQubGVuZ3RoOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIGxpbmVzID0gYXNFZGl0b3JMaW5lcyhjb250ZW50KTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChpID4gMCkgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkJSIiksIGJlZm9yZSk7CiAgICAgICAgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKG1ha2VQYXJ0U3BhbihsaW5lc1tpXSksIGJlZm9yZSk7CiAgICAgIH0KICAgICAgdGhpcy5hZGREaXJ0eU5vZGUobGluZSk7CiAgICAgIHRoaXMuc2NoZWR1bGVIaWdobGlnaHQoKTsKICAgIH0sCgogICAgLy8gUmV0cmlldmUgdGhlIHNlbGVjdGVkIHRleHQuCiAgICBzZWxlY3RlZFRleHQ6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgaCA9IHRoaXMuaGlzdG9yeTsKICAgICAgaC5jb21taXQoKTsKCiAgICAgIHZhciBzdGFydCA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHRydWUpLAogICAgICAgICAgZW5kID0gc2VsZWN0LmN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgZmFsc2UpOwogICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHJldHVybiAiIjsKCiAgICAgIGlmIChzdGFydC5ub2RlID09IGVuZC5ub2RlKQogICAgICAgIHJldHVybiBoLnRleHRBZnRlcihzdGFydC5ub2RlKS5zbGljZShzdGFydC5vZmZzZXQsIGVuZC5vZmZzZXQpOwoKICAgICAgdmFyIHRleHQgPSBbaC50ZXh0QWZ0ZXIoc3RhcnQubm9kZSkuc2xpY2Uoc3RhcnQub2Zmc2V0KV07CiAgICAgIGZvciAodmFyIHBvcyA9IGgubm9kZUFmdGVyKHN0YXJ0Lm5vZGUpOyBwb3MgIT0gZW5kLm5vZGU7IHBvcyA9IGgubm9kZUFmdGVyKHBvcykpCiAgICAgICAgdGV4dC5wdXNoKGgudGV4dEFmdGVyKHBvcykpOwogICAgICB0ZXh0LnB1c2goaC50ZXh0QWZ0ZXIoZW5kLm5vZGUpLnNsaWNlKDAsIGVuZC5vZmZzZXQpKTsKICAgICAgcmV0dXJuIGNsZWFuVGV4dCh0ZXh0LmpvaW4oIlxuIikpOwogICAgfSwKCiAgICAvLyBSZXBsYWNlIHRoZSBzZWxlY3Rpb24gd2l0aCBhbm90aGVyIHBpZWNlIG9mIHRleHQuCiAgICByZXBsYWNlU2VsZWN0aW9uOiBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHRoaXMuaGlzdG9yeS5jb21taXQoKTsKCiAgICAgIHZhciBzdGFydCA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHRydWUpLAogICAgICAgICAgZW5kID0gc2VsZWN0LmN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgZmFsc2UpOwogICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHJldHVybjsKCiAgICAgIGVuZCA9IHRoaXMucmVwbGFjZVJhbmdlKHN0YXJ0LCBlbmQsIHRleHQpOwogICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBlbmQpOwogICAgICB3ZWJraXRMYXN0TGluZUhhY2sodGhpcy5jb250YWluZXIpOwogICAgfSwKCiAgICBjdXJzb3JDb29yZHM6IGZ1bmN0aW9uKHN0YXJ0KSB7CiAgICAgIHZhciBzZWwgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBzdGFydCk7CiAgICAgIGlmICghc2VsKSByZXR1cm4gbnVsbDsKICAgICAgdmFyIG9mZiA9IHNlbC5vZmZzZXQsIG5vZGUgPSBzZWwubm9kZSwgc2VsZiA9IHRoaXM7CiAgICAgIGZ1bmN0aW9uIG1lYXN1cmVGcm9tTm9kZShub2RlLCB4T2Zmc2V0KSB7CiAgICAgICAgdmFyIHkgPSAtKGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgMCksCiAgICAgICAgICAgIHggPSAtKGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fCAwKSArIHhPZmZzZXQ7CiAgICAgICAgZm9yRWFjaChbbm9kZSwgd2luZG93LmZyYW1lRWxlbWVudF0sIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgIHdoaWxlIChuKSB7eCArPSBuLm9mZnNldExlZnQ7IHkgKz0gbi5vZmZzZXRUb3A7biA9IG4ub2Zmc2V0UGFyZW50O30KICAgICAgICB9KTsKICAgICAgICByZXR1cm4ge3g6IHgsIHk6IHksIHlCb3Q6IHkgKyBub2RlLm9mZnNldEhlaWdodH07CiAgICAgIH0KICAgICAgZnVuY3Rpb24gd2l0aFRlbXBOb2RlKHRleHQsIGYpIHsKICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTsKICAgICAgICBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKICAgICAgICB0cnkge3JldHVybiBmKG5vZGUpO30KICAgICAgICBmaW5hbGx5IHtpZiAobm9kZS5wYXJlbnROb2RlKSBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7fQogICAgICB9CgogICAgICB3aGlsZSAob2ZmKSB7CiAgICAgICAgbm9kZSA9IG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICB2YXIgdHh0ID0gbm9kZVRleHQobm9kZSk7CiAgICAgICAgaWYgKG9mZiA8IHR4dC5sZW5ndGgpCiAgICAgICAgICByZXR1cm4gd2l0aFRlbXBOb2RlKHR4dC5zdWJzdHIoMCwgb2ZmKSwgZnVuY3Rpb24odG1wKSB7CiAgICAgICAgICAgIHRtcC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7IHRtcC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgICAgIHRtcC5jbGFzc05hbWUgPSBub2RlLmNsYXNzTmFtZTsKICAgICAgICAgICAgc2VsZi5jb250YWluZXIuYXBwZW5kQ2hpbGQodG1wKTsKICAgICAgICAgICAgcmV0dXJuIG1lYXN1cmVGcm9tTm9kZShub2RlLCB0bXAub2Zmc2V0V2lkdGgpOwogICAgICAgICAgfSk7CiAgICAgICAgb2ZmIC09IHR4dC5sZW5ndGg7CiAgICAgIH0KICAgICAgaWYgKG5vZGUgJiYgaXNTcGFuKG5vZGUpKQogICAgICAgIHJldHVybiBtZWFzdXJlRnJvbU5vZGUobm9kZSwgbm9kZS5vZmZzZXRXaWR0aCk7CiAgICAgIGVsc2UgaWYgKG5vZGUgJiYgbm9kZS5uZXh0U2libGluZyAmJiBpc1NwYW4obm9kZS5uZXh0U2libGluZykpCiAgICAgICAgcmV0dXJuIG1lYXN1cmVGcm9tTm9kZShub2RlLm5leHRTaWJsaW5nLCAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiB3aXRoVGVtcE5vZGUoIlx1MjAwYiIsIGZ1bmN0aW9uKHRtcCkgewogICAgICAgICAgaWYgKG5vZGUpIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodG1wLCBub2RlLm5leHRTaWJsaW5nKTsKICAgICAgICAgIGVsc2Ugc2VsZi5jb250YWluZXIuaW5zZXJ0QmVmb3JlKHRtcCwgc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAgICAgICByZXR1cm4gbWVhc3VyZUZyb21Ob2RlKHRtcCwgMCk7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIHJlcm91dGVQYXN0ZUV2ZW50OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMuY2FwdHVyaW5nUGFzdGUgfHwgd2luZG93Lm9wZXJhKSByZXR1cm47CiAgICAgIHRoaXMuY2FwdHVyaW5nUGFzdGUgPSB0cnVlOwogICAgICB2YXIgdGUgPSB3aW5kb3cuZnJhbWVFbGVtZW50LkNvZGVNaXJyb3IudGV4dGFyZWFIYWNrOwogICAgICBwYXJlbnQuZm9jdXMoKTsKICAgICAgdGUudmFsdWUgPSAiIjsKICAgICAgdGUuZm9jdXMoKTsKCiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgdGhpcy5wYXJlbnQuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLmNhcHR1cmluZ1Bhc3RlID0gZmFsc2U7CiAgICAgICAgd2luZG93LmZvY3VzKCk7CiAgICAgICAgaWYgKHNlbGYuc2VsZWN0aW9uU25hcHNob3QpIC8vIElFIGhhY2sKICAgICAgICAgIHdpbmRvdy5zZWxlY3Quc2V0Qm9va21hcmsoc2VsZi5jb250YWluZXIsIHNlbGYuc2VsZWN0aW9uU25hcHNob3QpOwogICAgICAgIHZhciB0ZXh0ID0gdGUudmFsdWU7CiAgICAgICAgaWYgKHRleHQpIHsKICAgICAgICAgIHNlbGYucmVwbGFjZVNlbGVjdGlvbih0ZXh0KTsKICAgICAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcihzZWxmLmNvbnRhaW5lcik7CiAgICAgICAgfQogICAgICB9LCAxMCk7CiAgICB9LAoKICAgIHJlcGxhY2VSYW5nZTogZnVuY3Rpb24oZnJvbSwgdG8sIHRleHQpIHsKICAgICAgdmFyIGxpbmVzID0gYXNFZGl0b3JMaW5lcyh0ZXh0KTsKICAgICAgbGluZXNbMF0gPSB0aGlzLmhpc3RvcnkudGV4dEFmdGVyKGZyb20ubm9kZSkuc2xpY2UoMCwgZnJvbS5vZmZzZXQpICsgbGluZXNbMF07CiAgICAgIHZhciBsYXN0TGluZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdOwogICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9IGxhc3RMaW5lICsgdGhpcy5oaXN0b3J5LnRleHRBZnRlcih0by5ub2RlKS5zbGljZSh0by5vZmZzZXQpOwogICAgICB2YXIgZW5kID0gdGhpcy5oaXN0b3J5Lm5vZGVBZnRlcih0by5ub2RlKTsKICAgICAgdGhpcy5oaXN0b3J5LnB1c2goZnJvbS5ub2RlLCBlbmQsIGxpbmVzKTsKICAgICAgcmV0dXJuIHtub2RlOiB0aGlzLmhpc3Rvcnkubm9kZUJlZm9yZShlbmQpLAogICAgICAgICAgICAgIG9mZnNldDogbGFzdExpbmUubGVuZ3RofTsKICAgIH0sCgogICAgZ2V0U2VhcmNoQ3Vyc29yOiBmdW5jdGlvbihzdHJpbmcsIGZyb21DdXJzb3IsIGNhc2VGb2xkKSB7CiAgICAgIHJldHVybiBuZXcgU2VhcmNoQ3Vyc29yKHRoaXMsIHN0cmluZywgZnJvbUN1cnNvciwgY2FzZUZvbGQpOwogICAgfSwKCiAgICAvLyBSZS1pbmRlbnQgdGhlIHdob2xlIGJ1ZmZlcgogICAgcmVpbmRlbnQ6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkKICAgICAgICB0aGlzLmluZGVudFJlZ2lvbihudWxsLCB0aGlzLmNvbnRhaW5lci5sYXN0Q2hpbGQpOwogICAgfSwKCiAgICByZWluZGVudFNlbGVjdGlvbjogZnVuY3Rpb24oZGlyZWN0aW9uKSB7CiAgICAgIGlmICghc2VsZWN0LnNvbWV0aGluZ1NlbGVjdGVkKCkpIHsKICAgICAgICB0aGlzLmluZGVudEF0Q3Vyc29yKGRpcmVjdGlvbik7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgdmFyIHN0YXJ0ID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIHRydWUpLAogICAgICAgICAgICBlbmQgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgZmFsc2UpOwogICAgICAgIGlmIChzdGFydCA9PT0gZmFsc2UgfHwgZW5kID09PSBmYWxzZSkgcmV0dXJuOwogICAgICAgIHRoaXMuaW5kZW50UmVnaW9uKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiAgICAgIH0KICAgIH0sCgogICAgZ3JhYktleXM6IGZ1bmN0aW9uKGV2ZW50SGFuZGxlciwgZmlsdGVyKSB7CiAgICAgIHRoaXMuZnJvemVuID0gZXZlbnRIYW5kbGVyOwogICAgICB0aGlzLmtleUZpbHRlciA9IGZpbHRlcjsKICAgIH0sCiAgICB1bmdyYWJLZXlzOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5mcm96ZW4gPSAibGVhdmUiOwogICAgfSwKCiAgICBzZXRQYXJzZXI6IGZ1bmN0aW9uKG5hbWUsIHBhcnNlckNvbmZpZykgewogICAgICBFZGl0b3IuUGFyc2VyID0gd2luZG93W25hbWVdOwogICAgICBwYXJzZXJDb25maWcgPSBwYXJzZXJDb25maWcgfHwgdGhpcy5vcHRpb25zLnBhcnNlckNvbmZpZzsKICAgICAgaWYgKHBhcnNlckNvbmZpZyAmJiBFZGl0b3IuUGFyc2VyLmNvbmZpZ3VyZSkKICAgICAgICBFZGl0b3IuUGFyc2VyLmNvbmZpZ3VyZShwYXJzZXJDb25maWcpOwoKICAgICAgaWYgKHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpIHsKICAgICAgICBmb3JFYWNoKHRoaXMuY29udGFpbmVyLmNoaWxkTm9kZXMsIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgIGlmIChuLm5vZGVUeXBlICE9IDMpIG4uZGlydHkgPSB0cnVlOwogICAgICAgIH0pOwogICAgICAgIHRoaXMuYWRkRGlydHlOb2RlKHRoaXMuZmlyc3RDaGlsZCk7CiAgICAgICAgdGhpcy5zY2hlZHVsZUhpZ2hsaWdodCgpOwogICAgICB9CiAgICB9LAoKICAgIC8vIEludGVyY2VwdCBlbnRlciBhbmQgdGFiLCBhbmQgYXNzaWduIHRoZWlyIG5ldyBmdW5jdGlvbnMuCiAgICBrZXlEb3duOiBmdW5jdGlvbihldmVudCkgewogICAgICBpZiAodGhpcy5mcm96ZW4gPT0gImxlYXZlIikge3RoaXMuZnJvemVuID0gbnVsbDsgdGhpcy5rZXlGaWx0ZXIgPSBudWxsO30KICAgICAgaWYgKHRoaXMuZnJvemVuICYmICghdGhpcy5rZXlGaWx0ZXIgfHwgdGhpcy5rZXlGaWx0ZXIoZXZlbnQua2V5Q29kZSwgZXZlbnQpKSkgewogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICB0aGlzLmZyb3plbihldmVudCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgY29kZSA9IGV2ZW50LmtleUNvZGU7CiAgICAgIC8vIERvbid0IHNjYW4gd2hlbiB0aGUgdXNlciBpcyB0eXBpbmcuCiAgICAgIHRoaXMuZGVsYXlTY2FubmluZygpOwogICAgICAvLyBTY2hlZHVsZSBhIHBhcmVuLWhpZ2hsaWdodCBldmVudCwgaWYgY29uZmlndXJlZC4KICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvTWF0Y2hQYXJlbnMpCiAgICAgICAgdGhpcy5zY2hlZHVsZVBhcmVuSGlnaGxpZ2h0KCk7CgogICAgICAvLyBUaGUgdmFyaW91cyBjaGVja3MgZm9yICFhbHRLZXkgYXJlIHRoZXJlIGJlY2F1c2UgQWx0R3Igc2V0cyBib3RoCiAgICAgIC8vIGN0cmxLZXkgYW5kIGFsdEtleSB0byB0cnVlLCBhbmQgc2hvdWxkIG5vdCBiZSByZWNvZ25pc2VkIGFzCiAgICAgIC8vIENvbnRyb2wuCiAgICAgIGlmIChjb2RlID09IDEzKSB7IC8vIGVudGVyCiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleSkgewogICAgICAgICAgdGhpcy5yZXBhcnNlQnVmZmVyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgc2VsZWN0Lmluc2VydE5ld2xpbmVBdEN1cnNvcigpOwogICAgICAgICAgdmFyIG1vZGUgPSB0aGlzLm9wdGlvbnMuZW50ZXJNb2RlOwogICAgICAgICAgaWYgKG1vZGUgIT0gImZsYXQiKSB0aGlzLmluZGVudEF0Q3Vyc29yKG1vZGUgPT0gImtlZXAiID8gImtlZXAiIDogdW5kZWZpbmVkKTsKICAgICAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmNvbnRhaW5lcik7CiAgICAgICAgfQogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChjb2RlID09IDkgJiYgdGhpcy5vcHRpb25zLnRhYk1vZGUgIT0gImRlZmF1bHQiICYmICFldmVudC5jdHJsS2V5KSB7IC8vIHRhYgogICAgICAgIHRoaXMuaGFuZGxlVGFiKCFldmVudC5zaGlmdEtleSk7CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gMzIgJiYgZXZlbnQuc2hpZnRLZXkgJiYgdGhpcy5vcHRpb25zLnRhYk1vZGUgPT0gImRlZmF1bHQiKSB7IC8vIHNwYWNlCiAgICAgICAgdGhpcy5oYW5kbGVUYWIodHJ1ZSk7CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gMzYgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5KSB7IC8vIGhvbWUKICAgICAgICBpZiAodGhpcy5ob21lKCkpIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChjb2RlID09IDM1ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSkgeyAvLyBlbmQKICAgICAgICBpZiAodGhpcy5lbmQoKSkgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIC8vIE9ubHkgaW4gRmlyZWZveCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgUGdVcC9QZ0RuIGNvcnJlY3QuCiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gMzMgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFnZWNrbykgeyAvLyBQZ1VwCiAgICAgICAgaWYgKHRoaXMucGFnZVVwKCkpIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChjb2RlID09IDM0ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZ2Vja28pIHsgIC8vIFBnRG4KICAgICAgICBpZiAodGhpcy5wYWdlRG93bigpKSBldmVudC5zdG9wKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoKGNvZGUgPT0gMjE5IHx8IGNvZGUgPT0gMjIxKSAmJiBldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXkpIHsgLy8gWywgXQogICAgICAgIHRoaXMuaGlnaGxpZ2h0UGFyZW5zKGV2ZW50LnNoaWZ0S2V5LCB0cnVlKTsKICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgKGNvZGUgPT0gMzcgfHwgY29kZSA9PSAzOSkpIHsgLy8gTWV0YS1sZWZ0L3JpZ2h0CiAgICAgICAgdmFyIGN1cnNvciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyKTsKICAgICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSB8fCAhdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkgcmV0dXJuOwoKICAgICAgICBpZiAoY29kZSA9PSAzNykgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKHN0YXJ0T2ZMaW5lKGN1cnNvciksIHRoaXMuY29udGFpbmVyKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgIHZhciBlbmQgPSBlbmRPZkxpbmUoY3Vyc29yLCB0aGlzLmNvbnRhaW5lcik7CiAgICAgICAgICBzZWxlY3QuZm9jdXNBZnRlck5vZGUoZW5kID8gZW5kLnByZXZpb3VzU2libGluZyA6IHRoaXMuY29udGFpbmVyLmxhc3RDaGlsZCwgdGhpcy5jb250YWluZXIpOwogICAgICAgIH0KICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgIWV2ZW50LmFsdEtleSkgewogICAgICAgIGlmICgoZXZlbnQuc2hpZnRLZXkgJiYgY29kZSA9PSA5MCkgfHwgY29kZSA9PSA4OSkgeyAvLyBzaGlmdC1aLCBZCiAgICAgICAgICBzZWxlY3Quc2Nyb2xsVG9Ob2RlKHRoaXMuaGlzdG9yeS5yZWRvKCkpOwogICAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjb2RlID09IDkwIHx8IChzYWZhcmkgJiYgY29kZSA9PSA4KSkgeyAvLyBaLCBiYWNrc3BhY2UKICAgICAgICAgIHNlbGVjdC5zY3JvbGxUb05vZGUodGhpcy5oaXN0b3J5LnVuZG8oKSk7CiAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gODMgJiYgdGhpcy5vcHRpb25zLnNhdmVGdW5jdGlvbikgeyAvLyBTCiAgICAgICAgICB0aGlzLm9wdGlvbnMuc2F2ZUZ1bmN0aW9uKCk7CiAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gODYgJiYgIW1hYykgeyAvLyBWCiAgICAgICAgICB0aGlzLnJlcm91dGVQYXN0ZUV2ZW50KCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8vIENoZWNrIGZvciBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIHJlLWluZGVudCB0aGUgY3VycmVudCBsaW5lLAogICAgLy8gYW5kIHByZXZlbnQgT3BlcmEgZnJvbSBoYW5kbGluZyBlbnRlciBhbmQgdGFiIGFueXdheS4KICAgIGtleVByZXNzOiBmdW5jdGlvbihldmVudCkgewogICAgICB2YXIgZWxlY3RyaWMgPSB0aGlzLm9wdGlvbnMuZWxlY3RyaWNDaGFycyAmJiBFZGl0b3IuUGFyc2VyLmVsZWN0cmljQ2hhcnMsIHNlbGYgPSB0aGlzOwogICAgICAvLyBIYWNrIGZvciBPcGVyYSwgYW5kIEZpcmVmb3ggb24gT1MgWCwgaW4gd2hpY2ggc3RvcHBpbmcgYQogICAgICAvLyBrZXlkb3duIGV2ZW50IGRvZXMgbm90IHByZXZlbnQgdGhlIGFzc29jaWF0ZWQga2V5cHJlc3MgZXZlbnQKICAgICAgLy8gZnJvbSBoYXBwZW5pbmcsIHNvIHdlIGhhdmUgdG8gY2FuY2VsIGVudGVyIGFuZCB0YWIgYWdhaW4KICAgICAgLy8gaGVyZS4KICAgICAgaWYgKCh0aGlzLmZyb3plbiAmJiAoIXRoaXMua2V5RmlsdGVyIHx8IHRoaXMua2V5RmlsdGVyKGV2ZW50LmtleUNvZGUgfHwgZXZlbnQuY29kZSwgZXZlbnQpKSkgfHwKICAgICAgICAgIGV2ZW50LmNvZGUgPT0gMTMgfHwgKGV2ZW50LmNvZGUgPT0gOSAmJiB0aGlzLm9wdGlvbnMudGFiTW9kZSAhPSAiZGVmYXVsdCIpIHx8CiAgICAgICAgICAoZXZlbnQuY29kZSA9PSAzMiAmJiBldmVudC5zaGlmdEtleSAmJiB0aGlzLm9wdGlvbnMudGFiTW9kZSA9PSAiZGVmYXVsdCIpKQogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgZWxzZSBpZiAobWFjICYmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmNoYXJhY3RlciA9PSAidiIpIHsKICAgICAgICB0aGlzLnJlcm91dGVQYXN0ZUV2ZW50KCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoZWxlY3RyaWMgJiYgZWxlY3RyaWMuaW5kZXhPZihldmVudC5jaGFyYWN0ZXIpICE9IC0xKQogICAgICAgIHRoaXMucGFyZW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzZWxmLmluZGVudEF0Q3Vyc29yKG51bGwpO30sIDApOwogICAgICAvLyBXb3JrIGFyb3VuZCBhIGJ1ZyB3aGVyZSBwcmVzc2luZyBiYWNrc3BhY2UgYXQgdGhlIGVuZCBvZiBhCiAgICAgIC8vIGxpbmUsIG9yIGRlbGV0ZSBhdCB0aGUgc3RhcnQsIG9mdGVuIGNhdXNlcyB0aGUgY3Vyc29yIHRvIGp1bXAKICAgICAgLy8gdG8gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGluIE9wZXJhIDEwLjYwLgogICAgICBlbHNlIGlmIChicm9rZW5PcGVyYSkgewogICAgICAgIGlmIChldmVudC5jb2RlID09IDgpIHsgLy8gYmFja3NwYWNlCiAgICAgICAgICB2YXIgc2VsID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIpLCBzZWxmID0gdGhpcywKICAgICAgICAgICAgICBuZXh0ID0gc2VsID8gc2VsLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgIGlmIChzZWwgIT09IGZhbHNlICYmIG5leHQgJiYgaXNCUihuZXh0KSkKICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgIGlmIChzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZShzZWxmLmNvbnRhaW5lcikgPT0gbmV4dCkKICAgICAgICAgICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShuZXh0LnByZXZpb3VzU2libGluZywgc2VsZi5jb250YWluZXIpOwogICAgICAgICAgICB9LCAyMCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGV2ZW50LmNvZGUgPT0gNDYpIHsgLy8gZGVsZXRlCiAgICAgICAgICB2YXIgc2VsID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIpLCBzZWxmID0gdGhpczsKICAgICAgICAgIGlmIChzZWwgJiYgaXNCUihzZWwpKSB7CiAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICBpZiAoc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUoc2VsZi5jb250YWluZXIpICE9IHNlbCkKICAgICAgICAgICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShzZWwsIHNlbGYuY29udGFpbmVyKTsKICAgICAgICAgICAgfSwgMjApOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICAvLyBJbiA1MzMuKiBXZWJLaXQgdmVyc2lvbnMsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGJpZywgdHlwaW5nCiAgICAgIC8vIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGEgbGluZSBjYXVzZXMgdGhlIGJyb3dzZXIgdG8gZG8gc29tZQogICAgICAvLyBraW5kIG9mIHN0dXBpZCBoZWF2eSBvcGVyYXRpb24sIGNyZWF0aW5nIGRlbGF5cyBvZiBzZXZlcmFsCiAgICAgIC8vIHNlY29uZHMgYmVmb3JlIHRoZSB0eXBlZCBjaGFyYWN0ZXJzIGFwcGVhci4gVGhpcyB2ZXJ5IGNydWRlCiAgICAgIC8vIGhhY2sgaW5zZXJ0cyBhIHRlbXBvcmFyeSB6ZXJvLXdpZHRoIHNwYWNlIGFmdGVyIHRoZSBjdXJzb3IgdG8KICAgICAgLy8gbWFrZSBpdCBub3QgYmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KICAgICAgZWxzZSBpZiAoc2xvd1dlYmtpdCkgewogICAgICAgIHZhciBzZWwgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciksCiAgICAgICAgICAgIG5leHQgPSBzZWwgPyBzZWwubmV4dFNpYmxpbmcgOiB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICAgIC8vIERvZXNuJ3Qgd29yayBvbiBlbXB0eSBsaW5lcywgZm9yIHNvbWUgcmVhc29uIHRob3NlIGFsd2F5cwogICAgICAgIC8vIHRyaWdnZXIgdGhlIGRlbGF5LgogICAgICAgIGlmIChzZWwgJiYgbmV4dCAmJiBpc0JSKG5leHQpICYmICFpc0JSKHNlbCkpIHsKICAgICAgICAgIHZhciBjaGVhdCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcdTIwMGIiKTsKICAgICAgICAgIHRoaXMuY29udGFpbmVyLmluc2VydEJlZm9yZShjaGVhdCwgbmV4dCk7CiAgICAgICAgICB0aGlzLnBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoY2hlYXQubm9kZVZhbHVlID09ICJcdTIwMGIiKSByZW1vdmVFbGVtZW50KGNoZWF0KTsKICAgICAgICAgICAgZWxzZSBjaGVhdC5ub2RlVmFsdWUgPSBjaGVhdC5ub2RlVmFsdWUucmVwbGFjZSgiXHUyMDBiIiwgIiIpOwogICAgICAgICAgfSwgMjApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAvLyBNYXJrIHRoZSBub2RlIGF0IHRoZSBjdXJzb3IgZGlydHkgd2hlbiBhIG5vbi1zYWZlIGtleSBpcwogICAgLy8gcmVsZWFzZWQuCiAgICBrZXlVcDogZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgdGhpcy5jdXJzb3JBY3Rpdml0eShpc1NhZmVLZXkoZXZlbnQua2V5Q29kZSkpOwogICAgfSwKCiAgICAvLyBJbmRlbnQgdGhlIGxpbmUgZm9sbG93aW5nIGEgZ2l2ZW4gPGJyPiwgb3IgbnVsbCBmb3IgdGhlIGZpcnN0CiAgICAvLyBsaW5lLiBJZiBnaXZlbiBhIDxicj4gZWxlbWVudCwgdGhpcyBtdXN0IGhhdmUgYmVlbiBoaWdobGlnaHRlZAogICAgLy8gc28gdGhhdCBpdCBoYXMgYW4gaW5kZW50YXRpb24gbWV0aG9kLiBSZXR1cm5zIHRoZSB3aGl0ZXNwYWNlCiAgICAvLyBlbGVtZW50IHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgY3JlYXRlZCAoaWYgYW55KS4KICAgIGluZGVudExpbmVBZnRlcjogZnVuY3Rpb24oc3RhcnQsIGRpcmVjdGlvbikgewogICAgICBmdW5jdGlvbiB3aGl0ZVNwYWNlQWZ0ZXIobm9kZSkgewogICAgICAgIHZhciB3cyA9IG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICBpZiAoIXdzIHx8ICFoYXNDbGFzcyh3cywgIndoaXRlc3BhY2UiKSkgcmV0dXJuIG51bGw7CiAgICAgICAgcmV0dXJuIHdzOwogICAgICB9CgogICAgICAvLyB3aGl0ZVNwYWNlIGlzIHRoZSB3aGl0ZXNwYWNlIHNwYW4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLAogICAgICAvLyBvciBudWxsIGlmIHRoZXJlIGlzIG5vIHN1Y2ggbm9kZS4KICAgICAgdmFyIHNlbGYgPSB0aGlzLCB3aGl0ZVNwYWNlID0gd2hpdGVTcGFjZUFmdGVyKHN0YXJ0KTsKICAgICAgdmFyIG5ld0luZGVudCA9IDAsIGN1ckluZGVudCA9IHdoaXRlU3BhY2UgPyB3aGl0ZVNwYWNlLmN1cnJlbnRUZXh0Lmxlbmd0aCA6IDA7CgogICAgICBpZiAoZGlyZWN0aW9uID09ICJrZWVwIikgewogICAgICAgIGlmIChzdGFydCkgewogICAgICAgICAgdmFyIHByZXZXUyA9IHdoaXRlU3BhY2VBZnRlcihzdGFydE9mTGluZShzdGFydC5wcmV2aW91c1NpYmxpbmcpKQogICAgICAgICAgaWYgKHByZXZXUykgbmV3SW5kZW50ID0gcHJldldTLmN1cnJlbnRUZXh0Lmxlbmd0aDsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgLy8gU29tZXRpbWVzIHRoZSBzdGFydCBvZiB0aGUgbGluZSBjYW4gaW5mbHVlbmNlIHRoZSBjb3JyZWN0CiAgICAgICAgLy8gaW5kZW50YXRpb24sIHNvIHdlIHJldHJpZXZlIGl0LgogICAgICAgIHZhciBmaXJzdFRleHQgPSB3aGl0ZVNwYWNlID8gd2hpdGVTcGFjZS5uZXh0U2libGluZyA6IChzdGFydCA/IHN0YXJ0Lm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAgICAgdmFyIG5leHRDaGFycyA9IChzdGFydCAmJiBmaXJzdFRleHQgJiYgZmlyc3RUZXh0LmN1cnJlbnRUZXh0KSA/IGZpcnN0VGV4dC5jdXJyZW50VGV4dCA6ICIiOwoKICAgICAgICAvLyBBc2sgdGhlIGxleGljYWwgY29udGV4dCBmb3IgdGhlIGNvcnJlY3QgaW5kZW50YXRpb24sIGFuZAogICAgICAgIC8vIGNvbXB1dGUgaG93IG11Y2ggdGhpcyBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgaW5kZW50YXRpb24uCiAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSBudWxsICYmIHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJzaGlmdCIpCiAgICAgICAgICBuZXdJbmRlbnQgPSBkaXJlY3Rpb24gPyBjdXJJbmRlbnQgKyBpbmRlbnRVbml0IDogTWF0aC5tYXgoMCwgY3VySW5kZW50IC0gaW5kZW50VW5pdCkKICAgICAgICBlbHNlIGlmIChzdGFydCkKICAgICAgICAgIG5ld0luZGVudCA9IHN0YXJ0LmluZGVudGF0aW9uKG5leHRDaGFycywgY3VySW5kZW50LCBkaXJlY3Rpb24pOwogICAgICAgIGVsc2UgaWYgKEVkaXRvci5QYXJzZXIuZmlyc3RJbmRlbnRhdGlvbikKICAgICAgICAgIG5ld0luZGVudCA9IEVkaXRvci5QYXJzZXIuZmlyc3RJbmRlbnRhdGlvbihuZXh0Q2hhcnMsIGN1ckluZGVudCwgZGlyZWN0aW9uKTsKICAgICAgfQogICAgICAKICAgICAgdmFyIGluZGVudERpZmYgPSBuZXdJbmRlbnQgLSBjdXJJbmRlbnQ7CgogICAgICAvLyBJZiB0aGVyZSBpcyB0b28gbXVjaCwgdGhpcyBpcyBqdXN0IGEgbWF0dGVyIG9mIHNocmlua2luZyBhIHNwYW4uCiAgICAgIGlmIChpbmRlbnREaWZmIDwgMCkgewogICAgICAgIGlmIChuZXdJbmRlbnQgPT0gMCkgewogICAgICAgICAgaWYgKGZpcnN0VGV4dCkgc2VsZWN0LnNuYXBzaG90TW92ZSh3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQsIGZpcnN0VGV4dC5maXJzdENoaWxkIHx8IGZpcnN0VGV4dCwgMCk7CiAgICAgICAgICByZW1vdmVFbGVtZW50KHdoaXRlU3BhY2UpOwogICAgICAgICAgd2hpdGVTcGFjZSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgc2VsZWN0LnNuYXBzaG90TW92ZSh3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQsIHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgaW5kZW50RGlmZiwgdHJ1ZSk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmN1cnJlbnRUZXh0ID0gbWFrZVdoaXRlU3BhY2UobmV3SW5kZW50KTsKICAgICAgICAgIHdoaXRlU3BhY2UuZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSB3aGl0ZVNwYWNlLmN1cnJlbnRUZXh0OwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBOb3QgZW5vdWdoLi4uCiAgICAgIGVsc2UgaWYgKGluZGVudERpZmYgPiAwKSB7CiAgICAgICAgLy8gSWYgdGhlcmUgaXMgd2hpdGVzcGFjZSwgd2UgZ3JvdyBpdC4KICAgICAgICBpZiAod2hpdGVTcGFjZSkgewogICAgICAgICAgd2hpdGVTcGFjZS5jdXJyZW50VGV4dCA9IG1ha2VXaGl0ZVNwYWNlKG5ld0luZGVudCk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gd2hpdGVTcGFjZS5jdXJyZW50VGV4dDsKICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdE1vdmUod2hpdGVTcGFjZS5maXJzdENoaWxkLCB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQsIGluZGVudERpZmYsIHRydWUpOwogICAgICAgIH0KICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGhhdmUgdG8gYWRkIGEgbmV3IHdoaXRlc3BhY2Ugbm9kZS4KICAgICAgICBlbHNlIHsKICAgICAgICAgIHdoaXRlU3BhY2UgPSBtYWtlUGFydFNwYW4obWFrZVdoaXRlU3BhY2UobmV3SW5kZW50KSk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmNsYXNzTmFtZSA9ICJ3aGl0ZXNwYWNlIjsKICAgICAgICAgIGlmIChzdGFydCkgaW5zZXJ0QWZ0ZXIod2hpdGVTcGFjZSwgc3RhcnQpOwogICAgICAgICAgZWxzZSB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUod2hpdGVTcGFjZSwgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAgICAgICBzZWxlY3Quc25hcHNob3RNb3ZlKGZpcnN0VGV4dCAmJiAoZmlyc3RUZXh0LmZpcnN0Q2hpbGQgfHwgZmlyc3RUZXh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZS5maXJzdENoaWxkLCBuZXdJbmRlbnQsIGZhbHNlLCB0cnVlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gTWFrZSBzdXJlIGN1cnNvciBlbmRzIHVwIGFmdGVyIHRoZSB3aGl0ZXNwYWNlCiAgICAgIGVsc2UgaWYgKHdoaXRlU3BhY2UpIHsKCXNlbGVjdC5zbmFwc2hvdE1vdmUod2hpdGVTcGFjZS5maXJzdENoaWxkLCB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQsIG5ld0luZGVudCwgZmFsc2UpOwogICAgICB9CiAgICAgIGlmIChpbmRlbnREaWZmICE9IDApIHRoaXMuYWRkRGlydHlOb2RlKHN0YXJ0KTsKICAgIH0sCgogICAgLy8gUmUtaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBwYXJ0IG9mIHRoZSBkb2N1bWVudC4KICAgIGhpZ2hsaWdodEF0Q3Vyc29yOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIHBvcyA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCB0cnVlKTsKICAgICAgdmFyIHRvID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgaWYgKHBvcyA9PT0gZmFsc2UgfHwgdG8gPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CgogICAgICBzZWxlY3QubWFya1NlbGVjdGlvbigpOwogICAgICBpZiAodGhpcy5oaWdobGlnaHQocG9zLCBlbmRPZkxpbmUodG8sIHRoaXMuY29udGFpbmVyKSwgdHJ1ZSwgMjApID09PSBmYWxzZSkKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAoKICAgIC8vIFdoZW4gdGFiIGlzIHByZXNzZWQgd2l0aCB0ZXh0IHNlbGVjdGVkLCB0aGUgd2hvbGUgc2VsZWN0aW9uIGlzCiAgICAvLyByZS1pbmRlbnRlZCwgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLCB0aGUgbGluZSB3aXRoIHRoZSBjdXJzb3IKICAgIC8vIGlzIHJlLWluZGVudGVkLgogICAgaGFuZGxlVGFiOiBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgaWYgKHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJzcGFjZXMiKQogICAgICAgIHNlbGVjdC5pbnNlcnRUYWJBdEN1cnNvcigpOwogICAgICBlbHNlCiAgICAgICAgdGhpcy5yZWluZGVudFNlbGVjdGlvbihkaXJlY3Rpb24pOwogICAgfSwKCiAgICAvLyBDdXN0b20gaG9tZSBiZWhhdmlvdXIgdGhhdCBkb2Vzbid0IGxhbmQgdGhlIGN1cnNvciBpbiBmcm9udCBvZgogICAgLy8gbGVhZGluZyB3aGl0ZXNwYWNlIHVubGVzcyBwcmVzc2VkIHR3aWNlLgogICAgaG9tZTogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjdXIgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSksIHN0YXJ0ID0gY3VyOwogICAgICBpZiAoY3VyID09PSBmYWxzZSB8fCAhKCFjdXIgfHwgY3VyLmlzUGFydCB8fCBpc0JSKGN1cikpIHx8ICF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIHdoaWxlIChjdXIgJiYgIWlzQlIoY3VyKSkgY3VyID0gY3VyLnByZXZpb3VzU2libGluZzsKICAgICAgdmFyIG5leHQgPSBjdXIgPyBjdXIubmV4dFNpYmxpbmcgOiB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICBpZiAobmV4dCAmJiBuZXh0ICE9IHN0YXJ0ICYmIG5leHQuaXNQYXJ0ICYmIGhhc0NsYXNzKG5leHQsICJ3aGl0ZXNwYWNlIikpCiAgICAgICAgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKG5leHQsIHRoaXMuY29udGFpbmVyKTsKICAgICAgZWxzZQogICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShjdXIsIHRoaXMuY29udGFpbmVyKTsKCiAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmNvbnRhaW5lcik7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKCiAgICAvLyBTb21lIGJyb3dzZXJzIChPcGVyYSkgZG9uJ3QgbWFuYWdlIHRvIGhhbmRsZSB0aGUgZW5kIGtleQogICAgLy8gcHJvcGVybHkgaW4gdGhlIGZhY2Ugb2YgdmVydGljYWwgc2Nyb2xsaW5nLgogICAgZW5kOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIGN1ciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCB0cnVlKTsKICAgICAgaWYgKGN1ciA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTsKICAgICAgY3VyID0gZW5kT2ZMaW5lKGN1ciwgdGhpcy5jb250YWluZXIpOwogICAgICBpZiAoIWN1cikgcmV0dXJuIGZhbHNlOwogICAgICBzZWxlY3QuZm9jdXNBZnRlck5vZGUoY3VyLnByZXZpb3VzU2libGluZywgdGhpcy5jb250YWluZXIpOwogICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3IodGhpcy5jb250YWluZXIpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCgogICAgcGFnZVVwOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIGxpbmUgPSB0aGlzLmN1cnNvclBvc2l0aW9uKCkubGluZSwgc2Nyb2xsQW1vdW50ID0gdGhpcy52aXNpYmxlTGluZUNvdW50KCk7CiAgICAgIGlmIChsaW5lID09PSBmYWxzZSB8fCBzY3JvbGxBbW91bnQgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CiAgICAgIC8vIFRyeSB0byBrZWVwIG9uZSBsaW5lIG9uIHRoZSBzY3JlZW4uCiAgICAgIHNjcm9sbEFtb3VudCAtPSAyOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcm9sbEFtb3VudDsgaSsrKSB7CiAgICAgICAgbGluZSA9IHRoaXMucHJldkxpbmUobGluZSk7CiAgICAgICAgaWYgKGxpbmUgPT09IGZhbHNlKSBicmVhazsKICAgICAgfQogICAgICBpZiAoaSA9PSAwKSByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYXQgZmlyc3QgbGluZQogICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB7bm9kZTogbGluZSwgb2Zmc2V0OiAwfSk7CiAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmNvbnRhaW5lcik7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKCiAgICBwYWdlRG93bjogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBsaW5lID0gdGhpcy5jdXJzb3JQb3NpdGlvbigpLmxpbmUsIHNjcm9sbEFtb3VudCA9IHRoaXMudmlzaWJsZUxpbmVDb3VudCgpOwogICAgICBpZiAobGluZSA9PT0gZmFsc2UgfHwgc2Nyb2xsQW1vdW50ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOwogICAgICAvLyBUcnkgdG8gbW92ZSB0byB0aGUgbGFzdCBsaW5lIG9mIHRoZSBjdXJyZW50IHBhZ2UuCiAgICAgIHNjcm9sbEFtb3VudCAtPSAyOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcm9sbEFtb3VudDsgaSsrKSB7CiAgICAgICAgdmFyIG5leHRMaW5lID0gdGhpcy5uZXh0TGluZShsaW5lKTsKICAgICAgICBpZiAobmV4dExpbmUgPT09IGZhbHNlKSBicmVhazsKICAgICAgICBsaW5lID0gbmV4dExpbmU7CiAgICAgIH0KICAgICAgaWYgKGkgPT0gMCkgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGF0IGxhc3QgbGluZQogICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB7bm9kZTogbGluZSwgb2Zmc2V0OiAwfSk7CiAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmNvbnRhaW5lcik7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKCiAgICAvLyBEZWxheSAob3IgaW5pdGlhdGUpIHRoZSBuZXh0IHBhcmVuIGhpZ2hsaWdodCBldmVudC4KICAgIHNjaGVkdWxlUGFyZW5IaWdobGlnaHQ6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5wYXJlbkV2ZW50KSB0aGlzLnBhcmVudC5jbGVhclRpbWVvdXQodGhpcy5wYXJlbkV2ZW50KTsKICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICB0aGlzLnBhcmVuRXZlbnQgPSB0aGlzLnBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2VsZi5oaWdobGlnaHRQYXJlbnMoKTt9LCAzMDApOwogICAgfSwKCiAgICAvLyBUYWtlIHRoZSB0b2tlbiBiZWZvcmUgdGhlIGN1cnNvci4gSWYgaXQgY29udGFpbnMgYSBjaGFyYWN0ZXIgaW4KICAgIC8vICcoKVtde30nLCBzZWFyY2ggZm9yIHRoZSBtYXRjaGluZyBwYXJlbi9icmFjZS9icmFja2V0LCBhbmQKICAgIC8vIGhpZ2hsaWdodCB0aGVtIGluIGdyZWVuIGZvciBhIG1vbWVudCwgb3IgcmVkIGlmIG5vIHByb3BlciBtYXRjaAogICAgLy8gd2FzIGZvdW5kLgogICAgaGlnaGxpZ2h0UGFyZW5zOiBmdW5jdGlvbihqdW1wLCBmcm9tS2V5KSB7CiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgLy8gZ2l2ZSB0aGUgcmVsZXZhbnQgbm9kZXMgYSBjb2xvdXIuCiAgICAgIGZ1bmN0aW9uIGhpZ2hsaWdodChub2RlLCBvaykgewogICAgICAgIGlmICghbm9kZSkgcmV0dXJuOwogICAgICAgIGlmIChzZWxmLm9wdGlvbnMubWFya1BhcmVuKSB7CiAgICAgICAgICBzZWxmLm9wdGlvbnMubWFya1BhcmVuKG5vZGUsIG9rKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBub2RlLnN0eWxlLmZvbnRXZWlnaHQgPSAiYm9sZCI7CiAgICAgICAgICBub2RlLnN0eWxlLmNvbG9yID0gb2sgPyAiIzhGOCIgOiAiI0Y4OCI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIHVuaGlnaGxpZ2h0KG5vZGUpIHsKICAgICAgICBpZiAoIW5vZGUpIHJldHVybjsKICAgICAgICBpZiAoc2VsZi5vcHRpb25zLnVubWFya1BhcmVuKSB7CiAgICAgICAgICBzZWxmLm9wdGlvbnMudW5tYXJrUGFyZW4obm9kZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgbm9kZS5zdHlsZS5mb250V2VpZ2h0ID0gIiI7CiAgICAgICAgICBub2RlLnN0eWxlLmNvbG9yID0gIiI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghZnJvbUtleSAmJiBzZWxmLmhpZ2hsaWdodGVkKSB7CiAgICAgICAgdW5oaWdobGlnaHQoc2VsZi5oaWdobGlnaHRlZFswXSk7CiAgICAgICAgdW5oaWdobGlnaHQoc2VsZi5oaWdobGlnaHRlZFsxXSk7CiAgICAgIH0KCiAgICAgIGlmICghd2luZG93LnBhcmVudCB8fCAhd2luZG93LnNlbGVjdCkgcmV0dXJuOwogICAgICAvLyBDbGVhciB0aGUgZXZlbnQgcHJvcGVydHkuCiAgICAgIGlmICh0aGlzLnBhcmVuRXZlbnQpIHRoaXMucGFyZW50LmNsZWFyVGltZW91dCh0aGlzLnBhcmVuRXZlbnQpOwogICAgICB0aGlzLnBhcmVuRXZlbnQgPSBudWxsOwoKICAgICAgLy8gRXh0cmFjdCBhICdwYXJlbicgZnJvbSBhIHBpZWNlIG9mIHRleHQuCiAgICAgIGZ1bmN0aW9uIHBhcmVuKG5vZGUpIHsKICAgICAgICBpZiAobm9kZS5jdXJyZW50VGV4dCkgewogICAgICAgICAgdmFyIG1hdGNoID0gbm9kZS5jdXJyZW50VGV4dC5tYXRjaCgvXltcc1x1MDBhMF0qKFtcKFwpXFtcXXt9XSlbXHNcdTAwYTBdKiQvKTsKICAgICAgICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkaXJlY3Rpb24gYSBwYXJlbiBpcyBmYWNpbmcuCiAgICAgIGZ1bmN0aW9uIGZvcndhcmQoY2gpIHsKICAgICAgICByZXR1cm4gL1tcKFxbXHtdLy50ZXN0KGNoKTsKICAgICAgfQoKICAgICAgdmFyIGNoLCBjdXJzb3IgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSk7CiAgICAgIGlmICghY3Vyc29yIHx8ICF0aGlzLmhpZ2hsaWdodEF0Q3Vyc29yKCkpIHJldHVybjsKICAgICAgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIHRydWUpOwogICAgICBpZiAoIShjdXJzb3IgJiYgKChjaCA9IHBhcmVuKGN1cnNvcikpIHx8IChjdXJzb3IgPSBjdXJzb3IubmV4dFNpYmxpbmcpICYmIChjaCA9IHBhcmVuKGN1cnNvcikpKSkpCiAgICAgICAgcmV0dXJuOwogICAgICAvLyBXZSBvbmx5IGxvb2sgZm9yIHRva2VucyB3aXRoIHRoZSBzYW1lIGNsYXNzTmFtZS4KICAgICAgdmFyIGNsYXNzTmFtZSA9IGN1cnNvci5jbGFzc05hbWUsIGRpciA9IGZvcndhcmQoY2gpLCBtYXRjaCA9IG1hdGNoaW5nW2NoXTsKCiAgICAgIC8vIFNpbmNlIHBhcnRzIG9mIHRoZSBkb2N1bWVudCBtaWdodCBub3QgaGF2ZSBiZWVuIHByb3Blcmx5CiAgICAgIC8vIGhpZ2hsaWdodGVkLCBhbmQgaXQgaXMgaGFyZCB0byBrbm93IGluIGFkdmFuY2Ugd2hpY2ggcGFydCB3ZQogICAgICAvLyBoYXZlIHRvIHNjYW4sIHdlIGp1c3QgdHJ5LCBhbmQgd2hlbiB3ZSBmaW5kIGRpcnR5IG5vZGVzIHdlCiAgICAgIC8vIGFib3J0LCBwYXJzZSB0aGVtLCBhbmQgcmUtdHJ5LgogICAgICBmdW5jdGlvbiB0cnlGaW5kTWF0Y2goKSB7CiAgICAgICAgdmFyIHN0YWNrID0gW10sIGNoLCBvayA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgcnVubmVyID0gY3Vyc29yOyBydW5uZXI7IHJ1bm5lciA9IGRpciA/IHJ1bm5lci5uZXh0U2libGluZyA6IHJ1bm5lci5wcmV2aW91c1NpYmxpbmcpIHsKICAgICAgICAgIGlmIChydW5uZXIuY2xhc3NOYW1lID09IGNsYXNzTmFtZSAmJiBpc1NwYW4ocnVubmVyKSAmJiAoY2ggPSBwYXJlbihydW5uZXIpKSkgewogICAgICAgICAgICBpZiAoZm9yd2FyZChjaCkgPT0gZGlyKQogICAgICAgICAgICAgIHN0YWNrLnB1c2goY2gpOwogICAgICAgICAgICBlbHNlIGlmICghc3RhY2subGVuZ3RoKQogICAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNrLnBvcCgpICE9IG1hdGNoaW5nW2NoXSkKICAgICAgICAgICAgICBvayA9IGZhbHNlOwogICAgICAgICAgICBpZiAoIXN0YWNrLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChydW5uZXIuZGlydHkgfHwgIWlzU3BhbihydW5uZXIpICYmICFpc0JSKHJ1bm5lcikpIHsKICAgICAgICAgICAgcmV0dXJuIHtub2RlOiBydW5uZXIsIHN0YXR1czogImRpcnR5In07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB7bm9kZTogcnVubmVyLCBzdGF0dXM6IHJ1bm5lciAmJiBva307CiAgICAgIH0KCiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdmFyIGZvdW5kID0gdHJ5RmluZE1hdGNoKCk7CiAgICAgICAgaWYgKGZvdW5kLnN0YXR1cyA9PSAiZGlydHkiKSB7CiAgICAgICAgICB0aGlzLmhpZ2hsaWdodChmb3VuZC5ub2RlLCBlbmRPZkxpbmUoZm91bmQubm9kZSkpOwogICAgICAgICAgLy8gTmVlZGVkIGJlY2F1c2UgaW4gc29tZSBjb3JuZXIgY2FzZXMgYSBoaWdobGlnaHQgZG9lcyBub3QKICAgICAgICAgIC8vIHJlYWNoIGEgbm9kZS4KICAgICAgICAgIGZvdW5kLm5vZGUuZGlydHkgPSBmYWxzZTsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIGhpZ2hsaWdodChjdXJzb3IsIGZvdW5kLnN0YXR1cyk7CiAgICAgICAgICBoaWdobGlnaHQoZm91bmQubm9kZSwgZm91bmQuc3RhdHVzKTsKICAgICAgICAgIGlmIChmcm9tS2V5KQogICAgICAgICAgICBzZWxmLnBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3VuaGlnaGxpZ2h0KGN1cnNvcik7IHVuaGlnaGxpZ2h0KGZvdW5kLm5vZGUpO30sIDUwMCk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHNlbGYuaGlnaGxpZ2h0ZWQgPSBbY3Vyc29yLCBmb3VuZC5ub2RlXTsKICAgICAgICAgIGlmIChqdW1wICYmIGZvdW5kLm5vZGUpCiAgICAgICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShmb3VuZC5ub2RlLnByZXZpb3VzU2libGluZywgdGhpcy5jb250YWluZXIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8vIEFkanVzdCB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRoYXQKICAgIC8vIHRoZSBjdXJzb3IgaXMgb24gc28gdGhhdCBpdCBpcyBpbmRlbnRlZCBwcm9wZXJseS4KICAgIGluZGVudEF0Q3Vyc29yOiBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKSByZXR1cm47CiAgICAgIC8vIFRoZSBsaW5lIGhhcyB0byBoYXZlIHVwLXRvLWRhdGUgbGV4aWNhbCBpbmZvcm1hdGlvbiwgc28gd2UKICAgICAgLy8gaGlnaGxpZ2h0IGl0IGZpcnN0LgogICAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0QXRDdXJzb3IoKSkgcmV0dXJuOwogICAgICB2YXIgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBwbGFjZSBvZiB0aGUgY3Vyc29yLAogICAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gaW5kZW50LgogICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSkKICAgICAgICByZXR1cm47CiAgICAgIHNlbGVjdC5tYXJrU2VsZWN0aW9uKCk7CiAgICAgIHRoaXMuaW5kZW50TGluZUFmdGVyKHN0YXJ0T2ZMaW5lKGN1cnNvciksIGRpcmVjdGlvbik7CiAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgIH0sCgogICAgLy8gSW5kZW50IGFsbCBsaW5lcyB3aG9zZSBzdGFydCBmYWxscyBpbnNpZGUgb2YgdGhlIGN1cnJlbnQKICAgIC8vIHNlbGVjdGlvbi4KICAgIGluZGVudFJlZ2lvbjogZnVuY3Rpb24oc3RhcnQsIGVuZCwgZGlyZWN0aW9uKSB7CiAgICAgIHZhciBjdXJyZW50ID0gKHN0YXJ0ID0gc3RhcnRPZkxpbmUoc3RhcnQpKSwgYmVmb3JlID0gc3RhcnQgJiYgc3RhcnRPZkxpbmUoc3RhcnQucHJldmlvdXNTaWJsaW5nKTsKICAgICAgaWYgKCFpc0JSKGVuZCkpIGVuZCA9IGVuZE9mTGluZShlbmQsIHRoaXMuY29udGFpbmVyKTsKICAgICAgdGhpcy5hZGREaXJ0eU5vZGUoc3RhcnQpOwoKICAgICAgZG8gewogICAgICAgIHZhciBuZXh0ID0gZW5kT2ZMaW5lKGN1cnJlbnQsIHRoaXMuY29udGFpbmVyKTsKICAgICAgICBpZiAoY3VycmVudCkgdGhpcy5oaWdobGlnaHQoYmVmb3JlLCBuZXh0LCB0cnVlKTsKICAgICAgICB0aGlzLmluZGVudExpbmVBZnRlcihjdXJyZW50LCBkaXJlY3Rpb24pOwogICAgICAgIGJlZm9yZSA9IGN1cnJlbnQ7CiAgICAgICAgY3VycmVudCA9IG5leHQ7CiAgICAgIH0gd2hpbGUgKGN1cnJlbnQgIT0gZW5kKTsKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwge25vZGU6IHN0YXJ0LCBvZmZzZXQ6IDB9LCB7bm9kZTogZW5kLCBvZmZzZXQ6IDB9KTsKICAgIH0sCgogICAgLy8gRmluZCB0aGUgbm9kZSB0aGF0IHRoZSBjdXJzb3IgaXMgaW4sIG1hcmsgaXQgYXMgZGlydHksIGFuZCBtYWtlCiAgICAvLyBzdXJlIGEgaGlnaGxpZ2h0IHBhc3MgaXMgc2NoZWR1bGVkLgogICAgY3Vyc29yQWN0aXZpdHk6IGZ1bmN0aW9uKHNhZmUpIHsKICAgICAgLy8gcGFnZWhpZGUgZXZlbnQgaGFjayBhYm92ZQogICAgICBpZiAodGhpcy51bmxvYWRlZCkgewogICAgICAgIHdpbmRvdy5kb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9mZiI7CiAgICAgICAgd2luZG93LmRvY3VtZW50LmRlc2lnbk1vZGUgPSAib24iOwogICAgICAgIHRoaXMudW5sb2FkZWQgPSBmYWxzZTsKICAgICAgfQoKICAgICAgaWYgKGludGVybmV0RXhwbG9yZXIpIHsKICAgICAgICB0aGlzLmNvbnRhaW5lci5jcmVhdGVUZXh0UmFuZ2UoKS5leGVjQ29tbWFuZCgidW5saW5rIik7CiAgICAgICAgdGhpcy5zZWxlY3Rpb25TbmFwc2hvdCA9IHNlbGVjdC5nZXRCb29rbWFyayh0aGlzLmNvbnRhaW5lcik7CiAgICAgIH0KCiAgICAgIHZhciBhY3Rpdml0eSA9IHRoaXMub3B0aW9ucy5jdXJzb3JBY3Rpdml0eTsKICAgICAgaWYgKCFzYWZlIHx8IGFjdGl2aXR5KSB7CiAgICAgICAgdmFyIGN1cnNvciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCBmYWxzZSk7CiAgICAgICAgaWYgKGN1cnNvciA9PT0gZmFsc2UgfHwgIXRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpIHJldHVybjsKICAgICAgICBjdXJzb3IgPSBjdXJzb3IgfHwgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICBpZiAoYWN0aXZpdHkpIGFjdGl2aXR5KGN1cnNvcik7CiAgICAgICAgaWYgKCFzYWZlKSB7CiAgICAgICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICAgICAgICB0aGlzLmFkZERpcnR5Tm9kZShjdXJzb3IpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICByZXBhcnNlQnVmZmVyOiBmdW5jdGlvbigpIHsKICAgICAgZm9yRWFjaCh0aGlzLmNvbnRhaW5lci5jaGlsZE5vZGVzLCBmdW5jdGlvbihub2RlKSB7bm9kZS5kaXJ0eSA9IHRydWU7fSk7CiAgICAgIGlmICh0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgIHRoaXMuYWRkRGlydHlOb2RlKHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgfSwKCiAgICAvLyBBZGQgYSBub2RlIHRvIHRoZSBzZXQgb2YgZGlydHkgbm9kZXMsIGlmIGl0IGlzbid0IGFscmVhZHkgaW4KICAgIC8vIHRoZXJlLgogICAgYWRkRGlydHlOb2RlOiBmdW5jdGlvbihub2RlKSB7CiAgICAgIG5vZGUgPSBub2RlIHx8IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgIGlmICghbm9kZSkgcmV0dXJuOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpcnR5Lmxlbmd0aDsgaSsrKQogICAgICAgIGlmICh0aGlzLmRpcnR5W2ldID09IG5vZGUpIHJldHVybjsKCiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9IDMpCiAgICAgICAgbm9kZS5kaXJ0eSA9IHRydWU7CiAgICAgIHRoaXMuZGlydHkucHVzaChub2RlKTsKICAgIH0sCgogICAgYWxsQ2xlYW46IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gIXRoaXMuZGlydHkubGVuZ3RoOwogICAgfSwKCiAgICAvLyBDYXVzZSBhIGhpZ2hsaWdodCBwYXNzIHRvIGhhcHBlbiBpbiBvcHRpb25zLnBhc3NEZWxheQogICAgLy8gbWlsbGlzZWNvbmRzLiBDbGVhciB0aGUgZXhpc3RpbmcgdGltZW91dCwgaWYgb25lIGV4aXN0cy4gVGhpcwogICAgLy8gd2F5LCB0aGUgcGFzc2VzIGRvIG5vdCBoYXBwZW4gd2hpbGUgdGhlIHVzZXIgaXMgdHlwaW5nLCBhbmQKICAgIC8vIHNob3VsZCBhcyB1bm9idHJ1c2l2ZSBhcyBwb3NzaWJsZS4KICAgIHNjaGVkdWxlSGlnaGxpZ2h0OiBmdW5jdGlvbigpIHsKICAgICAgLy8gVGltZW91dHMgYXJlIHJvdXRlZCB0aHJvdWdoIHRoZSBwYXJlbnQgd2luZG93LCBiZWNhdXNlIG9uCiAgICAgIC8vIHNvbWUgYnJvd3NlcnMgZGVzaWduTW9kZSB3aW5kb3dzIGRvIG5vdCBmaXJlIHRpbWVvdXRzLgogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHRoaXMucGFyZW50LmNsZWFyVGltZW91dCh0aGlzLmhpZ2hsaWdodFRpbWVvdXQpOwogICAgICB0aGlzLmhpZ2hsaWdodFRpbWVvdXQgPSB0aGlzLnBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2VsZi5oaWdobGlnaHREaXJ0eSgpO30sIHRoaXMub3B0aW9ucy5wYXNzRGVsYXkpOwogICAgfSwKCiAgICAvLyBGZXRjaCBvbmUgZGlydHkgbm9kZSwgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBkaXJ0eSBzZXQuCiAgICBnZXREaXJ0eU5vZGU6IGZ1bmN0aW9uKCkgewogICAgICB3aGlsZSAodGhpcy5kaXJ0eS5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGZvdW5kID0gdGhpcy5kaXJ0eS5wb3AoKTsKICAgICAgICAvLyBJRTggc29tZXRpbWVzIHRocm93cyBhbiB1bmV4cGxhaW5hYmxlICdpbnZhbGlkIGFyZ3VtZW50JwogICAgICAgIC8vIGV4Y2VwdGlvbiBmb3IgZm91bmQucGFyZW50Tm9kZQogICAgICAgIHRyeSB7CiAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBoYXMgYmVlbiBjb2xvdXJlZCBpbiB0aGUgbWVhbnRpbWUsIG9yIGlzIG5vCiAgICAgICAgICAvLyBsb25nZXIgaW4gdGhlIGRvY3VtZW50LCBpdCBzaG91bGQgbm90IGJlIHJldHVybmVkLgogICAgICAgICAgd2hpbGUgKGZvdW5kICYmIGZvdW5kLnBhcmVudE5vZGUgIT0gdGhpcy5jb250YWluZXIpCiAgICAgICAgICAgIGZvdW5kID0gZm91bmQucGFyZW50Tm9kZTsKICAgICAgICAgIGlmIChmb3VuZCAmJiAoZm91bmQuZGlydHkgfHwgZm91bmQubm9kZVR5cGUgPT0gMykpCiAgICAgICAgICAgIHJldHVybiBmb3VuZDsKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICAvLyBQaWNrIGRpcnR5IG5vZGVzLCBhbmQgaGlnaGxpZ2h0IHRoZW0sIHVudGlsIG9wdGlvbnMucGFzc1RpbWUKICAgIC8vIG1pbGxpc2Vjb25kcyBoYXZlIGdvbmUgYnkuIFRoZSBoaWdobGlnaHQgbWV0aG9kIHdpbGwgY29udGludWUKICAgIC8vIHRvIG5leHQgbGluZXMgYXMgbG9uZyBhcyBpdCBmaW5kcyBkaXJ0eSBub2Rlcy4gSXQgcmV0dXJucwogICAgLy8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBsYWNlIHdoZXJlIGl0IHN0b3BwZWQuIElmIHRoZXJlIGFyZQogICAgLy8gZGlydHkgbm9kZXMgbGVmdCBhZnRlciB0aGlzIGZ1bmN0aW9uIGhhcyBzcGVudCBhbGwgaXRzIGxpbmVzLAogICAgLy8gaXQgc2hlZHVsZXMgYW5vdGhlciBoaWdobGlnaHQgdG8gZmluaXNoIHRoZSBqb2IuCiAgICBoaWdobGlnaHREaXJ0eTogZnVuY3Rpb24oZm9yY2UpIHsKICAgICAgLy8gUHJldmVudCBGRiBmcm9tIHJhaXNpbmcgYW4gZXJyb3Igd2hlbiBpdCBpcyBmaXJpbmcgdGltZW91dHMKICAgICAgLy8gb24gYSBwYWdlIHRoYXQncyBubyBsb25nZXIgbG9hZGVkLgogICAgICBpZiAoIXdpbmRvdy5wYXJlbnQgfHwgIXdpbmRvdy5zZWxlY3QpIHJldHVybiBmYWxzZTsKCiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3QubWFya1NlbGVjdGlvbigpOwogICAgICB2YXIgc3RhcnQsIGVuZFRpbWUgPSBmb3JjZSA/IG51bGwgOiB0aW1lKCkgKyB0aGlzLm9wdGlvbnMucGFzc1RpbWU7CiAgICAgIHdoaWxlICgodGltZSgpIDwgZW5kVGltZSB8fCBmb3JjZSkgJiYgKHN0YXJ0ID0gdGhpcy5nZXREaXJ0eU5vZGUoKSkpIHsKICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oaWdobGlnaHQoc3RhcnQsIGVuZFRpbWUpOwogICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lm5vZGUgJiYgcmVzdWx0LmRpcnR5KQogICAgICAgICAgdGhpcy5hZGREaXJ0eU5vZGUocmVzdWx0Lm5vZGUubmV4dFNpYmxpbmcpOwogICAgICB9CiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3Quc2VsZWN0TWFya2VkKCk7CiAgICAgIGlmIChzdGFydCkgdGhpcy5zY2hlZHVsZUhpZ2hsaWdodCgpOwogICAgICByZXR1cm4gdGhpcy5kaXJ0eS5sZW5ndGggPT0gMDsKICAgIH0sCgogICAgLy8gQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkIHRocm91Z2ggYSB0aW1lb3V0LCB3aWxsCiAgICAvLyBjb250aW51b3VzbHkgcmUtcGFyc2UgdGhlIGRvY3VtZW50LgogICAgZG9jdW1lbnRTY2FubmVyOiBmdW5jdGlvbihwYXNzVGltZSkgewogICAgICB2YXIgc2VsZiA9IHRoaXMsIHBvcyA9IG51bGw7CiAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAvLyBGRiB0aW1lb3V0IHdlaXJkbmVzcyB3b3JrYXJvdW5kLgogICAgICAgIGlmICghd2luZG93LnBhcmVudCB8fCAhd2luZG93LnNlbGVjdCkgcmV0dXJuOwogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IG5vZGUgaXMgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudC4uLiBvaAogICAgICAgIC8vIHdlbGwsIHdlIHN0YXJ0IG92ZXIuCiAgICAgICAgaWYgKHBvcyAmJiBwb3MucGFyZW50Tm9kZSAhPSBzZWxmLmNvbnRhaW5lcikKICAgICAgICAgIHBvcyA9IG51bGw7CiAgICAgICAgc2VsZWN0Lm1hcmtTZWxlY3Rpb24oKTsKICAgICAgICB2YXIgcmVzdWx0ID0gc2VsZi5oaWdobGlnaHQocG9zLCB0aW1lKCkgKyBwYXNzVGltZSwgdHJ1ZSk7CiAgICAgICAgc2VsZWN0LnNlbGVjdE1hcmtlZCgpOwogICAgICAgIHZhciBuZXdQb3MgPSByZXN1bHQgPyAocmVzdWx0Lm5vZGUgJiYgcmVzdWx0Lm5vZGUubmV4dFNpYmxpbmcpIDogbnVsbDsKICAgICAgICBwb3MgPSAocG9zID09IG5ld1BvcykgPyBudWxsIDogbmV3UG9zOwogICAgICAgIHNlbGYuZGVsYXlTY2FubmluZygpOwogICAgICB9OwogICAgfSwKCiAgICAvLyBTdGFydHMgdGhlIGNvbnRpbnVvdXMgc2Nhbm5pbmcgcHJvY2VzcyBmb3IgdGhpcyBkb2N1bWVudCBhZnRlcgogICAgLy8gYSBnaXZlbiBpbnRlcnZhbC4KICAgIGRlbGF5U2Nhbm5pbmc6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5zY2FubmVyKSB7CiAgICAgICAgdGhpcy5wYXJlbnQuY2xlYXJUaW1lb3V0KHRoaXMuZG9jdW1lbnRTY2FuKTsKICAgICAgICB0aGlzLmRvY3VtZW50U2NhbiA9IHRoaXMucGFyZW50LnNldFRpbWVvdXQodGhpcy5zY2FubmVyLCB0aGlzLm9wdGlvbnMuY29udGludW91c1NjYW5uaW5nKTsKICAgICAgfQogICAgfSwKCiAgICAvLyBUaGUgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBhY3R1YWwgaGlnaGxpZ2h0aW5nL2NvbG91cmluZyAod2l0aAogICAgLy8gaGVscCBmcm9tIHRoZSBwYXJzZXIgYW5kIHRoZSBET00gbm9ybWFsaXplcikuIEl0cyBpbnRlcmZhY2UgaXMKICAgIC8vIHJhdGhlciBvdmVyY29tcGxpY2F0ZWQsIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBkaWZmZXJlbnQKICAgIC8vIHNpdHVhdGlvbnM6IGVuc3VyaW5nIHRoYXQgYSBjZXJ0YWluIGxpbmUgaXMgaGlnaGxpZ2h0ZWQsIG9yCiAgICAvLyBoaWdobGlnaHRpbmcgdXAgdG8gWCBtaWxsaXNlY29uZHMgc3RhcnRpbmcgZnJvbSBhIGNlcnRhaW4KICAgIC8vIHBvaW50LiBUaGUgJ2Zyb20nIGFyZ3VtZW50IGdpdmVzIHRoZSBub2RlIGF0IHdoaWNoIGl0IHNob3VsZAogICAgLy8gc3RhcnQuIElmIHRoaXMgaXMgbnVsbCwgaXQgd2lsbCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQogICAgLy8gZG9jdW1lbnQuIFdoZW4gYSB0aW1lc3RhbXAgaXMgZ2l2ZW4gd2l0aCB0aGUgJ3RhcmdldCcgYXJndW1lbnQsCiAgICAvLyBpdCB3aWxsIHN0b3AgaGlnaGxpZ2h0aW5nIGF0IHRoYXQgdGltZS4gSWYgdGhpcyBhcmd1bWVudCBob2xkcwogICAgLy8gYSBET00gbm9kZSwgaXQgd2lsbCBoaWdobGlnaHQgdW50aWwgaXQgcmVhY2hlcyB0aGF0IG5vZGUuIElmIGF0CiAgICAvLyBhbnkgdGltZSBpdCBjb21lcyBhY3Jvc3MgdHdvICdjbGVhbicgbGluZXMgKG5vIGRpcnR5IG5vZGVzKSwgaXQKICAgIC8vIHdpbGwgc3RvcCwgZXhjZXB0IHdoZW4gJ2NsZWFuTGluZXMnIGlzIHRydWUuIG1heEJhY2t0cmFjayBpcwogICAgLy8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIGJhY2t0cmFjayB0byBmaW5kIGFuIGV4aXN0aW5nCiAgICAvLyBwYXJzZXIgaW5zdGFuY2UuIFRoaXMgaXMgdXNlZCB0byBnaXZlIHVwIGluIHNpdHVhdGlvbnMgd2hlcmUgYQogICAgLy8gaGlnaGxpZ2h0IHdvdWxkIHRha2UgdG9vIGxvbmcgYW5kIGZyZWV6ZSB0aGUgYnJvd3NlciBpbnRlcmZhY2UuCiAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uKGZyb20sIHRhcmdldCwgY2xlYW5MaW5lcywgbWF4QmFja3RyYWNrKXsKICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLCBzZWxmID0gdGhpcywgYWN0aXZlID0gdGhpcy5vcHRpb25zLmFjdGl2ZVRva2VuczsKICAgICAgdmFyIGVuZFRpbWUgPSAodHlwZW9mIHRhcmdldCA9PSAibnVtYmVyIiA/IHRhcmdldCA6IG51bGwpOwoKICAgICAgaWYgKCFjb250YWluZXIuZmlyc3RDaGlsZCkKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIC8vIEJhY2t0cmFjayB0byB0aGUgZmlyc3Qgbm9kZSBiZWZvcmUgZnJvbSB0aGF0IGhhcyBhIHBhcnRpYWwKICAgICAgLy8gcGFyc2Ugc3RvcmVkLgogICAgICB3aGlsZSAoZnJvbSAmJiAoIWZyb20ucGFyc2VyRnJvbUhlcmUgfHwgZnJvbS5kaXJ0eSkpIHsKICAgICAgICBpZiAobWF4QmFja3RyYWNrICE9IG51bGwgJiYgaXNCUihmcm9tKSAmJiAoLS1tYXhCYWNrdHJhY2spIDwgMCkKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICBmcm9tID0gZnJvbS5wcmV2aW91c1NpYmxpbmc7CiAgICAgIH0KICAgICAgLy8gSWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LCBkbyBub3RoaW5nLgogICAgICBpZiAoZnJvbSAmJiAhZnJvbS5uZXh0U2libGluZykKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAvLyBDaGVjayB3aGV0aGVyIGEgcGFydCAoPHNwYW4+IG5vZGUpIGFuZCB0aGUgY29ycmVzcG9uZGluZyB0b2tlbgogICAgICAvLyBtYXRjaC4KICAgICAgZnVuY3Rpb24gY29ycmVjdFBhcnQodG9rZW4sIHBhcnQpewogICAgICAgIHJldHVybiAhcGFydC5yZWR1Y2VkICYmIHBhcnQuY3VycmVudFRleHQgPT0gdG9rZW4udmFsdWUgJiYgcGFydC5jbGFzc05hbWUgPT0gdG9rZW4uc3R5bGU7CiAgICAgIH0KICAgICAgLy8gU2hvcnRlbiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0IGJ5IGNob3BwaW5nIG9mZgogICAgICAvLyBjaGFyYWN0ZXJzIGZyb20gdGhlIGZyb250LiBOb3RlIHRoYXQgb25seSB0aGUgY3VycmVudFRleHQKICAgICAgLy8gcHJvcGVydHkgZ2V0cyBjaGFuZ2VkLiBGb3IgZWZmaWNpZW5jeSByZWFzb25zLCB3ZSBsZWF2ZSB0aGUKICAgICAgLy8gbm9kZVZhbHVlIGFsb25lIC0tIHdlIHNldCB0aGUgcmVkdWNlZCBmbGFnIHRvIGluZGljYXRlIHRoYXQKICAgICAgLy8gdGhpcyBwYXJ0IG11c3QgYmUgcmVwbGFjZWQuCiAgICAgIGZ1bmN0aW9uIHNob3J0ZW5QYXJ0KHBhcnQsIG1pbnVzKXsKICAgICAgICBwYXJ0LmN1cnJlbnRUZXh0ID0gcGFydC5jdXJyZW50VGV4dC5zdWJzdHJpbmcobWludXMpOwogICAgICAgIHBhcnQucmVkdWNlZCA9IHRydWU7CiAgICAgIH0KICAgICAgLy8gQ3JlYXRlIGEgcGFydCBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gdG9rZW4uCiAgICAgIGZ1bmN0aW9uIHRva2VuUGFydCh0b2tlbil7CiAgICAgICAgdmFyIHBhcnQgPSBtYWtlUGFydFNwYW4odG9rZW4udmFsdWUpOyAgICAgCiAgICAgICAgcGFydC5jbGFzc05hbWUgPSB0b2tlbi5zdHlsZTsKICAgICAgICByZXR1cm4gcGFydDsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gbWF5YmVUb3VjaChub2RlKSB7CiAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgIHZhciBvbGQgPSBub2RlLm9sZE5leHRTaWJsaW5nOwogICAgICAgICAgaWYgKGxpbmVEaXJ0eSB8fCBvbGQgPT09IHVuZGVmaW5lZCB8fCBub2RlLm5leHRTaWJsaW5nICE9IG9sZCkKICAgICAgICAgICAgc2VsZi5oaXN0b3J5LnRvdWNoKG5vZGUpOwogICAgICAgICAgbm9kZS5vbGROZXh0U2libGluZyA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgdmFyIG9sZCA9IHNlbGYuY29udGFpbmVyLm9sZEZpcnN0Q2hpbGQ7CiAgICAgICAgICBpZiAobGluZURpcnR5IHx8IG9sZCA9PT0gdW5kZWZpbmVkIHx8IHNlbGYuY29udGFpbmVyLmZpcnN0Q2hpbGQgIT0gb2xkKQogICAgICAgICAgICBzZWxmLmhpc3RvcnkudG91Y2gobnVsbCk7CiAgICAgICAgICBzZWxmLmNvbnRhaW5lci5vbGRGaXJzdENoaWxkID0gc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIEdldCB0aGUgdG9rZW4gc3RyZWFtLiBJZiBmcm9tIGlzIG51bGwsIHdlIHN0YXJ0IHdpdGggYSBuZXcKICAgICAgLy8gcGFyc2VyIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmcmFtZSwgb3RoZXJ3aXNlIGEgcGFydGlhbCBwYXJzZQogICAgICAvLyBpcyByZXN1bWVkLgogICAgICB2YXIgdHJhdmVyc2FsID0gdHJhdmVyc2VET00oZnJvbSA/IGZyb20ubmV4dFNpYmxpbmcgOiBjb250YWluZXIuZmlyc3RDaGlsZCksCiAgICAgICAgICBzdHJlYW0gPSBzdHJpbmdTdHJlYW0odHJhdmVyc2FsKSwKICAgICAgICAgIHBhcnNlZCA9IGZyb20gPyBmcm9tLnBhcnNlckZyb21IZXJlKHN0cmVhbSkgOiBFZGl0b3IuUGFyc2VyLm1ha2Uoc3RyZWFtKTsKCiAgICAgIGZ1bmN0aW9uIHN1cnJvdW5kZWRCeUJScyhub2RlKSB7CiAgICAgICAgcmV0dXJuIChub2RlLnByZXZpb3VzU2libGluZyA9PSBudWxsIHx8IGlzQlIobm9kZS5wcmV2aW91c1NpYmxpbmcpKSAmJgogICAgICAgICAgICAgICAobm9kZS5uZXh0U2libGluZyA9PSBudWxsIHx8IGlzQlIobm9kZS5uZXh0U2libGluZykpOwogICAgICB9CgogICAgICAvLyBwYXJ0cyBpcyBhbiBpbnRlcmZhY2UgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byAnZGVsYXknIGZldGNoaW5nCiAgICAgIC8vIHRoZSBuZXh0IERPTSBub2RlIHVudGlsIHdlIGFyZSBjb21wbGV0ZWx5IGRvbmUgd2l0aCB0aGUgb25lCiAgICAgIC8vIGJlZm9yZSBpdC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBvZnRlbiB0aGUgbmV4dCBub2RlIGlzCiAgICAgIC8vIG5vdCB5ZXQgYXZhaWxhYmxlIHdoZW4gd2Ugd2FudCB0byBwcm9jZWVkIHBhc3QgdGhlIGN1cnJlbnQKICAgICAgLy8gb25lLgogICAgICB2YXIgcGFydHMgPSB7CiAgICAgICAgY3VycmVudDogbnVsbCwKICAgICAgICAvLyBGZXRjaCBjdXJyZW50IG5vZGUuCiAgICAgICAgZ2V0OiBmdW5jdGlvbigpewogICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnQpCiAgICAgICAgICAgIHRoaXMuY3VycmVudCA9IHRyYXZlcnNhbC5ub2Rlcy5zaGlmdCgpOwogICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudDsKICAgICAgICB9LAogICAgICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgcGFydCAoZG8gbm90IGZldGNoIGl0IHlldCkuCiAgICAgICAgbmV4dDogZnVuY3Rpb24oKXsKICAgICAgICAgIHRoaXMuY3VycmVudCA9IG51bGw7CiAgICAgICAgfSwKICAgICAgICAvLyBSZW1vdmUgdGhlIGN1cnJlbnQgcGFydCBmcm9tIHRoZSBET00gdHJlZSwgYW5kIG1vdmUgdG8gdGhlCiAgICAgICAgLy8gbmV4dC4KICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCl7CiAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5nZXQoKSk7CiAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBudWxsOwogICAgICAgIH0sCiAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgbmV4dCBwYXJ0IHRoYXQgaXMgbm90IGVtcHR5LCBkaXNjYXJkaW5nIGVtcHR5CiAgICAgICAgLy8gcGFydHMuCiAgICAgICAgZ2V0Tm9uRW1wdHk6IGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgcGFydCA9IHRoaXMuZ2V0KCk7CiAgICAgICAgICAvLyBBbGxvdyBlbXB0eSBub2RlcyB3aGVuIHRoZXkgYXJlIGFsb25lIG9uIGEgbGluZSwgbmVlZGVkCiAgICAgICAgICAvLyBmb3IgdGhlIEZGIGN1cnNvciBidWcgd29ya2Fyb3VuZCAoc2VlIHNlbGVjdC5qcywKICAgICAgICAgIC8vIGluc2VydE5ld2xpbmVBdEN1cnNvcikuCiAgICAgICAgICB3aGlsZSAocGFydCAmJiBpc1NwYW4ocGFydCkgJiYgcGFydC5jdXJyZW50VGV4dCA9PSAiIikgewogICAgICAgICAgICAvLyBMZWF2ZSBlbXB0eSBub2RlcyB0aGF0IGFyZSBhbG9uZSBvbiBhIGxpbmUgYWxvbmUgaW4KICAgICAgICAgICAgLy8gT3BlcmEsIHNpbmNlIHRoYXQgYnJvd3NlcnMgZG9lc24ndCBkZWFsIHdlbGwgd2l0aAogICAgICAgICAgICAvLyBoYXZpbmcgMiBCUnMgaW4gYSByb3cuCiAgICAgICAgICAgIGlmICh3aW5kb3cub3BlcmEgJiYgc3Vycm91bmRlZEJ5QlJzKHBhcnQpKSB7CiAgICAgICAgICAgICAgdGhpcy5uZXh0KCk7CiAgICAgICAgICAgICAgcGFydCA9IHRoaXMuZ2V0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgdmFyIG9sZCA9IHBhcnQ7CiAgICAgICAgICAgICAgdGhpcy5yZW1vdmUoKTsKICAgICAgICAgICAgICBwYXJ0ID0gdGhpcy5nZXQoKTsKICAgICAgICAgICAgICAvLyBBZGp1c3Qgc2VsZWN0aW9uIGluZm9ybWF0aW9uLCBpZiBhbnkuIFNlZSBzZWxlY3QuanMgZm9yIGRldGFpbHMuCiAgICAgICAgICAgICAgc2VsZWN0LnNuYXBzaG90TW92ZShvbGQuZmlyc3RDaGlsZCwgcGFydCAmJiAocGFydC5maXJzdENoaWxkIHx8IHBhcnQpLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICB9CiAgICAgIH07CgogICAgICB2YXIgbGluZURpcnR5ID0gZmFsc2UsIHByZXZMaW5lRGlydHkgPSB0cnVlLCBsaW5lTm9kZXMgPSAwOwoKICAgICAgLy8gVGhpcyBmb3JFYWNoIGxvb3BzIG92ZXIgdGhlIHRva2VucyBmcm9tIHRoZSBwYXJzZWQgc3RyZWFtLCBhbmQKICAgICAgLy8gYXQgdGhlIHNhbWUgdGltZSB1c2VzIHRoZSBwYXJ0cyBvYmplY3QgdG8gcHJvY2VlZCB0aHJvdWdoIHRoZQogICAgICAvLyBjb3JyZXNwb25kaW5nIERPTSBub2Rlcy4KICAgICAgZm9yRWFjaChwYXJzZWQsIGZ1bmN0aW9uKHRva2VuKXsKICAgICAgICB2YXIgcGFydCA9IHBhcnRzLmdldE5vbkVtcHR5KCk7CgogICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PSAiXG4iKXsKICAgICAgICAgIC8vIFRoZSBpZGVhIG9mIHRoZSB0d28gc3RyZWFtcyBhY3R1YWxseSBzdGF5aW5nIHN5bmNocm9uaXplZAogICAgICAgICAgLy8gaXMgc3VjaCBhIGxvbmcgc2hvdCB0aGF0IHdlIGV4cGxpY2l0bHkgY2hlY2suCiAgICAgICAgICBpZiAoIWlzQlIocGFydCkpCiAgICAgICAgICAgIHRocm93ICJQYXJzZXIgb3V0IG9mIHN5bmMuIEV4cGVjdGVkIEJSLiI7CgogICAgICAgICAgaWYgKHBhcnQuZGlydHkgfHwgIXBhcnQuaW5kZW50YXRpb24pIGxpbmVEaXJ0eSA9IHRydWU7CiAgICAgICAgICBtYXliZVRvdWNoKGZyb20pOwogICAgICAgICAgZnJvbSA9IHBhcnQ7CgogICAgICAgICAgLy8gRXZlcnkgPGJyPiBnZXRzIGEgY29weSBvZiB0aGUgcGFyc2VyIHN0YXRlIGFuZCBhIGxleGljYWwKICAgICAgICAgIC8vIGNvbnRleHQgYXNzaWduZWQgdG8gaXQuIFRoZSBmaXJzdCBpcyB1c2VkIHRvIGJlIGFibGUgdG8KICAgICAgICAgIC8vIGxhdGVyIHJlc3VtZSBwYXJzaW5nIGZyb20gdGhpcyBwb2ludCwgdGhlIHNlY29uZCBpcyB1c2VkCiAgICAgICAgICAvLyBmb3IgaW5kZW50YXRpb24uCiAgICAgICAgICBwYXJ0LnBhcnNlckZyb21IZXJlID0gcGFyc2VkLmNvcHkoKTsKICAgICAgICAgIHBhcnQuaW5kZW50YXRpb24gPSB0b2tlbi5pbmRlbnRhdGlvbjsKICAgICAgICAgIHBhcnQuZGlydHkgPSBmYWxzZTsKCiAgICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGFyZ3VtZW50IHdhc24ndCBhbiBpbnRlZ2VyLCBnbyBhdCBsZWFzdAogICAgICAgICAgLy8gdW50aWwgdGhhdCBub2RlLgogICAgICAgICAgaWYgKGVuZFRpbWUgPT0gbnVsbCAmJiBwYXJ0ID09IHRhcmdldCkgdGhyb3cgU3RvcEl0ZXJhdGlvbjsKCiAgICAgICAgICAvLyBBIGNsZWFuIGxpbmUgd2l0aCBtb3JlIHRoYW4gb25lIG5vZGUgbWVhbnMgd2UgYXJlIGRvbmUuCiAgICAgICAgICAvLyBUaHJvd2luZyBhIFN0b3BJdGVyYXRpb24gaXMgdGhlIHdheSB0byBicmVhayBvdXQgb2YgYQogICAgICAgICAgLy8gTW9jaGlLaXQgZm9yRWFjaCBsb29wLgogICAgICAgICAgaWYgKChlbmRUaW1lICE9IG51bGwgJiYgdGltZSgpID49IGVuZFRpbWUpIHx8ICghbGluZURpcnR5ICYmICFwcmV2TGluZURpcnR5ICYmIGxpbmVOb2RlcyA+IDEgJiYgIWNsZWFuTGluZXMpKQogICAgICAgICAgICB0aHJvdyBTdG9wSXRlcmF0aW9uOwogICAgICAgICAgcHJldkxpbmVEaXJ0eSA9IGxpbmVEaXJ0eTsgbGluZURpcnR5ID0gZmFsc2U7IGxpbmVOb2RlcyA9IDA7CiAgICAgICAgICBwYXJ0cy5uZXh0KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgaWYgKCFpc1NwYW4ocGFydCkpCiAgICAgICAgICAgIHRocm93ICJQYXJzZXIgb3V0IG9mIHN5bmMuIEV4cGVjdGVkIFNQQU4uIjsKICAgICAgICAgIGlmIChwYXJ0LmRpcnR5KQogICAgICAgICAgICBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgbGluZU5vZGVzKys7CgogICAgICAgICAgLy8gSWYgdGhlIHBhcnQgbWF0Y2hlcyB0aGUgdG9rZW4sIHdlIGNhbiBsZWF2ZSBpdCBhbG9uZS4KICAgICAgICAgIGlmIChjb3JyZWN0UGFydCh0b2tlbiwgcGFydCkpewogICAgICAgICAgICBwYXJ0LmRpcnR5ID0gZmFsc2U7CiAgICAgICAgICAgIHBhcnRzLm5leHQoKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBmaXggaXQuCiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbGluZURpcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBjb3JyZWN0IHBhcnQuCiAgICAgICAgICAgIHZhciBuZXdQYXJ0ID0gdG9rZW5QYXJ0KHRva2VuKTsKICAgICAgICAgICAgY29udGFpbmVyLmluc2VydEJlZm9yZShuZXdQYXJ0LCBwYXJ0KTsKICAgICAgICAgICAgaWYgKGFjdGl2ZSkgYWN0aXZlKG5ld1BhcnQsIHRva2VuLCBzZWxmKTsKICAgICAgICAgICAgdmFyIHRva2Vuc2l6ZSA9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IDA7CiAgICAgICAgICAgIC8vIEVhdCB1cCBwYXJ0cyB1bnRpbCB0aGUgdGV4dCBmb3IgdGhpcyB0b2tlbiBoYXMgYmVlbgogICAgICAgICAgICAvLyByZW1vdmVkLCBhZGp1c3RpbmcgdGhlIHN0b3JlZCBzZWxlY3Rpb24gaW5mbyAoc2VlCiAgICAgICAgICAgIC8vIHNlbGVjdC5qcykgaW4gdGhlIHByb2Nlc3MuCiAgICAgICAgICAgIHdoaWxlICh0b2tlbnNpemUgPiAwKSB7CiAgICAgICAgICAgICAgcGFydCA9IHBhcnRzLmdldCgpOwogICAgICAgICAgICAgIHZhciBwYXJ0c2l6ZSA9IHBhcnQuY3VycmVudFRleHQubGVuZ3RoOwogICAgICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdFJlcGxhY2VOb2RlKHBhcnQuZmlyc3RDaGlsZCwgbmV3UGFydC5maXJzdENoaWxkLCB0b2tlbnNpemUsIG9mZnNldCk7CiAgICAgICAgICAgICAgaWYgKHBhcnRzaXplID4gdG9rZW5zaXplKXsKICAgICAgICAgICAgICAgIHNob3J0ZW5QYXJ0KHBhcnQsIHRva2Vuc2l6ZSk7CiAgICAgICAgICAgICAgICB0b2tlbnNpemUgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRva2Vuc2l6ZSAtPSBwYXJ0c2l6ZTsKICAgICAgICAgICAgICAgIG9mZnNldCArPSBwYXJ0c2l6ZTsKICAgICAgICAgICAgICAgIHBhcnRzLnJlbW92ZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICAgIG1heWJlVG91Y2goZnJvbSk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CgogICAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBzb21lIHN0YXR1cyBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzZWQgYnkKICAgICAgLy8gaGlnaHRsaWdodERpcnR5IHRvIGRldGVybWluZSB3aGV0aGVyIGFuZCB3aGVyZSBpdCBoYXMgdG8KICAgICAgLy8gY29udGludWUuCiAgICAgIHJldHVybiB7bm9kZTogcGFydHMuZ2V0Tm9uRW1wdHkoKSwKICAgICAgICAgICAgICBkaXJ0eTogbGluZURpcnR5fTsKICAgIH0KICB9OwoKICByZXR1cm4gRWRpdG9yOwp9KSgpOwoKYWRkRXZlbnRIYW5kbGVyKHdpbmRvdywgImxvYWQiLCBmdW5jdGlvbigpIHsKICB2YXIgQ29kZU1pcnJvciA9IHdpbmRvdy5mcmFtZUVsZW1lbnQuQ29kZU1pcnJvcjsKICB2YXIgZSA9IENvZGVNaXJyb3IuZWRpdG9yID0gbmV3IEVkaXRvcihDb2RlTWlycm9yLm9wdGlvbnMpOwogIHRoaXMucGFyZW50LnNldFRpbWVvdXQobWV0aG9kKENvZGVNaXJyb3IsICJpbml0IiksIDApOwp9KTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/highlight.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTWluaW1hbCBmcmFtaW5nIG5lZWRlZCB0byB1c2UgQ29kZU1pcnJvci1zdHlsZSBwYXJzZXJzIHRvIGhpZ2hsaWdodAovLyBjb2RlLiBMb2FkIHRoaXMgYWxvbmcgd2l0aCB0b2tlbml6ZS5qcywgc3RyaW5nc3RyZWFtLmpzLCBhbmQgeW91cgovLyBwYXJzZXIuIFRoZW4gY2FsbCBoaWdobGlnaHRUZXh0LCBwYXNzaW5nIGEgc3RyaW5nIGFzIHRoZSBmaXJzdAovLyBhcmd1bWVudCwgYW5kIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgZWl0aGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24KLy8gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFuIGFycmF5IG9mIFNQQU4gbm9kZXMgZm9yIGV2ZXJ5IGxpbmUgaW4KLy8gdGhlIGNvZGUsIG9yIGEgRE9NIG5vZGUgdG8gd2hpY2ggdG8gYXBwZW5kIHRoZXNlIHNwYW5zLCBhbmQKLy8gb3B0aW9uYWxseSAobm90IG5lZWRlZCBpZiB5b3Ugb25seSBsb2FkZWQgb25lIHBhcnNlcikgYSBwYXJzZXIKLy8gb2JqZWN0LgoKLy8gU3R1ZmYgZnJvbSB1dGlsLmpzIHRoYXQgdGhlIHBhcnNlcnMgYXJlIHVzaW5nLgp2YXIgU3RvcEl0ZXJhdGlvbiA9IHt0b1N0cmluZzogZnVuY3Rpb24oKSB7cmV0dXJuICJTdG9wSXRlcmF0aW9uIn19OwoKdmFyIEVkaXRvciA9IHt9Owp2YXIgaW5kZW50VW5pdCA9IDI7CgooZnVuY3Rpb24oKXsKICBmdW5jdGlvbiBub3JtYWxpc2VTdHJpbmcoc3RyaW5nKSB7CiAgICB2YXIgdGFiID0gIiI7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGVudFVuaXQ7IGkrKykgdGFiICs9ICIgIjsKCiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvXHQvZywgdGFiKS5yZXBsYWNlKC9cdTAwYTAvZywgIiAiKS5yZXBsYWNlKC9cclxuPy9nLCAiXG4iKTsKICAgIHZhciBwb3MgPSAwLCBwYXJ0cyA9IFtdLCBsaW5lcyA9IHN0cmluZy5zcGxpdCgiXG4iKTsKICAgIGZvciAodmFyIGxpbmUgPSAwOyBsaW5lIDwgbGluZXMubGVuZ3RoOyBsaW5lKyspIHsKICAgICAgaWYgKGxpbmUgIT0gMCkgcGFydHMucHVzaCgiXG4iKTsKICAgICAgcGFydHMucHVzaChsaW5lc1tsaW5lXSk7CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHBvcyA8IHBhcnRzLmxlbmd0aCkgcmV0dXJuIHBhcnRzW3BvcysrXTsKICAgICAgICBlbHNlIHRocm93IFN0b3BJdGVyYXRpb247CiAgICAgIH0KICAgIH07CiAgfQoKICB3aW5kb3cuaGlnaGxpZ2h0VGV4dCA9IGZ1bmN0aW9uKHN0cmluZywgY2FsbGJhY2ssIHBhcnNlcikgewogICAgcGFyc2VyID0gKHBhcnNlciB8fCBFZGl0b3IuUGFyc2VyKS5tYWtlKHN0cmluZ1N0cmVhbShub3JtYWxpc2VTdHJpbmcoc3RyaW5nKSkpOwogICAgdmFyIGxpbmUgPSBbXTsKICAgIGlmIChjYWxsYmFjay5ub2RlVHlwZSA9PSAxKSB7CiAgICAgIHZhciBub2RlID0gY2FsbGJhY2s7CiAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24obGluZSkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykKICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQobGluZVtpXSk7CiAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJCUiIpKTsKICAgICAgfTsKICAgIH0KCiAgICB0cnkgewogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciB0b2tlbiA9IHBhcnNlci5uZXh0KCk7CiAgICAgICAgaWYgKHRva2VuLnZhbHVlID09ICJcbiIpIHsKICAgICAgICAgIGNhbGxiYWNrKGxpbmUpOwogICAgICAgICAgbGluZSA9IFtdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU1BBTiIpOwogICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSB0b2tlbi5zdHlsZTsKICAgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodG9rZW4udmFsdWUpKTsKICAgICAgICAgIGxpbmUucHVzaChzcGFuKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgIGlmIChlICE9IFN0b3BJdGVyYXRpb24pIHRocm93IGU7CiAgICB9CiAgICBpZiAobGluZS5sZW5ndGgpIGNhbGxiYWNrKGxpbmUpOwogIH0KfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/mirrorframe.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogRGVtb25zdHJhdGlvbiBvZiBlbWJlZGRpbmcgQ29kZU1pcnJvciBpbiBhIGJpZ2dlciBhcHBsaWNhdGlvbi4gVGhlCiAqIGludGVyZmFjZSBkZWZpbmVkIGhlcmUgaXMgYSBtZXNzIG9mIHByb21wdHMgYW5kIGNvbmZpcm1zLCBhbmQKICogc2hvdWxkIHByb2JhYmx5IG5vdCBiZSB1c2VkIGluIGEgcmVhbCBwcm9qZWN0LgogKi8KCmZ1bmN0aW9uIE1pcnJvckZyYW1lKHBsYWNlLCBvcHRpb25zKSB7CiAgdGhpcy5ob21lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7CiAgaWYgKHBsYWNlLmFwcGVuZENoaWxkKQogICAgcGxhY2UuYXBwZW5kQ2hpbGQodGhpcy5ob21lKTsKICBlbHNlCiAgICBwbGFjZSh0aGlzLmhvbWUpOwoKICB2YXIgc2VsZiA9IHRoaXM7CiAgZnVuY3Rpb24gbWFrZUJ1dHRvbihuYW1lLCBhY3Rpb24pIHsKICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTlBVVCIpOwogICAgYnV0dG9uLnR5cGUgPSAiYnV0dG9uIjsKICAgIGJ1dHRvbi52YWx1ZSA9IG5hbWU7CiAgICBzZWxmLmhvbWUuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKICAgIGJ1dHRvbi5vbmNsaWNrID0gZnVuY3Rpb24oKXtzZWxmW2FjdGlvbl0uY2FsbChzZWxmKTt9OwogIH0KCiAgbWFrZUJ1dHRvbigiU2VhcmNoIiwgInNlYXJjaCIpOwogIG1ha2VCdXR0b24oIlJlcGxhY2UiLCAicmVwbGFjZSIpOwogIG1ha2VCdXR0b24oIkN1cnJlbnQgbGluZSIsICJsaW5lIik7CiAgbWFrZUJ1dHRvbigiSnVtcCB0byBsaW5lIiwgImp1bXAiKTsKICBtYWtlQnV0dG9uKCJJbnNlcnQgY29uc3RydWN0b3IiLCAibWFjcm8iKTsKICBtYWtlQnV0dG9uKCJJbmRlbnQgYWxsIiwgInJlaW5kZW50Iik7CgogIHRoaXMubWlycm9yID0gbmV3IENvZGVNaXJyb3IodGhpcy5ob21lLCBvcHRpb25zKTsKfQoKTWlycm9yRnJhbWUucHJvdG90eXBlID0gewogIHNlYXJjaDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdGV4dCA9IHByb21wdCgiRW50ZXIgc2VhcmNoIHRlcm06IiwgIiIpOwogICAgaWYgKCF0ZXh0KSByZXR1cm47CgogICAgdmFyIGZpcnN0ID0gdHJ1ZTsKICAgIGRvIHsKICAgICAgdmFyIGN1cnNvciA9IHRoaXMubWlycm9yLmdldFNlYXJjaEN1cnNvcih0ZXh0LCBmaXJzdCk7CiAgICAgIGZpcnN0ID0gZmFsc2U7CiAgICAgIHdoaWxlIChjdXJzb3IuZmluZE5leHQoKSkgewogICAgICAgIGN1cnNvci5zZWxlY3QoKTsKICAgICAgICBpZiAoIWNvbmZpcm0oIlNlYXJjaCBhZ2Fpbj8iKSkKICAgICAgICAgIHJldHVybjsKICAgICAgfQogICAgfSB3aGlsZSAoY29uZmlybSgiRW5kIG9mIGRvY3VtZW50IHJlYWNoZWQuIFN0YXJ0IG92ZXI/IikpOwogIH0sCgogIHJlcGxhY2U6IGZ1bmN0aW9uKCkgewogICAgLy8gVGhpcyBpcyBhIHJlcGxhY2UtYWxsLCBidXQgaXQgaXMgcG9zc2libGUgdG8gaW1wbGVtZW50IGEKICAgIC8vIHByb21wdGluZyByZXBsYWNlLgogICAgdmFyIGZyb20gPSBwcm9tcHQoIkVudGVyIHNlYXJjaCBzdHJpbmc6IiwgIiIpLCB0bzsKICAgIGlmIChmcm9tKSB0byA9IHByb21wdCgiV2hhdCBzaG91bGQgaXQgYmUgcmVwbGFjZWQgd2l0aD8iLCAiIik7CiAgICBpZiAodG8gPT0gbnVsbCkgcmV0dXJuOwoKICAgIHZhciBjdXJzb3IgPSB0aGlzLm1pcnJvci5nZXRTZWFyY2hDdXJzb3IoZnJvbSwgZmFsc2UpOwogICAgd2hpbGUgKGN1cnNvci5maW5kTmV4dCgpKQogICAgICBjdXJzb3IucmVwbGFjZSh0byk7CiAgfSwKCiAganVtcDogZnVuY3Rpb24oKSB7CiAgICB2YXIgbGluZSA9IHByb21wdCgiSnVtcCB0byBsaW5lOiIsICIiKTsKICAgIGlmIChsaW5lICYmICFpc05hTihOdW1iZXIobGluZSkpKQogICAgICB0aGlzLm1pcnJvci5qdW1wVG9MaW5lKE51bWJlcihsaW5lKSk7CiAgfSwKCiAgbGluZTogZnVuY3Rpb24oKSB7CiAgICBhbGVydCgiVGhlIGN1cnNvciBpcyBjdXJyZW50bHkgYXQgbGluZSAiICsgdGhpcy5taXJyb3IuY3VycmVudExpbmUoKSk7CiAgICB0aGlzLm1pcnJvci5mb2N1cygpOwogIH0sCgogIG1hY3JvOiBmdW5jdGlvbigpIHsKICAgIHZhciBuYW1lID0gcHJvbXB0KCJOYW1lIHlvdXIgY29uc3RydWN0b3I6IiwgIiIpOwogICAgaWYgKG5hbWUpCiAgICAgIHRoaXMubWlycm9yLnJlcGxhY2VTZWxlY3Rpb24oImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHtcbiAgXG59XG5cbiIgKyBuYW1lICsgIi5wcm90b3R5cGUgPSB7XG4gIFxufTtcbiIpOwogIH0sCgogIHJlaW5kZW50OiBmdW5jdGlvbigpIHsKICAgIHRoaXMubWlycm9yLnJlaW5kZW50KCk7CiAgfQp9Owo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsecss.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogU2ltcGxlIHBhcnNlciBmb3IgQ1NTICovCgp2YXIgQ1NTUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICB2YXIgdG9rZW5pemVDU1MgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICBpZiAoY2ggPT0gIkAiKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1x3Lyk7CiAgICAgICAgcmV0dXJuICJjc3MtYXQiOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICIvIiAmJiBzb3VyY2UuZXF1YWxzKCIqIikpIHsKICAgICAgICBzZXRTdGF0ZShpbkNDb21tZW50KTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiPCIgJiYgc291cmNlLmVxdWFscygiISIpKSB7CiAgICAgICAgc2V0U3RhdGUoaW5TR01MQ29tbWVudCk7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIj0iKSB7CiAgICAgICAgcmV0dXJuICJjc3MtY29tcGFyZSI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygiPSIpICYmIChjaCA9PSAifiIgfHwgY2ggPT0gInwiKSkgewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgcmV0dXJuICJjc3MtY29tcGFyZSI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIpIHsKICAgICAgICBzZXRTdGF0ZShpblN0cmluZyhjaCkpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICIjIikgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cdy8pOwogICAgICAgIHJldHVybiAiY3NzLWhhc2giOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICIhIikgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bIFx0XS8pOwogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cdy8pOwogICAgICAgIHJldHVybiAiY3NzLWltcG9ydGFudCI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHcuJV0vKTsKICAgICAgICByZXR1cm4gImNzcy11bml0IjsKICAgICAgfQogICAgICBlbHNlIGlmICgvWywuKz4qXC9dLy50ZXN0KGNoKSkgewogICAgICAgIHJldHVybiAiY3NzLXNlbGVjdC1vcCI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoL1s7e306XFtcXV0vLnRlc3QoY2gpKSB7CiAgICAgICAgcmV0dXJuICJjc3MtcHVuY3R1YXRpb24iOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcXFwtX10vKTsKICAgICAgICByZXR1cm4gImNzcy1pZGVudGlmaWVyIjsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluQ0NvbW1lbnQoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgbWF5YmVFbmQgPSBmYWxzZTsKICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgIGlmIChtYXliZUVuZCAmJiBjaCA9PSAiLyIpIHsKICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKICAgICAgfQogICAgICByZXR1cm4gImNzcy1jb21tZW50IjsKICAgIH0KCiAgICBmdW5jdGlvbiBpblNHTUxDb21tZW50KHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgdmFyIGRhc2hlcyA9IDA7CiAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoZGFzaGVzID49IDIgJiYgY2ggPT0gIj4iKSB7CiAgICAgICAgICBzZXRTdGF0ZShub3JtYWwpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGRhc2hlcyA9IChjaCA9PSAiLSIpID8gZGFzaGVzICsgMSA6IDA7CiAgICAgIH0KICAgICAgcmV0dXJuICJjc3MtY29tbWVudCI7CiAgICB9CgogICAgZnVuY3Rpb24gaW5TdHJpbmcocXVvdGUpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgaWYgKGNoID09IHF1b3RlICYmICFlc2NhcGVkKQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBjaCA9PSAiXFwiOwogICAgICAgIH0KICAgICAgICBpZiAoIWVzY2FwZWQpCiAgICAgICAgICBzZXRTdGF0ZShub3JtYWwpOwogICAgICAgIHJldHVybiAiY3NzLXN0cmluZyI7CiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBub3JtYWwpOwogICAgfTsKICB9KSgpOwoKICBmdW5jdGlvbiBpbmRlbnRDU1MoaW5CcmFjZXMsIGluUnVsZSwgYmFzZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycykgewogICAgICBpZiAoIWluQnJhY2VzIHx8IC9eXH0vLnRlc3QobmV4dENoYXJzKSkgcmV0dXJuIGJhc2U7CiAgICAgIGVsc2UgaWYgKGluUnVsZSkgcmV0dXJuIGJhc2UgKyBpbmRlbnRVbml0ICogMjsKICAgICAgZWxzZSByZXR1cm4gYmFzZSArIGluZGVudFVuaXQ7CiAgICB9OwogIH0KCiAgLy8gVGhpcyBpcyBhIHZlcnkgc2ltcGxpc3RpYyBwYXJzZXIgLS0gc2luY2UgQ1NTIGRvZXMgbm90IHJlYWxseQogIC8vIG5lc3QsIGl0IHdvcmtzIGFjY2VwdGFibHkgd2VsbCwgYnV0IHNvbWUgbmljZXIgY29sb3Vyb2luZyBjb3VsZAogIC8vIGJlIHByb3ZpZGVkIHdpdGggYSBtb3JlIGNvbXBsaWNhdGVkIHBhcnNlci4KICBmdW5jdGlvbiBwYXJzZUNTUyhzb3VyY2UsIGJhc2Vjb2x1bW4pIHsKICAgIGJhc2Vjb2x1bW4gPSBiYXNlY29sdW1uIHx8IDA7CiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVDU1Moc291cmNlKTsKICAgIHZhciBpbkJyYWNlcyA9IGZhbHNlLCBpblJ1bGUgPSBmYWxzZSwgaW5EZWNsID0gZmFsc2U7OwoKICAgIHZhciBpdGVyID0gewogICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdG9rZW4gPSB0b2tlbnMubmV4dCgpLCBzdHlsZSA9IHRva2VuLnN0eWxlLCBjb250ZW50ID0gdG9rZW4uY29udGVudDsKCiAgICAgICAgaWYgKHN0eWxlID09ICJjc3MtaGFzaCIpCiAgICAgICAgICBzdHlsZSA9IHRva2VuLnN0eWxlID0gIGluUnVsZSA/ICJjc3MtY29sb3Jjb2RlIiA6ICJjc3MtaWRlbnRpZmllciI7CiAgICAgICAgaWYgKHN0eWxlID09ICJjc3MtaWRlbnRpZmllciIpIHsKICAgICAgICAgIGlmIChpblJ1bGUpIHRva2VuLnN0eWxlID0gImNzcy12YWx1ZSI7CiAgICAgICAgICBlbHNlIGlmICghaW5CcmFjZXMgJiYgIWluRGVjbCkgdG9rZW4uc3R5bGUgPSAiY3NzLXNlbGVjdG9yIjsKICAgICAgICB9CgogICAgICAgIGlmIChjb250ZW50ID09ICJcbiIpCiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudENTUyhpbkJyYWNlcywgaW5SdWxlLCBiYXNlY29sdW1uKTsKCiAgICAgICAgaWYgKGNvbnRlbnQgPT0gInsiKQogICAgICAgICAgaW5CcmFjZXMgPSB0cnVlOwogICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gIn0iKQogICAgICAgICAgaW5CcmFjZXMgPSBpblJ1bGUgPSBpbkRlY2wgPSBmYWxzZTsKICAgICAgICBlbHNlIGlmIChjb250ZW50ID09ICI7IikKICAgICAgICAgIGluUnVsZSA9IGluRGVjbCA9IGZhbHNlOwogICAgICAgIGVsc2UgaWYgKGluQnJhY2VzICYmIHN0eWxlICE9ICJjc3MtY29tbWVudCIgJiYgc3R5bGUgIT0gIndoaXRlc3BhY2UiKQogICAgICAgICAgaW5SdWxlID0gdHJ1ZTsKICAgICAgICBlbHNlIGlmICghaW5CcmFjZXMgJiYgc3R5bGUgPT0gImNzcy1hdCIgJiYgY29udGVudCAhPSAiQG1lZGlhIikKICAgICAgICAgIGluRGVjbCA9IHRydWU7CgogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfSwKCiAgICAgIGNvcHk6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBfaW5CcmFjZXMgPSBpbkJyYWNlcywgX2luUnVsZSA9IGluUnVsZSwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGU7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSkgewogICAgICAgICAgdG9rZW5zID0gdG9rZW5pemVDU1Moc291cmNlLCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgICBpbkJyYWNlcyA9IF9pbkJyYWNlczsKICAgICAgICAgIGluUnVsZSA9IF9pblJ1bGU7CiAgICAgICAgICByZXR1cm4gaXRlcjsKICAgICAgICB9OwogICAgICB9CiAgICB9OwogICAgcmV0dXJuIGl0ZXI7CiAgfQoKICByZXR1cm4ge21ha2U6IHBhcnNlQ1NTLCBlbGVjdHJpY0NoYXJzOiAifSJ9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsedummy.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIER1bW15UGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICBmdW5jdGlvbiB0b2tlbml6ZUR1bW15KHNvdXJjZSkgewogICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHNvdXJjZS5uZXh0KCk7CiAgICByZXR1cm4gInRleHQiOwogIH0KICBmdW5jdGlvbiBwYXJzZUR1bW15KHNvdXJjZSkgewogICAgZnVuY3Rpb24gaW5kZW50VG8obikge3JldHVybiBmdW5jdGlvbigpIHtyZXR1cm4gbjt9fQogICAgc291cmNlID0gdG9rZW5pemVyKHNvdXJjZSwgdG9rZW5pemVEdW1teSk7CiAgICB2YXIgc3BhY2UgPSAwOwoKICAgIHZhciBpdGVyID0gewogICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdG9rID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAodG9rLnR5cGUgPT0gIndoaXRlc3BhY2UiKSB7CiAgICAgICAgICBpZiAodG9rLnZhbHVlID09ICJcbiIpIHRvay5pbmRlbnRhdGlvbiA9IGluZGVudFRvKHNwYWNlKTsKICAgICAgICAgIGVsc2Ugc3BhY2UgPSB0b2sudmFsdWUubGVuZ3RoOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdG9rOwogICAgICB9LAogICAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgX3NwYWNlID0gc3BhY2U7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKF9zb3VyY2UpIHsKICAgICAgICAgIHNwYWNlID0gX3NwYWNlOwogICAgICAgICAgc291cmNlID0gdG9rZW5pemVyKF9zb3VyY2UsIHRva2VuaXplRHVtbXkpOwogICAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgICAgfTsKICAgICAgfQogICAgfTsKICAgIHJldHVybiBpdGVyOwogIH0KICByZXR1cm4ge21ha2U6IHBhcnNlRHVtbXl9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsehtmlmixed.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIEhUTUxNaXhlZFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgaWYgKCEoQ1NTUGFyc2VyICYmIEpTUGFyc2VyICYmIFhNTFBhcnNlcikpCiAgICB0aHJvdyBuZXcgRXJyb3IoIkNTUywgSlMsIGFuZCBYTUwgcGFyc2VycyBtdXN0IGJlIGxvYWRlZCBmb3IgSFRNTCBtaXhlZCBtb2RlIHRvIHdvcmsuIik7CiAgWE1MUGFyc2VyLmNvbmZpZ3VyZSh7dXNlSFRNTEtsdWRnZXM6IHRydWV9KTsKCiAgZnVuY3Rpb24gcGFyc2VNaXhlZChzdHJlYW0pIHsKICAgIHZhciBodG1sUGFyc2VyID0gWE1MUGFyc2VyLm1ha2Uoc3RyZWFtKSwgbG9jYWxQYXJzZXIgPSBudWxsLCBpblRhZyA9IGZhbHNlOwogICAgdmFyIGl0ZXIgPSB7bmV4dDogdG9wLCBjb3B5OiBjb3B5fTsKCiAgICBmdW5jdGlvbiB0b3AoKSB7CiAgICAgIHZhciB0b2tlbiA9IGh0bWxQYXJzZXIubmV4dCgpOwogICAgICBpZiAodG9rZW4uY29udGVudCA9PSAiPCIpCiAgICAgICAgaW5UYWcgPSB0cnVlOwogICAgICBlbHNlIGlmICh0b2tlbi5zdHlsZSA9PSAieG1sLXRhZ25hbWUiICYmIGluVGFnID09PSB0cnVlKQogICAgICAgIGluVGFnID0gdG9rZW4uY29udGVudC50b0xvd2VyQ2FzZSgpOwogICAgICBlbHNlIGlmICh0b2tlbi5jb250ZW50ID09ICI+IikgewogICAgICAgIGlmIChpblRhZyA9PSAic2NyaXB0IikKICAgICAgICAgIGl0ZXIubmV4dCA9IGxvY2FsKEpTUGFyc2VyLCAiPC9zY3JpcHQiKTsKICAgICAgICBlbHNlIGlmIChpblRhZyA9PSAic3R5bGUiKQogICAgICAgICAgaXRlci5uZXh0ID0gbG9jYWwoQ1NTUGFyc2VyLCAiPC9zdHlsZSIpOwogICAgICAgIGluVGFnID0gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRva2VuOwogICAgfQogICAgZnVuY3Rpb24gbG9jYWwocGFyc2VyLCB0YWcpIHsKICAgICAgdmFyIGJhc2VJbmRlbnQgPSBodG1sUGFyc2VyLmluZGVudGF0aW9uKCk7CiAgICAgIGxvY2FsUGFyc2VyID0gcGFyc2VyLm1ha2Uoc3RyZWFtLCBiYXNlSW5kZW50ICsgaW5kZW50VW5pdCk7CiAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoc3RyZWFtLmxvb2tBaGVhZCh0YWcsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkpIHsKICAgICAgICAgIGxvY2FsUGFyc2VyID0gbnVsbDsKICAgICAgICAgIGl0ZXIubmV4dCA9IHRvcDsKICAgICAgICAgIHJldHVybiB0b3AoKTsKICAgICAgICB9CgogICAgICAgIHZhciB0b2tlbiA9IGxvY2FsUGFyc2VyLm5leHQoKTsKICAgICAgICB2YXIgbHQgPSB0b2tlbi52YWx1ZS5sYXN0SW5kZXhPZigiPCIpLCBzeiA9IE1hdGgubWluKHRva2VuLnZhbHVlLmxlbmd0aCAtIGx0LCB0YWcubGVuZ3RoKTsKICAgICAgICBpZiAobHQgIT0gLTEgJiYgdG9rZW4udmFsdWUuc2xpY2UobHQsIGx0ICsgc3opLnRvTG93ZXJDYXNlKCkgPT0gdGFnLnNsaWNlKDAsIHN6KSAmJgogICAgICAgICAgICBzdHJlYW0ubG9va0FoZWFkKHRhZy5zbGljZShzeiksIGZhbHNlLCBmYWxzZSwgdHJ1ZSkpIHsKICAgICAgICAgIHN0cmVhbS5wdXNoKHRva2VuLnZhbHVlLnNsaWNlKGx0KSk7CiAgICAgICAgICB0b2tlbi52YWx1ZSA9IHRva2VuLnZhbHVlLnNsaWNlKDAsIGx0KTsKICAgICAgICB9CgogICAgICAgIGlmICh0b2tlbi5pbmRlbnRhdGlvbikgewogICAgICAgICAgdmFyIG9sZEluZGVudCA9IHRva2VuLmluZGVudGF0aW9uOwogICAgICAgICAgdG9rZW4uaW5kZW50YXRpb24gPSBmdW5jdGlvbihjaGFycykgewogICAgICAgICAgICBpZiAoY2hhcnMgPT0gIjwvIikKICAgICAgICAgICAgICByZXR1cm4gYmFzZUluZGVudDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBvbGRJbmRlbnQoY2hhcnMpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIGNvcHkoKSB7CiAgICAgIHZhciBfaHRtbCA9IGh0bWxQYXJzZXIuY29weSgpLCBfbG9jYWwgPSBsb2NhbFBhcnNlciAmJiBsb2NhbFBhcnNlci5jb3B5KCksCiAgICAgICAgICBfbmV4dCA9IGl0ZXIubmV4dCwgX2luVGFnID0gaW5UYWc7CiAgICAgIHJldHVybiBmdW5jdGlvbihfc3RyZWFtKSB7CiAgICAgICAgc3RyZWFtID0gX3N0cmVhbTsKICAgICAgICBodG1sUGFyc2VyID0gX2h0bWwoX3N0cmVhbSk7CiAgICAgICAgbG9jYWxQYXJzZXIgPSBfbG9jYWwgJiYgX2xvY2FsKF9zdHJlYW0pOwogICAgICAgIGl0ZXIubmV4dCA9IF9uZXh0OwogICAgICAgIGluVGFnID0gX2luVGFnOwogICAgICAgIHJldHVybiBpdGVyOwogICAgICB9OwogICAgfQogICAgcmV0dXJuIGl0ZXI7CiAgfQoKICByZXR1cm4ge21ha2U6IHBhcnNlTWl4ZWQsIGVsZWN0cmljQ2hhcnM6ICJ7fS86In07Cgp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsejavascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUGFyc2UgZnVuY3Rpb24gZm9yIEphdmFTY3JpcHQuIE1ha2VzIHVzZSBvZiB0aGUgdG9rZW5pemVyIGZyb20KICogdG9rZW5pemVqYXZhc2NyaXB0LmpzLiBOb3RlIHRoYXQgeW91ciBwYXJzZXJzIGRvIG5vdCBoYXZlIHRvIGJlCiAqIHRoaXMgY29tcGxpY2F0ZWQgLS0gaWYgeW91IGRvbid0IHdhbnQgdG8gcmVjb2duaXplIGxvY2FsIHZhcmlhYmxlcywKICogaW4gbWFueSBsYW5ndWFnZXMgaXQgaXMgZW5vdWdoIHRvIGp1c3QgbG9vayBmb3IgYnJhY2VzLCBzZW1pY29sb25zLAogKiBwYXJlbnRoZXNlcywgZXRjLCBhbmQga25vdyB3aGVuIHlvdSBhcmUgaW5zaWRlIGEgc3RyaW5nIG9yIGNvbW1lbnQuCiAqCiAqIFNlZSBtYW51YWwuaHRtbCBmb3IgbW9yZSBpbmZvIGFib3V0IHRoZSBwYXJzZXIgaW50ZXJmYWNlLgogKi8KCnZhciBKU1BhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgLy8gVG9rZW4gdHlwZXMgdGhhdCBjYW4gYmUgY29uc2lkZXJlZCB0byBiZSBhdG9tcy4KICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0cnVlLCAibnVtYmVyIjogdHJ1ZSwgInZhcmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJyZWdleHAiOiB0cnVlfTsKICAvLyBTZXR0aW5nIHRoYXQgY2FuIGJlIHVzZWQgdG8gaGF2ZSBKU09OIGRhdGEgaW5kZW50IHByb3Blcmx5LgogIHZhciBqc29uID0gZmFsc2U7CiAgLy8gQ29uc3RydWN0b3IgZm9yIHRoZSBsZXhpY2FsIGNvbnRleHQgb2JqZWN0cy4KICBmdW5jdGlvbiBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgndmFyZGVmJywgJ3N0YXQnIChzdGF0ZW1lbnQpLCAnZm9ybScgKHNwZWNpYWwgZm9ybSksICdbJywgJ3snLCBvciAnKCcpCiAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgLy8gJ1snLCAneycsIG9yICcoJyBibG9ja3MgdGhhdCBoYXZlIGFueSB0ZXh0IGFmdGVyIHRoZWlyIG9wZW5pbmcKICAgIC8vIGNoYXJhY3RlciBhcmUgc2FpZCB0byBiZSAnYWxpZ25lZCcgLS0gYW55IGxpbmVzIGJlbG93IGFyZQogICAgLy8gaW5kZW50ZWQgYWxsIHRoZSB3YXkgdG8gdGhlIG9wZW5pbmcgY2hhcmFjdGVyLgogICAgaWYgKGFsaWduICE9IG51bGwpCiAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjsKICAgIC8vIFBhcmVudCBzY29wZSwgaWYgYW55LgogICAgdGhpcy5wcmV2ID0gcHJldjsKICAgIHRoaXMuaW5mbyA9IGluZm87CiAgfQoKICAvLyBNeSBmYXZvdXJpdGUgSmF2YVNjcmlwdCBpbmRlbnRhdGlvbiBydWxlcy4KICBmdW5jdGlvbiBpbmRlbnRKUyhsZXhpY2FsKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZmlyc3RDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gZmlyc3RDaGFycyAmJiBmaXJzdENoYXJzLmNoYXJBdCgwKSwgdHlwZSA9IGxleGljYWwudHlwZTsKICAgICAgdmFyIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyA0OwogICAgICBlbHNlIGlmICh0eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IiB8fCB0eXBlID09ICJmb3JtIikKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuaW5mbyA9PSAic3dpdGNoIiAmJiAhY2xvc2luZykKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArICgvXig/OmNhc2V8ZGVmYXVsdClcYi8udGVzdChmaXJzdENoYXJzKSA/IGluZGVudFVuaXQgOiAyICogaW5kZW50VW5pdCk7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuYWxpZ24pCiAgICAgICAgcmV0dXJuIGxleGljYWwuY29sdW1uIC0gKGNsb3NpbmcgPyAxIDogMCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfTsKICB9CgogIC8vIFRoZSBwYXJzZXItaXRlcmF0b3ItcHJvZHVjaW5nIGZ1bmN0aW9uIGl0c2VsZi4KICBmdW5jdGlvbiBwYXJzZUpTKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplSmF2YVNjcmlwdChpbnB1dCk7CiAgICAvLyBUaGUgcGFyc2VyIHN0YXRlLiBjYyBpcyBhIHN0YWNrIG9mIGFjdGlvbnMgdGhhdCBoYXZlIHRvIGJlCiAgICAvLyBwZXJmb3JtZWQgdG8gZmluaXNoIHRoZSBjdXJyZW50IHN0YXRlbWVudC4gRm9yIGV4YW1wbGUgd2UgbWlnaHQKICAgIC8vIGtub3cgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGZpbmQgYSBjbG9zaW5nIHBhcmVudGhlc2lzIGFuZCBhCiAgICAvLyBzZW1pY29sb24uIEFjdGlvbnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RhY2sgZ28gZmlyc3QuIEl0IGlzCiAgICAvLyBpbml0aWFsaXplZCB3aXRoIGFuIGluZmluaXRlbHkgbG9vcGluZyBhY3Rpb24gdGhhdCBjb25zdW1lcwogICAgLy8gd2hvbGUgc3RhdGVtZW50cy4KICAgIHZhciBjYyA9IFtqc29uID8gZXhwcmVzc2lvbnMgOiBzdGF0ZW1lbnRzXTsKICAgIC8vIENvbnRleHQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbG9jYWwgc2NvcGUsIHRoZQogICAgLy8gdmFyaWFibGVzIGRlZmluZWQgaW4gdGhhdCwgYW5kIHRoZSBzY29wZXMgYWJvdmUgaXQuCiAgICB2YXIgY29udGV4dCA9IG51bGw7CiAgICAvLyBUaGUgbGV4aWNhbCBzY29wZSwgdXNlZCBtb3N0bHkgZm9yIGluZGVudGF0aW9uLgogICAgdmFyIGxleGljYWwgPSBuZXcgSlNMZXhpY2FsKChiYXNlY29sdW1uIHx8IDApIC0gaW5kZW50VW5pdCwgMCwgImJsb2NrIiwgZmFsc2UpOwogICAgLy8gQ3VycmVudCBjb2x1bW4sIGFuZCB0aGUgaW5kZW50YXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50CiAgICAvLyBsaW5lLiBVc2VkIHRvIGNyZWF0ZSBsZXhpY2FsIHNjb3BlIG9iamVjdHMuCiAgICB2YXIgY29sdW1uID0gMDsKICAgIHZhciBpbmRlbnRlZCA9IDA7CiAgICAvLyBWYXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgYnkgdGhlIG1hcmssIGNvbnQsIGFuZCBwYXNzIGZ1bmN0aW9ucwogICAgLy8gYmVsb3cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZHJpdmVyIGxvb3AgaW4gdGhlICduZXh0JwogICAgLy8gZnVuY3Rpb24uCiAgICB2YXIgY29uc3VtZSwgbWFya2VkOwogIAogICAgLy8gVGhlIGl0ZXJhdG9yIG9iamVjdC4KICAgIHZhciBwYXJzZXIgPSB7bmV4dDogbmV4dCwgY29weTogY29weX07CgogICAgZnVuY3Rpb24gbmV4dCgpewogICAgICAvLyBTdGFydCBieSBwZXJmb3JtaW5nIGFueSAnbGV4aWNhbCcgYWN0aW9ucyAoYWRqdXN0aW5nIHRoZQogICAgICAvLyBsZXhpY2FsIHZhcmlhYmxlKSwgb3IgdGhlIG9wZXJhdGlvbnMgYmVsb3cgd2lsbCBiZSB3b3JraW5nCiAgICAgIC8vIHdpdGggdGhlIHdyb25nIGxleGljYWwgc3RhdGUuCiAgICAgIHdoaWxlKGNjW2NjLmxlbmd0aCAtIDFdLmxleCkKICAgICAgICBjYy5wb3AoKSgpOwoKICAgICAgLy8gRmV0Y2ggYSB0b2tlbi4KICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKCiAgICAgIC8vIEFkanVzdCBjb2x1bW4gYW5kIGluZGVudGVkLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgJiYgY29sdW1uID09IDApCiAgICAgICAgaW5kZW50ZWQgPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGNvbHVtbiArPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpewogICAgICAgIGluZGVudGVkID0gY29sdW1uID0gMDsKICAgICAgICAvLyBJZiB0aGUgbGV4aWNhbCBzY29wZSdzIGFsaWduIHByb3BlcnR5IGlzIHN0aWxsIHVuZGVmaW5lZCBhdAogICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxpbmUsIGl0IGlzIGFuIHVuLWFsaWduZWQgc2NvcGUuCiAgICAgICAgaWYgKCEoImFsaWduIiBpbiBsZXhpY2FsKSkKICAgICAgICAgIGxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAvLyBOZXdsaW5lIHRva2VucyBnZXQgYW4gaW5kZW50YXRpb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgLy8gdGhlbS4KICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudEpTKGxleGljYWwpOwogICAgICB9CiAgICAgIC8vIE5vIG1vcmUgcHJvY2Vzc2luZyBmb3IgbWVhbmluZ2xlc3MgdG9rZW5zLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAiY29tbWVudCIpCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBXaGVuIGEgbWVhbmluZ2Z1bCB0b2tlbiBpcyBmb3VuZCBhbmQgdGhlIGxleGljYWwgc2NvcGUncwogICAgICAvLyBhbGlnbiBpcyB1bmRlZmluZWQsIGl0IGlzIGFuIGFsaWduZWQgc2NvcGUuCiAgICAgIGlmICghKCJhbGlnbiIgaW4gbGV4aWNhbCkpCiAgICAgICAgbGV4aWNhbC5hbGlnbiA9IHRydWU7CgogICAgICAvLyBFeGVjdXRlIGFjdGlvbnMgdW50aWwgb25lICdjb25zdW1lcycgdGhlIHRva2VuIGFuZCB3ZSBjYW4KICAgICAgLy8gcmV0dXJuIGl0LgogICAgICB3aGlsZSh0cnVlKSB7CiAgICAgICAgY29uc3VtZSA9IG1hcmtlZCA9IGZhbHNlOwogICAgICAgIC8vIFRha2UgYW5kIGV4ZWN1dGUgdGhlIHRvcG1vc3QgYWN0aW9uLgogICAgICAgIGNjLnBvcCgpKHRva2VuLnR5cGUsIHRva2VuLmNvbnRlbnQpOwogICAgICAgIGlmIChjb25zdW1lKXsKICAgICAgICAgIC8vIE1hcmtlZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICAgICAgICBpZiAobWFya2VkKQogICAgICAgICAgICB0b2tlbi5zdHlsZSA9IG1hcmtlZDsKICAgICAgICAgIC8vIEhlcmUgd2UgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGxvY2FsIGFuZCBnbG9iYWwgdmFyaWFibGVzLgogICAgICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PSAidmFyaWFibGUiICYmIGluU2NvcGUodG9rZW4uY29udGVudCkpCiAgICAgICAgICAgIHRva2VuLnN0eWxlID0gImpzLWxvY2FsdmFyaWFibGUiOwogICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIFRoaXMgbWFrZXMgYSBjb3B5IG9mIHRoZSBwYXJzZXIgc3RhdGUuIEl0IHN0b3JlcyBhbGwgdGhlCiAgICAvLyBzdGF0ZWZ1bCB2YXJpYWJsZXMgaW4gYSBjbG9zdXJlLCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQKICAgIC8vIHdpbGwgcmVzdG9yZSB0aGVtIHdoZW4gY2FsbGVkIHdpdGggYSBuZXcgaW5wdXQgc3RyZWFtLiBOb3RlCiAgICAvLyB0aGF0IHRoZSBjYyBhcnJheSBoYXMgdG8gYmUgY29waWVkLCBiZWNhdXNlIGl0IGlzIGNvbnRhbnRseQogICAgLy8gYmVpbmcgbW9kaWZpZWQuIExleGljYWwgb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQsIGFuZCBjb250ZXh0CiAgICAvLyBvYmplY3RzIGFyZSBub3QgbXV0YXRlZCBpbiBhIGhhcm1mdWwgd2F5LCBzbyB0aGV5IGNhbiBiZSBzaGFyZWQKICAgIC8vIGJldHdlZW4gcnVucyBvZiB0aGUgcGFyc2VyLgogICAgZnVuY3Rpb24gY29weSgpewogICAgICB2YXIgX2NvbnRleHQgPSBjb250ZXh0LCBfbGV4aWNhbCA9IGxleGljYWwsIF9jYyA9IGNjLmNvbmNhdChbXSksIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlOwogIAogICAgICByZXR1cm4gZnVuY3Rpb24gY29weVBhcnNlcihpbnB1dCl7CiAgICAgICAgY29udGV4dCA9IF9jb250ZXh0OwogICAgICAgIGxleGljYWwgPSBfbGV4aWNhbDsKICAgICAgICBjYyA9IF9jYy5jb25jYXQoW10pOyAvLyBjb3BpZXMgdGhlIGFycmF5CiAgICAgICAgY29sdW1uID0gaW5kZW50ZWQgPSAwOwogICAgICAgIHRva2VucyA9IHRva2VuaXplSmF2YVNjcmlwdChpbnB1dCwgX3Rva2VuU3RhdGUpOwogICAgICAgIHJldHVybiBwYXJzZXI7CiAgICAgIH07CiAgICB9CgogICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBwdXNoaW5nIGEgbnVtYmVyIG9mIGFjdGlvbnMgb250byB0aGUgY2MKICAgIC8vIHN0YWNrIGluIHJldmVyc2Ugb3JkZXIuCiAgICBmdW5jdGlvbiBwdXNoKGZzKXsKICAgICAgZm9yICh2YXIgaSA9IGZzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgIGNjLnB1c2goZnNbaV0pOwogICAgfQogICAgLy8gY29udCBhbmQgcGFzcyBhcmUgdXNlZCBieSB0aGUgYWN0aW9uIGZ1bmN0aW9ucyB0byBhZGQgb3RoZXIKICAgIC8vIGFjdGlvbnMgdG8gdGhlIHN0YWNrLiBjb250IHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgdG9rZW4gdG8gYmUKICAgIC8vIGNvbnN1bWVkLCBwYXNzIHdpbGwgbGVhdmUgaXQgZm9yIHRoZSBuZXh0IGFjdGlvbi4KICAgIGZ1bmN0aW9uIGNvbnQoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIHBhc3MoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gZmFsc2U7CiAgICB9CiAgICAvLyBVc2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICBmdW5jdGlvbiBtYXJrKHN0eWxlKXsKICAgICAgbWFya2VkID0gc3R5bGU7CiAgICB9CgogICAgLy8gUHVzaCBhIG5ldyBzY29wZS4gV2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgdGhlIGN1cnJlbnQgc2NvcGUuCiAgICBmdW5jdGlvbiBwdXNoY29udGV4dCgpewogICAgICBjb250ZXh0ID0ge3ByZXY6IGNvbnRleHQsIHZhcnM6IHsidGhpcyI6IHRydWUsICJhcmd1bWVudHMiOiB0cnVlfX07CiAgICB9CiAgICAvLyBQb3Agb2ZmIHRoZSBjdXJyZW50IHNjb3BlLgogICAgZnVuY3Rpb24gcG9wY29udGV4dCgpewogICAgICBjb250ZXh0ID0gY29udGV4dC5wcmV2OwogICAgfQogICAgLy8gUmVnaXN0ZXIgYSB2YXJpYWJsZSBpbiB0aGUgY3VycmVudCBzY29wZS4KICAgIGZ1bmN0aW9uIHJlZ2lzdGVyKHZhcm5hbWUpewogICAgICBpZiAoY29udGV4dCl7CiAgICAgICAgbWFyaygianMtdmFyaWFibGVkZWYiKTsKICAgICAgICBjb250ZXh0LnZhcnNbdmFybmFtZV0gPSB0cnVlOwogICAgICB9CiAgICB9CiAgICAvLyBDaGVjayB3aGV0aGVyIGEgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBzY29wZS4KICAgIGZ1bmN0aW9uIGluU2NvcGUodmFybmFtZSl7CiAgICAgIHZhciBjdXJzb3IgPSBjb250ZXh0OwogICAgICB3aGlsZSAoY3Vyc29yKSB7CiAgICAgICAgaWYgKGN1cnNvci52YXJzW3Zhcm5hbWVdKQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgY3Vyc29yID0gY3Vyc29yLnByZXY7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIAogICAgLy8gUHVzaCBhIG5ldyBsZXhpY2FsIGNvbnRleHQgb2YgdGhlIGdpdmVuIHR5cGUuCiAgICBmdW5jdGlvbiBwdXNobGV4KHR5cGUsIGluZm8pIHsKICAgICAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgbGV4aWNhbCA9IG5ldyBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgbnVsbCwgbGV4aWNhbCwgaW5mbykKICAgICAgfTsKICAgICAgcmVzdWx0LmxleCA9IHRydWU7CiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICAvLyBQb3Agb2ZmIHRoZSBjdXJyZW50IGxleGljYWwgY29udGV4dC4KICAgIGZ1bmN0aW9uIHBvcGxleCgpewogICAgICBpZiAobGV4aWNhbC50eXBlID09ICIpIikKICAgICAgICBpbmRlbnRlZCA9IGxleGljYWwuaW5kZW50ZWQ7CiAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7CiAgICB9CiAgICBwb3BsZXgubGV4ID0gdHJ1ZTsKICAgIC8vIFRoZSAnbGV4JyBmbGFnIG9uIHRoZXNlIGFjdGlvbnMgaXMgdXNlZCBieSB0aGUgJ25leHQnIGZ1bmN0aW9uCiAgICAvLyB0byBrbm93IHRoZXkgY2FuIChhbmQgaGF2ZSB0bykgYmUgcmFuIGJlZm9yZSBtb3Zpbmcgb24gdG8gdGhlCiAgICAvLyBuZXh0IHRva2VuLgogIAogICAgLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBkaXNjYXJkcyB0b2tlbnMgdW50aWwgaXQgZmluZHMgb25lIG9mCiAgICAvLyB0aGUgZ2l2ZW4gdHlwZS4KICAgIGZ1bmN0aW9uIGV4cGVjdCh3YW50ZWQpewogICAgICByZXR1cm4gZnVuY3Rpb24gZXhwZWN0aW5nKHR5cGUpewogICAgICAgIGlmICh0eXBlID09IHdhbnRlZCkgY29udCgpOwogICAgICAgIGVsc2UgaWYgKHdhbnRlZCA9PSAiOyIpIHBhc3MoKTsKICAgICAgICBlbHNlIGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgIH07CiAgICB9CgogICAgLy8gTG9va3MgZm9yIGEgc3RhdGVtZW50LCBhbmQgdGhlbiBjYWxscyBpdHNlbGYuCiAgICBmdW5jdGlvbiBzdGF0ZW1lbnRzKHR5cGUpewogICAgICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQsIHN0YXRlbWVudHMpOwogICAgfQogICAgZnVuY3Rpb24gZXhwcmVzc2lvbnModHlwZSl7CiAgICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24sIGV4cHJlc3Npb25zKTsKICAgIH0KICAgIC8vIERpc3BhdGNoZXMgdmFyaW91cyB0eXBlcyBvZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZQogICAgLy8gY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQocHVzaGxleCgidmFyZGVmIiksIHZhcmRlZjEsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGEiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGIiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwdXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICI7IikgY29udCgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmb3IiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwZWN0KCIoIiksIHB1c2hsZXgoIikiKSwgZm9yc3BlYzEsIGV4cGVjdCgiKSIpLCBwb3BsZXgsIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAidmFyaWFibGUiKSBjb250KHB1c2hsZXgoInN0YXQiKSwgbWF5YmVsYWJlbCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInN3aXRjaCIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBleHBlY3QoInsiKSwgYmxvY2ssIHBvcGxleCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2FzZSIpIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJkZWZhdWx0IikgY29udChleHBlY3QoIjoiKSk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhdGNoIikgY29udChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBleHBlY3QoIigiKSwgZnVuYXJnLCBleHBlY3QoIikiKSwgc3RhdGVtZW50LCBwb3BsZXgsIHBvcGNvbnRleHQpOwogICAgICBlbHNlIHBhc3MocHVzaGxleCgic3RhdCIpLCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAgIH0KICAgIC8vIERpc3BhdGNoIGV4cHJlc3Npb24gdHlwZXMuCiAgICBmdW5jdGlvbiBleHByZXNzaW9uKHR5cGUpewogICAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIGNvbnQobWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgY29udChmdW5jdGlvbmRlZik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImtleXdvcmQgYyIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KHB1c2hsZXgoIikiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCIpIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiWyIpIGNvbnQocHVzaGxleCgiXSIpLCBjb21tYXNlcChleHByZXNzaW9uLCAiXSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwdXNobGV4KCJ9IiksIGNvbW1hc2VwKG9ianByb3AsICJ9IiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgY29udCgpOwogICAgfQogICAgLy8gQ2FsbGVkIGZvciBwbGFjZXMgd2hlcmUgb3BlcmF0b3JzLCBmdW5jdGlvbiBjYWxscywgb3IKICAgIC8vIHN1YnNjcmlwdHMgYXJlIHZhbGlkLiBXaWxsIHNraXAgb24gdG8gdGhlIG5leHQgYWN0aW9uIGlmIG5vbmUKICAgIC8vIGlzIGZvdW5kLgogICAgZnVuY3Rpb24gbWF5YmVvcGVyYXRvcih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIgJiYgL1wrXCt8LS0vLnRlc3QodmFsdWUpKSBjb250KG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIjsiKSBwYXNzKCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIikiKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLiIpIGNvbnQocHJvcGVydHksIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJbIikgY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiXSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgfQogICAgLy8gV2hlbiBhIHN0YXRlbWVudCBzdGFydHMgd2l0aCBhIHZhcmlhYmxlIG5hbWUsIGl0IG1pZ2h0IGJlIGEKICAgIC8vIGxhYmVsLiBJZiBubyBjb2xvbiBmb2xsb3dzLCBpdCdzIGEgcmVndWxhciBzdGF0ZW1lbnQuCiAgICBmdW5jdGlvbiBtYXliZWxhYmVsKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAiOiIpIGNvbnQocG9wbGV4LCBzdGF0ZW1lbnQpOwogICAgICBlbHNlIHBhc3MobWF5YmVvcGVyYXRvciwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBQcm9wZXJ0eSBuYW1lcyBuZWVkIHRvIGhhdmUgdGhlaXIgc3R5bGUgYWRqdXN0ZWQgLS0gdGhlCiAgICAvLyB0b2tlbml6ZXIgdGhpbmtzIHRoZXkgYXJlIHZhcmlhYmxlcy4KICAgIGZ1bmN0aW9uIHByb3BlcnR5KHR5cGUpewogICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7bWFyaygianMtcHJvcGVydHkiKTsgY29udCgpO30KICAgIH0KICAgIC8vIFRoaXMgcGFyc2VzIGEgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBpbiBhbiBvYmplY3QgbGl0ZXJhbC4KICAgIGZ1bmN0aW9uIG9ianByb3AodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIG1hcmsoImpzLXByb3BlcnR5Iik7CiAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgY29udChleHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBQYXJzZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdGhpbmdzIHRoYXQgYXJlIHJlY29nbml6ZWQKICAgIC8vIGJ5IHRoZSAnd2hhdCcgYXJndW1lbnQuCiAgICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpewogICAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSAiLCIpIGNvbnQod2hhdCwgcHJvY2VlZCk7CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBlbmQpIGNvbnQoKTsKICAgICAgICBlbHNlIGNvbnQoZXhwZWN0KGVuZCkpOwogICAgICB9CiAgICAgIHJldHVybiBmdW5jdGlvbiBjb21tYVNlcGFyYXRlZCh0eXBlKSB7CiAgICAgICAgaWYgKHR5cGUgPT0gZW5kKSBjb250KCk7CiAgICAgICAgZWxzZSBwYXNzKHdoYXQsIHByb2NlZWQpOwogICAgICB9OwogICAgfQogICAgLy8gTG9vayBmb3Igc3RhdGVtZW50cyB1bnRpbCBhIGNsb3NpbmcgYnJhY2UgaXMgZm91bmQuCiAgICBmdW5jdGlvbiBibG9jayh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gIn0iKSBjb250KCk7CiAgICAgIGVsc2UgcGFzcyhzdGF0ZW1lbnQsIGJsb2NrKTsKICAgIH0KICAgIC8vIFZhcmlhYmxlIGRlZmluaXRpb25zIGFyZSBzcGxpdCBpbnRvIHR3byBhY3Rpb25zIC0tIDEgbG9va3MgZm9yCiAgICAvLyBhIG5hbWUgb3IgdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiwgMiBsb29rcyBmb3IgYW4gJz0nIHNpZ24gb3IKICAgIC8vIGEgY29tbWEuCiAgICBmdW5jdGlvbiB2YXJkZWYxKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KHZhcmRlZjIpO30KICAgICAgZWxzZSBjb250KCk7CiAgICB9CiAgICBmdW5jdGlvbiB2YXJkZWYyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHZhbHVlID09ICI9IikgY29udChleHByZXNzaW9uLCB2YXJkZWYyKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLCIpIGNvbnQodmFyZGVmMSk7CiAgICB9CiAgICAvLyBGb3IgbG9vcHMuCiAgICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQodmFyZGVmMSwgZm9yc3BlYzIpOwogICAgICBlbHNlIGlmICh0eXBlID09ICI7IikgcGFzcyhmb3JzcGVjMik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChmb3JtYXliZWluKTsKICAgICAgZWxzZSBwYXNzKGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1heWJlaW4odHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gIjsiKSBjb250KGZvcnNwZWMzKTsKICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMyk7CiAgICB9CiAgICBmdW5jdGlvbiBmb3JzcGVjMyh0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICIpIikgcGFzcygpOwogICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBBIGZ1bmN0aW9uIGRlZmluaXRpb24gY3JlYXRlcyBhIG5ldyBjb250ZXh0LCBhbmQgdGhlIHZhcmlhYmxlcwogICAgLy8gaW4gaXRzIGFyZ3VtZW50IGxpc3QgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGlzIGNvbnRleHQuCiAgICBmdW5jdGlvbiBmdW5jdGlvbmRlZih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpe3JlZ2lzdGVyKHZhbHVlKTsgY29udChmdW5jdGlvbmRlZik7fQogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNoY29udGV4dCwgY29tbWFzZXAoZnVuYXJnLCAiKSIpLCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOwogICAgfQogICAgZnVuY3Rpb24gZnVuYXJnKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KCk7fQogICAgfQogIAogICAgcmV0dXJuIHBhcnNlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZUpTLAogICAgZWxlY3RyaWNDaGFyczogInt9OiIsCiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKG9iaikgewogICAgICBpZiAob2JqLmpzb24gIT0gbnVsbCkganNvbiA9IG9iai5qc29uOwogICAgfQogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsesparql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFNwYXJxbFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgZnVuY3Rpb24gd29yZFJlZ2V4cCh3b3JkcykgewogICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiICsgd29yZHMuam9pbigifCIpICsgIikkIiwgImkiKTsKICB9CiAgdmFyIG9wcyA9IHdvcmRSZWdleHAoWyJzdHIiLCAibGFuZyIsICJsYW5nbWF0Y2hlcyIsICJkYXRhdHlwZSIsICJib3VuZCIsICJzYW1ldGVybSIsICJpc2lyaSIsICJpc3VyaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpc2JsYW5rIiwgImlzbGl0ZXJhbCIsICJ1bmlvbiIsICJhIl0pOwogIHZhciBrZXl3b3JkcyA9IHdvcmRSZWdleHAoWyJiYXNlIiwgInByZWZpeCIsICJzZWxlY3QiLCAiZGlzdGluY3QiLCAicmVkdWNlZCIsICJjb25zdHJ1Y3QiLCAiZGVzY3JpYmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc2siLCAiZnJvbSIsICJuYW1lZCIsICJ3aGVyZSIsICJvcmRlciIsICJsaW1pdCIsICJvZmZzZXQiLCAiZmlsdGVyIiwgIm9wdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhcGgiLCAiYnkiLCAiYXNjIiwgImRlc2MiXSk7CiAgdmFyIG9wZXJhdG9yQ2hhcnMgPSAvWyorXC08Pj0mfF0vOwoKICB2YXIgdG9rZW5pemVTcGFycWwgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICBpZiAoY2ggPT0gIiQiIHx8IGNoID09ICI/IikgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcZF0vKTsKICAgICAgICByZXR1cm4gInNwLXZhciI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIjwiICYmICFzb3VyY2UubWF0Y2hlcygvW1xzXHUwMGEwPV0vKSkgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXlxzXHUwMGEwPl0vKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiPiIpKSBzb3VyY2UubmV4dCgpOwogICAgICAgIHJldHVybiAic3AtdXJpIjsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikgewogICAgICAgIHNldFN0YXRlKGluTGl0ZXJhbChjaCkpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGVsc2UgaWYgKC9be31cKFwpLFwuO1xbXF1dLy50ZXN0KGNoKSkgewogICAgICAgIHJldHVybiAic3AtcHVuYyI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIiMiKSB7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgcmV0dXJuICJzcC1jb21tZW50IjsKICAgICAgfQogICAgICBlbHNlIGlmIChvcGVyYXRvckNoYXJzLnRlc3QoY2gpKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMob3BlcmF0b3JDaGFycyk7CiAgICAgICAgcmV0dXJuICJzcC1vcGVyYXRvciI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIjoiKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkXC5fXC1dLyk7CiAgICAgICAgcmV0dXJuICJzcC1wcmVmaXhlZCI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tfXHdcZF0vKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiOiIpKSB7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkX1wtXS8pOwogICAgICAgICAgcmV0dXJuICJzcC1wcmVmaXhlZCI7CiAgICAgICAgfQogICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpLCB0eXBlOwogICAgICAgIGlmIChvcHMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAic3Atb3BlcmF0b3IiOwogICAgICAgIGVsc2UgaWYgKGtleXdvcmRzLnRlc3Qod29yZCkpCiAgICAgICAgICB0eXBlID0gInNwLWtleXdvcmQiOwogICAgICAgIGVsc2UKICAgICAgICAgIHR5cGUgPSAic3Atd29yZCI7CiAgICAgICAgcmV0dXJuIHtzdHlsZTogdHlwZSwgY29udGVudDogd29yZH07CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpbkxpdGVyYWwocXVvdGUpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgaWYgKGNoID09IHF1b3RlICYmICFlc2NhcGVkKSB7CiAgICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIGNoID09ICJcXCI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAic3AtbGl0ZXJhbCI7CiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBub3JtYWwpOwogICAgfTsKICB9KSgpOwoKICBmdW5jdGlvbiBpbmRlbnRTcGFycWwoY29udGV4dCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gbmV4dENoYXJzICYmIG5leHRDaGFycy5jaGFyQXQoMCk7CiAgICAgIGlmICgvW1xdXH1dLy50ZXN0KGZpcnN0Q2hhcikpCiAgICAgICAgd2hpbGUgKGNvbnRleHQgJiYgY29udGV4dC50eXBlID09ICJwYXR0ZXJuIikgY29udGV4dCA9IGNvbnRleHQucHJldjsKCiAgICAgIHZhciBjbG9zaW5nID0gY29udGV4dCAmJiBmaXJzdENoYXIgPT0gbWF0Y2hpbmdbY29udGV4dC50eXBlXTsKICAgICAgaWYgKCFjb250ZXh0KQogICAgICAgIHJldHVybiAwOwogICAgICBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT0gInBhdHRlcm4iKQogICAgICAgIHJldHVybiBjb250ZXh0LmNvbDsKICAgICAgZWxzZSBpZiAoY29udGV4dC5hbGlnbikKICAgICAgICByZXR1cm4gY29udGV4dC5jb2wgLSAoY2xvc2luZyA/IGNvbnRleHQud2lkdGggOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBjb250ZXh0LmluZGVudCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VTcGFycWwoc291cmNlKSB7CiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVTcGFycWwoc291cmNlKTsKICAgIHZhciBjb250ZXh0ID0gbnVsbCwgaW5kZW50ID0gMCwgY29sID0gMDsKICAgIGZ1bmN0aW9uIHB1c2hDb250ZXh0KHR5cGUsIHdpZHRoKSB7CiAgICAgIGNvbnRleHQgPSB7cHJldjogY29udGV4dCwgaW5kZW50OiBpbmRlbnQsIGNvbDogY29sLCB0eXBlOiB0eXBlLCB3aWR0aDogd2lkdGh9OwogICAgfQogICAgZnVuY3Rpb24gcG9wQ29udGV4dCgpIHsKICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgIH0KCiAgICB2YXIgaXRlciA9IHsKICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKSwgdHlwZSA9IHRva2VuLnN0eWxlLCBjb250ZW50ID0gdG9rZW4uY29udGVudCwgd2lkdGggPSB0b2tlbi52YWx1ZS5sZW5ndGg7CgogICAgICAgIGlmIChjb250ZW50ID09ICJcbiIpIHsKICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50U3BhcnFsKGNvbnRleHQpOwogICAgICAgICAgaW5kZW50ID0gY29sID0gMDsKICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuYWxpZ24gPT0gbnVsbCkgY29udGV4dC5hbGlnbiA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0eXBlID09ICJ3aGl0ZXNwYWNlIiAmJiBjb2wgPT0gMCkgewogICAgICAgICAgaW5kZW50ID0gd2lkdGg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgIT0gInNwLWNvbW1lbnQiICYmIGNvbnRleHQgJiYgY29udGV4dC5hbGlnbiA9PSBudWxsKSB7CiAgICAgICAgICBjb250ZXh0LmFsaWduID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChjb250ZW50ICE9ICJcbiIpIGNvbCArPSB3aWR0aDsKCiAgICAgICAgaWYgKC9bXFtce1woXS8udGVzdChjb250ZW50KSkgewogICAgICAgICAgcHVzaENvbnRleHQoY29udGVudCwgd2lkdGgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgvW1xdXH1cKV0vLnRlc3QoY29udGVudCkpIHsKICAgICAgICAgIHdoaWxlIChjb250ZXh0ICYmIGNvbnRleHQudHlwZSA9PSAicGF0dGVybiIpCiAgICAgICAgICAgIHBvcENvbnRleHQoKTsKICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRlbnQgPT0gbWF0Y2hpbmdbY29udGV4dC50eXBlXSkKICAgICAgICAgICAgcG9wQ29udGV4dCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjb250ZW50ID09ICIuIiAmJiBjb250ZXh0ICYmIGNvbnRleHQudHlwZSA9PSAicGF0dGVybiIpIHsKICAgICAgICAgIHBvcENvbnRleHQoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoKHR5cGUgPT0gInNwLXdvcmQiIHx8IHR5cGUgPT0gInNwLXByZWZpeGVkIiB8fCB0eXBlID09ICJzcC11cmkiIHx8IHR5cGUgPT0gInNwLXZhciIgfHwgdHlwZSA9PSAic3AtbGl0ZXJhbCIpICYmCiAgICAgICAgICAgICAgICAgY29udGV4dCAmJiAvW1x7XFtdLy50ZXN0KGNvbnRleHQudHlwZSkpIHsKICAgICAgICAgIHB1c2hDb250ZXh0KCJwYXR0ZXJuIiwgd2lkdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICB9LAoKICAgICAgY29weTogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIF9jb250ZXh0ID0gY29udGV4dCwgX2luZGVudCA9IGluZGVudCwgX2NvbCA9IGNvbCwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGU7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSkgewogICAgICAgICAgdG9rZW5zID0gdG9rZW5pemVTcGFycWwoc291cmNlLCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgICBjb250ZXh0ID0gX2NvbnRleHQ7CiAgICAgICAgICBpbmRlbnQgPSBfaW5kZW50OwogICAgICAgICAgY29sID0gX2NvbDsKICAgICAgICAgIHJldHVybiBpdGVyOwogICAgICAgIH07CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gaXRlcjsKICB9CgogIHJldHVybiB7bWFrZTogcGFyc2VTcGFycWwsIGVsZWN0cmljQ2hhcnM6ICJ9XSJ9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsexml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVGhpcyBmaWxlIGRlZmluZXMgYW4gWE1MIHBhcnNlciwgd2l0aCBhIGZldyBrbHVkZ2VzIHRvIG1ha2UgaXQKICogdXNlYWJsZSBmb3IgSFRNTC4gYXV0b1NlbGZDbG9zZXJzIGRlZmluZXMgYSBzZXQgb2YgdGFnIG5hbWVzIHRoYXQKICogYXJlIGV4cGVjdGVkIHRvIG5vdCBoYXZlIGEgY2xvc2luZyB0YWcsIGFuZCBkb05vdEluZGVudCBzcGVjaWZpZXMKICogdGhlIHRhZ3MgaW5zaWRlIG9mIHdoaWNoIG5vIGluZGVudGF0aW9uIHNob3VsZCBoYXBwZW4gKHNlZSBDb25maWcKICogb2JqZWN0KS4gVGhlc2UgY2FuIGJlIGRpc2FibGVkIGJ5IHBhc3NpbmcgdGhlIGVkaXRvciBhbiBvYmplY3QgbGlrZQogKiB7dXNlSFRNTEtsdWRnZXM6IGZhbHNlfSBhcyBwYXJzZXJDb25maWcgb3B0aW9uLgogKi8KCnZhciBYTUxQYXJzZXIgPSBFZGl0b3IuUGFyc2VyID0gKGZ1bmN0aW9uKCkgewogIHZhciBLbHVkZ2VzID0gewogICAgYXV0b1NlbGZDbG9zZXJzOiB7ImJyIjogdHJ1ZSwgImltZyI6IHRydWUsICJociI6IHRydWUsICJsaW5rIjogdHJ1ZSwgImlucHV0IjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJtZXRhIjogdHJ1ZSwgImNvbCI6IHRydWUsICJmcmFtZSI6IHRydWUsICJiYXNlIjogdHJ1ZSwgImFyZWEiOiB0cnVlfSwKICAgIGRvTm90SW5kZW50OiB7InByZSI6IHRydWUsICIhY2RhdGEiOiB0cnVlfQogIH07CiAgdmFyIE5vS2x1ZGdlcyA9IHthdXRvU2VsZkNsb3NlcnM6IHt9LCBkb05vdEluZGVudDogeyIhY2RhdGEiOiB0cnVlfX07CiAgdmFyIFVzZUtsdWRnZXMgPSBLbHVkZ2VzOwogIHZhciBhbGlnbkNEQVRBID0gZmFsc2U7CgogIC8vIFNpbXBsZSBzdGF0ZWZ1bCB0b2tlbml6ZXIgZm9yIFhNTCBkb2N1bWVudHMuIFJldHVybnMgYQogIC8vIE1vY2hpS2l0LXN0eWxlIGl0ZXJhdG9yLCB3aXRoIGEgc3RhdGUgcHJvcGVydHkgdGhhdCBjb250YWlucyBhCiAgLy8gZnVuY3Rpb24gZW5jYXBzdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gU2VlIHRva2VuaXplLmpzLgogIHZhciB0b2tlbml6ZVhNTCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGluVGV4dChzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgIGlmIChjaCA9PSAiPCIpIHsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiISIpKSB7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIlsiKSkgewogICAgICAgICAgICBpZiAoc291cmNlLmxvb2tBaGVhZCgiW0NEQVRBWyIsIHRydWUpKSB7CiAgICAgICAgICAgICAgc2V0U3RhdGUoaW5CbG9jaygieG1sLWNkYXRhIiwgIl1dPiIpKTsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gInhtbC10ZXh0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoc291cmNlLmxvb2tBaGVhZCgiLS0iLCB0cnVlKSkgewogICAgICAgICAgICBzZXRTdGF0ZShpbkJsb2NrKCJ4bWwtY29tbWVudCIsICItLT4iKSk7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAieG1sLXRleHQiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzb3VyY2UuZXF1YWxzKCI/IikpIHsKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW1x3XC5fXC1dLyk7CiAgICAgICAgICBzZXRTdGF0ZShpbkJsb2NrKCJ4bWwtcHJvY2Vzc2luZyIsICI/PiIpKTsKICAgICAgICAgIHJldHVybiAieG1sLXByb2Nlc3NpbmciOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIvIikpIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBzZXRTdGF0ZShpblRhZyk7CiAgICAgICAgICByZXR1cm4gInhtbC1wdW5jdHVhdGlvbiI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICImIikgewogICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICBpZiAoc291cmNlLm5leHQoKSA9PSAiOyIpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gInhtbC1lbnRpdHkiOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXiY8XG5dLyk7CiAgICAgICAgcmV0dXJuICJ4bWwtdGV4dCI7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpblRhZyhzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgIGlmIChjaCA9PSAiPiIpIHsKICAgICAgICBzZXRTdGF0ZShpblRleHQpOwogICAgICAgIHJldHVybiAieG1sLXB1bmN0dWF0aW9uIjsKICAgICAgfQogICAgICBlbHNlIGlmICgvWz9cL10vLnRlc3QoY2gpICYmIHNvdXJjZS5lcXVhbHMoIj4iKSkgewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgc2V0U3RhdGUoaW5UZXh0KTsKICAgICAgICByZXR1cm4gInhtbC1wdW5jdHVhdGlvbiI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIj0iKSB7CiAgICAgICAgcmV0dXJuICJ4bWwtcHVuY3R1YXRpb24iOwogICAgICB9CiAgICAgIGVsc2UgaWYgKC9bXCdcIl0vLnRlc3QoY2gpKSB7CiAgICAgICAgc2V0U3RhdGUoaW5BdHRyaWJ1dGUoY2gpKTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW15cc1x1MDBhMD08PlwiXCdcLz9dLyk7CiAgICAgICAgcmV0dXJuICJ4bWwtbmFtZSI7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpbkF0dHJpYnV0ZShxdW90ZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICBpZiAoc291cmNlLm5leHQoKSA9PSBxdW90ZSkgewogICAgICAgICAgICBzZXRTdGF0ZShpblRhZyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gInhtbC1hdHRyaWJ1dGUiOwogICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIGluQmxvY2soc3R5bGUsIHRlcm1pbmF0b3IpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWQodGVybWluYXRvciwgdHJ1ZSkpIHsKICAgICAgICAgICAgc2V0U3RhdGUoaW5UZXh0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc3R5bGU7CiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBpblRleHQpOwogICAgfTsKICB9KSgpOwoKICAvLyBUaGUgcGFyc2VyLiBUaGUgc3RydWN0dXJlIG9mIHRoaXMgZnVuY3Rpb24gbGFyZ2VseSBmb2xsb3dzIHRoYXQgb2YKICAvLyBwYXJzZUphdmFTY3JpcHQgaW4gcGFyc2VqYXZhc2NyaXB0LmpzICh0aGVyZSBpcyBhY3R1YWxseSBhIGJpdCBtb3JlCiAgLy8gc2hhcmVkIGNvZGUgdGhhbiBJJ2QgbGlrZSksIGJ1dCBpdCBpcyBxdWl0ZSBhIGJpdCBzaW1wbGVyLgogIGZ1bmN0aW9uIHBhcnNlWE1MKHNvdXJjZSkgewogICAgdmFyIHRva2VucyA9IHRva2VuaXplWE1MKHNvdXJjZSksIHRva2VuOwogICAgdmFyIGNjID0gW2Jhc2VdOwogICAgdmFyIHRva2VuTnIgPSAwLCBpbmRlbnRlZCA9IDA7CiAgICB2YXIgY3VycmVudFRhZyA9IG51bGwsIGNvbnRleHQgPSBudWxsOwogICAgdmFyIGNvbnN1bWU7CiAgICAKICAgIGZ1bmN0aW9uIHB1c2goZnMpIHsKICAgICAgZm9yICh2YXIgaSA9IGZzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgIGNjLnB1c2goZnNbaV0pOwogICAgfQogICAgZnVuY3Rpb24gY29udCgpIHsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIHBhc3MoKSB7CiAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgY29uc3VtZSA9IGZhbHNlOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmtFcnIoKSB7CiAgICAgIHRva2VuLnN0eWxlICs9ICIgeG1sLWVycm9yIjsKICAgIH0KICAgIGZ1bmN0aW9uIGV4cGVjdCh0ZXh0KSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzdHlsZSwgY29udGVudCkgewogICAgICAgIGlmIChjb250ZW50ID09IHRleHQpIGNvbnQoKTsKICAgICAgICBlbHNlIHttYXJrRXJyKCk7IGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7fQogICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHB1c2hDb250ZXh0KHRhZ25hbWUsIHN0YXJ0T2ZMaW5lKSB7CiAgICAgIHZhciBub0luZGVudCA9IFVzZUtsdWRnZXMuZG9Ob3RJbmRlbnQuaGFzT3duUHJvcGVydHkodGFnbmFtZSkgfHwgKGNvbnRleHQgJiYgY29udGV4dC5ub0luZGVudCk7CiAgICAgIGNvbnRleHQgPSB7cHJldjogY29udGV4dCwgbmFtZTogdGFnbmFtZSwgaW5kZW50OiBpbmRlbnRlZCwgc3RhcnRPZkxpbmU6IHN0YXJ0T2ZMaW5lLCBub0luZGVudDogbm9JbmRlbnR9OwogICAgfQogICAgZnVuY3Rpb24gcG9wQ29udGV4dCgpIHsKICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgIH0KICAgIGZ1bmN0aW9uIGNvbXB1dGVJbmRlbnRhdGlvbihiYXNlQ29udGV4dCkgewogICAgICByZXR1cm4gZnVuY3Rpb24obmV4dENoYXJzLCBjdXJyZW50KSB7CiAgICAgICAgdmFyIGNvbnRleHQgPSBiYXNlQ29udGV4dDsKICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Lm5vSW5kZW50KQogICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgICAgaWYgKGFsaWduQ0RBVEEgJiYgLzwhXFtDREFUQVxbLy50ZXN0KG5leHRDaGFycykpCiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoY29udGV4dCAmJiAvXjxcLy8udGVzdChuZXh0Q2hhcnMpKQogICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgICAgICB3aGlsZSAoY29udGV4dCAmJiAhY29udGV4dC5zdGFydE9mTGluZSkKICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CiAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgICByZXR1cm4gY29udGV4dC5pbmRlbnQgKyBpbmRlbnRVbml0OwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiAwOwogICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIGJhc2UoKSB7CiAgICAgIHJldHVybiBwYXNzKGVsZW1lbnQsIGJhc2UpOwogICAgfQogICAgdmFyIGhhcm1sZXNzVG9rZW5zID0geyJ4bWwtdGV4dCI6IHRydWUsICJ4bWwtZW50aXR5IjogdHJ1ZSwgInhtbC1jb21tZW50IjogdHJ1ZSwgInhtbC1wcm9jZXNzaW5nIjogdHJ1ZX07CiAgICBmdW5jdGlvbiBlbGVtZW50KHN0eWxlLCBjb250ZW50KSB7CiAgICAgIGlmIChjb250ZW50ID09ICI8IikgY29udCh0YWduYW1lLCBhdHRyaWJ1dGVzLCBlbmR0YWcodG9rZW5OciA9PSAxKSk7CiAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gIjwvIikgY29udChjbG9zZXRhZ25hbWUsIGV4cGVjdCgiPiIpKTsKICAgICAgZWxzZSBpZiAoc3R5bGUgPT0gInhtbC1jZGF0YSIpIHsKICAgICAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC5uYW1lICE9ICIhY2RhdGEiKSBwdXNoQ29udGV4dCgiIWNkYXRhIik7CiAgICAgICAgaWYgKC9cXVxdPiQvLnRlc3QoY29udGVudCkpIHBvcENvbnRleHQoKTsKICAgICAgICBjb250KCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoaGFybWxlc3NUb2tlbnMuaGFzT3duUHJvcGVydHkoc3R5bGUpKSBjb250KCk7CiAgICAgIGVsc2Uge21hcmtFcnIoKTsgY29udCgpO30KICAgIH0KICAgIGZ1bmN0aW9uIHRhZ25hbWUoc3R5bGUsIGNvbnRlbnQpIHsKICAgICAgaWYgKHN0eWxlID09ICJ4bWwtbmFtZSIpIHsKICAgICAgICBjdXJyZW50VGFnID0gY29udGVudC50b0xvd2VyQ2FzZSgpOwogICAgICAgIHRva2VuLnN0eWxlID0gInhtbC10YWduYW1lIjsKICAgICAgICBjb250KCk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgY3VycmVudFRhZyA9IG51bGw7CiAgICAgICAgcGFzcygpOwogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBjbG9zZXRhZ25hbWUoc3R5bGUsIGNvbnRlbnQpIHsKICAgICAgaWYgKHN0eWxlID09ICJ4bWwtbmFtZSIpIHsKICAgICAgICB0b2tlbi5zdHlsZSA9ICJ4bWwtdGFnbmFtZSI7CiAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGVudC50b0xvd2VyQ2FzZSgpID09IGNvbnRleHQubmFtZSkgcG9wQ29udGV4dCgpOwogICAgICAgIGVsc2UgbWFya0VycigpOwogICAgICB9CiAgICAgIGNvbnQoKTsKICAgIH0KICAgIGZ1bmN0aW9uIGVuZHRhZyhzdGFydE9mTGluZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24oc3R5bGUsIGNvbnRlbnQpIHsKICAgICAgICBpZiAoY29udGVudCA9PSAiLz4iIHx8IChjb250ZW50ID09ICI+IiAmJiBVc2VLbHVkZ2VzLmF1dG9TZWxmQ2xvc2Vycy5oYXNPd25Qcm9wZXJ0eShjdXJyZW50VGFnKSkpIGNvbnQoKTsKICAgICAgICBlbHNlIGlmIChjb250ZW50ID09ICI+Iikge3B1c2hDb250ZXh0KGN1cnJlbnRUYWcsIHN0YXJ0T2ZMaW5lKTsgY29udCgpO30KICAgICAgICBlbHNlIHttYXJrRXJyKCk7IGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7fQogICAgICB9OwogICAgfQogICAgZnVuY3Rpb24gYXR0cmlidXRlcyhzdHlsZSkgewogICAgICBpZiAoc3R5bGUgPT0gInhtbC1uYW1lIikge3Rva2VuLnN0eWxlID0gInhtbC1hdHRuYW1lIjsgY29udChhdHRyaWJ1dGUsIGF0dHJpYnV0ZXMpO30KICAgICAgZWxzZSBwYXNzKCk7CiAgICB9CiAgICBmdW5jdGlvbiBhdHRyaWJ1dGUoc3R5bGUsIGNvbnRlbnQpIHsKICAgICAgaWYgKGNvbnRlbnQgPT0gIj0iKSBjb250KHZhbHVlKTsKICAgICAgZWxzZSBpZiAoY29udGVudCA9PSAiPiIgfHwgY29udGVudCA9PSAiLz4iKSBwYXNzKGVuZHRhZyk7CiAgICAgIGVsc2UgcGFzcygpOwogICAgfQogICAgZnVuY3Rpb24gdmFsdWUoc3R5bGUpIHsKICAgICAgaWYgKHN0eWxlID09ICJ4bWwtYXR0cmlidXRlIikgY29udCh2YWx1ZSk7CiAgICAgIGVsc2UgcGFzcygpOwogICAgfQoKICAgIHJldHVybiB7CiAgICAgIGluZGVudGF0aW9uOiBmdW5jdGlvbigpIHtyZXR1cm4gaW5kZW50ZWQ7fSwKCiAgICAgIG5leHQ6IGZ1bmN0aW9uKCl7CiAgICAgICAgdG9rZW4gPSB0b2tlbnMubmV4dCgpOwogICAgICAgIGlmICh0b2tlbi5zdHlsZSA9PSAid2hpdGVzcGFjZSIgJiYgdG9rZW5OciA9PSAwKQogICAgICAgICAgaW5kZW50ZWQgPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgICAgZWxzZQogICAgICAgICAgdG9rZW5OcisrOwogICAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpIHsKICAgICAgICAgIGluZGVudGVkID0gdG9rZW5OciA9IDA7CiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGNvbXB1dGVJbmRlbnRhdGlvbihjb250ZXh0KTsKICAgICAgICB9CgogICAgICAgIGlmICh0b2tlbi5zdHlsZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAieG1sLWNvbW1lbnQiKQogICAgICAgICAgcmV0dXJuIHRva2VuOwoKICAgICAgICB3aGlsZSh0cnVlKXsKICAgICAgICAgIGNvbnN1bWUgPSBmYWxzZTsKICAgICAgICAgIGNjLnBvcCgpKHRva2VuLnN0eWxlLCB0b2tlbi5jb250ZW50KTsKICAgICAgICAgIGlmIChjb25zdW1lKSByZXR1cm4gdG9rZW47CiAgICAgICAgfQogICAgICB9LAoKICAgICAgY29weTogZnVuY3Rpb24oKXsKICAgICAgICB2YXIgX2NjID0gY2MuY29uY2F0KFtdKSwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGUsIF9jb250ZXh0ID0gY29udGV4dDsKICAgICAgICB2YXIgcGFyc2VyID0gdGhpczsKICAgICAgICAKICAgICAgICByZXR1cm4gZnVuY3Rpb24oaW5wdXQpewogICAgICAgICAgY2MgPSBfY2MuY29uY2F0KFtdKTsKICAgICAgICAgIHRva2VuTnIgPSBpbmRlbnRlZCA9IDA7CiAgICAgICAgICBjb250ZXh0ID0gX2NvbnRleHQ7CiAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZVhNTChpbnB1dCwgX3Rva2VuU3RhdGUpOwogICAgICAgICAgcmV0dXJuIHBhcnNlcjsKICAgICAgICB9OwogICAgICB9CiAgICB9OwogIH0KCiAgcmV0dXJuIHsKICAgIG1ha2U6IHBhcnNlWE1MLAogICAgZWxlY3RyaWNDaGFyczogIi8iLAogICAgY29uZmlndXJlOiBmdW5jdGlvbihjb25maWcpIHsKICAgICAgaWYgKGNvbmZpZy51c2VIVE1MS2x1ZGdlcyAhPSBudWxsKQogICAgICAgIFVzZUtsdWRnZXMgPSBjb25maWcudXNlSFRNTEtsdWRnZXMgPyBLbHVkZ2VzIDogTm9LbHVkZ2VzOwogICAgICBpZiAoY29uZmlnLmFsaWduQ0RBVEEpCiAgICAgICAgYWxpZ25DREFUQSA9IGNvbmZpZy5hbGlnbkNEQVRBOwogICAgfQogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogRnVuY3Rpb25hbGl0eSBmb3IgZmluZGluZywgc3RvcmluZywgYW5kIHJlc3RvcmluZyBzZWxlY3Rpb25zCiAqCiAqIFRoaXMgZG9lcyBub3QgcHJvdmlkZSBhIGdlbmVyaWMgQVBJLCBqdXN0IHRoZSBtaW5pbWFsIGZ1bmN0aW9uYWxpdHkKICogcmVxdWlyZWQgYnkgdGhlIENvZGVNaXJyb3Igc3lzdGVtLgogKi8KCi8vIE5hbWVzcGFjZSBvYmplY3QuCnZhciBzZWxlY3QgPSB7fTsKCihmdW5jdGlvbigpIHsKICBzZWxlY3QuaWVfc2VsZWN0aW9uID0gZG9jdW1lbnQuc2VsZWN0aW9uICYmIGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZUNvbGxlY3Rpb247CgogIC8vIEZpbmQgdGhlICd0b3AtbGV2ZWwnIChkZWZpbmVkIGFzICdhIGRpcmVjdCBjaGlsZCBvZiB0aGUgbm9kZQogIC8vIHBhc3NlZCBhcyB0aGUgdG9wIGFyZ3VtZW50Jykgbm9kZSB0aGF0IHRoZSBnaXZlbiBub2RlIGlzCiAgLy8gY29udGFpbmVkIGluLiBSZXR1cm4gbnVsbCBpZiB0aGUgZ2l2ZW4gbm9kZSBpcyBub3QgaW5zaWRlIHRoZSB0b3AKICAvLyBub2RlLgogIGZ1bmN0aW9uIHRvcExldmVsTm9kZUF0KG5vZGUsIHRvcCkgewogICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9IHRvcCkKICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKICAgIHJldHVybiBub2RlOwogIH0KCiAgLy8gRmluZCB0aGUgdG9wLWxldmVsIG5vZGUgdGhhdCBjb250YWlucyB0aGUgbm9kZSBiZWZvcmUgdGhpcyBvbmUuCiAgZnVuY3Rpb24gdG9wTGV2ZWxOb2RlQmVmb3JlKG5vZGUsIHRvcCkgewogICAgd2hpbGUgKCFub2RlLnByZXZpb3VzU2libGluZyAmJiBub2RlLnBhcmVudE5vZGUgIT0gdG9wKQogICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgcmV0dXJuIHRvcExldmVsTm9kZUF0KG5vZGUucHJldmlvdXNTaWJsaW5nLCB0b3ApOwogIH0KCiAgdmFyIGZvdXJTcGFjZXMgPSAiXHUwMGEwXHUwMGEwXHUwMGEwXHUwMGEwIjsKCiAgc2VsZWN0LnNjcm9sbFRvTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIGN1cnNvcikgewogICAgaWYgKCFub2RlKSByZXR1cm47CiAgICB2YXIgZWxlbWVudCA9IG5vZGUsIGJvZHkgPSBkb2N1bWVudC5ib2R5LAogICAgICAgIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgYXRFbmQgPSAhZWxlbWVudC5uZXh0U2libGluZyB8fCAhZWxlbWVudC5uZXh0U2libGluZy5uZXh0U2libGluZwogICAgICAgICAgICAgICAgfHwgIWVsZW1lbnQubmV4dFNpYmxpbmcubmV4dFNpYmxpbmcubmV4dFNpYmxpbmc7CiAgICAvLyBJbiBPcGVyYSAoYW5kIHJlY2VudCBXZWJraXQgdmVyc2lvbnMpLCBCUiBlbGVtZW50cyAqYWx3YXlzKgogICAgLy8gaGF2ZSBhIG9mZnNldFRvcCBwcm9wZXJ0eSBvZiB6ZXJvLgogICAgdmFyIGNvbXBlbnNhdGVIYWNrID0gMDsKICAgIHdoaWxlIChlbGVtZW50ICYmICFlbGVtZW50Lm9mZnNldFRvcCkgewogICAgICBjb21wZW5zYXRlSGFjaysrOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmc7CiAgICB9CiAgICAvLyBhdEVuZCBpcyBhbm90aGVyIGtsdWRnZSBmb3IgdGhlc2UgYnJvd3NlcnMgLS0gaWYgdGhlIGN1cnNvciBpcwogICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQsIGFuZCB0aGUgbm9kZSBkb2Vzbid0IGhhdmUgYW4KICAgIC8vIG9mZnNldCwganVzdCBzY3JvbGwgdG8gdGhlIGVuZC4KICAgIGlmIChjb21wZW5zYXRlSGFjayA9PSAwKSBhdEVuZCA9IGZhbHNlOwoKICAgIC8vIFdlYktpdCBoYXMgYSBiYWQgaGFiaXQgb2YgKHNvbWV0aW1lcykgaGFwcGlseSByZXR1cm5pbmcgYm9ndXMKICAgIC8vIG9mZnNldHMgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGp1c3QgYmVlbiBjaGFuZ2VkLiBUaGlzIHNlZW1zIHRvCiAgICAvLyBhbHdheXMgYmUgNS81LCBzbyB3ZSBkb24ndCB1c2UgdGhvc2UuCiAgICBpZiAod2Via2l0ICYmIGVsZW1lbnQgJiYgZWxlbWVudC5vZmZzZXRUb3AgPT0gNSAmJiBlbGVtZW50Lm9mZnNldExlZnQgPT0gNSkKICAgICAgcmV0dXJuOwoKICAgIHZhciB5ID0gY29tcGVuc2F0ZUhhY2sgKiAoZWxlbWVudCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMCksIHggPSAwLAogICAgICAgIHdpZHRoID0gKG5vZGUgPyBub2RlLm9mZnNldFdpZHRoIDogMCksIHBvcyA9IGVsZW1lbnQ7CiAgICB3aGlsZSAocG9zICYmIHBvcy5vZmZzZXRQYXJlbnQpIHsKICAgICAgeSArPSBwb3Mub2Zmc2V0VG9wOwogICAgICAvLyBEb24ndCBjb3VudCBYIG9mZnNldCBmb3IgPGJyPiBub2RlcwogICAgICBpZiAoIWlzQlIocG9zKSkKICAgICAgICB4ICs9IHBvcy5vZmZzZXRMZWZ0OwogICAgICBwb3MgPSBwb3Mub2Zmc2V0UGFyZW50OwogICAgfQoKICAgIHZhciBzY3JvbGxfeCA9IGJvZHkuc2Nyb2xsTGVmdCB8fCBodG1sLnNjcm9sbExlZnQgfHwgMCwKICAgICAgICBzY3JvbGxfeSA9IGJvZHkuc2Nyb2xsVG9wIHx8IGh0bWwuc2Nyb2xsVG9wIHx8IDAsCiAgICAgICAgc2Nyb2xsID0gZmFsc2UsIHNjcmVlbl93aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIHx8IGh0bWwuY2xpZW50V2lkdGggfHwgMDsKCiAgICBpZiAoY3Vyc29yIHx8IHdpZHRoIDwgc2NyZWVuX3dpZHRoKSB7CiAgICAgIGlmIChjdXJzb3IpIHsKICAgICAgICB2YXIgb2ZmID0gc2VsZWN0Lm9mZnNldEluTm9kZShub2RlKSwgc2l6ZSA9IG5vZGVUZXh0KG5vZGUpLmxlbmd0aDsKICAgICAgICBpZiAoc2l6ZSkgeCArPSB3aWR0aCAqIChvZmYgLyBzaXplKTsKICAgICAgfQogICAgICB2YXIgc2NyZWVuX3ggPSB4IC0gc2Nyb2xsX3g7CiAgICAgIGlmIChzY3JlZW5feCA8IDAgfHwgc2NyZWVuX3ggPiBzY3JlZW5fd2lkdGgpIHsKICAgICAgICBzY3JvbGxfeCA9IHg7CiAgICAgICAgc2Nyb2xsID0gdHJ1ZTsKICAgICAgfQogICAgfQogICAgdmFyIHNjcmVlbl95ID0geSAtIHNjcm9sbF95OwogICAgaWYgKHNjcmVlbl95IDwgMCB8fCBhdEVuZCB8fCBzY3JlZW5feSA+ICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgaHRtbC5jbGllbnRIZWlnaHQgfHwgMCkgLSA1MCkgewogICAgICBzY3JvbGxfeSA9IGF0RW5kID8gMWU2IDogeTsKICAgICAgc2Nyb2xsID0gdHJ1ZTsKICAgIH0KICAgIGlmIChzY3JvbGwpIHdpbmRvdy5zY3JvbGxUbyhzY3JvbGxfeCwgc2Nyb2xsX3kpOwogIH07CgogIHNlbGVjdC5zY3JvbGxUb0N1cnNvciA9IGZ1bmN0aW9uKGNvbnRhaW5lcikgewogICAgc2VsZWN0LnNjcm9sbFRvTm9kZShzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZShjb250YWluZXIsIHRydWUpIHx8IGNvbnRhaW5lci5maXJzdENoaWxkLCB0cnVlKTsKICB9OwoKICAvLyBVc2VkIHRvIHByZXZlbnQgcmVzdG9yaW5nIGEgc2VsZWN0aW9uIHdoZW4gd2UgZG8gbm90IG5lZWQgdG8uCiAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSBudWxsOwoKICBzZWxlY3Quc25hcHNob3RDaGFuZ2VkID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoY3VycmVudFNlbGVjdGlvbikgY3VycmVudFNlbGVjdGlvbi5jaGFuZ2VkID0gdHJ1ZTsKICB9OwoKICAvLyBUaGlzIGlzIGNhbGxlZCBieSB0aGUgY29kZSBpbiBlZGl0b3IuanMgd2hlbmV2ZXIgaXQgaXMgcmVwbGFjaW5nCiAgLy8gYSB0ZXh0IG5vZGUuIFRoZSBmdW5jdGlvbiBzZWVzIHdoZXRoZXIgdGhlIGdpdmVuIG9sZE5vZGUgaXMgcGFydAogIC8vIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgYW5kIHVwZGF0ZXMgdGhpcyBzZWxlY3Rpb24gaWYgaXQgaXMuCiAgLy8gQmVjYXVzZSBub2RlcyBhcmUgb2Z0ZW4gb25seSBwYXJ0aWFsbHkgcmVwbGFjZWQsIHRoZSBsZW5ndGggb2YKICAvLyB0aGUgcGFydCB0aGF0IGdldHMgcmVwbGFjZWQgaGFzIHRvIGJlIHRha2VuIGludG8gYWNjb3VudCAtLSB0aGUKICAvLyBzZWxlY3Rpb24gbWlnaHQgc3RheSBpbiB0aGUgb2xkTm9kZSBpZiB0aGUgbmV3Tm9kZSBpcyBzbWFsbGVyCiAgLy8gdGhhbiB0aGUgc2VsZWN0aW9uJ3Mgb2Zmc2V0LiBUaGUgb2Zmc2V0IGFyZ3VtZW50IGlzIG5lZWRlZCBpbgogIC8vIGNhc2UgdGhlIHNlbGVjdGlvbiBkb2VzIG1vdmUgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCB0aGUgZ2l2ZW4KICAvLyBsZW5ndGggaXMgbm90IHRoZSB3aG9sZSBsZW5ndGggb2YgdGhlIG5ldyBub2RlIChwYXJ0IG9mIGl0IG1pZ2h0CiAgLy8gaGF2ZSBiZWVuIHVzZWQgdG8gcmVwbGFjZSBhbm90aGVyIG5vZGUpLgogIHNlbGVjdC5zbmFwc2hvdFJlcGxhY2VOb2RlID0gZnVuY3Rpb24oZnJvbSwgdG8sIGxlbmd0aCwgb2Zmc2V0KSB7CiAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pIHJldHVybjsKCiAgICBmdW5jdGlvbiByZXBsYWNlKHBvaW50KSB7CiAgICAgIGlmIChmcm9tID09IHBvaW50Lm5vZGUpIHsKICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmNoYW5nZWQgPSB0cnVlOwogICAgICAgIGlmIChsZW5ndGggJiYgcG9pbnQub2Zmc2V0ID4gbGVuZ3RoKSB7CiAgICAgICAgICBwb2ludC5vZmZzZXQgLT0gbGVuZ3RoOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHBvaW50Lm5vZGUgPSB0bzsKICAgICAgICAgIHBvaW50Lm9mZnNldCArPSAob2Zmc2V0IHx8IDApOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmVwbGFjZShjdXJyZW50U2VsZWN0aW9uLnN0YXJ0KTsKICAgIHJlcGxhY2UoY3VycmVudFNlbGVjdGlvbi5lbmQpOwogIH07CgogIHNlbGVjdC5zbmFwc2hvdE1vdmUgPSBmdW5jdGlvbihmcm9tLCB0bywgZGlzdGFuY2UsIHJlbGF0aXZlLCBpZkF0U3RhcnQpIHsKICAgIGlmICghY3VycmVudFNlbGVjdGlvbikgcmV0dXJuOwoKICAgIGZ1bmN0aW9uIG1vdmUocG9pbnQpIHsKICAgICAgaWYgKGZyb20gPT0gcG9pbnQubm9kZSAmJiAoIWlmQXRTdGFydCB8fCBwb2ludC5vZmZzZXQgPT0gMCkpIHsKICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmNoYW5nZWQgPSB0cnVlOwogICAgICAgIHBvaW50Lm5vZGUgPSB0bzsKICAgICAgICBpZiAocmVsYXRpdmUpIHBvaW50Lm9mZnNldCA9IE1hdGgubWF4KDAsIHBvaW50Lm9mZnNldCArIGRpc3RhbmNlKTsKICAgICAgICBlbHNlIHBvaW50Lm9mZnNldCA9IGRpc3RhbmNlOwogICAgICB9CiAgICB9CiAgICBtb3ZlKGN1cnJlbnRTZWxlY3Rpb24uc3RhcnQpOwogICAgbW92ZShjdXJyZW50U2VsZWN0aW9uLmVuZCk7CiAgfTsKCiAgLy8gTW9zdCBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gdHdvIHdheXMsIG9uZSBmb3IgdGhlIElFIHNlbGVjdGlvbgogIC8vIG1vZGVsLCBvbmUgZm9yIHRoZSBXM0Mgb25lLgogIGlmIChzZWxlY3QuaWVfc2VsZWN0aW9uKSB7CiAgICBmdW5jdGlvbiBzZWxlY3Rpb25Ob2RlKHN0YXJ0KSB7CiAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpOwogICAgICByYW5nZS5jb2xsYXBzZShzdGFydCk7CgogICAgICBmdW5jdGlvbiBub2RlQWZ0ZXIobm9kZSkgewogICAgICAgIHZhciBmb3VuZCA9IG51bGw7CiAgICAgICAgd2hpbGUgKCFmb3VuZCAmJiBub2RlKSB7CiAgICAgICAgICBmb3VuZCA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbm9kZUF0U3RhcnRPZihmb3VuZCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIG5vZGVBdFN0YXJ0T2Yobm9kZSkgewogICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUuZmlyc3RDaGlsZCkgbm9kZSA9IG5vZGUuZmlyc3RDaGlsZDsKICAgICAgICByZXR1cm4ge25vZGU6IG5vZGUsIG9mZnNldDogMH07CiAgICAgIH0KCiAgICAgIHZhciBjb250YWluaW5nID0gcmFuZ2UucGFyZW50RWxlbWVudCgpOwogICAgICBpZiAoIWlzQW5jZXN0b3IoZG9jdW1lbnQuYm9keSwgY29udGFpbmluZykpIHJldHVybiBudWxsOwogICAgICBpZiAoIWNvbnRhaW5pbmcuZmlyc3RDaGlsZCkgcmV0dXJuIG5vZGVBdFN0YXJ0T2YoY29udGFpbmluZyk7CgogICAgICB2YXIgd29ya2luZyA9IHJhbmdlLmR1cGxpY2F0ZSgpOwogICAgICB3b3JraW5nLm1vdmVUb0VsZW1lbnRUZXh0KGNvbnRhaW5pbmcpOwogICAgICB3b3JraW5nLmNvbGxhcHNlKHRydWUpOwogICAgICBmb3IgKHZhciBjdXIgPSBjb250YWluaW5nLmZpcnN0Q2hpbGQ7IGN1cjsgY3VyID0gY3VyLm5leHRTaWJsaW5nKSB7CiAgICAgICAgaWYgKGN1ci5ub2RlVHlwZSA9PSAzKSB7CiAgICAgICAgICB2YXIgc2l6ZSA9IGN1ci5ub2RlVmFsdWUubGVuZ3RoOwogICAgICAgICAgd29ya2luZy5tb3ZlKCJjaGFyYWN0ZXIiLCBzaXplKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICB3b3JraW5nLm1vdmVUb0VsZW1lbnRUZXh0KGN1cik7CiAgICAgICAgICB3b3JraW5nLmNvbGxhcHNlKGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIHZhciBkaXIgPSByYW5nZS5jb21wYXJlRW5kUG9pbnRzKCJTdGFydFRvU3RhcnQiLCB3b3JraW5nKTsKICAgICAgICBpZiAoZGlyID09IDApIHJldHVybiBub2RlQWZ0ZXIoY3VyKTsKICAgICAgICBpZiAoZGlyID09IDEpIGNvbnRpbnVlOwogICAgICAgIGlmIChjdXIubm9kZVR5cGUgIT0gMykgcmV0dXJuIG5vZGVBdFN0YXJ0T2YoY3VyKTsKCiAgICAgICAgd29ya2luZy5zZXRFbmRQb2ludCgiU3RhcnRUb0VuZCIsIHJhbmdlKTsKICAgICAgICByZXR1cm4ge25vZGU6IGN1ciwgb2Zmc2V0OiBzaXplIC0gd29ya2luZy50ZXh0Lmxlbmd0aH07CiAgICAgIH0KICAgICAgcmV0dXJuIG5vZGVBZnRlcihjb250YWluaW5nKTsKICAgIH0KCiAgICBzZWxlY3QubWFya1NlbGVjdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICBjdXJyZW50U2VsZWN0aW9uID0gbnVsbDsKICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LnNlbGVjdGlvbjsKICAgICAgaWYgKCFzZWwpIHJldHVybjsKICAgICAgdmFyIHN0YXJ0ID0gc2VsZWN0aW9uTm9kZSh0cnVlKSwKICAgICAgICAgIGVuZCA9IHNlbGVjdGlvbk5vZGUoZmFsc2UpOwogICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHJldHVybjsKICAgICAgY3VycmVudFNlbGVjdGlvbiA9IHtzdGFydDogc3RhcnQsIGVuZDogZW5kLCBjaGFuZ2VkOiBmYWxzZX07CiAgICB9OwoKICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFjdXJyZW50U2VsZWN0aW9uIHx8ICFjdXJyZW50U2VsZWN0aW9uLmNoYW5nZWQpIHJldHVybjsKCiAgICAgIGZ1bmN0aW9uIG1ha2VSYW5nZShwb2ludCkgewogICAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJhbmdlKCksCiAgICAgICAgICAgIG5vZGUgPSBwb2ludC5ub2RlOwogICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgcmFuZ2UubW92ZVRvRWxlbWVudFRleHQoZG9jdW1lbnQuYm9keSk7CiAgICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5vZGUubm9kZVR5cGUgPT0gMykgewogICAgICAgICAgcmFuZ2UubW92ZVRvRWxlbWVudFRleHQobm9kZS5wYXJlbnROb2RlKTsKICAgICAgICAgIHZhciBvZmZzZXQgPSBwb2ludC5vZmZzZXQ7CiAgICAgICAgICB3aGlsZSAobm9kZS5wcmV2aW91c1NpYmxpbmcpIHsKICAgICAgICAgICAgbm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nOwogICAgICAgICAgICBvZmZzZXQgKz0gKG5vZGUuaW5uZXJUZXh0IHx8ICIiKS5sZW5ndGg7CiAgICAgICAgICB9CiAgICAgICAgICByYW5nZS5tb3ZlKCJjaGFyYWN0ZXIiLCBvZmZzZXQpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpOwogICAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByYW5nZTsKICAgICAgfQoKICAgICAgdmFyIHN0YXJ0ID0gbWFrZVJhbmdlKGN1cnJlbnRTZWxlY3Rpb24uc3RhcnQpLCBlbmQgPSBtYWtlUmFuZ2UoY3VycmVudFNlbGVjdGlvbi5lbmQpOwogICAgICBzdGFydC5zZXRFbmRQb2ludCgiU3RhcnRUb0VuZCIsIGVuZCk7CiAgICAgIHN0YXJ0LnNlbGVjdCgpOwogICAgfTsKCiAgICBzZWxlY3Qub2Zmc2V0SW5Ob2RlID0gZnVuY3Rpb24obm9kZSkgewogICAgICB2YXIgc2VsID0gZG9jdW1lbnQuc2VsZWN0aW9uOwogICAgICBpZiAoIXNlbCkgcmV0dXJuIDA7CiAgICAgIHZhciByYW5nZSA9IHNlbC5jcmVhdGVSYW5nZSgpLCByYW5nZTIgPSByYW5nZS5kdXBsaWNhdGUoKTsKICAgICAgdHJ5IHtyYW5nZTIubW92ZVRvRWxlbWVudFRleHQobm9kZSk7fSBjYXRjaChlKXtyZXR1cm4gMDt9CiAgICAgIHJhbmdlLnNldEVuZFBvaW50KCJTdGFydFRvU3RhcnQiLCByYW5nZTIpOwogICAgICByZXR1cm4gcmFuZ2UudGV4dC5sZW5ndGg7CiAgICB9OwoKICAgIC8vIEdldCB0aGUgdG9wLWxldmVsIG5vZGUgdGhhdCBvbmUgZW5kIG9mIHRoZSBjdXJzb3IgaXMgaW5zaWRlIG9yCiAgICAvLyBhZnRlci4gTm90ZSB0aGF0IHRoaXMgcmV0dXJucyBmYWxzZSBmb3IgJ25vIGN1cnNvcicsIGFuZCBudWxsCiAgICAvLyBmb3IgJ3N0YXJ0IG9mIGRvY3VtZW50Jy4KICAgIHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlID0gZnVuY3Rpb24oY29udGFpbmVyLCBzdGFydCkgewogICAgICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQuc2VsZWN0aW9uOwogICAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuIGZhbHNlOwoKICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCksIHJhbmdlMiA9IHJhbmdlLmR1cGxpY2F0ZSgpOwogICAgICByYW5nZS5jb2xsYXBzZShzdGFydCk7CiAgICAgIHZhciBhcm91bmQgPSByYW5nZS5wYXJlbnRFbGVtZW50KCk7CiAgICAgIGlmIChhcm91bmQgJiYgaXNBbmNlc3Rvcihjb250YWluZXIsIGFyb3VuZCkpIHsKICAgICAgICAvLyBPbmx5IHVzZSB0aGlzIG5vZGUgaWYgdGhlIHNlbGVjdGlvbiBpcyBub3QgYXQgaXRzIHN0YXJ0LgogICAgICAgIHJhbmdlMi5tb3ZlVG9FbGVtZW50VGV4dChhcm91bmQpOwogICAgICAgIGlmIChyYW5nZS5jb21wYXJlRW5kUG9pbnRzKCJTdGFydFRvU3RhcnQiLCByYW5nZTIpID09IDEpCiAgICAgICAgICByZXR1cm4gdG9wTGV2ZWxOb2RlQXQoYXJvdW5kLCBjb250YWluZXIpOwogICAgICB9CgogICAgICAvLyBNb3ZlIHRoZSBzdGFydCBvZiBhIHJhbmdlIHRvIHRoZSBzdGFydCBvZiBhIG5vZGUsCiAgICAgIC8vIGNvbXBlbnNhdGluZyBmb3IgdGhlIGZhY3QgdGhhdCB5b3UgY2FuJ3QgY2FsbAogICAgICAvLyBtb3ZlVG9FbGVtZW50VGV4dCB3aXRoIHRleHQgbm9kZXMuCiAgICAgIGZ1bmN0aW9uIG1vdmVUb05vZGVTdGFydChyYW5nZSwgbm9kZSkgewogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMpIHsKICAgICAgICAgIHZhciBjb3VudCA9IDAsIGN1ciA9IG5vZGUucHJldmlvdXNTaWJsaW5nOwogICAgICAgICAgd2hpbGUgKGN1ciAmJiBjdXIubm9kZVR5cGUgPT0gMykgewogICAgICAgICAgICBjb3VudCArPSBjdXIubm9kZVZhbHVlLmxlbmd0aDsKICAgICAgICAgICAgY3VyID0gY3VyLnByZXZpb3VzU2libGluZzsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChjdXIpIHsKICAgICAgICAgICAgdHJ5e3JhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KGN1cik7fQogICAgICAgICAgICBjYXRjaChlKXtyZXR1cm4gZmFsc2U7fQogICAgICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUucGFyZW50Tm9kZSk7CiAgICAgICAgICBpZiAoY291bnQpIHJhbmdlLm1vdmUoImNoYXJhY3RlciIsIGNvdW50KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICB0cnl7cmFuZ2UubW92ZVRvRWxlbWVudFRleHQobm9kZSk7fQogICAgICAgICAgY2F0Y2goZSl7cmV0dXJuIGZhbHNlO30KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KCiAgICAgIC8vIERvIGEgYmluYXJ5IHNlYXJjaCB0aHJvdWdoIHRoZSBjb250YWluZXIgb2JqZWN0LCBjb21wYXJpbmcKICAgICAgLy8gdGhlIHN0YXJ0IG9mIGVhY2ggbm9kZSB0byB0aGUgc2VsZWN0aW9uCiAgICAgIHZhciBzdGFydCA9IDAsIGVuZCA9IGNvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7CiAgICAgIHdoaWxlIChzdGFydCA8IGVuZCkgewogICAgICAgIHZhciBtaWRkbGUgPSBNYXRoLmNlaWwoKGVuZCArIHN0YXJ0KSAvIDIpLCBub2RlID0gY29udGFpbmVyLmNoaWxkTm9kZXNbbWlkZGxlXTsKICAgICAgICBpZiAoIW5vZGUpIHJldHVybiBmYWxzZTsgLy8gRG9uJ3QgYXNrLiBJRTYgbWFuYWdlcyB0aGlzIHNvbWV0aW1lcy4KICAgICAgICBpZiAoIW1vdmVUb05vZGVTdGFydChyYW5nZTIsIG5vZGUpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKHJhbmdlLmNvbXBhcmVFbmRQb2ludHMoIlN0YXJ0VG9TdGFydCIsIHJhbmdlMikgPT0gMSkKICAgICAgICAgIHN0YXJ0ID0gbWlkZGxlOwogICAgICAgIGVsc2UKICAgICAgICAgIGVuZCA9IG1pZGRsZSAtIDE7CiAgICAgIH0KICAgICAgCiAgICAgIGlmIChzdGFydCA9PSAwKSB7CiAgICAgICAgdmFyIHRlc3QxID0gc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCksIHRlc3QyID0gdGVzdDEuZHVwbGljYXRlKCk7CiAgICAgICAgdGVzdDIubW92ZVRvRWxlbWVudFRleHQoY29udGFpbmVyKTsKICAgICAgICBpZiAodGVzdDEuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb1N0YXJ0IiwgdGVzdDIpID09IDApCiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gY29udGFpbmVyLmNoaWxkTm9kZXNbc3RhcnRdIHx8IG51bGw7CiAgICB9OwoKICAgIC8vIFBsYWNlIHRoZSBjdXJzb3IgYWZ0ZXIgdGhpcy5zdGFydC4gVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuCiAgICAvLyBtYW51YWxseSBtb3ZpbmcgdGhlIGN1cnNvciBpbnN0ZWFkIG9mIHJlc3RvcmluZyBpdCB0byBpdHMgb2xkCiAgICAvLyBwb3NpdGlvbi4KICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIGNvbnRhaW5lcikgewogICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpOwogICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlIHx8IGNvbnRhaW5lcik7CiAgICAgIHJhbmdlLmNvbGxhcHNlKCFub2RlKTsKICAgICAgcmFuZ2Uuc2VsZWN0KCk7CiAgICB9OwoKICAgIHNlbGVjdC5zb21ldGhpbmdTZWxlY3RlZCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgc2VsID0gZG9jdW1lbnQuc2VsZWN0aW9uOwogICAgICByZXR1cm4gc2VsICYmIChzZWwuY3JlYXRlUmFuZ2UoKS50ZXh0ICE9ICIiKTsKICAgIH07CgogICAgZnVuY3Rpb24gaW5zZXJ0QXRDdXJzb3IoaHRtbCkgewogICAgICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQuc2VsZWN0aW9uOwogICAgICBpZiAoc2VsZWN0aW9uKSB7CiAgICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgcmFuZ2UucGFzdGVIVE1MKGh0bWwpOwogICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsKICAgICAgICByYW5nZS5zZWxlY3QoKTsKICAgICAgfQogICAgfQoKICAgIC8vIFVzZWQgdG8gbm9ybWFsaXplIHRoZSBlZmZlY3Qgb2YgdGhlIGVudGVyIGtleSwgc2luY2UgYnJvd3NlcnMKICAgIC8vIGRvIHdpZGVseSBkaWZmZXJlbnQgdGhpbmdzIHdoZW4gcHJlc3NpbmcgZW50ZXIgaW4gZGVzaWduTW9kZS4KICAgIHNlbGVjdC5pbnNlcnROZXdsaW5lQXRDdXJzb3IgPSBmdW5jdGlvbigpIHsKICAgICAgaW5zZXJ0QXRDdXJzb3IoIjxicj4iKTsKICAgIH07CgogICAgc2VsZWN0Lmluc2VydFRhYkF0Q3Vyc29yID0gZnVuY3Rpb24oKSB7CiAgICAgIGluc2VydEF0Q3Vyc29yKGZvdXJTcGFjZXMpOwogICAgfTsKCiAgICAvLyBHZXQgdGhlIEJSIG5vZGUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIG9uIHdoaWNoIHRoZSBjdXJzb3IKICAgIC8vIGN1cnJlbnRseSBpcywgYW5kIHRoZSBvZmZzZXQgaW50byB0aGUgbGluZS4gUmV0dXJucyBudWxsIGFzCiAgICAvLyBub2RlIGlmIGN1cnNvciBpcyBvbiBmaXJzdCBsaW5lLgogICAgc2VsZWN0LmN1cnNvclBvcyA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgc3RhcnQpIHsKICAgICAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjsKICAgICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybiBudWxsOwoKICAgICAgdmFyIHRvcE5vZGUgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZShjb250YWluZXIsIHN0YXJ0KTsKICAgICAgd2hpbGUgKHRvcE5vZGUgJiYgIWlzQlIodG9wTm9kZSkpCiAgICAgICAgdG9wTm9kZSA9IHRvcE5vZGUucHJldmlvdXNTaWJsaW5nOwoKICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCksIHJhbmdlMiA9IHJhbmdlLmR1cGxpY2F0ZSgpOwogICAgICByYW5nZS5jb2xsYXBzZShzdGFydCk7CiAgICAgIGlmICh0b3BOb2RlKSB7CiAgICAgICAgcmFuZ2UyLm1vdmVUb0VsZW1lbnRUZXh0KHRvcE5vZGUpOwogICAgICAgIHJhbmdlMi5jb2xsYXBzZShmYWxzZSk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgLy8gV2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLCB3ZSBjYW4gZ2V0IGFsbCBraW5kcyBvZiBmdW5reSBlcnJvcnMgaGVyZS4KICAgICAgICB0cnkgeyByYW5nZTIubW92ZVRvRWxlbWVudFRleHQoY29udGFpbmVyKTsgfQogICAgICAgIGNhdGNoIChlKSB7IHJldHVybiBudWxsOyB9CiAgICAgICAgcmFuZ2UyLmNvbGxhcHNlKHRydWUpOwogICAgICB9CiAgICAgIHJhbmdlLnNldEVuZFBvaW50KCJTdGFydFRvU3RhcnQiLCByYW5nZTIpOwoKICAgICAgcmV0dXJuIHtub2RlOiB0b3BOb2RlLCBvZmZzZXQ6IHJhbmdlLnRleHQubGVuZ3RofTsKICAgIH07CgogICAgc2VsZWN0LnNldEN1cnNvclBvcyA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgZnJvbSwgdG8pIHsKICAgICAgZnVuY3Rpb24gcmFuZ2VBdChwb3MpIHsKICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpOwogICAgICAgIGlmICghcG9zLm5vZGUpIHsKICAgICAgICAgIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KGNvbnRhaW5lcik7CiAgICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChwb3Mubm9kZSk7CiAgICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgfQogICAgICAgIHJhbmdlLm1vdmUoImNoYXJhY3RlciIsIHBvcy5vZmZzZXQpOwogICAgICAgIHJldHVybiByYW5nZTsKICAgICAgfQoKICAgICAgdmFyIHJhbmdlID0gcmFuZ2VBdChmcm9tKTsKICAgICAgaWYgKHRvICYmIHRvICE9IGZyb20pCiAgICAgICAgcmFuZ2Uuc2V0RW5kUG9pbnQoIkVuZFRvRW5kIiwgcmFuZ2VBdCh0bykpOwogICAgICByYW5nZS5zZWxlY3QoKTsKICAgIH0KCiAgICAvLyBTb21lIGhhY2tzIGZvciBzdG9yaW5nIGFuZCByZS1zdG9yaW5nIHRoZSBzZWxlY3Rpb24gd2hlbiB0aGUgZWRpdG9yIGxvc2VzIGFuZCByZWdhaW5zIGZvY3VzLgogICAgc2VsZWN0LmdldEJvb2ttYXJrID0gZnVuY3Rpb24gKGNvbnRhaW5lcikgewogICAgICB2YXIgZnJvbSA9IHNlbGVjdC5jdXJzb3JQb3MoY29udGFpbmVyLCB0cnVlKSwgdG8gPSBzZWxlY3QuY3Vyc29yUG9zKGNvbnRhaW5lciwgZmFsc2UpOwogICAgICBpZiAoZnJvbSAmJiB0bykgcmV0dXJuIHtmcm9tOiBmcm9tLCB0bzogdG99OwogICAgfTsKCiAgICAvLyBSZXN0b3JlIGEgc3RvcmVkIHNlbGVjdGlvbi4KICAgIHNlbGVjdC5zZXRCb29rbWFyayA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgbWFyaykgewogICAgICBpZiAoIW1hcmspIHJldHVybjsKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyhjb250YWluZXIsIG1hcmsuZnJvbSwgbWFyay50byk7CiAgICB9OwogIH0KICAvLyBXM0MgbW9kZWwKICBlbHNlIHsKICAgIC8vIEZpbmQgdGhlIG5vZGUgcmlnaHQgYXQgdGhlIGN1cnNvciwgbm90IG9uZSBvZiBpdHMKICAgIC8vIGFuY2VzdG9ycyB3aXRoIGEgc3VpdGFibGUgb2Zmc2V0LiBUaGlzIGdvZXMgZG93biB0aGUgRE9NIHRyZWUKICAgIC8vIHVudGlsIGEgJ2xlYWYnIGlzIHJlYWNoZWQgKG9yIGlzIGl0ICp1cCogdGhlIERPTSB0cmVlPykuCiAgICBmdW5jdGlvbiBpbm5lck5vZGUobm9kZSwgb2Zmc2V0KSB7CiAgICAgIHdoaWxlIChub2RlLm5vZGVUeXBlICE9IDMgJiYgIWlzQlIobm9kZSkpIHsKICAgICAgICB2YXIgbmV3Tm9kZSA9IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXRdIHx8IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICB3aGlsZSAoIW5ld05vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7CiAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgICAgICAgbmV3Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgfQogICAgICAgIG5vZGUgPSBuZXdOb2RlOwogICAgICAgIGlmICghbmV3Tm9kZSkgYnJlYWs7CiAgICAgIH0KICAgICAgcmV0dXJuIHtub2RlOiBub2RlLCBvZmZzZXQ6IG9mZnNldH07CiAgICB9CgogICAgLy8gU3RvcmUgc3RhcnQgYW5kIGVuZCBub2RlcywgYW5kIG9mZnNldHMgd2l0aGluIHRoZXNlLCBhbmQgcmVmZXIKICAgIC8vIGJhY2sgdG8gdGhlIHNlbGVjdGlvbiBvYmplY3QgZnJvbSB0aG9zZSBub2Rlcywgc28gdGhhdCB0aGlzCiAgICAvLyBvYmplY3QgY2FuIGJlIHVwZGF0ZWQgd2hlbiB0aGUgbm9kZXMgYXJlIHJlcGxhY2VkIGJlZm9yZSB0aGUKICAgIC8vIHNlbGVjdGlvbiBpcyByZXN0b3JlZC4KICAgIHNlbGVjdC5tYXJrU2VsZWN0aW9uID0gZnVuY3Rpb24gKCkgewogICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PSAwKQogICAgICAgIHJldHVybiAoY3VycmVudFNlbGVjdGlvbiA9IG51bGwpOwogICAgICB2YXIgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKCiAgICAgIGN1cnJlbnRTZWxlY3Rpb24gPSB7CiAgICAgICAgc3RhcnQ6IGlubmVyTm9kZShyYW5nZS5zdGFydENvbnRhaW5lciwgcmFuZ2Uuc3RhcnRPZmZzZXQpLAogICAgICAgIGVuZDogaW5uZXJOb2RlKHJhbmdlLmVuZENvbnRhaW5lciwgcmFuZ2UuZW5kT2Zmc2V0KSwKICAgICAgICBjaGFuZ2VkOiBmYWxzZQogICAgICB9OwogICAgfTsKCiAgICBzZWxlY3Quc2VsZWN0TWFya2VkID0gZnVuY3Rpb24gKCkgewogICAgICB2YXIgY3MgPSBjdXJyZW50U2VsZWN0aW9uOwogICAgICAvLyBvbiB3ZWJraXQtYmFzZWQgYnJvd3NlcnMsIGl0IGlzIGFwcGFyZW50bHkgcG9zc2libGUgdGhhdCB0aGUKICAgICAgLy8gc2VsZWN0aW9uIGdldHMgcmVzZXQgZXZlbiB3aGVuIGEgbm9kZSB0aGF0IGlzIG5vdCBvbmUgb2YgdGhlCiAgICAgIC8vIGVuZHBvaW50cyBnZXQgbWVzc2VkIHdpdGguIHRoZSBtb3N0IGNvbW1vbiBzaXR1YXRpb24gd2hlcmUKICAgICAgLy8gdGhpcyBvY2N1cnMgaXMgd2hlbiBhIHNlbGVjdGlvbiBpcyBkZWxldGVkIG9yIG92ZXJ3aXR0ZW4uIHdlCiAgICAgIC8vIGNoZWNrIGZvciB0aGF0IGhlcmUuCiAgICAgIGZ1bmN0aW9uIGZvY3VzSXNzdWUoKSB7CiAgICAgICAgaWYgKGNzLnN0YXJ0Lm5vZGUgPT0gY3MuZW5kLm5vZGUgJiYgY3Muc3RhcnQub2Zmc2V0ID09IGNzLmVuZC5vZmZzZXQpIHsKICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLCBwb2ludCA9IGlubmVyTm9kZShyYW5nZS5zdGFydENvbnRhaW5lciwgcmFuZ2Uuc3RhcnRPZmZzZXQpOwogICAgICAgICAgcmV0dXJuIGNzLnN0YXJ0Lm5vZGUgIT0gcG9pbnQubm9kZSB8fCBjcy5zdGFydC5vZmZzZXQgIT0gcG9pbnQub2Zmc2V0OwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoIWNzIHx8ICEoY3MuY2hhbmdlZCB8fCAod2Via2l0ICYmIGZvY3VzSXNzdWUoKSkpKSByZXR1cm47CiAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CgogICAgICBmdW5jdGlvbiBzZXRQb2ludChwb2ludCwgd2hpY2gpIHsKICAgICAgICBpZiAocG9pbnQubm9kZSkgewogICAgICAgICAgLy8gU29tZSBtYWdpYyB0byBnZW5lcmFsaXplIHRoZSBzZXR0aW5nIG9mIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAvLyBvZiBhIHJhbmdlLgogICAgICAgICAgaWYgKHBvaW50Lm9mZnNldCA9PSAwKQogICAgICAgICAgICByYW5nZVsic2V0IiArIHdoaWNoICsgIkJlZm9yZSJdKHBvaW50Lm5vZGUpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICByYW5nZVsic2V0IiArIHdoaWNoXShwb2ludC5ub2RlLCBwb2ludC5vZmZzZXQpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQgfHwgZG9jdW1lbnQuYm9keSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBzZXRQb2ludChjcy5lbmQsICJFbmQiKTsKICAgICAgc2V0UG9pbnQoY3Muc3RhcnQsICJTdGFydCIpOwogICAgICBzZWxlY3RSYW5nZShyYW5nZSk7CiAgICB9OwoKICAgIC8vIEhlbHBlciBmb3Igc2VsZWN0aW5nIGEgcmFuZ2Ugb2JqZWN0LgogICAgZnVuY3Rpb24gc2VsZWN0UmFuZ2UocmFuZ2UpIHsKICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybjsKICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOwogICAgfQogICAgZnVuY3Rpb24gc2VsZWN0aW9uUmFuZ2UoKSB7CiAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09IDApCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwogICAgfQoKICAgIC8vIEZpbmRpbmcgdGhlIHRvcC1sZXZlbCBub2RlIGF0IHRoZSBjdXJzb3IgaW4gdGhlIFczQyBpcywgYXMgeW91CiAgICAvLyBjYW4gc2VlLCBxdWl0ZSBhbiBpbnZvbHZlZCBwcm9jZXNzLgogICAgc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUgPSBmdW5jdGlvbihjb250YWluZXIsIHN0YXJ0KSB7CiAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvblJhbmdlKCk7CiAgICAgIGlmICghcmFuZ2UpIHJldHVybiBmYWxzZTsKCiAgICAgIHZhciBub2RlID0gc3RhcnQgPyByYW5nZS5zdGFydENvbnRhaW5lciA6IHJhbmdlLmVuZENvbnRhaW5lcjsKICAgICAgdmFyIG9mZnNldCA9IHN0YXJ0ID8gcmFuZ2Uuc3RhcnRPZmZzZXQgOiByYW5nZS5lbmRPZmZzZXQ7CiAgICAgIC8vIFdvcmsgYXJvdW5kICh5ZXQgYW5vdGhlcikgYnVnIGluIE9wZXJhJ3Mgc2VsZWN0aW9uIG1vZGVsLgogICAgICBpZiAod2luZG93Lm9wZXJhICYmICFzdGFydCAmJiByYW5nZS5lbmRDb250YWluZXIgPT0gY29udGFpbmVyICYmIHJhbmdlLmVuZE9mZnNldCA9PSByYW5nZS5zdGFydE9mZnNldCArIDEgJiYKICAgICAgICAgIGNvbnRhaW5lci5jaGlsZE5vZGVzW3JhbmdlLnN0YXJ0T2Zmc2V0XSAmJiBpc0JSKGNvbnRhaW5lci5jaGlsZE5vZGVzW3JhbmdlLnN0YXJ0T2Zmc2V0XSkpCiAgICAgICAgb2Zmc2V0LS07CgogICAgICAvLyBGb3IgdGV4dCBub2Rlcywgd2UgbG9vayBhdCB0aGUgbm9kZSBpdHNlbGYgaWYgdGhlIGN1cnNvciBpcwogICAgICAvLyBpbnNpZGUsIG9yIGF0IHRoZSBub2RlIGJlZm9yZSBpdCBpZiB0aGUgY3Vyc29yIGlzIGF0IHRoZQogICAgICAvLyBzdGFydC4KICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMyl7CiAgICAgICAgaWYgKG9mZnNldCA+IDApCiAgICAgICAgICByZXR1cm4gdG9wTGV2ZWxOb2RlQXQobm9kZSwgY29udGFpbmVyKTsKICAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gdG9wTGV2ZWxOb2RlQmVmb3JlKG5vZGUsIGNvbnRhaW5lcik7CiAgICAgIH0KICAgICAgLy8gT2NjYXNpb25hbGx5LCBicm93c2VycyB3aWxsIHJldHVybiB0aGUgSFRNTCBub2RlIGFzCiAgICAgIC8vIHNlbGVjdGlvbi4gSWYgdGhlIG9mZnNldCBpcyAwLCB3ZSB0YWtlIHRoZSBzdGFydCBvZiB0aGUgZnJhbWUKICAgICAgLy8gKCdhZnRlciBudWxsJyksIG90aGVyd2lzZSwgd2UgdGFrZSB0aGUgbGFzdCBub2RlLgogICAgICBlbHNlIGlmIChub2RlLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT0gIkhUTUwiKSB7CiAgICAgICAgcmV0dXJuIChvZmZzZXQgPT0gMSA/IG51bGwgOiBjb250YWluZXIubGFzdENoaWxkKTsKICAgICAgfQogICAgICAvLyBJZiB0aGUgZ2l2ZW4gbm9kZSBpcyBvdXIgJ2NvbnRhaW5lcicsIHdlIGp1c3QgbG9vayB1cCB0aGUKICAgICAgLy8gY29ycmVjdCBub2RlIGJ5IHVzaW5nIHRoZSBvZmZzZXQuCiAgICAgIGVsc2UgaWYgKG5vZGUgPT0gY29udGFpbmVyKSB7CiAgICAgICAgcmV0dXJuIChvZmZzZXQgPT0gMCkgPyBudWxsIDogbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdOwogICAgICB9CiAgICAgIC8vIEluIGFueSBvdGhlciBjYXNlLCB3ZSBoYXZlIGEgcmVndWxhciBub2RlLiBJZiB0aGUgY3Vyc29yIGlzCiAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIG5vZGUsIHdlIHVzZSB0aGUgbm9kZSBpdHNlbGYsIGlmIGl0IGlzIGF0CiAgICAgIC8vIHRoZSBzdGFydCwgd2UgdXNlIHRoZSBub2RlIGJlZm9yZSBpdCwgYW5kIGluIGFueSBvdGhlcgogICAgICAvLyBjYXNlLCB3ZSBsb29rIHVwIHRoZSBjaGlsZCBiZWZvcmUgdGhlIGN1cnNvciBhbmQgdXNlIHRoYXQuCiAgICAgIGVsc2UgewogICAgICAgIGlmIChvZmZzZXQgPT0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkKICAgICAgICAgIHJldHVybiB0b3BMZXZlbE5vZGVBdChub2RlLCBjb250YWluZXIpOwogICAgICAgIGVsc2UgaWYgKG9mZnNldCA9PSAwKQogICAgICAgICAgcmV0dXJuIHRvcExldmVsTm9kZUJlZm9yZShub2RlLCBjb250YWluZXIpOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiB0b3BMZXZlbE5vZGVBdChub2RlLmNoaWxkTm9kZXNbb2Zmc2V0IC0gMV0sIGNvbnRhaW5lcik7CiAgICAgIH0KICAgIH07CgogICAgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlID0gZnVuY3Rpb24obm9kZSwgY29udGFpbmVyKSB7CiAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgIHJhbmdlLnNldFN0YXJ0QmVmb3JlKGNvbnRhaW5lci5maXJzdENoaWxkIHx8IGNvbnRhaW5lcik7CiAgICAgIC8vIEluIE9wZXJhLCBzZXR0aW5nIHRoZSBlbmQgb2YgYSByYW5nZSBhdCB0aGUgZW5kIG9mIGEgbGluZQogICAgICAvLyAoYmVmb3JlIGEgQlIpIHdpbGwgY2F1c2UgdGhlIGN1cnNvciB0byBhcHBlYXIgb24gdGhlIG5leHQKICAgICAgLy8gbGluZSwgc28gd2Ugc2V0IHRoZSBlbmQgaW5zaWRlIG9mIHRoZSBzdGFydCBub2RlIHdoZW4KICAgICAgLy8gcG9zc2libGUuCiAgICAgIGlmIChub2RlICYmICFub2RlLmZpcnN0Q2hpbGQpCiAgICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIobm9kZSk7CiAgICAgIGVsc2UgaWYgKG5vZGUpCiAgICAgICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpOwogICAgICBlbHNlCiAgICAgICAgcmFuZ2Uuc2V0RW5kQmVmb3JlKGNvbnRhaW5lci5maXJzdENoaWxkIHx8IGNvbnRhaW5lcik7CiAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsKICAgICAgc2VsZWN0UmFuZ2UocmFuZ2UpOwogICAgfTsKCiAgICBzZWxlY3Quc29tZXRoaW5nU2VsZWN0ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uUmFuZ2UoKTsKICAgICAgcmV0dXJuIHJhbmdlICYmICFyYW5nZS5jb2xsYXBzZWQ7CiAgICB9OwoKICAgIHNlbGVjdC5vZmZzZXRJbk5vZGUgPSBmdW5jdGlvbihub2RlKSB7CiAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvblJhbmdlKCk7CiAgICAgIGlmICghcmFuZ2UpIHJldHVybiAwOwogICAgICByYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKICAgICAgcmFuZ2Uuc2V0U3RhcnRCZWZvcmUobm9kZSk7CiAgICAgIHJldHVybiByYW5nZS50b1N0cmluZygpLmxlbmd0aDsKICAgIH07CgogICAgZnVuY3Rpb24gaW5zZXJ0Tm9kZUF0Q3Vyc29yKG5vZGUpIHsKICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uUmFuZ2UoKTsKICAgICAgaWYgKCFyYW5nZSkgcmV0dXJuOwoKICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShub2RlKTsKICAgICAgd2Via2l0TGFzdExpbmVIYWNrKGRvY3VtZW50LmJvZHkpOwoKICAgICAgLy8gd29yayBhcm91bmQgd2VpcmRuZXNzIHdoZXJlIE9wZXJhIHdpbGwgbWFnaWNhbGx5IGluc2VydCBhIG5ldwogICAgICAvLyBCUiBub2RlIHdoZW4gYSBCUiBub2RlIGluc2lkZSBhIHNwYW4gaXMgbW92ZWQgYXJvdW5kLiBtYWtlcwogICAgICAvLyBzdXJlIHRoZSBCUiBlbmRzIHVwIG91dHNpZGUgb2Ygc3BhbnMuCiAgICAgIGlmICh3aW5kb3cub3BlcmEgJiYgaXNCUihub2RlKSAmJiBpc1NwYW4obm9kZS5wYXJlbnROb2RlKSkgewogICAgICAgIHZhciBuZXh0ID0gbm9kZS5uZXh0U2libGluZywgcCA9IG5vZGUucGFyZW50Tm9kZSwgb3V0ZXIgPSBwLnBhcmVudE5vZGU7CiAgICAgICAgb3V0ZXIuaW5zZXJ0QmVmb3JlKG5vZGUsIHAubmV4dFNpYmxpbmcpOwogICAgICAgIHZhciB0ZXh0QWZ0ZXIgPSAiIjsKICAgICAgICBmb3IgKDsgbmV4dCAmJiBuZXh0Lm5vZGVUeXBlID09IDM7IG5leHQgPSBuZXh0Lm5leHRTaWJsaW5nKSB7CiAgICAgICAgICB0ZXh0QWZ0ZXIgKz0gbmV4dC5ub2RlVmFsdWU7CiAgICAgICAgICByZW1vdmVFbGVtZW50KG5leHQpOwogICAgICAgIH0KICAgICAgICBvdXRlci5pbnNlcnRCZWZvcmUobWFrZVBhcnRTcGFuKHRleHRBZnRlciwgZG9jdW1lbnQpLCBub2RlLm5leHRTaWJsaW5nKTsKICAgICAgfQogICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgIHJhbmdlLnNlbGVjdE5vZGUobm9kZSk7CiAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsKICAgICAgc2VsZWN0UmFuZ2UocmFuZ2UpOwogICAgfQoKICAgIHNlbGVjdC5pbnNlcnROZXdsaW5lQXRDdXJzb3IgPSBmdW5jdGlvbigpIHsKICAgICAgaW5zZXJ0Tm9kZUF0Q3Vyc29yKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkJSIikpOwogICAgfTsKCiAgICBzZWxlY3QuaW5zZXJ0VGFiQXRDdXJzb3IgPSBmdW5jdGlvbigpIHsKICAgICAgaW5zZXJ0Tm9kZUF0Q3Vyc29yKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGZvdXJTcGFjZXMpKTsKICAgIH07CgogICAgc2VsZWN0LmN1cnNvclBvcyA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgc3RhcnQpIHsKICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uUmFuZ2UoKTsKICAgICAgaWYgKCFyYW5nZSkgcmV0dXJuOwoKICAgICAgdmFyIHRvcE5vZGUgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZShjb250YWluZXIsIHN0YXJ0KTsKICAgICAgd2hpbGUgKHRvcE5vZGUgJiYgIWlzQlIodG9wTm9kZSkpCiAgICAgICAgdG9wTm9kZSA9IHRvcE5vZGUucHJldmlvdXNTaWJsaW5nOwoKICAgICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7CiAgICAgIHJhbmdlLmNvbGxhcHNlKHN0YXJ0KTsKICAgICAgaWYgKHRvcE5vZGUpCiAgICAgICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcih0b3BOb2RlKTsKICAgICAgZWxzZQogICAgICAgIHJhbmdlLnNldFN0YXJ0QmVmb3JlKGNvbnRhaW5lcik7CgogICAgICB2YXIgdGV4dCA9IHJhbmdlLnRvU3RyaW5nKCk7CiAgICAgIHJldHVybiB7bm9kZTogdG9wTm9kZSwgb2Zmc2V0OiB0ZXh0Lmxlbmd0aH07CiAgICB9OwoKICAgIHNlbGVjdC5zZXRDdXJzb3JQb3MgPSBmdW5jdGlvbihjb250YWluZXIsIGZyb20sIHRvKSB7CiAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CgogICAgICBmdW5jdGlvbiBzZXRQb2ludChub2RlLCBvZmZzZXQsIHNpZGUpIHsKICAgICAgICBpZiAob2Zmc2V0ID09IDAgJiYgbm9kZSAmJiAhbm9kZS5uZXh0U2libGluZykgewogICAgICAgICAgcmFuZ2VbInNldCIgKyBzaWRlICsgIkFmdGVyIl0obm9kZSk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICghbm9kZSkKICAgICAgICAgIG5vZGUgPSBjb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICBlbHNlCiAgICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKCiAgICAgICAgaWYgKCFub2RlKSByZXR1cm47CgogICAgICAgIGlmIChvZmZzZXQgPT0gMCkgewogICAgICAgICAgcmFuZ2VbInNldCIgKyBzaWRlICsgIkJlZm9yZSJdKG5vZGUpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgYmFja2xvZyA9IFtdCiAgICAgICAgZnVuY3Rpb24gZGVjb21wb3NlKG5vZGUpIHsKICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMpCiAgICAgICAgICAgIGJhY2tsb2cucHVzaChub2RlKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZm9yRWFjaChub2RlLmNoaWxkTm9kZXMsIGRlY29tcG9zZSk7CiAgICAgICAgfQogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICB3aGlsZSAobm9kZSAmJiAhYmFja2xvZy5sZW5ndGgpIHsKICAgICAgICAgICAgZGVjb21wb3NlKG5vZGUpOwogICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBjdXIgPSBiYWNrbG9nLnNoaWZ0KCk7CiAgICAgICAgICBpZiAoIWN1cikgcmV0dXJuIGZhbHNlOwoKICAgICAgICAgIHZhciBsZW5ndGggPSBjdXIubm9kZVZhbHVlLmxlbmd0aDsKICAgICAgICAgIGlmIChsZW5ndGggPj0gb2Zmc2V0KSB7CiAgICAgICAgICAgIHJhbmdlWyJzZXQiICsgc2lkZV0oY3VyLCBvZmZzZXQpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIG9mZnNldCAtPSBsZW5ndGg7CiAgICAgICAgfQogICAgICB9CgogICAgICB0byA9IHRvIHx8IGZyb207CiAgICAgIGlmIChzZXRQb2ludCh0by5ub2RlLCB0by5vZmZzZXQsICJFbmQiKSAmJiBzZXRQb2ludChmcm9tLm5vZGUsIGZyb20ub2Zmc2V0LCAiU3RhcnQiKSkKICAgICAgICBzZWxlY3RSYW5nZShyYW5nZSk7CiAgICB9OwogIH0KfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/stringstream.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogU3RyaW5nIHN0cmVhbXMgYXJlIHRoZSB0aGluZ3MgZmVkIHRvIHBhcnNlcnMgKHdoaWNoIGNhbiBmZWVkIHRoZW0KICogdG8gYSB0b2tlbml6ZXIgaWYgdGhleSB3YW50KS4gVGhleSBwcm92aWRlIHBlZWsgYW5kIG5leHQgbWV0aG9kcwogKiBmb3IgbG9va2luZyBhdCB0aGUgY3VycmVudCBjaGFyYWN0ZXIgKG5leHQgJ2NvbnN1bWVzJyB0aGlzCiAqIGNoYXJhY3RlciwgcGVlayBkb2VzIG5vdCksIGFuZCBhIGdldCBtZXRob2QgZm9yIHJldHJpZXZpbmcgYWxsIHRoZQogKiB0ZXh0IHRoYXQgd2FzIGNvbnN1bWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgZ2V0IHdhcyBjYWxsZWQuCiAqCiAqIEFuIGVhc3kgbWlzdGFrZSB0byBtYWtlIGlzIHRvIGxldCBhIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uIGZpbmlzaAogKiB0aGUgdG9rZW4gc3RyZWFtIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBjaGFyYWN0ZXJzIHBlbmRpbmcgaW4gdGhlCiAqIHN0cmluZyBzdHJlYW0gKGhpdHRpbmcgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdoaWxlIHBhcnNpbmcgYQogKiB0b2tlbikuIFRvIG1ha2UgaXQgZWFzaWVyIHRvIGRldGVjdCBzdWNoIGVycm9ycywgdGhlIHN0cmluZ3N0cmVhbXMKICogdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gdGhpcyBoYXBwZW5zLgogKi8KCi8vIE1ha2UgYSBzdHJpbmdzdHJlYW0gc3RyZWFtIG91dCBvZiBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgc3RyaW5ncy4KLy8gVGhpcyBpcyBhcHBsaWVkIHRvIHRoZSByZXN1bHQgb2YgdHJhdmVyc2VET00gKHNlZSBjb2RlbWlycm9yLmpzKSwKLy8gYW5kIHRoZSByZXN1bHRpbmcgc3RyZWFtIGlzIGZlZCB0byB0aGUgcGFyc2VyLgp2YXIgc3RyaW5nU3RyZWFtID0gZnVuY3Rpb24oc291cmNlKXsKICAvLyBTdHJpbmcgdGhhdCdzIGN1cnJlbnRseSBiZWluZyBpdGVyYXRlZCBvdmVyLgogIHZhciBjdXJyZW50ID0gIiI7CiAgLy8gUG9zaXRpb24gaW4gdGhhdCBzdHJpbmcuCiAgdmFyIHBvcyA9IDA7CiAgLy8gQWNjdW11bGF0b3IgZm9yIHN0cmluZ3MgdGhhdCBoYXZlIGJlZW4gaXRlcmF0ZWQgb3ZlciBidXQgbm90CiAgLy8gZ2V0KCktZWQgeWV0LgogIHZhciBhY2N1bSA9ICIiOwogIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzIHJlYWR5LCBvciB0aHJvdwogIC8vIFN0b3BJdGVyYXRpb24uCiAgZnVuY3Rpb24gZW5zdXJlQ2hhcnMoKSB7CiAgICB3aGlsZSAocG9zID09IGN1cnJlbnQubGVuZ3RoKSB7CiAgICAgIGFjY3VtICs9IGN1cnJlbnQ7CiAgICAgIGN1cnJlbnQgPSAiIjsgLy8gSW4gY2FzZSBzb3VyY2UubmV4dCgpIHRocm93cwogICAgICBwb3MgPSAwOwogICAgICB0cnkge2N1cnJlbnQgPSBzb3VyY2UubmV4dCgpO30KICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICBpZiAoZSAhPSBTdG9wSXRlcmF0aW9uKSB0aHJvdyBlOwogICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIHJldHVybiB7CiAgICAvLyBwZWVrOiAtPiBjaGFyYWN0ZXIKICAgIC8vIFJldHVybiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmVhbS4KICAgIHBlZWs6IGZ1bmN0aW9uKCkgewogICAgICBpZiAoIWVuc3VyZUNoYXJzKCkpIHJldHVybiBudWxsOwogICAgICByZXR1cm4gY3VycmVudC5jaGFyQXQocG9zKTsKICAgIH0sCiAgICAvLyBuZXh0OiAtPiBjaGFyYWN0ZXIKICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHRocm93IFN0b3BJdGVyYXRpb24gaWYgYXQgZW5kLCBjaGVjawogICAgLy8gZm9yIHVudXNlZCBjb250ZW50LgogICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgIGlmICghZW5zdXJlQ2hhcnMoKSkgewogICAgICAgIGlmIChhY2N1bS5sZW5ndGggPiAwKQogICAgICAgICAgdGhyb3cgIkVuZCBvZiBzdHJpbmdzdHJlYW0gcmVhY2hlZCB3aXRob3V0IGVtcHR5aW5nIGJ1ZmZlciAoJyIgKyBhY2N1bSArICInKS4iOwogICAgICAgIGVsc2UKICAgICAgICAgIHRocm93IFN0b3BJdGVyYXRpb247CiAgICAgIH0KICAgICAgcmV0dXJuIGN1cnJlbnQuY2hhckF0KHBvcysrKTsKICAgIH0sCiAgICAvLyBnZXQoKTogLT4gc3RyaW5nCiAgICAvLyBSZXR1cm4gdGhlIGNoYXJhY3RlcnMgaXRlcmF0ZWQgb3ZlciBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCiAgICAvLyAuZ2V0KCkuCiAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGVtcCA9IGFjY3VtOwogICAgICBhY2N1bSA9ICIiOwogICAgICBpZiAocG9zID4gMCl7CiAgICAgICAgdGVtcCArPSBjdXJyZW50LnNsaWNlKDAsIHBvcyk7CiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UocG9zKTsKICAgICAgICBwb3MgPSAwOwogICAgICB9CiAgICAgIHJldHVybiB0ZW1wOwogICAgfSwKICAgIC8vIFB1c2ggYSBzdHJpbmcgYmFjayBpbnRvIHRoZSBzdHJlYW0uCiAgICBwdXNoOiBmdW5jdGlvbihzdHIpIHsKICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UoMCwgcG9zKSArIHN0ciArIGN1cnJlbnQuc2xpY2UocG9zKTsKICAgIH0sCiAgICBsb29rQWhlYWQ6IGZ1bmN0aW9uKHN0ciwgY29uc3VtZSwgc2tpcFNwYWNlcywgY2FzZUluc2Vuc2l0aXZlKSB7CiAgICAgIGZ1bmN0aW9uIGNhc2VkKHN0cikge3JldHVybiBjYXNlSW5zZW5zaXRpdmUgPyBzdHIudG9Mb3dlckNhc2UoKSA6IHN0cjt9CiAgICAgIHN0ciA9IGNhc2VkKHN0cik7CiAgICAgIHZhciBmb3VuZCA9IGZhbHNlOwoKICAgICAgdmFyIF9hY2N1bSA9IGFjY3VtLCBfcG9zID0gcG9zOwogICAgICBpZiAoc2tpcFNwYWNlcykgdGhpcy5uZXh0V2hpbGVNYXRjaGVzKC9bXHNcdTAwYTBdLyk7CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBlbmQgPSBwb3MgKyBzdHIubGVuZ3RoLCBsZWZ0ID0gY3VycmVudC5sZW5ndGggLSBwb3M7CiAgICAgICAgaWYgKGVuZCA8PSBjdXJyZW50Lmxlbmd0aCkgewogICAgICAgICAgZm91bmQgPSBzdHIgPT0gY2FzZWQoY3VycmVudC5zbGljZShwb3MsIGVuZCkpOwogICAgICAgICAgcG9zID0gZW5kOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN0ci5zbGljZSgwLCBsZWZ0KSA9PSBjYXNlZChjdXJyZW50LnNsaWNlKHBvcykpKSB7CiAgICAgICAgICBhY2N1bSArPSBjdXJyZW50OyBjdXJyZW50ID0gIiI7CiAgICAgICAgICB0cnkge2N1cnJlbnQgPSBzb3VyY2UubmV4dCgpO30KICAgICAgICAgIGNhdGNoIChlKSB7YnJlYWs7fQogICAgICAgICAgcG9zID0gMDsKICAgICAgICAgIHN0ciA9IHN0ci5zbGljZShsZWZ0KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmICghKGZvdW5kICYmIGNvbnN1bWUpKSB7CiAgICAgICAgY3VycmVudCA9IGFjY3VtLnNsaWNlKF9hY2N1bS5sZW5ndGgpICsgY3VycmVudDsKICAgICAgICBwb3MgPSBfcG9zOwogICAgICAgIGFjY3VtID0gX2FjY3VtOwogICAgICB9CgogICAgICByZXR1cm4gZm91bmQ7CiAgICB9LAoKICAgIC8vIFV0aWxzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgYWJvdmUKICAgIC8vIG1vcmU6IC0+IGJvb2xlYW4KICAgIC8vIFByb2R1Y2UgdHJ1ZSBpZiB0aGUgc3RyZWFtIGlzbid0IGVtcHR5LgogICAgbW9yZTogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLnBlZWsoKSAhPT0gbnVsbDsKICAgIH0sCiAgICBhcHBsaWVzOiBmdW5jdGlvbih0ZXN0KSB7CiAgICAgIHZhciBuZXh0ID0gdGhpcy5wZWVrKCk7CiAgICAgIHJldHVybiAobmV4dCAhPT0gbnVsbCAmJiB0ZXN0KG5leHQpKTsKICAgIH0sCiAgICBuZXh0V2hpbGU6IGZ1bmN0aW9uKHRlc3QpIHsKICAgICAgdmFyIG5leHQ7CiAgICAgIHdoaWxlICgobmV4dCA9IHRoaXMucGVlaygpKSAhPT0gbnVsbCAmJiB0ZXN0KG5leHQpKQogICAgICAgIHRoaXMubmV4dCgpOwogICAgfSwKICAgIG1hdGNoZXM6IGZ1bmN0aW9uKHJlKSB7CiAgICAgIHZhciBuZXh0ID0gdGhpcy5wZWVrKCk7CiAgICAgIHJldHVybiAobmV4dCAhPT0gbnVsbCAmJiByZS50ZXN0KG5leHQpKTsKICAgIH0sCiAgICBuZXh0V2hpbGVNYXRjaGVzOiBmdW5jdGlvbihyZSkgewogICAgICB2YXIgbmV4dDsKICAgICAgd2hpbGUgKChuZXh0ID0gdGhpcy5wZWVrKCkpICE9PSBudWxsICYmIHJlLnRlc3QobmV4dCkpCiAgICAgICAgdGhpcy5uZXh0KCk7CiAgICB9LAogICAgZXF1YWxzOiBmdW5jdGlvbihjaCkgewogICAgICByZXR1cm4gY2ggPT09IHRoaXMucGVlaygpOwogICAgfSwKICAgIGVuZE9mTGluZTogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBuZXh0ID0gdGhpcy5wZWVrKCk7CiAgICAgIHJldHVybiBuZXh0ID09IG51bGwgfHwgbmV4dCA9PSAiXG4iOwogICAgfQogIH07Cn07Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/tokenize.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQSBmcmFtZXdvcmsgZm9yIHNpbXBsZSB0b2tlbml6ZXJzLiBUYWtlcyBjYXJlIG9mIG5ld2xpbmVzIGFuZAovLyB3aGl0ZS1zcGFjZSwgYW5kIG9mIGdldHRpbmcgdGhlIHRleHQgZnJvbSB0aGUgc291cmNlIHN0cmVhbSBpbnRvCi8vIHRoZSB0b2tlbiBvYmplY3QuIEEgc3RhdGUgaXMgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzIC0tIGEKLy8gc3RyaW5nIHN0cmVhbSBhbmQgYSBzZXRTdGF0ZSBmdW5jdGlvbi4gVGhlIHNlY29uZCBjYW4gYmUgdXNlZCB0bwovLyBjaGFuZ2UgdGhlIHRva2VuaXplcidzIHN0YXRlLCBhbmQgY2FuIGJlIGlnbm9yZWQgZm9yIHN0YXRlbGVzcwovLyB0b2tlbml6ZXJzLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhZHZhbmNlIHRoZSBzdHJlYW0gb3ZlciBhIHRva2VuCi8vIGFuZCByZXR1cm4gYSBzdHJpbmcgb3Igb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5leHQKLy8gdG9rZW4sIG9yIG51bGwgdG8gcGFzcyBhbmQgaGF2ZSB0aGUgKG5ldykgc3RhdGUgYmUgY2FsbGVkIHRvIGZpbmlzaAovLyB0aGUgdG9rZW4uIFdoZW4gYSBzdHJpbmcgaXMgZ2l2ZW4sIGl0IGlzIHdyYXBwZWQgaW4gYSB7c3R5bGUsIHR5cGV9Ci8vIG9iamVjdC4gSW4gdGhlIHJlc3VsdGluZyBvYmplY3QsIHRoZSBjaGFyYWN0ZXJzIGNvbnN1bWVkIGFyZSBzdG9yZWQKLy8gdW5kZXIgdGhlIGNvbnRlbnQgcHJvcGVydHkuIEFueSB3aGl0ZXNwYWNlIGZvbGxvd2luZyB0aGVtIGlzIGFsc28KLy8gYXV0b21hdGljYWxseSBjb25zdW1lZCwgYW5kIGFkZGVkIHRvIHRoZSB2YWx1ZSBwcm9wZXJ0eS4gKFRodXMsCi8vIGNvbnRlbnQgaXMgdGhlIGFjdHVhbCBtZWFuaW5nZnVsIHBhcnQgb2YgdGhlIHRva2VuLCB3aGlsZSB2YWx1ZQovLyBjb250YWlucyBhbGwgdGhlIHRleHQgaXQgc3BhbnMuKQoKZnVuY3Rpb24gdG9rZW5pemVyKHNvdXJjZSwgc3RhdGUpIHsKICAvLyBOZXdsaW5lcyBhcmUgYWx3YXlzIGEgc2VwYXJhdGUgdG9rZW4uCiAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNoKSB7CiAgICAvLyBUaGUgbWVzc3kgcmVnZXhwIGlzIGJlY2F1c2UgSUUncyByZWdleHAgbWF0Y2hlciBpcyBvZiB0aGUKICAgIC8vIG9waW5pb24gdGhhdCBub24tYnJlYWtpbmcgc3BhY2VzIGFyZSBubyB3aGl0ZXNwYWNlLgogICAgcmV0dXJuIGNoICE9ICJcbiIgJiYgL15bXHNcdTAwYTBdKiQvLnRlc3QoY2gpOwogIH0KCiAgdmFyIHRva2VuaXplciA9IHsKICAgIHN0YXRlOiBzdGF0ZSwKCiAgICB0YWtlOiBmdW5jdGlvbih0eXBlKSB7CiAgICAgIGlmICh0eXBlb2YodHlwZSkgPT0gInN0cmluZyIpCiAgICAgICAgdHlwZSA9IHtzdHlsZTogdHlwZSwgdHlwZTogdHlwZX07CgogICAgICB0eXBlLmNvbnRlbnQgPSAodHlwZS5jb250ZW50IHx8ICIiKSArIHNvdXJjZS5nZXQoKTsKICAgICAgaWYgKCEvXG4kLy50ZXN0KHR5cGUuY29udGVudCkpCiAgICAgICAgc291cmNlLm5leHRXaGlsZShpc1doaXRlU3BhY2UpOwogICAgICB0eXBlLnZhbHVlID0gdHlwZS5jb250ZW50ICsgc291cmNlLmdldCgpOwogICAgICByZXR1cm4gdHlwZTsKICAgIH0sCgogICAgbmV4dDogZnVuY3Rpb24gKCkgewogICAgICBpZiAoIXNvdXJjZS5tb3JlKCkpIHRocm93IFN0b3BJdGVyYXRpb247CgogICAgICB2YXIgdHlwZTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIlxuIikpIHsKICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgIHJldHVybiB0aGlzLnRha2UoIndoaXRlc3BhY2UiKTsKICAgICAgfQogICAgICAKICAgICAgaWYgKHNvdXJjZS5hcHBsaWVzKGlzV2hpdGVTcGFjZSkpCiAgICAgICAgdHlwZSA9ICJ3aGl0ZXNwYWNlIjsKICAgICAgZWxzZQogICAgICAgIHdoaWxlICghdHlwZSkKICAgICAgICAgIHR5cGUgPSB0aGlzLnN0YXRlKHNvdXJjZSwgZnVuY3Rpb24ocykge3Rva2VuaXplci5zdGF0ZSA9IHM7fSk7CgogICAgICByZXR1cm4gdGhpcy50YWtlKHR5cGUpOwogICAgfQogIH07CiAgcmV0dXJuIHRva2VuaXplcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/tokenizejavascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBKYXZhU2NyaXB0IGNvZGUgKi8KCnZhciB0b2tlbml6ZUphdmFTY3JpcHQgPSAoZnVuY3Rpb24oKSB7CiAgLy8gQWR2YW5jZSB0aGUgc3RyZWFtIHVudGlsIHRoZSBnaXZlbiBjaGFyYWN0ZXIgKG5vdCBwcmVjZWRlZCBieSBhCiAgLy8gYmFja3NsYXNoKSBpcyBlbmNvdW50ZXJlZCwgb3IgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyByZWFjaGVkLgogIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgdmFyIGVzY2FwZWQgPSBmYWxzZTsKICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKG5leHQgPT0gZW5kICYmICFlc2NhcGVkKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgIH0KICAgIHJldHVybiBlc2NhcGVkOwogIH0KCiAgLy8gQSBtYXAgb2YgSmF2YVNjcmlwdCdzIGtleXdvcmRzLiBUaGUgYS9iL2Mga2V5d29yZCBkaXN0aW5jdGlvbiBpcwogIC8vIHZlcnkgcm91Z2gsIGJ1dCBpdCBnaXZlcyB0aGUgcGFyc2VyIGVub3VnaCBpbmZvcm1hdGlvbiB0byBwYXJzZQogIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogIC8vIGluY29ycmVjdCBjb2RlKS4gVGhlIHN0eWxlIGluZm9ybWF0aW9uIGluY2x1ZGVkIGluIHRoZXNlIG9iamVjdHMKICAvLyBpcyB1c2VkIGJ5IHRoZSBoaWdobGlnaHRlciB0byBwaWNrIHRoZSBjb3JyZWN0IENTUyBzdHlsZSBmb3IgYQogIC8vIHRva2VuLgogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiByZXN1bHQodHlwZSwgc3R5bGUpewogICAgICByZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiAianMtIiArIHN0eWxlfTsKICAgIH0KICAgIC8vIGtleXdvcmRzIHRoYXQgdGFrZSBhIHBhcmVudGhpc2VkIGV4cHJlc3Npb24sIGFuZCB0aGVuIGEKICAgIC8vIHN0YXRlbWVudCAoaWYpCiAgICB2YXIga2V5d29yZEEgPSByZXN1bHQoImtleXdvcmQgYSIsICJrZXl3b3JkIik7CiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UganVzdCBhIHN0YXRlbWVudCAoZWxzZSkKICAgIHZhciBrZXl3b3JkQiA9IHJlc3VsdCgia2V5d29yZCBiIiwgImtleXdvcmQiKTsKICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEKICAgIC8vIHN0YXRlbWVudCAocmV0dXJuKQogICAgdmFyIGtleXdvcmRDID0gcmVzdWx0KCJrZXl3b3JkIGMiLCAia2V5d29yZCIpOwogICAgdmFyIG9wZXJhdG9yID0gcmVzdWx0KCJvcGVyYXRvciIsICJrZXl3b3JkIik7CiAgICB2YXIgYXRvbSA9IHJlc3VsdCgiYXRvbSIsICJhdG9tIik7CiAgICByZXR1cm4gewogICAgICAiaWYiOiBrZXl3b3JkQSwgIndoaWxlIjoga2V5d29yZEEsICJ3aXRoIjoga2V5d29yZEEsCiAgICAgICJlbHNlIjoga2V5d29yZEIsICJkbyI6IGtleXdvcmRCLCAidHJ5Ijoga2V5d29yZEIsICJmaW5hbGx5Ijoga2V5d29yZEIsCiAgICAgICJyZXR1cm4iOiBrZXl3b3JkQywgImJyZWFrIjoga2V5d29yZEMsICJjb250aW51ZSI6IGtleXdvcmRDLCAibmV3Ijoga2V5d29yZEMsICJkZWxldGUiOiBrZXl3b3JkQywgInRocm93Ijoga2V5d29yZEMsCiAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjogb3BlcmF0b3IsICJpbnN0YW5jZW9mIjogb3BlcmF0b3IsCiAgICAgICJ2YXIiOiByZXN1bHQoInZhciIsICJrZXl3b3JkIiksICJmdW5jdGlvbiI6IHJlc3VsdCgiZnVuY3Rpb24iLCAia2V5d29yZCIpLCAiY2F0Y2giOiByZXN1bHQoImNhdGNoIiwgImtleXdvcmQiKSwKICAgICAgImZvciI6IHJlc3VsdCgiZm9yIiwgImtleXdvcmQiKSwgInN3aXRjaCI6IHJlc3VsdCgic3dpdGNoIiwgImtleXdvcmQiKSwKICAgICAgImNhc2UiOiByZXN1bHQoImNhc2UiLCAia2V5d29yZCIpLCAiZGVmYXVsdCI6IHJlc3VsdCgiZGVmYXVsdCIsICJrZXl3b3JkIiksCiAgICAgICJ0cnVlIjogYXRvbSwgImZhbHNlIjogYXRvbSwgIm51bGwiOiBhdG9tLCAidW5kZWZpbmVkIjogYXRvbSwgIk5hTiI6IGF0b20sICJJbmZpbml0eSI6IGF0b20KICAgIH07CiAgfSgpOwoKICAvLyBTb21lIGhlbHBlciByZWdleHBzCiAgdmFyIGlzT3BlcmF0b3JDaGFyID0gL1srXC0qJiU9PD4hP3xdLzsKICB2YXIgaXNIZXhEaWdpdCA9IC9bMC05QS1GYS1mXS87CiAgdmFyIGlzV29yZENoYXIgPSAvW1x3XCRfXS87CgogIC8vIFdyYXBwZXIgYXJvdW5kIGpzVG9rZW4gdGhhdCBoZWxwcyBtYWludGFpbiBwYXJzZXIgc3RhdGUgKHdoZXRoZXIKICAvLyB3ZSBhcmUgaW5zaWRlIG9mIGEgbXVsdGktbGluZSBjb21tZW50IGFuZCB3aGV0aGVyIHRoZSBuZXh0IHRva2VuCiAgLy8gY291bGQgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24pLgogIGZ1bmN0aW9uIGpzVG9rZW5TdGF0ZShpbnNpZGUsIHJlZ2V4cCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgdmFyIG5ld0luc2lkZSA9IGluc2lkZTsKICAgICAgdmFyIHR5cGUgPSBqc1Rva2VuKGluc2lkZSwgcmVnZXhwLCBzb3VyY2UsIGZ1bmN0aW9uKGMpIHtuZXdJbnNpZGUgPSBjO30pOwogICAgICB2YXIgbmV3UmVnZXhwID0gdHlwZS50eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZS50eXBlID09ICJrZXl3b3JkIGMiIHx8IHR5cGUudHlwZS5tYXRjaCgvXltcW3t9XCgsOzpdJC8pOwogICAgICBpZiAobmV3UmVnZXhwICE9IHJlZ2V4cCB8fCBuZXdJbnNpZGUgIT0gaW5zaWRlKQogICAgICAgIHNldFN0YXRlKGpzVG9rZW5TdGF0ZShuZXdJbnNpZGUsIG5ld1JlZ2V4cCkpOwogICAgICByZXR1cm4gdHlwZTsKICAgIH07CiAgfQoKICAvLyBUaGUgdG9rZW4gcmVhZGVyLCBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IHRoZSB0b2tlbml6ZXIgZnJvbQogIC8vIHRva2VuaXplLmpzICh0aHJvdWdoIGpzVG9rZW5TdGF0ZSkuIEFkdmFuY2VzIHRoZSBzb3VyY2Ugc3RyZWFtCiAgLy8gb3ZlciBhIHRva2VuLCBhbmQgcmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgdHlwZSBhbmQgc3R5bGUKICAvLyBvZiB0aGF0IHRva2VuLgogIGZ1bmN0aW9uIGpzVG9rZW4oaW5zaWRlLCByZWdleHAsIHNvdXJjZSwgc2V0SW5zaWRlKSB7CiAgICBmdW5jdGlvbiByZWFkSGV4TnVtYmVyKCl7CiAgICAgIHNvdXJjZS5uZXh0KCk7IC8vIHNraXAgdGhlICd4JwogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc0hleERpZ2l0KTsKICAgICAgcmV0dXJuIHt0eXBlOiAibnVtYmVyIiwgc3R5bGU6ICJqcy1hdG9tIn07CiAgICB9CgogICAgZnVuY3Rpb24gcmVhZE51bWJlcigpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIuIikpewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIH0KICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoImUiKSB8fCBzb3VyY2UuZXF1YWxzKCJFIikpewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi0iKSkKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHt0eXBlOiAibnVtYmVyIiwgc3R5bGU6ICJqcy1hdG9tIn07CiAgICB9CiAgICAvLyBSZWFkIGEgd29yZCwgbG9vayBpdCB1cCBpbiBrZXl3b3Jkcy4gSWYgbm90IGZvdW5kLCBpdCBpcyBhCiAgICAvLyB2YXJpYWJsZSwgb3RoZXJ3aXNlIGl0IGlzIGEga2V5d29yZCBvZiB0aGUgdHlwZSBmb3VuZC4KICAgIGZ1bmN0aW9uIHJlYWRXb3JkKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgIHZhciBrbm93biA9IGtleXdvcmRzLmhhc093blByb3BlcnR5KHdvcmQpICYmIGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICByZXR1cm4ga25vd24gPyB7dHlwZToga25vd24udHlwZSwgc3R5bGU6IGtub3duLnN0eWxlLCBjb250ZW50OiB3b3JkfSA6CiAgICAgIHt0eXBlOiAidmFyaWFibGUiLCBzdHlsZTogImpzLXZhcmlhYmxlIiwgY29udGVudDogd29yZH07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkUmVnZXhwKCkgewogICAgICBuZXh0VW50aWxVbmVzY2FwZWQoc291cmNlLCAiLyIpOwogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW2dpXS8pOwogICAgICByZXR1cm4ge3R5cGU6ICJyZWdleHAiLCBzdHlsZTogImpzLXN0cmluZyJ9OwogICAgfQogICAgLy8gTXV0bGktbGluZSBjb21tZW50cyBhcmUgdHJpY2t5LiBXZSB3YW50IHRvIHJldHVybiB0aGUgbmV3bGluZXMKICAgIC8vIGVtYmVkZGVkIGluIHRoZW0gYXMgcmVndWxhciBuZXdsaW5lIHRva2VucywgYW5kIHRoZW4gY29udGludWUKICAgIC8vIHJldHVybmluZyBhIGNvbW1lbnQgdG9rZW4gZm9yIGV2ZXJ5IGxpbmUgb2YgdGhlIGNvbW1lbnQuIFNvCiAgICAvLyBzb21lIHN0YXRlIGhhcyB0byBiZSBzYXZlZCAoaW5zaWRlKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlIGFyZQogICAgLy8gaW5zaWRlIGEgLyogKi8gc2VxdWVuY2UuCiAgICBmdW5jdGlvbiByZWFkTXVsdGlsaW5lQ29tbWVudChzdGFydCl7CiAgICAgIHZhciBuZXdJbnNpZGUgPSAiLyoiOwogICAgICB2YXIgbWF5YmVFbmQgPSAoc3RhcnQgPT0gIioiKTsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgYnJlYWs7CiAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgIGlmIChuZXh0ID09ICIvIiAmJiBtYXliZUVuZCl7CiAgICAgICAgICBuZXdJbnNpZGUgPSBudWxsOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIG1heWJlRW5kID0gKG5leHQgPT0gIioiKTsKICAgICAgfQogICAgICBzZXRJbnNpZGUobmV3SW5zaWRlKTsKICAgICAgcmV0dXJuIHt0eXBlOiAiY29tbWVudCIsIHN0eWxlOiAianMtY29tbWVudCJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9wZXJhdG9yKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc09wZXJhdG9yQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogIm9wZXJhdG9yIiwgc3R5bGU6ICJqcy1vcGVyYXRvciJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFN0cmluZyhxdW90ZSkgewogICAgICB2YXIgZW5kQmFja1NsYXNoID0gbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgcXVvdGUpOwogICAgICBzZXRJbnNpZGUoZW5kQmFja1NsYXNoID8gcXVvdGUgOiBudWxsKTsKICAgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJqcy1zdHJpbmcifTsKICAgIH0KCiAgICAvLyBGZXRjaCB0aGUgbmV4dCB0b2tlbi4gRGlzcGF0Y2hlcyBvbiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlCiAgICAvLyBzdHJlYW0sIG9yIGZpcnN0IHR3byBjaGFyYWN0ZXJzIHdoZW4gdGhlIGZpcnN0IGlzIGEgc2xhc2guCiAgICBpZiAoaW5zaWRlID09ICJcIiIgfHwgaW5zaWRlID09ICInIikKICAgICAgcmV0dXJuIHJlYWRTdHJpbmcoaW5zaWRlKTsKICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICBpZiAoaW5zaWRlID09ICIvKiIpCiAgICAgIHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7CiAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikKICAgICAgcmV0dXJuIHJlYWRTdHJpbmcoY2gpOwogICAgLy8gd2l0aCBwdW5jdHVhdGlvbiwgdGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzIHRoZSBzeW1ib2wgaXRzZWxmCiAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHt0eXBlOiBjaCwgc3R5bGU6ICJqcy1wdW5jdHVhdGlvbiJ9OwogICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIChzb3VyY2UuZXF1YWxzKCJ4IikgfHwgc291cmNlLmVxdWFscygiWCIpKSkKICAgICAgcmV0dXJuIHJlYWRIZXhOdW1iZXIoKTsKICAgIGVsc2UgaWYgKC9bMC05XS8udGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkTnVtYmVyKCk7CiAgICBlbHNlIGlmIChjaCA9PSAiLyIpewogICAgICBpZiAoc291cmNlLmVxdWFscygiKiIpKQogICAgICB7IHNvdXJjZS5uZXh0KCk7IHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7IH0KICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygiLyIpKQogICAgICB7IG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIG51bGwpOyByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJqcy1jb21tZW50In07fQogICAgICBlbHNlIGlmIChyZWdleHApCiAgICAgICAgcmV0dXJuIHJlYWRSZWdleHAoKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIH0KICAgIGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFyLnRlc3QoY2gpKQogICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CiAgICBlbHNlCiAgICAgIHJldHVybiByZWFkV29yZCgpOwogIH0KCiAgLy8gVGhlIGV4dGVybmFsIGludGVyZmFjZSB0byB0aGUgdG9rZW5pemVyLgogIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHN0YXJ0U3RhdGUpIHsKICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IGpzVG9rZW5TdGF0ZShmYWxzZSwgdHJ1ZSkpOwogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/undo.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN0b3JhZ2UgYW5kIGNvbnRyb2wgZm9yIHVuZG8gaW5mb3JtYXRpb24gd2l0aGluIGEgQ29kZU1pcnJvcgogKiBlZGl0b3IuICdXaHkgb24gZWFydGggaXMgc3VjaCBhIGNvbXBsaWNhdGVkIG1lc3MgcmVxdWlyZWQgZm9yCiAqIHRoYXQ/JywgSSBoZWFyIHlvdSBhc2suIFRoZSBnb2FsLCBpbiBpbXBsZW1lbnRpbmcgdGhpcywgd2FzIHRvIG1ha2UKICogdGhlIGNvbXBsZXhpdHkgb2Ygc3RvcmluZyBhbmQgcmV2ZXJ0aW5nIHVuZG8gaW5mb3JtYXRpb24gZGVwZW5kCiAqIG9ubHkgb24gdGhlIHNpemUgb2YgdGhlIGVkaXRlZCBvciByZXN0b3JlZCBjb250ZW50LCBub3Qgb24gdGhlIHNpemUKICogb2YgdGhlIHdob2xlIGRvY3VtZW50LiBUaGlzIG1ha2VzIGl0IG5lY2Vzc2FyeSB0byB1c2UgYSBraW5kIG9mCiAqICdkaWZmJyBzeXN0ZW0sIHdoaWNoLCB3aGVuIGFwcGxpZWQgdG8gYSBET00gdHJlZSwgY2F1c2VzIHNvbWUKICogY29tcGxleGl0eSBhbmQgaGFja2VyeS4KICoKICogSW4gc2hvcnQsIHRoZSBlZGl0b3IgJ3RvdWNoZXMnIEJSIGVsZW1lbnRzIGFzIGl0IHBhcnNlcyB0aGVtLCBhbmQKICogdGhlIFVuZG9IaXN0b3J5IHN0b3JlcyB0aGVzZS4gV2hlbiBub3RoaW5nIGlzIHRvdWNoZWQgaW4gY29tbWl0RGVsYXkKICogbWlsbGlzZWNvbmRzLCB0aGUgY2hhbmdlcyBhcmUgY29tbWl0dGVkOiBJdCBnb2VzIG92ZXIgYWxsIHRvdWNoZWQKICogbm9kZXMsIHRocm93cyBvdXQgdGhlIG9uZXMgdGhhdCBkaWQgbm90IGNoYW5nZSBzaW5jZSBsYXN0IGNvbW1pdCBvcgogKiBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCwgYW5kIGFzc2VtYmxlcyB0aGUgcmVzdCBpbnRvIHplcm8gb3IKICogbW9yZSAnY2hhaW5zJyAtLSBhcnJheXMgb2YgYWRqYWNlbnQgbGluZXMuIExpbmtzIGJhY2sgdG8gdGhlc2UKICogY2hhaW5zIGFyZSBhZGRlZCB0byB0aGUgQlIgbm9kZXMsIHdoaWxlIHRoZSBjaGFpbiB0aGF0IHByZXZpb3VzbHkKICogc3Bhbm5lZCB0aGVzZSBub2RlcyBpcyBhZGRlZCB0byB0aGUgdW5kbyBoaXN0b3J5LiBVbmRvaW5nIGEgY2hhbmdlCiAqIG1lYW5zIHRha2luZyBzdWNoIGEgY2hhaW4gb2ZmIHRoZSB1bmRvIGhpc3RvcnksIHJlc3RvcmluZyBpdHMKICogY29udGVudCAodGV4dCBpcyBzYXZlZCBwZXIgbGluZSkgYW5kIGxpbmtpbmcgaXQgYmFjayBpbnRvIHRoZQogKiBkb2N1bWVudC4KICovCgovLyBBIGhpc3Rvcnkgb2JqZWN0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIERPTSBjb250YWluZXIgaG9sZGluZyB0aGUKLy8gZG9jdW1lbnQsIHRoZSBtYXhpbXVtIGFtb3VudCBvZiB1bmRvIGxldmVscyBpdCBzaG91bGQgc3RvcmUsIHRoZQovLyBkZWxheSAob2Ygbm8gaW5wdXQpIGFmdGVyIHdoaWNoIGl0IGNvbW1pdHMgYSBzZXQgb2YgY2hhbmdlcywgYW5kLAovLyB1bmZvcnR1bmF0ZWx5LCB0aGUgJ3BhcmVudCcgd2luZG93IC0tIGEgd2luZG93IHRoYXQgaXMgbm90IGluCi8vIGRlc2lnbk1vZGUsIGFuZCBvbiB3aGljaCBzZXRUaW1lb3V0IHdvcmtzIGluIGV2ZXJ5IGJyb3dzZXIuCmZ1bmN0aW9uIFVuZG9IaXN0b3J5KGNvbnRhaW5lciwgbWF4RGVwdGgsIGNvbW1pdERlbGF5LCBlZGl0b3IpIHsKICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjsKICB0aGlzLm1heERlcHRoID0gbWF4RGVwdGg7IHRoaXMuY29tbWl0RGVsYXkgPSBjb21taXREZWxheTsKICB0aGlzLmVkaXRvciA9IGVkaXRvcjsgdGhpcy5wYXJlbnQgPSBlZGl0b3IucGFyZW50OwogIC8vIFRoaXMgbGluZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgaW5pdGlhbCwgZW1wdHkgZWRpdG9yLgogIHZhciBpbml0aWFsID0ge3RleHQ6ICIiLCBmcm9tOiBudWxsLCB0bzogbnVsbH07CiAgLy8gQXMgdGhlIGJvcmRlcnMgYmV0d2VlbiBsaW5lcyBhcmUgcmVwcmVzZW50ZWQgYnkgQlIgZWxlbWVudHMsIHRoZQogIC8vIHN0YXJ0IG9mIHRoZSBmaXJzdCBsaW5lIGFuZCB0aGUgZW5kIG9mIHRoZSBsYXN0IG9uZSBhcmUKICAvLyByZXByZXNlbnRlZCBieSBudWxsLiBTaW5jZSB5b3UgY2FuIG5vdCBzdG9yZSBhbnkgcHJvcGVydGllcwogIC8vIChsaW5rcyB0byBsaW5lIG9iamVjdHMpIGluIG51bGwsIHRoZXNlIHByb3BlcnRpZXMgYXJlIHVzZWQgaW4KICAvLyB0aG9zZSBjYXNlcy4KICB0aGlzLmZpcnN0ID0gaW5pdGlhbDsgdGhpcy5sYXN0ID0gaW5pdGlhbDsKICAvLyBTaW1pbGFybHksIGEgJ2hpc3RvcnlUb3VjaGVkJyBwcm9wZXJ0eSBpcyBhZGRlZCB0byB0aGUgQlIgaW4KICAvLyBmcm9udCBvZiBsaW5lcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHRvdWNoZWQsIGFuZCAnZmlyc3RUb3VjaGVkJwogIC8vIGlzIHVzZWQgZm9yIHRoZSBmaXJzdCBsaW5lLgogIHRoaXMuZmlyc3RUb3VjaGVkID0gZmFsc2U7CiAgLy8gSGlzdG9yeSBpcyB0aGUgc2V0IG9mIGNvbW1pdHRlZCBjaGFuZ2VzLCB0b3VjaGVkIGlzIHRoZSBzZXQgb2YKICAvLyBub2RlcyB0b3VjaGVkIHNpbmNlIHRoZSBsYXN0IGNvbW1pdC4KICB0aGlzLmhpc3RvcnkgPSBbXTsgdGhpcy5yZWRvSGlzdG9yeSA9IFtdOyB0aGlzLnRvdWNoZWQgPSBbXTsKfQoKVW5kb0hpc3RvcnkucHJvdG90eXBlID0gewogIC8vIFNjaGVkdWxlIGEgY29tbWl0IChpZiBubyBvdGhlciB0b3VjaGVzIGNvbWUgaW4gZm9yIGNvbW1pdERlbGF5CiAgLy8gbWlsbGlzZWNvbmRzKS4KICBzY2hlZHVsZUNvbW1pdDogZnVuY3Rpb24oKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICB0aGlzLnBhcmVudC5jbGVhclRpbWVvdXQodGhpcy5jb21taXRUaW1lb3V0KTsKICAgIHRoaXMuY29tbWl0VGltZW91dCA9IHRoaXMucGFyZW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzZWxmLnRyeUNvbW1pdCgpO30sIHRoaXMuY29tbWl0RGVsYXkpOwogIH0sCgogIC8vIE1hcmsgYSBub2RlIGFzIHRvdWNoZWQuIE51bGwgaXMgYSB2YWxpZCBhcmd1bWVudC4KICB0b3VjaDogZnVuY3Rpb24obm9kZSkgewogICAgdGhpcy5zZXRUb3VjaGVkKG5vZGUpOwogICAgdGhpcy5zY2hlZHVsZUNvbW1pdCgpOwogIH0sCgogIC8vIFVuZG8gdGhlIGxhc3QgY2hhbmdlLgogIHVuZG86IGZ1bmN0aW9uKCkgewogICAgLy8gTWFrZSBzdXJlIHBlbmRpbmcgY2hhbmdlcyBoYXZlIGJlZW4gY29tbWl0dGVkLgogICAgdGhpcy5jb21taXQoKTsKCiAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCkgewogICAgICAvLyBUYWtlIHRoZSB0b3AgZGlmZiBmcm9tIHRoZSBoaXN0b3J5LCBhcHBseSBpdCwgYW5kIHN0b3JlIGl0cwogICAgICAvLyBzaGFkb3cgaW4gdGhlIHJlZG8gaGlzdG9yeS4KICAgICAgdmFyIGl0ZW0gPSB0aGlzLmhpc3RvcnkucG9wKCk7CiAgICAgIHRoaXMucmVkb0hpc3RvcnkucHVzaCh0aGlzLnVwZGF0ZVRvKGl0ZW0sICJhcHBseUNoYWluIikpOwogICAgICB0aGlzLm5vdGlmeUVudmlyb25tZW50KCk7CiAgICAgIHJldHVybiB0aGlzLmNoYWluTm9kZShpdGVtKTsKICAgIH0KICB9LAoKICAvLyBSZWRvIHRoZSBsYXN0IHVuZG9uZSBjaGFuZ2UuCiAgcmVkbzogZnVuY3Rpb24oKSB7CiAgICB0aGlzLmNvbW1pdCgpOwogICAgaWYgKHRoaXMucmVkb0hpc3RvcnkubGVuZ3RoKSB7CiAgICAgIC8vIFRoZSBpbnZlcnNlIG9mIHVuZG8sIGJhc2ljYWxseS4KICAgICAgdmFyIGl0ZW0gPSB0aGlzLnJlZG9IaXN0b3J5LnBvcCgpOwogICAgICB0aGlzLmFkZFVuZG9MZXZlbCh0aGlzLnVwZGF0ZVRvKGl0ZW0sICJhcHBseUNoYWluIikpOwogICAgICB0aGlzLm5vdGlmeUVudmlyb25tZW50KCk7CiAgICAgIHJldHVybiB0aGlzLmNoYWluTm9kZShpdGVtKTsKICAgIH0KICB9LAoKICBjbGVhcjogZnVuY3Rpb24oKSB7CiAgICB0aGlzLmhpc3RvcnkgPSBbXTsKICAgIHRoaXMucmVkb0hpc3RvcnkgPSBbXTsKICB9LAoKICAvLyBBc2sgZm9yIHRoZSBzaXplIG9mIHRoZSB1bi9yZWRvIGhpc3Rvcmllcy4KICBoaXN0b3J5U2l6ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4ge3VuZG86IHRoaXMuaGlzdG9yeS5sZW5ndGgsIHJlZG86IHRoaXMucmVkb0hpc3RvcnkubGVuZ3RofTsKICB9LAoKICAvLyBQdXNoIGEgY2hhbmdlc2V0IGludG8gdGhlIGRvY3VtZW50LgogIHB1c2g6IGZ1bmN0aW9uKGZyb20sIHRvLCBsaW5lcykgewogICAgdmFyIGNoYWluID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBlbmQgPSAoaSA9PSBsaW5lcy5sZW5ndGggLSAxKSA/IHRvIDogdGhpcy5jb250YWluZXIub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJCUiIpOwogICAgICBjaGFpbi5wdXNoKHtmcm9tOiBmcm9tLCB0bzogZW5kLCB0ZXh0OiBjbGVhblRleHQobGluZXNbaV0pfSk7CiAgICAgIGZyb20gPSBlbmQ7CiAgICB9CiAgICB0aGlzLnB1c2hDaGFpbnMoW2NoYWluXSwgZnJvbSA9PSBudWxsICYmIHRvID09IG51bGwpOwogICAgdGhpcy5ub3RpZnlFbnZpcm9ubWVudCgpOwogIH0sCgogIHB1c2hDaGFpbnM6IGZ1bmN0aW9uKGNoYWlucywgZG9Ob3RIaWdobGlnaHQpIHsKICAgIHRoaXMuY29tbWl0KGRvTm90SGlnaGxpZ2h0KTsKICAgIHRoaXMuYWRkVW5kb0xldmVsKHRoaXMudXBkYXRlVG8oY2hhaW5zLCAiYXBwbHlDaGFpbiIpKTsKICAgIHRoaXMucmVkb0hpc3RvcnkgPSBbXTsKICB9LAoKICAvLyBSZXRyaWV2ZSBhIERPTSBub2RlIGZyb20gYSBjaGFpbiAoZm9yIHNjcm9sbGluZyB0byBpdCBhZnRlciB1bmRvL3JlZG8pLgogIGNoYWluTm9kZTogZnVuY3Rpb24oY2hhaW5zKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYWlucy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgc3RhcnQgPSBjaGFpbnNbaV1bMF0sIG5vZGUgPSBzdGFydCAmJiAoc3RhcnQuZnJvbSB8fCBzdGFydC50byk7CiAgICAgIGlmIChub2RlKSByZXR1cm4gbm9kZTsKICAgIH0KICB9LAoKICAvLyBDbGVhciB0aGUgdW5kbyBoaXN0b3J5LCBtYWtlIHRoZSBjdXJyZW50IGRvY3VtZW50IHRoZSBzdGFydAogIC8vIHBvc2l0aW9uLgogIHJlc2V0OiBmdW5jdGlvbigpIHsKICAgIHRoaXMuaGlzdG9yeSA9IFtdOyB0aGlzLnJlZG9IaXN0b3J5ID0gW107CiAgfSwKCiAgdGV4dEFmdGVyOiBmdW5jdGlvbihicikgewogICAgcmV0dXJuIHRoaXMuYWZ0ZXIoYnIpLnRleHQ7CiAgfSwKCiAgbm9kZUFmdGVyOiBmdW5jdGlvbihicikgewogICAgcmV0dXJuIHRoaXMuYWZ0ZXIoYnIpLnRvOwogIH0sCgogIG5vZGVCZWZvcmU6IGZ1bmN0aW9uKGJyKSB7CiAgICByZXR1cm4gdGhpcy5iZWZvcmUoYnIpLmZyb207CiAgfSwKCiAgLy8gQ29tbWl0IHVubGVzcyB0aGVyZSBhcmUgcGVuZGluZyBkaXJ0eSBub2Rlcy4KICB0cnlDb21taXQ6IGZ1bmN0aW9uKCkgewogICAgaWYgKCF3aW5kb3cucGFyZW50IHx8ICF3aW5kb3cuVW5kb0hpc3RvcnkpIHJldHVybjsgLy8gU3RvcCB3aGVuIGZyYW1lIGhhcyBiZWVuIHVubG9hZGVkCiAgICBpZiAodGhpcy5lZGl0b3IuaGlnaGxpZ2h0RGlydHkoKSkgdGhpcy5jb21taXQodHJ1ZSk7CiAgICBlbHNlIHRoaXMuc2NoZWR1bGVDb21taXQoKTsKICB9LAoKICAvLyBDaGVjayB3aGV0aGVyIHRoZSB0b3VjaGVkIG5vZGVzIGhvbGQgYW55IGNoYW5nZXMsIGlmIHNvLCBjb21taXQKICAvLyB0aGVtLgogIGNvbW1pdDogZnVuY3Rpb24oZG9Ob3RIaWdobGlnaHQpIHsKICAgIHRoaXMucGFyZW50LmNsZWFyVGltZW91dCh0aGlzLmNvbW1pdFRpbWVvdXQpOwogICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBwZW5kaW5nIGRpcnR5IG5vZGVzLgogICAgaWYgKCFkb05vdEhpZ2hsaWdodCkgdGhpcy5lZGl0b3IuaGlnaGxpZ2h0RGlydHkodHJ1ZSk7CiAgICAvLyBCdWlsZCBzZXQgb2YgY2hhaW5zLgogICAgdmFyIGNoYWlucyA9IHRoaXMudG91Y2hlZENoYWlucygpLCBzZWxmID0gdGhpczsKCiAgICBpZiAoY2hhaW5zLmxlbmd0aCkgewogICAgICB0aGlzLmFkZFVuZG9MZXZlbCh0aGlzLnVwZGF0ZVRvKGNoYWlucywgImxpbmtDaGFpbiIpKTsKICAgICAgdGhpcy5yZWRvSGlzdG9yeSA9IFtdOwogICAgICB0aGlzLm5vdGlmeUVudmlyb25tZW50KCk7CiAgICB9CiAgfSwKCiAgLy8gWyBlbmQgb2YgcHVibGljIGludGVyZmFjZSBdCgogIC8vIFVwZGF0ZSB0aGUgZG9jdW1lbnQgd2l0aCBhIGdpdmVuIHNldCBvZiBjaGFpbnMsIHJldHVybiBpdHMKICAvLyBzaGFkb3cuIHVwZGF0ZUZ1bmMgc2hvdWxkIGJlICJhcHBseUNoYWluIiBvciAibGlua0NoYWluIi4gSW4gdGhlCiAgLy8gc2Vjb25kIGNhc2UsIHRoZSBjaGFpbnMgYXJlIHRha2VuIHRvIGNvcnJlc3BvbmQgdGhlIHRoZSBjdXJyZW50CiAgLy8gZG9jdW1lbnQsIGFuZCBvbmx5IHRoZSBzdGF0ZSBvZiB0aGUgbGluZSBkYXRhIGlzIHVwZGF0ZWQuIEluIHRoZQogIC8vIGZpcnN0IGNhc2UsIHRoZSBjb250ZW50IG9mIHRoZSBjaGFpbnMgaXMgYWxzbyBwdXNoZWQgaWludG8gdGhlCiAgLy8gZG9jdW1lbnQuCiAgdXBkYXRlVG86IGZ1bmN0aW9uKGNoYWlucywgdXBkYXRlRnVuYykgewogICAgdmFyIHNoYWRvd3MgPSBbXSwgZGlydHkgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhaW5zLmxlbmd0aDsgaSsrKSB7CiAgICAgIHNoYWRvd3MucHVzaCh0aGlzLnNoYWRvd0NoYWluKGNoYWluc1tpXSkpOwogICAgICBkaXJ0eS5wdXNoKHRoaXNbdXBkYXRlRnVuY10oY2hhaW5zW2ldKSk7CiAgICB9CiAgICBpZiAodXBkYXRlRnVuYyA9PSAiYXBwbHlDaGFpbiIpCiAgICAgIHRoaXMubm90aWZ5RGlydHkoZGlydHkpOwogICAgcmV0dXJuIHNoYWRvd3M7CiAgfSwKCiAgLy8gTm90aWZ5IHRoZSBlZGl0b3IgdGhhdCBzb21lIG5vZGVzIGhhdmUgY2hhbmdlZC4KICBub3RpZnlEaXJ0eTogZnVuY3Rpb24obm9kZXMpIHsKICAgIGZvckVhY2gobm9kZXMsIG1ldGhvZCh0aGlzLmVkaXRvciwgImFkZERpcnR5Tm9kZSIpKQogICAgdGhpcy5lZGl0b3Iuc2NoZWR1bGVIaWdobGlnaHQoKTsKICB9LAoKICBub3RpZnlFbnZpcm9ubWVudDogZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5vbkNoYW5nZSkgdGhpcy5vbkNoYW5nZSgpOwogICAgLy8gVXNlZCBieSB0aGUgbGluZS13cmFwcGluZyBsaW5lLW51bWJlcmluZyBjb2RlLgogICAgaWYgKHdpbmRvdy5mcmFtZUVsZW1lbnQgJiYgd2luZG93LmZyYW1lRWxlbWVudC5Db2RlTWlycm9yLnVwZGF0ZU51bWJlcnMpCiAgICAgIHdpbmRvdy5mcmFtZUVsZW1lbnQuQ29kZU1pcnJvci51cGRhdGVOdW1iZXJzKCk7CiAgfSwKCiAgLy8gTGluayBhIGNoYWluIGludG8gdGhlIERPTSBub2RlcyAob3IgdGhlIGZpcnN0L2xhc3QgbGlua3MgZm9yIG51bGwKICAvLyBub2RlcykuCiAgbGlua0NoYWluOiBmdW5jdGlvbihjaGFpbikgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFpbi5sZW5ndGg7IGkrKykgewogICAgICB2YXIgbGluZSA9IGNoYWluW2ldOwogICAgICBpZiAobGluZS5mcm9tKSBsaW5lLmZyb20uaGlzdG9yeUFmdGVyID0gbGluZTsKICAgICAgZWxzZSB0aGlzLmZpcnN0ID0gbGluZTsKICAgICAgaWYgKGxpbmUudG8pIGxpbmUudG8uaGlzdG9yeUJlZm9yZSA9IGxpbmU7CiAgICAgIGVsc2UgdGhpcy5sYXN0ID0gbGluZTsKICAgIH0KICB9LAoKICAvLyBHZXQgdGhlIGxpbmUgb2JqZWN0IGFmdGVyL2JlZm9yZSBhIGdpdmVuIG5vZGUuCiAgYWZ0ZXI6IGZ1bmN0aW9uKG5vZGUpIHsKICAgIHJldHVybiBub2RlID8gbm9kZS5oaXN0b3J5QWZ0ZXIgOiB0aGlzLmZpcnN0OwogIH0sCiAgYmVmb3JlOiBmdW5jdGlvbihub2RlKSB7CiAgICByZXR1cm4gbm9kZSA/IG5vZGUuaGlzdG9yeUJlZm9yZSA6IHRoaXMubGFzdDsKICB9LAoKICAvLyBNYXJrIGEgbm9kZSBhcyB0b3VjaGVkIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIG1hcmtlZC4KICBzZXRUb3VjaGVkOiBmdW5jdGlvbihub2RlKSB7CiAgICBpZiAobm9kZSkgewogICAgICBpZiAoIW5vZGUuaGlzdG9yeVRvdWNoZWQpIHsKICAgICAgICB0aGlzLnRvdWNoZWQucHVzaChub2RlKTsKICAgICAgICBub2RlLmhpc3RvcnlUb3VjaGVkID0gdHJ1ZTsKICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgIHRoaXMuZmlyc3RUb3VjaGVkID0gdHJ1ZTsKICAgIH0KICB9LAoKICAvLyBTdG9yZSBhIG5ldyBzZXQgb2YgdW5kbyBpbmZvLCB0aHJvdyBhd2F5IGluZm8gaWYgdGhlcmUgaXMgbW9yZSBvZgogIC8vIGl0IHRoYW4gYWxsb3dlZC4KICBhZGRVbmRvTGV2ZWw6IGZ1bmN0aW9uKGRpZmZzKSB7CiAgICB0aGlzLmhpc3RvcnkucHVzaChkaWZmcyk7CiAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IHRoaXMubWF4RGVwdGgpCiAgICAgIHRoaXMuaGlzdG9yeS5zaGlmdCgpOwogIH0sCgogIC8vIEJ1aWxkIGNoYWlucyBmcm9tIGEgc2V0IG9mIHRvdWNoZWQgbm9kZXMuCiAgdG91Y2hlZENoYWluczogZnVuY3Rpb24oKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgLy8gVGhlIHRlbXAgc3lzdGVtIGlzIGEgY3J1bW15IGhhY2sgdG8gc3BlZWQgdXAgZGV0ZXJtaW5pbmcKICAgIC8vIHdoZXRoZXIgYSAoY3VycmVudGx5IHRvdWNoZWQpIG5vZGUgaGFzIGEgbGluZSBvYmplY3QgYXNzb2NpYXRlZAogICAgLy8gd2l0aCBpdC4gbnVsbFRlbXAgaXMgdXNlZCB0byBzdG9yZSB0aGUgb2JqZWN0IGZvciB0aGUgZmlyc3QKICAgIC8vIGxpbmUsIG90aGVyIG5vZGVzIGdldCBpdCBzdG9yZWQgaW4gdGhlaXIgaGlzdG9yeVRlbXAgcHJvcGVydHkuCiAgICB2YXIgbnVsbFRlbXAgPSBudWxsOwogICAgZnVuY3Rpb24gdGVtcChub2RlKSB7cmV0dXJuIG5vZGUgPyBub2RlLmhpc3RvcnlUZW1wIDogbnVsbFRlbXA7fQogICAgZnVuY3Rpb24gc2V0VGVtcChub2RlLCBsaW5lKSB7CiAgICAgIGlmIChub2RlKSBub2RlLmhpc3RvcnlUZW1wID0gbGluZTsKICAgICAgZWxzZSBudWxsVGVtcCA9IGxpbmU7CiAgICB9CgogICAgZnVuY3Rpb24gYnVpbGRMaW5lKG5vZGUpIHsKICAgICAgdmFyIHRleHQgPSBbXTsKICAgICAgZm9yICh2YXIgY3VyID0gbm9kZSA/IG5vZGUubmV4dFNpYmxpbmcgOiBzZWxmLmNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICAgICAgIGN1ciAmJiAhaXNCUihjdXIpOyBjdXIgPSBjdXIubmV4dFNpYmxpbmcpCiAgICAgICAgaWYgKGN1ci5jdXJyZW50VGV4dCkgdGV4dC5wdXNoKGN1ci5jdXJyZW50VGV4dCk7CiAgICAgIHJldHVybiB7ZnJvbTogbm9kZSwgdG86IGN1ciwgdGV4dDogY2xlYW5UZXh0KHRleHQuam9pbigiIikpfTsKICAgIH0KCiAgICAvLyBGaWx0ZXIgb3V0IHVuY2hhbmdlZCBsaW5lcyBhbmQgbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZQogICAgLy8gZG9jdW1lbnQuIEJ1aWxkIHVwIGxpbmUgb2JqZWN0cyBmb3IgcmVtYWluaW5nIG5vZGVzLgogICAgdmFyIGxpbmVzID0gW107CiAgICBpZiAoc2VsZi5maXJzdFRvdWNoZWQpIHNlbGYudG91Y2hlZC5wdXNoKG51bGwpOwogICAgZm9yRWFjaChzZWxmLnRvdWNoZWQsIGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9IHNlbGYuY29udGFpbmVyKSByZXR1cm47CgogICAgICBpZiAobm9kZSkgbm9kZS5oaXN0b3J5VG91Y2hlZCA9IGZhbHNlOwogICAgICBlbHNlIHNlbGYuZmlyc3RUb3VjaGVkID0gZmFsc2U7CgogICAgICB2YXIgbGluZSA9IGJ1aWxkTGluZShub2RlKSwgc2hhZG93ID0gc2VsZi5hZnRlcihub2RlKTsKICAgICAgaWYgKCFzaGFkb3cgfHwgc2hhZG93LnRleHQgIT0gbGluZS50ZXh0IHx8IHNoYWRvdy50byAhPSBsaW5lLnRvKSB7CiAgICAgICAgbGluZXMucHVzaChsaW5lKTsKICAgICAgICBzZXRUZW1wKG5vZGUsIGxpbmUpOwogICAgICB9CiAgICB9KTsKCiAgICAvLyBHZXQgdGhlIEJSIGVsZW1lbnQgYWZ0ZXIvYmVmb3JlIHRoZSBnaXZlbiBub2RlLgogICAgZnVuY3Rpb24gbmV4dEJSKG5vZGUsIGRpcikgewogICAgICB2YXIgbGluayA9IGRpciArICJTaWJsaW5nIiwgc2VhcmNoID0gbm9kZVtsaW5rXTsKICAgICAgd2hpbGUgKHNlYXJjaCAmJiAhaXNCUihzZWFyY2gpKQogICAgICAgIHNlYXJjaCA9IHNlYXJjaFtsaW5rXTsKICAgICAgcmV0dXJuIHNlYXJjaDsKICAgIH0KCiAgICAvLyBBc3NlbWJsZSBsaW5lIG9iamVjdHMgaW50byBjaGFpbnMgYnkgc2Nhbm5pbmcgdGhlIERPTSB0cmVlCiAgICAvLyBhcm91bmQgdGhlbS4KICAgIHZhciBjaGFpbnMgPSBbXTsgc2VsZi50b3VjaGVkID0gW107CiAgICBmb3JFYWNoKGxpbmVzLCBmdW5jdGlvbihsaW5lKSB7CiAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIG1ha2VzIHRoZSBsb29wIHNraXAgbGluZSBvYmplY3RzIHRoYXQgaGF2ZQogICAgICAvLyBiZWVuIHB1bGxlZCBpbnRvIGNoYWlucyBieSBsaW5lcyBiZWZvcmUgdGhlbS4KICAgICAgaWYgKCF0ZW1wKGxpbmUuZnJvbSkpIHJldHVybjsKCiAgICAgIHZhciBjaGFpbiA9IFtdLCBjdXJOb2RlID0gbGluZS5mcm9tLCBzYWZlID0gdHJ1ZTsKICAgICAgLy8gUHV0IGFueSBsaW5lIG9iamVjdHMgKHJlZmVycmVkIHRvIGJ5IHRlbXAgaW5mbykgYmVmb3JlIHRoaXMKICAgICAgLy8gb25lIG9uIHRoZSBmcm9udCBvZiB0aGUgYXJyYXkuCiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdmFyIGN1ckxpbmUgPSB0ZW1wKGN1ck5vZGUpOwogICAgICAgIGlmICghY3VyTGluZSkgewogICAgICAgICAgaWYgKHNhZmUpIGJyZWFrOwogICAgICAgICAgZWxzZSBjdXJMaW5lID0gYnVpbGRMaW5lKGN1ck5vZGUpOwogICAgICAgIH0KICAgICAgICBjaGFpbi51bnNoaWZ0KGN1ckxpbmUpOwogICAgICAgIHNldFRlbXAoY3VyTm9kZSwgbnVsbCk7CiAgICAgICAgaWYgKCFjdXJOb2RlKSBicmVhazsKICAgICAgICBzYWZlID0gc2VsZi5hZnRlcihjdXJOb2RlKTsKICAgICAgICBjdXJOb2RlID0gbmV4dEJSKGN1ck5vZGUsICJwcmV2aW91cyIpOwogICAgICB9CiAgICAgIGN1ck5vZGUgPSBsaW5lLnRvOyBzYWZlID0gc2VsZi5iZWZvcmUobGluZS5mcm9tKTsKICAgICAgLy8gQWRkIGxpbmVzIGFmdGVyIHRoaXMgb25lIGF0IGVuZCBvZiBhcnJheS4KICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoIWN1ck5vZGUpIGJyZWFrOwogICAgICAgIHZhciBjdXJMaW5lID0gdGVtcChjdXJOb2RlKTsKICAgICAgICBpZiAoIWN1ckxpbmUpIHsKICAgICAgICAgIGlmIChzYWZlKSBicmVhazsKICAgICAgICAgIGVsc2UgY3VyTGluZSA9IGJ1aWxkTGluZShjdXJOb2RlKTsKICAgICAgICB9CiAgICAgICAgY2hhaW4ucHVzaChjdXJMaW5lKTsKICAgICAgICBzZXRUZW1wKGN1ck5vZGUsIG51bGwpOwogICAgICAgIHNhZmUgPSBzZWxmLmJlZm9yZShjdXJOb2RlKTsKICAgICAgICBjdXJOb2RlID0gbmV4dEJSKGN1ck5vZGUsICJuZXh0Iik7CiAgICAgIH0KICAgICAgY2hhaW5zLnB1c2goY2hhaW4pOwogICAgfSk7CgogICAgcmV0dXJuIGNoYWluczsKICB9LAoKICAvLyBGaW5kIHRoZSAnc2hhZG93JyBvZiBhIGdpdmVuIGNoYWluIGJ5IGZvbGxvd2luZyB0aGUgbGlua3MgaW4gdGhlCiAgLy8gRE9NIG5vZGVzIGF0IGl0cyBzdGFydCBhbmQgZW5kLgogIHNoYWRvd0NoYWluOiBmdW5jdGlvbihjaGFpbikgewogICAgdmFyIHNoYWRvd3MgPSBbXSwgbmV4dCA9IHRoaXMuYWZ0ZXIoY2hhaW5bMF0uZnJvbSksIGVuZCA9IGNoYWluW2NoYWluLmxlbmd0aCAtIDFdLnRvOwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgc2hhZG93cy5wdXNoKG5leHQpOwogICAgICB2YXIgbmV4dE5vZGUgPSBuZXh0LnRvOwogICAgICBpZiAoIW5leHROb2RlIHx8IG5leHROb2RlID09IGVuZCkKICAgICAgICBicmVhazsKICAgICAgZWxzZQogICAgICAgIG5leHQgPSBuZXh0Tm9kZS5oaXN0b3J5QWZ0ZXIgfHwgdGhpcy5iZWZvcmUoZW5kKTsKICAgICAgLy8gKFRoZSB0aGlzLmJlZm9yZShlbmQpIGlzIGEgaGFjayAtLSBGRiBzb21ldGltZXMgcmVtb3ZlcwogICAgICAvLyBwcm9wZXJ0aWVzIGZyb20gQlIgbm9kZXMsIGluIHdoaWNoIGNhc2UgdGhlIGJlc3Qgd2UgY2FuIGhvcGUKICAgICAgLy8gZm9yIGlzIHRvIG5vdCBicmVhay4pCiAgICB9CiAgICByZXR1cm4gc2hhZG93czsKICB9LAoKICAvLyBVcGRhdGUgdGhlIERPTSB0cmVlIHRvIGNvbnRhaW4gdGhlIGxpbmVzIHNwZWNpZmllZCBpbiBhIGdpdmVuCiAgLy8gY2hhaW4sIGxpbmsgdGhpcyBjaGFpbiBpbnRvIHRoZSBET00gbm9kZXMuCiAgYXBwbHlDaGFpbjogZnVuY3Rpb24oY2hhaW4pIHsKICAgIC8vIFNvbWUgYXR0ZW1wdCBpcyBtYWRlIHRvIHByZXZlbnQgdGhlIGN1cnNvciBmcm9tIGp1bXBpbmcKICAgIC8vIHJhbmRvbWx5IHdoZW4gYW4gdW5kbyBvciByZWRvIGhhcHBlbnMuIEl0IHN0aWxsIGJlaGF2ZXMgYSBiaXQKICAgIC8vIHN0cmFuZ2Ugc29tZXRpbWVzLgogICAgdmFyIGN1cnNvciA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIGZhbHNlKSwgc2VsZiA9IHRoaXM7CgogICAgLy8gUmVtb3ZlIGFsbCBub2RlcyBpbiB0aGUgRE9NIHRyZWUgYmV0d2VlbiBmcm9tIGFuZCB0byAobnVsbCBmb3IKICAgIC8vIHN0YXJ0L2VuZCBvZiBjb250YWluZXIpLgogICAgZnVuY3Rpb24gcmVtb3ZlUmFuZ2UoZnJvbSwgdG8pIHsKICAgICAgdmFyIHBvcyA9IGZyb20gPyBmcm9tLm5leHRTaWJsaW5nIDogc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgd2hpbGUgKHBvcyAhPSB0bykgewogICAgICAgIHZhciB0ZW1wID0gcG9zLm5leHRTaWJsaW5nOwogICAgICAgIHJlbW92ZUVsZW1lbnQocG9zKTsKICAgICAgICBwb3MgPSB0ZW1wOwogICAgICB9CiAgICB9CgogICAgdmFyIHN0YXJ0ID0gY2hhaW5bMF0uZnJvbSwgZW5kID0gY2hhaW5bY2hhaW4ubGVuZ3RoIC0gMV0udG87CiAgICAvLyBDbGVhciB0aGUgc3BhY2Ugd2hlcmUgdGhpcyBjaGFuZ2UgaGFzIHRvIGJlIG1hZGUuCiAgICByZW1vdmVSYW5nZShzdGFydCwgZW5kKTsKCiAgICAvLyBJbnNlcnQgdGhlIGNvbnRlbnQgc3BlY2lmaWVkIGJ5IHRoZSBjaGFpbiBpbnRvIHRoZSBET00gdHJlZS4KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhaW4ubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGxpbmUgPSBjaGFpbltpXTsKICAgICAgLy8gVGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwYWNlIGFyZSBhbHJlYWR5IGNvcnJlY3QsIGJ1dCBCUgogICAgICAvLyB0YWdzIGluc2lkZSBpdCBoYXZlIHRvIGJlIHB1dCBiYWNrLgogICAgICBpZiAoaSA+IDApCiAgICAgICAgc2VsZi5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGxpbmUuZnJvbSwgZW5kKTsKCiAgICAgIC8vIEFkZCB0aGUgdGV4dC4KICAgICAgdmFyIG5vZGUgPSBtYWtlUGFydFNwYW4oZml4U3BhY2VzKGxpbmUudGV4dCkpOwogICAgICBzZWxmLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUobm9kZSwgZW5kKTsKICAgICAgLy8gU2VlIGlmIHRoZSBjdXJzb3Igd2FzIG9uIHRoaXMgbGluZS4gUHV0IGl0IGJhY2ssIGFkanVzdGluZwogICAgICAvLyBmb3IgY2hhbmdlZCBsaW5lIGxlbmd0aCwgaWYgaXQgd2FzLgogICAgICBpZiAoY3Vyc29yICYmIGN1cnNvci5ub2RlID09IGxpbmUuZnJvbSkgewogICAgICAgIHZhciBjdXJzb3JkaWZmID0gMDsKICAgICAgICB2YXIgcHJldiA9IHRoaXMuYWZ0ZXIobGluZS5mcm9tKTsKICAgICAgICBpZiAocHJldiAmJiBpID09IGNoYWluLmxlbmd0aCAtIDEpIHsKICAgICAgICAgIC8vIE9ubHkgYWRqdXN0IGlmIHRoZSBjdXJzb3IgaXMgYWZ0ZXIgdGhlIHVuY2hhbmdlZCBwYXJ0IG9mCiAgICAgICAgICAvLyB0aGUgbGluZS4KICAgICAgICAgIGZvciAodmFyIG1hdGNoID0gMDsgbWF0Y2ggPCBjdXJzb3Iub2Zmc2V0ICYmCiAgICAgICAgICAgICAgIGxpbmUudGV4dC5jaGFyQXQobWF0Y2gpID09IHByZXYudGV4dC5jaGFyQXQobWF0Y2gpOyBtYXRjaCsrKXt9CiAgICAgICAgICBpZiAoY3Vyc29yLm9mZnNldCA+IG1hdGNoKQogICAgICAgICAgICBjdXJzb3JkaWZmID0gbGluZS50ZXh0Lmxlbmd0aCAtIHByZXYudGV4dC5sZW5ndGg7CiAgICAgICAgfQogICAgICAgIHNlbGVjdC5zZXRDdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHtub2RlOiBsaW5lLmZyb20sIG9mZnNldDogTWF0aC5tYXgoMCwgY3Vyc29yLm9mZnNldCArIGN1cnNvcmRpZmYpfSk7CiAgICAgIH0KICAgICAgLy8gQ3Vyc29yIHdhcyBpbiByZW1vdmVkIGxpbmUsIHRoaXMgaXMgbGFzdCBuZXcgbGluZS4KICAgICAgZWxzZSBpZiAoY3Vyc29yICYmIChpID09IGNoYWluLmxlbmd0aCAtIDEpICYmIGN1cnNvci5ub2RlICYmIGN1cnNvci5ub2RlLnBhcmVudE5vZGUgIT0gdGhpcy5jb250YWluZXIpIHsKICAgICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB7bm9kZTogbGluZS5mcm9tLCBvZmZzZXQ6IGxpbmUudGV4dC5sZW5ndGh9KTsKICAgICAgfQogICAgfQoKICAgIC8vIEFuY2hvciB0aGUgY2hhaW4gaW4gdGhlIERPTSB0cmVlLgogICAgdGhpcy5saW5rQ2hhaW4oY2hhaW4pOwogICAgcmV0dXJuIHN0YXJ0OwogIH0KfTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/util.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogQSBmZXcgdXNlZnVsIHV0aWxpdHkgZnVuY3Rpb25zLiAqLwoKLy8gQ2FwdHVyZSBhIG1ldGhvZCBvbiBhbiBvYmplY3QuCmZ1bmN0aW9uIG1ldGhvZChvYmosIG5hbWUpIHsKICByZXR1cm4gZnVuY3Rpb24oKSB7b2JqW25hbWVdLmFwcGx5KG9iaiwgYXJndW1lbnRzKTt9Owp9CgovLyBUaGUgdmFsdWUgdXNlZCB0byBzaWduYWwgdGhlIGVuZCBvZiBhIHNlcXVlbmNlIGluIGl0ZXJhdG9ycy4KdmFyIFN0b3BJdGVyYXRpb24gPSB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkge3JldHVybiAiU3RvcEl0ZXJhdGlvbiJ9fTsKCi8vIEFwcGx5IGEgZnVuY3Rpb24gdG8gZWFjaCBlbGVtZW50IGluIGEgc2VxdWVuY2UuCmZ1bmN0aW9uIGZvckVhY2goaXRlciwgZikgewogIGlmIChpdGVyLm5leHQpIHsKICAgIHRyeSB7d2hpbGUgKHRydWUpIGYoaXRlci5uZXh0KCkpO30KICAgIGNhdGNoIChlKSB7aWYgKGUgIT0gU3RvcEl0ZXJhdGlvbikgdGhyb3cgZTt9CiAgfQogIGVsc2UgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyLmxlbmd0aDsgaSsrKQogICAgICBmKGl0ZXJbaV0pOwogIH0KfQoKLy8gTWFwIGEgZnVuY3Rpb24gb3ZlciBhIHNlcXVlbmNlLCBwcm9kdWNpbmcgYW4gYXJyYXkgb2YgcmVzdWx0cy4KZnVuY3Rpb24gbWFwKGl0ZXIsIGYpIHsKICB2YXIgYWNjdW0gPSBbXTsKICBmb3JFYWNoKGl0ZXIsIGZ1bmN0aW9uKHZhbCkge2FjY3VtLnB1c2goZih2YWwpKTt9KTsKICByZXR1cm4gYWNjdW07Cn0KCi8vIENyZWF0ZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHRlc3RzIGEgc3RyaW5nIGFnYWluc3RzIGEgZ2l2ZW4KLy8gcmVndWxhciBleHByZXNzaW9uLiBObyBsb25nZXIgdXNlZCBidXQgbWlnaHQgYmUgdXNlZCBieSAzcmQgcGFydHkKLy8gcGFyc2Vycy4KZnVuY3Rpb24gbWF0Y2hlcihyZWdleHApewogIHJldHVybiBmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHJlZ2V4cC50ZXN0KHZhbHVlKTt9Owp9CgovLyBUZXN0IHdoZXRoZXIgYSBET00gbm9kZSBoYXMgYSBjZXJ0YWluIENTUyBjbGFzcy4gTXVjaCBmYXN0ZXIgdGhhbgovLyB0aGUgTW9jaGlLaXQgZXF1aXZhbGVudCwgZm9yIHNvbWUgcmVhc29uLgpmdW5jdGlvbiBoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpewogIHZhciBjbGFzc2VzID0gZWxlbWVudC5jbGFzc05hbWU7CiAgcmV0dXJuIGNsYXNzZXMgJiYgbmV3IFJlZ0V4cCgiKF58ICkiICsgY2xhc3NOYW1lICsgIigkfCApIikudGVzdChjbGFzc2VzKTsKfQoKLy8gSW5zZXJ0IGEgRE9NIG5vZGUgYWZ0ZXIgYW5vdGhlciBub2RlLgpmdW5jdGlvbiBpbnNlcnRBZnRlcihuZXdOb2RlLCBvbGROb2RlKSB7CiAgdmFyIHBhcmVudCA9IG9sZE5vZGUucGFyZW50Tm9kZTsKICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIG9sZE5vZGUubmV4dFNpYmxpbmcpOwogIHJldHVybiBuZXdOb2RlOwp9CgpmdW5jdGlvbiByZW1vdmVFbGVtZW50KG5vZGUpIHsKICBpZiAobm9kZS5wYXJlbnROb2RlKQogICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpOwp9CgpmdW5jdGlvbiBjbGVhckVsZW1lbnQobm9kZSkgewogIHdoaWxlIChub2RlLmZpcnN0Q2hpbGQpCiAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUuZmlyc3RDaGlsZCk7Cn0KCi8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIGNvbnRhaW5lZCBpbiBhbm90aGVyIG9uZS4KZnVuY3Rpb24gaXNBbmNlc3Rvcihub2RlLCBjaGlsZCkgewogIHdoaWxlIChjaGlsZCA9IGNoaWxkLnBhcmVudE5vZGUpIHsKICAgIGlmIChub2RlID09IGNoaWxkKQogICAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgovLyBUaGUgbm9uLWJyZWFraW5nIHNwYWNlIGNoYXJhY3Rlci4KdmFyIG5ic3AgPSAiXHUwMGEwIjsKdmFyIG1hdGNoaW5nID0geyJ7IjogIn0iLCAiWyI6ICJdIiwgIigiOiAiKSIsCiAgICAgICAgICAgICAgICAifSI6ICJ7IiwgIl0iOiAiWyIsICIpIjogIigifTsKCi8vIFN0YW5kYXJkaXplIGEgZmV3IHVucG9ydGFibGUgZXZlbnQgcHJvcGVydGllcy4KZnVuY3Rpb24gbm9ybWFsaXplRXZlbnQoZXZlbnQpIHsKICBpZiAoIWV2ZW50LnN0b3BQcm9wYWdhdGlvbikgewogICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24oKSB7dGhpcy5jYW5jZWxCdWJibGUgPSB0cnVlO307CiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKCkge3RoaXMucmV0dXJuVmFsdWUgPSBmYWxzZTt9OwogIH0KICBpZiAoIWV2ZW50LnN0b3ApIHsKICAgIGV2ZW50LnN0b3AgPSBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgpOwogICAgfTsKICB9CgogIGlmIChldmVudC50eXBlID09ICJrZXlwcmVzcyIpIHsKICAgIGV2ZW50LmNvZGUgPSAoZXZlbnQuY2hhckNvZGUgPT0gbnVsbCkgPyBldmVudC5rZXlDb2RlIDogZXZlbnQuY2hhckNvZGU7CiAgICBldmVudC5jaGFyYWN0ZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNvZGUpOwogIH0KICByZXR1cm4gZXZlbnQ7Cn0KCi8vIFBvcnRhYmx5IHJlZ2lzdGVyIGV2ZW50IGhhbmRsZXJzLgpmdW5jdGlvbiBhZGRFdmVudEhhbmRsZXIobm9kZSwgdHlwZSwgaGFuZGxlciwgcmVtb3ZlRnVuYykgewogIGZ1bmN0aW9uIHdyYXBIYW5kbGVyKGV2ZW50KSB7CiAgICBoYW5kbGVyKG5vcm1hbGl6ZUV2ZW50KGV2ZW50IHx8IHdpbmRvdy5ldmVudCkpOwogIH0KICBpZiAodHlwZW9mIG5vZGUuYWRkRXZlbnRMaXN0ZW5lciA9PSAiZnVuY3Rpb24iKSB7CiAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgd3JhcEhhbmRsZXIsIGZhbHNlKTsKICAgIGlmIChyZW1vdmVGdW5jKSByZXR1cm4gZnVuY3Rpb24oKSB7bm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBIYW5kbGVyLCBmYWxzZSk7fTsKICB9CiAgZWxzZSB7CiAgICBub2RlLmF0dGFjaEV2ZW50KCJvbiIgKyB0eXBlLCB3cmFwSGFuZGxlcik7CiAgICBpZiAocmVtb3ZlRnVuYykgcmV0dXJuIGZ1bmN0aW9uKCkge25vZGUuZGV0YWNoRXZlbnQoIm9uIiArIHR5cGUsIHdyYXBIYW5kbGVyKTt9OwogIH0KfQoKZnVuY3Rpb24gbm9kZVRleHQobm9kZSkgewogIHJldHVybiBub2RlLnRleHRDb250ZW50IHx8IG5vZGUuaW5uZXJUZXh0IHx8IG5vZGUubm9kZVZhbHVlIHx8ICIiOwp9CgpmdW5jdGlvbiBub2RlVG9wKG5vZGUpIHsKICB2YXIgdG9wID0gMDsKICB3aGlsZSAobm9kZS5vZmZzZXRQYXJlbnQpIHsKICAgIHRvcCArPSBub2RlLm9mZnNldFRvcDsKICAgIG5vZGUgPSBub2RlLm9mZnNldFBhcmVudDsKICB9CiAgcmV0dXJuIHRvcDsKfQoKZnVuY3Rpb24gaXNCUihub2RlKSB7CiAgdmFyIG5uID0gbm9kZS5ub2RlTmFtZTsKICByZXR1cm4gbm4gPT0gIkJSIiB8fCBubiA9PSAiYnIiOwp9CmZ1bmN0aW9uIGlzU3Bhbihub2RlKSB7CiAgdmFyIG5uID0gbm9kZS5ub2RlTmFtZTsKICByZXR1cm4gbm4gPT0gIlNQQU4iIHx8IG5uID09ICJzcGFuIjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/jstest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ianMvbWlycm9yZnJhbWUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSmF2YVNjcmlwdCBkZW1vbnN0cmF0aW9uPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9kb2NzLmNzcyIvPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBwYWdlIGRlbW9uc3RyYXRlcyA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPidzCkphdmFTY3JpcHQgcGFyc2VyLiBOb3RlIHRoYXQgdGhlIHVnbHkgYnV0dG9ucyBhdCB0aGUgdG9wIGFyZSBub3QgYXJlCm5vdCBwYXJ0IG9mIENvZGVNaXJyb3IgcHJvcGVyIC0tIHRoZXkgZGVtb25zdHJhdGUgdGhlIHdheSBpdCBjYW4gYmUKZW1iZWRkZWQgaW4gYSB3ZWItYXBwbGljYXRpb24uPC9wPgoKPGRpdiBjbGFzcz0iYm9yZGVyIj4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KLy8gSGVyZSB5b3Ugc2VlIHNvbWUgSmF2YVNjcmlwdCBjb2RlLiBNZXNzIGFyb3VuZCB3aXRoIGl0IHRvIGdldAovLyBhY3F1YWludGVkIHdpdGggQ29kZU1pcnJvcidzIGZlYXR1cmVzLgoKLy8gUHJlc3MgZW50ZXIgaW5zaWRlIHRoZSBvYmplY3QgYW5kIHlvdXIgbmV3IGxpbmUgd2lsbCBiZSBzdWl0YWJseQovLyBpbmRlbnRlZC4KdmFyIGtleUJpbmRpbmdzID0gewogIGVudGVyOiAibmV3bGluZS1hbmQtaW5kZW50IiwKICB0YWI6ICJyZWluZGVudC1zZWxlY3Rpb24iLAogIGN0cmxfejogInVuZG8iLAogIGN0cmxfeTogInJlZG8iLAogIGN0cmxfYmFja3NwYWNlOiAidW5kby1mb3Itc2FmYXJpICh3aGljaCBibG9ja3MgY3RybC16KSIsCiAgY3RybF9icmFja2V0OiAiaGlnaGxpZ2h0LWJyYWNrZXRzIiwKICBjdHJsX3NoaWZ0X2JyYWNrZXQ6ICJqdW1wLXRvLW1hdGNoaW5nLWJyYWNrZXQiCn07CgovLyBQcmVzcyB0YWIgb24gdGhlIG5leHQgbGluZSBhbmQgdGhlIHdyb25nIGluZGVudGF0aW9uIHdpbGwgYmUgZml4ZWQuCiAgICAgIHZhciByZWdleCA9IC9mb298YmFyL2k7CgpmdW5jdGlvbiBleGFtcGxlKHgpIHsKICAvLyBMb2NhbCB2YXJpYWJsZXMgZ2V0IGEgZGlmZmVyZW50IGNvbG91ciB0aGFuIGdsb2JhbCBvbmVzLgogIHZhciB5ID0gNDQuNDsKICByZXR1cm4geCArIHkgLSB6Owp9CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CiAgdmFyIGVkaXRvciA9IG5ldyBNaXJyb3JGcmFtZShDb2RlTWlycm9yLnJlcGxhY2UodGV4dGFyZWEpLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBjb250ZW50OiB0ZXh0YXJlYS52YWx1ZSwKICAgIHBhcnNlcmZpbGU6IFsidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyJdLAogICAgc3R5bGVzaGVldDogImNzcy9qc2NvbG9ycy5jc3MiLAogICAgcGF0aDogImpzLyIsCiAgICBhdXRvTWF0Y2hQYXJlbnM6IHRydWUKICB9KTsKPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAwNy0yMDEwIE1hcmlqbiBIYXZlcmJla2UKCiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQogZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgoKIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCiByZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgoKIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKICAgIG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcwogICAgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdAogICAgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgoKIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QKICAgIG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCgogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCiAgICBkaXN0cmlidXRpb24uCgogTWFyaWpuIEhhdmVyYmVrZQogbWFyaWpuaEBnbWFpbC5jb20K]]></data>
	</file>
	<file>
	  <filename>/codemirror/manual.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IFVzZXIgTWFudWFsPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9kb2NzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaHR0cDovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RHJvaWQrU2Fuc3xEcm9pZCtTYW5zK01vbm98RHJvaWQrU2Fuczpib2xkIi8+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIvPgogIDwvaGVhZD4KICA8Ym9keT4KCjxoMT48c3BhbiBjbGFzcz0ibG9nby1icmFjZXMiPnsgfTwvc3Bhbj4gQ29kZU1pcnJvcjwvaDE+Cgo8cHJlIGNsYXNzPSJncmV5Ij4KLyogVXNlciBtYW51YWwgYW5kCiAgIHJlZmVyZW5jZSBndWlkZSAqLwo8L3ByZT4KCjxkaXYgY2xhc3M9ImNsZWFyIj48ZGl2IGNsYXNzPSJsZWZ0YmlnIGJsayI+CgogICAgPGgyIGlkPSJ1c2FnZSI+QmFzaWMgVXNhZ2U8L2gyPgoKICAgIDxwPkluc2lkZSB0aGUgZWRpdG9yLCB0aGUgdGFiIGtleSBpcyB1c2VkIHRvIHJlLWluZGVudCB0aGUgY3VycmVudAogICAgc2VsZWN0aW9uIChvciB0aGUgY3VycmVudCBsaW5lIHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZCksIGFuZAogICAgcHJlc3NpbmcgZW50ZXIgd2lsbCwgYXBhcnQgZnJvbSBpbnNlcnRpbmcgYSBsaW5lIGJyZWFrLAogICAgYXV0b21hdGljYWxseSBpbmRlbnQgdGhlIG5ldyBsaW5lLiBQcmVzc2luZyBjb250cm9sLWVudGVyIHdpbGwKICAgIGNhdXNlIHRoZSB3aG9sZSBidWZmZXIgdG8gYmUgcmUtY29sb3VyZWQsIHdoaWNoIGNhbiBiZSBoZWxwZnVsCiAgICB3aGVuIHNvbWUgY29sb3VyaW5nIGhhcyBiZWNvbWUgb3V0LW9mLWRhdGUgd2l0aG91dCB0aGUgZWRpdG9yCiAgICBub3RpY2luZyBpdC48L3A+CgogICAgPHA+VGhlIGVkaXRvciBzcG9ydHMgYW4gdW5kby9yZWRvIHN5c3RlbSwgYWNjZXNzaWJsZSB3aXRoCiAgICBjb250cm9sLXogKHVuZG8pIGFuZCBjb250cm9sLXkgKHJlZG8pLiBTYWZhcmkgd2lsbCBub3QgYWxsb3cKICAgIGNsaWVudCBzY3JpcHRzIHRvIGNhcHR1cmUgY29udHJvbC16IHByZXNzZXMsIGJ1dCB5b3UgY2FuIHVzZQogICAgY29udHJvbC1iYWNrc3BhY2UgaW5zdGVhZCBvbiB0aGF0IGJyb3dzZXIuPC9wPgoKICAgIDxwPlRoZSBrZXktY29tYmluYXRpb24gY29udHJvbC1bIHRyaWdnZXJzIGEgcGFyZW4tYmxpbms6IElmIHRoZQogICAgY3Vyc29yIGlzIGRpcmVjdGx5IGFmdGVyIGEgJygnLCAnKScsICdbJywgJ10nLCAneycsIG9yICd9JywgdGhlCiAgICBlZGl0b3IgbG9va3MgZm9yIHRoZSBtYXRjaGluZyBjaGFyYWN0ZXIsIGFuZCBoaWdobGlnaHRzIHRoZXNlCiAgICBjaGFyYWN0ZXJzIGZvciBhIG1vbWVudC4gVGhlcmUgaXMgYW4gb3B0aW9uIHRvIGVuYWJsZSB0aGlzIHRvCiAgICBoYXBwZW4gYW55IHRpbWUgdGhlIHVzZXIgdHlwZXMgc29tZXRoaW5nIG9yIG1vdmVzIHRoZSBjdXJzb3IuPC9wPgoKICAgIDxwPlRvIHVzZSBDb2RlTWlycm9yIGluIGEgZG9jdW1lbnQsIHlvdSBzaG91bGQgYWRkIGEgc2NyaXB0IHRhZyB0bwogICAgbG9hZCA8YSBocmVmPSJqcy9jb2RlbWlycm9yLmpzIj48Y29kZT5jb2RlbWlycm9yLmpzPC9jb2RlPjwvYT4uIFRoaXMKICAgIGFkZHMgdHdvIG9iamVjdHMgdG8geW91ciBlbnZpcm9ubWVudCwgPGNvZGU+Q29kZU1pcnJvcjwvY29kZT4gYW5kCiAgICA8Y29kZT5Db2RlTWlycm9yQ29uZmlnPC9jb2RlPi4gVGhlIGZpcnN0IGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlCiAgICBlZGl0b3IsIHRoZSBzZWNvbmQgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGl0LiAoTm90ZSB0aGF0IHRoaXMgaXMKICAgIHRoZSBvbmx5IG5hbWUtc3BhY2UgcG9sbHV0aW9uIHlvdSBjYW4gZXhwZWN0IGZyb20gQ29kZU1pcnJvciAtLQogICAgYWxsIG90aGVyIGNydWZ0IGlzIGtlcHQgaW5zaWRlIHRoZSBJRlJBTUVzIHRoYXQgaXQgY3JlYXRlcyB3aGVuCiAgICB5b3Ugb3BlbiBhbiBlZGl0b3IuKTwvcD4KCiAgICA8cD5UbyBhZGQgYW4gZWRpdG9yIHRvIGEgZG9jdW1lbnQsIHlvdSBtdXN0IGNob29zZSBhIHBsYWNlLCBhCiAgICBwYXJzZXIsIGFuZCBhIHN0eWxlLXNoZWV0IGZvciBpdC4gRm9yIGV4YW1wbGUsIHRvIGFwcGVuZCBhbgogICAgWE1MIGVkaXRvciB0byB0aGUgYm9keSBvZiB0aGUgZG9jdW1lbnQsIHlvdSBkbzo8L3A+CgogICAgPHByZSBjbGFzcz0iY29kZSI+dmFyIGVkaXRvciA9IG5ldyBDb2RlTWlycm9yKGRvY3VtZW50LmJvZHksIHsKICBwYXJzZXJmaWxlOiAicGFyc2V4bWwuanMiLAogIHN0eWxlc2hlZXQ6ICJ4bWxjb2xvcnMuY3NzIgp9KTs8L3ByZT4KCiAgICA8cD5UaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIDxjb2RlPkNvZGVNaXJyb3I8L2NvZGU+IGNvbnN0cnVjdG9yCiAgICBjYW4gYmUgYSBET00gbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgZWRpdG9yIGdldHMgYXBwZW5kZWQgdG8gdGhhdAogICAgbm9kZSwgb3IgYSBmdW5jdGlvbiwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgSUZSQU1FIG5vZGUgYXMKICAgIGFyZ3VtZW50LCBhbmQgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gcGxhY2UgdGhhdCBub2RlIHNvbWV3aGVyZSBpbgogICAgdGhlIGRvY3VtZW50LjwvcD4KCiAgICA8cD5UaGUgc2Vjb25kIChvcHRpb25hbCkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHRoYXQgc3BlY2lmaWVzCiAgICBvcHRpb25zLiBBIHNldCBvZiBkZWZhdWx0IG9wdGlvbnMgKHNlZSBiZWxvdykgaXMgcHJlc2VudCBpbiB0aGUKICAgIDxjb2RlPkNvZGVNaXJyb3JDb25maWc8L2NvZGU+IG9iamVjdCwgYnV0IGVhY2ggaW5zdGFuY2Ugb2YgdGhlCiAgICBlZGl0b3IgY2FuIGJlIGdpdmVuIGEgc2V0IG9mIHNwZWNpZmljIG9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlc2UKICAgIGRlZmF1bHRzLiBJbiB0aGlzIGNhc2UsIHdlIHNwZWNpZmllZCB0aGF0IHRoZSBwYXJzZXIgc2hvdWxkIGJlCiAgICBsb2FkZWQgZnJvbSB0aGUgPGEKICAgIGhyZWY9ImpzL3BhcnNleG1sLmpzIj48Y29kZT4icGFyc2V4bWwuanMiPC9jb2RlPjwvYT4gZmlsZSwgYW5kCiAgICB0aGF0IDxhIGhyZWY9ImNzcy94bWxjb2xvcnMuY3NzIj48Y29kZT4ieG1sY29sb3JzLmNzcyI8L2NvZGU+PC9hPgogICAgc2hvdWxkIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY29sb3VycyBvZiB0aGUgY29kZS48L3A+CgogICAgPHA+QW5vdGhlciBleGFtcGxlOjwvcD4KCiAgICA8cHJlIGNsYXNzPSJjb2RlIj52YXIgZWRpdG9yID0gbmV3IENvZGVNaXJyb3IoQ29kZU1pcnJvci5yZXBsYWNlKCJpbnB1dGZpZWxkIiksIHsKICBwYXJzZXJmaWxlOiBbInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiXSwKICBwYXRoOiAibGliL2NvZGVtaXJyb3IvanMvIiwKICBzdHlsZXNoZWV0OiAibGliL2NvZGVtaXJyb3IvY3NzL2pzY29sb3JzLmNzcyIsCiAgY29udGVudDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0ZmllbGQiKS52YWx1ZQp9KTs8L3ByZT4KCiAgICA8cD5IZXJlIHdlIHVzZSB0aGUgdXRpbGl0eSBmdW5jdGlvbgogICAgPGNvZGU+Q29kZU1pcnJvci5yZXBsYWNlPC9jb2RlPiB0byBjcmVhdGUgYSBmdW5jdGlvbiB0aGF0IHdpbGwKICAgIHJlcGxhY2UgYSBub2RlIGluIHRoZSBjdXJyZW50IGRvY3VtZW50IChnaXZlbiBlaXRoZXIgZGlyZWN0bHkgb3IKICAgIGJ5IElEKSB3aXRoIHRoZSBlZGl0b3IuIFdlIGFsc28gc2VsZWN0IHRoZSBKYXZhU2NyaXB0IHBhcnNlciB0aGlzCiAgICB0aW1lLCBhbmQgZ2l2ZSBhIDxjb2RlPnBhdGg8L2NvZGU+IG9wdGlvbiB0byB0ZWxsIHRoZSBlZGl0b3IgdGhhdAogICAgaXRzIGZpbGVzIGFyZSBub3QgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGN1cnJlbnQKICAgIEhUTUwgcGFnZSwgYnV0IGluIDxjb2RlPiJsaWIvY29kZW1pcnJvci8iPC9jb2RlPi48L3A+CgogICAgPHA+VGhlcmUgaXMgYSBmdW5jdGlvbgogICAgPGNvZGU+Q29kZU1pcnJvci5pc1Byb2JhYmx5U3VwcG9ydGVkKCk8L2NvZGU+IHRoYXQgY2F1c2VzIHNvbWUKICAgIDE5OTgtc3R5bGUgYnJvd3NlciBkZXRlY3Rpb24gdG8gaGFwcGVuLCByZXR1cm5pbmcKICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBDb2RlTWlycm9yIGlzIHByb2JhYmx5IG5vdCBzdXBwb3J0ZWQgb24gdGhlCiAgICBicm93c2VyLCA8Y29kZT50cnVlPC9jb2RlPiBpZiBpdCBwcm9iYWJseSBpcywgYW5kCiAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiBpdCBoYXMgbm8gaWRlYS4gQXMgdGhlIG5hbWUgc3VnZ2VzdHMsIHRoaXMgaXMKICAgIG5vdCBzb21ldGhpbmcgeW91IGNhbiByZWx5IG9uLCBidXQgaXQncyB1c3VhbGx5IGJldHRlciB0aGFuCiAgICBub3RoaW5nLjwvcD4KCiAgICA8cD5Bbm90aGVyIHV0aWxpdHkgZnVuY3Rpb24sIDxjb2RlPkNvZGVNaXJyb3IuZnJvbVRleHRBcmVhPC9jb2RlPiwKICAgIHdpbGwsIGdpdmVuIGEgdGV4dGFyZWEgbm9kZSBvciB0aGUgaWQgb2Ygc3VjaCBhIG5vZGUsIGhpZGUgdGhlCiAgICB0ZXh0YXJlYSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgQ29kZU1pcnJvciBmcmFtZS4gSWYgdGhlIHRleHRhcmVhCiAgICB3YXMgcGFydCBvZiBhIGZvcm0sIGFuIDxjb2RlPm9uc3VibWl0PC9jb2RlPiBoYW5kbGVyIHdpbGwgYmUKICAgIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGZvcm0sIHdoaWNoIHdpbGwgbG9hZCB0aGUgY29udGVudCBvZiB0aGUKICAgIGVkaXRvciBpbnRvIHRoZSB0ZXh0YXJlYSwgc28gdGhhdCBpdCBjYW4gYmUgc3VibWl0dGVkIGFzIG5vcm1hbC4KICAgIFRoaXMgZnVuY3Rpb24gb3B0aW9uYWxseSB0YWtlcyBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIHNlY29uZAogICAgYXJndW1lbnQuPC9wPgoKICAgIDxwcmUgY2xhc3M9ImNvZGUiPnZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgiaW5wdXRmaWVsZCIsIHsKICBwYXJzZXJmaWxlOiBbInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiXSwKICBwYXRoOiAibGliL2NvZGVtaXJyb3IvanMvIiwKICBzdHlsZXNoZWV0OiAibGliL2NvZGVtaXJyb3IvY3NzL2pzY29sb3JzLmNzcyIKfSk7PC9wcmU+CgogICAgPHA+SW5zdGFuY2VzIGNyZWF0ZWQgbGlrZSB0aGlzIHdpbGwgaGF2ZSBhCiAgICA8Y29kZT50b1RleHRBcmVhKCk8L2NvZGU+IG1ldGhvZCB3aGljaCByZW1vdmVzIHRoZW0gYW5kIHJlc3RvcmVzCiAgICB0aGUgdGV4dCBhcmVhIHRoZXkgd2VyZSBiYXNlZCBvbi48L3A+CgogICAgPHA+VGhlIHJlYXNvbiB0aGF0IHRoZSBzY3JpcHQgcGF0aCBoYXMgdG8gYmUgY29uZmlndXJlZCBpcyB0aGF0CiAgICBDb2RlTWlycm9yIHdpbGwgbG9hZCBpbiBhIGJ1bmNoIG9mIGV4dHJhIGZpbGVzIHdoZW4gYW4gZWRpdG9yIGlzCiAgICBjcmVhdGVkICh0aGUgcGFyc2VyIHNjcmlwdCwgYW1vbmcgb3RoZXJzKS4gVG8gYmUgYWJsZSB0byBkbyB0aGlzLAogICAgaXQgaGFzIHRvIGtub3cgd2hlcmUgdG8gZmluZCB0aGVtLiBUaGVzZSBhcmUgYWxsIHRoZSBKYXZhU2NyaXB0CiAgICBmaWxlcyB0aGF0IGFyZSBwYXJ0IG9mIENvZGVNaXJyb3IgaXRzZWxmOjwvcD4KCiAgICA8ZGw+CiAgICAgIDxkdD48YSBocmVmPSJqcy9jb2RlbWlycm9yLmpzIj48Y29kZT5jb2RlbWlycm9yLmpzPC9jb2RlPjwvYT48L2R0PgogICAgICA8ZGQ+TWFpbiBpbnRlcmZhY2UsIHRha2VzIGNhcmUgb2YgZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCB0aGUKICAgICAgZGVmaW5pdGlvbiBvZiBlZGl0b3IgZnJhbWVzLiBJbmNsdWRlIHRoaXMgaW4geW91ciBIVE1MCiAgICAgIGRvY3VtZW50LjwvZGQ+CiAgICAgIDxkdD48YSBocmVmPSJqcy9lZGl0b3IuanMiPjxjb2RlPmVkaXRvci5qczwvY29kZT48L2E+PC9kdD4gPGRkPlRoZQogICAgICBjb2RlIHRoYXQgdGFrZXMgY2FyZSBvZiByZWFjdGluZyB0byB1c2VyIGlucHV0LCBjb2xvdXJpbmcgdGV4dCwKICAgICAgYW5kIGluZGVudGluZyBsaW5lcy48L2RkPgogICAgICA8ZHQ+PGEgaHJlZj0ianMvdXRpbC5qcyI+PGNvZGU+dXRpbC5qczwvY29kZT48L2E+PC9kdD4gPGRkPkEgZmV3CiAgICAgIGdlbmVyaWMgdXRpbGl0eSBmdW5jdGlvbnMuPC9kZD4KICAgICAgPGR0PjxhCiAgICAgIGhyZWY9ImpzL3VuZG8uanMiPjxjb2RlPnVuZG8uanM8L2NvZGU+PC9hPjwvZHQ+CiAgICAgIDxkZD5JbXBsZW1lbnRzIHRoZSB1bmRvIGhpc3RvcnkgZm9yIHRoZSBlZGl0b3IuPC9kZD4KICAgICAgPGR0PjxhCiAgICAgIGhyZWY9ImpzL3N0cmluZ3N0cmVhbS5qcyI+PGNvZGU+c3RyaW5nc3RyZWFtLmpzPC9jb2RlPjwvYT48L2R0PgogICAgICA8ZGQ+T2JqZWN0cyBmb3Igd3JhcHBpbmcgdGhlIHRleHR1YWwgaW5wdXQgdG8gdGhlIHBhcnNlci48L2RkPgogICAgICA8ZHQ+PGEgaHJlZj0ianMvc2VsZWN0LmpzIj48Y29kZT5zZWxlY3QuanM8L2NvZGU+PC9hPjwvZHQ+IDxkZD5Tb21lCiAgICAgIGhlbHBlciB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBzZWxlY3RlZCB0ZXh0IGFuZCBjdXJzb3IKICAgICAgcG9zaXRpb25zLjwvZGQ+CiAgICAgIDxkdD48YSBocmVmPSJqcy90b2tlbml6ZS5qcyI+PGNvZGU+dG9rZW5pemUuanM8L2NvZGU+PC9hPjwvZHQ+CiAgICAgIDxkZD5IZWxwZXIgZnJhbWV3b3JrIGZvciB3cml0aW5nIHRva2VuaXNlcnMuPC9kZD4KICAgIDwvZGw+CgogICAgPHA+TW9zdCBvZiB0aGVzZSBhcmUgcmF0aGVyIGZ1bGwgb2YgY29tbWVudHMsIHdoaWNoIGNhbiBiZSB1c2VmdWwKICAgIHdoZW4geW91IGFyZSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhleSB3b3JrLCBidXQgd2FzdGVzIGEgbG90CiAgICBvZiBiYW5kd2lkdGggaW4gYSBwcm9kdWN0aW9uIHN5c3RlbS4gVGFrZSBhIGxvb2sgYXQgdGhlCiAgICBkZXNjcmlwdGlvbiBvZiB0aGUgPGNvZGU+YmFzZWZpbGVzPC9jb2RlPiBvcHRpb24gYmVsb3cgaWYgeW91IHdhbnQKICAgIHRvIGNvbmNhdGVuYXRlIGFuZCBtaW5pbWlzZSB0aGUgbGlicmFyeSAoc2VlIHRoZSA8YSBocmVmPSJjb21wcmVzcy5odG1sIj5jb21wcmVzc2lvbiBBUEk8L2E+KS48L3A+CgogICAgPHA+QXBhcnQgZnJvbSB0aGVzZSwgdGhlcmUgYXJlIGZpbGVzIHRoYXQgaW1wbGVtZW50IHRoZSB2YXJpb3VzCiAgICBwYXJzZXJzLiBUaGVzZSBhbGwgc3RhcnQgd2l0aCBlaXRoZXIgPGNvZGU+cGFyc2U8L2NvZGU+IG9yCiAgICA8Y29kZT50b2tlbml6ZTwvY29kZT4uPC9wPgoKICAgIDxoMiBpZD0iY29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvaDI+CgogICAgPHA+VGhlcmUgYXJlIHRocmVlIHdheXMgdG8gY29uZmlndXJlIENvZGVNaXJyb3I6PC9wPgoKICAgIDx1bD4KICAgICAgPGxpPklmIHlvdSBkZWZpbmUgYSBnbG9iYWwgPGNvZGU+Q29kZU1pcnJvckNvbmZpZzwvY29kZT4gb2JqZWN0CiAgICAgIGJlZm9yZSBsb2FkaW5nIDxhCiAgICAgIGhyZWY9ImpzL2NvZGVtaXJyb3IuanMiPjxjb2RlPmNvZGVtaXJyb3IuanM8L2NvZGU+PC9hPiwgdGhlCiAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGF0IG9iamVjdCB3aWxsIG92ZXJyaWRlIHRoZQogICAgICBkZWZhdWx0cy48L2xpPgogICAgICA8bGk+QnkgYXNzaWduaW5nIHRvIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZQogICAgICA8Y29kZT5Db2RlTWlycm9yQ29uZmlnPC9jb2RlPiBvYmplY3QsIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgY2FuCiAgICAgIGJlIG92ZXJyaWRkZW4gYWZ0ZXIgbG9hZGluZyA8YQogICAgICBocmVmPSJqcy9jb2RlbWlycm9yLmpzIj48Y29kZT5jb2RlbWlycm9yLmpzPC9jb2RlPjwvYT4uPC9saT4KICAgICAgPGxpPlRoZSA8Y29kZT5Db2RlTWlycm9yPC9jb2RlPiBjb25zdHJ1Y3RvciBjYW4gYmUgZ2l2ZW4gYSBzZWNvbmQKICAgICAgYXJndW1lbnQsIGFuIG9iamVjdCwgd2hpY2ggd2lsbCBvdmVycmlkZSBzb21lIG9wdGlvbnMgZm9yIGp1c3QKICAgICAgdGhhdCBlZGl0b3IuIE9wdGlvbnMgbm90IG1lbnRpb25lZCBpbiB0aGlzIG9iamVjdCB3aWxsIGRlZmF1bHQgdG8KICAgICAgdGhlIHZhbHVlcyBpbiB0aGUgPGNvZGU+Q29kZU1pcnJvckNvbmZpZzwvY29kZT4gb2JqZWN0LjwvbGk+CiAgICA8L3VsPgoKICAgIDxwPlRoZSBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBhcmUgdGhlc2UgKG1vc3QgaGF2ZSBzZW5zaWJsZQogICAgZGVmYXVsdHMgc3BlY2lmaWVkIGluIDxhCiAgICBocmVmPSJqcy9jb2RlbWlycm9yLmpzIj48Y29kZT5jb2RlbWlycm9yLmpzPC9jb2RlPjwvYT4pOjwvcD4KCiAgICA8ZGw+CgogICAgICA8ZHQ+PGNvZGU+c3R5bGVzaGVldDwvY29kZT48L2R0PjxkZD5UaGUgZmlsZSBuYW1lIG9mIHRoZQogICAgICBzdHlsZS1zaGVldCwgb3Igc3R5bGUtc2hlZXRzLCB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGNvbG91ciB0aGUKICAgICAgY29kZSBpbiB0aGUgZWRpdG9yIGZyYW1lLiBDYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2YKICAgICAgc3RyaW5ncy4gU2VlIDxhCiAgICAgIGhyZWY9ImNzcy9qc2NvbG9ycy5jc3MiPjxjb2RlPmpzY29sb3JzLmNzczwvY29kZT48L2E+IGZvciBhbgogICAgICBleGFtcGxlLiBUaGUgc2V0IG9mIGFjdGl2ZSBzdHlsZXNoZWV0cyBjYW4gYmUgY2hhbmdlZCBpbiBhCiAgICAgIHJ1bm5pbmcgZWRpdG9yIHdpdGggdGhlIDxjb2RlPnNldFN0eWxlc2hlZXQ8L2NvZGU+IG1ldGhvZCwgd2hpY2gKICAgICAgYWxzbyB0YWtlcyBhIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIGFzIGFyZ3VtZW50LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+cGF0aDwvY29kZT48L2R0PjxkZD5UaGUgcGF0aCB0aGF0IGlzIHByZWZpeGVkIHRvCiAgICAgIHNjcmlwdCBmaWxlIG5hbWVzIHdoZW4gdGhleSBhcmUgbG9hZGVkIGludG8gYW4gSUZSQU1FLiAoTm90ZSB0aGF0CiAgICAgIHRoaXMgaXMgbm90IGFwcGxpZWQgdG8gdGhlIHN0eWxlLXNoZWV0IGZpbGUgbmFtZS4pPC9kZD4KCiAgICAgIDxkdD48Y29kZT5wYXJzZXJmaWxlPC9jb2RlPjwvZHQ+PGRkPkEgZmlsZSBuYW1lIHN0cmluZywgb3IgYW4KICAgICAgYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IG5hbWUgdGhlIGZpbGVzIGNvbnRhaW5pbmcgdGhlIHBhcnNlci4gU2VlCiAgICAgIGJlbG93IGZvciB0aGUgaW50ZXJmYWNlIHRoYXQgc3VjaCBhIHBhcnNlciBzaG91bGQKICAgICAgaW1wbGVtZW50LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+YmFzZWZpbGVzPC9jb2RlPjwvZHQ+PGRkPkFuIGFycmF5IG9mIHN0cmluZ3MgbmFtaW5nCiAgICAgIHRoZSBmaWxlcyBjb250YWluaW5nIHRoZSBiYXNlIENvZGVNaXJyb3IgZnVuY3Rpb25hbGl0eS4gRGVmYXVsdHMKICAgICAgdG8gPGNvZGU+WyJ1dGlsLmpzIiwgInN0cmluZ3N0cmVhbS5qcyIsICJzZWxlY3QuanMiLCAidW5kby5qcyIsCiAgICAgICJlZGl0b3IuanMiLCAidG9rZW5pemUuanMiXTwvY29kZT4sIGJ1dCBpZiB5b3UgcHV0IHRoZW0gYWxsIGludG8KICAgICAgYSBzaW5nbGUgZmlsZSB0byByZWR1Y2UgbGF0ZW5jeSwgb3IgYWRkIHNvbWUgZnVuY3Rpb25hbGl0eSwgeW91CiAgICAgIG1pZ2h0IGhhdmUgdG8gYWRqdXN0IHRoYXQuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5pZnJhbWVDbGFzczwvY29kZT48L2R0PjxkZD5TZXQgdGhpcyB0byBhIHN0cmluZyB0bwogICAgICBnaXZlIHRoZSBJRlJBTUUgbm9kZSBjcmVhdGVkIGZvciB0aGUgZWRpdG9yIGEgY3VzdG9tIENTUyBjbGFzcy4KICAgICAgRGVmYXVsdHMgdG8gPGNvZGU+bnVsbDwvY29kZT4uPC9kZD4KICAgICAgCiAgICAgIDxkdD48Y29kZT5wYXNzRGVsYXk8L2NvZGU+PC9kdD48ZGQ+R2l2ZXMgdGhlIGFtb3VudCBvZgogICAgICBtaWxsaXNlY29uZHMgYmV0d2VlbiBjb2xvdXJpbmcgcGFzc2VzLiBEZWZhdWx0cyB0byAyMDAuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5wYXNzVGltZTwvY29kZT48L2R0PjxkZD5TcGVjaWZpZXMgdGhlIG1heGltdW0gYW1vdW50CiAgICAgIG9mIHRpbWUgdGhhdCB0aGUgaGlnaGxpZ2h0ZXIgd2lsbCBzcGVuZCBpbiBvbmUgc2hvdC4gU2V0dGluZwogICAgICB0aGlzIHRvbyBoaWdoIHdpbGwgY2F1c2UgdGhlIGVkaXRvciB0byAnZnJlZXplJyB0aGUgYnJvd3NlciBmb3IKICAgICAgbm90aWNlYWJsZSBpbnRlcnZhbHMuIERlZmF1bHRzIHRvIDUwLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Y29udGludW91c1NjYW5uaW5nPC9jb2RlPjwvZHQ+PGRkPkNvbmZpZ3VyZSBjb250aW51b3VzCiAgICAgIHNjYW5uaW5nIG9mIHRoZSBkb2N1bWVudC4gV2hlbiA8Y29kZT5mYWxzZTwvY29kZT4sIHNjYW5uaW5nIGlzCiAgICAgIGRpc2FibGVkLiBXaGVuIHNldCB0byBhIG51bWJlciwgc2F5IDxjb2RlPk48L2NvZGU+LCBhCiAgICAgICdiYWNrZ3JvdW5kJyBwcm9jZXNzIHdpbGwgc2NhbiB0aGUgZG9jdW1lbnQgZm9yCiAgICAgIDxjb2RlPnBhc3NUaW1lPC9jb2RlPiAoc2VlIGFib3ZlKSBtaWxsaXNlY29uZHMgZXZlcnkKICAgICAgPGNvZGU+TjwvY29kZT4gbWlsbGlzZWNvbmRzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYW55dGhpbmcKICAgICAgY2hhbmdlZC4gVGhpcyBtYWtlcyBzdXJlIG5vbi1sb2NhbCBjaGFuZ2VzIHByb3BhZ2F0ZSB0aHJvdWdoIHRoZQogICAgICBkb2N1bWVudCwgYW5kIHdpbGwgaGVscCBrZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudC4gSXQgZG9lcyBhZGQKICAgICAgZXh0cmEgcHJvY2Vzc2luZyBjb3N0LCBldmVuIGZvciBhbiBpZGxlIGVkaXRvci4gRGVmYXVsdCB2YWx1ZSBpcwogICAgICA8Y29kZT5mYWxzZTwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5hdXRvTWF0Y2hQYXJlbnM8L2NvZGU+PC9kdD48ZGQ+V2hlbiA8Y29kZT50cnVlPC9jb2RlPiwKICAgICAgd2lsbCBjYXVzZSBwYXJlbnMgdG8gYmUgbWF0Y2hlZCBldmVyeSB0aW1lIGEga2V5IGlzIHByZXNzZWQgb3IKICAgICAgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBkb2N1bWVudC4gRGVmYXVsdHMgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+LgogICAgICBNaWdodCBiZSBleHBlbnNpdmUgZm9yIGJpZyBkb2N1bWVudHMuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5tYXJrUGFyZW48L2NvZGU+LAogICAgICA8Y29kZT51bm1hcmtQYXJlbjwvY29kZT48L2R0PjxkZD5GdW5jdGlvbnMuIENhbiBiZSB1c2VkIHRvCiAgICAgIGN1c3RvbWlzZSB0aGUgd2F5IGJyYWNrZXRzIGFyZSBtYXJrZWQgKGFuZCB1bm1hcmtlZCkgd2hlbgogICAgICBtYXRjaGVkLiBCb3RoIHRha2UgdGhlIGJyYWNrZXQncyA8Y29kZT5TUEFOPC9jb2RlPiBub2RlIGFzIHRoZWlyCiAgICAgIGZpcnN0IGFyZ3VtZW50LCBhbmQgPGNvZGU+bWFya1BhcmVuPC9jb2RlPiB0YWtlcyBhIHNlY29uZAogICAgICBib29sZWFuIGFyZ3VtZW50IGluZGljYXRpbmcgd2hldGhlciBhIHN1Y2Nlc3NmdWwgbWF0Y2ggd2FzCiAgICAgIGZvdW5kLiBUaGUgZGVmYXVsdCBpcyB0byBtYWtlIHRoZSBicmFja2V0cyBib2xkIGFuZCBncmVlbiAob3IKICAgICAgcmVkLCBpZiBub3QgbWF0Y2hlZCkuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5zYXZlRnVuY3Rpb248L2NvZGU+PC9kdD48ZGQ+SWYgZ2l2ZW4gYSBmdW5jdGlvbgogICAgICB2YWx1ZSwgdGhhdCBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgdXNlciBwcmVzc2VzCiAgICAgIGNvbnRyb2wtcy4gWW91IHNob3VsZCBhZHZpc2UgeW91ciBPcGVyYSB1c2VycyB0byB1c2UKICAgICAgY29udHJvbC1zaGlmdC1zIGluc3RlYWQsIHNpbmNlIHBsYWluIGNvbnRyb2wtcyB3aWxsIGJyaW5nIHVwIHRoZQogICAgICAnc2F2ZSBwYWdlJyBkaWFsb2cuIERlZmF1bHRzIHRvIDxjb2RlPm51bGw8L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+dW5kb0RlcHRoPC9jb2RlPjwvZHQ+PGRkPk1heGltdW0gbGVuZ3RoIG9mIHRoZSB1bmRvCiAgICAgIGhpc3RvcnkuIERlZmF1bHQgaXMgNTAuIFRoaXMgc2V0dGluZyBpcyBjaGFuZ2VhYmxlIHdpdGggdGhlCiAgICAgIDxjb2RlPnNldFVuZG9EZXB0aChkZXB0aCk8L2NvZGU+IG1ldGhvZCBvbiBDb2RlTWlycm9yCiAgICAgIGluc3RhbmNlcy48L2RkPgoKICAgICAgPGR0Pjxjb2RlPm9uQ2hhbmdlPC9jb2RlPjwvZHQ+PGRkPkFuIG9wdGlvbmFsIGZ1bmN0aW9uIG9mIHplcm8KICAgICAgYXJndW1lbnRzIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGRvY3VtZW50IGlzIGNoYW5nZWQuCiAgICAgIEhhcHBlbnMgYXQgdW5kby1jb21taXQgdGltZSwgbm90IGluc3RhbnRhbmlvdXNseS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnVuZG9EZWxheTwvY29kZT48L2R0PjxkZD5XaGVuIG5vdGhpbmcgaXMgZG9uZSBpbiB0aGUKICAgICAgZWRpdG9yIGZvciB0aGlzIGFtb3VudCBvZiBtaWxsaXNlY29uZHMsIHBlbmRpbmcgY2hhbmdlcyBnZXQKICAgICAgYWRkZWQgdG8gdGhlIHVuZG8gaGlzdG9yeS4gU2V0dGluZyB0aGlzIGxvd2VyIHdpbGwgZ2l2ZSB0aGUgdW5kbwogICAgICBmdW5jdGlvbmFsaXR5IGEgZmluZXIgZ3JhbnVsYXJpdHkuIERlZmF1bHRzIHRvIDgwMC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPjwvZHQ+PGRkPlRoZSBzaXplIG9mCiAgICAgIHRoZSBlZGl0b3IgZnJhbWUsIGdpdmVuIGFzIGEgc3R5bGUtc2hlZXQgcXVhbnRpdGllcyAoZm9yIGV4YW1wbGUKICAgICAgPGNvZGU+IjYwMHB4IjwvY29kZT4gb3IgPGNvZGU+IjEwMCUiPC9jb2RlPikuIFdoZW4KICAgICAgPGNvZGU+aGVpZ2h0PC9jb2RlPiBpcyBzZXQgdG8gPGNvZGU+ZHluYW1pYzwvY29kZT4sIHRoZSBlZGl0b3IKICAgICAgd2lsbCBhdXRvbWF0aWNhbGx5IHJlc2l6ZSB0byBmaXQgaXRzIGNvbnRlbnRzLiBJbiB0aGlzIGNhc2UsIHRoZQogICAgICA8Y29kZT5taW5IZWlnaHQ8L2NvZGU+IG9wdGlvbiAoYW4gaW50ZWdlcikgaXMgdXNlZCB0byBkZXRlcm1pbmUKICAgICAgdGhlIG1pbmltdW0gaGVpZ2h0IGluIHBpeGVscy48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmRpc2FibGVTcGVsbGNoZWNrPC9jb2RlPjwvZHQ+PGRkPlNob3VsZCB0aGUgZWRpdG9yCiAgICAgIGRpc2FibGUgc3BlbGwtY2hlY2tpbmcgb24gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGl0IChGaXJlZm94IDIrKS4KICAgICAgRGVmYXVsdCBpcyA8Y29kZT50cnVlPC9jb2RlPiwgc2luY2UgZm9yIG1vc3QgY29kZSBzcGVsbC1jaGVja2luZwogICAgICBpcyB1c2VsZXNzLiBDYW4gYmUgY2hhbmdlZCB3aXRoIHRoZQogICAgICA8Y29kZT5zZXRTcGVsbENoZWNrKG9uKTwvY29kZT4gbWV0aG9kLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+dGV4dFdyYXBwaW5nPC9jb2RlPjwvZHQ+PGRkPkNhbiBiZSB1c2VkIHRvIGRpc2FibGUgb3IKICAgICAgZW5hYmxlIHRleHQtd3JhcHBpbmcgaW4gdGhlIGVkaXRvciBmcmFtZS4gRGVmYXVsdCBpcwogICAgICA8Y29kZT50cnVlPC9jb2RlPi4gQ2hhbmdlYWJsZSB3aXRoIHRoZQogICAgICA8Y29kZT5zZXRUZXh0V3JhcHBpbmcob24pPC9jb2RlPiBtZXRob2QuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5saW5lTnVtYmVyczwvY29kZT48L2R0PjxkZD5TaG93IGxpbmUgbnVtYmVycyB0byB0aGUKICAgICAgbGVmdCBvZiB0aGUgZWRpdG9yLiBUaGlzIHJlcXVpcmVzIHlvdSB0byBzcGVjaWZ5IGEgc3R5bGUgZm9yIHRoZQogICAgICA8Y29kZT5Db2RlTWlycm9yLWxpbmUtbnVtYmVyczwvY29kZT4gQ1NTIGNsYXNzIChpbiB0aGUgb3V0ZXIKICAgICAgZG9jdW1lbnQpIHRvIGNvbmZpZ3VyZSB0aGUgd2lkdGgsIGZvbnQsIGNvbG9ycywgZXRjZXRlcmEgZm9yIHRoZQogICAgICBsaW5lLW51bWJlciBESVYuIFlvdSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGxpbmVzIGluIHRoZQogICAgICBudW1iZXJpbmcgZWxlbWVudCBoYXZlIHRoZSBzYW1lIGhlaWdodCBhcyBsaW5lcyBpbiB0aGUgZWRpdG9yLgogICAgICBUaGlzIGlzIG1vc3QgZWFzaWx5IGRvbmUgYnkgZ2l2aW5nIHRoZW0gYm90aCB0aGUgc2FtZSBmb250IGFuZAogICAgICBhbiBhYnNvbHV0ZSAoJ3B0JyBvciAncHgnKSBmb250IHNpemUuIFRoaXMgb3B0aW9uIGRlZmF1bHRzIHRvCiAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPi4gQ2hhbmdlYWJsZSB3aXRoIHRoZQogICAgICA8Y29kZT5zZXRMaW5lTnVtYmVycyhvbik8L2NvZGU+IG1ldGhvZC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmZpcnN0TGluZU51bWJlcjwvY29kZT48L2R0PjxkZD5XaGVuCiAgICAgIDxjb2RlPmxpbmVOdW1iZXJzPC9jb2RlPiBpcyBlbmFibGVkLCB0aGlzIGRldGVybWluZXMgdGhlIG51bWJlcgogICAgICBnaXZlbiB0byB0aGUgZmlyc3QgbGluZS4gRGVmdWFsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmxpbmVOdW1iZXJEZWxheTwvY29kZT4sCiAgICAgIDxjb2RlPmxpbmVOdW1iZXJUaW1lPC9jb2RlPjwvZHQ+PGRkPldoZW4gYm90aCBsaW5lIG51bWJlcnMgYXJlCiAgICAgIGFuZCB0ZXh0IHdyYXBwaW5nIGFyZSB0dXJuZWQgb24sIHVwZGF0aW5nIGxpbmUgbnVtYmVycyBjYW4gYmUKICAgICAgZXhwZW5zaXZlLiBUaGVzZSBzZXR0aW5ncyBjYW4gYmUgdXNlZCB0byBjb250cm9sIGhvdyBmYXN0IHRoZQogICAgICB1cGRhdGluZyBoYXBwZW5zICYjeDIwMTU7IHRoZXkgd29yayBpbiB0aGUgc2FtZSB3YXkgYXMKICAgICAgPGNvZGU+cGFzc0RlbGF5PC9jb2RlPiBhbmQgPGNvZGU+cGFzc1RpbWU8L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+aW5kZW50VW5pdDwvY29kZT48L2R0PjxkZD5BbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzCiAgICAgIHRoZSBhbW91bnQgb2Ygc3BhY2VzIG9uZSAnbGV2ZWwnIG9mIGluZGVudGF0aW9uIHNob3VsZCBhZGQuCiAgICAgIERlZmF1bHQgaXMgPGNvZGU+MjwvY29kZT4uIENoYW5nZWFibGUgaW4gYSBydW5uaW5nIGVkaXRvciB1c2luZwogICAgICB0aGUgPGNvZGU+c2V0SW5kZW50VW5pdChzcGFjZXMpPC9jb2RlPiBtZXRob2QuPC9kZD4KCiAgICAgIDxkdD48Y29kZT50YWJNb2RlPC9jb2RlPjwvZHQ+PGRkPkRldGVybWluZXMgd2hhdCB0aGUgZWZmZWN0IG9mCiAgICAgIHByZXNzaW5nIHRhYiBpcy4gUG9zc2liaWxpdGllcyBhcmU6CiAgICAgIDxkbD4KICAgICAgICA8ZHQ+PGNvZGU+ImluZGVudCI8L2NvZGU+PC9kdD48ZGQ+VGhlIGRlZmF1bHQuIENhdXNlcyB0YWIgdG8KICAgICAgICBhZGp1c3QgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBzZWxlY3Rpb24gb3IgY3VycmVudCBsaW5lIHVzaW5nCiAgICAgICAgdGhlIHBhcnNlcidzIHJ1bGVzLjwvZGQ+CiAgICAgICAgPGR0Pjxjb2RlPiJzcGFjZXMiPC9jb2RlPjwvZHQ+PGRkPlByZXNzaW5nIHRhYiBzaW1wbHkgaW5zZXJ0cwogICAgICAgIGZvdXIgc3BhY2VzLjwvZGQ+CiAgICAgICAgPGR0Pjxjb2RlPiJkZWZhdWx0IjwvY29kZT48L2R0PjxkZD5Db2RlTWlycm9yIGRvZXMgbm90CiAgICAgICAgaW50ZXJmZXJlIHdpdGggdGhlIHRhYiBrZXksIGJ1dCBsZWF2ZXMgaXQgdG8gdGhlIGJyb3dzZXIgdG8KICAgICAgICBoYW5kbGUgaXQuIEJpbmRzIHNoaWZ0LXNwYWNlIHRvIHJlZ3VsYXIgaW5kZW50YXRpb24KICAgICAgICBiZWhhdmlvdXIuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+InNoaWZ0IjwvY29kZT48L2R0PjxkZD5QcmVzc2luZyB0YWIgaW5kZW50cyB0aGUKICAgICAgICBjdXJyZW50IGxpbmUgKG9yIHNlbGVjdGlvbikgb25lIDxjb2RlPmluZGVudFVuaXQ8L2NvZGU+CiAgICAgICAgZGVlcGVyLCBwcmVzc2luZyBzaGlmdC10YWIsIHVuLWluZGVudHMgaXQuPC9kZD4KICAgICAgPC9kbD4KICAgICAgVGhpcyBvcHRpb24gY2FuIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgdGhlCiAgICAgIDxjb2RlPnNldFRhYk1vZGUobW9kZSk8L2NvZGU+IG1ldGhvZC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmVudGVyTW9kZTwvY29kZT48L2R0PjxkZD5EZXRlcm1pbmVzIGhvdyBhIG5ldyBsaW5lCiAgICAgIGNyZWF0ZWQgYnkgcHJlc3NpbmcgZW50ZXIgaXMgaW5kZW50ZWQuIFN1cHBvcnRlZCBtb2RlcyBhcmU6CiAgICAgIDxkbD4KICAgICAgICA8ZHQ+PGNvZGU+ImluZGVudCI8L2NvZGU+PC9kdD48ZGQ+VGhlIGRlZmF1bHQuIENhdXNlcyB0aGUgbmV3CiAgICAgICAgbGluZSB0byBiZSBpbnRlbnRlZCBieSB0aGUgcnVsZXMgb2YgdGhlIHBhcnNlci48L2RkPgogICAgICAgIDxkdD48Y29kZT4ia2VlcCI8L2NvZGU+PC9kdD48ZGQ+S2VlcHMgdGhlIGluZGVudGF0aW9uIG9mIHRoZQogICAgICAgIHByZXZpb3VzIGxpbmUuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+ImZsYXQiPC9jb2RlPjwvZHQ+PGRkPk5ldmVyIGluZGVudHMgbmV3IGxpbmVzLjwvZGQ+CiAgICAgIDwvZGw+CiAgICAgIFRoZSA8Y29kZT5zZXRFbnRlck1vZGU8L2NvZGU+IG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhpcwogICAgICBvcHRpb24gaW4gYSBydW5uaW5nIGVkaXRvci48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmVsZWN0cmljQ2hhcnM8L2NvZGU+PC9kdD48ZGQ+QSBib29sZWFuIHRoYXQgY2FuIGJlCiAgICAgIHVzZWQgdG8gdHVybiAiZWxlY3RyaWMgY2hhcnMiIChjaGFyYWN0ZXJzIHRoYXQgY2F1c2UgdGhlIGN1cnJlbnQKICAgICAgbGluZSB0byBiZSByZWluZGVudGVkIHdoZW4gdHlwZWQsIHN1Y2ggYXMgPGNvZGU+ezwvY29kZT4gYW5kCiAgICAgIDxjb2RlPn08L2NvZGU+IGluIEMtbGlrZSBsYW5ndWFnZXMpIG9uIGFuZCBvZmYuIERlZmF1bHQgaXMKICAgICAgb24uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5yZWluZGVudE9uTG9hZDwvY29kZT48L2R0PjxkZD5XaGVuIDxjb2RlPnRydWU8L2NvZGU+LAogICAgICB0aGlzIGNhdXNlcyB0aGUgY29udGVudCBvZiB0aGUgZWRpdG9yIHRvIGJlIHJlaW5kZW50ZWQKICAgICAgaW1tZWRpYXRlbHkgd2hlbiB0aGUgZWRpdG9yIGxvYWRzLiBEZWZhdWx0cyB0bwogICAgICA8Y29kZT5mYWxzZTwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5yZWFkT25seTwvY29kZT48L2R0PjxkZD5XaGVuIHNldCB0byA8Y29kZT50cnVlPC9jb2RlPiwKICAgICAgdGhlIGRvY3VtZW50IGlzIG5vdCBlZGl0YWJsZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmRvbWFpbjwvY29kZT48L2R0PjxkZD5DYW4gYmUgc2V0IHRvIHRoZSB2YWx1ZQogICAgICA8Y29kZT5kb2N1bWVudC5kb21haW48L2NvZGU+IHNob3VsZCBoYXZlIGluc2lkZSBvZiB0aGUgaWZyYW1lLgogICAgICBVc2VkIHRvIHByZXZlbnQgYWNjZXNzIGlzc3VlcyBpbiBJRSwgd2hlcmUgdGhpcyB2YWx1ZSBpc24ndAogICAgICBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBieSBpZnJhbWVzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+aW5pdENhbGxiYWNrPC9jb2RlPjwvZHQ+PGRkPklmIHNldCB0byBhIGZ1bmN0aW9uLCB0aGlzCiAgICAgIHdpbGwgYmUgY2FsbGVkICh3aXRoIHRoZSBlZGl0b3Igb2JqZWN0IGFzIGl0cyBhcmd1bWVudCkgYWZ0ZXIKICAgICAgdGhlIGVkaXRvciBoYXMgZmluaXNoZWQgaW5pdGlhbGlzaW5nLjwvZGQ+CiAgICAgIAogICAgICA8ZHQ+PGNvZGU+Y3Vyc29yQWN0aXZpdHk8L2NvZGU+PC9kdD48ZGQ+QSBmdW5jdGlvbiB0aGF0IGlzCiAgICAgIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBjdXJzb3IgbW92ZXMsIHdpdGggdGhlIHRvcC1sZXZlbCBub2RlIHRoYXQKICAgICAgdGhlIGN1cnNvciBpcyBpbnNpZGUgb3IgbmV4dCB0byBhcyBhbiBhcmd1bWVudC4gQ2FuIGJlIHVzZWQgdG8KICAgICAgaGF2ZSBzb21lIGNvbnRyb2xzIHJlYWN0IHRvIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJzb3IuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5hY3RpdmVUb2tlbnM8L2NvZGU+PC9kdD48ZGQ+Q2FuIGJlIHNldCB0byBhIGZ1bmN0aW9uCiAgICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCA8Y29kZT4oc3Bhbk5vZGUsIHRva2VuT2JqZWN0LAogICAgICBlZGl0b3IpPC9jb2RlPiBhcmd1bWVudHMgd2hlbmV2ZXIgYSBuZXcgdG9rZW4gbm9kZSBpcyBiZWluZwogICAgICBhZGRlZCB0byB0aGUgZG9jdW1lbnQuIENhbiBiZSB1c2VkIHRvIGRvIHRoaW5ncyBsaWtlIGFkZCBldmVudAogICAgICBoYW5kbGVycyB0byBub2Rlcy4gU2hvdWxkIDxlbT5ub3Q8L2VtPiBjaGFuZ2UgdGhlIERPTSBzdHJ1Y3R1cmUKICAgICAgb2YgdGhlIG5vZGUgKHNvIG5vIHR1cm5pbmcgdGhlIHNwYW4gaW50byBhIGxpbmspLCBzaW5jZSB0aGlzCiAgICAgIHdpbGwgZ3JlYXRseSBjb25mdXNlIHRoZSBlZGl0b3IuPC9kZD4KCiAgICAgIDxkdCBpZD0icGFyc2VyQ29uZmlnIj48Y29kZT5wYXJzZXJDb25maWc8L2NvZGU+PC9kdD48ZGQ+QW4KICAgICAgb2JqZWN0IHZhbHVlIHRoYXQgaXMgcGFzc2VkIGFsb25nIHRvIHRoZSBwYXJzZXIgdG8gY29uZmlndXJlIGl0LgogICAgICBXaGF0IHRoaXMgb2JqZWN0IHNob3VsZCBsb29rIGxpa2UgZGVwZW5kcyBvbiB0aGUgcGFyc2VyCiAgICAgIHVzZWQuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5jb250ZW50PC9jb2RlPjwvZHQ+PGRkPlRoZSBzdGFydGluZyBjb250ZW50IG9mIHRoZQogICAgICBlZGl0b3IuIFlvdSdsbCBwcm9iYWJseSBub3Qgd2FudCB0byBwcm92aWRlIGEgZ2xvYmFsIGRlZmF1bHQgZm9yCiAgICAgIHRoaXMsIGJ1dCBhZGQgaXQgdG8gdGhlIDxjb2RlPm9wdGlvbnM8L2NvZGU+IG9iamVjdCBwYXNzZWQgdG8KICAgICAgaW5kaXZpZHVhbCBlZGl0b3JzIGFzIHRoZXkgYXJlIGNyZWF0ZWQuPC9kZD4KCiAgICA8L2RsPgoKICAgIDxoMiBpZD0icGFyc2VycyI+UGFyc2VyczwvaDI+CgogICAgPHA+KElmIHlvdSB3YW50IHRvIHVzZSBhIENvZGVNaXJyb3IgcGFyc2VyIHRvIGhpZ2hsaWdodCBhIHBpZWNlIG9mCiAgICB0ZXh0LCB3aXRob3V0IGNyZWF0aW5nIGFuIGVkaXRvciwgc2VlIDxhCiAgICBocmVmPSJoaWdobGlnaHQuaHRtbCI+dGhpcyBleGFtcGxlPC9hPiwgYW5kIHRoZSA8Y29kZT48YQogICAgaHJlZj0ianMvaGlnaGxpZ2h0LmpzIj5oaWdobGlnaHQuanM8L2E+PC9jb2RlPiBzY3JpcHQuKTwvcD4KCiAgICA8cD5UaGUgZm9sbG93aW5nIHBhcnNlcnMgY29tZSB3aXRoIHRoZSBkaXN0cmlidXRpb24gb2YgQ29kZU1pcnJvcjo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+PGEgaHJlZj0ianMvcGFyc2V4bWwuanMiPnBhcnNleG1sLmpzPC9hPjwvY29kZT4gKDxhCiAgICAgIGhyZWY9Imh0bWx0ZXN0Lmh0bWwiPmRlbW88L2E+KTwvZHQ+PGRkPkEgSFRNTC9YTUwgcGFyc2VyLiBUYWtlcwogICAgICBhIDxjb2RlPnVzZUhUTUxLbHVkZ2VzPC9jb2RlPiBjb25maWd1cmF0aW9uIG9wdGlvbiAoc2VlIHRoZQogICAgICA8Y29kZT48YSBocmVmPSIjcGFyc2VyQ29uZmlnIj5wYXJzZXJDb25maWc8L2E+PC9jb2RlPiBvcHRpb24KICAgICAgYWJvdmUpLCB3aGljaCBzcGVjaWZpZXMgd2hldGhlciB0aGUgY29udGVudCBvZiB0aGUgZWRpdG9yIGlzCiAgICAgIEhUTUwgb3IgWE1MLCBhbmQgdGhpbmdzIGxpa2Ugc2VsZi1jbG9zaW5nIHRhZ3MgKDxjb2RlPmJyPC9jb2RlPiwKICAgICAgPGNvZGU+aW1nPC9jb2RlPikgZXhpc3QuIFRoaXMgZGVmYXVsdHMgdG8gPGNvZGU+dHJ1ZTwvY29kZT4uCiAgICAgIEV4YW1wbGUgY29sb3VycyBmb3IgdGhlIHN0eWxlcyB0aGF0IHRoaXMgcGFyc2VyIHVzZXMgYXJlIGRlZmluZWQKICAgICAgaW4gPGNvZGU+PGEKICAgICAgaHJlZj0iY3NzL3htbGNvbG9ycy5jc3MiPmNzcy94bWxjb2xvcnMuY3NzPC9hPjwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT48YQogICAgICBocmVmPSJqcy90b2tlbml6ZWphdmFzY3JpcHQuanMiPnRva2VuaXplamF2YXNjcmlwdC5qczwvYT48L2NvZGU+LAogICAgICA8Y29kZT48YQogICAgICBocmVmPSJqcy9wYXJzZWphdmFzY3JpcHQuanMiPnBhcnNlZWphdmFzY3JpcHQuanM8L2E+PC9jb2RlPiAoPGEKICAgICAgaHJlZj0ianN0ZXN0Lmh0bWwiPmRlbW88L2E+KTwvZHQ+PGRkPlRoZSBKYXZhU2NyaXB0IHBhcnNlci4KICAgICAgRXhhbXBsZSBjb2xvdXJzIGluIDxjb2RlPjxhCiAgICAgIGhyZWY9ImNzcy9qc2NvbG9ycy5jc3MiPmNzcy9qc2NvbG9ycy5jc3M8L2E+PC9jb2RlPi4gVGFrZXMgb25lCiAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCA8Y29kZT5qc29uPC9jb2RlPiwgdGhhdCBjYW4gYmUgc2V0IHdoZW4KICAgICAgdGhlIGVkaXRvciBjb250ZW50IGlzIEpTT04gZGF0YS4gSXQgY2F1c2VzIGV2ZXJ5IG9wZW5pbmcgYnJhY2UKICAgICAgdG8gYmUgdHJlYXRlZCBhcyB0aGUgc3RhcnQgb2YgYW4gb2JqZWN0LCByYXRoZXIgdGhhbiBhCiAgICAgIGJsb2NrLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+PGEgaHJlZj0ianMvcGFyc2Vjc3MuanMiPnBhcnNlY3NzLmpzPC9hPjwvY29kZT4gKDxhCiAgICAgIGhyZWY9ImNzc3Rlc3QuaHRtbCI+ZGVtbzwvYT4pPC9kdD48ZGQ+QSBDU1MgcGFyc2VyLiBTdHlsZXMgaW4KICAgICAgPGNvZGU+PGEKICAgICAgaHJlZj0iY3NzL2Nzc2NvbG9ycy5jc3MiPmNzcy9jc3Njb2xvcnMuY3NzPC9hPjwvY29kZT48L2RkPgoKICAgICAgPGR0Pjxjb2RlPjxhCiAgICAgIGhyZWY9ImpzL3BhcnNlaHRtbG1peGVkLmpzIj5wYXJzZWh0bWxtaXhlZC5qczwvYT48L2NvZGU+ICg8YQogICAgICBocmVmPSJtaXhlZHRlc3QuaHRtbCI+ZGVtbzwvYT4pPC9kdD48ZGQ+QSBtaXhlZC1tb2RlIEhUTUwKICAgICAgcGFyc2VyLiBSZXF1aXJlcyB0aGUgWE1MLCBKYXZhU2NyaXB0LCBhbmQgQ1NTIHBhcnNlcnMgdG8gYWxzbyBiZQogICAgICBsb2FkZWQsIHNvIHlvdXIgPGNvZGU+cGFyc2VyZmlsZTwvY29kZT4gb3B0aW9uIGxvb2tzIHNvbWV0aGluZwogICAgICBsaWtlIDxjb2RlPlsicGFyc2V4bWwuanMiLCAicGFyc2Vjc3MuanMiLAogICAgICAidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyIsCiAgICAgICJwYXJzZWh0bWxtaXhlZC5qcyJdPC9jb2RlPi48L2RkPgoKICAgICAgPGR0Pjxjb2RlPjxhIGhyZWY9ImpzL3BhcnNlc3BhcnFsLmpzIj5wYXJzZXNwYXJxbC5qczwvYT48L2NvZGU+CiAgICAgICg8YSBocmVmPSJzcGFycWx0ZXN0Lmh0bWwiPmRlbW88L2E+KTwvZHQ+PGRkPlBhcnNlcyB0aGUgPGEKICAgICAgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUEFSUUwiPlNQQVJRTDwvYT4gcXVlcnkKICAgICAgbGFuZ3VhZ2UuIEV4YW1wbGUgc3R5bGVzIGluIDxjb2RlPjxhCiAgICAgIGhyZWY9ImNzcy9zcGFycWxjb2xvcnMuY3NzIj5jc3Mvc3BhcnFsY29sb3JzLmNzczwvYT48L2NvZGU+PC9kZD4KCiAgICAgIDxkdD48Y29kZT48YQogICAgICBocmVmPSJqcy9wYXJzZWR1bW15LmpzIj5wYXJzZWR1bW15LmpzPC9hPjwvY29kZT48L2R0PjxkZD5BCiAgICAgICdkdW1teScgcGFyc2VyIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gZWRpdCBwbGFpbiB0ZXh0LCBvcgogICAgICBkb2N1bWVudHMgZm9yIHdoaWNoIG5vIHN1aXRhYmxlIHBhcnNlciBleGlzdHMuPC9kZD4KCiAgICAgIDxkdD48Y29kZT48YQogICAgICBocmVmPSJjb250cmliL3BocC9qcy9wYXJzZXBocC5qcyI+Y29udHJpYi9waHAvanMvcGFyc2VwaHAuanM8L2E+PC9jb2RlPgogICAgICAoPGEgaHJlZj0iY29udHJpYi9waHAvaW5kZXguaHRtbCI+ZGVtbzwvYT4pPC9kdD48ZGQ+UEhQIHBhcnNlci4KICAgICAgVGhlcmUgaXMgYWxzbyA8Y29kZT48YQogICAgICBocmVmPSJjb250cmliL3BocC9qcy9wYXJzZXBocGh0bWxtaXhlZC5qcyI+Y29udHJpYi9waHAvanMvcGFyc2VwaHBodG1sbWl4ZWQuanM8L2E+PC9jb2RlPiwKICAgICAgd2hpY2ggd3JhcHMgdGhpcyBwYXJzZXIgdG8gYWxsb3cgbWl4ZWQtbW9kZSBIVE1MICsgUEhQIHBhcnNpbmcuCiAgICAgIFRoaXMgb25lIHRha2VzIGEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgPGNvZGU+b3BlbmluZzwvY29kZT4sCiAgICAgIHdoaWNoIHNob3VsZCBjb250YWluIGFuIGFycmF5IG9mIFhNTCBwcm9jZXNzaW5nIGluc3RydWN0aW9uCiAgICAgIG9wZW5pbmdzICg8Y29kZT4mbHQ7P3BocDwvY29kZT4sIDxjb2RlPiZsdDs/PC9jb2RlPiBldGMpIHdoaWNoCiAgICAgIGNhbiBiZSB1c2VkIHRvIG9wZW4gYSBQSFAgYmxvY2suIERlZmF1bHQgaXMKICAgICAgPGNvZGU+WyImbHQ7P3BocCJdPC9jb2RlPi48L2RkPgoKICAgICAgPGR0Pjxjb2RlPjxhCiAgICAgIGhyZWY9ImNvbnRyaWIvcHl0aG9uL2pzL3BhcnNlcHl0aG9uLmpzIj5jb250cmliL3B5dGhvbi9qcy9wYXJzZXB5dGhvbi5qczwvYT48L2NvZGU+CiAgICAgICg8YSBocmVmPSJjb250cmliL3B5dGhvbi9pbmRleC5odG1sIj5kZW1vPC9hPik8L2R0PjxkZD5QeXRob24KICAgICAgcGFyc2VyLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+PGEgaHJlZj0iY29udHJpYi9sdWEvanMvcGFyc2VsdWEuanMiPmNvbnRyaWIvbHVhL2pzL3BhcnNlbHVhLmpzPC9hPjwvY29kZT4KICAgICAgKDxhIGhyZWY9ImNvbnRyaWIvbHVhL2luZGV4Lmh0bWwiPmRlbW88L2E+KTwvZHQ+PGRkPkx1YQogICAgICBwYXJzZXIuPC9kZD4KCiAgICA8L2RsPgoKICAgIDxoMiBpZD0icHJvZ3JhbW1pbmciPlByb2dyYW1taW5nIEludGVyZmFjZTwvaDI+CgogICAgPHA+VG8gYmUgYXMgZmxleGlibGUgYXMgcG9zc2libGUsIENvZGVNaXJyb3IgaW1wbGVtZW50cyBhIHZlcnkKICAgIHBsYWluIGVkaXRhYmxlIGZpZWxkLCB3aXRob3V0IGFueSBhY2NvbXBhbnlpbmcgYnV0dG9ucywgYmVsbHMsIGFuZAogICAgd2hpc3RsZXMuIDxjb2RlPkNvZGVNaXJyb3I8L2NvZGU+IG9iamVjdHMgZG8sIGhvd2V2ZXIsIHByb3ZpZGUgYQogICAgbnVtYmVyIG9mIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgdGhhdCBtYWtlIGl0IHBvc3NpYmxlIHRvIGFkZAogICAgZXh0cmEgZnVuY3Rpb25hbGl0eSBhcm91bmQgdGhlIGVkaXRvci4gPGEKICAgIGhyZWY9ImpzL21pcnJvcmZyYW1lLmpzIj48Y29kZT5taXJyb3JmcmFtZS5qczwvY29kZT48L2E+IHByb3ZpZGVzCiAgICBhIGJhc2ljIGV4YW1wbGUgb2YgdGhlaXIgdXNhZ2UuPC9wPgoKICAgIDxoMyBpZD0icHJvcGVydGllcyI+UHJvcGVydGllczwvaDM+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+ZnJhbWU8L2NvZGU+PC9kdD48ZGQ+VGhlIGVkaXRhYmxlIGZyYW1lLjwvZGQ+CiAgICAgIDxkdD48Y29kZT53aW48L2NvZGU+PC9kdD48ZGQ+VGhlIHdpbmRvdyBvZiB0aGUgZWRpdGFibGUgZnJhbWUuCiAgICAgIE1vc3RseSB1c2VmdWwgZm9yIGF0dGFjaGluZyBldmVudCBoYW5kbGVycy48L2RkPgogICAgICA8ZHQ+PGNvZGU+d3JhcHBpbmc8L2NvZGU+PC9kdD48ZGQ+VGhlIDxjb2RlPkRJVjwvY29kZT4gZWxlbWVudAogICAgICB3cmFwcGVkIGFyb3VuZCB0aGUgZnJhbWUuIFRoaXMgYWx3YXlzIGhhcyBhIENTUyBjbGFzcyBvZgogICAgICA8Y29kZT5Db2RlTWlycm9yLXdyYXBwaW5nPC9jb2RlPi48L2RkPgogICAgPC9kbD4KCiAgICA8aDMgaWQ9Im1ldGhvZHMiPk1ldGhvZHM8L2gzPgoKICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlPmdldENvZGUoKTwvY29kZT4gJiM4NTk0OwogICAgICA8Y29kZT5zdHJpbmc8L2NvZGU+PC9kdD48ZGQ+UmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50IG9mIHRoZQogICAgICBlZGl0b3IsIGFzIGEgc3RyaW5nLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+c2V0Q29kZShzdHJpbmcpPC9jb2RlPjwvZHQ+PGRkPlJlcGxhY2VzIHRoZSBjdXJyZW50CiAgICAgIGNvbnRlbnQgb2YgdGhlIGVkaXRvciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmZvY3VzKCk8L2NvZGU+PC9kdD48ZGQ+R2l2ZXMgZm9jdXMgdG8gdGhlIGVkaXRvcgogICAgICBmcmFtZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnNlbGVjdGlvbigpPC9jb2RlPiAmIzg1OTQ7CiAgICAgIDxjb2RlPnN0cmluZzwvY29kZT48L2R0PjxkZD5SZXR1cm5zIHRoZSB0ZXh0IHRoYXQgaXMgY3VycmVudGx5CiAgICAgIHNlbGVjdGVkIGluIHRoZSBlZGl0b3IuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5yZXBsYWNlU2VsZWN0aW9uKHN0cmluZyk8L2NvZGU+PC9kdD48ZGQ+UmVwbGFjZXMgdGhlCiAgICAgIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIGdpdmVuIHN0cmluZy4gV2lsbCBhbHNvIGNhdXNlCiAgICAgIHRoZSBlZGl0b3IgZnJhbWUgdG8gZ2FpbiBmb2N1cy48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnJlaW5kZW50KCk8L2NvZGU+PC9kdD48ZGQ+QXV0b21hdGljYWxseSByZS1pbmRlbnQgdGhlCiAgICAgIHdob2xlIGRvY3VtZW50LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+cmVpbmRlbnRTZWxlY3Rpb24oKTwvY29kZT48L2R0PjxkZD5BdXRvbWF0aWNhbGx5CiAgICAgIHJlLWluZGVudCB0aGUgc2VsZWN0ZWQgbGluZXMuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5nZXRTZWFyY2hDdXJzb3Ioc3RyaW5nLCBzdGFydFBvcywgY2FzZUZvbGQpPC9jb2RlPgogICAgICAmIzg1OTQ7IDxjb2RlPmN1cnNvcjwvY29kZT48L2R0PjxkZD5UaGUgZmlyc3QgYXJndW1lbnQgcHJvdmlkZXMKICAgICAgdGhlIHN0cmluZyB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZCBmb3IuIFRoZSBzZWNvbmQgZGV0ZXJtaW5lcwogICAgICB3aGVyZSB0byBzdGFydCBzZWFyY2hpbmcuIEl0IGNhbiBiZSA8Y29kZT5mYWxzZTwvY29kZT4gKG9yIGxlZnQKICAgICAgb2ZmKSBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBkb2N1bWVudCwgPGNvZGU+dHJ1ZTwvY29kZT4gZm9yIHRoZQogICAgICBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiwgb3IgYSA8Y29kZT57bGluZSwgY2hhcmFjdGVyfTwvY29kZT4KICAgICAgb2JqZWN0IChhcyByZXR1cm5lZCBieSA8Y29kZT5jdXJzb3JQb3NpdGlvbjwvY29kZT4sIG9yIGNyZWF0ZWQKICAgICAgeW91cnNlbGYgdXNpbmcgYSBsaW5lIGhhbmRsZSBhbmQgYSBudW1iZXIpIHRvIHNldCBhIHJhbmRvbQogICAgICBwb3NpdGlvbi4gVGhlIHRoaXJkIGFyZ3VtZW50LCBhIGJvb2xlYW4sIGRldGVybWluZXMgd2hldGhlciB0aGUKICAgICAgc2VhcmNoIHdpbGwgYmUgY2FzZS1zZW5zaXRpdmUuIElmIGl0IGlzIG5vdCBwcm92aWRlZCwgdGhlIHNlYXJjaAogICAgICB3aWxsIG9ubHkgYmUgY2FzZS1zZW5zaXRpdmUgaWYgdGhlIHNlYXJjaCBzdHJpbmcgY29udGFpbnMKICAgICAgdXBwZXJjYXNlIGNoYXJhY3RlcnMuIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgYW4KICAgICAgaW50ZXJmYWNlIGZvciBzZWFyY2hpbmcuIENhbGwgaXRzIDxjb2RlPmZpbmROZXh0KCk8L2NvZGU+IGFuZAogICAgICA8Y29kZT5maW5kUHJldmlvdXMoKTwvY29kZT4gbWV0aG9kcyB0byBzZWFyY2ggZm9yIGFuIG9jY3VycmVuY2UuCiAgICAgIFRoaXMgcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiBzb21ldGhpbmcgaXMgZm91bmQsIG9yCiAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiB0aGUgZW5kIG9yIHN0YXJ0IG9mIHRoZSBkb2N1bWVudCB3YXMKICAgICAgcmVhY2hlZC4gV2hlbiBhbiBvY2N1cnJlbmNlIGhhcyBiZWVuIGZvdW5kLCB5b3UgY2FuIGNhbGwKICAgICAgPGNvZGU+c2VsZWN0KCk8L2NvZGU+IHRvIHNlbGVjdCBpdCwgb3IKICAgICAgPGNvZGU+cmVwbGFjZShzdHJpbmcpPC9jb2RlPiB0byByZXBsYWNlIGl0IHdpdGggYSBnaXZlbiBzdHJpbmcuCiAgICAgIFRvIGZpbmQgb3V0IHdoZXJlIHRoZSBtYXRjaCB3YXMgZm91bmQsIGNhbGwgdGhlCiAgICAgIDxjb2RlPnBvc2l0aW9uKCk8L2NvZGU+IG1ldGhvZCwgd2hpY2ggcmV0dXJucyBhIDxjb2RlPntsaW5lLAogICAgICBjaGFyYWN0ZXJ9PC9jb2RlPiBvYmplY3QuIE5vdGUgdGhhdCBsZXR0aW5nIHRoZSB1c2VyIGNoYW5nZSB0aGUKICAgICAgZG9jdW1lbnQsIG9yIHByb2dyYW1tYXRpY2FsbHkgY2hhbmdpbmcgaXQgaW4gYW55IHdheSBleGNlcHQgZm9yCiAgICAgIGNhbGxpbmcgPGNvZGU+cmVwbGFjZTwvY29kZT4gb24gdGhlIGN1cnNvciBpdHNlbGYsIG1pZ2h0IGNhdXNlIGEKICAgICAgY3Vyc29yIG9iamVjdCB0byBza2lwIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKICAgICAgZG9jdW1lbnQuPC9kZD4KCiAgICAgIDxkdD48Y29kZT51bmRvKCk8L2NvZGU+PC9kdD48ZGQ+VW5kbyBvbmUgY2hhbmdlc2V0LCBpZiBhdmFpbGFibGUuPC9kZD4KICAgICAgPGR0Pjxjb2RlPnJlZG8oKTwvY29kZT48L2R0PjxkZD5SZWRvIG9uZSBjaGFuZ2VzZXQsIGlmIGF2YWlsYWJsZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+aGlzdG9yeVNpemUoKSAmIzg1OTQ7IG9iamVjdDwvY29kZT48L2R0PjxkZD5HZXQgYQogICAgICA8Y29kZT57dW5kbywgcmVkb308L2NvZGU+IG9iamVjdCBob2xkaW5nIHRoZSBzaXplcyBvZiB0aGUgdW5kbwogICAgICBhbmQgcmVkbyBoaXN0b3JpZXMuPC9kZD4KICAgICAgPGR0Pjxjb2RlPmNsZWFySGlzdG9yeSgpPC9jb2RlPjwvZHQ+PGRkPkRyb3AgYWxsIGhpc3RvcnkKICAgICAgaW5mb3JtYXRpb24uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5ncmFiS2V5cyhjYWxsYmFjaywgZmlsdGVyKTwvY29kZT48L2R0PjxkZD5Sb3V0ZQogICAgICBrZXlib2FyZCBpbnB1dCBpbiB0aGUgZWRpdG9yIHRvIGEgY2FsbGJhY2sgZnVuY3Rpb24uIFRoaXMKICAgICAgZnVuY3Rpb24gaXMgZ2l2ZW4gYSBzbGlnaHRseSBub3JtYWxpc2VkIChzZWUKICAgICAgPGNvZGU+bm9ybWFsaXplRXZlbnQ8L2NvZGU+IGluIDxhCiAgICAgIGhyZWY9ImpzL3V0aWwuanMiPjxjb2RlPnV0aWwuanM8L2NvZGU+PC9hPikgPGNvZGU+a2V5ZG93bjwvY29kZT4KICAgICAgZXZlbnQgb2JqZWN0LiBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBnaXZlbiwgdGhpcyB3aWxsIGJlIHVzZWQKICAgICAgdG8gZGV0ZXJtaW5lIHdoaWNoIGV2ZW50cyB0byBhcHBseSB0aGUgY2FsbGJhY2sgdG8uIEl0IHNob3VsZAogICAgICB0YWtlIGEga2V5IGNvZGUgKGFzIGluIDxjb2RlPmV2ZW50LmtleUNvZGU8L2NvZGU+KSwgYW5kIHJldHVybiBhCiAgICAgIGJvb2xlYW4sIHdoZXJlIDxjb2RlPnRydWU8L2NvZGU+IG1lYW5zIHRoZSBldmVudCBzaG91bGQgYmUKICAgICAgcm91dGVkIHRvIHRoZSBjYWxsYmFjaywgYW5kIDxjb2RlPmZhbHNlPC9jb2RlPiBsZWF2ZXMgdGhlIGtleSB0bwogICAgICBwZXJmb3JtIGl0cyBub3JtYWwgYmVoYXZpb3VyLjwvZGQ+CiAgICAgIDxkdD48Y29kZT51bmdyYWJLZXlzKCk8L2NvZGU+PC9kdD48ZGQ+UmV2ZXJ0IHRoZSBlZmZlY3Qgb2YKICAgICAgPGNvZGU+Z3JhYktleXM8L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+c2V0UGFyc2VyKG5hbWUsIHBhcnNlckNvbmZpZyk8L2NvZGU+PC9kdD48ZGQ+Q2hhbmdlCiAgICAgIHRoZSBhY3RpdmUgcGFyc2VyLiBUbyB1c2UgdGhpcyB5b3UnbGwgaGF2ZSB0byBsb2FkIG1vcmUgdGhhbiBvbmUKICAgICAgcGFyc2VyIChwdXQgdGhlIG9uZSB5b3Ugd2FudCB0byB1c2UgYXMgZGVmYXVsdCBhdCB0aGUgZW5kIG9mIHRoZQogICAgICBsaXN0KS4gVGhlbiBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lCiAgICAgIG9mIHRoZSBwYXJzZXIgeW91IHdhbnQgdG8gc3dpdGNoIHRvIChzZWUgdGhlIHBhcnNlciBzY3JpcHQgZmlsZQogICAgICB0byBmaW5kIHRoZSBuYW1lLCBpdCdsbCBiZSBzb21ldGhpbmcgbGlrZQogICAgICA8Y29kZT5DU1NQYXJzZXI8L2NvZGU+KS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kCiAgICAgIGNhbiBiZSB1c2VkIHRvIHBhc3MgYSBuZXcgcGFyc2VyIGNvbmZpZ3VyYXRpb24gb2JqZWN0LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Y3Vyc29yQ29vcmRzKHN0YXJ0KTwvY29kZT48L2R0PjxkZD5HZXQgdGhlIGNvb3JkaW5hdGVzCiAgICAgIG9mIHRoZSBjdXJzb3IgaW4gdGhlIGVkaXRvciwgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZgogICAgICB0aGUgb3V0ZXIgZG9jdW1lbnQuIE5vcm1hbGx5IHJldHVybnMgYW4gb2JqZWN0IHdpdGgKICAgICAgPGNvZGU+eDwvY29kZT4sIDxjb2RlPnk8L2NvZGU+LCBhbmQgPGNvZGU+eUJvdDwvY29kZT4gKHRoZQogICAgICBib3R0b20gb2YgdGhlIGN1cnNvcikgcHJvcGVydGllcy4gTWF5IHJldHVybiA8Y29kZT5udWxsPC9jb2RlPgogICAgICBpZiB0aGUgY3Vyc29yIHBvc2l0aW9uIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIChmb3IgZXhhbXBsZSwgaWYKICAgICAgdGhlIGVkaXRvciBpcyBub3QgZm9jdXNlZCkuPC9kZD4KICAgIDwvZGw+CgogICAgPGgzIGlkPSJsaW5lcyI+TGluZSBNYW5pcHVsYXRpb248L2gzPgoKICAgIDxwPkZvciBkZXRhaWxlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb250ZW50IG9mIHRoZSBlZGl0b3IsCiAgICBDb2RlTWlycm9yIGV4cG9zZXMgYSBsaW5lLW9yaWVudGVkIGludGVyZmFjZSwgd2hpY2ggYWxsb3dzIHlvdSB0bwogICAgaW5zcGVjdCBhbmQgbWFuaXB1bGF0ZSB0aGUgZG9jdW1lbnQgbGluZSBieSBsaW5lLiBMaW5lIGhhbmRsZXMKICAgIHNob3VsZCBiZSBjb25zaWRlcmVkIG9wYXF1ZSAodGhleSBhcmUgaW4gZmFjdCB0aGUgPGNvZGU+QlI8L2NvZGU+CiAgICBub2RlcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUpLCBleGNlcHQgdGhhdCB0aGUgdmFsdWUKICAgIDxjb2RlPmZhbHNlPC9jb2RlPiAoYnV0IDxlbT5ub3Q8L2VtPiA8Y29kZT5udWxsPC9jb2RlPikgYWx3YXlzCiAgICBkZW5vdGVzIGFuIGludmFsaWQgdmFsdWUuIFNpbmNlIGNoYW5naW5nIHRoZSBkb2N1bWVudCBtaWdodCBjYXVzZQogICAgc29tZSBsaW5lIGhhbmRsZXMgdG8gYmVjb21lIGludmFsaWQsIGV2ZXJ5IGZ1bmN0aW9uIHRoYXQgdGFrZXMKICAgIHRoZW0gYXMgYXJndW1lbnQgY2FuIHRocm93CiAgICA8Y29kZT5Db2RlTWlycm9yLkludmFsaWRMaW5lSGFuZGxlPC9jb2RlPi4gVGhlc2UgYXJlIHRoZSByZWxldmFudAogICAgbWV0aG9kczo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+Y3Vyc29yUG9zaXRpb24oc3RhcnQpPC9jb2RlPiAmIzg1OTQ7CiAgICAgIDxjb2RlPm9iamVjdDwvY29kZT48L2R0PjxkZD5SZXRyaWV2ZSBhIDxjb2RlPntsaW5lLAogICAgICBjaGFyYWN0ZXJ9PC9jb2RlPiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjdXJzb3IgcG9zaXRpb24uCiAgICAgIDxjb2RlPnN0YXJ0PC9jb2RlPiBkZWZhdWx0cyB0byA8Y29kZT50cnVlPC9jb2RlPiBhbmQgZGV0ZXJtaW5lcwogICAgICBpZiB0aGUgc3RhcnRwb2ludCBvciB0aGUgZW5kcG9pbnQgb2YgdGhlIHNlbGVjdGlvbiBpcyB1c2VkLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5jdXJzb3JMaW5lKCk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPlJldHVybnMgdGhlIGxpbmUgb24gd2hpY2ggdGhlIGN1cnNvcgogICAgICBpcyBjdXJyZW50bHkgc2l0dGluZy48L2RkPgogICAgICA8ZHQ+PGNvZGU+Zmlyc3RMaW5lKCk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPkdldCB0aGUgZmlyc3QgbGluZSBvZiB0aGUKICAgICAgZG9jdW1lbnQuPC9kZD4KICAgICAgPGR0Pjxjb2RlPmxhc3RMaW5lKCk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPlRoZSBsYXN0IGxpbmUuPC9kZD4KICAgICAgPGR0Pjxjb2RlPm5leHRMaW5lKGhhbmRsZSk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPkdldCB0aGUgbGluZSBhZnRlciB0aGUgZ2l2ZW4gb25lLCBvcgogICAgICA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhhdCB3YXMgdGhlIGxhc3QgbGluZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+cHJldkxpbmUoaGFuZGxlKTwvY29kZT4gJiM4NTk0OwogICAgICA8Y29kZT5oYW5kbGU8L2NvZGU+PC9kdD48ZGQ+RmluZCB0aGUgbGluZSBiZWZvcmUgdGhlIGdpdmVuIG9uZSwKICAgICAgcmV0dXJuIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiB0aGF0IHdhcyB0aGUgZmlyc3QgbGluZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+bnRoTGluZShudW1iZXIpPC9jb2RlPiAmIzg1OTQ7CiAgICAgIDxjb2RlPmhhbmRsZTwvY29kZT48L2R0PjxkZD5GaW5kIHRoZSBOdGggbGluZSBvZiB0aGUgZG9jdW1lbnQuCiAgICAgIE5vdGUgdGhhdCB0aGUgZmlyc3QgbGluZSBjb3VudHMgYXMgb25lLCBub3QgemVyby4gUmV0dXJucwogICAgICA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhlcmUgaXMgbm8gc3VjaCBsaW5lLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5saW5lQ29udGVudChoYW5kbGUpPC9jb2RlPiAmIzg1OTQ7CiAgICAgIDxjb2RlPnN0cmluZzwvY29kZT48L2R0PjxkZD5SZXRyaWV2ZSB0aGUgY29udGVudCBvZiB0aGUKICAgICAgbGluZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+c2V0TGluZUNvbnRlbnQoaGFuZGxlLCBzdHJpbmcpPC9jb2RlPjwvZHQ+PGRkPlJlcGxhY2UKICAgICAgdGhlIGNvbnRlbnQgb2YgdGhlIGxpbmUgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5yZW1vdmVMaW5lKGhhbmRsZSk8L2NvZGU+PC9kdD48ZGQ+UmVtb3ZlIHRoZSBnaXZlbgogICAgICBsaW5lIGZyb20gdGhlIGVkaXRvci4gVGhlIGhhbmRsZSB3aWxsIHN0YXkgdmFsaWQgYWZ0ZXIgdGhpcwogICAgICBvcGVyYXRpb24sIGFuZCBub3cgcmVmZXJzIHRvIHRoZSBuZXh0IGxpbmUuPC9kZD4KICAgICAgPGR0Pjxjb2RlPmxpbmVOdW1iZXIoaGFuZGxlKTwvY29kZT4gJiM4NTk0OwogICAgICA8Y29kZT5udW1iZXI8L2NvZGU+PC9kdD48ZGQ+QXNrIHdoaWNoIGxpbmUgb2YgdGhlIGRvY3VtZW50CiAgICAgICgxLWJhc2VkKSB0aGUgZ2l2ZW4gbGluZSBpcy48L2RkPgogICAgICA8ZHQ+PGNvZGU+anVtcFRvTGluZShoYW5kbGUpPC9jb2RlPjwvZHQ+PGRkPk1vdmVzIHRoZSBjdXJzb3IgdG8KICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBnaXZlbiBsaW5lLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5zZWxlY3RMaW5lcyhzdGFydEhhbmRsZSwgc3RhcnRPZmZzZXQsCiAgICAgIGVuZEhhbmRsZSwgZW5kT2Zmc2V0KTwvY29kZT48L2R0PjxkZD5Nb3ZlIHRoZSBzZWxlY3Rpb24gdG8gYQogICAgICBzcGVjaWZpYyBwb2ludC4gPGNvZGU+ZW5kSGFuZGxlPC9jb2RlPiBhbmQKICAgICAgPGNvZGU+ZW5kT2Zmc2V0PC9jb2RlPiBjYW4gYmUgb21pdHRlZCB0byBqdXN0IHBsYWNlIHRoZSBjdXJzb3IKICAgICAgc29tZXdoZXJlIHdpdGhvdXQgc2VsZWN0aW5nIGFueSB0ZXh0LjwvZGQ+CiAgICAgIDxkdD48Y29kZT5pbnNlcnRJbnRvTGluZShoYW5kbGUsIHBvc2l0aW9uLAogICAgICB0ZXh0KTwvY29kZT48L2R0PjxkZD5JbnNlcnQgYSBwaWVjZSBvZiB0ZXh0IGludG8gYSBsaW5lLgogICAgICA8Y29kZT5wb3NpdGlvbjwvY29kZT4gY2FuIGJlIGFuIGludGVnZXIsIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uCiAgICAgIGluIHRoZSBsaW5lIHdoZXJlIHRoZSB0ZXh0IHNob3VsZCBiZSBpbnNlcnRlZCwgb3IgdGhlIHN0cmluZwogICAgICA8Y29kZT4iZW5kIjwvY29kZT4sIGZvciB0aGUgZW5kIG9mIHRoZSBsaW5lLjwvZGQ+CiAgICA8L2RsPgoKICAgIDxoMiBpZD0id3JpdGVwYXJzZXIiPldyaXRpbmcgYSBQYXJzZXI8L2gyPgoKICAgIDxwPkEgcGFyc2VyIGlzIGltcGxlbWVudGVkIGJ5IG9uZSBvciBtb3JlIGZpbGVzIChzZWUKICAgIDxjb2RlPnBhcnNlcmZpbGU8L2NvZGU+IGFib3ZlKSB3aGljaCwgd2hlbiBsb2FkZWQsIGFkZCBhCiAgICA8Y29kZT5QYXJzZXI8L2NvZGU+IHByb3BlcnR5IHRvIHRoZSA8Y29kZT5FZGl0b3I8L2NvZGU+IG9iamVjdAogICAgZGVmaW5lZCBieSA8YSBocmVmPSJqcy9lZGl0b3IuanMiPjxjb2RlPmVkaXRvci5qczwvY29kZT48L2E+LiBUaGlzCiAgICBvYmplY3QgbXVzdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOjwvcD4KCiAgICA8ZGw+CgogICAgICA8ZHQ+PGNvZGU+bWFrZShzdHJlYW0pPC9jb2RlPjwvZHQ+PGRkPkEgZnVuY3Rpb24gdGhhdCwgZ2l2ZW4gYQogICAgICBzdHJpbmcgc3RyZWFtIChzZWUgPGEKICAgICAgaHJlZj0ianMvc3RyaW5nc3RyZWFtLmpzIj48Y29kZT5zdHJpbmdzdHJlYW0uanM8L2NvZGU+PC9hPiksCiAgICAgIGNyZWF0ZXMgYSBwYXJzZXIuIFRoZSBiZWhhdmlvdXIgb2YgdGhpcyBwYXJzZXIgaXMgZGVzY3JpYmVkCiAgICAgIGJlbG93LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+ZWxlY3RyaWNDaGFyczwvY29kZT48L2R0PjxkZD5BbiBvcHRpb25hbCBzdHJpbmcKICAgICAgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyB0aGF0LCB3aGVuIHR5cGVkLCBzaG91bGQgY2F1c2UgdGhlCiAgICAgIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgdG8gYmUgcmVjb21wdXRlZCAoZm9yIGV4YW1wbGUKICAgICAgPGNvZGU+Int9IjwvY29kZT4gZm9yIGMtbGlrZSBsYW5ndWFnZXMpLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Y29uZmlndXJlKG9iamVjdCk8L2NvZGU+PC9kdD48ZGQ+QW4gb3B0aW9uYWwgZnVuY3Rpb24KICAgICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlIHBhcnNlci4gSWYgaXQgZXhpc3RzLCBhbmQgYW4KICAgICAgZWRpdG9yIGlzIGdpdmVuIGEgPGNvZGU+cGFyc2VyQ29uZmlnPC9jb2RlPiBvcHRpb24sIGl0IHdpbGwgYmUKICAgICAgY2FsbGVkIHdpdGggdGhlIHZhbHVlIG9mIHRoYXQgb3B0aW9uLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Zmlyc3RJbmRlbnRhdGlvbihjaGFycywgY3VycmVudCwKICAgICAgZGlyZWN0aW9uKTwvY29kZT48L2R0PjxkZD5BbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8KICAgICAgZGV0ZXJtaW5lIHRoZSBwcm9wZXIgaW5kZW50YXRpb24gb2YgdGhlIGZpcnN0IGxpbmUgb2YgYQogICAgICBkb2N1bWVudC4gV2hlbiBub3QgcHJvdmlkZWQsIDxjb2RlPjA8L2NvZGU+IGlzIHVzZWQuPC9kZD4KICAgIDwvZGw+CgogICAgPHA+V2hlbiB0aGUgPGNvZGU+bWFrZTwvY29kZT4gbWV0aG9kIGlzIGNhbGxlZCB3aXRoIGEgc3RyaW5nCiAgICBzdHJlYW0sIGl0IHNob3VsZCByZXR1cm4gYSBNb2NoaUtpdC1zdHlsZSBpdGVyYXRvcjogYW4gb2JqZWN0IHdpdGgKICAgIGEgPGNvZGU+bmV4dDwvY29kZT4gbWV0aG9kLCB3aGljaCB3aWxsIHJhaXNlCiAgICA8Y29kZT5TdG9wSXRlcmF0aW9uPC9jb2RlPiB3aGVuIGl0IGlzIGF0IGl0cyBlbmQgKHNlZSA8YQogICAgaHJlZj0iaHR0cDovL2JvYi5weXRob25tYWMub3JnL2FyY2hpdmVzLzIwMDUvMDcvMDYvaXRlcmF0aW9uLWluLWphdmFzY3JpcHQvIj50aGlzPC9hPgogICAgZm9yIGRldGFpbHMpLiBUaGlzIGl0ZXJhdG9yLCB3aGVuIGNhbGxlZCwgd2lsbCBjb25zdW1lIGlucHV0IGZyb20KICAgIHRoZSBzdHJpbmcgc3RyZWFtLCBhbmQgcHJvZHVjZSBhIHRva2VuIG9iamVjdC48L3A+CgogICAgPHA+VG9rZW4gb2JqZWN0cyByZXByZXNlbnQgYSBzaW5nbGUgc2lnbmlmaWNhbnQgcGllY2Ugb2YgdGhlIHRleHQKICAgIHRoYXQgaXMgYmVpbmcgZWRpdGVkLiBBIHRva2VuIG9iamVjdCBtdXN0IGhhdmUgYQogICAgPGNvZGU+dmFsdWU8L2NvZGU+IHByb3BlcnR5IGhvbGRpbmcgdGhlIHRleHQgaXQgc3RhbmRzIGZvciwgYW5kIGEKICAgIDxjb2RlPnN0eWxlPC9jb2RlPiBwcm9wZXJ0eSB3aXRoIHRoZSBDU1MgY2xhc3MgdGhhdCBzaG91bGQgYmUgdXNlZAogICAgdG8gY29sb3VyIHRoaXMgZWxlbWVudC4gVGhpcyBjYW4gYmUgYW55dGhpbmcsIGV4Y2VwdCB0aGF0IGFueQogICAgd2hpdGVzcGFjZSBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIHNob3VsZCA8ZW0+YWx3YXlzPC9lbT4gaGF2ZQogICAgY2xhc3MgPGNvZGU+IndoaXRlc3BhY2UiPC9jb2RlPjogVGhlIGVkaXRvciBtdXN0IGJlIGFibGUgdG8KICAgIHJlY29nbml6ZSB0aGVzZSB3aGVuIGl0IGluZGVudHMgbGluZXMuIEZ1cnRoZXJtb3JlLCBlYWNoIG5ld2xpbmUKICAgIGNoYXJhY3RlciA8ZW0+bXVzdDwvZW0+IGhhdmUgaXRzIG93biBzZXBhcmF0ZSB0b2tlbiwgd2hpY2ggaGFzIGFuCiAgICA8Y29kZT5pbmRlbnRhdGlvbjwvY29kZT4gcHJvcGVydHkgaG9sZGluZyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlCiAgICB1c2VkIHRvIGRldGVybWluZSB0aGUgcHJvcGVyIGluZGVudGF0aW9uIGxldmVsIGZvciB0aGUgbmV4dCBsaW5lLgogICAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHRha2VzIHRoZSB0ZXh0IGluIHRoZSBmaXJzdCB0b2tlbiBvZiB0aGUKICAgIG5leHQgbGluZSwgdGhlIGN1cnJlbnQgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUsIGFuZCB0aGUKICAgICdkaXJlY3Rpb24nIG9mIHRoZSBpbmRlbnRhdGlvbiBhcyBhcmd1bWVudHMsIHdoaWNoIGl0IGNhbiB1c2UgdG8KICAgIGFkanVzdCB0aGUgaW5kZW50YXRpb24gbGV2ZWwuIFRoZSBkaXJlY3Rpb24gYXJndW1lbnQgaXMgb25seQogICAgdXNlZnVsIGZvciBtb2RlcyBpbiB3aGljaCBsaW5lcyBkbyBub3QgaGF2ZSBhIGZpeGVkIGluZGVudGF0aW9uLAogICAgYW5kIGNhbiBiZSBtb2RpZmllZCBieSBtdWx0aXBsZSB0YWIgcHJlc3Nlcy4gSXQgaXMKICAgIDxjb2RlPm51bGw8L2NvZGU+IGZvciAnZGVmYXVsdCcgaW5kZW50YXRpb25zIChsaWtlIHdoYXQgaGFwcGVucwogICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGVudGVyKSwgPGNvZGU+dHJ1ZTwvY29kZT4gZm9yIHJlZ3VsYXIgdGFiCiAgICBwcmVzc2VzLCBhbmQgPGNvZGU+ZmFsc2U8L2NvZGU+IGZvciBjb250cm9sLXRhYiBvciBzaGlmdC10YWIuPC9wPgoKICAgIDxwPlNvIGZhciB0aGlzIHNob3VsZCBiZSBwcmV0dHkgZWFzeS4gVGhlIGhhcmQgcGFydCBpcyB0aGF0IHRoaXMKICAgIGl0ZXJhdG9yIG11c3QgYWxzbyBoYXZlIGEgPGNvZGU+Y29weTwvY29kZT4gbWV0aG9kLiBUaGlzIG1ldGhvZCwKICAgIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgcmV0dXJucyBhIGZ1bmN0aW9uIHJlcHJlc2VudGluZyB0aGUKICAgIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhcnNlci4gV2hlbiB0aGlzIHN0YXRlIGZ1bmN0aW9uIGlzIGxhdGVyCiAgICBjYWxsZWQgd2l0aCBhIHN0cmluZyBzdHJlYW0gYXMgaXRzIGFyZ3VtZW50LCBpdCByZXR1cm5zIGEgcGFyc2VyCiAgICBvYmplY3QgdGhhdCByZXN1bWVzIHBhcnNpbmcgdXNpbmcgdGhlIG9sZCBzdGF0ZSBhbmQgdGhlIG5ldyBpbnB1dAogICAgc3RyZWFtLiBJdCBtYXkgYXNzdW1lIHRoYXQgb25seSBvbmUgcGFyc2VyIGlzIGFjdGl2ZSBhdCBhIHRpbWUsCiAgICBhbmQgY2FuIGNsb2JiZXIgdGhlIHN0YXRlIG9mIHRoZSBvbGQgcGFyc2VyIGlmIGl0IHdhbnRzLjwvcD4KCiAgICA8cD5Gb3IgZXhhbXBsZXMsIHNlZSA8YQogICAgaHJlZj0ianMvcGFyc2VqYXZhc2NyaXB0LmpzIj48Y29kZT5wYXJzZWphdmFzY3JpcHQuanM8L2NvZGU+PC9hPiwKICAgIDxhIGhyZWY9ImpzL3BhcnNleG1sLmpzIj48Y29kZT5wYXJzZXhtbC5qczwvY29kZT48L2E+LCBhbmQgPGEKICAgIGhyZWY9ImpzL3BhcnNlY3NzLmpzIj48Y29kZT5wYXJzZWNzcy5qczwvY29kZT48L2E+LjwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InJpZ2h0c21hbGwgYmxrIj4KCiAgPGgyPkNvbnRlbnRzPC9oMj4KCiAgPHVsPgogICAgPGxpPjxhIGhyZWY9IiN1c2FnZSI+QmFzaWMgVXNhZ2U8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjY29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNwYXJzZXJzIj5QYXJzZXJzPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI3Byb2dyYW1taW5nIj5Qcm9ncmFtbWluZyBJbnRlcmZhY2U8L2E+CiAgICA8dWw+CiAgICAgIDxsaT48YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiNsaW5lcyI+TGluZSBNYW5pcHVsYXRpb248L2E+PC9saT4KICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxhIGhyZWY9IiN3cml0ZXBhcnNlciI+V3JpdGluZyBhIFBhcnNlcjwvYT48L2xpPgogIDwvdWw+CgogIDxoMj5TaXRlPC9oMj4KCiAgPHVsPgogICAgPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkZyb250IFBhZ2U8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJmYXEuaHRtbCI+RkFRPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2NvZGVtaXJyb3IiPkdvb2dsZSBHcm91cDwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9ImNvbXByZXNzLmh0bWwiPkNvbXByZXNzaW9uIEhlbHBlcjwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9InN0b3J5Lmh0bWwiPldhciBTdG9yeTwvYT48L2xpPgogIDwvdWw+Cgo8L2Rpdj48L2Rpdj4KCjxkaXYgc3R5bGU9ImhlaWdodDogMmVtIj4mbmJzcDs8L2Rpdj4KCiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/mixedtest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSFRNTCBtaXhlZC1tb2RlIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5UaGlzIGlzIGEgc2ltcGxlIGRlbW9uc3RyYXRpb24gb2YgdGhlIEhUTUwgbWl4ZWQtbW9kZSBpbmRlbnRhdGlvbgptb2R1bGUgZm9yIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+LiBTY3JpcHQgdGFncyB1c2UgdGhlIEpTCnBhcnNlciwgc3R5bGUgdGFncyB1c2UgdGhlIENTUyBwYXJzZXIuPC9wPgoKPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDNweDsiPgo8dGV4dGFyZWEgaWQ9ImNvZGUiIGNvbHM9IjEyMCIgcm93cz0iMzAiPgombHQ7aHRtbD4KICAmbHQ7aGVhZD4KICAgICZsdDt0aXRsZT5IVE1MIEV4YW1wbGUmbHQ7L3RpdGxlPgogICAgJmx0O3NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICBmdW5jdGlvbiBmb28oYmFyLCBiYXopIHsKICAgICAgICBhbGVydCgicXV1eCIpOwogICAgICAgIHJldHVybiBiYXIgKyBiYXogKyAxOwogICAgICB9CiAgICAmbHQ7L3NjcmlwdD4KICAgICZsdDtzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIGRpdi5ib3JkZXIgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgfQogICAgICAjZm9vIGNvZGUgewogICAgICAgIGZvbnQtZmFtaWx5OiBjb3VyaWVyLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiA4MCU7CiAgICAgICAgY29sb3I6ICM0NDg4ODg7CiAgICAgIH0KICAgICZsdDsvc3R5bGU+CiAgJmx0Oy9oZWFkPgogICZsdDtib2R5PgogICAgJmx0O3A+RHVoJmx0Oy9wPgogICZsdDsvYm9keT4KJmx0Oy9odG1sPgo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBwYXJzZXJmaWxlOiBbInBhcnNleG1sLmpzIiwgInBhcnNlY3NzLmpzIiwgInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiLCAicGFyc2VodG1sbWl4ZWQuanMiXSwKICAgIHN0eWxlc2hlZXQ6IFsiY3NzL3htbGNvbG9ycy5jc3MiLCAiY3NzL2pzY29sb3JzLmNzcyIsICJjc3MvY3NzY29sb3JzLmNzcyJdLAogICAgcGF0aDogImpzLyIKICB9KTsKPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/sparqltest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogU3BhcnFsIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5EZW1vbnN0cmF0aW9uIG9mIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MgU3BhcnFsCmhpZ2hsaWdodGVyLjwvcD4KCjxkaXYgY2xhc3M9ImJvcmRlciI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+ClBSRUZJWCBhOiAmbHQ7aHR0cDovL3d3dy53My5vcmcvMjAwMC8xMC9hbm5vdGF0aW9uLW5zIz4KUFJFRklYIGRjOiAmbHQ7aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8+ClBSRUZJWCBmb2FmOiAmbHQ7aHR0cDovL3htbG5zLmNvbS9mb2FmLzAuMS8+CgojIENvbW1lbnQhCgpTRUxFQ1QgP2dpdmVuID9mYW1pbHkKV0hFUkUgewogID9hbm5vdCBhOmFubm90YXRlcyAmbHQ7aHR0cDovL3d3dy53My5vcmcvVFIvcmRmLXNwYXJxbC1xdWVyeS8+IC4KICA/YW5ub3QgZGM6Y3JlYXRvciA/YyAuCiAgT1BUSU9OQUwgez9jIGZvYWY6Z2l2ZW4gP2dpdmVuIDsKICAgICAgICAgICAgICAgZm9hZjpmYW1pbHkgP2ZhbWlseSB9IC4KICBGSUxURVIgaXNCbGFuayg/YykKfQo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIyNTBweCIsCiAgICBwYXJzZXJmaWxlOiAicGFyc2VzcGFycWwuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9zcGFycWxjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/story.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkltcGxlbWVudGluZyBhIFN5bnRheC1IaWdobGlnaHRpbmcgSmF2YVNjcmlwdCBFZGl0b3IgSW4gSmF2YVNjcmlwdDwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PURyb2lkK1NhbnN8RHJvaWQrU2FucytNb25vfERyb2lkK1NhbnM6Ym9sZCIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pzY29sb3JzLmNzcyIvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz4KICA8L2hlYWQ+CiAgPGJvZHk+Cgo8aDEgc3R5bGU9ImxldHRlci1zcGFjaW5nOiAtMnB4Ij5JbXBsZW1lbnRpbmcgYSBTeW50YXgtSGlnaGxpZ2h0aW5nIEphdmFTY3JpcHQgRWRpdG9yIEluIEphdmFTY3JpcHQ8L2gxPgoKPHByZSBjbGFzcz0iZ3JleSI+Ci8qIEEgYnJ1dGFsIG9keXNzZXkgdG8gdGhlIGRhcmsKICAgc2lkZSBvZiB0aGUgRE9NIHRyZWUgKi8KPC9wcmU+Cgo8ZGl2IGNsYXNzPSJjbGVhciI+PGRpdiBjbGFzcz0ibGVmdGJpZyBibGsiPgoKICA8cD5JbiBvbmUgb2YgaGlzICh2ZXJ5IGluZm9ybWF0aXZlKSA8YQogIGhyZWY9Imh0dHA6Ly93d3cubGVhcm53ZWJkZXNpZ25vbmxpbmUuY29tL3ZpZGVvcy9wcm9ncmFtbWluZy9qYXZhc2NyaXB0L3lhaG9vLWRvdWdsYXMtY3JvY2tmb3JkIj52aWRlbwogIGxlY3R1cmVzPC9hPiwgRG91Z2xhcyBDcm9ja2ZvcmQgcmVtYXJrcyB0aGF0IHdyaXRpbmcgSmF2YVNjcmlwdAogIGZvciB0aGUgd2ViIGlzICdwcm9ncmFtbWluZyBpbiBhIGhvc3RpbGUgZW52aXJvbm1lbnQnLiBJIGhhZCBkb25lCiAgbXkgZmFpciBzaGFyZSBvZiB3ZWlyZCB3b3JrYXJvdW5kcywgYW5kIGV2ZW4gb2NjYXNvbmFsbHkgZ2F2ZSB1cAogIGFuIG9uIGlkZWEgZW50aXJlbHkgYmVjYXVzZSBicm93c2VycyBqdXN0IHdvdWxkbid0IHN1cHBvcnQgaXQsIGJ1dAogIGJlZm9yZSB0aGlzIHByb2plY3QgSSBuZXZlciByZWFsbHkgcmVhbGl6ZWQganVzdCBob3cgcG93ZXJsZXNzIGEKICBwcm9ncmFtbWVyIGNhbiBiZSBpbiB0aGUgZmFjZSBvZiBidWdneSwgaW5jb21wYXRpYmxlLCBhbmQgcG9vcmx5CiAgZGVzaWduZWQgcGxhdGZvcm1zLjwvcD4KCiAgPHA+VGhlIHBsYW4gd2FzIG5vdCByaWRpY3Vsb3VzbHkgYW1iaXRpb3VzLiBJIHdhbnRlZCB0byAnZW5oYW5jZScgYQogIHRleHRhcmVhIHRvIHRoZSBwb2ludCB3aGVyZSB3cml0aW5nIGNvZGUgaW4gaXQgaXMgcGxlYXNhbnQuIFRoaXMgbWVhbnQKICBhdXRvbWF0aWMgaW5kZW50YXRpb24gYW5kLCBpZiBwb3NzaWJsZSBhdCBhbGwsIHN5bnRheCBoaWdobGlnaHRpbmcuPC9wPgoKICA8cD5JbiB0aGlzIGRvY3VtZW50IEkgZGVzY3JpYmUgdGhlIHN0b3J5IG9mIGltcGxlbWVudGluZyB0aGlzLCBmb3IgeW91cgogIGVkdWNhdGlvbiBhbmQgYW11c2VtZW50LiBBIGRlbW9uc3RyYXRpb24gb2YgdGhlIHJlc3VsdGluZyBwcm9ncmFtLAogIGFsb25nIHdpdGggdGhlIHNvdXJjZSBjb2RlLCBjYW4gYmUgZm91bmQgYXQgPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvIj50aGUgcHJvamVjdCB3ZWJzaXRlPC9hPi48L3A+CgogIDxwIHN0eWxlPSJjb2xvcjogIzgxMTsgZm9udC1zaXplOiA5MCU7IGZvbnQtc3R5bGU6IGl0YWxpYyI+Tm90ZToKICBzb21lIG9mIHRoZSBkZXRhaWxzIGdpdmVuIGhlcmUgbm8gbG9uZ2VyIGFwcGx5IHRvIHRoZSBjdXJyZW50IDxhCiAgaHJlZj0iaHR0cDovL2NvZGVtaXJyb3IubmV0LyI+Q29kZU1pcnJvcjwvYT4gY29kZWJhc2UsIHdoaWNoIGhhcwogIGV2b2x2ZWQgcXVpdGUgYSBiaXQgaW4gdGhlIG1lYW50aW1lLjwvcD4KCiAgPGgyIGlkPSJpbmRlbnQiPlRha2Ugb25lOiBPbmx5IGluZGVudGF0aW9uPC9oMj4KCiAgPHA+VGhlIHZlcnkgZmlyc3QgYXR0ZW1wdCBtZXJlbHkgYWRkZWQgYXV0by1pbmRlbnRhdGlvbiB0byBhIHRleHRhcmVhCiAgZWxlbWVudC4gSXQgd291bGQgc2NhbiBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgY29udGVudCBvZiB0aGUgYXJlYSwKICBzdGFydGluZyBmcm9tIHRoZSBjdXJzb3IsIHVudGlsIGl0IGhhZCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGVjaWRlCiAgaG93IHRvIGluZGVudCB0aGUgY3VycmVudCBsaW5lLiBJdCB0b29rIG1lIGEgd2hpbGUgdG8gZmlndXJlIG91dCBhCiAgZGVjZW50IG1vZGVsIGZvciBpbmRlbnRpbmcgSmF2YVNjcmlwdCBjb2RlLCBidXQgaW4gdGhlIGVuZCB0aGlzIHNlZW1zCiAgdG8gd29yazo8L3A+CgogIDx1bD4KICAgIDxsaT5Db2RlIHRoYXQgc2l0cyBpbnNpZGUgYSBibG9jayBpcyBpbmRlbnRlZCBvbmUgdW5pdCAoZ2VuZXJhbGx5IHR3bwogICAgc3BhY2VzKSBtb3JlIHRoYW4gdGhlIHN0YXRlbWVudCBvciBicmFjZSB0aGF0IG9wZW5lZCB0aGUgYmxvY2suPC9saT4KICAgIDxsaT5BIHN0YXRlbWVudCB0aGF0IGlzIGNvbnRpbnVlZCB0byB0aGUgbmV4dCBsaW5lIGlzIGluZGVudGVkIG9uZSB1bml0CiAgICBtb3JlIHRoYW4gdGhlIGxpbmUgdGhhdCBzdGFydHMgdGhlIHN0YXRlbWVudC48L2xpPgogICAgPGxpPldoZW4gZGVhbGluZyB3aXRoIGxpc3RzIG9mIGFyZ3VtZW50cyBvciB0aGUgY29udGVudCBvZiBhcnJheSBhbmQKICAgIG9iamVjdCBsaXRlcmFscyB0aGVyZSBhcmUgdHdvIHBvc3NpYmxlIG1vZGVscy4gSWYgdGhlcmUgaXMgYW55IHRleHQKICAgIGRpcmVjdGx5IGFmdGVyIHRoZSBvcGVuaW5nIGJyYWNlLCBicmFja2V0LCBvciBwYXJlbnRoZXNpcywKICAgIHN1YnNlcXVlbnQgbGluZXMgYXJlIGFsaWduZWQgd2l0aCB0aGlzIG9wZW5pbmcgY2hhcmFjdGVyLiBJZiB0aGUKICAgIG9wZW5pbmcgY2hhcmFjdGVyIGlzIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSAob3B0aW9uYWxseSB3aXRoIHdoaXRlc3BhY2UKICAgIG9yIGNvbW1lbnRzIGJlZm9yZSBpdCksIHRoZSBuZXh0IGxpbmUgaXMgaW5kZW50ZWQgb25lIHVuaXQgZnVydGhlcgogICAgdGhhbiB0aGUgbGluZSB0aGF0IHN0YXJ0ZWQgdGhlIGxpc3QuPC9saT4KICAgIDxsaT5BbmQsIG9idmlvdXNseSwgaWYgYSBzdGF0ZW1lbnQgZm9sbG93cyBhbm90aGVyIHN0YXRlbWVudCBpdCBpcwogICAgaW5kZW50ZWQgdGhlIHNhbWUgYW1vdW50IGFzIHRoZSBvbmUgYmVmb3JlIGl0LjwvbGk+CiAgPC91bD4KCiAgPHA+V2hlbiBzY2FubmluZyBiYWNrd2FyZHMgdGhyb3VnaCBjb2RlIG9uZSBoYXMgdG8gdGFrZSBzdHJpbmcgdmFsdWVzLAogIGNvbW1lbnRzLCBhbmQgcmVndWxhciBleHByZXNzaW9ucyAod2hpY2ggYXJlIGRlbGltaXRlZCBieSBzbGFzaGVzKQogIGludG8gYWNjb3VudCwgYmVjYXVzZSBicmFjZXMgYW5kIHNlbWljb2xvbnMgYW5kIHN1Y2ggYXJlIG5vdAogIHNpZ25pZmljYW50IHdoZW4gdGhleSBhcHBlYXIgaW5zaWRlIHRoZW0uIFNpbmdsZS1saW5lICgnLy8nKSBjb21tZW50cwogIHR1cm5lZCBvdXQgdG8gYmUgcmF0aGVyIGluZWZmaWNpZW50IHRvIGNoZWNrIGZvciB3aGVuIGRvaW5nIGEKICBiYWNrd2FyZHMgc2Nhbiwgc2luY2UgZXZlcnkgdGltZSB5b3UgZW5jb3VudGVyIGEgbmV3bGluZSB5b3UgaGF2ZSB0bwogIGdvIG9uIHRvIHRoZSBuZXh0IG5ld2xpbmUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBsaW5lIGVuZHMgaW4gYQogIGNvbW1lbnQgb3Igbm90LiBSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBldmVuIHdvcnNlICYjeDIwMTU7IHdpdGhvdXQKICBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHRoZXkgYXJlIGltcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggZnJvbSB0aGUKICBkaXZpc2lvbiBvcGVyYXRvciwgYW5kIEkgZGlkbid0IGdldCB0aGVtIHdvcmtpbmcgaW4gdGhpcyBmaXJzdAogIHZlcnNpb24uPC9wPgoKICA8cD5UbyBmaW5kIG91dCB3aGljaCBsaW5lIHRvIGluZGVudCwgYW5kIHRvIG1ha2Ugc3VyZSB0aGF0IGFkZGluZyBvcgogIHJlbW92aW5nIHdoaXRlc3BhY2UgZG9lc24ndCBjYXVzZSB0aGUgY3Vyc29yIHRvIGp1bXAgaW4gc3RyYW5nZSB3YXlzLAogIGl0IGlzIG5lY2Vzc2FyeSB0byBkZXRlcm1pbmUgd2hpY2ggdGV4dCB0aGUgdXNlciBoYXMgc2VsZWN0ZWQuIEV2ZW4KICB0aG91Z2ggSSB3YXMgd29ya2luZyB3aXRoIGp1c3QgYSBzaW1wbGUgdGV4dGFyZWEgYXQgdGhpcyBwb2ludCwgdGhpcwogIHdhcyBhbHJlYWR5IGEgYml0IG9mIGEgaGVhZGFjaGUuPC9wPgoKICA8cD5PbiBXM0Mtc3RhbmRhcmRzLXJlc3BlY3RpbmcgYnJvd3NlcnMsIHRleHRhcmVhIG5vZGVzIGhhdmUKICA8Y29kZT5zZWxlY3Rpb25TdGFydDwvY29kZT4gYW5kIDxjb2RlPnNlbGVjdGlvbkVuZDwvY29kZT4KICBwcm9wZXJ0aWVzIHdoaWNoIG5pY2VseSBnaXZlIHlvdSB0aGUgYW1vdW50IG9mIGNoYXJhY3RlcnMgYmVmb3JlCiAgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNlbGVjdGlvbi4gR3JlYXQhPC9wPgoKICA8cD5UaGVuLCB0aGVyZSBpcyBJbnRlcm5ldCBFeHBsb3Jlci4gSW50ZXJuZXQgRXhwbG9yZXIgYWxzbyBoYXMgYW4gQVBJCiAgZm9yIGxvb2tpbmcgYXQgYW5kIG1hbmlwdWxhdGluZyBzZWxlY3Rpb25zLiBJdCBnaXZlcyB5b3UgaW5mb3JtYXRpb24KICBzdWNoIGFzIGEgZGV0YWlsZWQgbWFwIG9mIHRoZSBzcGFjZSB0aGUgc2VsZWN0ZWQgbGluZXMgdGFrZSB1cCBvbiB0aGUKICBzY3JlZW4sIGluIHBpeGVscywgYW5kIG9mIGNvdXJzZSB0aGUgdGV4dCBpbnNpZGUgdGhlIHNlbGVjdGlvbi4gSXQKICBkb2VzLCBob3dldmVyLCBub3QgZ2l2ZSB5b3UgbXVjaCBvZiBhIGNsdWUgb24gd2hlcmUgdGhlIHNlbGVjdGlvbiBpcwogIGxvY2F0ZWQgaW4gdGhlIGRvY3VtZW50LjwvcD4KCiAgPHA+QWZ0ZXIgc29tZSBleHBlcmltZW50YXRpb24gSSBtYW5hZ2VkIHRvIHdvcmsgb3V0IGFuIGVsYWJvcmF0ZQogIG1ldGhvZCBmb3IgZ2V0dGluZyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUKICA8Y29kZT5zZWxlY3Rpb25TdGFydDwvY29kZT4gYW5kIDxjb2RlPnNlbGVjdGlvbkVuZDwvY29kZT4gdmFsdWVzCiAgaW4gb3RoZXIgYnJvd3NlcnMuIEl0IHdvcmtlZCBsaWtlIHRoaXM6PC9wPgoKICA8dWw+CiAgICA8bGk+R2V0IHRoZSA8Y29kZT5UZXh0UmFuZ2U8L2NvZGU+IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzZWxlY3Rpb24uPC9saT4KICAgIDxsaT5SZWNvcmQgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBpbnNpZGUgaXQuPC9saT4KICAgIDxsaT5NYWtlIGFub3RoZXIgPGNvZGU+VGV4dFJhbmdlPC9jb2RlPiB0aGF0IGNvdmVycyB0aGUgd2hvbGUgdGV4dGFyZWEgZWxlbWVudC48L2xpPgogICAgPGxpPlNldCB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IDxjb2RlPlRleHRSYW5nZTwvY29kZT4gdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZWNvbmQgb25lLjwvbGk+CiAgICA8bGk+QWdhaW4gZ2V0IHRoZSBsZW5ndGggb2YgdGhlIHRleHQgaW4gdGhlIGZpcnN0IG9iamVjdC48L2xpPgogICAgPGxpPk5vdyA8Y29kZT5zZWxlY3Rpb25FbmQ8L2NvZGU+IGlzIHRoZSBzZWNvbmQgbGVuZ3RoLCBhbmQgPGNvZGU+c2VsZWN0aW9uU3RhcnQ8L2NvZGU+IGlzCiAgICB0aGUgc2Vjb25kIG1pbnVzIHRoZSBmaXJzdCBvbmUuPC9saT4KICA8L3VsPgoKICA8cD5UaGF0IHNlZW1lZCB0byB3b3JrLCBidXQgd2hlbiByZXNldHRpbmcgdGhlIHNlbGVjdGlvbiBhZnRlciBtb2RpZnlpbmcKICB0aGUgY29udGVudCBvZiB0aGUgdGV4dGFyZWEgSSByYW4gaW50byBhbm90aGVyIGludGVyZXN0aW5nIGZlYXR1cmUgb2YKICB0aGVzZSA8Y29kZT5UZXh0UmFuZ2U8L2NvZGU+czogWW91IGNhbiBtb3ZlIHRoZWlyIGVuZHBvaW50cyBieSBhIGdpdmVuIG51bWJlciBvZgogIGNoYXJhY3RlcnMsIHdoaWNoIGlzIHVzZWZ1bCB3aGVuIHRyeWluZyB0byBzZXQgYSBjdXJzb3IgYXQgdGhlIE50aAogIGNoYXJhY3RlciBvZiBhIHRleHRhcmVhLCBidXQgaW4gdGhpcyBjb250ZXh0LCBuZXdsaW5lcyBhcmUgPGVtPm5vdDwvZW0+CiAgY29uc2lkZXJlZCB0byBiZSBjaGFyYWN0ZXJzLCBzbyB5b3UnbGwgYWx3YXlzIGVuZCB1cCBvbmUgY2hhcmFjdGVyIHRvbwogIGZhciBmb3IgZXZlcnkgbmV3bGluZSB5b3UgcGFzc2VkLiBPZiBjb3Vyc2UsIHlvdSBjYW4gY291bnQgbmV3bGluZXMKICBhbmQgY29tcGVuc2F0ZSBmb3IgdGhpcyAodGhvdWdoIGl0IGlzIHN0aWxsIG5vdCBwb3NzaWJsZSB0byBwb3NpdGlvbgogIHRoZSBjdXJzb3IgcmlnaHQgaW4gZnJvbnQgb2YgYSBuZXdsaW5lKS4gU2hlZXNoLjwvcD4KCiAgPHA+QWZ0ZXIgcmFnZ2luZyBvbiBJbnRlcm5ldCBFeHBsb3JlciBmb3IgYSB3aGlsZSwgbGV0IHVzIG1vdmUgb24gYW5kIHJhZwogIG9uIEZpcmVmb3ggYSBiaXQuIEl0IHR1cm5zIG91dCB0aGF0LCBpbiBGaXJlZm94LCBnZXR0aW5nIGFuZCBzZXR0aW5nCiAgdGhlIHRleHQgY29udGVudCBvZiBhIERPTSBlbGVtZW50IGlzIHVuZXhwbGFpbmFibHkgZXhwZW5zaXZlLAogIGVzcGVjaWFsbHkgd2hlbiB0aGVyZSBpcyBhIGxvdCBvZiB0ZXh0IGludm9sdmVkLiBBcyBzb29uIGFzIEkgdHJpZWQgdG8KICB1c2UgbXkgaW5kZW50YXRpb24gY29kZSB0byBpbmRlbnQgaXRzZWxmIChzb21lIDQwMCBsaW5lcyksIEkgZm91bmQKICBteXNlbGYgd2FpdGluZyBmb3Igb3ZlciBmb3VyIHNlY29uZHMgZXZlcnkgdGltZSBJIHByZXNzZWQgZW50ZXIuIFRoYXQKICBzZWVtZWQgYSBsaXR0bGUgc2xvdy48L3A+CgogIDxoMiBpZD0iZGVzaWdubW9kZSI+ZGVzaWduTW9kZSBpdCBpczwvaDI+CgogIDxwPlRoZSBzb2x1dGlvbiB3YXMgb2J2aW91czogU2luY2UgdGhlIHRleHQgaW5zaWRlIGEgdGV4dGFyZWEgY2FuIG9ubHkgYmUKICBtYW5pcHVsYXRlZCBhcyBvbmUgc2luZ2xlIGJpZyBzdHJpbmcsIEkgaGFkIHRvIHNwcmVhZCBpdCBvdXQgb3ZlcgogIG11bHRpcGxlIG5vZGVzLiBIb3cgZG8geW91IHNwcmVhZCBlZGl0YWJsZSBjb250ZW50IG92ZXIgbXVsdGlwbGUKICBub2Rlcz8gUmlnaHQhIDxjb2RlPmRlc2lnbk1vZGU8L2NvZGU+IG9yIDxjb2RlPmNvbnRlbnRFZGl0YWJsZTwvY29kZT4uPC9wPgoKICA8cD5Ob3cgSSB3YXNuJ3QgZW50aXJlbHkgbmFpdmUgYWJvdXQgPGNvZGU+ZGVzaWduTW9kZTwvY29kZT4sIEkgaGFkIGJlZW4gbG9va2luZwogIGludG8gd3JpdGluZyBhIG5vbi1tZXNzeSBXWVNJV1lHIGVkaXRvciBiZWZvcmUsIGFuZCBhdCB0aGF0IHRpbWUgSSBoYWQKICBjb25jbHVkZWQgdHdvIHRoaW5nczo8L3A+CgogIDx1bD4KICAgIDxsaT5JdCBpcyBpbXBvc3NpYmxlIHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBpbnNlcnRpbmcgd2hpY2hldmVyIEhUTUwKICAgIGp1bmsgaGUgd2FudHMgaW50byB0aGUgZG9jdW1lbnQuPC9saT4KICAgIDxsaT5JbiBJbnRlcm5ldCBFeHBsb3JlciwgaXQgaXMgZXh0ZW1lbHkgaGFyZCB0byBnZXQgYSBnb29kIHZpZXcKICAgIG9uIHdoYXQgbm9kZXMgdGhlIHVzZXIgaGFzIHNlbGVjdGVkLjwvbGk+CiAgPC91bD4KCiAgPHA+QmFzaWNhbGx5LCB0aGUgZ29vZCBmb2xrcyBhdCBNaWNyb3NvZnQgZGVzaWduZWQgYSByZWFsbHkgYmFkIGludGVyZmFjZQogIGZvciBwdXR0aW5nIGVkaXRhYmxlIGRvY3VtZW50cyBpbiBwYWdlcywgYW5kIHRoZSBvdGhlciBicm93c2Vycywgbm90CiAgd2FudGluZyB0byBiZSBsZWZ0IGJlaGluZCwgbW9yZSBvciBsZXNzIGNvcGllZCB0aGF0LiBBbmQgdGhlcmUgaXNuJ3QKICBtdWNoIGhvcGUgZm9yIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIGFwcGVhcmluZyBhbnl0aW1lIHNvb24uIFdpc2UKICBwZW9wbGUgcHJvYmFibHkgdXNlIGEgRmxhc2ggbW92aWUgb3IgKEdvZCBmb3JiaWQpIGEgSmF2YSBhcHBsZXQgZm9yCiAgdGhlc2Uga2luZCBvZiB0aGluZ3MsIHRob3VnaCB0aG9zZSBhcmUgbm90IHdpdGhvdXQgZHJhd2JhY2tzIGVpdGhlci48L3A+CgogIDxwPkFueXdheSwgc2VlaW5nIGhvdyB1c2luZyBhbiBlZGl0YWJsZSBkb2N1bWVudCB3b3VsZCBhbHNvIG1ha2Ugc3ludGF4CiAgaGlnaGxpZ2h0aW5nIHBvc3NpYmxlLCBJIGZvb2xpc2hseSB3ZW50IGFoZWFkLiBUaGVyZSBpcyBzb21ldGhpbmcKICBwZXJ2ZXJzZWx5IGZhc2NpbmF0aW5nIGFib3V0IHRyeWluZyB0byBidWlsZCBhIGNvbXBsaWNhdGVkIHN5c3RlbSBvbiBhCiAgbG91c3ksIHVuc3VpdGFibGUgcGxhdGZvcm0uPC9wPgoKICA8aDIgaWQ9InBhcnNlciI+QSBwYXJzZXI8L2gyPgoKICA8cD5Ib3cgZG9lcyBvbmUgZG8gZGVjZW50IHN5bnRheCBoaWdobGlnaHRpbmc/IEEgdmVyeSBzaW1wbGUgc2Nhbm5pbmcgY2FuCiAgdGVsbCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN0cmluZ3MsIGNvbW1lbnRzLCBrZXl3b3JkcywgYW5kIG90aGVyCiAgY29kZS4gQnV0IHRoaXMgdGltZSBJIHdhbnRlZCB0byBhY3R1YWxseSBiZSBhYmxlIHRvIHJlY29nbml6ZSByZWd1bGFyCiAgZXhwcmVzc2lvbnMsIHNvIHRoYXQgSSBkaWRuJ3QgaGF2ZSBhbnkgYmxhdGFudCBpbmNvcnJlY3QgYmVoYXZpb3VyCiAgYW55bW9yZS48L3A+CgogIDxwPlRoYXQgYnJvdWdodCBtZSB0byB0aGUgaWRlYSBvZiBkb2luZyBhIHNlcmlvdXMgcGFyc2Ugb24gdGhlIGNvZGUuIFRoaXMKICB3b3VsZCBub3Qgb25seSBtYWtlIGRldGVjdGluZyByZWd1bGFyIGV4cHJlc3Npb25zIG11Y2ggZWFzaWVyLCBpdAogIHdvdWxkIGFsc28gZ2l2ZSBtZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSwgd2hpY2ggY2FuIGJlCiAgdXNlZCB0byBkZXRlcm1pbmUgcHJvcGVyIGluZGVudGF0aW9uIGxldmVscywgYW5kIHRvIG1ha2Ugc3VidGxlCiAgZGlzdGluY3Rpb25zIGluIGNvbG91cmluZywgZm9yIGV4YW1wbGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB2YXJpYWJsZQogIG5hbWVzIGFuZCBwcm9wZXJ0eSBuYW1lcy48L3A+CgogIDxwPkFuZCBoZXksIHdoZW4gd2UncmUgcGFyc2luZyB0aGUgd2hvbGUgdGhpbmcsIGl0IHdvdWxkIGV2ZW4gYmUgcG9zc2libGUKICB0byBtYWtlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiBsb2NhbCBhbmQgZ2xvYmFsIHZhcmlhYmxlcywgYW5kIGNvbG91cgogIHRoZW0gZGlmZmVyZW50bHkuIElmIHlvdSd2ZSBldmVyIHByb2dyYW1tZWQgSmF2YVNjcmlwdCB5b3UgY2FuCiAgcHJvYmFibHkgaW1hZ2luZSBob3cgdXNlZnVsIHRoaXMgd291bGQgYmUgJiN4MjAxNTsgaXQgaXMgcmlkaWN1bG91c2x5IGVhc3kKICB0byBhY2NpZGVudGFsbHkgY3JlYXRlIGdsb2JhbCBpbnN0ZWFkIG9mIGxvY2FsIHZhcmlhYmxlcy4gSSBkb24ndAogIGNvbnNpZGVyIG15c2VsZiBhIEphdmFTY3JpcHQgcm9va2llIGFueW1vcmUsIGJ1dCBpdCB3YXMgKGVtYmFycmFzaW5nbHkKICBlbm91Z2gpIG9ubHkgdGhpcyB3ZWVrIHRoYXQgSSByZWFsaXplZCB0aGF0IG15IGhhYml0IG9mIHR5cGluZyA8Y29kZT5mb3IKICAobmFtZSBpbiBvYmplY3QpIC4uLjwvY29kZT4gd2FzIGNyZWF0aW5nIGEgZ2xvYmFsIHZhcmlhYmxlIDxjb2RlPm5hbWU8L2NvZGU+LCBhbmQgdGhhdAogIEkgc2hvdWxkIGJlIHR5cGluZyA8Y29kZT5mb3IgKHZhciBuYW1lIGluIG9iamVjdCkgLi4uPC9jb2RlPiBpbnN0ZWFkLjwvcD4KCiAgPHA+UmUtcGFyc2luZyBhbGwgdGhlIGNvZGUgdGhlIHVzZXIgaGFzIHR5cGVkIGluIGV2ZXJ5IHRpbWUgaGUgaGl0cyBhIGtleQogIGlzIG9idmlvdXNseSBub3QgZmVhc2libGUuIFNvIGhvdyBkb2VzIG9uZSBjb21iaW5lIG9uLXRoZS1mbHkKICBoaWdobGlnaHRpbmcgd2l0aCBhIHNlcmlvdXMgcGFyc2VyPyBPbmUgb3B0aW9uIHdvdWxkIGJlIHRvIHNwbGl0IHRoZQogIGNvZGUgaW50byB0b3AtbGV2ZWwgc3RhdGVtZW50cyAoZnVuY3Rpb25zLCB2YXJpYWJsZSBkZWZpbml0aW9ucywgZXRjLikKICBhbmQgcGFyc2UgdGhlc2Ugc2VwYXJhdGVseS4gVGhpcyBpcyBob3JyaWJseSBjbHVua3kgdGhvdWdoLCBlc3BlY2lhbGx5CiAgY29uc2lkZXJpbmcgdGhlIGZhY3QgdGhhdCBtb2Rlcm4gSmF2YVNjcmlwdGVycyBvZnRlbiBwdXQgYWxsIHRoZSBjb2RlCiAgaW4gYSBmaWxlIGluIGEgc2luZ2xlIGJpZyBvYmplY3Qgb3IgZnVuY3Rpb24gdG8gcHJldmVudCBuYW1lc3BhY2UKICBwb2xsdXRpb24uPC9wPgoKICA8cD5JIGhhdmUgYWx3YXlzIGxpa2VkIGNvbnRpbnVhdGlvbi1wYXNzaW5nIHN0eWxlIGFuZCBnZW5lcmF0b3JzLiBTbyB0aGUKICBpZGVhIEkgY2FtZSB1cCB3aXRoIGlzIHRoaXM6IEFuIGludGVycnVwdGFibGUsIHJlc3VtYWJsZSBwYXJzZXIuIFRoaXMKICBpcyBhIHBhcnNlciB0aGF0IGRvZXMgbm90IHJ1biB0aHJvdWdoIGEgd2hvbGUgZG9jdW1lbnQgYXQgb25jZSwgYnV0CiAgcGFyc2VzIG9uLWRlbWFuZCwgYSBsaXR0bGUgYml0IGF0IGEgdGltZS4gQXQgYW55IG1vbWVudCB5b3UgY2FuIGNyZWF0ZQogIGEgY29weSBvZiBpdHMgY3VycmVudCBzdGF0ZSwgd2hpY2ggY2FuIGJlIHJlc3VtZWQgbGF0ZXIuIFlvdSBzdGFydAogIHBhcnNpbmcgYXQgdGhlIHRvcCBvZiB0aGUgY29kZSwgYW5kIGtlZXAgZ29pbmcgYXMgbG9uZyBhcyB5b3UgbGlrZSwKICBidXQgdGhyb3VnaG91dCB0aGUgZG9jdW1lbnQsIGZvciBleGFtcGxlIGF0IGV2ZXJ5IGVuZCBvZiBsaW5lLCB5b3UKICBzdG9yZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFyc2VyIHN0YXRlLiBMYXRlciBvbiwgd2hlbiBsaW5lIDEwNgogIGNoYW5nZXMsIHlvdSBncmFiIHRoZSBpbnRlcnJ1cHRlZCBwYXJzZXIgdGhhdCB3YXMgc3RvcmVkIGF0IHRoZSBlbmQgb2YKICBsaW5lIDEwNSwgYW5kIHVzZSBpdCB0byByZS1wYXJzZSBsaW5lIDEwNi4gSXQgc3RpbGwga25vd3MgZXhhY3RseSB3aGF0CiAgdGhlIGNvbnRleHQgd2FzIGF0IHRoYXQgcG9pbnQsIHdoaWNoIGxvY2FsIHZhcmlhYmxlcyB3ZXJlIGRlZmluZWQsCiAgd2hpY2ggdW5maW5pc2hlZCBzdGF0ZW1lbnRzIHdlcmUgZW5jb3VudGVyZWQsIGFuZCBzbyBvbi48L3A+CgogIDxwPkJ1dCB0aGF0LCB1bmZvcnR1bmF0ZWx5LCB0dXJuZWQgb3V0IHRvIGJlIG5vdCBxdWl0ZSBhcyBlYXN5IGFzIGl0CiAgc291bmRzLjwvcD4KCiAgPGgyIGlkPSJkb20iPlRoZSBET00gbm9kZXMgdW5kZXJmb290PC9oMj4KCiAgPHA+T2YgY291cnNlLCB3aGVuIHdvcmtpbmcgaW5zaWRlIGFuIGVkaXRhYmxlIGZyYW1lIHdlIGRvbid0IGp1c3QKICBoYXZlIHRvIGRlYWwgd2l0aCB0ZXh0LiBUaGUgY29kZSB3aWxsIGJlIHJlcHJlc2VudGVkIGJ5IHNvbWUga2luZAogIG9mIERPTSB0cmVlLiBNeSBmaXJzdCBpZGVhIHdhcyB0byBzZXQgdGhlIDxjb2RlPndoaXRlLXNwYWNlOgogIHByZTwvY29kZT4gc3R5bGUgZm9yIHRoZSBmcmFtZSBhbmQgdHJ5IHRvIHdvcmsgd2l0aCBtb3N0bHkgdGV4dCwKICB3aXRoIHRoZSBvY2Nhc2lvbmFsIGNvbG91cmVkIDxjb2RlPnNwYW48L2NvZGU+IGVsZW1lbnQuIEl0IHR1cm5lZAogIG91dCB0aGF0IHN1cHBvcnQgZm9yIDxjb2RlPndoaXRlLXNwYWNlOiBwcmU8L2NvZGU+IGluIGJyb3dzZXJzLAogIGVzcGVjaWFsbHkgaW4gZWRpdGFibGUgZnJhbWVzLCBpcyBzbyBob3BlbGVzc2x5IGdsaXRjaHkgdGhhdCB0aGlzCiAgd2FzIHVud29ya2FibGUuPC9wPgoKICA8cD5OZXh0IEkgdHJpZWQgYSBzZXJpZXMgb2YgPGNvZGU+ZGl2PC9jb2RlPiBlbGVtZW50cywgb25lIHBlcgogIGxpbmUsIHdpdGggPGNvZGU+c3BhbjwvY29kZT4gZWxlbWVudHMgaW5zaWRlIHRoZW0uIFRoaXMgc2VlbWVkIHRvCiAgbmljZWx5IHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbiBhIHNoYWxsb3dseQogIGhpZXJhcmNoaWNhbCB3YXkuIEkgc29vbiByZWFsaXplZCwgaG93ZXZlciwgdGhhdCBteSBjb2RlIHdvdWxkIGJlCiAgbXVjaCBtb3JlIHN0cmFpZ2h0Zm93YXJkIHdoZW4gdXNpbmcgbm8gaGllcmFyY2h5IHdoYXRzb2V2ZXIKICAmI3gyMDE1OyBhIHNlcmllcyBvZiA8Y29kZT5zcGFuPC9jb2RlPnMsIHdpdGggPGNvZGU+YnI8L2NvZGU+IHRhZ3MKICBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGxpbmUuIFRoaXMgd2F5LCB0aGUgRE9NIG5vZGVzIGZvcm0gYSBmbGF0CiAgc2VxdWVuY2UgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgc2VxdWVuY2Ugb2YgdGhlIHRleHQgJiN4MjAxNTsKICBqdXN0IGV4dHJhY3QgdGV4dCBmcm9tIDxjb2RlPnNwYW48L2NvZGU+IG5vZGVzIGFuZCBzdWJzdGl0dXRlCiAgbmV3bGluZXMgZm9yIDxjb2RlPmJyPC9jb2RlPiBub2Rlcy48L3A+CgogIDxwPkl0IHdvdWxkIGJlIGEgc2hhbWUgaWYgdGhlIGVkaXRvciB3b3VsZCBmYWxsIGFwYXJ0IGFzIHNvb24gYXMKICBzb21lb25lIHBhc3RlcyBzb21lIGNvbXBsaWNhdGVkIEhUTUwgaW50byBpdC4gSSB3YW50ZWQgaXQgdG8gYmUKICBhYmxlIHRvIGRlYWwgd2l0aCB3aGF0ZXZlciBtZXNzIGl0IGZpbmRzLiBUaGlzIG1lYW5zIHVzaW5nIHNvbWUKICBraW5kIG9mIEhUTUwtbm9ybWFsaXplciB0aGF0IHRha2VzIGFyYml0cmFyeSBIVE1MIGFuZCBmbGF0dGVucyBpdAogIGludG8gYSBzZXJpZXMgb2YgPGNvZGU+YnI8L2NvZGU+cyBhbmQgPGNvZGU+c3BhbjwvY29kZT4gZWxlbWVudHMKICB0aGF0IGNvbnRhaW4gYSBzaW5nbGUgdGV4dCBub2RlLiBKdXN0IGxpa2UgdGhlIHBhcnNpbmcgcHJvY2VzcywgaXQKICB3b3VsZCBiZSBiZXN0IGlmIHRoaXMgZGlkIG5vdCBoYXZlIHRvIGRvbmUgdG8gdGhlIGVudGlyZSBidWZmZXIKICBldmVyeSB0aW1lIHNvbWV0aGluZyBjaGFuZ2VzLjwvcD4KCiAgPHA+SXQgdG9vayBzb21lIGJhbmdpbmcgbXkgaGVhZCBhZ2FpbnN0IG15IGtleWJvYXJkLCBidXQgSSBmb3VuZCBhIHZlcnkKICBuaWNlIHdheSB0byBtb2RlbCB0aGlzLiBJdCBtYWtlcyBoZWF2eSB1c2Ugb2YgZ2VuZXJhdG9ycywgZm9yIHdoaWNoIEkKICB1c2VkIDxhIGhyZWY9Imh0dHA6Ly93d3cubW9jaGlraXQuY29tIj5Nb2NoaUtpdDwvYT4ncyBpdGVyYXRvcgogIGZyYW1ld29yay4gQm9iIElwcG9saXRvIGV4cGxhaW5zIHRoZSBjb25jZXB0cyBpbiB0aGlzIGxpYnJhcnkgdmVyeQogIHdlbGwgaW4gaGlzIDxhCiAgaHJlZj0iaHR0cDovL2JvYi5weXRob25tYWMub3JnL2FyY2hpdmVzLzIwMDUvMDcvMDYvaXRlcmF0aW9uLWluLWphdmFzY3JpcHQvIj5ibG9nCiAgcG9zdDwvYT4gYWJvdXQgaXQuIChBbHNvIG5vdGljZSBzb21lIG9mIHRoZSBkaXNtaXNzaXZlIGNvbW1lbnRzIGF0IHRoZQogIGJvdHRvbSBvZiB0aGF0IHBvc3QuIFRoZXkgc2F5ICJJIGRvbid0IHRoaW5rIEkgcmVhbGx5IHdhbnQgdG8gbGVhcm4KICB0aGlzLCBzbyBJJ2xsIG1ha2UgdXAgc29tZSBzaWxseSByZWFzb24gdG8gY29uZGVtbiBpdC4iKTwvcD4KCiAgPHA+VGhlIGhpZ2hsaWdodGluZyBwcm9jZXNzIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHM6CiAgbm9ybWFsaXppbmcgdGhlIERPTSB0cmVlLCBleHRyYWN0aW5nIHRoZSB0ZXh0IGZyb20gdGhlIERPTSB0cmVlLAogIHRva2VuaXppbmcgdGhpcyB0ZXh0LCBwYXJzaW5nIHRoZSB0b2tlbnMsIGFuZCBmaW5hbGx5IGFkanVzdGluZyB0aGUKICBET00gbm9kZXMgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb2RlLjwvcD4KCiAgPHA+VGhlIGZpcnN0IHR3bywgSSBwdXQgaW50byBhIHNpbmdsZSBnZW5lcmF0b3IuIEl0IHNjYW5zIHRoZSBET00KICB0cmVlLCBmaXhpbmcgYW55dGhpbmcgdGhhdCBpcyBub3QgYSBzaW1wbGUgdG9wLWxldmVsCiAgPGNvZGU+c3BhbjwvY29kZT4gb3IgPGNvZGU+YnI8L2NvZGU+LCBhbmQgaXQgcHJvZHVjZXMgdGhlIHRleHQKICBjb250ZW50IG9mIHRoZSBub2RlcyAob3IgYSBuZXdsaW5lIGluIGNhc2Ugb2YgYSA8Y29kZT5icjwvY29kZT4pCiAgYXMgaXRzIG91dHB1dCAmI3gyMDE1OyBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLCBpdCB5aWVsZHMgYSBzdHJpbmcuCiAgQ29udGludWF0aW9uIHBhc3Npbmcgc3R5bGUgd2FzIGEgZ29vZCB3YXkgdG8gbW9kZWwgdGhpcyBwcm9jZXNzIGluCiAgYW4gaXRlcmF0b3IsIHdoaWNoIGhhcyB0byBiZSBwcm9jZXNzZWQgb25lIHN0ZXAgYXQgYSB0aW1lLiBMb29rIGF0CiAgdGhpcyBzaW1wbGlmaWVkIHZlcnNpb246PC9wPgoKICA8cHJlIGNsYXNzPSJjb2RlIiBzdHlsZT0id2lkdGg6IDExMCUiPjxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5mdW5jdGlvbjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj50cmF2ZXJzZURPTTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5zdGFydDwvc3Bhbj4pewogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj52YXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+Y2M8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPigpezxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+c2Nhbk5vZGU8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5zdGFydDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+c3RvcDwvc3Bhbj4pO307CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPnN0b3A8L3NwYW4+KCl7CiAgICA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+Y2M8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnN0b3A8L3NwYW4+OwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnRocm93PC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPlN0b3BJdGVyYXRpb248L3NwYW4+OwogIH0KICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZnVuY3Rpb248L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+eWllbGQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+dmFsdWU8L3NwYW4+LCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPmM8L3NwYW4+KXsKICAgIDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5jYzwvc3Bhbj4gPSA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+Yzwvc3Bhbj47CiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+cmV0dXJuPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+dmFsdWU8L3NwYW4+OwogIH0KIAogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5mdW5jdGlvbjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5zY2FuTm9kZTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5ub2RlPC9zcGFuPiwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5jPC9zcGFuPil7CiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+bm9kZTwvc3Bhbj4uPHNwYW4gY2xhc3M9ImpzLXByb3BlcnR5Ij5uZXh0U2libGluZzwvc3Bhbj4pCiAgICAgIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj52YXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+bmV4dGM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPigpezxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5zY2FuTm9kZTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPm5vZGU8L3NwYW4+LjxzcGFuIGNsYXNzPSJqcy1wcm9wZXJ0eSI+bmV4dFNpYmxpbmc8L3NwYW4+LCA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+Yzwvc3Bhbj4pO307CiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gCiAgICAgIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj52YXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+bmV4dGM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPmM8L3NwYW4+OwogCiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtY29tbWVudCI+Lyogbm9kZSBpcyBwcm9wZXIgc3BhbiBlbGVtZW50ICovPC9zcGFuPikKICAgICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnlpZWxkPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+bm9kZTwvc3Bhbj4uPHNwYW4gY2xhc3M9ImpzLXByb3BlcnR5Ij5maXJzdENoaWxkPC9zcGFuPi48c3BhbiBjbGFzcz0ianMtcHJvcGVydHkiPm5vZGVWYWx1ZTwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5uZXh0Yzwvc3Bhbj4pOwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1jb21tZW50Ij4vKiBub2RlIGlzIHByb3BlciBiciBlbGVtZW50ICovPC9zcGFuPikKICAgICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnlpZWxkPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtcbiZxdW90Ozwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5uZXh0Yzwvc3Bhbj4pOwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IAogICAgICA8c3BhbiBjbGFzcz0ianMtY29tbWVudCI+LyogZmxhdHRlbiBub2RlLCB5aWVsZCBpdHMgdGV4dHVhbCBjb250ZW50ICovPC9zcGFuPjsKICB9CiAKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+cmV0dXJuPC9zcGFuPiB7PHNwYW4gY2xhc3M9ImpzLXByb3BlcnR5Ij5uZXh0PC9zcGFuPjogPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPigpezxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5jYzwvc3Bhbj4oKTt9fTsKfTwvcHJlPiAKCiAgPHA+VGhlIHZhcmlhYmxlIDxjb2RlPmM8L2NvZGU+IHN0YW5kcyBmb3IgJ2NvbnRpbnVhdGlvbicsIGFuZCA8Y29kZT5jYzwvY29kZT4gZm9yICdjdXJyZW50CiAgY29udGludWF0aW9uJyAmI3gyMDE1OyB0aGF0IGxhc3QgdmFyaWFibGUgaXMgdXNlZCB0byBzdG9yZSB0aGUgZnVuY3Rpb24gdG8KICBjb250aW51ZSB3aXRoLCB3aGVuIHlpZWxkaW5nIGEgdmFsdWUgdG8gdGhlIG91dHNpZGUgd29ybGQuIEV2ZXJ5IHRpbWUKICBjb250cm9sIGxlYXZlcyB0aGlzIGZ1bmN0aW9uLCBpdCBoYXMgdG8gbWFrZSBzdXJlIHRoYXQgPGNvZGU+Y2M8L2NvZGU+IGlzIHNldCB0bwogIGEgc3VpdGFibGUgdmFsdWUsIHdoaWNoIGlzIHdoYXQgPGNvZGU+eWllbGQ8L2NvZGU+IGFuZCA8Y29kZT5zdG9wPC9jb2RlPiB0YWtlIGNhcmUgb2YuPC9wPgoKICA8cD5UaGUgb2JqZWN0IHRoYXQgaXMgcmV0dXJuZWQgY29udGFpbnMgYSA8Y29kZT5uZXh0PC9jb2RlPiBtZXRob2QsIHdoaWNoIGlzCiAgTW9jaGlLaXQncyBpZGVhIG9mIGFuIGl0ZXJhdG9yLCBhbmQgdGhlIGluaXRpYWwgY29udGludWF0aW9uIGp1c3QKICB0aHJvd3MgYSA8Y29kZT5TdG9wSXRlcmF0aW9uPC9jb2RlPiwgd2hpY2ggaXMgaG93IE1vY2hpS2l0IHNpZ25hbHMgdGhhdCBhbgogIGl0ZXJhdG9yIGhhcyByZWFjaGVkIGl0cyBlbmQuPC9wPgoKICA8cD5UaGUgZmlyc3QgbGluZXMgb2YgPGNvZGU+c2Nhbk5vZGU8L2NvZGU+IGV4dGVuZCB0aGUgY29udGludWF0aW9uIHdpdGggdGhlIHRhc2sgb2YKICBzY2FubmluZyB0aGUgbmV4dCBub2RlLCBpZiB0aGVyZSBpcyBhIG5leHQgbm9kZS4gVGhlIHJlc3Qgb2YgdGhlCiAgZnVuY3Rpb24gZGVjaWRlcyB3aGF0IGtpbmQgb2YgdmFsdWUgdG8gPGNvZGU+eWllbGQ8L2NvZGU+LiBOb3RlIHRoYXQgdGhpcyBpcyBhCiAgcmF0aGVyIHRyaXZpYWwgZXhhbXBsZSBvZiB0aGlzIHRlY2huaXF1ZSwgc2luY2UgdGhlIHByb2Nlc3Mgb2YgZ29pbmcKICB0aHJvdWdoIHRoZXNlIG5vZGVzIGlzIGJhc2ljYWxseSBsaW5lYXIgKGl0IHdhcyBtdWNoLCBtdWNoIG1vcmUKICBjb21wbGV4IGluIGVhcmxpZXIgdmVyc2lvbnMpLCBidXQgc3RpbGwgdGhlIHRyaWNrIHdpdGggdGhlCiAgY29udGludWF0aW9ucyBtYWtlcyB0aGUgY29kZSBzaG9ydGVyIGFuZCwgZm9yIHRob3NlIGluIHRoZSBrbm93LAogIGNsZWFyZXIgdGhhbiB0aGUgZXF1aXZhbGVudCAnc3RvcmluZyB0aGUgaXRlcmF0b3Igc3RhdGUgaW4gdmFyaWFibGVzJwogIGFwcHJvYWNoLjwvcD4KCiAgPHA+VGhlIG5leHQgaXRlcmF0b3IgdGhhdCB0aGUgaW5wdXQgcGFzc2VzIHRocm91Z2ggaXMgdGhlCiAgdG9rZW5pemVyLiBXZWxsLCBhY3R1YWxseSwgdGhlcmUgaXMgYW5vdGhlciBpdGVyYXRvciBpbiBiZXR3ZWVuCiAgdGhhdCBpc29sYXRlcyB0aGUgdG9rZW5pemVyIGZyb20gdGhlIGZhY3QgdGhhdCB0aGUgRE9NIHRyYXZlcnNhbAogIHlpZWxkcyBhIGJ1bmNoIG9mIHNlcGFyYXRlIHN0cmluZ3MsIGFuZCBwcmVzZW50cyB0aGVtIGFzIGEgc2luZ2xlCiAgY2hhcmFjdGVyIHN0cmVhbSAod2l0aCBhIGNvbnZlbmllbnQgPGNvZGU+cGVlazwvY29kZT4gb3BlcmF0aW9uKSwKICBidXQgdGhpcyBpcyBub3QgYSB2ZXJ5IGludGVyZXN0aW5nIG9uZS4gV2hhdCB0aGUgdG9rZW5pemVyIHJldHVybnMKICBpcyBhIHN0cmVhbSBvZiB0b2tlbiBvYmplY3RzLCBlYWNoIG9mIHdoaWNoIGhhcyBhCiAgPGNvZGU+dmFsdWU8L2NvZGU+LCBpdHMgdGV4dHVhbCBjb250ZW50LCBhIDxjb2RlPnR5cGU8L2NvZGU+LCBsaWtlCiAgPGNvZGU+InZhcmlhYmxlIjwvY29kZT4sIDxjb2RlPiJvcGVyYXRvciI8L2NvZGU+LCBvciBqdXN0IGl0c2VsZiwKICA8Y29kZT4ieyI8L2NvZGU+IGZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiBzaWduaWZpY2FudAogIHB1bmN0dWF0aW9uIG9yIHNwZWNpYWwga2V5d29yZHMuIFRoZXkgYWxzbyBoYXZlIGEKICA8Y29kZT5zdHlsZTwvY29kZT4sIHdoaWNoIGlzIHVzZWQgbGF0ZXIgYnkgdGhlIGhpZ2hsaWdodGVyIHRvIGdpdmUKICB0aGVpciA8Y29kZT5zcGFuPC9jb2RlPiBlbGVtZW50cyBhIGNsYXNzIG5hbWUgKHRoZSBwYXJzZXIgd2lsbAogIHN0aWxsIGFkanVzdCB0aGlzIGluIHNvbWUgY2FzZXMpLjwvcD4KCiAgPHA+QXQgZmlyc3QgSSBhc3N1bWVkIHRoZSBwYXJzZXIgd291bGQgaGF2ZSB0byB0YWxrIGJhY2sgdG8gdGhlCiAgdG9rZW5pemVyIGFib3V0IHRoZSBjdXJyZW50IGNvbnRleHQsIGluIG9yZGVyIHRvIGJlIGFibGUgdG8KICBkaXN0aW5ndWlzaCB0aG9zZSBhY2N1cnNlZCByZWd1bGFyIGV4cHJlc3Npb25zIGZyb20gZGl2aXNpb25zLCBidXQKICBpdCBzZWVtcyB0aGF0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIG9ubHkgYWxsb3dlZCBpZiB0aGUgcHJldmlvdXMKICAobm9uLXdoaXRlc3BhY2UsIG5vbi1jb21tZW50KSB0b2tlbiB3YXMgZWl0aGVyIGFuIG9wZXJhdG9yLCBhCiAga2V5d29yZCBsaWtlIDxjb2RlPm5ldzwvY29kZT4gb3IgPGNvZGU+dGhyb3c8L2NvZGU+LCBvciBhIHNwZWNpZmljCiAga2luZCBvZiBwdW5jdHVhdGlvbiAoPGNvZGU+Ilt7fSgsOzoiPC9jb2RlPikgdGhhdCBpbmRpY2F0ZXMgYSBuZXcKICBleHByZXNzaW9uIGNhbiBiZSBzdGFydGVkIGhlcmUuIFRoaXMgbWFkZSB0aGluZ3MgY29uc2lkZXJhYmx5CiAgZWFzaWVyLCBzaW5jZSB0aGUgJ3JlZ2V4cCBvciBubyByZWdleHAnIHF1ZXN0aW9uIGNvdWxkIHN0YXkKICBlbnRpcmVseSB3aXRoaW4gdGhlIHRva2VuaXplci48L3A+CgogIDxwPlRoZSBuZXh0IHN0ZXAsIHRoZW4sIGlzIHRoZSBwYXJzZXIuIEl0IGRvZXMgbm90IGRvIGEgdmVyeQogIHRob3JvdWdoIGpvYiBiZWNhdXNlLCBmaXJzdGx5LCBpdCBoYXMgdG8gYmUgZmFzdCwgYW5kIHNlY29uZGx5LCBpdAogIHNob3VsZCBub3QgZ28gdG8gcGllY2VzIHdoZW4gZmVkIGFuIGluY29ycmVjdCBwcm9ncmFtLiBTbyBvbmx5CiAgc3VwZXJmaWNpYWwgY29uc3RydWN0cyBhcmUgcmVjb2duaXplZCwga2V5d29yZHMgdGhhdCByZXNlbWJsZSBlYWNoCiAgb3RoZXIgaW4gc3ludGF4LCBzdWNoIGFzIDxjb2RlPndoaWxlPC9jb2RlPiBhbmQgPGNvZGU+aWY8L2NvZGU+LAogIGFyZSB0cmVhdGVkIGluIHByZWNpc2VseSB0aGUgc2FtZSB3YXksIGFzIGFyZSA8Y29kZT50cnk8L2NvZGU+IGFuZAogIDxjb2RlPmVsc2U8L2NvZGU+ICYjeDIwMTU7IHRoZSBwYXJzZXIgZG9lc24ndCBtaW5kIGlmIGFuCiAgPGNvZGU+ZWxzZTwvY29kZT4gYXBwZWFycyB3aXRob3V0IGFuIDxjb2RlPmlmPC9jb2RlPi4gU3R1ZmYgdGhhdAogIGJpbmRzIHZhcmlhYmxlcywgPGNvZGU+dmFyPC9jb2RlPiwgPGNvZGU+ZnVuY3Rpb248L2NvZGU+LCBhbmQKICA8Y29kZT5jYXRjaDwvY29kZT4gdG8gYmUgcHJlY2lzZSwgaXMgdHJlYXRlZCB3aXRoIG1vcmUgY2FyZSwKICBiZWNhdXNlIHRoZSBwYXJzZXIgd2FudHMgdG8ga25vdyBhYm91dCBsb2NhbCB2YXJpYWJsZXMuPC9wPgoKICA8cD5JbnNpZGUgdGhlIHBhcnNlciwgdGhyZWUga2luZHMgb2YgY29udGV4dCBhcmUgc3RvcmVkLiBGaXJzdGx5LCBhIHNldAogIG9mIGtub3duIGxvY2FsIHZhcmlhYmxlcywgd2hpY2ggaXMgdXNlZCB0byBhZGp1c3QgdGhlIHN0eWxlIG9mCiAgdmFyaWFibGUgdG9rZW5zLiBFdmVyeSB0aW1lIHRoZSBwYXJzZXIgZW50ZXJzIGEgZnVuY3Rpb24sIGEgbmV3IHNldCBvZgogIHZhcmlhYmxlcyBpcyBjcmVhdGVkLiBJZiB0aGVyZSB3YXMgYWxyZWFkeSBzdWNoIGEgc2V0IChlbnRlcmluZyBhbgogIGlubmVyIGZ1bmN0aW9uKSwgYSBwb2ludGVyIHRvIHRoZSBvbGQgb25lIGlzIHN0b3JlZCBpbiB0aGUgbmV3IG9uZS4gQXQKICB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgdGhlIGN1cnJlbnQgdmFyaWFibGUgc2V0IGlzICdwb3BwZWQnIG9mZiBhbmQKICB0aGUgcHJldmlvdXMgb25lIGlzIHJlc3RvcmVkLjwvcD4KCiAgPHA+VGhlIHNlY29uZCBraW5kIG9mIGNvbnRleHQgaXMgdGhlIGxleGljYWwgY29udGV4dCwgdGhpcyBrZWVwcyB0cmFjayBvZgogIHdoZXRoZXIgd2UgYXJlIGluc2lkZSBhIHN0YXRlbWVudCwgYmxvY2ssIG9yIGxpc3QuIExpa2UgdGhlIHZhcmlhYmxlCiAgY29udGV4dCwgaXQgYWxzbyBmb3JtcyBhIHN0YWNrIG9mIGNvbnRleHRzLCB3aXRoIGVhY2ggb25lIGNvbnRhaW5pbmcgYQogIHBvaW50ZXIgdG8gdGhlIHByZXZpb3VzIG9uZXMgc28gdGhhdCB0aGV5IGNhbiBiZSBwb3BwZWQgb2ZmIGFnYWluIHdoZW4KICB0aGV5IGFyZSBmaW5pc2hlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBpbmRlbnRhdGlvbi4gRXZlcnkKICB0aW1lIHRoZSBwYXJzZXIgZW5jb3VudGVycyBhIG5ld2xpbmUgdG9rZW4sIGl0IGF0dGFjaGVzIHRoZSBjdXJyZW50CiAgbGV4aWNhbCBjb250ZXh0IGFuZCBhICdjb3B5JyBvZiBpdHNlbGYgKG1vcmUgYWJvdXQgdGhhdCBsYXRlcikgdG8gdGhpcwogIHRva2VuLjwvcD4KCiAgPHA+VGhlIHRoaXJkIGNvbnRleHQgaXMgYSBjb250aW51YXRpb24gY29udGV4dC4gVGhpcyBwYXJzZXIgZG9lcyBub3QgdXNlCiAgc3RyYWlnaHQgY29udGludWF0aW9uIHN0eWxlLCBpbnN0ZWFkIGl0IHVzZXMgYSBzdGFjayBvZiBhY3Rpb25zIHRoYXQKICBoYXZlIHRvIGJlIHBlcmZvcm1lZC4gVGhlc2UgYWN0aW9ucyBhcmUgc2ltcGxlIGZ1bmN0aW9ucywgYSBraW5kIG9mCiAgbWluaWxhbmd1YWdlLCB0aGV5IGFjdCBvbiB0b2tlbnMsIGFuZCBkZWNpZGUgd2hhdCBraW5kIG9mIG5ldyBhY3Rpb25zCiAgc2hvdWxkIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjay4gSGVyZSBhcmUgc29tZSBleGFtcGxlczo8L3A+CgogIDxwcmUgY2xhc3M9ImNvZGUiIHN0eWxlPSJ3aWR0aDogMTEwJSI+PHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmV4cHJlc3Npb248L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+dHlwZTwvc3Bhbj4pewogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj50eXBlPC9zcGFuPiBpbiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmF0b21pY1R5cGVzPC9zcGFuPikKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5tYXliZW9wZXJhdG9yPC9zcGFuPik7CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj50eXBlPC9zcGFuPiA9PSA8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtmdW5jdGlvbiZxdW90Ozwvc3Bhbj4pCiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+ZnVuY3Rpb25kZWY8L3NwYW4+KTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmlmPC9zcGFuPiAoPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnR5cGU8L3NwYW4+ID09IDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90OygmcXVvdDs8L3NwYW4+KQogICAgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5jb250PC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPnB1c2hsZXg8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O2xpc3QmcXVvdDs8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHByZXNzaW9uPC9zcGFuPiwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHBlY3Q8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90OykmcXVvdDs8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wb3BsZXg8L3NwYW4+KTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmlmPC9zcGFuPiAoPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnR5cGU8L3NwYW4+ID09IDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O29wZXJhdG9yJnF1b3Q7PC9zcGFuPikKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHByZXNzaW9uPC9zcGFuPik7CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj50eXBlPC9zcGFuPiA9PSA8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtbJnF1b3Q7PC9zcGFuPikKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wdXNobGV4PC9zcGFuPig8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtsaXN0JnF1b3Q7PC9zcGFuPiksIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29tbWFzZXA8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+ZXhwcmVzc2lvbjwvc3Bhbj4pLCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmV4cGVjdDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7XSZxdW90Ozwvc3Bhbj4pLCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPnBvcGxleDwvc3Bhbj4pOwogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5lbHNlPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+dHlwZTwvc3Bhbj4gPT0gPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7eyZxdW90Ozwvc3Bhbj4pCiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+cHVzaGxleDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7bGlzdCZxdW90Ozwvc3Bhbj4pLCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbW1hc2VwPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPm9ianByb3A8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHBlY3Q8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O30mcXVvdDs8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wb3BsZXg8L3NwYW4+KTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmlmPC9zcGFuPiAoPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnR5cGU8L3NwYW4+ID09IDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O2tleXdvcmQgYyZxdW90Ozwvc3Bhbj4pCiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+ZXhwcmVzc2lvbjwvc3Bhbj4pOwp9CiAKPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmJsb2NrPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPnR5cGU8L3NwYW4+KXsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+dHlwZTwvc3Bhbj4gPT0gPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7fSZxdW90Ozwvc3Bhbj4pIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oKTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wYXNzPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPnN0YXRlbWVudDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+YmxvY2s8L3NwYW4+KTsKfTwvcHJlPgoKICA8cD5UaGUgZnVuY3Rpb24gPGNvZGU+Y29udDwvY29kZT4gKGZvciBjb250aW51ZSksIHdpbGwgcHVzaCB0aGUgYWN0aW9ucyBpdCBpcyBnaXZlbgogIG9udG8gdGhlIHN0YWNrIChpbiByZXZlcnNlIG9yZGVyLCBzbyB0aGF0IHRoZSBmaXJzdCBvbmUgd2lsbCBiZSBwb3BwZWQKICBmaXJzdCkuIEFjdGlvbnMgc3VjaCBhcyA8Y29kZT5wdXNobGV4PC9jb2RlPiBhbmQgPGNvZGU+cG9wbGV4PC9jb2RlPiBtZXJlbHkgYWRqdXN0IHRoZQogIGxleGljYWwgZW52aXJvbm1lbnQsIHdoaWxlIG90aGVycywgc3VjaCBhcyA8Y29kZT5leHByZXNzaW9uPC9jb2RlPiBpdHNlbGYsIGRvCiAgYWN0dWFsIHBhcnNpbmcuIDxjb2RlPnBhc3M8L2NvZGU+LCBhcyBzZWVuIGluIDxjb2RlPmJsb2NrPC9jb2RlPiwgaXMgc2ltaWxhciB0byA8Y29kZT5jb250PC9jb2RlPiwgYnV0CiAgaXQgZG9lcyBub3QgJ2NvbnN1bWUnIHRoZSBjdXJyZW50IHRva2VuLCBzbyB0aGUgbmV4dCBhY3Rpb24gd2lsbCBhZ2FpbgogIHNlZSB0aGlzIHNhbWUgdG9rZW4uIEluIDxjb2RlPmJsb2NrPC9jb2RlPiwgdGhpcyBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uCiAgZGV0ZXJtaW5lcyB0aGF0IHdlIGFyZSBub3QgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2sgeWV0LCBzbyBpdCBwdXNoZXMKICB0aGUgPGNvZGU+c3RhdGVtZW50PC9jb2RlPiBmdW5jdGlvbiB3aGljaCB3aWxsIGludGVycHJldCB0aGUgY3VycmVudCB0b2tlbiBhcyB0aGUKICBzdGFydCBvZiBhIHN0YXRlbWVudC48L3A+CgogIDxwPlRoZXNlIGFjdGlvbnMgYXJlIGNhbGxlZCBieSBhICdkcml2ZXInIGZ1bmN0aW9uLCB3aGljaCBmaWx0ZXJzIG91dCB0aGUKICB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cywgc28gdGhhdCB0aGUgcGFyc2VyIGFjdGlvbnMgZG8gbm90IGhhdmUgdG8KICB0aGluayBhYm91dCB0aG9zZSwgYW5kIGtlZXBzIHRyYWNrIG9mIHNvbWUgdGhpbmdzIGxpa2UgdGhlIGluZGVudGF0aW9uCiAgb2YgdGhlIGN1cnJlbnQgbGluZSBhbmQgdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgY3VycmVudCB0b2tlbiBlbmRzLAogIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGxleGljYWwgY29udGV4dCBhbmQgdXNlZCBmb3IgaW5kZW50YXRpb24uCiAgQWZ0ZXIgY2FsbGluZyBhbiBhY3Rpb24sIGlmIHRoZSBhY3Rpb24gY2FsbGVkIDxjb2RlPmNvbnQ8L2NvZGU+LCB0aGlzIGRyaXZlcgogIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IHRva2VuLCBpZiA8Y29kZT5wYXNzPC9jb2RlPiAob3Igbm90aGluZykgd2FzCiAgY2FsbGVkLCBpdCB3aWxsIGltbWVkaWF0ZWx5IGNvbnRpbnVlIHdpdGggdGhlIG5leHQgYWN0aW9uLjwvcD4KCiAgPHA+VGhpcyBnb2VzIHRvIHNob3cgdGhhdCBpdCBpcyB2aWFibGUgdG8gd3JpdGUgYSBxdWl0ZSBlbGFib3JhdGUKICBtaW5pbGFuZ3VhZ2UgaW4gYSBtYWNyby1sZXNzIGxhbmd1YWdlIGxpa2UgSmF2YVNjcmlwdC4gSSBkb24ndCB0aGluawogIGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMgd2l0aG91dCBjbG9zdXJlcyAob3IKICBzaW1pbGFybHkgcG93ZXJmdWwgYWJzdHJhY3Rpb24pIHRob3VnaCwgSSd2ZSBjZXJ0YWlubHkgbmV2ZXIgc2VlbgogIGFueXRoaW5nIGxpa2UgaXQgaW4gSmF2YSBjb2RlLjwvcD4KCiAgPHA+VGhlIHdheSBhICdjb3B5JyBvZiB0aGUgcGFyc2VyIHdhcyBwcm9kdWNlZCBzaG93cyBhIG5pY2UgdXNhZ2UKICBvZiBjbG9zdXJlcy4gTGlrZSB3aXRoIHRoZSBET00gdHJhbnNmb3JtZXIgc2hvd24gYWJvdmUsIG1vc3Qgb2YKICB0aGUgbG9jYWwgc3RhdGUgb2YgdGhlIHBhcnNlciBpcyBoZWxkIGluIGEgY2xvc3VyZSBwcm9kdWNlZCBieQogIGNhbGxpbmcgPGNvZGU+cGFyc2Uoc3RyZWFtKTwvY29kZT4uIFRoZSBmdW5jdGlvbgogIDxjb2RlPmNvcHk8L2NvZGU+LCB3aGljaCBpcyBsb2NhbCB0byB0aGUgcGFyc2VyIGZ1bmN0aW9uLCBwcm9kdWNlcwogIGEgbmV3IGNsb3N1cmUsIHdpdGggY29waWVzIG9mIGFsbCB0aGUgcmVsZXZhbnQgdmFyaWFibGVzOjwvcD4KCiAgPHByZSBjbGFzcz0iY29kZSI+PHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvcHk8L3NwYW4+KCl7CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnZhcjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5fY29udGV4dDwvc3Bhbj4gPSA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnRleHQ8L3NwYW4+LCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPl9sZXhpY2FsPC9zcGFuPiA9IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+bGV4aWNhbDwvc3Bhbj4sCiAgICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+X2FjdGlvbnM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5jb3B5QXJyYXk8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+YWN0aW9uczwvc3Bhbj4pOwogCiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPl90b2tlbnM8L3NwYW4+KXsKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udGV4dDwvc3Bhbj4gPSA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+X2NvbnRleHQ8L3NwYW4+OwogICAgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5sZXhpY2FsPC9zcGFuPiA9IDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5fbGV4aWNhbDwvc3Bhbj47CiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmFjdGlvbnM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5jb3B5QXJyYXk8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5fYWN0aW9uczwvc3Bhbj4pOwogICAgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj50b2tlbnM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPl90b2tlbnM8L3NwYW4+OwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wYXJzZXI8L3NwYW4+OwogIH07Cn08L3ByZT4KCiAgPHA+V2hlcmUgPGNvZGU+cGFyc2VyPC9jb2RlPiBpcyB0aGUgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIDxjb2RlPm5leHQ8L2NvZGU+IChkcml2ZXIpCiAgZnVuY3Rpb24sIGFuZCBhIHJlZmVyZW5jZSB0byB0aGlzIDxjb2RlPmNvcHk8L2NvZGU+IGZ1bmN0aW9uLiBXaGVuIHRoZSBmdW5jdGlvbgogIHRoYXQgPGNvZGU+Y29weTwvY29kZT4gcHJvZHVjZXMgaXMgY2FsbGVkIHdpdGggYSB0b2tlbiBzdHJlYW0gYXMgYXJndW1lbnQsIGl0CiAgdXBkYXRlcyB0aGUgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBwYXJzZXIgY2xvc3VyZSwgYW5kIHJldHVybnMgdGhlCiAgY29ycmVzcG9uZGluZyBpdGVyYXRvciBvYmplY3QuPC9wPgoKICA8cD5Nb3Zpbmcgb24sIHdlIGdldCB0byB0aGUgbGFzdCBzdG9wIGluIHRoaXMgY2hhaW4gb2YgZ2VuZXJhdG9ycywgdGhlCiAgYWN0dWFsIGhpZ2hsaWdodGVyLiBZb3UgY2FuIHZpZXcgdGhpcyBvbmUgYXMgdGFraW5nIHR3byBzdHJlYW1zIGFzCiAgaW5wdXQsIG9uIHRoZSBvbmUgaGFuZCB0aGVyZSBpcyB0aGUgc3RyZWFtIG9mIHRva2VucyBmcm9tIHRoZSBwYXJzZXIsCiAgYW5kIG9uIHRoZSBvdGhlciBoYW5kIHRoZXJlIGlzIHRoZSBET00gdHJlZSBhcyBsZWZ0IGJ5IHRoZSBET00KICB0cmFuc2Zvcm1lci4gSWYgZXZlcnl0aGluZyB3ZW50IGNvcnJlY3RseSwgdGhlc2UgdHdvIHNob3VsZCBiZQogIHN5bmNocm9uaXplZC4gVGhlIGhpZ2hsaWdodGVyIGNhbiBsb29rIGF0IHRoZSBjdXJyZW50IHRva2VuLCBzZWUgaWYKICB0aGUgPGNvZGU+c3BhbjwvY29kZT4gaW4gdGhlIERPTSB0cmVlIGNvcnJlc3BvbmRzIHRvIGl0IChoYXMgdGhlIHNhbWUgdGV4dAogIGNvbnRlbnQsIGFuZCB0aGUgY29ycmVjdCBjbGFzcyksIGFuZCBpZiBub3QgaXQgY2FuIGNob3AgdXAgdGhlIERPTQogIG5vZGVzIHRvIGNvbmZvcm0gdG8gdGhlIHRva2Vucy48L3A+CgogIDxwPkV2ZXJ5IHRpbWUgdGhlIHBhcnNlciB5aWVsZHMgYSBuZXdsaW5lIHRva2VuLCB0aGUgaGlnaGxpZ2hlcgogIGVuY291bnRlcnMgYSA8Y29kZT5icjwvY29kZT4gZWxlbWVudCBpbiB0aGUgRE9NIHN0cmVhbS4gSXQgdGFrZXMgdGhlIGNvcHkgb2YgdGhlCiAgcGFyc2VyIGFuZCB0aGUgbGV4aWNhbCBjb250ZXh0IGZyb20gdGhpcyB0b2tlbiBhbmQgYXR0YWNoZXMgdGhlbSB0bwogIHRoZSBET00gbm9kZS4gVGhpcyB3YXksIGEgbmV3IGhpZ2hsaWdodGluZyBwcm9jZXNzIGNhbiBiZSBzdGFydGVkIGZyb20KICB0aGF0IG5vZGUgYnkgcmUtc3RhcnRpbmcgdGhlIGNvcHkgb2YgdGhlIHBhcnNlciB3aXRoIGEgbmV3IHRva2VuCiAgc3RyZWFtLCB3aGljaCByZWFkcyB0b2tlbnMgZnJvbSB0aGUgRE9NIG5vZGVzIHN0YXJ0aW5nIGF0IHRoYXQgPGNvZGU+YnI8L2NvZGU+CiAgZWxlbWVudCwgYW5kIHRoZSBpbmRlbnRhdGlvbiBjb2RlIGNhbiB1c2UgdGhlIGxleGljYWwgY29udGV4dAogIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBpbmRlbnRhdGlvbiBhdCB0aGF0IHBvaW50LjwvcD4KCiAgPGgyIGlkPSJzZWxlY3Rpb24iPlNlbGVjdGlvbiB3b2VzPC9oMj4KCiAgPHA+QWxsIHRoZSBhYm92ZSBjYW4gYmUgZG9uZSB1c2luZyB0aGUgRE9NIGludGVyZmFjZSB0aGF0IGFsbCBtYWpvcgogIGJyb3dzZXJzIGhhdmUgaW4gY29tbW9uLCBhbmQgd2hpY2ggaXMgcmVsYXRpdmVseSBmcmVlIG9mIHdlaXJkIGJ1Z3MKICBhbmQgYWJiZXJyYXRpb25zLiBIb3dldmVyLCB3aGVuIHRoZSB1c2VyIGlzIHR5cGluZyBpbiBuZXcgY29kZSwgdGhpcwogIG11c3QgYWxzbyBiZSBoaWdobGlnaHRlZC4gRm9yIHRoaXMgdG8gaGFwcGVuLCB0aGUgcHJvZ3JhbSBtdXN0IGtub3cKICB3aGVyZSB0aGUgY3Vyc29yIGN1cnJlbnRseSBpcywgYW5kIGJlY2F1c2UgaXQgbXVja3MgdXAgdGhlIERPTSB0cmVlLAogIGl0IGhhcyB0byByZXN0b3JlIHRoaXMgY3Vyc29yIHBvc2l0aW9uIGFmdGVyIGRvaW5nIHRoZSBoaWdobGlnaHRpbmcuPC9wPgoKICA8cD5SZS1oaWdobGlnaHRpbmcgYWx3YXlzIGhhcHBlbnMgcGVyIGxpbmUsIGJlY2F1c2UgdGhlIGNvcHkgb2YgdGhlCiAgcGFyc2VyIGlzIHN0b3JlZCBvbmx5IGF0IHRoZSBlbmQgb2YgbGluZXMuIERvaW5nIHRoaXMgZXZlcnkgdGltZSB0aGUKICB1c2VyIHByZXNzZXMgYSBrZXkgaXMgdGVycmlibHkgc2xvdyBhbmQgb2Jub3hpb3VzLCBzbyB3aGF0IEkgZGlkIHdhcwogIGtlZXAgYSBsaXN0IG9mICdkaXJ0eScgbm9kZXMsIGFuZCBhcyBzb29uIGFzIHRoZSB1c2VyIGRpZG4ndCB0eXBlCiAgYW55dGluZyBmb3IgMzAwIG1pbGxpc2Vjb25kcyB0aGUgcHJvZ3JhbSBzdGFydHMgcmUtaGlnaGxpZ2h0aW5nIHRoZXNlCiAgbm9kZXMuIElmIGl0IGZpbmRzIG1vcmUgdGhhbiB0ZW4gbGluZXMgbXVzdCBiZSByZS1wYXJzZWQsIGl0IGRvZXMgb25seQogIHRlbiBhbmQgd2FpdHMgYW5vdGhlciAzMDAgbWlsbGlzZWNvbmRzIGJlZm9yZSBpdCBjb250aW51ZXMsIHRoaXMgd2F5CiAgdGhlIGJyb3dzZXIgbmV2ZXIgZnJlZXplcyB1cCBlbnRpcmVseS48L3A+CgogIDxwPkFzIG1lbnRpb25lZCBlYXJsaWVyLCBJbnRlcm5ldCBFeHBsb3JlcidzIHNlbGVjdGlvbiBtb2RlbCBpcyBub3QgdGhlCiAgbW9zdCBwcmFjdGljYWwgb25lLiBNeSBhdHRlbXB0cyB0byBidWlsZCBhIHdyYXBwZXIgdGhhdCBtYWtlcyBpdCBsb29rCiAgbGlrZSB0aGUgVzNDIG1vZGVsIGFsbCBzdHJhbmRlZC4gSW4gdGhlIGVuZCBJIGNhbWUgdG8gdGhlIGNvbmNsdXNpb24KICB0aGF0IEkgb25seSBuZWVkZWQgdHdvIG9wZXJhdGlvbnM6PC9wPgoKICA8dWw+CiAgICA8bGk+Q3JlYXRpbmcgYSBzZWxlY3Rpb24gJ3NuYXBzaG90JyB0aGF0IGNhbiBiZSByZXN0b3JlZCBhZnRlcgogICAgaGlnaGxpZ2h0aW5nLCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgc3RpbGwgd29ya3MgaWYgc29tZSBvZiB0aGUgbm9kZXMKICAgIHRoYXQgd2VyZSBzZWxlY3RlZCBhcmUgcmVwbGFjZWQgYnkgb3RoZXIgbm9kZXMgd2l0aCB0aGUgc2FtZQogICAgc2l6ZSBidXQgYSBkaWZmZXJlbnQgc3RydWN0dXJlLjwvbGk+CiAgICA8bGk+RmluZGluZyB0aGUgdG9wLWxldmVsIG5vZGUgYXJvdW5kIG9yIGJlZm9yZSB0aGUgY3Vyc29yLCB0byBtYXJrIGl0CiAgICBkaXJ0eSBvciB0byBpbnNlcnQgaW5kZW50YXRpb24gd2hpdGVzcGFjZSBhdCB0aGUgc3RhcnQgb2YgdGhhdCBsaW5lLjwvbGk+CiAgPC91bD4KCiAgPHA+SXQgdHVybnMgb3V0IHRoYXQgdGhlIHBpeGVsLWJhc2VkIHNlbGVjdGlvbiBtb2RlbCB0aGF0IEludGVybmV0CiAgRXhwbG9yZXIgdXNlcywgd2hpY2ggYWx3YXlzIHNlZW1lZCBjb21wbGV0ZWx5IGx1ZHJpY3JvdXMgdG8gbWUsIGlzCiAgcGVyZmVjdCBmb3IgdGhlIGZpcnN0IGNhc2UuIFNpbmNlIHRoZSBET00gdHJhbnNmb3JtYXRpb24gKGdlbmVyYWxseSkKICBkb2VzIG5vdCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoaW5ncywgc3RvcmluZyB0aGUgcGl4ZWwgb2Zmc2V0cyBvZgogIHRoZSBzZWxlY3Rpb24gbWFrZXMgaXQgcG9zc2libGUgdG8gcmVzdG9yZSB0aGF0IHNhbWUgc2VsZWN0aW9uLCBuZXZlcgogIG1pbmQgd2hhdCBoYXBwZW5lZCB0byB0aGUgdW5kZXJseWluZyBET00gc3RydWN0dXJlLjwvcD4KCiAgPHA+W0xhdGVyIGFkZGl0aW9uOiBOb3RlIHRoYXQgdGhpcywgZHVlIHRvIHRoZSB2ZXJ5IHJhbmRvbSBkZXNpZ24KICBvZiB0aGUgPGEKICBocmVmPSJodHRwOi8vbXNkbjIubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM1ODcyKFZTLjg1KS5hc3B4IyI+VGV4dFJhbmdlCiAgaW50ZXJmYWNlPC9hPiwgb25seSByZWFsbHkgd29ya3Mgd2hlbiB0aGUgd2hvbGUgc2VsZWN0aW9uIGZhbGxzCiAgd2l0aGluIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIGRvY3VtZW50Ll08L3A+CgogIDxwPkRvaW5nIHRoZSBzYW1lIHdpdGggdGhlIFczQyBzZWxlY3Rpb24gbW9kZWwgaXMgYSBsb3QgaGFyZGVyLiBXaGF0IEkKICBlbmRlZCB1cCB3aXRoIHdhcyB0aGlzOjwvcD4KCiAgPHVsPgogICAgPGxpPkNyZWF0ZSBhbiBvYmplY3QgcG9pbnRpbmcgdG8gdGhlIG5vZGVzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZQogICAgc2VsZWN0aW9uLCBhbmQgdGhlIG9mZnNldCB3aXRoaW4gdGhvc2Ugbm9kZXMuIFRoaXMgaXMgYmFzaWNhbGx5IHRoZQogICAgaW5mb3JtYXRpb24gdGhhdCB0aGUgPGNvZGU+UmFuZ2U8L2NvZGU+IG9iamVjdCBnaXZlcyB5b3UuPC9saT4KICAgIDxsaT5NYWtlIHJlZmVyZW5jZXMgZnJvbSB0aGVzZSBub2RlcyBiYWNrIHRvIHRoYXQgb2JqZWN0LjwvbGk+CiAgICA8bGk+V2hlbiByZXBsYWNpbmcgKHBhcnQgb2YpIGEgbm9kZSB3aXRoIGFub3RoZXIgb25lLCBjaGVjayBmb3Igc3VjaCBhCiAgICByZWZlcmVuY2UsIGFuZCB3aGVuIGl0IGlzIHByZXNlbnQsIGNoZWNrIHdoZXRoZXIgdGhpcyBuZXcgbm9kZSB3aWxsCiAgICBnZXQgdGhlIHNlbGVjdGlvbi4gSWYgaXQgZG9lcywgbW92ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIG9sZCB0byB0aGUKICAgIG5ldyBub2RlLCBpZiBpdCBkb2VzIG5vdCwgYWRqdXN0IHRoZSBvZmZzZXQgaW4gdGhlIHNlbGVjdGlvbiBvYmplY3QgdG8KICAgIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBwYXJ0IG9mIHRoZSBvbGQgbm9kZSBoYXMgYmVlbiByZXBsYWNlZC48L2xpPgogIDwvdWw+CgogIDxwPk5vdyBpbiB0aGUgc2Vjb25kIGNhc2UgKGdldHRpbmcgdGhlIHRvcC1sZXZlbCBub2RlIGF0IHRoZQogIGN1cnNvcikgdGhlIEludGVybmV0IEV4cGxvcmVyIGNoZWF0IGRvZXMgbm90IHdvcmsuIEluIHRoZSBXM0MKICBtb2RlbCB0aGlzIGlzIHJhdGhlciBlYXN5LCB5b3UgaGF2ZSB0byBkbyBzb21lIGNyZWF0aXZlIHBhcmVudC0KICBhbmQgc2libGluZy1wb2ludGVyIGZvbGxvd2luZyB0byBhcnJpdmUgYXQgdGhlIGNvcnJlY3QgdG9wLWxldmVsCiAgbm9kZSwgYnV0IG5vdGhpbmcgd2VpcmQuIEluIEludGVybmV0IEV4cGxvcmVyLCBhbGwgd2UgaGF2ZSB0byBnbwogIG9uIGlzIHRoZSA8Y29kZT5wYXJlbnRFbGVtZW50PC9jb2RlPiBtZXRob2Qgb24gYQogIDxjb2RlPlRleHRSYW5nZTwvY29kZT4sIHdoaWNoIGdpdmVzIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQKICBjb21wbGV0ZWx5IGVudmVsb3BzIHRoZSBzZWxlY3Rpb24uIElmIHRoZSBjdXJzb3IgaXMgaW5zaWRlIGEgdGV4dAogIG5vZGUsIHRoaXMgaXMgZ29vZCwgdGhhdCB0ZXh0IG5vZGUgdGVsbHMgdXMgd2hlcmUgd2UgYXJlLiBJZiB0aGUKICBjdXJzb3IgaXMgYmV0d2VlbiBub2RlcywgZm9yIGV4YW1wbGUgYmV0d2VlbiB0d28gPGNvZGU+YnI8L2NvZGU+CiAgbm9kZXMsIHlvdSBnZXQgdG8gdG9wLWxldmVsIG5vZGUgaXRzZWxmIGJhY2ssIHdoaWNoIGlzIHJlbWFya2FibHkKICB1c2VsZXNzLiBJbiBjYXNlcyBsaWtlIHRoaXMgSSBzdG9vcCB0byBhIHJhdGhlciB1Z2x5IGhhY2sgKHdoaWNoCiAgZm9ydHVuYXRlbHkgdHVybmVkIG91dCB0byBiZSBhY2NlcHRhYmx5IGZhc3QpICYjeDIwMTU7IEkgY3JlYXRlIGEKICB0ZW1wb3JhcnkgZW1wdHkgPGNvZGU+c3BhbjwvY29kZT4gd2l0aCBhbiBJRCBpbnNpZGUgdGhlIHNlbGVjdGlvbiwKICBnZXQgYSByZWZlcmVuY2UgdG8gdGhpcyA8Y29kZT5zcGFuPC9jb2RlPiBieSBJRCwgdGFrZSBpdHMKICA8Y29kZT5wcmV2aW91c1NpYmxpbmc8L2NvZGU+LCBhbmQgcmVtb3ZlIGl0IGFnYWluLjwvcD4KCiAgPHA+VW5mb3J0dW5hdGVseSwgT3BlcmEncyBzZWxlY3Rpb24gaW1wbGVtZW50YXRpb24gaXMgYnVnZ3ksIGFuZCBpdAogIHdpbGwgZ2l2ZSB3aWxkbHkgaW5jb3JyZWN0IDxjb2RlPlJhbmdlPC9jb2RlPiBvYmplY3RzIHdoZW4gdGhlIGN1cnNvcgogIGlzIGJldHdlZW4gdHdvIG5vZGVzLiBUaGlzIGlzIGEgYml0IG9mIGEgc2hvd3N0b3BwZXIsIGFuZCB1bnRpbCBJIGZpbmQKICBhIHdvcmthcm91bmQgZm9yIHRoYXQgb3IgaXQgZ2V0cyBmaXhlZCwgdGhlIGhpZ2hsaWdodGVyIGRvZXNuJ3Qgd29yawogIHByb3Blcmx5IGluIE9wZXJhLjwvcD4KCiAgPHA+QWxzbywgd2hlbiBvbmUgcHJlc3NlcyBlbnRlciBpbiBhIDxjb2RlPmRlc2lnbk1vZGU8L2NvZGU+CiAgZG9jdW1lbnQgaW4gRmlyZWZveCBvciBPcGVyYSwgYSA8Y29kZT5icjwvY29kZT4gdGFnIGlzIGluc2VydGVkLgogIEluIEludGVybmV0IEV4cGxvcmVyLCBwcmVzc2luZyBlbnRlciBjYXVzZXMgc29tZSBtYW5pYWNhbCBnbm9tZSB0bwogIGNvbWUgb3V0IGFuZCBzdGFydCB3cmFwcGluZyBhbGwgdGhlIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciB0aGUKICBjdXJzb3IgaW4gPGNvZGU+cDwvY29kZT4gdGFncy4gSSBzdXBwb3NlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBiZQogIHNhaWQgZm9yIHRoYXQsIGluIHByaW5jaXBsZSwgdGhvdWdoIGlmIHlvdSBzYXcgdGhlIHRhZyBzb3VwIG9mCiAgPGNvZGU+Zm9udDwvY29kZT5zIGFuZCBuZXN0ZWQgcGFyYWdyYXBocyBJbnRlcm5ldCBFeHBsb3JlcgogIGdlbmVyYXRlcyB5b3Ugd291bGQgc29vbiBlbm91Z2ggZm9yZ2V0IGFsbCBhYm91dCBwcmluY2lwbGUuCiAgQW55d2F5LCBnZXR0aW5nIHVud2FudGVkIDxjb2RlPnA8L2NvZGU+IHRhZ3Mgc2xvd2VkIHRoZQogIGhpZ2hsaWdodGVyIGRvd24gdGVycmlibHkgJiN4MjAxNTsgaXQgaGFkIHRvIG92ZXJoYXVsIHRoZSB3aG9sZQogIERPTSB0cmVlIHRvIHJlbW92ZSB0aGVtIGFnYWluLCBldmVyeSB0aW1lIHRoZSB1c2VyIHByZXNzZWQgZW50ZXIuCiAgRm9ydHVuYXRlbHkgSSBjb3VsZCBmaXggdGhpcyBieSBjYXB0dXJpbmcgdGhlIGVudGVyIHByZXNzZXMgYW5kCiAgbWFudWFsbHkgaW5zZXJ0aW5nIGEgPGNvZGU+YnI8L2NvZGU+IHRhZyBhdCB0aGUgY3Vyc29yLjwvcD4KCiAgPHA+T24gdGhlIHN1YmplY3Qgb2YgSW50ZXJuZXQgRXhwbG9yZXIncyB0YWcgc291cCwgaGVyZSBpcyBhbiBpbnRlcmVzdGluZwogIGFuZWNkb3RlOiBPbmUgdGltZSwgd2hlbiB0ZXN0aW5nIHRoZSBlZmZlY3QgdGhhdCBtb2RpZnlpbmcgdGhlIGNvbnRlbnQKICBvZiBhIHNlbGVjdGlvbiBoYWQsIEkgaW5zcGVjdGVkIHRoZSBET00gdHJlZSBhbmQgZm91bmQgYSA8Y29kZT4iL0IiPC9jb2RlPgogIGVsZW1lbnQuIFRoaXMgd2FzIG5vdCBhIGNsb3NpbmcgdGFnLCB0aGVyZSBhcmUgbm8gY2xvc2luZyB0YWdzIGluIHRoZQogIERPTSB0cmVlLCBqdXN0IGVsZW1lbnRzLiBUaGUgPGNvZGU+bm9kZU5hbWU8L2NvZGU+IG9mIHRoaXMgZWxlbWVudCB3YXMgYWN0dWFsbHkKICA8Y29kZT4iL0IiPC9jb2RlPi4gVGhhdCB3YXMgd2hlbiBJIGdhdmUgdXAgYW55IG5vdGlvbnMgb2YgZXZlciB1bmRlcnN0YW5kaW5nIHRoZQogIHByb2ZvdW5kIG15c3RlcnkgdGhhdCBpcyBJbnRlcm5ldCBFeHBsb3Jlci48L3A+CgogIDxoMiBpZD0iY2xvc2luZyI+Q2xvc2luZyB0aG91Z2h0czwvaDI+CgogIDxwPldlbGwsIEkgZGVzcGFpcmVkIGF0IHRpbWVzLCBidXQgSSBkaWQgZW5kIHVwIHdpdGggYSB3b3JraW5nIEphdmFTY3JpcHQKICBlZGl0b3IuIEkgZGlkIG5vdCBrZWVwIHRyYWNrIG9mIHRoZSBhbW91bnQgb2YgdGltZSBJIHdhc3RlZCBvbiB0aGlzLAogIGJ1dCBJIHdvdWxkIGVzdGltYXRlIGl0IHRvIGJlIGFyb3VuZCBmaWZ0eSBob3Vycy4gRmluZGluZyB3b3JrYXJvdW5kcwogIGZvciBicm93c2VyIGJ1Z3MgY2FuIGJlIGEgdGVycmlibHkgbm9ubGluZWFyIHByb2Nlc3MuIEkganVzdCBzcGVudAogIGhhbGYgYSBkYXkgd29ya2luZyBvbiBhIHdlaXJkIGdsaXRjaCBpbiBGaXJlZm94IHRoYXQgY2F1c2VkIHRoZSBjdXJzb3IKICBpbiB0aGUgZWRpdGFibGUgZnJhbWUgdG8gYmUgZGlzcGxheWVkIDMvNCBsaW5lIHRvbyBoaWdoIHdoZW4gaXQgd2FzIGF0CiAgdGhlIHZlcnkgZW5kIG9mIHRoZSBkb2N1bWVudC4gVGhlbiBJIGZvdW5kIG91dCB0aGF0IHNldHRpbmcgdGhlCiAgc3R5bGUuZGlzcGxheSBvZiB0aGUgaWZyYW1lIHRvICJibG9jayIgZml4ZWQgdGhpcyAod2h5IG5vdD8pLiBJJ20KICBhbWF6ZWQgaG93IG9mdGVuIGlzc3VlcyB0aGF0IHNlZW0gaG9wZWxlc3MgZG8gdHVybiBvdXQgdG8gYmUKICBhdm9pZGFibGUsIGV2ZW4gaWYgaXQgdGFrZXMgaG91cnMgb2Ygc2NyZXdpbmcgYXJvdW5kIGFuZCBzb21lIHRydWx5CiAgbm9uLW9idmlvdXMgaWRlYXMuPC9wPgoKICA8cD5Gb3IgYSBsb3Qgb2YgdGhpbmdzLCBKYXZhU2NyaXB0ICsgRE9NIGVsZW1lbnRzIGFyZSBhIHN1cnByaXNpbmdseQogIHBvd2VyZnVsIHBsYXRmb3JtLiBTaW1wbGUgaW50ZXJhY3RpdmUgZG9jdW1lbnRzIGFuZCBmb3JtcyBjYW4gYmUKICB3cml0dGVuIGluIGJyb3dzZXJzIHdpdGggdmVyeSBsaXR0bGUgZWZmb3J0LCBnZW5lcmFsbHkgbGVzcyB0aGFuIHdpdGgKICBtb3N0ICd0cmFkaXRpb25hbCcgcGxhdGZvcm1zIChKYXZhLCBXaW4zMiwgdGhpbmdzIGxpa2UgV3hXaWRnZXRzKS4KICBMaWJyYXJpZXMgbGlrZSBEb2pvIChhbmQgYSBzaW1pbGFyIG1vbnN0ZXIgSSBvbmNlIHdyb3RlIG15c2VsZikgZXZlbgogIG1ha2UgY29tcGxleCwgY29tcG9zaXRlIHdpZGdldHMgd29ya2FibGUuIEhvd2V2ZXIsIHdoZW4gYXBwbGljYXRpb25zCiAgZ28gc3VmZmljaWVudGx5IGJleW9uZCB0aGUgdGhpbmdzIHRoYXQgYnJvd3NlcnMgd2VyZSBkZXNpZ25lZCBmb3IsIHRoZQogIGF2YWlsYWJsZSBBUElzIGRvIG5vdCBnaXZlIGVub3VnaCBjb250cm9sLCBhcmUgbm9uc3RhbmRhcmQgYW5kIGJ1Z2d5LAogIGFuZCBhcmUgb2Z0ZW4gcG9vcmx5IGRlc2lnbmVkLiBCZWNhdXNlIG9mIHRoaXMsIHdyaXRpbmcgc3VjaAogIGFwcGxpY2F0aW9ucywgd2hlbiBpdCBpcyBldmVuIHBvc3NpYmxlLCBpcyA8ZW0+cGFpbmZ1bDwvZW0+IHByb2Nlc3MuPC9wPgoKICA8cD5BbmQgd2hvIGxpa2VzIHBhaW4/IFN1cmUsIHdoZW4gZmluZGluZyB0aGF0IGNyYXp5IHdvcmthcm91bmQsCiAgc3ViZHVlaW5nIHRoZSBkYW1uIGJyb3dzZXIsIGFuZCBnZXR0aW5nIGV2ZXJ5dGhpbmcgdG8gd29yaywgdGhlcmUKICBpcyBhIGNlcnRhaW4gbWFjaG8gdGhyaWxsLiBCdXQgb25lIGNhbid0IGhlbHAgd29uZGVyaW5nIGhvdyBtdWNoCiAgZWFzaWVyIHRoaW5ncyBsaWtlIHByZXZlbnRpbmcgdGhlIHVzZXIgZnJvbSBwYXN0aW5nIHBpY3R1cmVzIGluCiAgaGlzIHNvdXJjZSBjb2RlIHdvdWxkIGJlIG9uIGFub3RoZXIgcGxhdGZvcm0uIE1heWJlIHNvbWV0aGluZyBsaWtlCiAgU2lsdmVybGlnaHQgb3Igd2hhdGV2ZXIgb3RoZXIgbmV3IGJyb3dzZXIgcGx1Z2luIGdpem1vcyBwZW9wbGUgYXJlCiAgcHVzaGluZyB0aGVzZSBkYXlzIHdpbGwgYmVjb21lIHRoZSB3YXkgdG8gc29sdmUgdGhpbmdzIGxpa2UgdGhpcwogIGluIHRoZSBmdXR1cmUuIEJ1dCwgcGVyc29uYWxseSwgSSB3b3VsZCBwcmVmZXIgZm9yIHRob3NlIGJyb3dzZXIKICBjb21wYW5pZXMgdG8gcHV0IHNvbWUgcmVhbCBlZmZvcnQgaW50byB0aGluZ3MgbGlrZSBjbGVhbmluZyB1cCBhbmQKICBzdGFuZGFyZGlzaW5nIHNoYWR5IHRoaW5ncyBsaWtlIDxjb2RlPmRlc2lnbk1vZGU8L2NvZGU+LCBmaXhpbmcKICB0aGVpciBidWdzLCBhbmQgZ2V0dGluZyBzZXJpb3VzIGFib3V0IEVDTUFTY3JpcHQgNC48L3A+CgogIDxwPldoaWNoIGlzIHByb2JhYmx5IG5vdCByZWFsaXN0aWNhbGx5IGdvaW5nIHRvIGhhcHBlbiBhbnl0aW1lIHNvb24uPC9wPgoKICA8aHIvPgoKICA8cD5Tb21lIGludGVyZXN0aW5nIHByb2plY3RzIHNpbWlsYXIgdG8gdGhpczo8L3A+CgogIDx1bD4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LnltYWNzLm9yZyI+WW1hY3M8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vZ3BsLmludGVybmV0Y29ubmVjdGlvbi5uZXQvdmkvIj52aSBjbG9uZTwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9yb2Jyb2hhbi5jb20vcHJvamVjdHMvOW5lLyI+RW1hY3MgY2xvbmU8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vY29kZXByZXNzLnNvdXJjZWZvcmdlLm5ldC8iPkNvZGVQcmVzczwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29kZWlkZS5jb20iPkNvZGVJREU8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmNkb2xpdmV0Lm5ldC9lZGl0YXJlYSI+RWRpdEFyZWE8L2E+PC9saT4KICA8L3VsPgoKICA8aHIvPgoKICA8cD5JZiB5b3UgaGF2ZSBhbnkgcmVtYXJrcywgY3JpdGljaXNtLCBvciBoaW50cyByZWxhdGVkIHRvIHRoZQogIGFib3ZlLCBkcm9wIG1lIGFuIGUtbWFpbCBhdCA8YQogIGhyZWY9Im1haWx0bzptYXJpam5oQGdtYWlsLmNvbSI+bWFyaWpuaEBnbWFpbC5jb208L2E+LiBJZiB5b3Ugc2F5CiAgc29tZXRoaW5nIGdlbmVyYWxseSBpbnRlcmVzdGluZywgSSdsbCBpbmNsdWRlIHlvdXIgcmVhY3Rpb24gaGVyZQogIGF0IHRoZSBib3R0b20gb2YgdGhpcyBwYWdlLjwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InJpZ2h0c21hbGwgYmxrIj4KCiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogODAlIj4KICAgIDxiPlRvcGljPC9iPjogSmF2YVNjcmlwdCwgYWR2YW5jZWQgYnJvd3NlciB3ZWlyZG5lc3MsIGNvb2wgcHJvZ3JhbW1pbmcgdGVjaG5pcXVlczxici8+CiAgICA8Yj5BdWRpZW5jZTwvYj46IFByb2dyYW1tZXJzLCBlc3BlY2lhbGx5IEphdmFTY3JpcHQgcHJvZ3JhbW1lcnM8YnIvPgogICAgPGI+QXV0aG9yPC9iPjogTWFyaWpuIEhhdmVyYmVrZTxici8+CiAgICA8Yj5EYXRlPC9iPjogTWF5IDI0dGggMjAwNwogIDwvcD4KCiAgPGgyPkNvbnRlbnRzPC9oMj4KCiAgPHVsPgogICAgPGxpPjxhIGhyZWY9IiNpbmRlbnQiPk9ubHkgSW5kZW50YXRpb248L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjZGVzaWdubW9kZSI+PGNvZGU+ZGVzaWduTW9kZTwvY29kZT48L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjcGFyc2VyIj5BIFBhcnNlcjwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNkb20iPkRPTSBOb2RlczwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNzZWxlY3Rpb24iPlNlbGVjdGlvbiBXb2VzPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2Nsb3NpbmciPkNsb3NpbmcgVGhvdWdodHM8L2E+PC9saT4KICA8L3VsPgoKICA8aDI+U2l0ZTwvaDI+CgogIDx1bD4KICAgIDxsaT48YSBocmVmPSJpbmRleC5odG1sIj5Gcm9udCBQYWdlPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0ibWFudWFsLmh0bWwiPlVzZXIgTWFudWFsPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iZmFxLmh0bWwiPkZBUTwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9jb2RlbWlycm9yIj5Hb29nbGUgR3JvdXA8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJjb21wcmVzcy5odG1sIj5Db21wcmVzc2lvbiBIZWxwZXI8L2E+PC9saT4KICA8L3VsPgoKPC9kaXY+PC9kaXY+Cgo8ZGl2IHN0eWxlPSJoZWlnaHQ6IDJlbSI+Jm5ic3A7PC9kaXY+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/unittests.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjwhLS0KICBUZXN0IEhhcm5lc3MgZm9yIENvZGVNaXJyb3IKICBUaGlzIEhUTUwgZmlsZSBwcm92aWRlcyBhIG1pbmltYWwgZW52aXJvbm1lbnQgd2l0aGluIHdoaWNoIG9uZSBjYW4gZXhlY3V0ZQogIEpTVW5pdC1zdHlsZSB0ZXN0cy4KLS0+Cgo8aHRtbD4KICA8aGVhZD4KICAgIDx0aXRsZT5UZXN0IEhhcm5lc3MgZm9yIENvZGVNaXJyb3I8L3RpdGxlPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InVuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAvLyBDb3VudGVycyBmb3IgdW5pdCB0ZXN0IHJlc3VsdHMuCiAgICAgIHZhciB0ZXN0X2dvb2QgPSAwOwogICAgICB2YXIgdGVzdF9iYWQgPSAwOwoKICAgICAgLy8gSWYgZXhwZWN0ZWQgYW5kIGFjdHVhbCBhcmUgdGhlIGlkZW50aWNhbCwgcHJpbnQgJ09rJywgb3RoZXJ3aXNlICdGYWlsIScKICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKG1zZywgZXhwZWN0ZWQsIGFjdHVhbCkgewogICAgICAgIGlmICh0eXBlb2YgYWN0dWFsID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAvLyBtc2cgaXMgb3B0aW9uYWwuCiAgICAgICAgICBhY3R1YWwgPSBleHBlY3RlZDsKICAgICAgICAgIGV4cGVjdGVkID0gbXNnOwogICAgICAgICAgbXNnID0gJ0V4cGVjdGVkOiBcJycgKyBleHBlY3RlZCArICdcJyBBY3R1YWw6IFwnJyArIGFjdHVhbCArICdcJyc7CiAgICAgICAgfQogICAgICAgIHZhciBodG1sOwogICAgICAgIGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKSB7CiAgICAgICAgICBodG1sID0gJzxGT05UIENPTE9SPSIjMDA5OTAwIj5PazwvRk9OVD4nOwogICAgICAgICAgdGVzdF9nb29kKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGh0bWwgPSAnPEZPTlQgQ09MT1I9IiM5OTAwMDAiPjxCSUc+RmFpbCE8L0JJRz48L0ZPTlQ+PEJSPic7CiAgICAgICAgICBtc2cgKz0gJyBFeHBlY3RlZDogXCcnICsgZXhwZWN0ZWQgKyAnXCcgQWN0dWFsOiBcJycgKyBhY3R1YWwgKyAnXCcnOwogICAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTsKICAgICAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9cclxuL2csICcmcGFyYTsnKTsKICAgICAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9cbi9nLCAnJnBhcmE7Jyk7CiAgICAgICAgICBtc2cgPSBtc2cucmVwbGFjZSgvXHIvZywgJyZwYXJhOycpOwogICAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UoL1x1MDBBMC9nLCAnJm1pZGRvdDsnKTsKICAgICAgICAgIGh0bWwgKz0gJzxjb2RlPicgKyBtc2cgKyAnPC9jb2RlPic7CiAgICAgICAgICB0ZXN0X2JhZCsrOwogICAgICAgIH0KICAgICAgICBwcmludERpdihodG1sKTsKICAgICAgfQoKICAgICAgLy8gSWYgZXhwZWN0ZWQgYW5kIGFjdHVhbCBhcmUgdGhlIGVxdWl2YWxlbnQsIHBhc3MgdGhlIHRlc3QuCiAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWl2YWxlbnQobXNnLCBleHBlY3RlZCwgYWN0dWFsKSB7CiAgICAgICAgaWYgKHR5cGVvZiBhY3R1YWwgPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIC8vIG1zZyBpcyBvcHRpb25hbC4KICAgICAgICAgIGFjdHVhbCA9IGV4cGVjdGVkOwogICAgICAgICAgZXhwZWN0ZWQgPSBtc2c7CiAgICAgICAgICBtc2cgPSAnRXhwZWN0ZWQ6IFwnJyArIGV4cGVjdGVkICsgJ1wnIEFjdHVhbDogXCcnICsgYWN0dWFsICsgJ1wnJzsKICAgICAgICB9CiAgICAgICAgaWYgKF9lcXVpdmFsZW50KGV4cGVjdGVkLCBhY3R1YWwpKSB7CiAgICAgICAgICBhc3NlcnRFcXVhbHMobXNnLCBTdHJpbmcudG9TdHJpbmcoZXhwZWN0ZWQpLCBTdHJpbmcudG9TdHJpbmcoYWN0dWFsKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFzc2VydEVxdWFscyhtc2csIGV4cGVjdGVkLCBhY3R1YWwpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gQXJlIGEgYW5kIGIgdGhlIGVxdWl2YWxlbnQ/IC0tIFJlY3Vyc2l2ZS4KICAgICAgZnVuY3Rpb24gX2VxdWl2YWxlbnQoYSwgYikgewogICAgICAgIGlmIChhID09IGIpIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIGIgPT0gJ29iamVjdCcgJiYgYSAhPT0gbnVsbCAmJiBiICE9PSBudWxsKSB7CiAgICAgICAgICBpZiAoYS50b1N0cmluZygpICE9IGIudG9TdHJpbmcoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciBwIGluIGEpIHsKICAgICAgICAgICAgaWYgKCFfZXF1aXZhbGVudChhW3BdLCBiW3BdKSkgewogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZm9yICh2YXIgcCBpbiBiKSB7CiAgICAgICAgICAgIGlmICghX2VxdWl2YWxlbnQoYVtwXSwgYltwXSkpIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgdGVzdHMubGVuZ3RoOyB4KyspIHsKICAgICAgICAgIHByaW50RGl2KCc8SDM+JyArIHRlc3RzW3hdICsgJzo8L0gzPicpOwogICAgICAgICAgZXZhbCh0ZXN0c1t4XSArICcoKScpOwogICAgICAgIH0KICAgICAgfQogICAgICBmdW5jdGlvbiBpbml0VGVzdHMoKSB7CiAgICAgICAgdmFyIHN0YXJ0VGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICB2YXIgZW5kVGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgICAgdmFyIGh0bWwgPSAnPEgzPkRvbmUuPC9IMz4nOwogICAgICAgIGh0bWwgKz0gJzxQPlRlc3RzIHBhc3NlZDogJyArIHRlc3RfZ29vZCArICc8QlI+VGVzdHMgZmFpbGVkOiAnICsgdGVzdF9iYWQgKyAnPC9QPic7CiAgICAgICAgaHRtbCArPSAnPFA+VG90YWwgdGltZTogJyArIChlbmRUaW1lIC0gc3RhcnRUaW1lKSArICcgbXM8L1A+JzsKICAgICAgICBwcmludERpdihodG1sKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcHJpbnREaXYoaHRtbCkgewogICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdG91dHB1dCcpLmFwcGVuZENoaWxkKGRpdik7CiAgICAgIH0KICAgIDwvc2NyaXB0PgogIDwvaGVhZD4KCiAgPGJvZHkgb25sb2FkPSJpbml0VGVzdHMoKSI+CiAgICA8aDE+VGVzdCBIYXJuZXNzIGZvciBDb2RlTWlycm9yPC9oMT4KICAgIDxkaXYgaWQ9InRlc3RvdXRwdXQiPjwvZGl2PgogICAgPGhyPgogICAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KICAgIDx0ZXh0YXJlYSBpZD0iaW5wdXRmaWVsZCI+PC90ZXh0YXJlYT4KICAgIDwvZGl2PgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29kZW1pcnJvci5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICB2YXIgZWRpdG9yID0gbmV3IENvZGVNaXJyb3IoQ29kZU1pcnJvci5yZXBsYWNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dGZpZWxkJykpLCB7CiAgICAgICAgICBwYXJzZXJmaWxlOiBbInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiXSwKICAgICAgICAgIHBhdGg6ICJqcy8iCiAgICAgIH0pOwogICAgPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/unittests.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRlc3QgSGFybmVzcyBmb3IgQ29kZU1pcnJvcgogKiBKUy11bml0IGNvbXBhdGlibGUgdGVzdHMgaGVyZS4gIFRoZSB0d28gYXZhaWxhYmxlIGFzc2VydGlvbnMgYXJlCiAqIGFzc2VydEVxdWFscyAoc3RyaWN0IGVxdWFsaXR5KSBhbmQgYXNzZXJ0RXF1aXZhbGVudCAobG9vc2VyIGVxdWl2YWxlbmN5KS4KICoKICogJ2VkaXRvcicgaXMgYSBnbG9iYWwgb2JqZWN0IGZvciB0aGUgQ29kZU1pcnJvciBlZGl0b3Igc2hhcmVkIGJldHdlZW4gYWxsCiAqIHRlc3RzLiAgQWZ0ZXIgbWFuaXB1bGF0aW5nIGl0IGluIGVhY2ggdGVzdCwgdHJ5IHRvIHJlc3RvcmUgaXQgdG8KICogYXBwcm94aW1hdGVseSBpdHMgb3JpZ2luYWwgc3RhdGUuCiAqLwoKZnVuY3Rpb24gdGVzdFNldEdldCgpIHsKICB2YXIgY29kZSA9ICdJdCB3YXMgdGhlIGJlc3Qgb2YgdGltZXMuXG5JdCB3YXMgdGhlIHdvcnN0IG9mIHRpbWVzLic7CiAgZWRpdG9yLnNldENvZGUoY29kZSk7CiAgYXNzZXJ0RXF1YWxzKGNvZGUsIGVkaXRvci5nZXRDb2RlKCkpOwogIGVkaXRvci5zZXRDb2RlKCcnKTsKICBhc3NlcnRFcXVhbHMoJycsIGVkaXRvci5nZXRDb2RlKCkpOwp9CgpmdW5jdGlvbiB0ZXN0U2V0U3R5bGVzaGVldCgpIHsKICBmdW5jdGlvbiBjc3NTdGF0dXMoKSB7CiAgICAvLyBSZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMsIGZvciBlYWNoIENTUyBsaW5rIHJldHVybiB0aGUgZmlsZW5hbWUgYW5kCiAgICAvLyB3aGV0aGVyIGl0IGlzIGVuYWJsZWQuCiAgICBsaW5rcyA9IGVkaXRvci53aW4uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKTsKICAgIGNzcyA9IFtdOwogICAgZm9yICh2YXIgeCA9IDAsIGxpbms7IGxpbmsgPSBsaW5rc1t4XTsgeCsrKSB7CiAgICAgIGlmIChsaW5rLnJlbC5pbmRleE9mKCJzdHlsZXNoZWV0IikgIT09IC0xKSB7CiAgICAgICAgY3NzLnB1c2goW2xpbmsuaHJlZi5zdWJzdHJpbmcobGluay5ocmVmLmxhc3RJbmRleE9mKCcvJykgKyAxKSwKICAgICAgICAgICAgICAgICAhbGluay5kaXNhYmxlZF0pCiAgICAgIH0KICAgIH0KICAgIHJldHVybiBjc3M7CiAgfQogIGFzc2VydEVxdWl2YWxlbnQoW10sIGNzc1N0YXR1cygpKTsKICBlZGl0b3Iuc2V0U3R5bGVzaGVldCgnY3NzL2pzY29sb3JzLmNzcycpOwogIGFzc2VydEVxdWl2YWxlbnQoW1snanNjb2xvcnMuY3NzJywgdHJ1ZV1dLCBjc3NTdGF0dXMoKSk7CiAgZWRpdG9yLnNldFN0eWxlc2hlZXQoWydjc3MvY3NzY29sb3JzLmNzcycsICdjc3MveG1sY29sb3JzLmNzcyddKTsKICBhc3NlcnRFcXVpdmFsZW50KFtbJ2pzY29sb3JzLmNzcycsIGZhbHNlXSwgWydjc3Njb2xvcnMuY3NzJywgdHJ1ZV0sIFsneG1sY29sb3JzLmNzcycsIHRydWVdXSwgY3NzU3RhdHVzKCkpOwogIGVkaXRvci5zZXRTdHlsZXNoZWV0KFtdKTsKICBhc3NlcnRFcXVpdmFsZW50KFtbJ2pzY29sb3JzLmNzcycsIGZhbHNlXSwgWydjc3Njb2xvcnMuY3NzJywgZmFsc2VdLCBbJ3htbGNvbG9ycy5jc3MnLCBmYWxzZV1dLCBjc3NTdGF0dXMoKSk7Cn0KCi8vIFVwZGF0ZSB0aGlzIGxpc3Qgb2YgdGVzdHMgYXMgbmV3IG9uZXMgYXJlIGFkZGVkLgp2YXIgdGVzdHMgPSBbJ3Rlc3RTZXRHZXQnLCAndGVzdFNldFN0eWxlc2hlZXQnXTsKCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/webalizer/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXV0aFVzZXJGaWxlIC9ob21lL21hcmlqbi9lanMvd3d3L3dlYmFsaXplci8uaHRwYXNzd2QKQXV0aEdyb3VwRmlsZSAvZGV2L251bGwKQXV0aE5hbWUgIkVKUyBXZWJhbGl6ZXIgQWNjZXNzIgpBdXRoVHlwZSBCYXNpYwoKI3JlcXVpcmUgdXNlciBtYXJpam4KcmVxdWlyZSB2YWxpZC11c2VyCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/.htpasswd</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bWFyaWpuOm0kcnlnS2IxY0xjVVEK]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/ctry_usage_201008.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAgAAAAEsBAMAAABH0BYZAAAAKlBMVEXAwMCAgIAAAAD///8AgFz/gAAAAP//AAAAwP///wCAAICA/8D/AP//xIChvTiNAAAVR0lEQVR4nO2du27cutbH+cm32HGKs88L8KPj3AMknhcIjHmAwMD0hgvVgZtpA1dTBu7cBS6n2nDrZsO1iw33fpez1iIpURIp8aK5ONY/8VDiReL6cXFphjOjYeKZix2MnrX+euYAvh49cwD/feYe8PUrAvjCnq3+7z8DgAHAAGAA0Aog9y/MT9N7tGRVAeQ2a8us7dNGQaX+9qm5u93AoUrznMrgaM0qS1cqgIqq5c2D5aoWgsrRXaznW66aANT45Kenanzy/BT7zKSBVEZVtimhAc1lTSwv92AD223n2zKhBqwAALlrCUDamuthMjOlgUUVNQXMmtW94ijFmKvTwN42VmWYrFgWD8BRln3OXQCoShMAzurTIhDkuQlAtiVto/tLAKdrCEBRyIsBswLQA9oGQE8BaT55vCqgxms8BQwjmQ4MsG9OgVyR6AaQG2HPxLiWAIoIV8RCxqTxsusYD8sq6Mq58hUNoOo5rGhAiZzx6ij6YCuW64mQcnpjP/YMazDKbXI+E8xz916Q1mCU2zS8FhgADABKABurXqBbor5YAaz6LYol6sgKgC/R91asAYBKBwADgAHAAGAAMAAYAMidAQBfVXeWrwGASgcAA4ABwABgADAAGADInQEAX1V3lq8BgEoHAE8VwOa3cnvcXrUoHn/bLHYWB6CPY7Ro85s0ffO4ZDDGc26Ov2nrqkA2jzmVjdnx8ZjrRr0DyPRbLnoj4Vht2jwG01GCqQ0FYCzGcoPppGiBZZvHr7+Nj4GFatQvgMxiry2vByGAMQ4ojimN6+ZYAuDZa9r7tikTLEONBZSNXx8zkcGDdo8+AWQuS50FCSIAMNg4BY4FjasopwCcEB1BcDXm2AJKMwCAOICFdo/eALQ7O86H8GO2iQDwMScAOPq0Rz2hKYD+AMkYE0bnxtLx8WvAAdGgbwA+5vWLoAbgWAgNgEnLhUoEz6S3Q9gjX4F/r9FzZOV+AHia1ieBCgBw881vCsCYZjrtycS4XoyFbPf6da9B0H9o+4wFYxrj1xQBjznsqSC4OcbLHe1RQmWyBU4IbHf8GlqqTvcAIAuoHVK361Dg2/APg0smKM6qKITjofYoKWIwVMcJAf8ZtpWHSQZAxwuqHlB7CUoFgCBDAPTqBH0oDYAaT9/qlUZroiQAejA9qzfarYNSABR2hM0BtlYEUgAUtYIBrBGBBADG1d+rfkXhzBakeADmsx+f+i3NV6loAMIcw5jxXBMCsQCyyrBHOfR6EIgEgEHMrNTZwKaoRgmaFBvft4qdOAAUxM1h72rgPkq/mkzcZVsnHM2GKicnE771XebGAeDGIykuqPdOYOvk8HtLIdsCw6HK5OQEUpkbBUDNXsPqyKta3xdDsEpsgYPDKE9giDGBve9ytCeCfUcAWyfZ4UkxIWIA6OiVPAd6D4Q4rBMxoVEG6zNIcE+O9oSzDAFMTpAF7qIiAJR2G9VaW7SoXwJgHVoOAywg4ZMJTHbYKwDA3xYB4QkAjImbPgd6vhSgbRMhDqUjHJ4cmgBwIlAMONk6nFBIRIUD4NbtaAC9BkICwCc0E6TlkKAjyEIJADIPD+ODYMVny3rx4azXQAi2bk1ODiUANQU4xTwsZBMKi+LkELJj1wQrAIzOtzTpUHzLpjIhcBVQ0AIgLgFiwtRo97ImmFX7yy1bwZ2ObumpyaQl1AYCAG6V/maWrWA5z9aTWtfgAgFggYmzFwArXR0JAyCtNEu5ZStYq1wdCQMg8+0rAa42Pkppm6ggANpas5jXC2O0QhcIAqCzrS8CkoxwnHAJCgFgdfd+5sDqXCAEQJlrdQF7I08lNU5RAADHq9/MVh6slblAAAAz07x06800G6yn9JdxdxvjPi95vVim+el2UeQPIHPt8cZGjDzw1W5oQ4/qxmxs+6wwMi/6sX3G9e2v9D2NBB7l7CznurY3gPrTtXI3a2bFqLP19tmbU2NX2llkCmQg+8PLFlArf3OGZnPVCBvkZ2dc1/YHUHtBYXGBtDnQ2Rq6LPLKTfwoc/uMMuk2VbKscAsyPH+Tn3HlHttkuMjenBXTwxsAr69elXWyWhopy0krwjHLRU5jLsC16SUO2CrgH02BM8EyKJOjjC1g2AmAYMo9sBbCwRzlE74AskYPLa+DukxoVxc/GOrTnGdv8vwMrODlFIBMTgAwTJwRAGmvBsBNANAAHCEKQC0M8MZWs1mIugEAAo4DjWNeAKBMaRpaZwLA4IcATuWYM7rrH5Rtv8FU9tYXAOVUCTRdoNksSB3NCwDbp2h+Tm5eAZCT5QYAHQSZGQSh3ps3oUEwqyRKZVDgtuJgdTUH/0Y7YNbjFNimQaUYwOnWfAyCHVbJcw0ABzwHp9g+1eONPpGLM5gVediaoO5bNRDy2saCAdASHys+Eqg/FUjLe8XHBfFj+lyojmZcrhCKouOCxa0J8sZGpcfLmQMLkR8AY7pXinhto94uUKt4QeAHwNivEKi7QKoF9fMuQcEAqkbyauafCsAV/JvPgWoNQ7WCORABwPr5sKy6G6l1BVDbtYYEmT69OeADoGGVGQirV8BUAMt3AR8AzXfWLAtCT3UO+ADgFgLNTW48xiu1fbA8AGS27/oYTHhRjS1zDuz88MqdWoqnP3aKfD8AlvcvRaUcxc2dWLW035lWjNk5r5b9aOZi/Sk3G00Fg6Ocn0+5JuUBgHbqK2KW5QBey46Tu/3O+dvK8IpKmfrqWhUArw8dGA5HmZ6fc12xG4D9haB55MrTQLcBfnK7wM75zvkURhWGcAfGG/5DotwCzaHM6bnKLBKGDZSD7JDhInt7XswNfwCNQFB2lRtJrVKwWgBMp2LKp29xCMWUbBZT5RZo65T2zqcqU2AO12MuNCciBjNBz40AAI1AIGoFWbsBfmoDcM6n+I+JnR8Zl8a8PSdfhinAp3KPEqgyxbrS6SGTtgkA4ABHiALQCASiWmfRAHACgCEZDCGMMBgD41oAwGEVBAAT3LMAYFOaSDtvMaUMDwDmtnNpnJePnKXJ2R46/gOnwA9IyBJGE6IEwKfKVrWHdesA5N7bt/5BsP5CqNK/2vfGslYDPOV0ARo7dOwp+Pf52ylFOQMATREMgudvaQ+MBTegCCg0gB2MkwIa86nvmmC9P7WVYb3Hi8fFzQFa26MP+tFKH/3p5T98oGVB/TlBtWyoPxmo1wDD1wSNTdXByjTIKilvNcBTjTMuVOEAaoFAmPV6mQOp7cMUA6AaCBSB0gVsLUKU2j5MXQDsDl0JBGpb6OpPa00gDkAlEJhfoX42ACqBwHwiyNkTWxSJBmAGAmM1KGN/GABeb1DKCATSHbQLPKmV0QQAZiAQRWX+jAA03iDXIbC9UacSm4epA0DXYBaBQM4HLv+4ta63+goCL37Cw6yZxWY/XxT5iQDKaSBfC3PaSLSgFwAvwMoLSGfczJ2JF7PZz4uLGZcougF03/FFmKmcAOsAYCZmBKD64g0MvxBidnHBqZB1AuAetwPU5UI2SAfQSxCY8ezdbAaOAP/x7ydmvgDDYS97d1HMjU4AjHUyqD0VzNYiCoLrv7h495PGHBJB9sKwy0xRzA0fAKyLgQoEBILj/0QLEpuTCAAYjADg34zsRb8XuM9DAbAOBiUBcoHEOeA+j7+qACAi0EHRD2D/3YwRBBYCgLUykAU6Bq4FgJkJgCsAEP1h7907/yBYk/PemDIQCBUC0kxIay31YnbxDi2fzYwpgM8DZjNx8Q6AeK0J2kfSziDTa3OCZYkm9HIdlB8Q1J8a1L4buCbofjFsY1BeB3maCct8PRgJgFkZIGX6dvGzAMAsDOgyQA7AbfV99WQAsAaDTMirIOeO+l56SgBYnQFFQZ4l2fDEALDqbaUFToHnBoCZT5LwbSieNAeeJABWMshE4h3lnyoAVjAQWfMzRSFHSWgbqp4BMMUg7WbyTxsAky8YUubA4gDs/sLHq1+77ErltAPgLFZpv4gef17S7tXVL3vJlUAIl5dXfFfVWIAHqF8Y4Z0VnUr1gN1L1wy84vB3eXV5yXcvZU6/AMh2aph0HUwHAGaCE1xd6WRXusTuJYfNy+w9VpB1ewNQ2E7t0l4NJANAy8UVy97/gmT3khIqQMPBepwJV7KDfQCo2E4ZPG1NpIcpwK/g6dgVeDtHg8XVFdkLAADHJTpCTwAatlNm6spwL1OAk60SAAy5jEk4Ga4ud99f0WxAJa0H2EMNZvL1ALArAez+goRKIFcAlffv04Kg03YqZMlvj/UEgMkpADNBQOTjVPILSy/fQ2bkmmCr7VQBH/hqAcj7CTKm7ieoPlhYdE9Ergl22s70ymhWbxqo9Xsq7GM71ZcNOfuDAPjaTtW5bvXHAAh6UVf5yZE/A0DQtaxYETIe4xRy1lT1B6DwFdnm2QEoXwdUkij5nzVdfQEoY4Vq8rwAGCuAWS2NkedZe1EHAL+LQM8311vqbXb7AGD7Nn3Sa6GEtg7tzVX6Gx/nv/eYyugDgO3LA6sFsDef/65lzeUx54LN5+z6es73VI2uGNDdl8riX+n43Q2dSntnFfXhuj5yGgDfu/7we359Daks6PqgZGdfqmfilq1gpbylIAXW7YGfw2BDgmOuAOxdw+vCvevsA1iv5kAqgGpnjcjX1dD7mDECAHMxx8FmKtEAwHCcBqLwiUQAtb5y62ao+vGA3zjOArzgw3x+bQDIPvxGR/AF0H41q3XVrMxZrNLeWiehoWgnRr05BARRxAAq3Pswp9mASgHQeAOUO7bD1A+AOZsTAA4A9n4bQRC4zD988A6CLZ1pTI9K3Xqhv9IB4GVwb36NoQ42Ocz6+VzGPEQxF9cfINNrTbDtktQMD9y5E6T0q6D6XrH+CnEmv0IsS0K/O+zsTdP+6sC52nWrBwABigVgee+Tt+yFaL0AOD7pYcnNWvZClPTZknDFAbBl8sreHwSA15vY7c9adwOU9OGacHV+fb4JwD5EtWoJABonXKi6AdTNtT87rhscDWDZv0weDMDx6qCe+8cCcNjfsPfPAVDtkKt3jexoAEuOgYEAXJ1rmrumAF7+jY+3f79ktyrHA0DZI2ffeCMnFkDYu5GturXlCXZ7y25ubrlE4XMrrfJji86uWayNBZD8IclSt5YjgeE3H/++vbmBVOYEAHAPjeVMawEABvv29m+mEtDLG87Ey5vs403hIB53k1MffXTbbzOWW/I81OMMAAAZDLa4ZSphCACycRqIwkE8bqkp1JfBnLIVtVRvU48OQB4Ak71ImAQAONARAgG02W/19pb6beoVwMebj2i5SujA6Acvb15+vKXZgPICIFoXh61lbQ3cSvymialbBPDyBkafEg0Aoj/sffwYEAQr34iyddqa29bCrfRPyhd6eXtDvi/wwlcAeIkhUdx8hH3PNUHWOSz2srYWbqV90aR+LOw52q0+LihzY35jpLVbjusdt2e3q8cZoGV7MlBRMgDHCbrOa9UCAHS+t+d1e/2Wfrme8HSd16o+Z4CvfAC0dYwH5rdpAQ7QLV8AtRwt5zNeR/1W9XgN8JcXAPfQOLKjAUS0SpQvAHvX3C95uLPEKedZFipvALUsKWsmtYjoSsCnsnuUFwDX7HSbGQnAdpIFyw+Awzvr1YwG4T1ZzQzw/bU56+i0fXYgvCeLc4D7f4rN/X9kxj67VzmeAKzD06hl1A/uZd8OcH9/r43cvytzBRSwu7t7LlH4/+SmZXxaPz0T3OG+HSC7F/xeHtEEwPfvPv1zf3fHdWYAgLZPBDVOH9zf3mcA2AqDvQ/+D7Yqb9i/40zs32WfwHrlHr4Amh1stTEYQP/XQBj+e/y+3D0BkN6Aw36P00BQOcoXQLOHljqlQgH07wAEgIMHoNebALJP/6AjRAEws9tNDAXQw10T6pIA7oUJgPx+/27/0z3NBpQ3gKzmAu3dDQRQP3gfQush3nECgI4gM/dh/O8/fQoOgvVB6rAwEMAiHIAioADLP91DIBQSAFz8IAbcfQIu/muCRifLUerobkdxTdkCAGTqp4nxfoKijHmxvztc72XXCNsO0NbXRb8M2L+/c5zAH0Cln46jFeoqryjk27mxcp4gAIDR0c4pbj+AXUtwgBYFA6Aie7mhzgrWw65CIQAy7QLdMd5+gPajrkYhAIqxchQb6q6htWL7wwAoAh4XedcBXIf0rt67IgD4dNejSuARF6UwANJfPRzWdYC6Vm5/IABvAs4DxB1ugQoE4DtknRVI2ZIc4NW/1a3Hf1+xR5UTCsCvz36vhdSxFuAAj4+V3VcPRYHAsoeHR66hhALQd0psqcF8AXgdKkavHj7/W93XW2A4lD0+PHCdFwzAa9i8AIiFOQAYJ16Bn8NgQwJj/oAJFcDLw1cP2WewXjlJMACvfvsAWJz9csTFIzkCJQDkURc84jQQ6AxUNxyAT889ACzQfrIThv/zw6uHMuGqIPv8LzpCAgCPvncD0DOp/UyRooEWZHmZ0JkeqfTV50eaDagYAN2d7wSwUPvRxH8fubS8SOhUGP1h7/Pn+CCI6ux+F4Cs24mSBPPc8H0KghLAKwyJ4uEzZAavCZoSHQS6lkwXbD/L1GKg/qHi6N8YcUq0I2h/16ij8XIVCaDDiNb3TYumK30NoBUJwLx1tqVyy0dH2hsuX7EATEuatZ3tW1utRNEAKmNZL3O1X7fhZykA2gg42osWZqtSAoDqLfQrJdb27uqrVAqA+o8IlK0a7bNa1aQ+96okAI2fUdDtau3r5q+R/YkALD8kQU3N9g3r18r+VAA285ScJf4HT9TGl+r+qNj4slHspAJoIbBC+0cjtH7jqJK5ccQ3wEIoODoacU0nGUAogZBDx2rj6OALWN8AwEZixEaQHAELVZgOIAhB2IFjtXG0cTQCP0dHkAlqBK8E+egALM8OjooJ0QcAfwKBx40VAtg4EugIMOaYYO6IA44jTsYL2kX1AsATQfBRYyUBKEcYgcV03UGLYQpQAe8bgAeCiGPGygQgxIGykcLeCCf/xsFIQmA9AuhAEHXEWEkAI3rgIx3uMAhKAKODg16DYCkHg9jDRWsEk3x0dIAcMNG5GAMOIDrCAx8lrQm2qMEg4VgJneB4xwe5Jljc+iKjnxqBLvWwJuihPo6xBC0OwBPRAEClA4ABwABgADAAGAAMAOTOAICvqjvL1wBApQOAAcAAYAAwABgAaACj5yMrAMu73n+urACeoQYAA4ABwABgADAAGACsuhur0wBgADAAGAAMAAYA/3nOAgBfv666E6sUAPjvqvuwUv3F/v/rqvuwUv31rFYCbfofw5su9jc2ELoAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/daily_usage_201008.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAgAAAAGQBAMAAAAq2MUXAAAAHlBMVEXAwMCAgIAAAAD///8AgFz/gAAAAP//AAAAwP///wAEFZDEAAAMBklEQVR4nO2dz3bjKBaHES0rrp2VTqWrdpSrp2dm1+l+AaWOHyCZc7KXe6F1ZjbZOrPKMlW7vO1w+SMj2ZZw4rEDP26nWkYCBJ/gXkAI2Bxc2Nc/oeUcHMDVH+AAfgYvAVdXBOB3BitZmQAkAAlAAtAH0Mi/ejjg2PVQpAugMdmSAIp6MFxRN65rA0djI1TXZGSbXt6H9ACwNlujAFyXE649o30RqIaKy6aX9yGbANRDUzk0aW5PyjN1bZ4kAWgaW2TkD8pr0RT6IP8a7UsBKIqQAOisdwFQRpg+2JMNc13ttfaZmxilq2hUZEUoAJpmE4A60ejc2WdrAOhwjQtAwdIXCir+GkAdCACV/g0AhkLTPtoeAFsFdPZ1DPqCChdSFXAAmIrslu9W320F0DhqT2lJGyAcAFT8GyrmhVJvOq+NUYKtLmRrJWjC6apT6ODK8NmgRiXWYZjBvvQemq7eu+W9PuUhGQKwpXkznMH3+pSHJPUFEoAEYA3gp1MP0B1Rft8K4NSvKI4of2wFII5Y9k4sCYA5rgHM+RwaAGeCfRW7vFOtOU7CjiUEIGeVL4BfF4tvx0vcMYQAVBe5C4DBAbiuLmZrHSAY360DIgVwnc88rUCcAPKsWgPgAg8Am2WODpAE4AB0rQAXaAAq1rUCHM4KMEcJkhkEKwGLxaKCtgLZdVk6fQE+h9MBGXM7Q4ANIRLopjBzrQBgCaikFpwh6wCpBC+grQApQbcdMB8YETIA+Hw+3+knLNlUgtxDCXJZa3b6CUt0Q2gBDSC7KMvZ6wBEMESoxgNmbhWYiyEzqLNsAUSgEzcAkAwA+K1p/ooNQFcHkIAByEpXB5CAAVCSACQAuACUJUcGkBEBZAAsE+AA6G0QNgB2LsABsBIdAHoVSACwARSsxgZQXxbYAJb1JXZ3eLks9gXwTY+L/xr+oKDSAVm9N4CmaUTrDFk25giRoAGgL6CgAdTLva1AXABeowQTgJgAFE3fCnwpd4jKcVmeE4AvrTNkUVagM0mK4ZUAEnAA2FZA5qWBVoLLsty7MxQVAJonOQbATgqKEoCSMQC2/5sAxAlg1ApEDaD2sAJRA8iW41YgagDdmaIkaABIkAHUdEQGsCwYOoDxiZIJQMwAqDcIDcBnpmjUAJQkACMA7MtAXACdHMcFwGemaNQAfGaKRg2AZQIcgMdM0cgBjM8UjR3A6EzR6AG8rQqE/CXtYQAE/CFpAiD/TdkKG8Dq0xQbwOPq02h3OG4Aj1NsANNshQ3AY6Zo3ACmK3AzuHpEtwJvVoLfwm0LHwiAdoYoSgc8vdUKBA7AY6Zo1ACm0gqskAFQX2AKDeBx+ulTmQAAA5iuVitoAKzMMmgdMH16gjaDsi/wOPbJTO8bmR3OEMU0hbFLAHxfIJui9wUYeF/gib11RChsAKtyhQ3gUf6XACADeHoCbwl6zRSNGYCSBCABSAASAC8AaukkZAD/eHr6bwKwo0CEKK8F8Jd6HdrjEaK8GoBsPiYACUACkAAkAAlAAgACoNfyAQTQzXHfqfCEuMbsoQBoZ4DLDB8WQIBF4LAAfgvvI7IEwBwTgAQgAUgAEoAEIAHQjgRA9L0lAJ4AwusMHBiAcgYlCYA5JgAJQAKQAIysLm+HPWlCwKAzKNlzi434JAEwxy6Ar3/CCAH4wJ57AOZAIvP7/PkDdhX4/vzZmSw953M4AN8/rAFwJthXcepkHU+UDsiefQFQpdl5MUjZWEeIS/duAP98eXnZeTFI0WbQtQKC8d06wADgRn1GIATgmXlbAQtAHn4cJX3/d1FKkDlKUD5dAQZAZsZRgn5VICoA2Xd3GR0vJRgXALXbGnIJUIKsAxgDtwLPMjedDycHS4BqAVgAETQMtRJ0OkPUxhlSgn+7u/tXCyCChuHmXmNiuAQYAD/Us48EAImjBP0A3N3dRQOgNyI0bAViBLDHiFCcALojQgwQgDsiRIIGoDMiRLIHgOAHBjxXlrayAUA5Q5Y93wzFCuD1ViAGABt9ATQA3b4ACRgAn32HrcQJgAQZwMszwwaQfX7xmyLDdgEI+T2JXlb3ZRRAOwKyFUDAI2SqKfySja4qS1mUR51j6SQAX9ZOfTVEUTqgnEGXgKxk4zogZgBKRgHYQUBcAN0cJwARAVAWHBmA177DMQNgmQAH4LPv8AiAH8G+JNRKcHzf4TEAyhmiGCswuu9w7ADeXAUSgAQgYAATdoMN4ObjBBvA7c3H0cXV4wZwO8EGMMlusAH47DscNYDJDbgZvLlFtwLoShAewOQO3Qp47DscNwD4vgBDtwIMWwnKtGMrwewWXQl2vxpjeABIRidI9GZEbHWGKBoAthW4kYlHV4LgQ2IeM0XjBkCCDGBCQ0LIAG5mNx+hAdxOMuy+wO1khg1gIuvAYQC0i3MFJGQFZFfoMDogxNnzBzWDCUACkAAkAAlAkAAqbAAVy7EBXLP8MC3BQAEsFosKGkB2faj3AoECONx7gVAByDqADSArr6F1gBRwM8jAzSBDN4Oy+GObwVyWAOg9RqqyvIDeX+DaQwnGK9sBYO0xkm9agUPv4/GehdFE0VErEK9sDokB7jFCAr3HCMkee4wcJ2HHkj0B/P3h4T/HSdixZE8dgACADVmBKAHkVb8vAFYFqovsAhrAdT7LfZfXBwAgjQBaCVhIcfcZ2gNABM0CtZpcWfp2h3sAIigQm6PC86H9BUyOSVEIFg2AijndYc74wD5DFsDDw4Ng0QDI8852e3xcB0QGQBYAaACL7rvBuUdnKC4Ar7ACcQFQsl9TOAGIGIBXXyAuAL01RQVcCeitKerTF4gLAMvEviNCkQHorCnKZWcADoC7pigHrALMXVMUFABLANbtAAHXHSaBtgJF02ADqDd6gztXw6Acy8O5BPBl7QxZCMCSoVcBBg6gQdcBWRoR8tpqi05GCaAmLTAGoJvjuABIFdCMzhaPGcCyLC+hAdA3U9AAlCQACUACkAAkAAkAJoCibmpoAPVldgkNYFnMCuiWIDwA+N6gzxyhYQB2uCRE0WbwjQMi1hmiqPcCrH5jCQgcQFGML6gYNQBZAKABNB7vBaIGcAArEDYAJQlAAoALoDdTlMEB2LL7/OYeI90ZETucIYrnTNGoSwDz2X0+bgAeu89HDmB89/nYAaBXgQQAGsA9HZEB/PuMoQOYJQDQAGTqH6ABpBEhkgQgATgAgBAXlTkogBDflSYA5ogM4Oz+4R4awP0v2S/QAGRT+OwwDaEEIEwA1BeABnC4vkCgAKScQStBds/usUvA2dmB5giFCkAWAN8PJ013Z9gZlHiOCMUrnlYgXtneGTr1vhdHlK0A2HE2t3gfshUAoCQACUACkAD0AeT6wI2itB+FcHO2czpfLHSYhXNWqD8KoMIIHRU3Vyt9h9yEFfo0NzF3PdNvCrOodJiFvhFt8GaucuVUYck5F63TepZh5V8blfTBRwCYvAjlX624rPPmYFgfDa6K8mU8c6GWZqMAKi9CRzXXV/NK32GhQ3KTHpPrnmf5m6KSsFQYeRe6ES0Dbq4yxYAb0IK3aWg9y7AU3EZFV912+xYAeW5/CTev3JYA4V5jOuMdAEJngpuECaG8c504ShXdgVJFD0ZoztpnJ6wpPvp6nlvQ6kZt4dKp4iZVQtgEqx+VTpUG4NxqrARYAMYfNzk2AMzptiWhAZgqoK+ap7iuAsxkXkUlU2WqgLqT0FEZAOsqwE0gnWpdBeh/Oi86Km5SJaxnnSqho8pNqip9o7lJ1XgVsABEB4ToFn5TQaxnUwKYqcd9AIK1ENYAmAHQ82ydblQ241VbACxp3nW6UVU6VTmtIq6iNiXAF0DrzT5y4QFgewng9ooGQFtdjgMwp5Rz7d8UAHtVpUp0PZvguUlVZVO5L4A2v7YqdJwWQNUDIJhb4bnj1ZbqNjN5D4DoATB54WtYlaMBuJtx6xSGtrCeq7bkOEpwBIC1bPaRd5+8dVojWdlA67MUUCiDqcyRdNIZ+k1hF9qk0V2oIMzJaGnrKpjrdKOSnlWqZFgKbqOaa5PmON2opE9KlQrLXDPI3eGb1BBKAAjAiT9eOK1IAFdXp07EKUUC+PnUaTipnLMvV6dOw0nlHGokcJv8D16W2aPt6+vgAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/hourly_usage_201008.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAgAAAAEABAMAAAA3vtNUAAAAHlBMVEXAwMCAgIAAAAD///8AgFz/gAAAAP//AAAAwP///wAEFZDEAAAITklEQVR4nO2dzXLcKBCAEetSzdHjuLZ8xMrW1h7j5AUmqX0QOQc9x8ye/NgrEH8SPQzjkQSa7k4llhqE6I+GFhImrEEu7OsP1PKEHMDbd+QAviD3gLc3CeAbQyvVngAQAAJAAGAAdRe/9lL6JmQMoGMjmy4Y2NWtfzbNrVPrrlVpHZClALkJgH9StyMczALoJKj+TwdkKUBCAJ36px4aTdd5sEC1ZN3VpiU71bz1cCazqCvb1pTStbpMmdZuA0DXaUNUZUcAlHe4NO3b7sxdZ9q8NaX2qqGwrp3eP7sEHmAtYFMPaCWgdvCOdsjNOjsQ1DrNOILtAkw6yUCzK98DIgA0Ben0rcntAzCWa/M7OwgOV7JtdIEpAN2RR/5tDYEAKD8xXaDTuTYFYBjoBkM668hdpwdBMxYOuZnzh8E7zOVD4NOX6iGx20AYBGTaaJNIGWYvsJVjcglA+HhzYSQvsZVjQnMBAkAAHIA/cr+gW1G+gQByf6JYUb6DAMSKvpdZCID+6QA0vEENgDPBvoqcVbogXHXd2YqTAB7YYUsA/u3l12zFSQCH5wcfAEMH4Ofh+dGNAYLxoseAJQD8fHjcThRYAMBDdXAAuMAHgD1W3hjQE0AHYBwFuMAG4MDGUYCjiwLMGwRlGETmAX15B9RRoPq5329oLrBAF6jYpuYCS0SBMgAA0xxItQSAMuYCgGlpqlukB3DoCyxiLpALQD8IPhcRBXIBkIPgGACyLqAEMwBZoDcI9qNudgBq7BdsrTHgeb8fDYL5PeAveSTYWl3g4dHvAhw7AFZAFFgXwHgMkIIMQLUfjQEMHQAlBGBRAGlfc+4ZQFKlcwFQLYMZQCUJYAbAKoEcgPwahBsAexLIAbA9dgDYuwABwA2gZm1OAMDrn5UBtH/WOQF41hoWKwN4b/9ceDqcCuDvrhexPoD3unwAsfekt4gaA6q2XAApveIWCdYISSkJQEqvuEWUB7RZw2B+AO17KVEgE4CiB0ECsMYY0BUcBdYAwEaLpFgJAH7p18jRyDiLFDAZAgHIg98XnGIWGQAUFwVWBSCLK20MWBXA+35f3GRoVQBynSRqAEoIwJYBuG+v10fIu4gCwLu0ZOkBtJuPAjcCqN63HgVuBBCuFMUGQApmAK38iRnAe82wA1h8oWQcADD3BQCEuWKflJKlCACAtUkq5xQBgORdBvRs8P4AxO7oC7xS9HU/rzyp6pxJ1KbJXMq012SVLPV1VLzuKBfu6EsJYXBOD3C50j1ACQFADECNlRsHYD+hfgZA7pWicwAAcl3RBSqBHEDmlaIFAFhhpWjkXVUJAJZfKWpqCEgRABbvAosAiM6iEt+PbhtAiuqCEID+744dcQM4vuxwAzgdX4C3wnNuXFg6gNMOApAaSBKkcAC76ogBAOzS51eK3h8A0CDlAUcoDCICcDxBUQARACSDIAE4PwZ8ZIgCbkzODwBeKQr9tspnn43i3/NyA9j1UeCYBuCzTlE2ADkX2KEGcNq9vOwJAAIA0Eui4UnweEQBIFAxEwWqCsUYcA7A7uMjMQzeKYDj6ZT2ILRJAN5CmnMATqmToU0CAL4eAADu2AMSAFS7xLnAvQLowwDqLrD7YIlvhO4UwHF/xA3g1P/BBcB/JEYJwKoGAB8fKz4JQut7FwYQ+TVcFttTdBkAXnusBuC8U7DY53ECQAAIAHYAwRskbABMfgJAAO4NwC/3iSsjAGCJ+2oAtCovgLWtJQAEgAAQgAIAJP6i8B0DyGbtrACu3K2lCGtnBeA/TBIAAkAACMDI2nBjqyKsnQVAsM8z2NwBpiKsnQWALYIAEAACcM8Ahq1ZVH5/Qxl/Txe9W0t0yxhvTxd3obp3IaroLjJxD/AYRjygqOaetwsQAAKACEDsiRYEUMAb/1kBxKIZCGBpO34Psw3EAOSypv8IAAEgAASAACwLwISb2KQux/uv9QDoG0VntRnmvgSAAOQDED6FBi+KF358zQHA+6QdufcFAHNVOguApHvPASDNTwoFEF/6kAhgxlzrA1jNNAJAAAgAAcADAIiMyADMWIktARiesBED+EceiWQmKAAAKgJAAJADsMMCVgBWRQCAsi6/WygGABDgrgTgrL0mWBYD4Fpr5xoqCQABIAAEAAOAs49LWAA41eTRAB+ASSUQA7CrGbACGFQ3AbhyInZ/AGypnwbghiSsANa1Ng8AYG42w9RvfQCxSkPWZnfuuQFES92ItcsB2K6KABAAAkAACAABIAAEgAAQAAJAAAgA/D9Py4muORB3p4oCQCIwgB94BARgfQSDgAAQCgEgAASAAEAAuD0S5sBup8ubILEJE51qmsZt8cKUwG0u4eViRqXL4rYIXzW9sD/n9nbCqHT2xq+9lHMAhK20PbBQBAsSzU//yBwGFzam+P5yXUJjcnHh5eLCqpi50N1XwBfK86H4/lyXwLjOJWSSV8WzALxKC085tdIm2rDq8tjDKQBVGa4v1yS4yS+MaVKl7RC6eG5LkgmcBWUZPF4+YesydbpUAFDjOmuFTTJ3cvtO2xKaSS5b6VEXsP7OTBfgVuUutP5u3NzrAqYSgrtEYatub5TUBSAAXuMaa0M6wIVOxU2/hQC4FnKYRKgKLnSqq4o3cgUA7zpjbdMEqhiAmB1eW7nmbgJVDIDWCTss2Er490kD4HV9Z4fTBIkiBGDzc/9Q/yuCivnjhJhWH+g73BVuATizhamcKcofAWztpVwMgzaaueYGwqBTuZjHApUJRY1O7MvWG9A0DTd70oihLHUuAlVjVSxQXVP8RQBohAAoAOAusVikB/D2lrsSOaUH8CV3HbLKE3t9y12HrPKE6k0gJP8DVYqBWBlbrvwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KCjwhLS0gR2VuZXJhdGVkIGJ5IFRoZSBXZWJhbGl6ZXIgIFZlci4gMi4wMS0xMCAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIENvcHlyaWdodCAxOTk3LTIwMDAgQnJhZGZvcmQgTC4gQmFycmV0dCAgLS0+CjwhLS0gKGJyYWRAbXJ1bml4Lm5ldCAgaHR0cDovL3d3dy5tcnVuaXgubmV0KSAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHTlUgR1BMICBWZXJzaW9uIDIgLS0+CjwhLS0gICAgICAgIEZ1bGwgdGV4dCBtYXkgYmUgZm91bmQgYXQ6ICAgICAgICAtLT4KPCEtLSAgICAgaHR0cDovL3d3dy5tcnVuaXgubmV0L3dlYmFsaXplci8gICAgIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+CjwhLS0gIEdpdmUgdGhlIHBvd2VyIGJhY2sgdG8gdGhlIHByb2dyYW1tZXJzICAtLT4KPCEtLSAgIFN1cHBvcnQgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAgIC0tPgo8IS0tICAgICAgICAgICAoaHR0cDovL3d3dy5mc2Yub3JnKSAgICAgICAgICAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KPCEtLSAqKiogR2VuZXJhdGVkOiAwOC1BdWctMjAxMCAwNzowMCBCU1QgKioqIC0tPgoKPEhUTUw+CjxIRUFEPgogPFRJVExFPlVzYWdlIFN0YXRpc3RpY3MgZm9yIGNvZGVtaXJyb3IubmV0IC0gTGFzdCAxMiBNb250aHM8L1RJVExFPgo8L0hFQUQ+Cgo8Qk9EWSBCR0NPTE9SPSIjRThFOEU4IiBURVhUPSIjMDAwMDAwIiBMSU5LPSIjMDAwMEZGIiBWTElOSz0iI2ZmMDAwMCI+CjxIMj5Vc2FnZSBTdGF0aXN0aWNzIGZvciBjb2RlbWlycm9yLm5ldDwvSDI+CjxTTUFMTD48U1RST05HPgpTdW1tYXJ5IFBlcmlvZDogTGFzdCAxMiBNb250aHM8QlI+CkdlbmVyYXRlZCAwOC1BdWctMjAxMCAwNzowMCBCU1Q8QlI+CjwvU1RST05HPjwvU01BTEw+CjxDRU5URVI+CjxIUj4KPFA+CjxJTUcgU1JDPSJ1c2FnZS5wbmciIEFMVD0iVXNhZ2Ugc3VtbWFyeSBmb3IgY29kZW1pcnJvci5uZXQiIEhFSUdIVD0yNTYgV0lEVEg9NTEyPjxQPgo8VEFCTEUgV0lEVEg9NjAwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQ09MU1BBTj0xMyBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+U3VtbWFyeSBieSBNb250aDwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQUxJR049bGVmdCBST1dTUEFOPTIgQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPk1vbnRoPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQ09MU1BBTj00IEJHQ09MT1I9IiNDMEMwQzAiPjxGT05UIFNJWkU9Ii0xIj5EYWlseSBBdmc8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBDT0xTUEFOPTggQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPk1vbnRobHkgVG90YWxzPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwODA1YyI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDAwMGZmIj48Rk9OVCBTSVpFPSItMSI+RmlsZXM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBjMGZmIj48Rk9OVCBTSVpFPSItMSI+UGFnZXM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjZmZmZjAwIj48Rk9OVCBTSVpFPSItMSI+VmlzaXRzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmODAwMCI+PEZPTlQgU0laRT0iLTEiPlNpdGVzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmMDAwMCI+PEZPTlQgU0laRT0iLTEiPmtCIEY8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDAwMGZmIj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBGRjAwIj48Rk9OVCBTSVpFPSItMSI+a0IgT3V0PC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmZmYwMCI+PEZPTlQgU0laRT0iLTEiPlZpc2l0czwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMGMwZmYiPjxGT05UIFNJWkU9Ii0xIj5QYWdlczwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiPjxGT05UIFNJWkU9Ii0xIj5GaWxlczwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwNWMiPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgTk9XUkFQPjxBIEhSRUY9InVzYWdlXzIwMTAwOC5odG1sIj48Rk9OVCBTSVpFPSItMSI+QXVnIDIwMTA8L0ZPTlQ+PC9BPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MzM3NzwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjI4Mzk8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj44MzE8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4yOTk8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4xMjk5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MjA3MjQ1PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MDwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjA8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4xNzk3PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+NDk4ODwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjE3MDM3PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MjAyNjY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxURCBCR0NPTE9SPSIjQzBDMEMwIiBDT0xTUEFOPTYgQUxJR049bGVmdD48Rk9OVCBTSVpFPSItMSI+PEI+VG90YWxzPC9CPjwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwNzI0NDwvQj48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4wPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3OTc8L0I+PC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDk4ODwvQj48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzAzNzwvQj48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDI2NjwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPC9UQUJMRT4KPC9DRU5URVI+CjxQPgo8SFI+CjxUQUJMRSBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9MCBDRUxMU1BBQ0lORz0wIEJPUkRFUj0wPgo8VFI+CjxURCBBTElHTj1sZWZ0IFZBTElHTj10b3A+CjxTTUFMTD5HZW5lcmF0ZWQgYnkKPEEgSFJFRj0iaHR0cDovL3d3dy5tcnVuaXgubmV0L3dlYmFsaXplci8iPjxTVFJPTkc+V2ViYWxpemVyIFZlcnNpb24gMi4wMTwvU1RST05HPjwvQT4KPC9TTUFMTD4KPC9URD4KPC9UUj4KPC9UQUJMRT4KCjwhLS0gV2ViYWxpemVyIFZlcnNpb24gMi4wMS0xMCAoTW9kOiAyNi1BdWctMjAwMikgLS0+Cgo8L0JPRFk+CjwvSFRNTD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/usage.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAgAAAAEABAMAAAA3vtNUAAAAHlBMVEXAwMCAgIAAAAD///8AgFz/gAAAAP//AAAAwP///wAEFZDEAAAI6klEQVR4nO2dvXLbOBCAlziZJ3ekk8s4HczM3LVx7gWkGT+AXbinUrB2rlErT5qUTjq/7WEXIAlQlEwmgchkd62hSQjEz8f9ESiIgIK5wLt/WcsFcwDXH5gDeMVcA66vEcB7YCtJLgAEgAAQAN8PoCp7U+udtPftOUkIoGqbPkzSsveEQQBGVhVJfhhAb/KgUuYKoKogNYpdlWVq9dv8S81fRRs6qqoaFQLAoyanPZ1KMScAJdAJ7jzK5R/9dHmiP7t3XicqgLN7gFs4exEAdhPA9bbyEquqSqmjwXumL/s5mxMQUJhI0OwJkTTgq/lLbN/gPKsBZHCb35qUs6yTvUcD6BrVPaAGgweA3gNPA2x/3Ol17zBnAwDcCc5e6qLjATg31/4ZzPb5GXeM6AzuIDm7hft7VAXUhoMAHAWvhWnpX1cYBMBlOQgAovmA8/PEQHjKn8z2PM9wB+DKmMAtGAhneWZUAbXhEID9TnYU276XVr0AOjl7ALQ2Ux0LET8A4G2GXX9CDMYEcAcU2sRfBCAzSnB3dpv0Awi9WOq7trpbzgQgdIJ9p9eWYHORK208KuZM46iABQBvwQLAHbQAQBdIAO7yHGH0AmjFOawj8p3Njx/8nhAARgIE8EQhwVgAdR8B3N7h/gET8Bt6vKVp/0fAOchX8oDPCbo/3CbWAs7uE/R9tDX7de7fcCxg+pZn7pXQVpEF+Cl5Ew1/QwA90g3+nvAAcEQCAH9MfYPuhPK+F8DUX1GE8iFq4b0A9Al172X58HKWHy9cANQAFKiCGYAC/3sANLzTMascIsoaqG1HFABUgy1c4/+5Abghse2IA+D5+fmbLVyjDrQ+QDMEYAi0AIxuTO8DTg1gdlHgpABIZhYFTgpAFQV3J2j8HnMAinkUCADwiwKqACVRoAVgPCIzE5jlWOCkPqAzFlDsAED4OQA0OwDBWECD4gdAxgLB5wDND4AKTYA1AOMEuUUBujnGWQNUaAIMfYCWsQDvsQAJ57EACeexAAnnsQAJw7HAN/rubabfDp8EwP39vQAQAL8EgDyCXBCAq3y2ANwUHjzgqQF/Vygf8UAARKlBAAgAASAABIAAEAACwB0LAAEgAASAABAAAsAeCAAdo8oxIgAEgAAQAAJAAAgAASAA8EAARKlBAAgAASAADgK4ijEpZdQElhoAHvCcIiMmIAAEgAAQAAJAAOCBAIhSgwAQAAJAAAgAASAABIA7FgACQAAIAAEgAASAPRAAOkaVY0QACIDpACxgxRvA6vWCN4D16vUrHaPKMTIpgPWCBQC3hEWPD0hWHADU0hMFsmRmPiDqQkt9YXB2USDmQkuFq9GLAsAiCtTS4wSBhROsxRSuVeEtsHBzc8PNCWrtP1IzWec5BxPwntIUAsCFGjkA+Ge7/c8V3gEA7AAYVdABABZRwANA0gBYGS/IwQkGABQETpDFYCgwgeDR2sYJMgOgAg1A4eYDtA8AH+TIDYAqfB/wOs+ZmQCJdz8g42YCKvwgxA+AVj4Ahj4gXGwtydn5AGMBvMcCKlxoCdgBIOEMgO4LNADwiBmAcLW5pOAHIFx5OtH8AIROUM1inaHTAgid4MU7HaPKMTJxFMh1jCrHyGkBBCtPozAzAQWdm6LcAGhgflu8owEplMwAdHxA+SblBgClBbAp3zAbDnfuCG02KTMA4R0hSJOSG4DgjhDNEWLwFBkEQIXv3RFKS4Zh0B8MlRvuUYCdEyQRAK0PqLhFARIvCvCYJCV3hY8A4B0FsFrWPmCT59wGQyTt9wLAbo4QiThBASBRwAIouUeBZMM8CsxmpujHwv2wjasT/PiFRJ/cBwBzAJuUPYCZTJQUABMBwODDGsBsZopOBQCFtQagCAAdo8oxMiGA2cwUncwJzmWm6GQmkMxkpuh0PmAmM0UndILzmCk6ZRSYxUxRCYMCoAEQeYoMyawBxKjhsAYsYccbwO5yyRvA4+6S93D48XHJG8Ay2fEGMJenyU2nATvmYXD3yD0KcHeC7AEsv3CPAjOZKToVgKWJAp91jCrHyMRjgaWOUeUYmdQJLi8vsxhVjhEBMOknwd1n1gAgTxIdo8oxMu3ngC+sw6AZCzzy/iD0KIMh5mOBZMl9LADMxwJfmH8xssuZ3xJ7NH8CQMeocoxMCAArZQ1AZorCLKJAswiMjgTAW2GCZGYAAokCoFt4CCDq0kbzkl4AEHVlo5lJLwCGIgAEgAAQACEAVbT7+HHEPX5W2382h/ayeycWzbGX28sRJPu7lEXpTu4h8gCw3eLOdvtgzy7xB2CYklZt6StcPwD3F3bbFrAPwO+pbQ4dF3vJXtu9PbstVJMbV7SqxU/eA+BA606xx+WTeeXY9U95jqdlsMHHgZT43sZ9zWES1wDrfGX2V7RdtF+A9AFAJdD2aiqjBPaCF7g6naVjk516KC83qoyiPmqtvUJMWpDsumrfsYVol4pptviBAP40DD5ZElhmhj+B3SAFAwDKyiWuF4aBoYDbFS4qdQSAorYUrqeKGmfbrvHyNMlOD3DjchfUJa1sbvAK0UGyD0CrPgBquAY8ZNstPv/EGsIVPhkzq6rEAqiS0iauV9nNTWIBmNcib1Sgxwka/oXXU+gFUBSqzq2a3EDJ9hRNyVCnNa6hzu0AQBeAyz0UgOl8bQKmT8r00XS+NgFjBBubaDpvTcABOGYC1gz3AShsOB3b5AZAy8W+HADtzLm+ptAmqyMAxprAg28CRtmNBrQmQDuYaPS+MYGXANiGByag+gHYZPdOA0DXAFQLQHsAlH2Dii38QloAxdDr3/UBVwCBD6AdTPR9wHphAKwOAzBeqvZfztVZ/0VO0KmpbpwgPplVNwBaJ0hYGgDO1F2yLaXAoGAB2EJU43fHaAA8WB+AAFDZyfWRDzBhEAEoa/or6wMWN8litQbaPwAAXFN/onQv6IsXeLgPSCBJyKNhj1Tmp0Cemf39RMjN0TEnSKIHNmCQdHoz4PIO1oBQeuc3HJ/0YAHE+G3KLyMGwPX11I2YUgyAV1O3YVK5gKvrqdswqVywuhPYJ/8DWLFc3snjIZwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/usage_201008.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KCjwhLS0gR2VuZXJhdGVkIGJ5IFRoZSBXZWJhbGl6ZXIgIFZlci4gMi4wMS0xMCAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIENvcHlyaWdodCAxOTk3LTIwMDAgQnJhZGZvcmQgTC4gQmFycmV0dCAgLS0+CjwhLS0gKGJyYWRAbXJ1bml4Lm5ldCAgaHR0cDovL3d3dy5tcnVuaXgubmV0KSAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHTlUgR1BMICBWZXJzaW9uIDIgLS0+CjwhLS0gICAgICAgIEZ1bGwgdGV4dCBtYXkgYmUgZm91bmQgYXQ6ICAgICAgICAtLT4KPCEtLSAgICAgaHR0cDovL3d3dy5tcnVuaXgubmV0L3dlYmFsaXplci8gICAgIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+CjwhLS0gIEdpdmUgdGhlIHBvd2VyIGJhY2sgdG8gdGhlIHByb2dyYW1tZXJzICAtLT4KPCEtLSAgIFN1cHBvcnQgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAgIC0tPgo8IS0tICAgICAgICAgICAoaHR0cDovL3d3dy5mc2Yub3JnKSAgICAgICAgICAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KPCEtLSAqKiogR2VuZXJhdGVkOiAwOC1BdWctMjAxMCAwNzowMCBCU1QgKioqIC0tPgoKPEhUTUw+CjxIRUFEPgogPFRJVExFPlVzYWdlIFN0YXRpc3RpY3MgZm9yIGNvZGVtaXJyb3IubmV0IC0gQXVndXN0IDIwMTA8L1RJVExFPgo8L0hFQUQ+Cgo8Qk9EWSBCR0NPTE9SPSIjRThFOEU4IiBURVhUPSIjMDAwMDAwIiBMSU5LPSIjMDAwMEZGIiBWTElOSz0iI2ZmMDAwMCI+CjxIMj5Vc2FnZSBTdGF0aXN0aWNzIGZvciBjb2RlbWlycm9yLm5ldDwvSDI+CjxTTUFMTD48U1RST05HPgpTdW1tYXJ5IFBlcmlvZDogQXVndXN0IDIwMTA8QlI+CkdlbmVyYXRlZCAwOC1BdWctMjAxMCAwNzowMCBCU1Q8QlI+CjwvU1RST05HPjwvU01BTEw+CjxDRU5URVI+CjxIUj4KPFA+CjxTTUFMTD4KPEEgSFJFRj0iI0RBWVNUQVRTIj5bRGFpbHkgU3RhdGlzdGljc108L0E+CjxBIEhSRUY9IiNIT1VSU1RBVFMiPltIb3VybHkgU3RhdGlzdGljc108L0E+CjxBIEhSRUY9IiNUT1BVUkxTIj5bVVJMc108L0E+CjxBIEhSRUY9IiNUT1BFTlRSWSI+W0VudHJ5XTwvQT4KPEEgSFJFRj0iI1RPUEVYSVQiPltFeGl0XTwvQT4KPEEgSFJFRj0iI1RPUFNJVEVTIj5bU2l0ZXNdPC9BPgo8QSBIUkVGPSIjVE9QUkVGUyI+W1JlZmVycmVyc108L0E+CjxBIEhSRUY9IiNUT1BTRUFSQ0giPltTZWFyY2hdPC9BPgo8QSBIUkVGPSIjVE9QVVNFUlMiPltVc2Vyc108L0E+CjxBIEhSRUY9IiNUT1BBR0VOVFMiPltBZ2VudHNdPC9BPgo8QSBIUkVGPSIjVE9QQ1RSWVMiPltMb2NhdGlvbnNdPC9BPgo8L1NNQUxMPgo8UD4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIENPTFNQQU49MyBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI0MwQzBDMCI+TW9udGhseSBTdGF0aXN0aWNzIGZvciBBdWd1c3QgMjAxMDwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBIaXRzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjIwMjY2PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBGaWxlczwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj48Qj4xNzAzNzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgUGFnZXM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+NDk4ODwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgVmlzaXRzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjE3OTc8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBXSURUSD0zODA+PEZPTlQgU0laRT0iLTEiPlRvdGFsIGtCIEZpbGVzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjIwNzI0NTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwga0IgSW48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwga0IgT3V0PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBVbmlxdWUgU2l0ZXM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTI5OTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgVW5pcXVlIFVSTHM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTYwPC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBVbmlxdWUgUmVmZXJyZXJzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjI3OTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgVW5pcXVlIFVzZXJuYW1lczwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBVbmlxdWUgVXNlciBBZ2VudHM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+NTkyPC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIFdJRFRIPTM4MCBCR0NPTE9SPSIjQzBDMEMwIj48Rk9OVCBTSVpFPS0xIENPTE9SPSIjQzBDMEMwIj4uPC9GT05UPjwvVEg+CjxUSCBXSURUSD02NSBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1yaWdodD48Rk9OVCBTSVpFPS0xPkF2ZyA8L0ZPTlQ+PC9USD4KPFRIIFdJRFRIPTY1IEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+TWF4IDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5IaXRzIHBlciBIb3VyPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MTQwPC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj41MDQ8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+SGl0cyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MzM3NzwvQj48L0ZPTlQ+PC9URD4KPFREIFdJRFRIPTY1IEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+PEI+NTA3MzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5GaWxlcyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MjgzOTwvQj48L0ZPTlQ+PC9URD4KPFREIFdJRFRIPTY1IEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+PEI+NDMyMzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5QYWdlcyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+ODMxPC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj4xMTU4PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPlZpc2l0cyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+Mjk5PC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj40MDM8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+a0IgRmlsZXMgcGVyIERheTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgV0lEVEg9NjU+PEZPTlQgU0laRT0iLTEiPjxCPjM0NTQxPC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj41MTkxODwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5rQiBJbiBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIFdJRFRIPTY1IEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+PEI+MDwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5rQiBPdXQgcGVyIERheTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgV0lEVEg9NjU+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBXSURUSD02NSBBTElHTj1yaWdodD48Rk9OVCBTSVpFPS0xPjxCPjA8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQ09MU1BBTj0zIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjQzBDMEMwIj4KPEZPTlQgU0laRT0iLTEiPkhpdHMgYnkgUmVzcG9uc2UgQ29kZTwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5Db2RlIDIwMCAtIE9LPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjE3MDM3PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPkNvZGUgMjA2IC0gUGFydGlhbCBDb250ZW50PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjQ3PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPkNvZGUgMzAxIC0gTW92ZWQgUGVybWFuZW50bHk8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTg1PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPkNvZGUgMzAyIC0gRm91bmQ8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+Q29kZSAzMDQgLSBOb3QgTW9kaWZpZWQ8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTgxMzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5Db2RlIDQwMCAtIEJhZCBSZXF1ZXN0PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+Q29kZSA0MDEgLSBVbmF1dGhvcml6ZWQ8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5Db2RlIDQwNCAtIE5vdCBGb3VuZDwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTU1PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iREFZU1RBVFMiPjwvQT4KPElNRyBTUkM9ImRhaWx5X3VzYWdlXzIwMTAwOC5wbmciIEFMVD0iRGFpbHkgdXNhZ2UgZm9yIEF1Z3VzdCAyMDEwIiBIRUlHSFQ9NDAwIFdJRFRIPTUxMj48UD4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIENPTFNQQU49MTcgQUxJR049Y2VudGVyPkRhaWx5IFN0YXRpc3RpY3MgZm9yIEF1Z3VzdCAyMDEwPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPkRheTwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwNWMiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+RmlsZXM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBjMGZmIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPlBhZ2VzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmZmYwMCIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5WaXNpdHM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjZmY4MDAwIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPlNpdGVzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmMDAwMCIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBGPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwODBGRiIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBJbjwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMEZGMDAiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgT3V0PC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTUuODclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjcwNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xNS44NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43Mzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTQuODIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjE1LjY0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI2MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMC4wOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMjIwODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xNS41NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUwNzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjUuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDMyMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yNS4zNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTU4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIzLjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMi40MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjcuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTE5MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjUuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NDY2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIyLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM2NjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjEuNDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMS4zNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zOTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjEuODElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzQ5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjI2Ljg3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ2MTUyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIyLjI3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDM3NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMS41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNjgzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIxLjYyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjEuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjE5Ljg3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yNC43MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NzA3MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMi43MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI0MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTEuOTQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA0NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMi4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTQuNDElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjgyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjE1LjY5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xNy45NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjczNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMC45NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjcxODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjU0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjYyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjY1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjUxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni43MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MTU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPC9UQUJMRT4KPFA+CjxBIE5BTUU9IkhPVVJTVEFUUyI+PC9BPgo8SU1HIFNSQz0iaG91cmx5X3VzYWdlXzIwMTAwOC5wbmciIEFMVD0iSG91cmx5IHVzYWdlIGZvciBBdWd1c3QgMjAxMCIgSEVJR0hUPTI1NiBXSURUSD01MTI+PFA+CjxUQUJMRSBXSURUSD01MTAgQk9SREVSPTIgQ0VMTFNQQUNJTkc9MSBDRUxMUEFERElORz0xPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBDT0xTUEFOPTE5IEFMSUdOPWNlbnRlcj5Ib3VybHkgU3RhdGlzdGljcyBmb3IgQXVndXN0IDIwMTA8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEFMSUdOPWNlbnRlciBST1dTUEFOPTIgQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPkhvdXI8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDA4MDVjIiBDT0xTUEFOPTM+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDAwMGZmIiBDT0xTUEFOPTM+PEZPTlQgU0laRT0iLTEiPkZpbGVzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwYzBmZiIgQ09MU1BBTj0zPjxGT05UIFNJWkU9Ii0xIj5QYWdlczwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiNmZjAwMDAiIENPTFNQQU49Mz48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwRkYiIENPTFNQQU49Mz48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBGRjAwIiBDT0xTUEFOPTM+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwNWMiPjxGT05UIFNJWkU9Ii0yIj5Bdmc8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDA4MDVjIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTIiPlRvdGFsPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwMDBmZiI+PEZPTlQgU0laRT0iLTIiPkF2ZzwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMiI+VG90YWw8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBjMGZmIj48Rk9OVCBTSVpFPSItMiI+QXZnPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwYzBmZiIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0yIj5Ub3RhbDwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiNmZjAwMDAiPjxGT05UIFNJWkU9Ii0yIj5Bdmc8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjZmYwMDAwIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTIiPlRvdGFsPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwMDBmZiI+PEZPTlQgU0laRT0iLTIiPkF2ZzwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMiI+VG90YWw8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBGRjAwIj48Rk9OVCBTSVpFPSItMiI+QXZnPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwRkYwMCIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0yIj5Ub3RhbDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjYwNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjU2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjYwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj43LjI4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzIzOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQ5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQxNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjkxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU5NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNTgwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjc2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ4MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj42Ljc4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NjUyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDQ4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUyNDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi41MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS43OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMzI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS45NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjk4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY5MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MTQxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzYxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuODMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTY1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzOTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40ODg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi40MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDkzMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ4OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjQxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ1MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjY2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjI5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkxMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NDc3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExOTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS44OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNDQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODY3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuMDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzM2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuNzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTA1MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjMzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42NDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4yMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41Mzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4xNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDk3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY1ODI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4xOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjc4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU4MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjU1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzNTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODEzMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTExNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjUxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45NDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS41NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xOTY0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNzgyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuNjglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExMTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni41MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni40OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMTM3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuODYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjM5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4xNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDExPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMDY2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuODIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwOTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNzI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS40NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNTM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1MjA0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuMzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuNDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjA5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI1MDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4wNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzNzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni43NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA0MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj42LjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj44LjE2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxMDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI2NDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4xMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjY1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC41NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjY0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk5ODQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC44MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTY2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk5NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44OTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4yOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNjM3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuMTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDAxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuOTQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkyNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjQ0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjE5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4ODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTEzMjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS40NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkzNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjYxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4zMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjQ5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk4OTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC43NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjcwNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQ4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42NDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My43NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzY0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My45NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgwOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjk5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4zMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4yMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNDA3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg0NDA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY1NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjI0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU4ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjk1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzAxMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QVVJMUyI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTA+VG9wIDMwIG9mIDE2MCBUb3RhbCBVUkxzPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPiM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDgwNWMiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiNmZjAwMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEY8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDAwZmYiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEluPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBGRjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBPdXQ8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+VVJMPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNTczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuNzYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ3NzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ny4xMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8iPi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjUzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvZmF2aWNvbi5pY28iPi9mYXZpY29uLmljbzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA0MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9tYW51YWwuaHRtbCI+L21hbnVhbC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yOTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qc3Rlc3QuaHRtbCI+L2pzdGVzdC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yOTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9odG1sdGVzdC5odG1sIj4vaHRtbHRlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTczMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLyI+L2NvbnRyaWIvcGhwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuODclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvbWl4ZWR0ZXN0Lmh0bWwiPi9taXhlZHRlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI4OTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTEuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjguemlwIj4vY29kZW1pcnJvci0wLjguemlwPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MTgzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvc3RvcnkuaHRtbCI+L3N0b3J5Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jc3N0ZXN0Lmh0bWwiPi9jc3N0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi8iPi9jb250cmliL3B5dGhvbi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvY3NoYXJwLyI+L2NvbnRyaWIvY3NoYXJwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvIj4vY29udHJpYi9zcWwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb21wcmVzcy5odG1sIj4vY29tcHJlc3MuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9ncm9vdnkvIj4vY29udHJpYi9ncm9vdnkvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvbHVhLyI+L2NvbnRyaWIvbHVhLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9zcGFycWx0ZXN0Lmh0bWwiPi9zcGFycWx0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjI1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg3NzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLnppcCI+L2NvZGVtaXJyb3IuemlwPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3NjaGVtZS8iPi9jb250cmliL3NjaGVtZS88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjI0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvZmFxLmh0bWwiPi9mYXEuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9MSUNFTlNFIj4vTElDRU5TRTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9vbWV0YS8iPi9jb250cmliL29tZXRhLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3Bsc3FsLyI+L2NvbnRyaWIvcGxzcWwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2hpZ2hsaWdodC5odG1sIj4vaGlnaGxpZ2h0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9weXRob24vTElDRU5TRSI+L2NvbnRyaWIvcHl0aG9uL0xJQ0VOU0U8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8uZ2l0L0hFQUQiPi8uZ2l0L0hFQUQ8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8uZ2l0L2luZm8vcmVmcyI+Ly5naXQvaW5mby9yZWZzPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvLyI+L2NvbnRyaWIvLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvLyI+L2NvbnRyaWIvcGhwLy88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvTElDRU5TRSI+L2NvbnRyaWIvcGhwL0xJQ0VOU0U8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTA+VG9wIDEwIG9mIDE2MCBUb3RhbCBVUkxzIEJ5IGtCIEY8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmMDAwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMEZGMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5VUkw8L0ZPTlQ+PC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyODk5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjExLjA1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3ItMC44LnppcCI+L2NvZGVtaXJyb3ItMC44LnppcDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj43Ljc2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0Nzc1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuMTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvIj4vPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS43NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDQxNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L21hbnVhbC5odG1sIj4vbWFudWFsLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc3MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjIzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3IuemlwIj4vY29kZW1pcnJvci56aXA8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQxODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9zdG9yeS5odG1sIj4vc3RvcnkuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTczMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLyI+L2NvbnRyaWIvcGhwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzODY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLWxhdGVzdC56aXAiPi9jb2RlbWlycm9yLWxhdGVzdC56aXA8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjUzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvZmF2aWNvbi5pY28iPi9mYXZpY29uLmljbzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb21wcmVzcy5odG1sIj4vY29tcHJlc3MuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQ3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ3NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjIzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzdGVzdC5odG1sIj4vanN0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8QSBOQU1FPSJUT1BFTlRSWSI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49Nj5Ub3AgMTAgb2YgMzEgVG90YWwgRW50cnkgUGFnZXM8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmZmYwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+VmlzaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBjMGZmIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPlVSTDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj43Ljc2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NjcuNDElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0LyI+LzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjguMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L21hbnVhbC5odG1sIj4vbWFudWFsLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuMjMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L3N0b3J5Lmh0bWwiPi9zdG9yeS5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC44NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9taXhlZHRlc3QuaHRtbCI+L21peGVkdGVzdC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC45MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3BocC8iPi9jb250cmliL3BocC88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQ3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNjYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzdGVzdC5odG1sIj4vanN0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2h0bWx0ZXN0Lmh0bWwiPi9odG1sdGVzdC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjMyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi8iPi9jb250cmliL3B5dGhvbi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2Nzc3Rlc3QuaHRtbCI+L2Nzc3Rlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC44NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9sdWEvIj4vY29udHJpYi9sdWEvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QRVhJVCI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49Nj5Ub3AgMTAgb2YgMzQgVG90YWwgRXhpdCBQYWdlczwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjZmZmZjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5WaXNpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+VVJMPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNTczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuNzYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDE2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjM2LjY4JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8iPi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM1NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjc1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMy43NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvbWFudWFsLmh0bWwiPi9tYW51YWwuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanN0ZXN0Lmh0bWwiPi9qc3Rlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS41NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvaHRtbHRlc3QuaHRtbCI+L2h0bWx0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuODUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLyI+L2NvbnRyaWIvcGhwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvc3RvcnkuaHRtbCI+L3N0b3J5Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjg3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L21peGVkdGVzdC5odG1sIj4vbWl4ZWR0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi43MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29tcHJlc3MuaHRtbCI+L2NvbXByZXNzLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMzglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcHl0aG9uLyI+L2NvbnRyaWIvcHl0aG9uLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4xMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvIj4vY29udHJpYi9zcWwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QU0lURVMiPjwvQT4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPUNFTlRFUiBDT0xTUEFOPTE0PlRvcCAzMCBvZiAxMjk5IFRvdGFsIFNpdGVzPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPiM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDgwNWMiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDAwZmYiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkZpbGVzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjZmYwMDAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBGPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDAwMGZmIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBJbjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwRkYwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgT3V0PC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjZmZmZjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5WaXNpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+SG9zdG5hbWU8L0ZPTlQ+PC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM5MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE5MzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC45MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MjEyLjExNy4xNTguMjIyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMwNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjgwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzOTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MjIxLjI0OS4xMTYuMjA2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjI2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjk5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NjcuMTk1LjExMi4xNzY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTk4NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjk2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjE3My4xNjAuNzYuMTg1PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjA3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyNDI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4xMDkuMTg4LjMuMjE5PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjEyMS4xNzYuMTI0LjY1PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxMS4xMzkuMjYuMTM5PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjYxLjE2OC4yMjIuMjIyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxOC44MC4yMzUuMzY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjczJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj45MS4xOTYuMTA5LjEwMjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40ODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44NS4xNzguMTk1LjE0OTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ0NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjEwOS4xODguMi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj43OS4yNTUuMTI2LjIyMDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj43Ny4xMjYuMTE3LjEzOTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4yMTMuMTcyLjYxLjE3ODwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM5ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjkyLjE5Ni4yMjEuNTg8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxMy40Ni4xMTUuMTQzPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTY4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NjkuNzAuODguMTE0PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjMyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU3MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjI4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjc3LjEyNi4zLjE4NjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExMDE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44MC4xNzQuMTU4Ljk2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTk3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NzQuMTEyLjM3LjExNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxNi4yMzkuNDUuNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkzNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjg0LjE0OC44LjI0NTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg1ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjk5LjIyNC4xNDEuODQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40ODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44NC45Ny4yMjcuMjEyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+ODYuMTUuMjAuMjQzPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAzNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIwNy4xNzAuMjM4LjEzNjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44MC4xNTMuMjYuMTU2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjcyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjgwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MTI4LjIzMi4xMC4xMjE8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjMwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43ODY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4xNjYuNzAuNDMuMTg2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTQ+VG9wIDEwIG9mIDEyOTkgVG90YWwgU2l0ZXMgQnkga0IgRjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDAwMGZmIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5GaWxlczwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmMDAwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMEZGMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmZmYwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+VmlzaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBjMGZmIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPkhvc3RuYW1lPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS44MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMzkyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIyMS4yNDkuMTE2LjIwNjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC45MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MTA5LjE4OC4zLjIxOTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xOTg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MTczLjE2MC43Ni4xODU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzkwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTkzNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4yMTIuMTE3LjE1OC4yMjI8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ0NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjEwOS4xODguMi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzOTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj45Mi4xOTYuMjIxLjU4PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjI2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjk5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NjcuMTk1LjExMi4xNzY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE4MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjkxLjE5Ni4xMDkuMTAyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj42OS43MC44OC4xMTQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTAxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+ODAuMTc0LjE1OC45NjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QUkVGUyI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49ND5Ub3AgNTAgb2YgMjc5IFRvdGFsIFJlZmVycmVyczwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBjMGZmIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPlJlZmVycmVyPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnM8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9taXhlZHRlc3QuaHRtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9taXhlZHRlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE0JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc4MjA1L3dlYi14bWwtZWRpdG9yLXdpdGgteG1sLXN5bnRheC1oaWdobGlnaHRpbmciIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc4MjA1L3dlYi14bWwtZWRpdG9yLXdpdGgteG1sLXN5bnRheC1oaWdobGlnaHRpbmc8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci8iIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvanN0ZXN0Lmh0bWwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvanN0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9odG1sdGVzdC5odG1sIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2h0bWx0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNjE5MTY3L3RleHRhcmVhLXRoYXQtY2FuLWRvLXN5bnRheC1oaWdobGlnaHRpbmctb24tdGhlLWZseSIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNjE5MTY3L3RleHRhcmVhLXRoYXQtY2FuLWRvLXN5bnRheC1oaWdobGlnaHRpbmctb24tdGhlLWZseTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuY28udWsvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jby51ay9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjEwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sLyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vdHJhbnNsYXRlLmdvb2dsZXVzZXJjb250ZW50LmNvbS90cmFuc2xhdGVfYyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3RyYW5zbGF0ZS5nb29nbGV1c2VyY29udGVudC5jb20vdHJhbnNsYXRlX2M8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA5JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly93d3cueW1hY3Mub3JnLyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3d3dy55bWFjcy5vcmcvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vYWpheGlhbi5jb20vYXJjaGl2ZXMvaW1wbGVtZW50aW5nLWEtc3ludGF4LWhpZ2xpZ2h0aW5nLWphdmFzY3JpcHQtZWRpdG9yLWluLWphdmFzY3JpcHQiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9hamF4aWFuLmNvbS9hcmNoaXZlcy9pbXBsZW1lbnRpbmctYS1zeW50YXgtaGlnbGlnaHRpbmctamF2YXNjcmlwdC1lZGl0b3ItaW4tamF2YXNjcmlwdDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuZGUvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5kZS9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9jb2RlbWlycm9yIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvY29kZW1pcnJvcjwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3F1ZXJ5Ny5jb20vY29kZW1pcnJvci1qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHRpbmciIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9xdWVyeTcuY29tL2NvZGVtaXJyb3ItamF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0aW5nPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd2ViYXBwcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNTMyL2lzLXRoZXJlLWEtd2ViLWFwcGxpY2F0aW9uLXRoYXQtY2FuLXJlcGxhY2UtYW4taWRlLWxpa2UtZWNsaXBzZSIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3dlYmFwcHMuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzUzMi9pcy10aGVyZS1hLXdlYi1hcHBsaWNhdGlvbi10aGF0LWNhbi1yZXBsYWNlLWFuLWlkZS1saWtlLWVjbGlwc2U8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTIzMjc2NC9qcXVlcnktcGx1Z2luLWZvci1odG1sLWVkaXRvci13aXRoLXN5bnRheC1jb2xvcmluZyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMjMyNzY0L2pxdWVyeS1wbHVnaW4tZm9yLWh0bWwtZWRpdG9yLXdpdGgtc3ludGF4LWNvbG9yaW5nPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc3BlY2t5Ym95LmNvbS8yMDEwLzA3LzI1L3RoZS1tb3N0LXBvd2VyZnVsLWFuZC1mZWF0dXJlLXJpY2gtd2ViLWJhc2VkLWNvZGUtZWRpdG9ycy1pZGVzLyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3NwZWNreWJveS5jb20vMjAxMC8wNy8yNS90aGUtbW9zdC1wb3dlcmZ1bC1hbmQtZmVhdHVyZS1yaWNoLXdlYi1iYXNlZC1jb2RlLWVkaXRvcnMtaWRlcy88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9iaWxsbWlsbC5vcmcvc3RhdGljL2NhbnZhc3R1dG9yaWFsL2NvZGEuaHRtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2JpbGxtaWxsLm9yZy9zdGF0aWMvY2FudmFzdHV0b3JpYWwvY29kYS5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZ2l0aHViLmNvbS9tYXJpam5oL0NvZGVNaXJyb3IiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvcjwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuY2Evc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jYS9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5hdS9zZWFyY2giIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5hdS9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNzkxODUvZnJlZS1zeW50YXgtaGlnaGxpZ2h0aW5nLWVkaXRvci1jb250cm9sLWluLWphdmFzY3JpcHQiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc5MTg1L2ZyZWUtc3ludGF4LWhpZ2hsaWdodGluZy1lZGl0b3ItY29udHJvbC1pbi1qYXZhc2NyaXB0PC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbS5oay90cmFuc2xhdGUiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbS5oay90cmFuc2xhdGU8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuZXMvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5lcy9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xOTgyNzEvaXMtdGhlcmUtYS1nb29kLWluLWJyb3dzZXItY29kZS1lZGl0b3IiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTk4MjcxL2lzLXRoZXJlLWEtZ29vZC1pbi1icm93c2VyLWNvZGUtZWRpdG9yPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvbWFudWFsLmh0bWwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvbWFudWFsLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3R3aXR0ZXIuY29tL21hcmlqbmpoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vdHdpdHRlci5jb20vbWFyaWpuamg8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3Zjb21tLm5vLWlwLm9yZzoxMDAvYWFwU2VydmljZVJlcXVlc3QuaHRtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3Zjb21tLm5vLWlwLm9yZzoxMDAvYWFwU2VydmljZVJlcXVlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjMyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5kZS91cmwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLmRlL3VybDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjMzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5ydS9zZWFyY2giIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLnJ1L3NlYXJjaDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvMjUzMiIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2Rldi5ja2VkaXRvci5jb20vdGlja2V0LzI1MzI8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wYXJpc29uX29mX0phdmFzY3JpcHQtYmFzZWRfc291cmNlX2NvZGVfZWRpdG9ycyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wYXJpc29uX29mX0phdmFzY3JpcHQtYmFzZWRfc291cmNlX2NvZGVfZWRpdG9yczwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2luZGV4Lmh0bWwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvaW5kZXguaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzNjcwOTkvYmVzdC1vbmxpbmUtY29kZS1lZGl0b3Itd2l0aC1hLXRleHRhcmVhIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzNjcwOTkvYmVzdC1vbmxpbmUtY29kZS1lZGl0b3Itd2l0aC1hLXRleHRhcmVhPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mzg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly93d3cuYml0cmVwb3NpdG9yeS5jb20vc3ludGF4LWhpZ2hsaWdodGVycy5odG1sIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3LmJpdHJlcG9zaXRvcnkuY29tL3N5bnRheC1oaWdobGlnaHRlcnMuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5jby51ay91cmwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLmNvLnVrL3VybDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3LnNlbmNoYS5jb20vZm9ydW0vc2hvd3RocmVhZC5waHAiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuc2VuY2hhLmNvbS9mb3J1bS9zaG93dGhyZWFkLnBocDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZC5oYXRlbmEubmUuanAvdGVyYW1ha28vMjAwODExMjUvcDEiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9kLmhhdGVuYS5uZS5qcC90ZXJhbWFrby8yMDA4MTEyNS9wMTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvNjAyIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvNjAyPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9kcnVwYWwub3JnL3Byb2plY3Qvd3lzaXd5Z19jb2RlbWlycm9yIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZHJ1cGFsLm9yZy9wcm9qZWN0L3d5c2l3eWdfY29kZW1pcnJvcjwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL3dlYmRldi8yMDQ2Ni8iIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3Mvd2ViZGV2LzIwNDY2LzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2NvZGVwcmVzcy9mb3J1bXMvZm9ydW0vNjU0NTA3L3RvcGljLzMyNDU3MzgiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvY29kZXByZXNzL2ZvcnVtcy9mb3J1bS82NTQ1MDcvdG9waWMvMzI0NTczODwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwMTkwNTYvaG93LXRvLWZvcm1hdC1jb250ZW50LWluLWh0bWwtdGV4dGFyZWEtYXMteG1sLW9uLXRoZS1mbHkiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTAxOTA1Ni9ob3ctdG8tZm9ybWF0LWNvbnRlbnQtaW4taHRtbC10ZXh0YXJlYS1hcy14bWwtb24tdGhlLWZseTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vdHdpdHRlci5jb20vIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vdHdpdHRlci5jb20vPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly90d2l0dGVyLmNvbS9tcnRua2wiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly90d2l0dGVyLmNvbS9tcnRua2w8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuY28uaW4vc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jby5pbi9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuaXQvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5pdC9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8QSBOQU1FPSJUT1BTRUFSQ0giPjwvQT4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPUNFTlRFUiBDT0xTUEFOPTQ+VG9wIDIwIG9mIDQ2IFRvdGFsIFNlYXJjaCBTdHJpbmdzPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPiM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDgwNWMiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+U2VhcmNoIFN0cmluZzwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjU1LjA4JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmNvZGVtaXJyb3I8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+OC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlIG1pcnJvcjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZW1pcnJvciBtYW51YWw8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjIxJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmh0dHA6Ly9jb2RlbWlycm9yLm5ldC88L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjE0JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlbWlycm9yIGRvY3VtZW50YXRpb248L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi9pbmRleC5odG1sPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5odHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2pzdGVzdC5odG1sPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlIGVkaXRvciBicm93c2VyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZSBtaXJyb3M8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjExPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlbWlycm9yIG1hdWFsPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+aHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jb250cmliL2NzaGFycC88L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5tYXJpam4gaGF2ZXJiZWtlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+YnJvd3NlciBjb2RlIGVkaXRvcjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmJyb3dzZXIgc3ludGF4IGNvbG9yaW5nPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+YnJvd3Nlci1iYXNlZCBzeW50YXggaGlnaGxpZ2h0aW5nPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZSBtaXJyaW9yPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZW1pcm9yPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZW1pcnJvIHRhYjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmNvZGVtaXJyb3IgY29udGludW91c3NjYW5uaW5nPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8QSBOQU1FPSJUT1BVU0VSUyI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTQ+VG9wIDEgb2YgMSBUb3RhbCBVc2VybmFtZXM8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+RmlsZXM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiNmZjAwMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEY8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDAwZmYiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEluPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBGRjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBPdXQ8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiNmZmZmMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPlZpc2l0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5Vc2VybmFtZTwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPm1hcmlqbjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QQUdFTlRTIj48L0E+CjxUQUJMRSBXSURUSD01MTAgQk9SREVSPTIgQ0VMTFNQQUNJTkc9MSBDRUxMUEFERElORz0xPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1DRU5URVIgQ09MU1BBTj00PlRvcCAxNSBvZiA1OTIgVG90YWwgVXNlciBBZ2VudHM8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5Vc2VyIEFnZW50PC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45NDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC42NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45Mzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC42MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjY3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTkyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTc8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42Ljg8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDAzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuOTklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS44NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM1NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjc1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuODwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzIwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuODwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKGNvbXBhdGlibGU7IFlhaG9vISBTbHVycC8zLjA7IGh0dHA6Ly9oZWxwLnlhaG9vLmNvbS9oZWxwL3VzL3lzZWFyY2gvc2x1cnApPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4yMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4xOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuODwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QQ1RSWVMiPjwvQT4KPElNRyBTUkM9ImN0cnlfdXNhZ2VfMjAxMDA4LnBuZyIgQUxUPSJVc2FnZSBieSBMb2NhdGlvbiBmb3IgQXVndXN0IDIwMTAiIEhFSUdIVD0zMDAgV0lEVEg9NTEyPjxQPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTI+VG9wIDMwIG9mIDY3IFRvdGFsIExvY2F0aW9uczwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDAwMGZmIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5GaWxlczwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmMDAwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMEZGMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5Mb2NhdGlvbjwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MzE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjI2LjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ1NTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjYuNzIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTMyMzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjUuNjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Vbml0ZWQgU3RhdGVzPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA1ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMC4xNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzk2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEwLjU0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIzNTI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjExLjM1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+R2VybWFueTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni40NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTc2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuOTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM2ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkdyZWF0IEJyaXRhaW4gKFVLKTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExMzA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDUzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI5OTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4yNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlJ1c3NpYW4gRmVkZXJhdGlvbjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk3MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40Ljc5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM3OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ5NDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4zOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkNoaW5hPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Njc3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuOTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzU2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjY1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+RnJhbmNlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjkwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuODQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjcyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+SXNyYWVsPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Njg4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMzklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzQ2MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+SmFwYW48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41OTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi45MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41Mjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MTcyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5JdGFseTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi43OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi45OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42MjY1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5DYW5hZGE8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDg5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuODclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTg4NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjg0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TmV0aGVybGFuZHM8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDg3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDUwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDQxMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjEzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+QXVzdHJhbGlhPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjY0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQ4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5Nzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlNwYWluPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMxOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIzNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMwMjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkN6ZWNoIFJlcHVibGljPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMxODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjY2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzMjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlBvbGFuZDwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yODg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjY4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuODAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Lb3JlYSAoU291dGgpPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI4MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI2MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMwNjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkJlbGdpdW08L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjczMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjMyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+SW5kaWE8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQ0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzIzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+VWtyYWluZTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4yMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4zOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMDEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5CcmF6aWw8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMTklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMzIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjk2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TWV4aWNvPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjA3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjE4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI3NDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4zMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPk5vcndheTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC44MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNTU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5UdXJrZXk8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTUzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjc0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+VW5yZXNvbHZlZC9Vbmtub3duPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzMDQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlN3ZWRlbjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Um9tYW5pYTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjY1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5HcmVlY2U8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTcxNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+QXVzdHJpYTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyNzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkh1bmdhcnk8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjc5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5TbG92YWsgUmVwdWJsaWM8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPC9UQUJMRT4KPFA+CjwvQ0VOVEVSPgo8UD4KPEhSPgo8VEFCTEUgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPTAgQ0VMTFNQQUNJTkc9MCBCT1JERVI9MD4KPFRSPgo8VEQgQUxJR049bGVmdCBWQUxJR049dG9wPgo8U01BTEw+R2VuZXJhdGVkIGJ5CjxBIEhSRUY9Imh0dHA6Ly93d3cubXJ1bml4Lm5ldC93ZWJhbGl6ZXIvIj48U1RST05HPldlYmFsaXplciBWZXJzaW9uIDIuMDE8L1NUUk9ORz48L0E+CjwvU01BTEw+CjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8IS0tIFdlYmFsaXplciBWZXJzaW9uIDIuMDEtMTAgKE1vZDogMjYtQXVnLTIwMDIpIC0tPgoKPC9CT0RZPgo8L0hUTUw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/webalizer.current</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBXZWJhbGl6ZXIgVjIuMDEtMTAgSW5jcmVtZW50YWwgRGF0YSAtIDA4LzA4LzIwMTAgMDY6NTE6MjIKMjAxMCA4IDggNiA1MSAyMgoyMDI2NiAxNzAzNyAxMjk5IDE2MCAyNzkgNTkyIDIxMjIxODgyOCA0OTg4IDE3OTcgMSAwIDAKODcgNTUgNTA0IDMgOAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjMyMTYgMjcwNCAzMjk4MDc5NyAyNjEgNzM5IDI4MSAwIDAKNTA3MyA0MzIzIDUzMTY0MDM1IDM1NSAxMTU4IDQwMyAwIDAKNDQ2NiAzNjYxIDQ3MjU5Mjg4IDM0OSAxMDY2IDM5MiAwIDAKNDM3NCAzNjgzIDQ4MjAyOTI2IDMyMSAxMDgxIDM1NyAwIDAKMjQxOSAyMDQ0IDIzMjgyNzg3IDIzMyA3MTkgMjgyIDAgMAo3MTggNjIyIDczMjg5OTUgODcgMjI1IDg0IDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjgyMSA2MDcgNzQxMzEwNSAzNjMgMCAwCjQxNCAzMjUgMzY2NTc3MiAxMDMgMCAwCjc2MyA0ODIgNTc4NzY4OSAzMzggMCAwCjUyMyA0NDggNTM3MDc3MSAxMzMgMCAwCjM2MCAzMzIgNDI0MDYwOSA5OSAwIDAKMzYxIDMxMiAzNDczOTQ4IDEwMyAwIDAKNDg4IDQxMyA1MDUwODAxIDEwNSAwIDAKNDg5IDQ1MyA1NjA4NzY1IDExNCAwIDAKMTE5MiA4NjcgMTEzMTgzMjcgMzM2IDAgMAo2NDggNTM3IDY3Mzk3NjkgMTE0IDAgMAo3NjYgNTgwIDgzMjczNzUgMTI3IDAgMAoxMTE2IDk0MyAxMjA2NDUzNCAyMDggMCAwCjEyODUgMTExMSAxMjQyNzc3NyAzMjMgMCAwCjEyMzkgMTA0NiAxMjM1NTI0NCAyNTggMCAwCjEyODUgMTA5MSAxNTU2OTIwOCAyNzIgMCAwCjEwOTggOTQyIDEyODA4OTUxIDI1NCAwIDAKMTM3MyAxMDQzIDEyOTUxNjg3IDQwNyAwIDAKOTQyIDg1NyAxMDIyNDEyMSAyMjcgMCAwCjk5NyA4OTkgMTA4OTI2MDUgMjA4IDAgMAoxMDAxIDkyNiAxMTU5MTY1MSAyMDkgMCAwCjkzNCA4NTYgMTAxMzA3NzAgMjE2IDAgMAo3MDUgNjQzIDgzODE3MzcgMTY0IDAgMAo4MDkgNzM2IDg2NDI0OTcgMTYwIDAgMAo2NTcgNTg4IDcxODExMTUgMTQ3IDAgMAowCjAKMAoxNzAzNwowCjAKMAowCjAKNDcKMAoxODUKMjAKMAoxODEzCjAKMAo4CjEKMAowCjExNTUKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAojIC11cmxzLSAKL2NvbnRyaWIvbHVhL0xJQ0VOU0UKMCA3IDAgODgyNiAzIDIgMCAwCi9jb2RlbWlycm9yLnppcAowIDUwIDAgODk4MTAxMCAwIDAgMCAwCi9jb250cmliL3Bsc3FsL2pzL3BhcnNlcGxzcWwuanMKMSAyMiAwIDE4MTM2OCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvODUvMGU1OGNlNjk3YWZhMmUxZjllYjE0NjVlNTU1ZTI5OWJmYWFkYzEKMCAzIDAgMTU3MiAwIDAgMCAwCi9jb250cmliL29tZXRhL2pzLwowIDIgMCAyMzk2IDAgMCAwIDAKLy5naXQvb2JqZWN0cy8zYi8wNjgwNWI2ODI2OTc1YmYwNjYwMTllMTFmMjYzMDc4NTcwMmI1MQowIDMgMCAxNTcyIDAgMCAwIDAKLwowIDE1NzMgMCAxNTEyOTg3OSAxMTc5IDE4NSAwIDAKL3dlYmFsaXplci91c2FnZV8yMDEwMDguaHRtbAowIDIgMCAzMDQ4MjUgMCAwIDAgMAovY29udHJpYi9vbWV0YS9qcy90b2tlbml6ZW9tZXRhLmpzCjEgMjMgMCAxNzc1NDAgMCAwIDAgMAovY3NzL3htbGNvbG9ycy5jc3MKMSA0MDcgMCAyMDE2MjQgMCAwIDAgMAovY29udHJpYi9wbHNxbC9qcy8KMCAxIDIgOTg0IDAgMCAwIDAKLy5naXQvb2JqZWN0cy9kZi81MmM1NDgyYjU2NDM1NzIxYTU4ZDU2YmZhNTU0NDg5OTBlNjcxMAowIDMgMCA1NTUgMCAwIDAgMAovLmdpdC9vYmplY3RzL2RjL2U4OWMxMTI5YWUyY2E0OGUzZTk2MDIzNTk4YzEwMmVmYjQyMjlkCjAgMyAwIDE2NzcgMCAwIDAgMAovY29udHJpYi9waHAvLwowIDIyIDAgMjMwNTYwIDEgMCAwIDAKL2NvbnRyaWIvbHVhLwowIDU2IDAgNzA5MDAgMTUgOSAwIDAKL3dlYmFsaXplci8KMCAxIDAgNDE2MiAwIDAgMCAwCi9jb250cmliL3Bsc3FsL2Nzcy9wbHNxbGNvbG9ycy5jc3MKMSAxNyAwIDk1NzEgMCAwIDAgMAovanN0ZXN0Lmh0bWwKMCAyOTggMCA0ODcwMTQgMjkgMjEgMCAwCi9jb250cmliL3NjaGVtZS9MSUNFTlNFCjAgMTUgMCAxMjU1OCA0IDYgMCAwCi8uZ2l0L0hFQUQKMCAyNCAwIDU1MiAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMTkvOTM5MTkwNmJiMTFlNDkwYjIzZmNlNzY4ODllM2VhMDA1NjRhN2MKMCAzIDAgMTY3NyAwIDAgMCAwCi8uZ2l0LwowIDEgMCAzODE3IDAgMCAwIDAKL2NvbnRyaWIvY3NoYXJwL2pzLwowIDIgMjUgMjQxMCAwIDEgMCAwCi8uZ2l0L29iamVjdHMvOGYvMjRhYjQyOTBmMzhmYThmMmNkZWRhNDFjZGFkYTFiODBlOTRlMGEKMCAzIDUgMTQ3MjEgMCAwIDAgMAovZ2l0d2ViL2dpdC1sb2dvLnBuZwoxIDEgMCAyMDcgMCAwIDAgMAovLmdpdC9vYmplY3RzLzJlLzE4ZDc5MTcxNjc1MTVmYTNjY2RlYzFkNzIxMzZmZTI0OWRhOGMwCjAgMyAwIDQyOSAwIDAgMCAwCi9jb250cmliL3B5dGhvbi9jc3MvcHl0aG9uY29sb3JzLmNzcwoxIDczIDAgNTE2OTYgMCAwIDAgMAovanMvdW5kby5qcwoxIDc2OCAwIDk5MzAzNjQgMCAwIDAgMAovbWFudWFsLmh0bWwKMCAzNTQgMCAxMDY2NTM1OSAxNDUgNzYgMCAwCi9jb250cmliL3BocC9jc3MvcGhwY29sb3JzLmNzcwoxIDE1MiAwIDMzNzEyNSAwIDAgMCAwCi8uZ2l0L29iamVjdHMvOTgvN2E0NTc0NmFhMWY4MmUzYmM2NzcxN2EwZDJhYjcxMTRlYzE2NGQKMCAzIDAgNDMyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy9hOC9hNzhmY2M1NDZkMTFiMDM2ZGU5YWViM2MyNDIyMTVjMTkxZDA4YwowIDMgMCA4MjIgMCAwIDAgMAovY29udHJpYi9zY2hlbWUvanMvcGFyc2VzY2hlbWUuanMKMSAzMyAwIDMzNjIwNCAwIDAgMCAwCi9qcy8KMCA4IDAgMzI0MDAgMiA0IDAgMAovY3NzL3Blb3BsZS5qcGcKMSAxMDQ0IDAgMTM0ODI0NTcgMCAwIDAgMAovanMvdG9rZW5pemUuanMKMSA3NzggMCAxNDEzMTI3IDAgMCAwIDAKL2NvbnRyaWIvc3FsLwowIDkxIDAgMTE3OTcyIDE0IDkgMCAwCi8uZ2l0L29iamVjdHMvMjcvMDQ4ODYyZTI5ODVmYjk4ZWFmMWZhNTk1N2UxNTk1MWNjODZkYjEKMCAzIDAgMjEyMTMgMCAwIDAgMAovY29udHJpYi9zY2hlbWUvY3NzL3NjaGVtZWNvbG9ycy5jc3MKMSAzMyAwIDI1OTcxIDAgMCAwIDAKLy5naXQvb2JqZWN0cy85MS8wYTQ5ZWE2MGMzY2Y4NGI2ZTdjMTdkYmQzNjk0Y2Y4Y2I1ZGI3NQowIDMgMCAzNzIgMCAwIDAgMAovLmdpdC9vYmplY3RzL2IxLzY1ZTM3NGY2N2IyMTgwOWI5NjFhZTZjODIwMWZhYzlhZmM0YmQ4CjAgMyAwIDIxMDg3IDAgMCAwIDAKL2NvbnRyaWIvcGxzcWwvY3NzLwowIDEgMCA5ODcgMCAxIDAgMAovanMvZWRpdG9yLmpzCjEgODIzIDAgNDIyOTk1OTMgMCAwIDAgMAovLmdpdC9vYmplY3RzLzc4LzVlZDNhYTNiNjBlNDM3YTdkNGRhYzkzNjdhYjA2ZjU1NDliNGE1CjAgMyAwIDE1NzIgMCAwIDAgMAovZ2l0d2ViL2dpdHdlYi5jc3MKMSAxIDAgODM3OSAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMDQvZDgyNTBjMzZlYzUwNjJiYmQzNzY5NzAzNDExM2U2N2UwMTc3NzMKMCAzIDAgMTY3NCAwIDAgMCAwCi9jb2RlbWlycm9yLTAuNjcuemlwCjAgMSAwIDE3MjQ5OSAwIDAgMCAwCi8uZ2l0L29iamVjdHMvZDcvM2M1ZGExZDhhZWVjZWNjZjAwYjBmMzViNjgyYjI3MjE2ZjQ5ODcKMCAzIDAgNDUwNjAgMCAwIDAgMAovY29udHJpYi9weXRob24vanMvcGFyc2VweXRob24uanMKMSA4MyAwIDE3OTMxNzYgMCAwIDAgMAovY29udHJpYi9zY2hlbWUvanMvCjAgMiAxNiAyNDEwIDAgMCAwIDAKL2NvbnRyaWIvZ3Jvb3Z5LwowIDU3IDAgMTE1MjkwIDkgMTEgMCAwCi9zdG9yeS5odG1sCjAgMTIyIDAgNDI4Mzc0NSA3NCAyNCAwIDAKLy5naXQvb2JqZWN0cy8wZS9hNGI5OWNmNmVhZjc5NTMzNWY3ZTZiMjYwMDliNjI3MzJiMmEyNQowIDMgMCA4MjIgMCAwIDAgMAovaWNvbnMvZm9sZGVyLmdpZgoxIDQgMCA5MDAgMCAwIDAgMAovLmdpdC9vYmplY3RzLzIzLzYwMzI2YjA2NDdlNmQ1MmNhMmU5MGRhMTc0NzcwMTY1MDY4NTE5CjAgMyAwIDU3MCAwIDAgMCAwCi9jb250cmliL29tZXRhL2Nzcy9vbWV0YWNvbG9ycy5jc3MKMSAyMyAwIDE0MTI0IDAgMCAwIDAKL2Nzc3Rlc3QuaHRtbAowIDExNiAwIDExODk5MiAxNyA2IDAgMAovLmdpdC9vYmplY3RzLzc3L2RkMjI0ODQwYjMyZWE3YWRkNzBhNjkyYThhYTMzYmU2MWM5OTgxCjAgMyAwIDIxMTc0IDAgMCAwIDAKL2NvZGVtaXJyb3ItMC44LnppcAowIDEyOSAwIDIzNDQ4OTgyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy8yOC9kNjY1YTE3NWI5MmUxNTY3ZDk4ZGIyNjcwYjBmNmRmOGE3NzFiYQowIDMgMCA1NzYxOCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMTAvYzQ4OTA1MjE4OTQzZTc4NmU0ODFhZGY0MzIxZDQzMmM1ZTIzNjQKMCAzIDAgMTU3MiAwIDAgMCAwCi8uZ2l0L29iamVjdHMvNzMvYjcwODk2Mzk2NzA2MmVhZGRjMmFmNzhkOWYyODllNmNkZDI2YmEKMCAzIDAgNjEyIDAgMCAwIDAKL2NvbnRyaWIvcGhwLwowIDE4NyAwIDE3NzExMjAgMzcgMTIgMCAwCi8uZ2l0L29iamVjdHMvYjUvMGMxNzM2MTU4MGU2MjQxODA2MjdjNGRkYjlkMTQ5OGM4YTk1M2UKMCAyIDAgMjUwIDAgMCAwIDAKL2NvZGVtaXJyb3ItMC42NS56aXAKMCAxIDAgMTYzMTIyIDAgMCAwIDAKL2dpdC8KMCAxIDAgNzM2IDAgMCAwIDAKL2ljb25zL2JsYW5rLmdpZgoxIDkgMCAxMzMyIDAgMCAwIDAKL2Nzcy9jc3Njb2xvcnMuY3NzCjEgMzM1IDAgMTYwODE2IDAgMCAwIDAKL2pzL3Rva2VuaXplamF2YXNjcmlwdC5qcwoxIDUyMSAwIDMyMzQyNjUgMCAwIDAgMAovLmdpdC9vYmplY3RzL2JmL2FmYjFhZTM4YjFkMDhkNzIxNjVkODI1MzNlZmJhOWZhMjlkMWQ5CjAgMyAwIDE1NzIgMCAwIDAgMAovLmdpdC9vYmplY3RzL2NlL2U1YmU4ZGRjMjcwZDI3MTUzYTExNGQwNjNhZjExNGMyZTMzZjRjCjAgMyAwIDg3NiAwIDAgMCAwCi9jb250cmliL3NjaGVtZS8KMCA1MCAwIDExMzkyNSAxNCA0IDAgMAovanMvcGFyc2Vjc3MuanMKMSAzNDkgMCAxNDExMzYwIDAgMCAwIDAKL2NvbnRyaWIvb21ldGEvanMvcGFyc2VvbWV0YS5qcwoxIDIzIDAgMzEyODYyIDAgMCAwIDAKL2ljb25zL2ltYWdlMi5naWYKMSAxIDAgMzA5IDAgMCAwIDAKL2NvbnRyaWIvc3FsL0xJQ0VOU0UKMCAxMiAwIDk4NTYgMSA1IDAgMAovanMvcGFyc2VkdW1teS5qcwoxIDIxIDAgMTc3NDUgMCAwIDAgMAovY29kZW1pcnJvci1sYXRlc3QuemlwCjAgNyAwIDE0MTg3NjAgMCAwIDAgMAovLmdpdC9vYmplY3RzLzE0L2ZmMmI5OWJlODU3OTRkYWU4ZDAwNDk2NzEwOWJjYzFmOWFkN2IzCjAgMyAwIDU3NzgwIDAgMCAwIDAKL2Nzcy9kb2NzLmNzcwoxIDE1MzMgMCA2OTA5MTUgMCAwIDAgMAovd2ViYWxpemVyL2hvdXJseV91c2FnZV8yMDEwMDgucG5nCjEgMiAwIDQzODggMCAwIDAgMAovLmdpdC9vYmplY3RzLzMyL2Y0OGNhZDA1YjRkYTY1YmQzNmQ2YWUwY2EyYjBiYjFmMGM1MzQwCjAgMyAwIDI3MDMgMCAwIDAgMAovLmdpdC9vYmplY3RzLzViLzg2N2NkNTJhN2EyY2U1OTNlOWY5MzIxOGZmM2RjYTMxNTUzNjM0CjAgMyAwIDI0MzMgMCAwIDAgMAovLmdpdC9vYmplY3RzLzQ2L2IwNTY3M2UyYTMwZGVlY2E4MWZjOTE2OWQ5NzUyMTExYmZlOWM1CjAgMyAwIDY4NCAwIDAgMCAwCi9jb2RlbWlycm9yLTAuNjMuemlwCjAgMyAwIDMxMTg4NCAwIDAgMCAwCi9jb250cmliL2NzaGFycC8KMCA5MSAwIDEzMjU2MiA3IDUgMCAwCi9mYXZpY29uLmljbwowIDExNTAgMCAxMjgzNDAwIDAgMCAwIDAKL2JpZ3Rlc3QuaHRtbAowIDQgMCAxOTU4NTIgMiAyIDAgMAovY29udHJpYi9wbHNxbC8KMCAzNiAwIDgxNDMyIDkgMyAwIDAKLy5naXQvb2JqZWN0cy85NS8xMmRlMmVmYTNmZjI0MTc5NjExYThhOThjZGJlMjQ4MDMxODJkNwowIDMgMCAyNDgxIDAgMCAwIDAKL2NvbnRyaWIvcGhwL2pzL3BhcnNlcGhwLmpzCjEgMTYyIDAgMjU5NjEzMiAwIDAgMCAwCi8uZ2l0L29iamVjdHMvZTAvNGZkMDViY2EzMGVkNWNmMDJmN2Q5ZjBkNGQxN2M4OTZiYjkwZTQKMCAzIDAgNjQ1IDAgMCAwIDAKL2NvbnRyaWIvY3NoYXJwL2Nzcy9jc2hhcnBjb2xvcnMuY3NzCjEgNjIgMCAzNzYyMCAwIDAgMCAwCi9pY29ucy91bmtub3duLmdpZgoxIDUgMCAxMjI1IDAgMCAwIDAKLy5naXQvb2JqZWN0cy8zMi9mNTIxNWM2Yjk5N2NiNGFiODkyYzM0ZjQwZDc2NTgwODlmMDBmOAowIDMgNCA1NjQgMCAwIDAgMAovY3NzL3NwYXJxbGNvbG9ycy5jc3MKMSAzNCAwIDEzNzcwIDAgMCAwIDAKL2h0bWx0ZXN0Lmh0bWwKMCAyMjQgMCAzMDEzNTAgMjYgMjYgMCAwCi9mYXEuaHRtbAowIDQ5IDAgOTc1NDggMTMgNCAwIDAKLy5naXQvb2JqZWN0cy9jZC8wYWEyMjQ0OTA4MGFhMjIwNTc2MmU0ODY1NTNjYzc0Mzc3NGMwZQowIDMgMCA1NzgwNCAwIDAgMCAwCi9jb250cmliL3NxbC9qcy8KMCAxIDE2IDk3NCAwIDAgMCAwCi9pY29ucy90ZXh0LmdpZgoxIDMgMCA2ODcgMCAwIDAgMAovd2ViYWxpemVyL3VzYWdlLnBuZwoxIDEgMCAyNDUyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy9lMy8yMDIxZDhkNGJjYTEzYTBhZWUwZGI4MjAxZDNlOGYxMjJhODU4MgowIDMgMCA1NzkzMyAwIDAgMCAwCi9jb250cmliLy8KMCAyMiAwIDU0NjcwIDAgMCAwIDAKLy5naXQvb2JqZWN0cy9lNi8wZmJhYTg5YmUyMWU0NWMzODFkZTA5ZjhjMjBmYzcxZTJkOThmNAowIDMgMCAxNjc0IDAgMCAwIDAKL2NvbnRyaWIvc3FsL2Nzcy9zcWxjb2xvcnMuY3NzCjEgNTkgMCAzMTQ5NCAwIDAgMCAwCi93ZWJhbGl6ZXIvZGFpbHlfdXNhZ2VfMjAxMDA4LnBuZwoxIDIgMCA2MDAyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy85MC85NDYzN2Y3ZTk3MTY2YTY1ZGFmNmEyMmMxMjQzMjVlZjAwYmFlNgowIDMgMCAzNzI4MSAwIDAgMCAwCi9jb250cmliL3NxbC9jc3MvCjAgMSAxIDk3NyAwIDEgMCAwCi9MSUNFTlNFCjAgNDUgMCAzNjcyMCAxMSAxMSAwIDAKL2NvbnRyaWIvcHl0aG9uL0xJQ0VOU0UKMCAyOCAwIDQwNTAwIDYgNiAwIDAKL2pzL3BhcnNleG1sLmpzCjEgNDI2IDAgMzM3MzY3NyAwIDAgMCAwCi9jb250cmliL3NxbC9qcy9wYXJzZXNxbC5qcwoxIDYxIDAgNDY4OTYwIDAgMCAwIDAKL2Nzcy9qc2NvbG9ycy5jc3MKMSA1NTEgMCAzMDAwMDAgMCAwIDAgMAovLmdpdC9vYmplY3RzL2M1L2Y2Nzg1MDM4MjA0N2FiZjI3YzcwNjc3NDVkOWJjODI1YWU4ZDg5CjAgMyAwIDc1MTUgMCAwIDAgMAovanMvdXRpbC5qcwoxIDc2NyAwIDI0Mjk3MzYgMCAwIDAgMAovLmdpdC9vYmplY3RzL2U3LzViOTBjYTM3MzRmYTA0NjEzMjFmMmZjZTBlYjYzZGE0OWFhMTRiCjAgMyAwIDYyNCAwIDAgMCAwCi8uZ2l0L2luZm8vcmVmcwowIDI0IDAgODQ3MiAwIDAgMCAwCi9jb250cmliL3BocC9MSUNFTlNFCjAgMjIgMCAzNTA5MSA1IDMgMCAwCi8uZ2l0L29iamVjdHMvOGUvMzFjYTJhNzgwNGM0MGU2YWUyMTc1ZmUyNDdjMGJiMjQ1OGUzMmYKMCAzIDAgNjA2IDAgMCAwIDAKL2NvbnRyaWIvcGhwL2pzL3BhcnNlcGhwaHRtbG1peGVkLmpzCjEgMTYyIDAgNTUxOTU1IDAgMCAwIDAKLy5naXQvb2JqZWN0cy80ZC85OTU4MGE0ODk2YWNhZGM4Mzc0YTZiNmY1OTg2ODY2YWY2YTFmNQowIDMgMCAxNjc3IDAgMCAwIDAKL2NvbnRyaWIvcGxzcWwvTElDRU5TRQowIDEwIDAgODk0MCAyIDQgMCAwCi9jb250cmliL2NzaGFycC9qcy9wYXJzZWNzaGFycC5qcwoxIDY0IDAgNzk5OTI0IDAgMCAwIDAKLy4KMCAxIDAgMTE1MzQgMCAwIDAgMAovLmdpdC9vYmplY3RzL2I1LzEyMjk1ODc1YTg1NTllYTg1YzZlOWZhZjllMDYxOWNkNWIzNDE4CjAgMyAwIDU2NyAwIDAgMCAwCi8uZ2l0L29iamVjdHMvOTUvMjI4ZTNhMTA3OWJmNDFmZGJkZDA5ODA4Yzg3NjljZDAyYzQ4MjcKMCAzIDAgMzc1MjEgMCAwIDAgMAovLmdpdC9vYmplY3RzLzNmL2IyNWIxZjlkMDU1YjEzY2RkM2MwNzUzNGNiY2I4OGU1Y2MzZDE5CjAgMyAwIDE2NzQgMCAwIDAgMAovY29udHJpYi9jc2hhcnAvanMvdG9rZW5pemVjc2hhcnAuanMKMSA2NCAwIDQ4ODA2NCAwIDAgMCAwCi9jb250cmliL2x1YS9jc3MvbHVhY29sb3JzLmNzcwoxIDI5IDAgMTgzODYgMCAwIDAgMAovLmdpdC9vYmplY3RzLzhkLzE4ZWJlMjRlYjkzMWUzYmMwNTE3MjVjNWUyYzRlNzQ2YmY2MTMxCjAgMiAwIDQyMiAwIDAgMCAwCi9qcy9wYXJzZWh0bWxtaXhlZC5qcwoxIDE2NiAwIDM2NTI4OCAwIDAgMCAwCi9jb250cmliL29tZXRhL2Nzcy8KMCAxIDQgOTg3IDAgMCAwIDAKL2pzL2NvZGVtaXJyb3IuanMKMSA4OTYgMCAxNTA2ODcwMiAwIDAgMCAwCi9oaWdobGlnaHQuaHRtbAowIDMzIDAgOTQ3MTAgOCA3IDAgMAovd2ViYWxpemVyL2N0cnlfdXNhZ2VfMjAxMDA4LnBuZwoxIDIgMCAxMTI2MCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvOWQvNmFhYjIyN2E2MDhlYWNhZDE0ZWVlMTVkOGZlODljYmE3NmRjNzMKMCAzIDMgMTY3NCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMWMvMGU5NGE0NTFiNDM0MmYwNzFmZGJjYzdkYmFjMGYwMTI0MTc3MTEKMCAzIDAgNDIzIDAgMCAwIDAKLy5naXQvb2JqZWN0cy82Ni83NjA0ZWJlMTc5ZjUxZWExNGY5YzM4ZDg1M2Q3ZTZhYTViMjM2NAowIDIgMCA0NjAgMCAwIDAgMAovY29tcHJlc3MuaHRtbAowIDgxIDAgNjA5NTMyIDQgMTIgMCAwCi8uZ2l0L29iamVjdHMvODMvMTc5YTVjZjBlNzdhMzRmNmY4NzBjZWQ3NDhkMmRhOWU1NzdhOGYKMCAzIDAgMTQ2ODUgMCAwIDAgMAovLmdpdC9vYmplY3RzLzViLzU3N2NjOWY1YmZhYzU2NTQ3YTgyYjJjNDE1ZjIyOThkMjhiZGI5CjAgMyAwIDQyNiAwIDAgMCAwCi9qcy9zdHJpbmdzdHJlYW0uanMKMSA3ODQgMCAzMDgyMDc1IDAgMCAwIDAKL2Nzcy8KMCAyIDAgMzkxMiAxIDEgMCAwCi9jb250cmliL2x1YS9qcy9wYXJzZWx1YS5qcwoxIDM5IDAgMzAxMTE5IDAgMCAwIDAKL2pzL3BhcnNlamF2YXNjcmlwdC5qcwoxIDUyOSAwIDY1OTA2NTkgMCAwIDAgMAovY29udHJpYi9weXRob24vCjAgMTAzIDAgMzQyNzk4IDIzIDQgMCAwCi9qcy9wYXJzZXNwYXJxbC5qcwoxIDM2IDAgMTg1MjkyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy8xMC9iNmQ3NjU1YTU0NDc3OGUzMzY5MzdiYjQ4OTk0ZTAxNTdjZWFiNQowIDMgMCA2MDc1MCAwIDAgMCAwCi9qcy9taXJyb3JmcmFtZS5qcwoxIDM2NCAwIDY5MjM1MCAwIDAgMCAwCi9pY29ucy9iYWNrLmdpZgoxIDkgMCAxOTQ0IDAgMCAwIDAKL3NwYXJxbHRlc3QuaHRtbAowIDUxIDAgNDY0NjQgMTAgMyAwIDAKL2NvbnRyaWIvc2NoZW1lL2Nzcy8KMCAxIDEgOTkyIDAgMCAwIDAKL2NvbnRyaWIvc2NoZW1lL2pzL3Rva2VuaXplc2NoZW1lLmpzCjEgMzUgMCAyMjAzMjUgMCAwIDAgMAovanMvaGlnaGxpZ2h0LmpzCjEgMjYgMCA1NDM2NiAwIDAgMCAwCi9taXhlZHRlc3QuaHRtbAowIDE3NyAwIDIzNjM1OCA3MyAxNCAwIDAKL2NvbnRyaWIvb21ldGEvCjAgNDIgMCAxMjMzOTYgNSA2IDAgMAovanMvc2VsZWN0LmpzCjEgNzc4IDAgMTY0ODgzMzMgMCAwIDAgMAovY29udHJpYi9waHAvanMvdG9rZW5pemVwaHAuanMKMSAxNTkgMCA5MTg1NDY2IDAgMCAwIDAKL2NvbnRyaWIvCjAgNCAwIDk5MDggMCAwIDAgMAojIEVuZCBPZiBUYWJsZSAtIHVybHMKIyAtc2l0ZXMtIChtb250aGx5KQoxNzMuNjMuMjAwLjE2NQowIDE4IDE4IDE2Nzg1NyAxIDEyODEwNzMwMjAKL21peGVkdGVzdC5odG1sIDAgMAoyMTMuNDYuMTE1LjE0MwowIDEwOCAxMDIgOTQzNzAzIDMgMTI4MDk3NTYwNwotIDAgMAo4NS4xLjE3NS4xMTMKMCAyNCAyMiAyNjQ1MzUgMiAxMjgxMTE0NTk2Ci8gMCAwCjEyNS4xNjMuMjA3LjIwNQowIDY0IDYxIDEwNTE0MjIgMiAxMjgxMTk2NDMwCi9mYXEuaHRtbCAwIDAKMjA0LjIzNi4yMDYuNzkKMCAyIDIgMCAyIDEyODA5NTg5MTQKLSAwIDAKODMuMTAzLjE4Mi4xMDkKMCAyMiA3IDEzNTkxNCAwIDAKLSAwIDAKOTkuNjAuMTUxLjE1NwowIDE2IDE2IDE3OTYzOCAxIDEyODA5ODI3MzcKLSAwIDAKMjE3LjExNy4xNTQuMzYKMCAxOCAxOCAxMDM4MDYgOSAxMjgwOTg5ODMwCi0gMCAwCjE5OC40NS4xOS45NQowIDMgMyA0MTc4NSAxIDEyODEwNTQ3NjcKL3N0b3J5Lmh0bWwgMCAwCjE4OS4xMDcuOTAuMTI5CjAgNCA0IDI3MzY5IDEgMTI4MDg4MzU0MwotIDAgMAoyMDkuMTkwLjE3Mi4xNzgKMCAyMiAyMiAyNTk2MzYgMSAxMjgwOTU2NDMzCi0gMCAwCjQxLjE0MC4zMy4xMDQKMCA1IDQgMjczODIgMSAxMjgxMTgzMjcwCi8gMCAwCjg5LjEyOS4yMzkuMTE1CjAgMTQgMTQgMTYxMjA2IDEgMTI4MDkzNzY5NwotIDAgMAo2NC42MC4xNTAuODIKMCA1IDUgNDU3MDYgMSAxMjgwODc2OTgzCi0gMCAwCjIxMy4yMzEuMjguMjEwCjAgNCA0IDI3MzY5IDEgMTI4MDg2MzMxNgotIDAgMAo3Mi40NC41OC4xMTMKMCAyIDIgMTE1MzQgMSAxMjgwODQxMjYwCi0gMCAwCjIxMi4xODUuMjM2LjIzOQowIDIxIDIxIDE5NTE4NSAxIDEyODEwMDQ3NTEKLSAwIDAKNzEuMjAyLjEzOC4xOTMKMCAxIDEgMTE1MzQgMSAxMjgxMDI1MDA2Ci8gMCAwCjE3OC4yMTguMjMyLjIwMQowIDI4IDIxIDMxMzM2NSAxIDEyODA5MTQ5NzUKLSAwIDAKMTIxLjExOC4yMTMuNjEKMCAxOCAxNiAxODAyMjMgMSAxMjgwODQ1NjYxCi0gMCAwCjExOC4yMDguMy4yMjEKMCAyMCAyMCAxOTM1MjYgMSAxMjgxMjI0MTE4Ci9taXhlZHRlc3QuaHRtbCAwIDAKNzcuMTI2LjMuMTg2CjAgMTAwIDU1IDU4NjEzOCAyIDEyODExNjg0NjgKL2NvbnRyaWIvY3NoYXJwLyAwIDAKNjUuMTI1LjEyLjIyMgowIDI3IDI3IDQ4MzQ0NiAzIDEyODEwMzk5MDUKL21hbnVhbC5odG1sIDAgMAoyMDMuMTMuOTAuMgowIDMzIDMyIDMxOTQyNSAxIDEyODA4ODk2NjUKLSAwIDAKMjQuNy44OC41OQowIDQgNCAyNzM2OSAxIDEyODA4NjIzODIKLSAwIDAKNzAuMTczLjExMC45NgowIDQgNCAyNzM4MiAxIDEyODEyNDU3NjcKLyAwIDAKNzcuMjIxLjEzMC4xNwowIDkgMCAyOTcwIDMgMTI4MTE5OTQxOQotIDAgMAo4NS4xNDUuMjA1LjIxNAowIDIxIDE5IDIwMjA0OCAxIDEyODA4NDIwNjEKLSAwIDAKMTg4LjEyMy4yMzguNTcKMCAyNyAyNyA0ODA4MTMgMSAxMjgxMDM3NzA4Ci9MSUNFTlNFIDAgMAo4Ny4yNDEuNDUuMTIyCjAgNjMgNjMgNjUzMTAyIDEgMTI4MDkzOTAzMAotIDAgMAo3MC4xMzMuODYuMTY2CjAgNCA0IDI3MzgyIDEgMTI4MTExMjExOAovIDAgMAo0MS4xMzYuODkuNQowIDE2IDE2IDE3OTYzOCAxIDEyODEwMDg3MDEKLSAwIDAKMTczLjIuMjM2LjQyCjAgMTYgMTYgMTc5NjUxIDEgMTI4MTIxODM0OAovanN0ZXN0Lmh0bWwgMCAwCjExOC45Mi4xNDYuNjAKMCA0IDQgMjczODIgMSAxMjgxMTI3NzMyCi8gMCAwCjY2LjIwNy4yMTYuODIKMCAxNCAxNCAxNjUxNDMgMSAxMjgxMDQwNzc3Ci9odG1sdGVzdC5odG1sIDAgMAo2NC4xODIuOTguODAKMCA2IDAgMjAyMiAwIDAKLSAwIDAKODMuODcuODIuMTUxCjAgNCA0IDI3MzgyIDEgMTI4MTIxNTc0NwovIDAgMAoyMDYuMTcuOTYuMTQ3CjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg2NTA1OQotIDAgMAoyMTYuMjQuMTQyLjQ1CjAgMSAxIDExNTM0IDEgMTI4MDk1ODg5MgotIDAgMAoyMTguODIuOS4xODEKMCAyMSAyMSAyMjg3MzAgMSAxMjgxMjAyMTQ2Ci9tYW51YWwuaHRtbCAwIDAKMjE2LjI0LjE0Mi40NgowIDQgNCA0NjE0OSA0IDEyODEyMjA4NzQKLyAwIDAKMjE2LjI0LjE0Mi40NwowIDEgMSAxMTUzNCAxIDEyODEwNTgzOTMKLyAwIDAKMjEyLjkxLjkxLjE3OAowIDE4IDE4IDI2NTQ1NCAyIDEyODA5MzUzMjYKLSAwIDAKMTk2LjIxMC4xNDMuMTY4CjAgMjYgMTggMjExMzExIDEgMTI4MTAwNTE1OQotIDAgMAo5MC4xNzYuMTkxLjIzNgowIDM5IDM4IDQyNzA4NSAyIDEyODExNzQ1ODEKL2pzdGVzdC5odG1sIDAgMAo2MS4yMDYuMTE4LjUxCjAgMzEgMTYgMjM5NDkxIDIgMTI4MDkwMDA4MgotIDAgMAo3OC4yOS45My4xMzcKMCA0IDQgMjczNjkgMSAxMjgwOTAyNTU2Ci0gMCAwCjc0LjEyNS41OS42NQowIDEyIDcgMTAzMjA4IDQgMTI4MTA1ODEzOAovbWFudWFsLmh0bWwgMCAwCjc3LjEwOC4xNTMuOTkKMCAyMSAyMCA2Mzg3MTkgMSAxMjgwODQ3NjI0Ci0gMCAwCjE4NC43My4yMC4yOAowIDIgMiAwIDIgMTI4MDk1ODkxOAotIDAgMAo4NC4yNTUuMjQ1LjIzMQowIDIzIDIzIDI4NDE0MiAxIDEyODA5OTk4MDkKLSAwIDAKMTIzLjExOC4yMDguMjMxCjAgMTYgMTEgNDM0MTQzIDAgMAotIDAgMAo3OC44My4xNDAuMjM1CjAgMjEgMjEgMjA5ODQ4IDEgMTI4MTEyMzYwMwovY29udHJpYi9jc2hhcnAvIDAgMAoyMTYuMjM5LjQ1LjQKMCA4NCA4MyA4MzQxODcgNCAxMjgxMTM0ODAzCi8gMCAwCjc4LjU0LjcuMjQwCjAgMTUgMTUgMTc3Njc3IDEgMTI4MDk1NTk5OQotIDAgMAo4OS4xNjQuMzguMjQ1CjAgNCAzIDQyMTI2IDEgMTI4MDkxMjg4OQotIDAgMAoyMjEuMjIxLjE2Mi4xNTgKMCA4IDggNTQ3NTEgMiAxMjgxMDg0Mjg3Ci8gMCAwCjgyLjEzMC4xNC4yNQowIDI1IDI0IDI1ODk2NSAxIDEyODEwMzMzNTEKL3NwYXJxbHRlc3QuaHRtbCAwIDAKNzEuMjMuMTg2LjY5CjAgNCA0IDI3MzY5IDEgMTI4MDk3NzAyMgotIDAgMAo4NS4xNy4yMTEuMTY0CjAgMSAwIDMxOSAwIDAKLSAwIDAKMTk1LjI0OC4xNzAuNDcKMCAyMiAyMiAzMDg5OTggMSAxMjgxMTIyMDk0Ci9jb250cmliL3B5dGhvbi8gMCAwCjkyLjExOS40NC43NAowIDYwIDYwIDgxMDk1NSAyIDEyODEyMjc0OTUKL2NvbnRyaWIvcGxzcWwvIDAgMAo4OS4xMzAuMjUwLjE1NQowIDMgMCA5OTUgMSAxMjgxMTE3NDQ2Ci0gMCAwCjEzMS4yNDYuMTAzLjEyOAowIDIgMSAxNjM0NDEgMCAwCi0gMCAwCjc0LjkuMTk3LjEzMAowIDE1IDE0IDE2NTQ3NiAxIDEyODExNTQ0MTEKL2h0bWx0ZXN0Lmh0bWwgMCAwCjgyLjI0Ni4zLjE3OAowIDE2IDE2IDM5MjI2OCAyIDEyODEwNTE0MzMKL21hbnVhbC5odG1sIDAgMAo2OC4yMjkuMzQuNQowIDQgNCAyNzM2OSAxIDEyODEwNDc4ODAKLyAwIDAKNzQuMTI1Ljc0LjEzMQowIDQgNCA0OTkzNSAyIDEyODEwNjU0ODgKL2h0bWx0ZXN0Lmh0bWwgMCAwCjc0LjY1LjU4LjEwNwowIDggNiA4MjEyNiAyIDEyODExODk4NDkKL21hbnVhbC5odG1sIDAgMAoyMTguNi45LjE0MAowIDIgMiA4MDA3MCAyIDEyODEwMTE1NzkKL3N0b3J5Lmh0bWwgMCAwCjg5LjEzNS4xODAuMjEKMCA2NCA2NCA5MzA4NTYgMSAxMjgxMDkwMDUxCi9odG1sdGVzdC5odG1sIDAgMAoxNzQuNDkuOTIuODkKMCAyMiAyMiAxOTYxNjYgMiAxMjgwODk2Mzc2Ci0gMCAwCjg4Ljg3LjE0LjEzOQowIDE0IDE0IDE2NTE0MyAxIDEyODA5MzkxNTgKLSAwIDAKNzIuMjE0LjE2MS42OAowIDMzIDE4IDQwNjc3NiAyIDEyODExOTc2NDkKL2pzdGVzdC5odG1sIDAgMAoxMzEuMTA3LjAuODUKMCAxNiAxNiAxNzk1ODMgMSAxMjgwODYxMTI2Ci0gMCAwCjIwOS4zNC4yNDUuOTQKMCAxIDEgMTE1MzQgMSAxMjgwOTkyNjExCi0gMCAwCjkzLjgxLjI0OC4xNzEKMCAyMiAyMSA0NTYzMzkgMSAxMjgxMTA0MTgxCi8gMCAwCjg1LjExMi4xMjkuMTQ5CjAgMzYgMjggNDEzOTc2IDIgMTI4MTA0MzcxNQovY29udHJpYi9ncm9vdnkvIDAgMAoxODQuNzMuMjkuMTkzCjAgMSAxIDExNTM0IDEgMTI4MDgzNzM2MgotIDAgMAoyMjEuMjIxLjE2Mi43MQowIDQgNCAyNzM2OSAxIDEyODA5MDE4MDIKLSAwIDAKMTkyLjExNC41LjEwCjAgMjIgMTggMjA0MTUxIDEgMTI4MTA5MjA3MQovY29udHJpYi9weXRob24vIDAgMAo3Ni4xNzMuNDguMTI0CjAgNDggNDEgNjU0MDI4IDMgMTI4MTAzMDkwNwovY29udHJpYi9waHAvIDAgMAoyMTIuNDUuMjkuMTg3CjAgNCAzIDI0ODQ3IDEgMTI4MTIyNzYzNgovY29udHJpYi9waHAvIDAgMAo4NS4yNi4xNjQuMTM3CjAgOCA4IDU3NDkwIDEgMTI4MTEwOTAzNgovanN0ZXN0Lmh0bWwgMCAwCjYyLjIyNC4xMjAuMTgxCjAgMzAgMzAgMzA0MTM0IDEgMTI4MTAzOTcxMQovY29tcHJlc3MuaHRtbCAwIDAKMjA3LjEzOC44Ni45OAowIDEgMSAxNzI3IDEgMTI4MTEyMjA0MwovanN0ZXN0Lmh0bWwgMCAwCjk1LjI0NC4xOTQuMjIyCjAgMTQgMTQgMTY1MTQzIDEgMTI4MDkyNjkyNAotIDAgMAoyMDcuMTM4Ljg2Ljk5CjAgMiAyIDM2ODgyIDEgMTI4MTEyMjI5OQovbWFudWFsLmh0bWwgMCAwCjE4NC43My4yMC40OAowIDIgMSA0MDM1NCAxIDEyODA4Njg1MzUKLSAwIDAKMTE3LjEzNi45LjE4MAowIDQgNCAyNzM2OSAxIDEyODEwMDI5ODMKLSAwIDAKOTEuMjMuMjE0LjI0OQowIDYgNiAyOTY2OSAxIDEyODA5MjI1NTAKLSAwIDAKOTQuMTEzLjIxMC4zMAowIDIxIDIwIDM3Nzk1MSAxIDEyODEwODUxOTQKL2pzdGVzdC5odG1sIDAgMAo2MS4yNDcuMjA0LjM3CjAgMSAxIDExNTM0IDEgMTI4MDk3MzI5MQotIDAgMAo4MS4xOC4xMjUuMjI1CjAgMjYgMjUgMjg4MzE1IDEgMTI4MTA3MDU0OQovY29udHJpYi9waHAvIDAgMAo2MS4yNDcuMjA0LjM4CjAgMiAxIDM1NTIzIDEgMTI4MDk1NDc4MwotIDAgMAo4Mi4yMjQuMTI2LjE2NgowIDQgNCAyNzM2OSAxIDEyODA5MjQ5NjkKLSAwIDAKMTk5Ljg1LjIwNi45OQowIDMyIDMwIDQxNzgyOSAyIDEyODA5NDcwMjEKLSAwIDAKNjEuMjQ3LjIwNC4zOQowIDEgMSAxMTUzNCAxIDEyODA5OTY0NzAKLSAwIDAKMjE3LjIwNi4yMzguMjQyCjAgNDEgNDEgNDQwNTk2IDEgMTI4MDk5OTg5MAotIDAgMAo3MS45NC40Mi45OAowIDE2IDE2IDE3OTYzOCAxIDEyODA5NjgxMTEKLSAwIDAKMTk1LjYwLjIwMS4zNQowIDMgMyA0MTc4NSAxIDEyODA5OTkzNzAKLSAwIDAKODIuMjM0LjE1MC4yNAowIDQgNCAyNzM2OSAxIDEyODEwMjMzNjcKLyAwIDAKOTEuMjAyLjIwLjEyNQowIDM3IDM2IDU1MzU2NiAyIDEyODEwMDE3MTIKLSAwIDAKMjAwLjgwLjIwNS40OAowIDE4IDE3IDE4MjU1NCAxIDEyODExMTQ2MTEKL2pzdGVzdC5odG1sIDAgMAo5Mi4xOTYuMjIxLjU4CjAgMTIwIDExOSAxNDMxMjQ2IDMgMTI4MTAwMzQyNQotIDAgMAoxMTkuNjMuMTk4LjIxCjAgMiAwIDYzOCAwIDAKLSAwIDAKMTA5LjE2OS40OC4xMTUKMCAyIDIgODAwNzAgMiAxMjgxMDg2MjMzCi9zdG9yeS5odG1sIDAgMAoxMTkuNjMuMTk4LjIzCjAgMSAwIDMxOSAwIDAKLSAwIDAKODUuNzIuMjA2LjEzOQowIDE1IDE1IDIxNTkyMiAxIDEyODA5OTI4MDgKLSAwIDAKODIuOTAuMTExLjc2CjAgNiA2IDI1NDQ5NCAxIDEyODEwMDU0OTYKLSAwIDAKMjAwLjE1MC43OS4xMzAKMCA0IDQgMjczODIgMSAxMjgxMTA1ODgxCi8gMCAwCjcxLjU5LjM1LjIwNgowIDMwIDMwIDMxODEwNCAxIDEyODExNDMzMDIKL2pzdGVzdC5odG1sIDAgMAo5NS4xMzEuMTEwLjEwMgowIDMgMyAzNjkxNyAxIDEyODA5MzA4OTEKLSAwIDAKODkuMTM2LjE3MC4xNzkKMCAzMCAzIDgxNjE3IDAgMAotIDAgMAo5NC44LjgxLjUKMCA0IDQgMjczNjkgMSAxMjgwODc2NjE1Ci0gMCAwCjgxLjIxOC4xNTAuMjAKMCAzMyAzMyAzNTUzMjYgMSAxMjgwOTQ4MzEyCi0gMCAwCjc2LjExNS4xODEuNjUKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTcyNTY4Ci0gMCAwCjYxLjExMS42MC4xMzIKMCAyIDIgMjMwODEgMiAxMjgxMjIxMjgyCi8gMCAwCjM4Ljk5Ljk4LjYKMCA0IDMgNTMwMzggMSAxMjgxMDI2NjEwCi9zdG9yeS5odG1sIDAgMAoyMjEuMjQ5LjExNi4yMDYKMCAzMjAgMzA2IDM0NzM0NzUgMTIgMTI4MDk4ODQzMAotIDAgMAo3NS4xMDEuMjEyLjE2CjAgMSAxIDEwNDgwIDEgMTI4MDg1OTQ4NgotIDAgMAo4Ni44MC42MS4xNAowIDQgNCAyNzM2OSAxIDEyODA5MTg5MDUKLSAwIDAKODMuODAuMTY3LjExMwowIDE5IDE5IDE5MDE5NiAxIDEyODEyMjI1NzIKL2h0bWx0ZXN0Lmh0bWwgMCAwCjIxNy45Mi4xMzUuMTc0CjAgMjQgMjQgNzAwODM1IDEgMTI4MTAzNTMyMwovbWFudWFsLmh0bWwgMCAwCjE4OC4xNzYuMC4xNzMKMCA0IDQgMjczNjkgMSAxMjgwOTE5ODg5Ci0gMCAwCjkzLjIxMy40Ny4yMjIKMCAyMCAxNSAzOTI5MzkgMiAxMjgwOTMxMTE2Ci0gMCAwCjIwOS4xNzMuNzMuMTQ3CjAgMzIgMzIgMzI1NTAyIDEgMTI4MTAyMjEyNgovY29udHJpYi9weXRob24vIDAgMAoxNjYuNzAuNDMuMTg2CjAgNzQgNzIgODA1MzM2IDIgMTI4MTA2MzQ3NwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjc2LjE2NC4xMi4xMQowIDI1IDI1IDI4ODEzOSAxIDEyODA5NTM3OTMKLSAwIDAKOTIuMjMzLjg5LjE1CjAgMjkgMTkgMTkwMTgzIDEgMTI4MTA0OTc2NgovIDAgMAoyMTEuMTM5LjI2LjEzOQowIDE2NiAwIDU2NDE5IDEgMTI4MDg4MTEyMQotIDAgMAo4MC4yMDIuMTc4LjIzMQowIDIzIDIzIDI4NDE0MiAxIDEyODEwMjAzNjkKL2NvbnRyaWIvcGhwLyAwIDAKNzYuMTY3LjI1NC4yMDEKMCAyNCAyNCAyODU2MjYgMSAxMjgxMjQ2ODk2Ci9jb250cmliL3BocC8gMCAwCjEyMi4xMDcuMTQ4LjIyOAowIDU3IDU3IDIxMTc4MyAxIDEyODEwODU4MDYKLyAwIDAKMjA3LjE4OS4xMjEuNDQKMCA0IDAgMTI3NiAzIDEyODExNTc2NzIKLSAwIDAKMjA3LjE4OS4xMjEuNDUKMCAzIDAgOTU3IDMgMTI4MTE3MjE5MwotIDAgMAoyMDcuMTg5LjEyMS40NgowIDMgMCA5NTcgMyAxMjgxMDc1NDE4Ci0gMCAwCjkyLjI0My4xNy41NAowIDIgMSAxMTg2NiAxIDEyODEyNTAyODIKLyAwIDAKOTIuMTkzLjE3Ny4zMwowIDMgMyAzNjYzMSAxIDEyODA4NjM2NzUKLSAwIDAKMTE5LjYzLjE5OC40MQowIDEgMCAzMTkgMCAwCi0gMCAwCjc5LjE2NC4zOS4yMDMKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMjE5NjcyCi9taXhlZHRlc3QuaHRtbCAwIDAKODUuMjE5LjguMTM1CjAgNCA0IDI3MzgyIDEgMTI4MTE5MzQ4NAovIDAgMAo2OS4xMjIuMjM5LjcxCjAgMSAxIDExNTM0IDEgMTI4MTAyNTY1MwovIDAgMAo4Mi43MS4yMzUuOTcKMCA0IDQgMjczNjkgMSAxMjgwOTM0ODQ1Ci0gMCAwCjExOS42My4xOTguNDMKMCAxIDAgMzE5IDAgMAotIDAgMAoxNzMuMjEwLjEyNC42NgowIDE2IDE2IDE3OTYzOCAxIDEyODEwNTA2NzYKL2pzdGVzdC5odG1sIDAgMAoxMTkuNDAuODQuMzcKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMDE3NjU3Ci9taXhlZHRlc3QuaHRtbCAwIDAKMjQuMjI3LjExNC4xMzgKMCAxNCAxNCAxNjUxNDMgMSAxMjgwOTYyNTEyCi0gMCAwCjExOS42My4xOTguNDQKMCAxIDAgMzE5IDAgMAotIDAgMAoxMTUuMTQ1LjEzMC4xMzIKMCA0IDQgMjczODIgMSAxMjgxMTAyNjY1Ci8gMCAwCjgwLjE1My4yNi4xNTYKMCA4MSA3NiAxMDkwMjU5IDQgMTI4MDkwOTMwNwotIDAgMAoyMjEuMjIzLjI1MS4xMDUKMCAxOCAxNiAxNzk2NTEgMSAxMjgxMTkzNjA5Ci9qc3Rlc3QuaHRtbCAwIDAKODguMzguMjQ2LjE0NgowIDM5IDM5IDM3MzE2NCAxIDEyODExMTA2NDIKL2NvbnRyaWIvY3NoYXJwLyAwIDAKNzQuMTEyLjEyOC42MAowIDQgMSAxMTg1MyAzIDEyODA5NTg5ODAKLSAwIDAKNzcuMTg1LjI5LjI0OQowIDUyIDUyIDUwNjIyMSAyIDEyODA5MzQ0MjgKLSAwIDAKNzQuMTEyLjEyOC42MQowIDMgMCA5NTcgMCAwCi0gMCAwCjc0LjExMi4xMjguNjIKMCAxIDAgMzE5IDAgMAotIDAgMAoxOTUuMTQwLjE4NC4xMAowIDU2IDMwIDI5NjM5NiA1IDEyODEwODg5OTYKLyAwIDAKNjcuMjAyLjQyLjkzCjAgMiAyIDAgMiAxMjgwODQ3MzEyCi0gMCAwCjExNS4xODQuMzQuMTM4CjAgNCA0IDI3MzY5IDEgMTI4MDk5NTY0NgotIDAgMAo5My4xNi4xMzQuMTA1CjAgMjEgMjAgMTkzODY3IDEgMTI4MTE0OTY4OAovIDAgMAoxODMuMTcuOTMuNTIKMCAzMiAyMiAxOTYyMjEgMSAxMjgwOTcyMzg2Ci0gMCAwCjg1LjE0My42My4xNzMKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTk2NTg3Ci0gMCAwCjkzLjEwMy4yMzUuMTU4CjAgNCA0IDI3MzgyIDEgMTI4MTIxMTI4NwovIDAgMAoxODguMjUuMjM3LjEzNAowIDUgNSAzNTI4NSAxIDEyODA5MjQwNTkKLSAwIDAKOTkuMTAwLjI0MC45CjAgMTQgMTQgMTgwNzE4IDEgMTI4MTA3MzI5MwovY29udHJpYi9weXRob24vIDAgMAo2Ni43NS4xOS4yNTUKMCA1IDUgMzUyODUgMSAxMjgwOTExNzYxCi0gMCAwCjExNy4yNTQuMTc1LjgzCjAgMzkgMzIgMzc0MzU1IDIgMTI4MDk0NjMxOAotIDAgMAoxODguMTM0LjguODgKMCA0IDMgMjY1MzkgMSAxMjgwODQ2MDQxCi0gMCAwCjIwNy4xMzguODYuMTAzCjAgMSAxIDExNTQ3IDEgMTI4MTEyMTg1MgovIDAgMAoyMDcuMTM4Ljg2LjEwNAowIDEgMSAxMDQ4MCAxIDEyODExMjIyNDkKL2NvbnRyaWIvcGhwLyAwIDAKMTczLjExLjk3LjExNQowIDggNCA0NzQzOCA0IDEyODExODE0NDMKLyAwIDAKNjEuMTgzLjAuNzcKMCAxIDEgMTE1NDcgMSAxMjgxMTExODEwCi8gMCAwCjExOS4xNDcuMTEuMTEzCjAgMSAxIDExNTQ3IDEgMTI4MTIxNjQ3OAovIDAgMAo5MC4yMTYuMTM4LjEwOQowIDE4IDE4IDQwMTM1NiAxIDEyODExNDE4NTEKL21hbnVhbC5odG1sIDAgMAoxOTguMjQwLjEzMy43NQowIDIgMiAzNTQ4MSAxIDEyODA5MTY4ODQKLSAwIDAKMTc0LjEyOS4yLjE5NQowIDEgMSAxMTUzNCAxIDEyODA4NDYxODUKLSAwIDAKOTMuODguMjE0LjEyMAowIDQgNCAyNzM4MiAxIDEyODEyNDMzNDkKLyAwIDAKMTY1LjEyNC4zMC4xMDMKMCAxNSAxNSAxNzc2OTAgMSAxMjgxMTI5MTEzCi9jb250cmliL2NzaGFycC8gMCAwCjExOS42My4xOTguNTkKMCAxIDAgMzE5IDAgMAotIDAgMAoxMTcuMjU0LjE0NS4xNDIKMCAzMiAxNCAxNjg5MTYgNSAxMjgxMDI0OTU0Ci8gMCAwCjk4LjE2OS4xNzUuNzEKMCAzIDMgMjYyMTkgMSAxMjgwOTE0NTg2Ci0gMCAwCjg5LjE1MS4xMTYuNTMKMCA3IDcgODA3MzggMyAxMjgwOTU4OTAxCi0gMCAwCjYwLjYzLjUzLjEyOAowIDY4IDY1IDgzODI5NiAzIDEyODExNjI2MDkKL2NvbnRyaWIvcGhwLyAwIDAKNDYuMTE2LjEzNC4xNgowIDQgNCAyNzM2OSAxIDEyODA5NjY2NjIKLSAwIDAKODIuNi4xMTEuNzQKMCA1IDUgNjI1NzMgMSAxMjgwOTI5ODE2Ci0gMCAwCjU5LjE1Ni45NS4xNDgKMCAxNyAxNyAyMTk2NzMgMSAxMjgwOTQ0NjcyCi0gMCAwCjE4OC4yNS4yMzkuMTkKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMDE3MDgzCi9taXhlZHRlc3QuaHRtbCAwIDAKODcuMTU5LjE3My4xNDkKMCAyNSAyNCA3OTUzNzcgMyAxMjgwOTU1NTI3Ci0gMCAwCjIxMi4xODMuMTQwLjQKMCAzMCAzMCA1NTU1MTkgMSAxMjgwOTM5NDk1Ci0gMCAwCjY1LjUyLjEwNC40MQowIDEgMSA3NzIxIDAgMAotIDAgMAo3OS4yMS4xMDguNDQKMCAxNCAxMiAxNzMyMDAgMSAxMjgwOTEwMTk4Ci0gMCAwCjIxMi4xMTguNDguOTkKMCA1MiAzNiA1NTIwNDcgMiAxMjgxMDA4MjQ1Ci0gMCAwCjExOS42My4xOTguNjYKMCAxIDEgMTQ3MCAxIDEyODExNDc5NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjY2Ljc3LjEwMi4xMAowIDI4IDI4IDM2MTQ2MiAxIDEyODExMzk3ODMKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTE5LjYzLjE5OC42OAowIDEgMSAxNjcxIDEgMTI4MTIzMjAwOQovY29udHJpYi9waHAvTElDRU5TRSAwIDAKOTEuMzguNjUuMjcKMCA0IDQgMjczODIgMSAxMjgxMjIyMjE3Ci8gMCAwCjE5My4yNS4xOTguNTAKMCA0IDQgMjczNjkgMSAxMjgxMDE5NzQ0Ci8gMCAwCjIxNy4xOTkuMjA0LjEzMAowIDQgNCAyNzM2OSAxIDEyODEwMTQ5ODIKLyAwIDAKOTIuMTk0LjE1NS4xMjkKMCA0IDQgMjczNjkgMSAxMjgxMDA3NTEzCi0gMCAwCjE1LjE5NS4yMDEuODcKMCAzIDMgMjYyMTkgMSAxMjgwODk5ODEzCi0gMCAwCjE1LjE5NS4yMDEuODgKMCA4IDQgMjczNjkgMiAxMjgxMDMzOTgzCi8gMCAwCjE5MC4zMC4xNDYuNDUKMCA0IDQgNDU5MCAxIDEyODEwNTI1NDcKL2pzdGVzdC5odG1sIDAgMAoxNS4xOTUuMjAxLjg5CjAgMSAxIDExNTAgMCAwCi0gMCAwCjc1LjEzNS4yMjAuMjExCjAgMTYgMTYgMTc5NjM4IDEgMTI4MDkzNjgyNQotIDAgMAo4MS4xMzcuNjEuMTk3CjAgMTYgMTYgMTc5NjM4IDEgMTI4MDkyMDU3NwotIDAgMAo2OS4yMC4xNjAuNjkKMCAxMiAxMiAxNTcxNjAgMSAxMjgwOTcyMTgxCi0gMCAwCjY3LjE3Ni4yMC4xNjYKMCA3IDcgMjYyNDEwIDEgMTI4MTA2OTMwNAovbWFudWFsLmh0bWwgMCAwCjgyLjIxNi4yNTEuMTUKMCAyNCAyMyAyODQ0OTcgMSAxMjgxMTMzMjM2Ci9jb250cmliL3BocC8gMCAwCjg1LjIyNS4xOTkuMjI2CjAgNCA0IDI3MzY5IDEgMTI4MTA1NjA5NwovIDAgMAoxMzkuMTguMi4yMDkKMCAxIDEgMTE1MzQgMSAxMjgwOTA3NTUxCi0gMCAwCjEwOS4xNTMuMTAxLjg4CjAgNjEgMzUgMzExMjM0IDIgMTI4MTAxNTExMQovY29udHJpYi9sdWEvIDAgMAoyMDIuNzYuMjQzLjEwCjAgMjEgMjAgMjE3Njk4IDEgMTI4MDkxNTUyOQotIDAgMAo4OC4xMzAuNTUuMTIyCjAgMTQgMTQgMTYwNjM2IDEgMTI4MTAwMjgxNAotIDAgMAoxMTkuNjMuMTk4LjcwCjAgMSAxIDMxNjQgMSAxMjgxMjM5MjUxCi9jb250cmliL29tZXRhLyAwIDAKMjEzLjkxLjI0Ny43NQowIDE2IDE2IDE3OTU4MyAxIDEyODA5MTMxNzEKLSAwIDAKMTE5LjYzLjE5OC43MgowIDEgMSAxNTAwIDEgMTI4MTIyMTE2NwovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKNzAuMzYuMTAxLjU4CjAgMSAxIDExNTQ3IDEgMTI4MTA4NDM5NgovIDAgMAoxMTkuNjMuMTk4LjczCjAgMSAxIDIzMjUgMSAxMjgxMTczMjYwCi9jb250cmliL3NjaGVtZS8gMCAwCjExOS42My4xOTguNzUKMCAxIDEgMTM1NiAxIDEyODExNjk2NDYKL2NvbnRyaWIvc3FsLyAwIDAKODcuMTIzLjEwNi4yMTkKMCAzIDMgMzY5MTcgMSAxMjgwOTQ0OTY2Ci0gMCAwCjExOS42My4xOTguNzYKMCAyIDIgNDIyOTcgMiAxMjgxMjI4Mzk1Ci9jb250cmliL3Bsc3FsLyAwIDAKMTI4LjIyMC4xNjAuMQowIDMgMyA0MTc4NSAxIDEyODEwMzMwOTIKL3N0b3J5Lmh0bWwgMCAwCjIxNy4xOTcuMTE0LjE5MAowIDEgMSAxOTE5MjEgMCAwCi0gMCAwCjc3LjEyNi4xMTcuMTM5CjAgMTI0IDI3IDI3NTYwNSAyIDEyODA5MTUxODYKLSAwIDAKNzQuMTY2LjM2LjIwNQowIDUgNSAyMTkzMDMgMSAxMjgxMjM2MjkwCi8gMCAwCjExOS42My4xOTguNzcKMCAxIDEgMTQ1OSAxIDEyODExMzM1MzgKL21peGVkdGVzdC5odG1sIDAgMAoyMjEuMTk0LjEzNi4xMgowIDEgMSA1NjMgMCAwCi0gMCAwCjExOS42My4xOTguNzgKMCAyIDEgMjIxNyAyIDEyODExNTE1ODQKL2ZhcS5odG1sIDAgMAoyMDMuMjQuNzYuMzMKMCAyNiAyNSAyODgzMjggMSAxMjgxMDg2Mjg3Ci9jb250cmliL3BocC8gMCAwCjI0LjYzLjIyNy4yMwowIDE1IDE1IDE3NzY3NyAxIDEyODA5NjkzMTcKLSAwIDAKNzkuODguOTAuMTAxCjAgMTMgMTMgMTYwMDU2IDEgMTI4MDk5MDA3MAotIDAgMAoyMjAuMTgxLjcuMTA4CjAgMSAxIDIyNzAgMCAwCi0gMCAwCjY2LjkzLjEyLjYwCjAgNjUgNjUgMTg2NjU3IDAgMAotIDAgMAoxMTUuMTY0LjE1OS4xNjgKMCA4IDUgNjc4MTQgMSAxMjgwODQ1NjY4Ci0gMCAwCjIwMy4xNjYuMTM5LjEzMwowIDE3IDE3IDIxNDUwMSAxIDEyODA5MTQ2NDQKLSAwIDAKMTkzLjIwMy41Mi45CjAgMjYgMjYgMzA0NjMwIDEgMTI4MTAwMjkzNQotIDAgMAoyMDEuMjYuMTAyLjI1MgowIDE2IDE2IDE3OTY1MSAxIDEyODExNTQ4ODkKL2pzdGVzdC5odG1sIDAgMAoxOTAuMjM1LjEwLjIxMwowIDIwIDIwIDI0MTQ0MyAxIDEyODExMzE3NjYKL2pzdGVzdC5odG1sIDAgMAo2Ni4yMzUuMTI0LjU4CjAgMyAxIDEyMTcyIDEgMTI4MTA0MTAyNQovIDAgMAoyMTMuMTg5LjE4OC4yMTgKMCA0IDQgMjczNjkgMSAxMjgxMDI2ODEyCi8gMCAwCjIxMy4yMTkuMTY0LjEyNQowIDIxIDIxIDE5NDY2MyAxIDEyODA5NTQ3NTkKLSAwIDAKODYuMTU5LjE4OS4zNQowIDQgNCAyNzM2OSAxIDEyODEwMDIwNzYKLSAwIDAKODguMTAxLjIzNy4xOTYKMCA2NCAyMiAxNDYwOTAgMSAxMjgxMDg1MjE5Ci9jc3N0ZXN0Lmh0bWwgMCAwCjg4LjE4Ni4xODQuMjA5CjAgMjMgMjMgMjE3NTc4IDEgMTI4MTIxMjkxNQovIDAgMAoxOTIuNzUuODguMjMxCjAgMTUgMTUgMTgyMjMxIDEgMTI4MTEwMDE5MgovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKMTUxLjgxLjEuODYKMCAzMSAzMSA1MjE2MzggMSAxMjgxMDQ4MDk2Ci9jb250cmliL3BocC8gMCAwCjcwLjE4MS4xMjEuOTIKMCA2OSA0MiAzOTIwODEgMyAxMjgxMjIzNzU4Ci9qc3Rlc3QuaHRtbCAwIDAKNjYuOTIuMTQ5LjE2NQowIDI4IDI3IDUwMjU4MCAyIDEyODEwNjcyMTcKL2NvbnRyaWIvcGhwLyAwIDAKODguMTk4LjE2OS4xMzkKMCAxIDAgMzIzIDEgMTI4MDkyMDIwNQotIDAgMAoxMTkuNjMuMTk4LjgwCjAgMiAyIDU4NTkgMiAxMjgxMjI0NzgxCi9jb250cmliL3B5dGhvbi8gMCAwCjE5Mi44Ny4xMDkuMjEyCjAgMzEgMzAgMzEyNjMxIDEgMTI4MTAxMTYwNAovY29udHJpYi9waHAvIDAgMAoyMTMuMzQuNjQuOTAKMCAxNCAxNCAxNjUwODggMSAxMjgwODU0MDk2Ci0gMCAwCjIwMy4xODcuMTk5LjY3CjAgMTkgMTkgMTg1Njc2IDEgMTI4MDk5MTI2OQotIDAgMAoxMTkuNjMuMTk4Ljg0CjAgMSAxIDEwNzIgMSAxMjgxMTU1MTk1Ci9jc3N0ZXN0Lmh0bWwgMCAwCjkyLjI0My4xNjAuNzgKMCAyMCAyMCAxOTM0NTggMSAxMjgwOTExMTM0Ci0gMCAwCjIyMS4xOTQuMTM2LjIwCjAgMSAxIDU2MyAwIDAKLSAwIDAKMjA3LjQ2LjE5OS4zOAowIDMgMSAxODE5IDIgMTI4MTE3MDY0NQovY3NzdGVzdC5odG1sIDAgMAoyMDcuNDYuMTk5LjM5CjAgMSAwIDAgMSAxMjgxMjQ2NDI5Ci9zcGFycWx0ZXN0Lmh0bWwgMCAwCjg3LjE0LjEzNy4xODcKMCAyOSAyNyA0NjMyMTYgMiAxMjgxMTEwMjg0Ci9tYW51YWwuaHRtbCAwIDAKNzkuNy4yMTguMjAxCjAgMzkgMjEgNDI5MTg1IDEgMTI4MDg0NjU4MQotIDAgMAoxMTguMjQzLjMxLjE2CjAgNCA0IDI3MzY5IDEgMTI4MDg0Nzk3NQotIDAgMAoyMjEuMjIxLjE0NC4yMTkKMCAxNiAxNiAxNzk2MzggMSAxMjgxMDA2ODcxCi0gMCAwCjQxLjYuMTgxLjI1NQowIDE3IDE1IDE3ODM4MSAxIDEyODA4MzkxMjUKLSAwIDAKNjcuMjAyLjMyLjk2CjAgMSAxIDAgMSAxMjgwODQzOTg1Ci0gMCAwCjg0LjIwOC44My4xMDEKMCA2IDYgODMxMDYgMSAxMjgwODY4NzEzCi0gMCAwCjgzLjI0NC4xMzcuMTYyCjAgMzYgMjMgMjkzMjc2IDUgMTI4MTE5NDI5NgovbWFudWFsLmh0bWwgMCAwCjgyLjIzNi4zMi40NwowIDQgNCAyNzM2OSAxIDEyODA5ODc0NDgKLSAwIDAKODUuMTc4LjIyMC4xODgKMCAzIDAgMCAxIDEyODEwODM2OTkKLyAwIDAKMTIuMTkwLjE1OC43CjAgNSA1IDM4OTAzIDEgMTI4MDkwNTc1MwotIDAgMAo5OC4yMzUuODAuMjM5CjAgMjAgMTYgMzkxOTI3IDIgMTI4MDg3NjE3MwotIDAgMAoxOTQuMjAxLjI1LjIyCjAgNCA0IDI3MzY5IDEgMTI4MDk0NDA0OAotIDAgMAo2Ny4yMDIuMjguMTMyCjAgMiAxIDExODU0IDEgMTI4MDg0NDE2OAotIDAgMAo2OS43MC44OC4xMTQKMCAxMDYgMTA1IDExOTYzMzggMiAxMjgxMjE3Nzc5Ci9jb250cmliL3NxbC8gMCAwCjIwMC4yNDMuMjI0Ljk3CjAgMTQgMTQgMTY0MzcxIDEgMTI4MDk0MzczMQotIDAgMAoxMTkuNjMuMTk4LjkxCjAgMSAxIDIyNjIgMSAxMjgxMjI4Mzk2Ci9jb250cmliL3Bsc3FsLyAwIDAKODQuMTAwLjI0LjI1MgowIDIwIDIwIDIyNTM4NyAxIDEyODA5MjQ1MTEKLSAwIDAKMjA3LjQ2LjE5OS40NAowIDEgMCAwIDEgMTI4MTIyMTQ2NwovY29udHJpYi9weXRob24vIDAgMAoxMTkuNjMuMTk4Ljk0CjAgMiAyIDEyMTEwIDEgMTI4MTI1MDA5MgovIDAgMAoyMDcuNDYuMTk5LjQ1CjAgMSAwIDMxOSAwIDAKLSAwIDAKMTIuMzQuMjQ2LjczCjAgMyAzIDQxNzg1IDEgMTI4MTIzOTY0OQovc3RvcnkuaHRtbCAwIDAKMjA3LjQ2LjE5OS40NgowIDEgMCAwIDEgMTI4MTIyNjk1OAovY29udHJpYi9zcWwvIDAgMAoxMTkuNjMuMTk4Ljk1CjAgMSAxIDM1MjA0IDEgMTI4MTE2MjQxNwovbWFudWFsLmh0bWwgMCAwCjExOS42My4xOTguOTYKMCAxIDEgMTE1NDcgMSAxMjgxMTY2MDM1Ci8gMCAwCjcxLjg5LjgyLjUxCjAgNCA0IDI3MzgyIDEgMTI4MTEwMjQ2NgovIDAgMAo5My4xODQuMzUuNDUKMCA0IDQgMjczODIgMSAxMjgxMjM0MTAwCi8gMCAwCjExOS42My4xOTguOTcKMCAxIDEgMzUyMDQgMSAxMjgxMTM3MTQ2Ci9tYW51YWwuaHRtbCAwIDAKMTE5LjYzLjE5OC45OAowIDIgMiAxMjIwNyAyIDEyODEyMzU2MzMKL2NvbnRyaWIvcGhwLyAwIDAKNjcuMTUyLjM0LjIxOAowIDIyIDIyIDMwODk5OCAyIDEyODExNTExNjgKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTU1LjU2LjY4LjIxNAowIDEyIDEyIDEzOTQzMiAxIDEyODA4NTE5MzIKLSAwIDAKMTU1LjU2LjY4LjIxNQowIDEyIDEyIDEzOTQ4NyAxIDEyODExOTk0NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjc5LjEyNS4xMTguMzUKMCA1OCA1OCAzMzQ0OTkgOCAxMjgxMjE4Njk0Ci8gMCAwCjcwLjM2LjEwMS4yMTAKMCAyIDEgNzA4OCAwIDAKLSAwIDAKNzIuMTQuMjI4LjEzMgowIDUyIDQwIDQ1NTY5OSAyIDEyODA4NTY2MjYKLSAwIDAKMTE0LjIwMC4xOTcuMjI4CjAgMjEgMjEgMTk0OTk2IDEgMTI4MTE2OTAwMgovaHRtbHRlc3QuaHRtbCAwIDAKOTQuMjIyLjEzNy4xODMKMCAxOCAxOCA0MDY3NzYgMSAxMjgxMDkxMjU4Ci9tYW51YWwuaHRtbCAwIDAKMTg4LjE2LjE1OC42NgowIDQgNCAyNzM2OSAxIDEyODEwMzY4NDMKLyAwIDAKMjA3LjIyOS4xNDkuMTcKMCA1IDUgNjI1ODYgMSAxMjgxMTMwMzgxCi9tYW51YWwuaHRtbCAwIDAKNjUuMTExLjE2Ny4xMzMKMCA0IDQgOTgzMDcgMSAxMjgxMDIwOTQ2Ci9tYW51YWwuaHRtbCAwIDAKOTcuNDYuMjcuNzMKMCA3IDcgODY5MDggMSAxMjgwOTcwODg0Ci0gMCAwCjIxNy40MS4yMzcuNjEKMCA2IDYgMjU0NTA3IDEgMTI4MTEwNDU1NQovIDAgMAoyMDcuNDYuMTk5LjUwCjAgMSAxIDM1NjEgMCAwCi0gMCAwCjIwNy40Ni4xOTkuNTMKMCAyIDAgMzE5IDEgMTI4MTIwMTMzNQovY29udHJpYi9ncm9vdnkvIDAgMAo2Mi44NC4xNzIuMjQ2CjAgMzEgMzAgNDMwNzE5IDEgMTI4MTAyODU1NAovY29udHJpYi9zY2hlbWUvIDAgMAoyMDcuNDYuMTk5LjU0CjAgMSAxIDM0OTEgMCAwCi0gMCAwCjIwNy40Ni4xOTkuNTUKMCAxIDAgMCAxIDEyODExMTExMjQKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTI4LjgzLjc4LjI2CjAgMjMgMjMgMjg0MTQyIDEgMTI4MTAyMzg3NAovY29udHJpYi9waHAvIDAgMAoyMTcuMTI4LjEyOS4yMzkKMCA1IDUgMjg1MTkgMSAxMjgwOTQ0MTcwCi0gMCAwCjc5Ljg5LjIxOC4xNTIKMCAzMiAzMiAzMjIzMzcgMSAxMjgwOTY2NDAwCi0gMCAwCjExOS42My4xOTMuMTI5CjAgMSAwIDMxOSAwIDAKLSAwIDAKODkuMTI4LjI0Ny41NQowIDE2IDE2IDE3OTU4MyAxIDEyODA4NzEzODQKLSAwIDAKOTEuMTgyLjE0Ny4xMDIKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMTQ2MDk3Ci9taXhlZHRlc3QuaHRtbCAwIDAKMjQuOTQuODcuNjYKMCA1IDUgMjczNjkgMSAxMjgwODU1NzE5Ci0gMCAwCjk1LjEwMy45MS4yNDQKMCAxNCAxNCAxNjA2MzYgMSAxMjgwOTUwNDY4Ci0gMCAwCjM4LjExMy4yMzQuMTgxCjAgMiAyIDExNTM0IDEgMTI4MDgzNzA5MgotIDAgMAoyMDguMTE1LjEzOC4yNTQKMCAxMCAxMCAxMDY3NDUgNiAxMjgxMTIwNTQyCi8gMCAwCjEyMi4yNDkuODAuMTIxCjAgMjMgMjMgMzg5Mzc2IDEgMTI4MDkxNDk3NgotIDAgMAoyMTMuMTc5LjY4LjE5MAowIDMgMCAxMDA1IDEgMTI4MTI0NDk5OAotIDAgMAo4OS4yMTIuNDcuMTE3CjAgMzEgMzAgNTIyMjAyIDUgMTI4MTExMDI2MAovbWFudWFsLmh0bWwgMCAwCjkyLjY1LjIwMS4xMQowIDUgMyAyNjUzOSAxIDEyODA4NDI5NDAKLSAwIDAKNTguMTQwLjM0LjgKMCAxOCAxNyAzNzE5MTMgMSAxMjgxMTkwMjUyCi9qc3Rlc3QuaHRtbCAwIDAKOTkuMzAuMjI5LjIxCjAgMTMgMTMgMTc5NTgxIDEgMTI4MTExMzQyMgovY29udHJpYi9weXRob24vIDAgMAo2Mi4yOC41Ny4xOTYKMCAxNCAxNCAxNjUwODggMSAxMjgwODU3NjEwCi0gMCAwCjkxLjgyLjE3MS4yMDgKMCA0IDQgMjczODIgMSAxMjgxMTg2ODIxCi8gMCAwCjE3My4yMzAuMTU1LjYzCjAgMSAxIDExNTQ3IDEgMTI4MTIwODcwOAovIDAgMAo3Mi42OC4xNjAuMjA1CjAgMTYgMTYgMTc5NjUxIDEgMTI4MTE0ODg3NQovanN0ZXN0Lmh0bWwgMCAwCjc1LjI4LjE2OC4yMzAKMCAyNSAyNSA0Mzk2MjggMSAxMjgxMTI0MDc5Ci9tYW51YWwuaHRtbCAwIDAKMTA5Ljg2LjE0NS4yMDQKMCAxNiAxMiA5OTM4OCAxIDEyODEyMjYyODkKL2NvbnRyaWIvcGhwLy8gMCAwCjk0LjQxLjM3LjE3MAowIDE0IDE0IDE2NTE0MyAxIDEyODEwNDczMjIKL2h0bWx0ZXN0Lmh0bWwgMCAwCjE4NC43Mi4xNjAuMjI1CjAgMSAxIDExNTM0IDEgMTI4MDk1ODE1MwotIDAgMAoxNjAuNzkuMTA0LjEwCjAgNCA0IDI3MzY5IDEgMTI4MDk0NDU5NAotIDAgMAo2Mi4yMjQuMTE4LjQ3CjAgMyAzIDM2NjMxIDEgMTI4MDkwNzU4NAotIDAgMAoyNC4xNTUuMTg4LjI1MgowIDQwIDE2IDM2NDk4MCAyIDEyODEwNjM4NjYKL2NvbXByZXNzLmh0bWwgMCAwCjIwNy43MC4zMi41MAowIDEgMSAxMTU0NyAxIDEyODExMzU1OTUKLyAwIDAKMTIuNDcuNDguMjI4CjAgMSAxIDExNTM0IDEgMTI4MTAwNDg0NAotIDAgMAoxMTQuNTcuMTQ2Ljg4CjAgNSA1IDYyNTczIDEgMTI4MDk1MDM2OQotIDAgMAoxMTcuMjA0LjkyLjQKMCA0IDQgMjczNjkgMSAxMjgwODYyMDUxCi0gMCAwCjIyMC4xODEuNDQuMTUKMCAxIDEgMTE1MzQgMSAxMjgwOTkxNzg4Ci0gMCAwCjE4OS41MC4xNTQuODQKMCAxOCAxMiAxMDAwNTAgMSAxMjgxMjI5MjUxCi9jb250cmliL3BocC8gMCAwCjkzLjgxLjIxMi4xOTUKMCAxNyAxNyAxNzExODEgMSAxMjgwOTQyNDkxCi0gMCAwCjE3NC4xMzMuNjEuNjYKMCAyIDIgMjMwNjggMSAxMjgwODQwMjgyCi0gMCAwCjIxMi4xODcuMzEuOTkKMCAyOSAyOSAzMTk3MDEgMSAxMjgxMTQxMzAxCi9odG1sdGVzdC5odG1sIDAgMAo2Mi4xOTMuMjQyLjE2NAowIDMgMyAzNDYwMiAxIDEyODA4NTI5MTUKLSAwIDAKNjUuNTIuMi4xMAowIDIgMiAyMzA2OCAyIDEyODA5NTg4OTMKLSAwIDAKMTgzLjUuNDUuMTIwCjAgNTUgMzIgNTY4MTE4IDEgMTI4MDg1MDM3NAotIDAgMAo3Ni4xODkuNzYuNjMKMCA2NSA2NSAxODY2NTcgMCAwCi0gMCAwCjg1LjE1OC4yMjcuMzIKMCAxNyAxNiAzOTI2MDkgMSAxMjgwOTQxNjEwCi0gMCAwCjIwMy4yMDYuMTc0LjEwMAowIDE0IDE0IDE2NTE0MyAxIDEyODEwNTQ0OTYKL2h0bWx0ZXN0Lmh0bWwgMCAwCjk1LjE0NC4yOS4yMTkKMCA0IDQgMjczNjkgMSAxMjgwODY4MDExCi0gMCAwCjIwNy4yNDUuMjQ3LjE1MAowIDE2IDE2IDE3OTY1MSAxIDEyODExMDM3NjYKL2pzdGVzdC5odG1sIDAgMAoxOTUuMjQwLjE2LjczCjAgNSA1IDM4OTAzIDEgMTI4MDg1MzU4OQotIDAgMAo4Ni45My4zMC4xNTcKMCAzIDMgMTU4MzUgMCAwCi0gMCAwCjIxMy4yNTMuMjE5LjE2NwowIDUgNSAzOTIxNyAxIDEyODEwMDU1NTQKLSAwIDAKMjE2LjIzNy4xMTkuNTgKMCAyIDIgMTE1MzQgMSAxMjgxMDMzMTg1Ci8gMCAwCjYzLjIyNS4xMTIuNTcKMCA0IDQgMjczNjkgMSAxMjgxMDUxNzQzCi8gMCAwCjEwOS4xNjYuMTY4LjQwCjAgMSAxIDExNTM0IDEgMTI4MTAxMjIwNAovIDAgMAoxOTIuNDMuMjI3LjE4CjAgNCA0IDI3MzY5IDEgMTI4MTA2ODIyMAovIDAgMAoyMjAuMTgxLjQ0LjIwCjAgMSAxIDExNTM0IDEgMTI4MDk4MzA1MAotIDAgMAoxMzAuMjAzLjM4LjcyCjAgMTkgMTkgMTgzMjIzIDIgMTI4MTAyNjUxNwovIDAgMAoyMjAuMTgxLjQ0LjIxCjAgMSAxIDExNTM0IDEgMTI4MDkwNjAzNQotIDAgMAo3Ni43NC4xMjEuMjUwCjAgMTcgMTcgMTY2NzA3IDEgMTI4MTAyMzY2OAovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjIyMC4xODEuNDQuMjMKMCAxIDEgMTE1MzQgMSAxMjgwODk0Mzg4Ci0gMCAwCjc3LjI1My4zLjE5CjAgNSA1IDIxOTI5MCAxIDEyODEwNDc3MzMKLyAwIDAKODEuMjI2LjIyOS4xNzkKMCA0IDQgMjczODIgMSAxMjgxMTg0NjEyCi8gMCAwCjc5LjE2OC41LjI0NgowIDE2IDE2IDE3OTYzOCAxIDEyODA5NDAwOTIKLSAwIDAKMTc0LjEyMC40LjEzMAowIDMgMyAzNTIwNCAxIDEyODA5OTI4NjEKLSAwIDAKMjAzLjExMC4yNDAuMTMxCjAgMSAxIDM1MjA0IDEgMTI4MTA0NDEwNwovbWFudWFsLmh0bWwgMCAwCjgyLjgzLjEyOS4xNQowIDMgMyAyNjIxOSAxIDEyODA5MDMyMTUKLSAwIDAKMjAxLjI5LjIwNi44MAowIDQgNCAyNzM2OSAxIDEyODEwNjgxODEKLyAwIDAKMjQuMTYuMTAuMTk3CjAgMjkgMTkgMTkzMDgzIDEgMTI4MTA1ODI5MgovY29udHJpYi9zcWwvIDAgMAo5NS4xMzUuMTkwLjEzMgowIDQgNCAyNzM2OSAxIDEyODA4NTAzMTAKLSAwIDAKMTI0LjE2OC4xNDUuMTg3CjAgMzQgMjEgMTk5MTMwIDEgMTI4MDk4MDk5OQotIDAgMAoxMjkuODMuMzEuMgowIDE0IDE0IDE2NTE1NiAxIDEyODExMDI5NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjEyOS44My4zMS4zCjAgMTQgMyAyMzU3MjMgMSAxMjgxMTA4MjU2Ci9odG1sdGVzdC5odG1sIDAgMAo5My4zOS4yMzguMTUxCjAgNiA2IDIyMDQ0MCAxIDEyODA4NjQ2MzgKLSAwIDAKNjIuODkuNzUuMTI5CjAgNCA0IDI3MzY5IDEgMTI4MDk0MDU1MgotIDAgMAo4MS4xNTkuNC44NgowIDQgNCAyNzM2OSAxIDEyODA5NzQ4NzUKLSAwIDAKOTUuMTY1LjExNC4yMjIKMCAxOCAxNCAxNjU0ODQgMSAxMjgxMDQ3NTE3Ci8gMCAwCjE5NS4yMDIuMTcwLjE3MAowIDQgNCAyNzM4MiAxIDEyODEyMTIwODMKLyAwIDAKMTc0LjEyOS4yMjguNjcKMCAyIDEgMTE4NjYgMSAxMjgxMTI2NzgxCi8gMCAwCjc5LjI1NS4xMjYuMjIwCjAgMTMxIDEwNyA5MTY1NTAgNCAxMjgxMTMxMDk5Ci9jb250cmliL2dyb292eS8gMCAwCjg1LjkyLjIyMi4yNTQKMCAxMiAxMiA3MTg1NiA1IDEyODExOTk0NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjc3LjExLjE3My4xNjkKMCA0IDQgMjczODIgMSAxMjgxMjIzNzA0Ci8gMCAwCjkyLjEzLjI0LjE5MAowIDQgNCAyNzM2OSAxIDEyODA4NTI5MTIKLSAwIDAKODYuNTkuMTA4LjM4CjAgMTMgMTMgMTYzNjE4IDEgMTI4MDg1NjQxOAotIDAgMAoxODQuNzMuMzcuMTk2CjAgMSAxIDE0MTIyIDAgMAotIDAgMAo2NS4yMy4yMzAuMTU4CjAgNCA0IDI3MzY5IDEgMTI4MDg2NjcyMwotIDAgMAo3OS4xMTguMjE3LjIzNAowIDIgMSAxMTg3NSAxIDEyODEwNzM1ODcKLyAwIDAKODMuMTcyLjUwLjYzCjAgNCA0IDI3MzY5IDEgMTI4MTAzNTMzMAovIDAgMAoxOTUuMTUyLjI0OS4xNAowIDYgNCA2MTE5MCAxIDEyODA4MzcxMzUKLSAwIDAKMTk1LjYyLjU4LjIzNwowIDI1IDIzIDI4NDE0MiAyIDEyODA5OTgzNDgKLSAwIDAKOTEuNTIuMjI0LjE3OAowIDEgMCAwIDAgMAotIDAgMAoxNTIuODEuMTMuMTY5CjAgNDEgNDEgMzk2NTQ2IDEgMTI4MTAxMDc2MgovY29tcHJlc3MuaHRtbCAwIDAKOC4yMS40LjI1NAowIDMgMyAxNjUyNyAyIDEyODA5MTI3ODcKLSAwIDAKNTkuMTU3LjcxLjIyMwowIDQgNCAyNzM4MiAxIDEyODEyMjQwNTAKLyAwIDAKOTUuMjI0LjI1Mi43MAowIDQgNCAyNzM4MiAxIDEyODExMTMzMDgKLyAwIDAKNjkuMTYzLjE3Ni44MwowIDEgMSAxMTUzNCAxIDEyODA4NTc0NDcKLSAwIDAKMTIyLjEwNi4xMzYuMjIzCjAgMTIgMTIgMTU3MTczIDEgMTI4MTExMDUzNgovY29udHJpYi9ncm9vdnkvIDAgMAoxMjkuMTcxLjIxNy4xMTcKMCAxNCAxNCAxNjUxNTYgMSAxMjgxMTMyMDgyCi9odG1sdGVzdC5odG1sIDAgMAoyMTMuMjE5LjE1OS4yNDIKMCAxNSAxNSAxNzg0ODggMSAxMjgxMDEzNzk0Ci9qc3Rlc3QuaHRtbCAwIDAKNTguMjQ3LjEwLjQzCjAgMTYgMTYgMTc5NjM4IDEgMTI4MTA2NDU3NQovanN0ZXN0Lmh0bWwgMCAwCjgyLjIxMC4xNDYuNTcKMCAxMiA4IDU0NzM4IDMgMTI4MDkzNTIxMwotIDAgMAo4MC4yMzQuNDUuMTIxCjAgOSA4IDU0NzM4IDIgMTI4MTAzOTExOAovIDAgMAo4Mi4xMzEuODUuNgowIDYgNiA2ODAwNCAxIDEyODEwNDExMjEKL3N0b3J5Lmh0bWwgMCAwCjExOC4xMzcuNTIuMjA5CjAgNCA0IDI3MzY5IDEgMTI4MDg4MjI3MgotIDAgMAoxMjkuNzguNjQuMTAxCjAgMTQgMTQgMTYxMjA2IDEgMTI4MDk2NzUxNQotIDAgMAoxNzQuMTI5Ljg5LjE5OQowIDEgMSAxMTUzNCAxIDEyODA4NTc0NTMKLSAwIDAKMTMxLjE3OS4yMjQuMTQzCjAgMTQgMTQgMTgwNzE4IDEgMTI4MDk0MDE5OAotIDAgMAoyMjEuMjI0LjY4LjExNAowIDMxIDMxIDM1ODE1MiAxIDEyODExODcyMTUKL2pzdGVzdC5odG1sIDAgMAo5MS4yMDMuNjIuNTEKMCA2IDQgMjgwMjAgMSAxMjgxMTg0MzUyCi8gMCAwCjIwMy4xNzMuMzUuNAowIDI0IDI0IDI5NTY3NiAxIDEyODA5ODkzMTMKLSAwIDAKMjQuNi4xNzkuMzcKMCAyNCAyNCA0MjMzNTkgMSAxMjgxMjQwNzg5Ci9tYW51YWwuaHRtbCAwIDAKOTQuMTkyLjQuMjI1CjAgMyAzIDM2OTE3IDEgMTI4MDk5MjYxOQotIDAgMAo5Ny4xMDEuMTAxLjE5NwowIDIzIDIzIDI4NDE0MyAxIDEyODEwNDAxMzIKL2NvbnRyaWIvcGhwLyAwIDAKODEuMjIzLjguMzQKMCA0IDMgMjY1MzkgMSAxMjgwODQ1MjkwCi0gMCAwCjY3LjIwMi4xNC4yNwowIDEgMSAxMDQ4MCAxIDEyODEyMjg3ODUKL2NvbnRyaWIvcGhwLyAwIDAKMjEyLjI2LjE0NC4xMDQKMCA0IDQgMjczNjkgMSAxMjgwODUzNzUxCi0gMCAwCjIwOS42LjIyMS4xMDAKMCA0IDQgMjczNjkgMSAxMjgwODU1NjczCi0gMCAwCjY3LjIzNS4yNC4zOQowIDE2IDE2IDE4NTc2NSAxIDEyODEyNDU0MDcKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMjA3LjExMS4yMzUuMzMKMCAxMiAxMiAxNTg0NDEgMSAxMjgwOTc5ODE1Ci0gMCAwCjc4LjEwOC4xNTAuMQowIDQgNCAyNzM2OSAxIDEyODA5NTUxNDUKLSAwIDAKOTQuMTk0LjEzNS44OAowIDQ1IDQ1IDQyNTc1NCAyIDEyODA5NTA4MTQKLSAwIDAKMTE0LjgwLjkzLjcxCjAgMTAgNSA1OTMzNCA1IDEyODEyMzIxMTMKLyAwIDAKMjIwLjI1NS4zLjMzCjAgMSAxIDExNTAgMCAwCi0gMCAwCjg4LjIxMy4yMjYuMTM4CjAgMjAgMjAgMTkzNTI2IDEgMTI4MTE5Njk0MwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjk4LjIxOS4xMDUuNTIKMCA0IDQgMjczODIgMSAxMjgxMTc4NzM4Ci8gMCAwCjIwNi44MC4xMTguMTIyCjAgMSAxIDExNTQ3IDEgMTI4MTIxNjg5MwovIDAgMAoyMTguODAuMjM1LjM2CjAgMTY1IDAgNTYwNzggMSAxMjgxMTk4MTE0Ci0gMCAwCjE5NS40OS4yMjQuMjAKMCAxNCAxNCAxNjUwODggMSAxMjgwOTE3ODEzCi0gMCAwCjgxLjgyLjgxLjExNwowIDIwIDE5IDIwNjExMiAxIDEyODEyMTI0MTgKL2NvbnRyaWIvcHl0aG9uLyAwIDAKNzEuMjAwLjIwOC4zMgowIDQgNCAzNzc3OSAxIDEyODEyMTAwNTUKLyAwIDAKODMuMjE4LjY0LjE5OAowIDEgMSAxMTUzNCAxIDEyODA5MjMwNDcKLSAwIDAKODkuMTcxLjIyNS4yNgowIDE2IDE2IDE3OTYzOCAxIDEyODA5NDUxNDMKLSAwIDAKMTQwLjE0Mi4yMS43NwowIDQgNCAyNzM4MiAxIDEyODExMjE5MTgKLyAwIDAKMTc0LjE0Mi4yMDcuNTMKMCA4IDYgNDk2OTIgMSAxMjgxMjI1NTI3Ci9jb250cmliL3BocC8vIDAgMAoyMDkuMTMxLjYyLjExMwowIDQgNCAyNzM2OSAxIDEyODEwNDc0MjkKLyAwIDAKMjA0Ljc0LjIyMi44NgowIDMyIDI3IDE0NjQxNyA1IDEyODEwNjg3MjEKL2NvbnRyaWIvcGxzcWwvTElDRU5TRSAwIDAKMTg5LjE3OC4zMS44NQowIDM0IDMxIDM3Mjk4OCAyIDEyODExNTkzNzgKL21hbnVhbC5odG1sIDAgMAoyMTkuMTA1Ljg2LjIxOQowIDI0IDIzIDI3MjM1NyAyIDEyODExMTMwNjgKLyAwIDAKMjIwLjI1NS4zLjQ4CjAgMSAxIDE0MTIyIDAgMAotIDAgMAoxODQuMjAxLjE0Ni43OQowIDI2IDI2IDIwODM1NSAxIDEyODA5Mjg0MjIKLSAwIDAKMjEwLjIxMC43OS4xOQowIDE2IDE2IDE3OTYzOCAxIDEyODEwMDc0NTcKLSAwIDAKODAuOTMuMjQ3LjI2CjAgNCA0IDI3MzgyIDEgMTI4MTA5MTMxNAovIDAgMAo4NS4yMjMuNTIuODAKMCA0IDQgMjczODIgMSAxMjgxMTcxNTEzCi8gMCAwCjg3LjE4LjIyMC4xMDQKMCA2MyA1OSA3MjAzMjggMiAxMjgxMTI1MTE4Ci8gMCAwCjIwNy40Ni4yMDQuMTc3CjAgMSAxIDEwNTYgMSAxMjgxMTM0MzQ3Ci9zcGFycWx0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4yMDQuMTc4CjAgMyAxIDI4ODEgMiAxMjgxMjM4OTAxCi8gMCAwCjIwNy40Ni4yMDQuMTc5CjAgMSAwIDM0MSAxIDEyODA5NjUyMTQKLSAwIDAKOTguMTEwLjE1My44MQowIDE5IDE5IDE4Njk1MSAzIDEyODEyNDEwODUKL21hbnVhbC5odG1sIDAgMAoyMTYuMTE5LjIxNS4xOTMKMCAzMyAyOSAzNzUyOTcgMiAxMjgwODY3Mzk1Ci0gMCAwCjk0LjI1My4xNDcuNjMKMCA0IDQgMjczODIgMSAxMjgxMTQ3MjA5Ci8gMCAwCjEyMS4zMy4xOTkuMjI2CjAgMTYgMTYgMTc2NDczIDEgMTI4MDg0Nzg1OAotIDAgMAo4OS4yMjIuMTg1Ljg5CjAgNiA2IDEwNzAxNSAzIDEyODExMjc5MTAKL21hbnVhbC5odG1sIDAgMAoyMDEuNzguMTE3LjE2CjAgNCA0IDI3MzY5IDEgMTI4MDg2MjY4NQotIDAgMAo3Ny40MC4xNjAuMjI2CjAgNSA1IDIxOTMwMyAxIDEyODEwODUwNTgKLyAwIDAKNzEuNTYuMTQ5LjIwCjAgNCA0IDI3MzY5IDEgMTI4MDk1NjAwNwotIDAgMAoxNTAuNzAuNjYuMTgyCjAgMTkgMTkgMjc3OTIwIDAgMAotIDAgMAo4MC41OS40Mi4xODYKMCAxMiAxMiAxNTcxNjAgMSAxMjgxMDI1OTI0Ci9jb250cmliL2dyb292eS8gMCAwCjg5LjIwNi4xNDYuMTIzCjAgMzEgMjkgMzY1NDM1IDIgMTI4MDkyNzk4NgotIDAgMAoyMTYuNTkuMC4xODAKMCAxIDEgNDAwMzUgMSAxMjgxMjE2MzMxCi9zdG9yeS5odG1sIDAgMAoxMzEuMjAzLjE0MC4xCjAgMjMgMjMgMjg0MTQzIDEgMTI4MTA1OTI1OQovY29udHJpYi9waHAvIDAgMAoyMjAuMjU1LjMuNTkKMCAxIDEgNTYzIDAgMAotIDAgMAoxOTMuMS4xMDQuNwowIDUgNSAyMTkyOTAgMSAxMjgwOTMxMTE1Ci0gMCAwCjIwNy40Ni4yMDQuMTg1CjAgMSAxIDE0NzAgMSAxMjgxMTM1MjE3Ci9odG1sdGVzdC5odG1sIDAgMAoyMDkuMjAuNjkuMTk2CjAgMSAxIDExNTM0IDEgMTI4MDkyNTI0OAotIDAgMAoyMDcuNDYuMjA0LjE4NwowIDEgMSA4NTMzIDAgMAotIDAgMAoyMDcuNDYuMjA0LjE4OAowIDEgMCAzMTkgMCAwCi0gMCAwCjIwNy40Ni4yMDQuMTg5CjAgMyAxIDE3MzIgMiAxMjgxMTMwMjA4Ci8gMCAwCjkwLjE5Ni44LjI1NAowIDMwIDMwIDM0NjQzNiAxIDEyODExMjIyOTkKL21hbnVhbC5odG1sIDAgMAo5MS4xNi4xMzkuOTMKMCA0IDQgMjczNjkgMSAxMjgxMDM4NTE4Ci8gMCAwCjg3LjE1OS4xODAuMTAyCjAgOSA4IDEwOTMwMiAzIDEyODA5MTAzMDkKLSAwIDAKMTUxLjgzLjE2Ny4yMTQKMCA0IDEgMTE1NDcgMSAxMjgxMDg0NTcwCi8gMCAwCjgwLjEyMS4xMDUuMTM2CjAgNSAzIDI2ODM2IDEgMTI4MDgzOTMzOQotIDAgMAoxODkuNTguMjI1LjIyNQowIDI3IDI2IDQyMTMxMSAxIDEyODEwNjg3NTEKL2NvbXByZXNzLmh0bWwgMCAwCjg0Ljk3LjIyNy44MAowIDEzIDEyIDE1NzUwMSAxIDEyODA5MzgwNjMKLSAwIDAKODcuMTM5Ljc5LjIyNQowIDQgNCAyNzM2OSAxIDEyODA5NjEwNTkKLSAwIDAKMTkzLjIwNi4yMi45NwowIDEyIDggOTQzMDcgMSAxMjgwODM4MDM3Ci0gMCAwCjgwLjEzLjgzLjEzNAowIDQgNCAyNzM2OSAxIDEyODA5MTQ5MDYKLSAwIDAKMjEzLjc5Ljg2LjUKMCAxIDEgMTE1MCAwIDAKLSAwIDAKMjEzLjc5Ljg2LjYKMCAyMSAyMCAxOTM3OTkgMSAxMjgwOTExMjcyCi0gMCAwCjExNS43NC43NS4yNDIKMCAxNCAxNCAxODA3MTggMSAxMjgwOTQyMzQ5Ci0gMCAwCjc1LjgzLjIyOC4xNTcKMCA1MCA1MCA0MTU5MDYgMSAxMjgxMjM0MjAzCi9jb250cmliL3BocC8gMCAwCjIwNy40Ni4yMDQuMTkxCjAgMyAyIDE1NDkzIDEgMTI4MTIwOTU4NwovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKNjUuNTIuMTA4LjU5CjAgMyAxIDEyMjA3IDIgMTI4MTE3Mjg5NwovIDAgMAoyMDcuNDYuMjA0LjE5NAowIDEgMCAwIDEgMTI4MTA1MTU3NgovIDAgMAoyMDMuMTEwLjI0Ni4yMzAKMCA0IDQgMjczODIgMSAxMjgxMjE5Mzk1Ci8gMCAwCjIxMC44LjUxLjQzCjAgNCA0IDI3MzY5IDEgMTI4MDk4MjUzMQotIDAgMAoyMDcuNDYuMjA0LjE5NQowIDIgMSAxNjk3IDIgMTI4MTA3MDU5OAovIDAgMAoyMDcuNDYuMjA0LjE5NgowIDEgMSAxMTU0NyAxIDEyODExMzM5ODgKLyAwIDAKODMuMjI4LjUuNTUKMCAxNyAxNyAxOTY5NDAgMSAxMjgwOTMxODQzCi0gMCAwCjkzLjIwNS4xNjAuMTU0CjAgMzYgMzUgMzI2MTc3IDEgMTI4MDk4OTk4MQotIDAgMAo2OC4yNDYuMTkzLjE5NAowIDQgNCAzNjcxMSAwIDAKLSAwIDAKMjQuMTg2Ljk3LjMyCjAgNCA0IDI3MzY5IDEgMTI4MDg4NDE2MAotIDAgMAoxMzIuMjM2LjExMi4yMzkKMCAyNCAyNCA0NTA0NTYgMSAxMjgxMTA2Nzc4Ci9tYW51YWwuaHRtbCAwIDAKODYuMTc1LjgyLjEzCjAgMTkgMTkgMTkwMTk2IDEgMTI4MTA5MjQzNQovaHRtbHRlc3QuaHRtbCAwIDAKOTEuMTc5LjExMi4xNTkKMCA0NiA0NiA2MjU1NDcgMSAxMjgxMTAwMzgxCi9odG1sdGVzdC5odG1sIDAgMAo1OS45My44NC40CjAgMTQgMTQgMTUzOTgyIDEgMTI4MTA3MTE5OQovanN0ZXN0Lmh0bWwgMCAwCjIwOS41Ljk2LjE0NgowIDQgNCAyNzM2OSAxIDEyODEwNDQ3MzEKLyAwIDAKODUuMTI1LjIwNC4xMjIKMCA1IDMgMjY4MzYgMSAxMjgwODM5NDM5Ci0gMCAwCjEyMi4xODEuMTc2LjI0MQowIDQgNCAyNzM4MiAxIDEyODExMDM2MTMKLyAwIDAKNjUuNTIuMTA4LjYwCjAgMSAwIDAgMSAxMjgxMjEwMjQ3Ci9jb250cmliL3BocC8gMCAwCjY2Ljc3LjEzNi4xNTMKMCAyIDIgMjMyMTggMiAxMjgwODQ0NzY0Ci0gMCAwCjIxMy4xNzIuNjEuMTc4CjAgMTIzIDUzIDcxMTMyMyA1IDEyODEwMjY2MjIKL2NvbnRyaWIvZ3Jvb3Z5LyAwIDAKNzAuMjUxLjE2NS4xMzAKMCA1IDUgMzUyODUgMSAxMjgwOTQ2MDMyCi0gMCAwCjgzLjgyLjIyNC4zNQowIDEgMSAxOTE5MjEgMCAwCi0gMCAwCjcxLjExMi41Mi43NAowIDE2IDE2IDE3OTY1MSAxIDEyODEyNDAwNjcKL2pzdGVzdC5odG1sIDAgMAoxMjQuMTY4LjE2NS4xNTYKMCA1IDUgMjg1MzIgMSAxMjgxMDkxNzk4Ci8gMCAwCjgxLjg0LjI0OS4xMDUKMCAzIDMgMjYyMzIgMSAxMjgxMTE1NDcwCi8gMCAwCjE4NC43My4xMzAuMTAzCjAgNiA1IDIwNDczIDEgMTI4MTIxNjI3MgovY29udHJpYi9zcWwvIDAgMAo4Ny4yMjAuMzMuMjYKMCA0IDQgMjczODIgMSAxMjgxMTAxNjE5Ci8gMCAwCjgxLjI0NC44My4xOTAKMCA2IDEgMjM3MiAxIDEyODEwMzM0NjIKL21hbnVhbC5odG1sIDAgMAo2OC40Mi42Ny4xMzUKMCA1IDMgNDI0NjcgMSAxMjgxMDM1Nzk5Ci9zdG9yeS5odG1sIDAgMAoxODguMi4yMDkuMTE4CjAgNCA0IDI3MzY5IDEgMTI4MDg0NzY1NwotIDAgMAo3OC44Ni4yMzQuMTkzCjAgNiA2IDI1NDUwNyAxIDEyODEyMzIyMTUKL21hbnVhbC5odG1sIDAgMAo3OC4yOC4yLjkyCjAgMTggMTggMzgwNDQ0IDEgMTI4MDg0NzQwOQotIDAgMAo1OC4xODcuNzcuMTE3CjAgMTkgMTkgMTg1Njc2IDEgMTI4MTAwMzY1OAotIDAgMAoxODQuOTYuOTUuMTU5CjAgMjYgMjUgMzQ3NTM1IDQgMTI4MTIxNzkzNAovbWFudWFsLmh0bWwgMCAwCjIxMy4yMzEuNjAuMTIxCjAgMSAwIDAgMCAwCi0gMCAwCjkyLjIzNC41Ny4xMTIKMCAzIDEgMTE1NDcgMSAxMjgxMTk3MDE2Ci8gMCAwCjgzLjExMi4xNi4yMzEKMCA2MyA0NSA0MTY3ODUgNSAxMjgxMjM1OTEyCi9jb250cmliL2x1YS8gMCAwCjgxLjEzMC4xMy4xOTkKMCA2IDYgMTIxMDc2IDEgMTI4MTAyNDQ3NwovbWFudWFsLmh0bWwgMCAwCjE3NC4wLjkyLjM2CjAgMTAgNyA1MzYwMSAzIDEyODExMzI4MTcKLyAwIDAKMTIyLjIxNi4zNy4yMDEKMCAzIDMgNDE3ODUgMSAxMjgwODkxODYxCi0gMCAwCjIyMC4xODEuMTI1LjY4CjAgMiAxIDExODY2IDEgMTI4MTEwNTk1NAovIDAgMAo2Mi4zLjIzOC42MgowIDI4IDI4IDMxNDI1OSAxIDEyODA5NDQ3NzQKLSAwIDAKMjEzLjE2MC4xNjQuMzgKMCA5IDkgMjkxNDExIDIgMTI4MTExNDI1OQovbWFudWFsLmh0bWwgMCAwCjI0LjIwLjI1MS4zMAowIDI1IDI1IDI4NzkxOCAxIDEyODA4NTU4NDAKLSAwIDAKNjIuMS42NC44OAowIDQgNCAyNzM2OSAxIDEyODA5NTg5NDYKLSAwIDAKOTIuMTk2LjE4OC4yMDEKMCAyMyAxNCAxNTM5ODIgMSAxMjgwOTk2Nzk1Ci0gMCAwCjY2LjI0OS44Mi4yCjAgNSA0IDU5MDI5IDEgMTI4MDkzMzM2MwotIDAgMAo4MS4yNDYuMTIzLjYyCjAgNDMgNDIgNDUyOTAzIDEgMTI4MDkzMDQ3MAotIDAgMAo4MS4xOS4yMTUuMTIKMCAxNiAxMiA5OTM4NCAxIDEyODEyMjYxNTIKL2NvbnRyaWIvcGhwLy8gMCAwCjc1LjEwMS4xMzkuMjQwCjAgMSAxIDExNTM0IDEgMTI4MDgzNzIyMgotIDAgMAo3NS4xMjkuMTYxLjIzNwowIDMzIDMzIDM0MDU3NSAxIDEyODExMDE2MjUKL2hpZ2hsaWdodC5odG1sIDAgMAo4OS4xMDMuMjQzLjIwMgowIDI1IDI1IDQ3NzUzMyAxIDEyODA5NDkzNzEKLSAwIDAKMTEzLjEwOC42NC4xMDAKMCAxIDEgMTE1NDcgMSAxMjgxMjAyMDg5Ci8gMCAwCjIwMS4yMTAuMTI2Ljc3CjAgNCA0IDI3MzY5IDEgMTI4MTA1MDg3MQovIDAgMAoxODkuMTc4LjU1Ljk1CjAgMTAgNiAyMTk2MjkgMSAxMjgxMDU5ODk0Ci9MSUNFTlNFIDAgMAoyNC4xMzIuMTA2LjE3OQowIDEgMSAwIDEgMTI4MDg0NjkxNgotIDAgMAo4OS4xNjcuMTYuMTU5CjAgNCA0IDI3MzgyIDEgMTI4MTA5NTI0MgovIDAgMAo4MC4xNTMuMjUuOTkKMCA4IDYgNjM0OTAgMiAxMjgwOTA5MjAyCi0gMCAwCjIxMS40My4xNTIuNDkKMCAxIDEgMTE1NDcgMSAxMjgxMTk4MjU0Ci8gMCAwCjIxNy4yNC4yNDAuNjgKMCA0IDEgMTI0OTYgMSAxMjgxMTY2NDE4Ci8gMCAwCjExNC4xOTguMTQ1LjEzMgowIDI3IDI3IDQ4NTgzNiAxIDEyODA5NTYxMTgKLSAwIDAKMTczLjExNS4yNDcuMTc2CjAgMzUgMjAgOTA4NzEgMyAxMjgxMTA5OTIzCi9tYW51YWwuaHRtbCAwIDAKMTIzLjEyNS42Ni4xOQowIDEgMCAzMTkgMCAwCi0gMCAwCjY3LjE4LjUuMTM2CjAgMSAxIDExNTM0IDEgMTI4MDg1Nzc0MgotIDAgMAo5MS4xOTcuNzIuMTYKMCAyOCAyOCA0OTM2MDggMSAxMjgxMDE3NjQ0Ci9jb21wcmVzcy5odG1sIDAgMAoxODQuNzIuMTI5Ljg0CjAgMSAxIDExNTAgMCAwCi0gMCAwCjIxMi4xMTcuMTU4LjIyMgowIDM5MCAxNTkgMTk4MDExMCAxMSAxMjgxMjQ0MTc2Ci9tYW51YWwuaHRtbCAwIDAKOTEuODQuMjA5LjI0OAowIDUgNSA2MjU3MyAxIDEyODEwMDc2OTEKLSAwIDAKOTkuMjMxLjE1Mi4yNDgKMCA1IDUgMjg1MTkgMSAxMjgwOTQxMDY2Ci0gMCAwCjEyMC4yOC42NC42OQowIDQgNCAyNzM2OSAxIDEyODA5OTEwNzcKLSAwIDAKMjExLjQzLjE1Mi41MAowIDEgMSAxMTU0NyAxIDEyODExOTgyNTQKLyAwIDAKODEuODIuMTk0LjIyMAowIDMxIDE5IDE5ODI5NiAxIDEyODA4MzczOTYKLSAwIDAKMjE3LjI0LjIwNy4yNgowIDQ2IDI0IDI4Njg4MiAxIDEyODA4MzkzMTYKLSAwIDAKNjEuMTgzLjYyLjE5NAowIDEgMSAxMTUzNCAxIDEyODA5NTY2NjcKLSAwIDAKNjIuMjE4LjE2NC4xMjYKMCA0IDQgMjczNjkgMSAxMjgwOTk4MDcwCi0gMCAwCjkxLjExNC4yNTAuMjUKMCAxOSAxOSA1OTQ4ODkgMyAxMjgwODU3NjIzCi0gMCAwCjk4LjE3My40Ni42NgowIDE4IDE4IDE4MTY1MCAxIDEyODA5NDYwMjUKLSAwIDAKOTEuNDUuMTQ2LjE5OQowIDE2IDE2IDE3OTYzOCAxIDEyODA5OTY1NzMKLSAwIDAKMTk1LjIuMjM2LjEwNQowIDIzIDIzIDI4NDE1NiAxIDEyODExMDIxMjUKL2NvbnRyaWIvcGhwLyAwIDAKMTI4LjE4Ny42Mi4yNgowIDE2IDE2IDE3OTY1MSAxIDEyODExMzQ2NTYKL2pzdGVzdC5odG1sIDAgMAo3OS44NC40LjU2CjAgMjQgMjEgMTk4ODE5IDIgMTI4MTEyNTYyNwovY29udHJpYi9sdWEvIDAgMAoxNzMuNjkuMTcwLjE3NQowIDI2IDIzIDIzMjcxNCAyIDEyODA5NTc5NTkKLSAwIDAKOTkuMjI0LjE0MS44NAowIDgzIDgxIDg3OTA3MyAzIDEyODEyMzc4NzkKL2NvbnRyaWIvb21ldGEvIDAgMAo5MS4xOTYuMTA5LjEwMgowIDE0MiAxMjUgMTIwOTQ5MSAzIDEyODA5NTkyMjEKLSAwIDAKODMuMTQ1LjEwMC4zNAowIDIxIDE5IDIxNTcwNiAxIDEyODA4Mzg4MTcKLSAwIDAKMTc4LjM0LjEwNi4yMDQKMCAxNiAxNiAyMzIxOTIgMSAxMjgxMTc0NjQzCi9odG1sdGVzdC5odG1sIDAgMAo3Ny4yMjUuODMuMjQKMCAxIDEgMTA3MiAxIDEyODA4Mzc3MzQKLSAwIDAKMjA3LjI1My4yNDIuMTAKMCAxOSAxOCAzNzQ0NjIgMSAxMjgxMDQwNzExCi8gMCAwCjIwMi4yNDcuNTAuMTc5CjAgNCA0IDI3MzY5IDEgMTI4MDk4MDkyNwotIDAgMAoxMjEuMjQyLjQwLjEwCjAgMjcgMjYgNDgwMjQ5IDEgMTI4MTA5NDUzNAovY29udHJpYi9waHAvIDAgMAo5MS41Ni4xNzcuNDcKMCAyIDAgMCAwIDAKLSAwIDAKMjQuNjguMjMwLjk0CjAgNSA1IDIxOTMwMyAxIDEyODEyMTQ5NDcKLyAwIDAKMjEyLjM2LjU3LjEwCjAgMzEgMzEgNDA2NzIyIDEgMTI4MTExMTQ0NQovbWFudWFsLmh0bWwgMCAwCjIxMy4yMTAuMTMuMTEwCjAgMjIgMjEgMTk0OTI2IDEgMTI4MTAzNjEzMgovY3NzdGVzdC5odG1sIDAgMAoxODMuNS4xMC4xOTcKMCAxIDEgNDAwMzUgMSAxMjgwODU2MzA0Ci0gMCAwCjMyLjk3LjExMC42NAowIDI4IDE2IDE3OTM1NSAxIDEyODA5NjA4MzUKLSAwIDAKMTE0LjEwOC4xNTMuMTk1CjAgMyAyIDMyNTkgMSAxMjgwODU2NDg1Ci0gMCAwCjIwMy4xNTYuMTQ0LjE0OQowIDUgNSAzNTI5OCAxIDEyODExNzE4MDAKL2NvbXByZXNzLmh0bWwgMCAwCjkyLjIwNi44Ny4zNQowIDIgMSAxMTg2NiAxIDEyODExNTIwMzcKLyAwIDAKNjcuMTk1LjExMi4xNzYKMCAyNTYgMTY4IDEyNjM1MzMgNTYgMTI4MTIzNDMxOQovIDAgMAo3NC4xMTcuMjUzLjE0MQowIDUgNSA0NDU2NSAxIDEyODExNDQzOTEKL3N0b3J5Lmh0bWwgMCAwCjIxMy44OS4yMDkuMzcKMCAyMSAyMCAzNzc5MzggMSAxMjgxMDM0NTczCi8gMCAwCjE1MC43MC43NS4xNjEKMCAzNiAzNiA1MDExMjUgMCAwCi0gMCAwCjY0LjU2LjY0LjU3CjAgMSAxIDExNTM0IDEgMTI4MTA2NDQwNwovIDAgMAoxODguMjIyLjYwLjIzMwowIDE4IDE4IDE2Nzg1NyAxIDEyODExMzYwMzIKL21peGVkdGVzdC5odG1sIDAgMAo3Ny4yNTUuNDYuMTA5CjAgNCA0IDI3MzgyIDEgMTI4MTIxNTEzMQovIDAgMAo5NC4xNzAuMzguMTIxCjAgOSA5IDEwMDA1MyAxIDEyODA5NDQ3NDEKLSAwIDAKMTEwLjE3NC4yMjcuMTA1CjAgNTEgNDggNTYwMzY1IDMgMTI4MTA1MzM0OAovY29udHJpYi9zY2hlbWUvTElDRU5TRSAwIDAKODAuMC4yNDkuNjAKMCAxOSAxOSAyMDYzNzIgMSAxMjgxMTAxMjc5Ci9jb250cmliL3B5dGhvbi8gMCAwCjIwMi4xNTMuOS4xNTgKMCAxNCAxNCAxNjUxNDMgMSAxMjgwOTkyMDg5Ci0gMCAwCjgxLjUuMTQ3LjU0CjAgNDYgNDEgNDcwNTkwIDEgMTI4MDg0MjU3OQotIDAgMAo2Ni4xMTkuMTgzLjE1MAowIDE2IDE2IDE3OTYzOCAxIDEyODA5ODk4NzQKLSAwIDAKNTkuMTAxLjE2Mi4xNTUKMCA0MSAyNSA0NzYwMzkgMyAxMjgwODQzMzYxCi0gMCAwCjc0LjEyMy4xNDguNDgKMCA0IDQgNDAwMzUgMyAxMjgxMDc5NDM1Ci9zdG9yeS5odG1sIDAgMAo2Mi43MS4yMi4yMQowIDE0IDE0IDE2NTE0MyAxIDEyODEwODM2MDgKL2h0bWx0ZXN0Lmh0bWwgMCAwCjYzLjEyNi4xODMuMTA2CjAgMjYgMjMgNjIwNzc2IDMgMTI4MTEzNDQ5OQovIDAgMAo2Mi4yNDEuMjQ1Ljc2CjAgNSA1IDM1Mjg1IDEgMTI4MDk1NTM3MAotIDAgMAo2OS4xMTAuMjIuMTU2CjAgMTEgMTEgMTM4MTUyIDEgMTI4MTAyMzIxMgovY29udHJpYi9sdWEvIDAgMAo4Ny44OC4yNC42NwowIDQgNCAzODA2NyAxIDEyODEwMjA2MzAKL21hbnVhbC5odG1sIDAgMAoxMjkuMTkyLjE3MC4yNTAKMCAxOSAxOSAyMDU3MDMgMSAxMjgwODYzNDIxCi0gMCAwCjk0LjMxLjEyLjY2CjAgMjAgMjAgMTk5NTQyIDEgMTI4MDkyMTQ1NAotIDAgMAoxMjIuMTczLjIwMi44NAowIDQgNCAyNzM2OSAxIDEyODA5OTIwNjkKLSAwIDAKMTQxLjg5Ljg1LjEwOQowIDIxIDIxIDI1ODQ4NiAxIDEyODEwMDgxNDMKLSAwIDAKOTIuMTk2LjQxLjIwMgowIDIgMiA2MjgzNiAwIDAKLSAwIDAKNjQuMTgzLjMzLjIwMgowIDM4IDM2IDI5Nzc0NSAxIDEyODA4ODM1NDMKLSAwIDAKNjcuMTgzLjIwLjMwCjAgMTYgMTYgMTc5NjUxIDEgMTI4MTIzODg5NgovanN0ZXN0Lmh0bWwgMCAwCjgwLjIzOS4xMy45OAowIDUgNSAyMTkyOTAgMSAxMjgxMDM0MTk4Ci8gMCAwCjEyMi4xNjkuMzguMjU0CjAgMyAzIDM2OTE3IDEgMTI4MDk2NTk3OQotIDAgMAo4OS4xODQuMTc5LjE2MgowIDQgNCAyNzM4MiAxIDEyODEwODY3MTMKLyAwIDAKMTg4LjI2LjYzLjEyMQowIDQgNCAyNzM4MiAxIDEyODExOTE1NTcKLyAwIDAKODguOTEuMS4xMTQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjM3NzI5Ci9qc3Rlc3QuaHRtbCAwIDAKODkuMTc5LjEyNS4xMDAKMCAyMCAyMCAyMDI1NzMgMSAxMjgxMTMzMDQwCi9jb250cmliL3NjaGVtZS8gMCAwCjY0LjEzMS4xOTcuNjcKMCA0IDQgMjczNjkgMSAxMjgwODgxOTkxCi0gMCAwCjkzLjYyLjI0Mi4yNTAKMCAyIDAgMCAxIDEyODEwMTU5MjcKL21hbnVhbC5odG1sIDAgMAo5MC4yMTUuMTA5LjIzNQowIDQgNCAyNzM2OSAxIDEyODA5Njg2MDYKLSAwIDAKODguODIuMC44CjAgNCAzIDI2NTM5IDEgMTI4MDg0NjcwNQotIDAgMAoxNTAuNzAuNjQuMTk5CjAgMjAgMjAgMzEzMDYxIDMgMTI4MTA2MzgwNwovIDAgMAo2Ny4xNjkuMjQzLjIxOAowIDQgNCA1Nzc2MSAxIDEyODEyMDUxMTgKL21hbnVhbC5odG1sIDAgMAo4Mi45NC4xNzkuNDAKMCAyNSAyNCA4NDQxMiAxIDEyODExODY4NTcKL0xJQ0VOU0UgMCAwCjEyMS4xNzYuMTI0LjY1CjAgMTY2IDAgNTY0MTkgMSAxMjgxMDgxNzY3Ci0gMCAwCjIwNi44MC4xMTUuMTEzCjAgMSAxIDExNTQ3IDEgMTI4MTIxODU5NgovIDAgMAoyNC40Ny4yNDMuMjQ4CjAgNCA0IDI3MzY5IDEgMTI4MDkzNjg5NAotIDAgMAo4MS44OC4xMTcuMTgxCjAgMSAxIDExNTM0IDEgMTI4MDk2NTE2NAotIDAgMAoyMDMuMTY3LjE4OS4xNjIKMCA0IDMgMjY1MTYgMSAxMjgwODM3MjA4Ci0gMCAwCjYxLjYwLjExNi41OQowIDQgNCAyNzM4MiAxIDEyODEwODU2NTcKLyAwIDAKMjE3LjE3NC45OC4yMzcKMCA5IDkgMjQ2NjU5IDEgMTI4MDg0ODcxNQotIDAgMAo5MS4yMTUuNzkuNTcKMCAxNyAxNiAxNzk2NTEgMSAxMjgxMTgxMDU0Ci9qc3Rlc3QuaHRtbCAwIDAKOTQuMjUuMTU4LjIzMwowIDE0IDE0IDE2MDYzNiAxIDEyODEwMjYwNzUKL2Nzc3Rlc3QuaHRtbCAwIDAKMjA3LjQ2LjEyLjIzOAowIDIgMiAzNzQyMSAyIDEyODExNTkwOTUKL2ZhcS5odG1sIDAgMAo3NC4xMjUuMTU0LjgwCjAgMTMgMTMgMTQ2MjkwIDEgMTI4MTEyNTIyNAovIDAgMAo3Ni4yNC4yOS4xOTQKMCAzOCAzOCA2MTAxOTIgMSAxMjgxMDc0NDI5Ci9tYW51YWwuaHRtbCAwIDAKNzQuMTI1LjE1NC44MQowIDExIDExIDEzNzI1MCAwIDAKLSAwIDAKNzQuMTI1LjE1NC44MgowIDE3IDE3IDIyMTQ2NiAwIDAKLSAwIDAKMTg4LjE2Ny4xMi43CjAgNDkgMjQgNDc2MDA4IDEgMTI4MDg4ODY4NwotIDAgMAo3NC4xMjUuMTU0LjgzCjAgMTMgMTMgMjA1OTQzIDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg0CjAgNyA3IDE4MDQ0MyAxIDEyODEwMjM4NjgKLyAwIDAKNzQuMTI1LjE1NC44NQowIDEzIDEzIDkxNTQyIDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg2CjAgNSA1IDUwMTQ2IDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg3CjAgMTMgMTIgMTgxNDQyIDAgMAotIDAgMAoyMDMuMzkuMjU0LjE1OAowIDI4IDI3IDMzNTA1MiAyIDEyODA5NjkxODMKLSAwIDAKOTcuMTIxLjE1MC43MQowIDEwIDEwIDEyNDU3NCAyIDEyODA4ODk2NDIKLSAwIDAKNzIuMTQuMjEyLjgwCjAgNiA2IDE4MDk4MyAwIDAKLSAwIDAKNzIuMTQuMjEyLjgxCjAgNiA1IDEwMzc4MCAwIDAKLSAwIDAKNzIuMTQuMjEyLjgyCjAgNSA1IDQzOTA3IDEgMTI4MDgzNzEyMgotIDAgMAo4OS4xODIuNzAuMwowIDE1IDE1IDM1NzA2NCAxIDEyODEwMTQ2NTYKL2h0bWx0ZXN0Lmh0bWwgMCAwCjcyLjE0LjIxMi44MwowIDYgNiAxNjg3MTYgMCAwCi0gMCAwCjcyLjE0LjIxMi44NAowIDggOCA5NDc5NyAwIDAKLSAwIDAKNzIuMTQuMjEyLjg1CjAgOCA4IDE5MzI5OCAwIDAKLSAwIDAKNzIuMTQuMjEyLjg2CjAgMTEgMTEgMTg3Nzk1IDAgMAotIDAgMAo5OC4xMDEuMTU3LjIyOAowIDQgNCAyNzM4MiAxIDEyODExMDQ0MjIKLyAwIDAKNzIuMTQuMjEyLjg3CjAgOCA4IDE4ODY3NSAwIDAKLSAwIDAKNjcuMjEyLjE2Ny4yMTgKMCAxMiA5IDc0NTQxIDEgMTI4MTIyNTI3NQovIDAgMAoyMDMuNDUuMTIuMjMwCjAgNCA0IDI3MzgyIDEgMTI4MTE1NTEwMwovIDAgMAo5Mi4xOTguNDUuMjQyCjAgMzAgMjQgNDkyNTk3IDIgMTI4MDkxMTAwMgotIDAgMAoyMDcuNDYuMTIuMjQwCjAgMyAyIDEzMDA0IDMgMTI4MTIxMTgwNwovaHRtbHRlc3QuaHRtbCAwIDAKMjA3LjQ2LjEyLjI0MQowIDMgMSAzNTg2NCAyIDEyODEyNDUxNjkKLyAwIDAKMTg0LjcyLjE2Ni4xOTMKMCAxIDEgMTE1MzQgMSAxMjgwOTU5MDMyCi0gMCAwCjkxLjE4NS4xOTMuMTE5CjAgMSAxIDE5MTkyMSAwIDAKLSAwIDAKMjEyLjEwMC40Mi4yMDYKMCA0IDQgMjczNjkgMSAxMjgwODQ5ODY0Ci0gMCAwCjYzLjIxMC4xNjEuMTg4CjAgNiA2IDIyNzIwNiAxIDEyODEwNDM1NzEKL2NvbXByZXNzLmh0bWwgMCAwCjIxMi4xMTkuMTY0LjIzNAowIDI1IDI1IDQ3NzczNCAxIDEyODEwMTAxNDUKL2NvbnRyaWIvcGhwL0xJQ0VOU0UgMCAwCjE5My45Mi4xMjMuNQowIDI5IDI4IDIxMjU1NyAyIDEyODExMDMwMDMKL3NwYXJxbHRlc3QuaHRtbCAwIDAKMTg4LjIzLjEwOC4yNwowIDE1IDE1IDQwMDMyIDEgMTI4MTIwNzA3NQovIDAgMAo4MS4xNjkuMTg1LjMyCjAgNCAzIDI2MjMyIDEgMTI4MTA5NTA0MAovIDAgMAoyMDcuNDYuMTMuNDAKMCAxIDEgMTY3MSAxIDEyODExNDc5NjUKL2NvbnRyaWIvcGhwL0xJQ0VOU0UgMCAwCjY3LjQ5LjE3Ny45MgowIDY3IDY2IDEwODU0MTAgMiAxMjgwOTE1OTQ0Ci0gMCAwCjIwNy40Ni4xMy40MQowIDIgMCAzNDEgMiAxMjgxMTE2NTU1Ci9jb250cmliL3NxbC8gMCAwCjkyLjc5LjE1Ny42NwowIDEyIDEyIDE1NzE2MCAxIDEyODA5NDY4NzQKLSAwIDAKMjAxLjIxMS43Mi4xNzcKMCAyMyAyMyAyODQxNTYgMSAxMjgxMTIyNzc1Ci9jb250cmliL3BocC8gMCAwCjc4LjMwLjExOS4xNjMKMCAzNCAyMyAzOTc3ODYgMSAxMjgxMTAyOTk5Ci9qc3Rlc3QuaHRtbCAwIDAKMjA3LjQ2LjEzLjQ2CjAgMSAwIDAgMSAxMjgwOTYxNDY2Ci0gMCAwCjIwNy40Ni4xMy40OAowIDEgMSAyMjYyIDEgMTI4MDk5NzU4NQotIDAgMAo5My4yMTMuMjcuMTEKMCAzNiAzNSAyOTU2MTYgMSAxMjgwODU2MTI4Ci0gMCAwCjE4Ni4xMzYuMjAuMgowIDE2IDE2IDE3OTYzOCAxIDEyODA5NzM5MDQKLSAwIDAKMTczLjIwMy4yMDcuMTUzCjAgMSAxIDExNTM0IDEgMTI4MDg2NTcyMwotIDAgMAo4OC4yNDAuNjguNDcKMCAxOCAxOCAzNjM2ODUgMSAxMjgxMTA1NjE4Ci9odG1sdGVzdC5odG1sIDAgMAo4MC4xOTIuNjIuMTE5CjAgMzAgMzAgMzMzMzQxIDEgMTI4MDk1MjA5MAotIDAgMAoxMTQuODQuMTMzLjEwOAowIDE4IDAgMCAwIDAKLSAwIDAKMjAxLjI1LjEyOS4xMzAKMCAxMSAxMSAxMzA4OTkgMSAxMjgwODU5MTMwCi0gMCAwCjgzLjIxNy4xNTcuMTQzCjAgMTEgMTEgMTU0NDQ0IDEgMTI4MDg1NDM3NwotIDAgMAo3NC4xMjUuMTIyLjQ5CjAgMjQgMjQgNDc2MDc3IDEgMTI4MTE0Mjg3MQovY29udHJpYi9waHAvIDAgMAoxODkuMjA4LjEwOS4yCjAgMjMgMjMgMzg4MTQyIDEgMTI4MDk1MjE4NAotIDAgMAoyMDcuNDYuMTMuNTAKMCAxIDEgNDAwMzUgMSAxMjgxMjQ0OTkzCi9zdG9yeS5odG1sIDAgMAoyMDcuNDYuMTMuNTMKMCAxIDAgMCAxIDEyODExMzI2MDcKL3N0b3J5Lmh0bWwgMCAwCjgyLjEzNS4zNC4yMDIKMCAxNCAxNCAxNjQzODQgMSAxMjgxMTAxNDEyCi9jb250cmliL2x1YS8gMCAwCjEyMy4xMjUuNjYuOTcKMCAxIDAgMzE5IDAgMAotIDAgMAoyNC4xNi44NC42OAowIDQgNCAyMzA2OCAxIDEyODA5ODA2NjMKLSAwIDAKODAuODMuMTI1LjExMwowIDIzIDIzIDIxNzEyNyAxIDEyODExMTU0NTMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjgwLjExOC4zOC42NgowIDE1IDE1IDE3NzY5MCAxIDEyODExMDI2ODUKL2NvbnRyaWIvY3NoYXJwLyAwIDAKODMuMTM3LjE3MC4yNTMKMCAyNiAyNiA1MTg4MTAgMSAxMjgxMTc4OTg4Ci9tYW51YWwuaHRtbCAwIDAKMTkzLjEwOS4xMDUuMTQ1CjAgNTMgMzcgNjE3OTQwIDEgMTI4MTExMDI1MwovbWFudWFsLmh0bWwgMCAwCjg3LjE5NC4xNTQuMjEzCjAgNCA0IDI3MzY5IDEgMTI4MTAwOTYxNAotIDAgMAo3NC44NS4xOS4xNjIKMCAyMyAyMyAyODQxNDIgMSAxMjgwOTUxNDgwCi0gMCAwCjM4Ljk2LjE2MC4zNAowIDQgNCAyNzM2OSAxIDEyODA4NTIzMTgKLSAwIDAKMjIwLjE4MS4zOC40OQowIDEgMSAxMTUzNCAxIDEyODA4OTczNDUKLSAwIDAKMTg4LjIyMS4yMDUuNzQKMCAxNSAxNSAxNzc2OTAgMSAxMjgxMjI1MzUwCi9jb250cmliL2NzaGFycC8gMCAwCjQxLjE4NS43MC4yMDUKMCAxIDEgMTkxOTIxIDAgMAotIDAgMAoyMTcuOTEuMjEzLjEzMAowIDE2IDE2IDM2NDk5MyAxIDEyODEwOTQwMjcKL2NvbXByZXNzLmh0bWwgMCAwCjg1LjI1LjE0Ni40NgowIDQgMyAyNjIzMiAxIDEyODEyMjYxNDAKLyAwIDAKNzcuMjEuMTA5LjE5NQowIDQgNCA0NjEzNiAxIDEyODA5Mjk0MTMKLSAwIDAKMTg5LjM0LjE4Mi4xOAowIDM2IDM1IDM4MDU2MSAyIDEyODEwNDAzODEKL2h0bWx0ZXN0Lmh0bWwgMCAwCjE2OS4yMzAuODQuMTAzCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg2MTc1MAotIDAgMAo2Ni42LjE0Ni42MAowIDE2IDE2IDE3OTYzOCAxIDEyODA5NDU0ODQKLSAwIDAKMTIyLjE2NC4xMDkuMTYxCjAgMTYgMTYgMTgzMTQ5IDIgMTI4MTE3NjAxNgovTElDRU5TRSAwIDAKMjAxLjg2LjE3My4yCjAgMTYgMTQgMTY1NDI5IDEgMTI4MDg4NjA4NwotIDAgMAo5MC4yMzEuMTg2LjEwMAowIDI0IDIzIDIzMTc3OSAxIDEyODEyMDY2MDMKL21hbnVhbC5odG1sIDAgMAoxMjIuMTY5LjQ4LjI1MwowIDMgMyAzNjkxNyAxIDEyODExNjc4MTMKL21hbnVhbC5odG1sIDAgMAo4OS4xODQuMTQ4LjgwCjAgMjUgMjUgMjg4MTUzIDEgMTI4MTIxNDU0NgovanN0ZXN0Lmh0bWwgMCAwCjkyLjE5Ni45OC40OQowIDI5IDE5IDI1NzQ1NiA0IDEyODA4NTA1MDEKLSAwIDAKNzAuMzcuNjUuMTA4CjAgMiAyIDIzMDY4IDIgMTI4MDk1OTE0MgotIDAgMAo3OS40Mi4xMjEuMzQKMCA1IDQgMjczODIgMSAxMjgxMTI2NTcyCi8gMCAwCjIyMC4xODEuMzguNTIKMCAxIDEgMTE1MzQgMSAxMjgwOTgxNzI4Ci0gMCAwCjcwLjI0NC4yMzQuMjIyCjAgMjUgMjUgMjA3MzAzIDEgMTI4MTI0MDE4NwovY29udHJpYi9wbHNxbC8gMCAwCjE0MC4xNDIuMjEuMTA1CjAgNCA0IDI3MzgyIDEgMTI4MTEyMTkzMwovIDAgMAoxNjYuMTM3LjcuMTM5CjAgMyAzIDI2MjE5IDEgMTI4MDg5MTI5MQotIDAgMAoyMDMuMjA2LjE4NS40MQowIDQxIDQxIDIyODg3OCAyIDEyODExNDQyMDcKL2hpZ2hsaWdodC5odG1sIDAgMAo5MS4xOTAuMjI2LjkyCjAgMTkgMTYgMzg3Nzc0IDIgMTI4MTEwOTc1NQovbWFudWFsLmh0bWwgMCAwCjE5NS44OC4xMjQuMjI1CjAgNCA0IDI3MzY5IDEgMTI4MDg0NzIzMwotIDAgMAo4NS4yNDcuNjYuMTk5CjAgNCA0IDI3MzY5IDEgMTI4MDg4MzIwMQotIDAgMAo2Ni4yMDcuMTk5LjExMAowIDQgNCAyNzM2OSAxIDEyODA5NTkyMjYKLSAwIDAKMjQuNjMuMjI1LjE3NQowIDIyIDIyIDE5NjIzNCAxIDEyODExMDk5OTUKL2Nzc3Rlc3QuaHRtbCAwIDAKMTE1LjY0LjExMC45NgowIDYwIDYwIDY1NTcyNSAzIDEyODEyMjgwNTUKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTg5LjE1MS40MC4yMQowIDE0IDE0IDE4MDY2MyAxIDEyODA4NjE1MjQKLSAwIDAKMTc0LjEyOS45NC4xMTIKMCAzIDMgMzQ2MDIgMyAxMjgwOTU4OTIxCi0gMCAwCjE3NC4xMjcuMTMyLjEwCjAgMSAxIDExNTM0IDEgMTI4MDk0MDIwMwotIDAgMAoxMTQuMjQ1LjE4MS41OAowIDQgNCAyNzM4MiAxIDEyODExNTg4NDcKLyAwIDAKOTEuMjMuMjQxLjIKMCA1IDUgMjg1MTkgMSAxMjgxMDExMjMwCi8gMCAwCjgxLjE5MC4xMzUuMTc4CjAgNCA0IDI3MzY5IDEgMTI4MDkzMzUwNgotIDAgMAo4OC40Ny4xOTEuODIKMCA1IDQgMjczNjkgMSAxMjgxMDA0NzU2Ci0gMCAwCjY5LjM5LjIzNC41CjAgNDEgMzEgNDUwNjU2IDIgMTI4MTAwMzM4NwotIDAgMAoxNjQuODIuMTQ0LjMKMCAzNiAzNiAzMzc0MjkgMSAxMjgxMDM0NTc0Ci8gMCAwCjkyLjE5Ni45LjE5NAowIDYgNiA2MzEzNiAxIDEyODEwMzI5MjEKL21hbnVhbC5odG1sIDAgMAoxNzQuMTI5LjE1NS4xMTYKMCAyIDIgMTI2ODQgMSAxMjgwOTU4OTM2Ci0gMCAwCjEyOC4xMzEuMjAzLjIyMwowIDIxIDIxIDM5NDYzOCAxIDEyODEwMDYwOTIKLSAwIDAKNjcuMTgyLjIzMy4yMjUKMCAxNCAxNCAxODA3MzEgMSAxMjgxMjIxMDY1Ci9jb250cmliL3B5dGhvbi8gMCAwCjEyNC4xMTUuNi4xMAowIDQgMCAxMjc2IDAgMAotIDAgMAoyNC4xNC4zNS42NwowIDE2IDE0IDE2NTcyOCAxIDEyODA4NDYzNjQKLSAwIDAKMjEyLjEyNC4yMjUuNjYKMCAxOSAxOSAxOTAxOTYgMSAxMjgxMDk4ODI0Ci9qc3Rlc3QuaHRtbCAwIDAKMTgwLjE4MC42Ni4yMTMKMCA1IDQgMjczODIgMSAxMjgxMTg1ODU3Ci8gMCAwCjIwNy40Ni4xMy44NAowIDIgMSAxMTg1NyAyIDEyODEyNDQ2NjAKLSAwIDAKODQuMTA0LjMuMTM5CjAgMTYgMTYgMzY5NTk4IDEgMTI4MTAyMDk0NwovY29udHJpYi9jc2hhcnAvIDAgMAoyMDcuNDYuMTMuODUKMCAxIDEgMTY4NTggMCAwCi0gMCAwCjIxMy43Ni4xMzAuNDIKMCA1IDUgMjgyODcgMSAxMjgxMDIwOTA1Ci9MSUNFTlNFIDAgMAo3OC40MS4yMDQuMjIwCjAgNiAwIDE5ODIgMSAxMjgxMTIyNzU4Ci0gMCAwCjIwNy40Ni4xMy44NwowIDIgMSAxMDc5OSAxIDEyODA4ODE3NzUKLSAwIDAKMjA3LjQ2LjEzLjg4CjAgMSAxIDg1MzMgMCAwCi0gMCAwCjEyOC4yMzIuMTAuMTIxCjAgNzcgNzIgNjk2ODI3IDkgMTI4MTExMjg1OQovbWFudWFsLmh0bWwgMCAwCjIwNy40Ni4xMy44OQowIDEgMSAxNTAwIDEgMTI4MTAzNzY4NQovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKMjAyLjU0LjE3Ni4xNAowIDE0IDE0IDE2NTE0MyAxIDEyODEwMDEwNDMKLSAwIDAKMTczLjEyLjE4LjI0NQowIDI2IDI2IDI5NzQxNiAxIDEyODExMDYwNTQKL2NvbnRyaWIvcGhwLyAwIDAKMTk5LjI0Ni40MC41NAowIDI1IDI0IDIyNjAzMCAyIDEyODEwNDUzOTcKLyAwIDAKODcuMjguNTQuMzcKMCAyNSAyNCA0MjQ5NzYgMSAxMjgxMDA1MzI0Ci0gMCAwCjE5NS42OC4xMjYuOTQKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTI2NDg1Ci0gMCAwCjc4LjQ2LjIyLjE5OQowIDIgMSAxOTIyNDAgMCAwCi0gMCAwCjY5LjE0Ni4xODMuMzQKMCA1IDUgNjI1ODYgMSAxMjgxMTM0MzE4Ci9tYW51YWwuaHRtbCAwIDAKOTQuMjQyLjExMS4xMDYKMCAyMyAxMiAxMzQ5ODAgMSAxMjgxMDg1MTk0Ci9jc3N0ZXN0Lmh0bWwgMCAwCjg5LjEzMS4xNzcuNjYKMCAxNyAxNyAyMTQ4NDIgMSAxMjgxMDMwOTU2Ci9tYW51YWwuaHRtbCAwIDAKMjA3LjQ2LjEzLjkwCjAgMiAwIDMxOSAxIDEyODExOTE4NTUKL2ZhcS5odG1sIDAgMAoyMDcuNDYuMTMuOTEKMCAxIDEgOTE4IDEgMTI4MTIxNTE2NwovTElDRU5TRSAwIDAKODAuMTc0LjE1OC45NgowIDg5IDg1IDExMjY5NjcgNiAxMjgxMjM3NzgwCi9tYW51YWwuaHRtbCAwIDAKMTE3LjE5OS4yNDEuNjEKMCAyMCAyMCAxOTM1MjYgMSAxMjgxMTk5MDIxCi9taXhlZHRlc3QuaHRtbCAwIDAKODcuMTU5LjE4NC4yMTYKMCAxMCAxMCAxMjUxNzIgMiAxMjgxMTY4OTY3Ci9tYW51YWwuaHRtbCAwIDAKNzYuMjEyLjIyNi4xMjEKMCAyMCAyMCAxOTM0NTggMSAxMjgwOTAwOTM1Ci0gMCAwCjg4LjE2My4xOTcuMzYKMCAxOSAxOSAxODU2ODkgMSAxMjgxMTgwODU4Ci9jc3N0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4xMy45NQowIDEgMSAxNjcxIDEgMTI4MTA3MjU3NgovY29udHJpYi9waHAvTElDRU5TRSAwIDAKMTc0LjEyOS4xMTUuNDYKMCAxIDEgMTE1MzQgMSAxMjgwODQ2MzA5Ci0gMCAwCjIwNy40Ni4xMy45NgowIDIgMCA2NjAgMSAxMjgxMDYwMDk2Ci8gMCAwCjIwNy40Ni4xMy45NwowIDEgMCAwIDEgMTI4MTE2MTI1NQovc3BhcnFsdGVzdC5odG1sIDAgMAo5MS41Ni4xNjkuNDYKMCAyOCAyNyA0ODc5NzYgMSAxMjgxMDIyMzEwCi9jb21wcmVzcy5odG1sIDAgMAoyMDcuNDYuMTMuOTgKMCAyIDIgNDgyNCAyIDEyODEyMTU3OTYKL2NvbnRyaWIvcGxzcWwvIDAgMAo3OS44MS4yNS4yNDgKMCAyNyAyNiA0ODA0MDEgMSAxMjgwOTU4MTQ5Ci0gMCAwCjIwNy40Ni4xMy45OQowIDEgMSAyMzYzMiAwIDAKLSAwIDAKOTEuMzMuMTEwLjE0MAowIDE2IDE2IDM2OTU0MyAxIDEyODA5MDY1NjYKLSAwIDAKMTg5LjE0MC4xMDEuMjMzCjAgNyAzIDQ3MzE0IDEgMTI4MTEyMjU2NQovbWFudWFsLmh0bWwgMCAwCjkxLjE5NC4yMjUuMTcyCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg1MDMwNwotIDAgMAo2NS4xOTYuMTA4LjkzCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg2Mjg0OQotIDAgMAo2Ni42OS4xMDkuMTc4CjAgMjUgMjEgMjk2MzIxIDMgMTI4MDg5OTE2OQotIDAgMAo2OS4xNjIuMTU0LjEzCjAgNCA0IDI3MzgyIDEgMTI4MTE0MDExMgovIDAgMAo4MS4yMTcuMTE2LjExMAowIDMgMyAzNjYzMSAxIDEyODA4NjUyNjUKLSAwIDAKMTA5LjE4OC4xNzguMjA4CjAgNCA0IDI3MzY5IDEgMTI4MDkzNzkzMAotIDAgMAo2NS4yMDAuMTk5LjEwNgowIDEgMSAxMTUzNCAxIDEyODEwMDI5NzUKLSAwIDAKOTguMTQ0Ljk3LjQKMCA0IDQgMjczNjkgMSAxMjgwOTQ1NDkxCi0gMCAwCjY3LjIwNy4yMDEuMTM1CjAgMiAxIDExODUzIDEgMTI4MDk1ODk3NAotIDAgMAoxNDEuMjAuNjUuMTI3CjAgMTEgMTEgMTU0NDk5IDEgMTI4MTExODMyNgovY29udHJpYi9weXRob24vIDAgMAoxMTcuMTkyLjIxMy42OAowIDE2IDE2IDE3OTY1MSAxIDEyODExMTU5MzMKL2pzdGVzdC5odG1sIDAgMAoxNzQuMzEuOTkuMjM2CjAgMSAxIDExNTM0IDEgMTI4MDg3NTkwMgotIDAgMAoxMi4xNzEuMzkuMjEwCjAgMjEgMjAgMTkzODU0IDEgMTI4MDkzNTc5MwotIDAgMAo5OC4yMjkuMTAyLjk0CjAgMjUgMjUgMjg4MTUzIDEgMTI4MTIzMjg5NAovY29udHJpYi9waHAvIDAgMAo4Mi4yNTIuMTYwLjU5CjAgMjYgMjYgMjkwODM0IDEgMTI4MTEzNjU3MwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjIwMS4xNjAuMTIzLjE0OQowIDIzIDIzIDI4NDE1NiAxIDEyODEyMzU1MzAKL2NvbnRyaWIvcGhwLyAwIDAKMjEyLjIxLjI1MS4xMTAKMCAyMSAyMCAxOTM4NTQgMSAxMjgwOTUyMTQ2Ci0gMCAwCjk1LjMzLjExMi4yMzYKMCAyMiAyMiAyMDg3NDYgMSAxMjgxMDk2MjQ0Ci8gMCAwCjg0Ljk3LjIyNy4yMTIKMCA4MiAzNyA0OTQ2OTIgMSAxMjgxMTA3MjExCi9jb250cmliL2NzaGFycC8gMCAwCjIwMi44Mi44Ny4xNDYKMCAyIDIgMTUyNzIgMCAwCi0gMCAwCjkwLjIyOS4xNTAuMTQwCjAgMzEgMjcgMjg0MTEyIDIgMTI4MDk1MjgwNgotIDAgMAoxOTYuMjEzLjE5My42OQowIDcgNSA2NzQ5NCAxIDEyODA4NDU3MDkKLSAwIDAKMTI5Ljk0LjY0LjEwNQowIDE3IDE3IDE5MTI2MyAxIDEyODA5ODEwOTgKLSAwIDAKMjE3LjExOC45MS4xMAowIDE5IDE5IDE4NTYyMSAyIDEyODA4NjIxOTUKLSAwIDAKODcuMTU5LjE3My4yNDUKMCA2IDYgNjM3MjMgMSAxMjgxMDMyNjMyCi9tYW51YWwuaHRtbCAwIDAKNzUuMTAxLjE4MC45MwowIDIgMiAyODI0NCAwIDAKLSAwIDAKOTUuMTA4LjI0Ni4yNTIKMCAzMCAyNSAxOTU1MTggOSAxMjgxMTYyMzIzCi9zdG9yeS5odG1sIDAgMAoyMTcuOTIuMTcyLjE4NwowIDI0IDIwIDE5Mzg1NCAxIDEyODEwODM2ODgKL21peGVkdGVzdC5odG1sIDAgMAo2My4xNDQuNjQuMTE4CjAgNCA0IDI3MzY5IDEgMTI4MDkzNTI0MgotIDAgMAo3NS45NS4yMTkuMAowIDUgMSAzNTIwNCAxIDEyODA5NTIxMzUKLSAwIDAKODUuMjAwLjI0OC43MAowIDM2IDM1IDMzMTg2NCAxIDEyODEwOTcwMTkKL2Nzc3Rlc3QuaHRtbCAwIDAKMTkzLjkuMS4yMjUKMCAyNSAyNSAyODU4MDAgMSAxMjgwODQ5NzE2Ci0gMCAwCjg1LjE0NS4yMzkuNjMKMCA3IDcgMjYyNDEwIDEgMTI4MTAwNjc4MgotIDAgMAo5MC43LjQ0LjE3MAowIDQgNCAyNzM2OSAxIDEyODA4NzE3NjEKLSAwIDAKODAuMTMuMjI5Ljg4CjAgNCA0IDI3MzY5IDEgMTI4MTAxNDk2NwovIDAgMAoyMDguODAuMTk0LjI5CjAgMSAxIDExNTM0IDEgMTI4MDk5MjA5NwotIDAgMAo5MS4yMDQuNjAuMTM3CjAgNCA0IDI3MzgyIDEgMTI4MTE5NjY2NAovIDAgMAoyNC4yMjYuMTk5LjE4NwowIDQxIDQxIDUxNTgyMyAyIDEyODEwNDQ2MDMKL2NvbnRyaWIvcGhwLyAwIDAKMjA4LjUwLjEwMS4xNTUKMCAxIDEgMTkxOTIxIDAgMAotIDAgMAoyMTcuNjUuMTAwLjMzCjAgOCAwIDI2NDQgMCAwCi0gMCAwCjIwOC41MC4xMDEuMTU2CjAgMSAxIDE5MTkyMSAwIDAKLSAwIDAKOTAuMTUwLjEyMC4xODcKMCAyMiAyMSAyNTI0ODkgMSAxMjgxMDM4MTM4Ci9odG1sdGVzdC5odG1sIDAgMAo2Ni4yMTEuNC44MgowIDQgNCAyNzM2OSAxIDEyODEwNDg4NjAKLyAwIDAKNjYuMTk2LjExOS4yMAowIDEgMSAwIDEgMTI4MTE0ODk0NgovIDAgMAoyMDguODAuMTk0LjMwCjAgMSAxIDExNTQ3IDEgMTI4MTEyMDQyNgovIDAgMAo2Ni4xOTYuMTE5LjIxCjAgMSAxIDExNTQ3IDEgMTI4MTE0ODk0NgovIDAgMAo2MS4xNjguMjIyLjIyMgowIDE2NiAwIDU2NDE5IDEgMTI4MDk3Njk4MAotIDAgMAoyMDguODAuMTk0LjM5CjAgMSAxIDExNTM0IDEgMTI4MDg3Mjg5OAotIDAgMAoxNzQuNDYuMTQ0LjU3CjAgMTkgMTkgMjA1NzcxIDEgMTI4MTEyMjY4OAovY29udHJpYi9weXRob24vIDAgMAoxMDkuMTg4LjIuOAowIDEzMSAxMzEgMTQ3OTc5OSAxIDEyODEwOTQ4MjQKL2NvbnRyaWIvc3FsLyAwIDAKMTk5LjExNy4wLjcwCjAgMTQgMTQgMTY1MTQzIDEgMTI4MTA1MDMzMgovaHRtbHRlc3QuaHRtbCAwIDAKNjcuMTE0LjU1LjE4OQowIDEyIDEyIDE1NzEwNSAxIDEyODA4NzgzNDcKLSAwIDAKMjEzLjEzOC4yMTUuMjE1CjAgMTggMTggMTY3ODAyIDEgMTI4MDkwMjg3NgotIDAgMAo4Ni4xMTAuMjI4LjE3NwowIDE0IDE0IDE2NTE1NiAxIDEyODEwOTk1MzEKL2h0bWx0ZXN0Lmh0bWwgMCAwCjEzMC4xOTQuOTIuOTMKMCAxNCAxNCAxODA2NjMgMSAxMjgwODkxODI1Ci0gMCAwCjk4Ljc3LjE4NS4xODUKMCAxMCA5IDY2OTI3IDEgMTI4MTA2NjgyNgovbWFudWFsLmh0bWwgMCAwCjY3LjIwNy4yMDEuMTYzCjAgMiAxIDExODUzIDEgMTI4MDg0NDMwMwotIDAgMAoxNzMuMjYuMjI5LjE0MwowIDIxIDIwIDIyNzkwOCAxIDEyODEwMjM0NzEKL21hbnVhbC5odG1sIDAgMAo4My4xMDkuMTE0LjEzNQowIDI0IDIzIDE2MzQxMCA2IDEyODEyMzI2OTgKLyAwIDAKODQuMjA4LjEzMi4yMTgKMCA1IDUgNzIzOTggMiAxMjgxMjI5NTE2Ci9tYW51YWwuaHRtbCAwIDAKMTg4LjEzNC4zOC4yOAowIDE3IDE3IDE4NzU2NyAxIDEyODExNDcwNzcKL2NvbXByZXNzLmh0bWwgMCAwCjY1Ljc4LjMyLjE2CjAgMjYgMjYgMzEwMjA3IDEgMTI4MDg3NjQxOAotIDAgMAo4MS40OC43Mi43CjAgMTQgMTIgMTIxNjk0IDggMTI4MTEzOTUxMQovIDAgMAoxNzguNzMuNjMuMjAKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTc4MTc4Ci0gMCAwCjc3LjI4LjE4NS44OAowIDE3IDE2IDE3OTk5MiAxIDEyODExNjkxNjIKLyAwIDAKMTY5LjIzMy40Mi4yMDIKMCAxMSAxMSAxNTQ0OTkgMSAxMjgxMTEzNjk0Ci9jb250cmliL3B5dGhvbi8gMCAwCjg1LjE0My40MC45MAowIDIzIDIzIDM4OTQzMSAxIDEyODEwMDEyNTAKLSAwIDAKMTcwLjE0Ni4yMjUuNAowIDE5IDE5IDE5MDEyOCAxIDEyODA4Njg3MzAKLSAwIDAKNjUuNDYuNDguMTk0CjAgMSAxIDE0NzAgMSAxMjgxMTk5NDc0Ci9odG1sdGVzdC5odG1sIDAgMAoxNzQuMTI5LjY3LjI0OAowIDMgMiAzNDc1IDEgMTI4MTE5MTQ5NQovY29udHJpYi9wbHNxbC9MSUNFTlNFIDAgMAo5NC44Ny4yMDcuMTE0CjAgNDAgMzcgMzM2MDc2IDEgMTI4MDgzOTExMQotIDAgMAoyNC43Ni40OC45NQowIDQgNCAyNzM2OSAxIDEyODA5NjUwMDUKLSAwIDAKNzAuODAuMTY1LjI5CjAgNCA0IDI3MzY5IDEgMTI4MDg1NDc0OAotIDAgMAo2Ny4yNTMuMjI3LjE4MgowIDIwIDIwIDIwMzkyMiAxIDEyODEwODE5NDMKL2pzdGVzdC5odG1sIDAgMAoxNzQuNC44Ljk0CjAgNDcgMjcgNDQ5MTg5IDMgMTI4MTIyNDQ4NgovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjc0LjEyNS43NS4xNwowIDIgMiAxMjY4NCAxIDEyODA5MjUxODgKLSAwIDAKNzguODIuNDQuNDgKMCA0IDQgMjczNjkgMSAxMjgwOTYwODI4Ci0gMCAwCjY3Ljg4LjY2Ljk4CjAgMTYgMTYgMTc5NjUxIDEgMTI4MTExOTgzNQovanN0ZXN0Lmh0bWwgMCAwCjg4LjEwMC4yMTUuMjQ0CjAgNSA1IDI4NTMyIDEgMTI4MTIxNjA1NQovIDAgMAo3NS4xMjUuMTk4LjIxOAowIDEgMCAzMjUgMCAwCi0gMCAwCjE0Ny43MS4xNTUuMTAKMCAzIDMgMzY5MTcgMSAxMjgwOTUwNTE4Ci0gMCAwCjExNS4yNDguMTcuNjYKMCA5IDcgNTQyMjggMiAxMjgwODk2NjQyCi0gMCAwCjI0LjE1Mi4yMDcuOQowIDMgMyAyNjIxOSAxIDEyODA5NTc5ODUKLSAwIDAKMTY1LjEyNC4zMC4yCjAgMTUgMTUgMTc3NjkwIDEgMTI4MTEyOTA1NwovY29udHJpYi9jc2hhcnAvIDAgMAoxODkuMTAyLjE1Mi4xNTYKMCA2IDYgNDExMjExIDEgMTI4MTA2ODg2OAovIDAgMAoxMTYuOTAuMjM5LjE5OAowIDQgNCAyNzM2OSAxIDEyODEwMDg0MzkKLSAwIDAKOTMuMTM4Ljk5Ljk4CjAgMjUgMjUgMjg3OTg3IDEgMTI4MTE4MjIxNQovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjE3NC41Ni43Ni4yNQowIDUgNCAyNzcyMyAxIDEyODEyMzMxNzUKLyAwIDAKOTMuMTM2LjczLjc5CjAgNCA0IDI3MzY5IDEgMTI4MDkwNzYzMwotIDAgMAoyMDguODAuMTk0LjU5CjAgMSAxIDExNTM0IDEgMTI4MTAxMDcwMgovIDAgMAoxNjAuNzUuMTEyLjMzCjAgMTQgMTQgMTgwNzMxIDEgMTI4MTEyNzkxNQovY29udHJpYi9weXRob24vIDAgMAoyNC4xNi45OC44MQowIDggNSA2MjI4NyAyIDEyODEwMjI4MTEKLyAwIDAKNjYuMjQ5LjY2LjEwOAowIDI4IDIgMTU0NDggMTQgMTI4MTEzODQ4OQovIDAgMAo4MS4yMTguMi4xMTgKMCAxNiAxNiAxNzk2MzggMSAxMjgxMDAxNDE0Ci0gMCAwCjIxMi4xMzguNjkuMjQKMCAxIDEgMTQxMjIgMCAwCi0gMCAwCjkyLjI5LjQyLjk1CjAgMjMgMjMgMjg0MDg3IDEgMTI4MDg2NzEzNQotIDAgMAo4NS4xNC4yMDMuMjU0CjAgNSA1IDIxOTI5MCAxIDEyODEwMjIzMzcKLyAwIDAKMjA4LjgwLjE5NC42MAowIDEgMSAxMTUzNCAxIDEyODEwMTA3MDUKLyAwIDAKODcuMS4xMzIuMTgwCjAgMzIgMzEgNjUyMTkyIDIgMTI4MTExMDU5OQovY29udHJpYi9zcWwvIDAgMAo3NS40MS4xMTUuMTE5CjAgMTYgMTYgMTcxNzQwIDQgMTI4MTI0NjE0NAovc3RvcnkuaHRtbCAwIDAKMjA2LjIwNS4xMjEuMTUxCjAgNCA0IDI3MzY5IDEgMTI4MTA2NzYxMQovIDAgMAo4Ni4xNTYuMjM2LjE5MgowIDE0IDE0IDE2NTE0MyAxIDEyODEwMDg4MjcKLSAwIDAKODUuMy4zMS4xOTMKMCAyNSAyNSAyODgxNDAgMSAxMjgxMDQ2NDE1Ci9jb250cmliL3BocC8gMCAwCjg3LjExNy4xODcuMTYxCjAgMjYgMjYgNDgwMDc0IDEgMTI4MTEwMjUxNQovanN0ZXN0Lmh0bWwgMCAwCjE4Ny4xMTQuMTI5LjkzCjAgMjYgMjUgMjg4MzE1IDEgMTI4MTAzNDM5OQovIDAgMAoxODkuMjE2LjkuMzYKMCAyMCAyMCAyMDI3MTcgMSAxMjgxMDQ5MTM2Ci9qc3Rlc3QuaHRtbCAwIDAKNzEuNjUuODguOTMKMCAxNSAxNSAxMzAzMDkgMyAxMjgxMDgwMTc0Ci8gMCAwCjEwOS4xODguMy4yMTkKMCAxODMgMTgzIDIyOTU5NTIgMyAxMjgwOTM2MTQ5Ci0gMCAwCjE5My40Ny44MC4zNgowIDIgMSAxMTg2NiAxIDEyODEyMzkxODQKLyAwIDAKMTk1LjM3LjU4LjIzNAowIDIxIDIxIDIyMTcxNSAxIDEyODExMTIzMzgKL2NvbXByZXNzLmh0bWwgMCAwCjIxMi4xMzguMTEzLjE2CjAgMSAxIDExNTAgMCAwCi0gMCAwCjE3NC4xMjkuMTkuMjcKMCA0IDQgNDYxMzYgMiAxMjgwOTk0MzY5Ci0gMCAwCjg1LjkzLjExNi44MwowIDI1IDI0IDI0Nzg4MiAxIDEyODExMDU2MTMKL21hbnVhbC5odG1sIDAgMAoyMDguMjUyLjQ4LjE2MwowIDE0IDE0IDE2MDYzNiAxIDEyODA5NDI1NDYKLSAwIDAKMjEyLjEzOC40Ny4xMgowIDMgMyAyNjIzMiAxIDEyODExNzMxMTkKLyAwIDAKMjEyLjEzOC40Ny4xNgowIDEgMSA1NjMgMCAwCi0gMCAwCjkzLjExLjEwMS4yOQowIDQgNCAyNzM4MiAxIDEyODExMjc5MzMKLyAwIDAKMjAxLjE0OS4yNTUuMTMwCjAgMjYgMjMgNDkyNjQ3IDEgMTI4MTA0OTQ2NAovbWFudWFsLmh0bWwgMCAwCjg4LjczLjEyMi42NAowIDQgMiA0MTI3NSAxIDEyODA4Mzk1NTkKLSAwIDAKOTAuMjE1LjE3OC4xOTkKMCAyNCAyMyAyODQ0OTcgMSAxMjgxMTQ4OTc3Ci8gMCAwCjYyLjE5OC4xMDUuMTU1CjAgMjQgMjQgNDc2MDYzIDEgMTI4MDk0NDU4OAotIDAgMAo5NC4yLjE5OC4yNDkKMCAxNCAxNCAxNjQzMjYgMSAxMjgxMTQxMzE3Ci9jb250cmliL3NxbC8gMCAwCjE4NC43My45Mi4yOQowIDQgNCAwIDQgMTI4MDk2MDQyMgotIDAgMAoxMTcuMTk5LjI0NS4yMAowIDQgNCAyNzM2OSAxIDEyODA5NTEyNjAKLSAwIDAKMjA1LjIwNy4xMDQuMjI0CjAgMTkgMTggMjU0NTM2IDIgMTI4MDg2NDY0NAotIDAgMAo5Mi4xOTYuMjAwLjg5CjAgMiAwIDAgMCAwCi0gMCAwCjg4LjE1OS45LjE3OAowIDUgMyAyNjUxNiAxIDEyODA4Mzc2NzQKLSAwIDAKNzUuMTEwLjE1LjIwMAowIDQgNCAyNzM2OSAxIDEyODA5ODE1MDkKLSAwIDAKOTkuNDAuNi4yNDcKMCA2IDYgNTk3MzIgMSAxMjgxMTEyODU2Ci9tYW51YWwuaHRtbCAwIDAKODQuMTcuMTEuMTE0CjAgNCA0IDI3MzY5IDEgMTI4MDk2MDAzMwotIDAgMAoxODQuNzMuMzUuMjMKMCAzIDMgMzQ2MDIgMSAxMjgwOTYwNDI0Ci0gMCAwCjc1LjEwMS4xOTUuMTk1CjAgMiAxIDExNTM0IDIgMTI4MDk5MTYwNgotIDAgMAo5NC4zNy4yMjUuMjIzCjAgMTIgMTIgOTQ5NTkgMSAxMjgxMjAzMDQ3Ci9oaWdobGlnaHQuaHRtbCAwIDAKNjguMjI1LjE3MS43NAowIDQgNCAyNzM4MiAxIDEyODExOTYwNTAKLyAwIDAKMjEyLjE1Ni41OS4xMTgKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTc1NTczCi9qc3Rlc3QuaHRtbCAwIDAKMTkzLjM5Ljc1LjUwCjAgMjEgMjEgNTg4OTAxIDIgMTI4MTA5MTU4MQovIDAgMAo4OS4xNDYuNTAuMTU1CjAgMTQgMTEgMTM5MjQyIDEgMTI4MDg0NjEyNwotIDAgMAo2Ni4yNDkuNjYuMTMxCjAgNDggMjIgMTI0Nzc5IDIxIDEyODA5NjU2ODgKLSAwIDAKMTIyLjIxNi4xMTQuMjE0CjAgNDcgNDAgNTYzOTM5IDIgMTI4MTAwMzc5NQotIDAgMAoxMjQuMTE1LjEuOAowIDYgMyAzNTU5MCAzIDEyODEyMjU4NjMKLyAwIDAKODkuMTcyLjI1MS4yMTcKMCAyMyAyMyAyODQxNDIgMSAxMjgwOTc5MDg0Ci0gMCAwCjIwNy40Ni4yMDQuMjI5CjAgMSAwIDMxMCAxIDEyODExMzE2NzYKLSAwIDAKODIuMTk5LjEwOS4xNDQKMCA3IDUgMzQ3NTIgMSAxMjgwODQwMTc4Ci0gMCAwCjkyLjE5Ni4xMDQuMjIKMCAzNiAzMyAzOTIyMjcgMSAxMjgwOTE5NDc4Ci0gMCAwCjIwOC44Mi44Ni44NwowIDQgNCAyNzM2OSAxIDEyODA5NjkwODkKLSAwIDAKMjA1LjIwMy4xMDQuMTE5CjAgNCA0IDI3MzY5IDEgMTI4MDk0MTAzMAotIDAgMAoyMDMuMjUxLjE2MS4xMzAKMCAxNCAxNCAxNjA2MzYgMSAxMjgwOTc5NDM5Ci0gMCAwCjg1LjE1OS4yMjcuMjI1CjAgMjQgMjQgMjI4ODI3IDEgMTI4MTA4ODIwOAovY29udHJpYi9jc2hhcnAvIDAgMAoyMjAuMjQ5LjQxLjEzMwowIDUgNSA2MjI4NyAxIDEyODA5MDYyNDMKLSAwIDAKMjAzLjE1My4yMjIuMTMKMCA0IDQgMjczODIgMSAxMjgxMjQyNzk1Ci8gMCAwCjgwLjE0MS41Ni4yNTEKMCA0IDQgMjczNjkgMSAxMjgxMDI4NDM2Ci8gMCAwCjgyLjkyLjEzMS43CjAgNCAzIDI2NTE2IDEgMTI4MDgzODI1MgotIDAgMAo3OS4xMTIuMTE1LjIyOQowIDI3IDI1IDMwMzQ4MCAxIDEyODEwMjUxODkKL2h0bWx0ZXN0Lmh0bWwgMCAwCjg1LjI0LjE0Mi4yMTEKMCAxOCAxOCAxNjc4MDIgMSAxMjgwODc3MjU3Ci0gMCAwCjIwNy40Ni4yMDQuMjMwCjAgMiAwIDMxOSAxIDEyODEwODE2MzUKL2ZhcS5odG1sIDAgMAoyMDcuNDYuMjA0LjIzMQowIDMgMSAxNzM3IDIgMTI4MTE4MDgxNQovbWFudWFsLmh0bWwgMCAwCjE3My4xNjAuNzYuMTg1CjAgMjA5IDE3NiAyMDMyNDE4IDkgMTI4MTEzNDY5NAovbWFudWFsLmh0bWwgMCAwCjE4OS4yMzcuMTE1LjIyMQowIDE0IDE0IDE2NTE0MyAyIDEyODA5ODkwNDcKLSAwIDAKMjA3LjQ2LjIwNC4yMzcKMCAyIDAgNjYwIDEgMTI4MTE2OTgwNQovIDAgMAoyMDcuNDYuMjA0LjIzOAowIDIgMSAxMTU0NyAyIDEyODExNTIyMjgKL2NvbnRyaWIvZ3Jvb3Z5LyAwIDAKMjA3LjQ2LjIwNC4yMzkKMCAxIDEgOTE4IDEgMTI4MTEwMTk0OQovTElDRU5TRSAwIDAKODkuMjA2LjMyLjIxCjAgNCA0IDI3MzY5IDEgMTI4MDk0MzYxMAotIDAgMAoxMTAuMTUuNy4yNDIKMCAyMCAyMCAxOTM1MTMgMSAxMjgxMDcyMDU5Ci9taXhlZHRlc3QuaHRtbCAwIDAKMjQuMjAwLjE4NC4yNDkKMCAyNyAyNyAzNzY5MDYgMSAxMjgwOTA2MjQ1Ci0gMCAwCjE5MC44Mi44NC4yMDIKMCAzNSAzMiA1NDI4MTQgMyAxMjgxMDYyMTg2Ci9taXhlZHRlc3QuaHRtbCAwIDAKNzIuMTkxLjE5MS4xNjIKMCA0IDQgMjczNjkgMSAxMjgwOTgwMDAwCi0gMCAwCjEzNi4yMDYuMS4xNwowIDIgMiAxMjY5NyAxIDEyODExNjMyODkKLyAwIDAKMjEyLjE5OC4yNTEuNTAKMCA2IDYgMjk2NjkgMSAxMjgxMDgzMjkyCi8gMCAwCjcxLjIzNS4zNS4xNjcKMCAxNyAxNyAxNzExMjYgMSAxMjgwODk0ODM3Ci0gMCAwCjEyMy4yMDMuMTkuMTkxCjAgMTggMTggMTY3ODU3IDEgMTI4MTEzMjMzNwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjY0LjEzLjE0Ny4xODcKMCA2IDMgMzU1NTkgMiAxMjgwODQ0MTYxCi0gMCAwCjEyMi4xNDQuMTExLjEwMgowIDE2IDE2IDE3OTY1MSAxIDEyODEwOTEwODYKL2pzdGVzdC5odG1sIDAgMAoyMDcuNDYuMjA0LjI0MAowIDEgMSA4NTMzIDAgMAotIDAgMAo4Ny4xOTQuMTg1LjI0MgowIDE2IDE2IDE3OTY1MSAxIDEyODExMTMwODQKL2pzdGVzdC5odG1sIDAgMAoyMTMuNjMuMTM2LjEzMgowIDMgMyAzNjkxNyAxIDEyODEwMjIyNzAKL21hbnVhbC5odG1sIDAgMAo3Mi4yMDkuMjAzLjQ0CjAgMSAxIDExNTAgMCAwCi0gMCAwCjIwNy40Ni4yMDQuMjQyCjAgMiAxIDEzNzUgMSAxMjgwOTM5NzQ0Ci0gMCAwCjIwNy43MC40MS4yMzYKMCAxIDEgMTE1NDcgMSAxMjgxMTMzNzQ0Ci8gMCAwCjk1LjEwMy42Mi4yMwowIDMgMyAzNjkxNyAxIDEyODExMjk5NjQKL21hbnVhbC5odG1sIDAgMAo3NS4xNzMuMTA4LjQ2CjAgNCA0IDI3MzgyIDEgMTI4MTE2MDQ2MQovIDAgMAoyMDAuMTkyLjg4LjYKMCAyMyAyMyAyODQxNTYgMSAxMjgxMTE5NDU0Ci9jb250cmliL3BocC8gMCAwCjY5LjE2OS4xNDAuMjYKMCA0IDQgMjczNjkgMSAxMjgwODc4NzAxCi0gMCAwCjE3NC4xMjkuNzAuMTgxCjAgMSAxIDAgMSAxMjgwODM3MTgyCi0gMCAwCjY3LjIwMi40MS4xMTUKMCA0IDQgMCA0IDEyODA5NjA0MjUKLSAwIDAKOTQuMjUwLjkyLjE3NgowIDI2IDI1IDUxMTI4MSAyIDEyODExMTI4NTQKL21hbnVhbC5odG1sIDAgMAo4My4xNDkuOS4yMTIKMCAxIDEgMTE1MCAwIDAKLSAwIDAKMTg0LjczLjUwLjEyOAowIDIgMiAyMzA2OCAxIDEyODA4MzcxNTQKLSAwIDAKODguMTQ3LjE5LjEzNgowIDQ4IDQ3IDU2OTcxMyAzIDEyODExOTcxOTUKL2NvbnRyaWIvcGhwLyAwIDAKMjAwLjEyNS42NS4xODcKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTA0NzcxCi9qc3Rlc3QuaHRtbCAwIDAKODkuMjIzLjEwNS4xMzkKMCAyMiAyMiAyMDk2NjkgMSAxMjgxMTA0MDU4Ci9taXhlZHRlc3QuaHRtbCAwIDAKMTIuMjA0LjE2OC44CjAgMTggMTggMTgxMzY0IDEgMTI4MTEyNTEzNwovanN0ZXN0Lmh0bWwgMCAwCjIwOS4yNi4zOC4xNTgKMCAzOSAyNiA0ODAwNjEgMiAxMjgxMDI1MzIwCi9jb250cmliL3BocC8gMCAwCjgwLjE1My4xNjkuMTU4CjAgNTQgNTAgNjA2MzM0IDQgMTI4MTAxMjgzNgovY29udHJpYi9waHAvIDAgMAoxODQuNzMuMy4yMjEKMCAzIDMgMzQ2MDIgMSAxMjgwODQzOTg0Ci0gMCAwCjc5LjE2Ni4xMDAuMTcyCjAgNSA1IDI4NTE5IDEgMTI4MDg2OTQxMAotIDAgMAo5NC4xNTkuMTg3LjE2NQowIDEgMSA0MDAzNSAxIDEyODA4ODQ3NDcKLSAwIDAKNzUuNzIuOTguMTA3CjAgMjkgMjggNDg0MjQ2IDEgMTI4MTEzODg3OAovanN0ZXN0Lmh0bWwgMCAwCjE5NC4xODUuMTgxLjEwMgowIDE2IDEzIDE4MDM2OSAxIDEyODA4NDMyNTYKLSAwIDAKNjMuMjI3LjE3OS4yNTMKMCAxMSAxMCAxMjUxNzIgMiAxMjgxMTQ2Nzc0Ci9tYW51YWwuaHRtbCAwIDAKMjE2Ljk0LjQzLjUwCjAgMTggMTggMTY3ODU3IDEgMTI4MDk0ODIwMgotIDAgMAoxNzQuNTIuMjQ3LjM4CjAgMyAzIDM2OTE3IDEgMTI4MTA0MzIzMwovbWFudWFsLmh0bWwgMCAwCjY3LjE2Mi4xNjUuMzgKMCAyNCAyIDM4MzEgMSAxMjgxMDU5MjQ0Ci9taXhlZHRlc3QuaHRtbCAwIDAKMTY4LjI4LjI1NC4xOAowIDIzIDcgMTczODA3IDEgMTI4MDkzMDk0MAotIDAgMAoyMTYuMTA0LjE1LjEzMAowIDEwIDEwIDE0OTg4MyAyIDEyODEyMTk0OTIKLyAwIDAKOTQuMjA5LjEwNi4xMTEKMCAzMyAzMyA1NjM1NjEgMSAxMjgxMDA3MjAwCi0gMCAwCjg5LjEzNy4yMDAuMTM4CjAgNCA0IDI3MzY5IDEgMTI4MTAwOTUwOQotIDAgMAoxODguMTEyLjEwMC4xODQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTg1MTE4Ci9qc3Rlc3QuaHRtbCAwIDAKMjAyLjUwLjI1Mi4yMzAKMCA1IDUgMzUyOTggMSAxMjgxMTUzNjE0Ci9jb21wcmVzcy5odG1sIDAgMAoxMjMuMTEzLjEyNi4yOQowIDIyIDIyIDIxMzA2MCAyIDEyODEwMTg1NjQKL2h0bWx0ZXN0Lmh0bWwgMCAwCjg1LjE2NS43OC4xMTYKMCAxNCAxNCAxNjQzNzEgMSAxMjgxMDEyNzEwCi9jb250cmliL2x1YS8gMCAwCjIxNi4xMDQuMTUuMTM0CjAgNyA3IDE1MzgyNSAxIDEyODA5MTU4NjAKLSAwIDAKMTkzLjIxOS4xNjAuMTM1CjAgMjMgMjMgNTc5NTE3IDEgMTI4MDkwODkzMwotIDAgMAo0MS4xMzIuNDYuMjM4CjAgMjMgMjMgMjg0MTU2IDEgMTI4MTA5OTc4OQovY29udHJpYi9waHAvIDAgMAo5NS4zOS4xMi4xNgowIDMgMCA5OTUgMSAxMjgxMTE2NDc3Ci0gMCAwCjIxNi4xMDQuMTUuMTM4CjAgNSA1IDU5NDgxIDAgMAotIDAgMAoyMTMuMTQzLjY5LjEyMAowIDggNSAzNTI4NSAxIDEyODEwMjgxMzgKLyAwIDAKODMuNjcuMjMuMTY2CjAgOSA5IDY2NTk5IDEgMTI4MTIyNDQxMwovIDAgMAoyMTYuNzQuMzQuMTMzCjAgMSAxIDExNTQ3IDEgMTI4MTA4NDEwNgovIDAgMAoxNzQuMTI5Ljc4LjI5CjAgMiAxIDExODUzIDEgMTI4MDg1NzQ1NQotIDAgMAo4OC4xOTEuODQuNDcKMCAyIDIgMCAxIDEyODExMDQ0MDAKL21hbnVhbC5odG1sIDAgMAo4NC4xMi4xMy40CjAgNSA1IDM1Mjg1IDEgMTI4MTAzOTg1OQovY29tcHJlc3MuaHRtbCAwIDAKNjYuMjQ5LjY2LjE3MgowIDM5IDMwIDIzMzIzMyA1IDEyODA4NjczMzcKLSAwIDAKMTUyLjIyNi43LjIwMQowIDQgNCAyNzM4MiAxIDEyODExNTI2MDIKLyAwIDAKODEuMzkuMTU5LjE0MwowIDQgNCAyNzM2OSAxIDEyODA5MjE4MTUKLSAwIDAKMjA3LjE3MC4yMzguMTM2CjAgODEgNzkgMTA1ODk5MiA4IDEyODEyNDYwMjcKL21hbnVhbC5odG1sIDAgMAo2NC4yNTEuNzIuMTgyCjAgMjcgMTYgMTczOTc3IDEgMTI4MTAzMTQ3MwovY29tcHJlc3MuaHRtbCAwIDAKNjIuMTEwLjE0My42CjAgMTYgMTYgMTc5NTgzIDEgMTI4MDkwOTE4MAotIDAgMAo3Ny4xODUuNTIuMjQzCjAgMTYgMTYgMTE3OTQ2IDMgMTI4MTIyMDI1OQovbWFudWFsLmh0bWwgMCAwCjgxLjE5NS4xNTEuOTAKMCA2NiAzNiA1Njk0NjEgMiAxMjgwOTEzMjA3Ci0gMCAwCjgyLjIwOC4yNS4yNDMKMCAyMSAyMSAyNTg0ODYgMSAxMjgxMDA3MTkxCi0gMCAwCjExOC4xMjUuMjQzLjY4CjAgMSAxIDExNTQ3IDEgMTI4MTEzMjg1NQovIDAgMAoxMjEuMTAyLjE0NC42MAowIDUgNSAyODI4NyAxIDEyODA5NDIwMzgKLSAwIDAKNjQuNzQuOTguMTQKMCAxOCAxOCAyMTUzNzYgMyAxMjgwOTU4ODkwCi0gMCAwCjEzNi4yMDYuMS40OQowIDIgMiAxNDY4NSAwIDAKLSAwIDAKODcuMTk1LjIyOS4xMDgKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMDg1MDMwCi9qc3Rlc3QuaHRtbCAwIDAKMjE2LjEwNC4xNS4xNDIKMCAzIDMgNzYzODQgMCAwCi0gMCAwCjIyMC4xODEuNy4zMwowIDEgMSAxNDE4IDEgMTI4MTIwNjI2NQovY29udHJpYi9sdWEvIDAgMAo2MC41My4yMjguMTcyCjAgNTMgNDkgNTg5MzY5IDEgMTI4MDg0MzcwMAotIDAgMAoyMjAuMTgxLjcuMzUKMCAxIDEgNDAwMzUgMSAxMjgxMjM5OTEzCi9zdG9yeS5odG1sIDAgMAo4Ni42Ny4xMDMuMTQ2CjAgMTYgMTYgMTc5NjUxIDEgMTI4MTIxMzAwOQovanN0ZXN0Lmh0bWwgMCAwCjg2LjIyLjEzMC4xNAowIDE2IDE2IDE3OTYzOCAxIDEyODEwMTI3MzIKL2pzdGVzdC5odG1sIDAgMAo2Ni4yNDkuNjYuMTgxCjAgNjEgMzUgMjI2MDY1IDE4IDEyODEwNjk5MTQKL2NvbnRyaWIvb21ldGEvIDAgMAo5MC4xNzcuMTkuMTE0CjAgNiA1IDIxOTMwMyAyIDEyODExOTM3OTAKLyAwIDAKMTI0LjE1NS41NS4yMjgKMCAyNSAxNCAxNjA2NDkgMSAxMjgxMTMzMjI1Ci9jc3N0ZXN0Lmh0bWwgMCAwCjgwLjIwMy4yMjQuMTQ2CjAgMTkgMTkgMTkwMTk2IDEgMTI4MTA5Njg3NQovaHRtbHRlc3QuaHRtbCAwIDAKNjguMTUxLjIuNTcKMCAxIDEgMTE1MCAwIDAKLSAwIDAKNzUuODUuNjcuMjI3CjAgNCA0IDI3MzY5IDEgMTI4MDk4OTkxMQotIDAgMAoyNC4yOS4yNTAuMTgwCjAgMzggMzcgMzg1MDYyIDIgMTI4MTAzNTM2MgovaHRtbHRlc3QuaHRtbCAwIDAKNzAuNTUuMjkuNTUKMCA1IDUgNjI1ODYgMSAxMjgxMTc3OTQ0Ci8gMCAwCjcyLjMwLjE2MS4yNDIKMCAzOCA4IDgwMzU3IDE0IDEyODEyMTA5MDUKL3NwYXJxbHRlc3QuaHRtbCAwIDAKODQuMTQ4LjguMjQ1CjAgODMgODAgOTU5MTI4IDMgMTI4MTExNDQ2NgovY3NzdGVzdC5odG1sIDAgMAoyNC4yMTQuMjM3LjE4NgowIDQgNCAyNzM2OSAxIDEyODEwNDQzOTcKLyAwIDAKMjEzLjE0NS45OC4yNTAKMCA0IDQgMjczNjkgMSAxMjgwOTk4MTU4Ci0gMCAwCjY5LjM3LjEwMy4xNzUKMCAyNyAyNSAwIDIgMTI4MDk4MTQzMgotIDAgMAoyMDMuMTMwLjEzNC4xMzIKMCA0IDQgMjczODIgMSAxMjgxMjE4MDUwCi8gMCAwCjIyMC4xODEuNy40NwowIDEgMSAzNTIwNCAxIDEyODEyMjU1NDkKL21hbnVhbC5odG1sIDAgMAoyMTIuOTIuMjQyLjIyNwowIDIzIDIyIDE5NTU4MCAxIDEyODExMTY5MjAKLyAwIDAKODYuMjAuMzguMTYxCjAgNCA0IDI3MzgyIDEgMTI4MTIyMjMzMAovIDAgMAoxNzMuMTcxLjIwMS4xODAKMCAxNyAxNyAxNzExODEgMSAxMjgwOTg2NDI1Ci0gMCAwCjIxNi4yMzkuNDUuMTMwCjAgMyAzIDM2OTE3IDEgMTI4MTA2Mjg3NAovbWFudWFsLmh0bWwgMCAwCjE4Mi4xNi4xNTYuMwowIDMgMyAyNjIzMiAxIDEyODExMjMxODEKLyAwIDAKMjAzLjExMy4xOTIuMTgyCjAgNyA1IDM4OTE2IDIgMTI4MTE3OTcyMAovIDAgMAo4MC4xMy42MC4yMTAKMCA0IDQgMjczNjkgMSAxMjgxMDEyODMwCi8gMCAwCjgxLjE2Ni43Ny4xNTMKMCAyMyAxOCA0NjQxNzMgMTIgMTI4MTIyMDc2MQovIDAgMAoxOTQuMTc2LjEwNS40MQowIDE5IDE3IDE4MDk3OCAzIDEyODA5NzE5NDAKLSAwIDAKMjIwLjE4MS43LjUzCjAgMSAxIDExNTQ3IDEgMTI4MTIzMjIzOQovIDAgMAoyMDkuNTEuMTg0LjgKMCAxMCA3IDEwNjk4NSAwIDAKLSAwIDAKMTE1LjE0NS4yNDAuMjUKMCAzMyAzMSA1OTQyMTggMSAxMjgxMDk3MTQ1Ci9mYXEuaHRtbCAwIDAKMjE5Ljg3LjY3LjI5CjAgMTYgMTYgMTc5NTgzIDEgMTI4MDkxNDQ4MgotIDAgMAoyMDkuNTEuMTg0LjkKMCAyNyAxNyAxOTExNzIgMSAxMjgwOTUzMjg0Ci0gMCAwCjcxLjE2My4xNzUuMTQwCjAgNCA0IDI3MzY5IDEgMTI4MDk3NjgyMgotIDAgMAo5Mi4xOTYuMTAwLjEyMQowIDIzIDIzIDI3MTM4MyAzIDEyODExNzEyMTcKL21hbnVhbC5odG1sIDAgMAoxODkuMjUzLjIzLjIxMgowIDQgNCAyNzM2OSAxIDEyODA4NjQ4ODkKLSAwIDAKODkuMTY4LjguMzYKMCA1IDMgMjY4NTkgMSAxMjgwODQzMjc5Ci0gMCAwCjc4LjEzNy40LjE2CjAgNSA1IDIxOTI5MCAxIDEyODA5MTc3OTQKLSAwIDAKNjIuMTU0LjIyMi4yMzcKMCAxNCAxNCAxNjUxNDMgMSAxMjgwOTk5NjcwCi0gMCAwCjYzLjEzOS44Ni4zCjAgNCA0IDI3MzY5IDEgMTI4MDg4NTU0OAotIDAgMAoxOTYuMjIuMTQ0LjEzOAowIDEgMSAyMDgxOSAwIDAKLSAwIDAKMTkwLjI0MS43My4xMgowIDIwIDIwIDE5MzUyNiAxIDEyODEyMDA3MTAKLyAwIDAKODIuMjguMTY5LjM0CjAgMjAgMjAgMjMwMjMxIDEgMTI4MTIwNDMyNwovaHRtbHRlc3QuaHRtbCAwIDAKMTE0LjMyLjIzMS43NAowIDIxIDIwIDIwMTMzMiAxIDEyODExNzk4NzAKL2NvbnRyaWIvc3FsLyAwIDAKNTguNjEuMTY0LjEzOQowIDIgMSAxMTg1OSAxIDEyODA4NjMzMTcKLSAwIDAKODIuMjM1LjU0LjIxMQowIDIzIDIzIDI4NDA4NyAxIDEyODA4NzY0ODMKLSAwIDAKNjguMzQuMjA2LjUwCjAgMzkgMzggNTc5NTYwIDIgMTI4MTIzOTY1MwovbWFudWFsLmh0bWwgMCAwCjg1LjI3Ljc0LjgzCjAgNSA1IDYyNTczIDEgMTI4MTA4MDk0OQovbWFudWFsLmh0bWwgMCAwCjU5LjEzOS4zMC40OQowIDUgNCA5NTQyMCAxIDEyODEwNjczOTcKL21hbnVhbC5odG1sIDAgMAo2OC42NS4xNjkuMTM1CjAgMTYgMTYgMTc5NjM4IDEgMTI4MTA2MzIzMwovanN0ZXN0Lmh0bWwgMCAwCjExNS4xODQuNTguMjcKMCAxNiAxNiAxNzk1ODMgMSAxMjgwOTA1MjUwCi0gMCAwCjc0LjExMi4zNy4xMTQKMCA4NyA1OSA2MTExNjggNCAxMjgxMTA5NDIyCi9tYW51YWwuaHRtbCAwIDAKMTMwLjIyNi4xNDIuMjQzCjAgNCA0IDM3NzMwIDEgMTI4MDgzODAzNwotIDAgMAoxMTcuMTk1LjEzMS4yMjIKMCA0IDQgMjczODIgMSAxMjgxMTI2MzU5Ci8gMCAwCjg2LjE1LjIwLjI0MwowIDgyIDU3IDYyNDY2NyA4IDEyODEwODg2MjQKLyAwIDAKOTMuNzIuMTI1LjIzOAowIDE2IDE2IDE3OTYzOCAxIDEyODA5NTI3MzgKLSAwIDAKMTc0LjEyNy4xMzIuMTE2CjAgNCA0IDU5NzMgMSAxMjgwOTQyNTU2Ci0gMCAwCjE3NC4xMjcuMTMyLjExNwowIDIwIDE1IDEwNjA2MiAyIDEyODA5NDQ2MzIKLSAwIDAKMTc0LjEyNy4xMzIuMTE4CjAgMSAxIDExNTM0IDEgMTI4MDk0MTc0NAotIDAgMAo3MC4xMTcuMjQ3LjMxCjAgMTEgMTEgMTU0NDk5IDEgMTI4MDk1NDM0MAotIDAgMAo4OC4xNy4xMzcuMjE3CjAgNCA0IDI3MzgyIDEgMTI4MTEwNzIwNQovIDAgMAo1OC42MS4xNjQuMTQxCjAgNiAzIDM1NjAzIDMgMTI4MTE0NjQ2MwovIDAgMAo2NS4xMjEuMTU1LjIyMgowIDIzIDIzIDI4NDE1NiAxIDEyODExMjMxMDYKL2NvbnRyaWIvcGhwLyAwIDAKOTMuMjMzLjc0LjE1MAowIDQwIDM4IDM4NTQ0NiAxIDEyODA4NTI2NDEKLSAwIDAKODUuMTc4LjIxMy4xMzUKMCA0IDEgNTg1MDMgMSAxMjgwOTI0NDU5Ci0gMCAwCjc4LjEwNS44Ny4xMDYKMCAyNCAyNCAyOTIwNTggMSAxMjgxMDE2MTM1Ci9jb21wcmVzcy5odG1sIDAgMAo3MS4xMzUuMTY4LjExOAowIDI2IDI2IDM5Nzg1NyAxIDEyODEwNDExMzAKL2NvbnRyaWIvc3FsLyAwIDAKODkuMjMzLjE1My4yMTgKMCAyOCAyNyAyMzQxMTUgMiAxMjgxMjIyNzkwCi9zdG9yeS5odG1sIDAgMAo3Mi40NC41OS4zNQowIDEwIDggMzQxNTkgMSAxMjgwOTgxMjIzCi0gMCAwCjc4LjMzLjIxNC4xNjIKMCAxNCAxNCAxNjQzNzEgMSAxMjgwOTMyNjEwCi0gMCAwCjgxLjI0Ni45Ni4yMjYKMCA0IDQgMjczNjkgMSAxMjgwOTI2OTY4Ci0gMCAwCjk4LjIwMi4yNy4yNDYKMCAzNSAxNSAzMTc4NzcgMyAxMjgxMjAzNDI5Ci8gMCAwCjEyOC4xNDYuNDMuMTY3CjAgMjMgMjIgNDYzNTU2IDEgMTI4MDg2MzI3NgotIDAgMAo3MC45OC43My40MgowIDUgNSAyMTkzMDMgMSAxMjgxMjMwMjQ0Ci8gMCAwCjIwMS4xNTQuMTMyLjEyCjAgMTUgMTUgMTk1ODQwIDEgMTI4MDk3OTYzMQotIDAgMAoxNzQuMTI3LjEzMi4xMjAKMCAyNSAyMCAzMTEyODMgMSAxMjgwOTQ1MDgwCi0gMCAwCjQxLjE0LjIyMy4yMjQKMCAyMyAyMyAxMzE1MjYgMSAxMjgwOTA3NTg3Ci0gMCAwCjIwOS4xOS4xNzUuMTEzCjAgMSAxIDExNTM0IDEgMTI4MDk2MjYzMAotIDAgMAoxODkuMTc3LjIwNC4xMTQKMCA3IDQgMjczNjkgMSAxMjgwODc1MzI2Ci0gMCAwCjY5LjE1OC41NS4xNDAKMCAyMCA0IDM5NzUxIDEgMTI4MDkzNDc5NwotIDAgMAoyMDkuMTkuMTc1LjExNwowIDEgMSAxMTUzNCAxIDEyODEwNTk5OTkKLyAwIDAKMjE2LjI3LjE3OC4xMTUKMCA2IDYgNzAyMDMgMSAxMjgwODcwMTgwCi0gMCAwCjE4NC43My4xMTcuMTUzCjAgNyA2IDQ1ODgzIDEgMTI4MDg4NzY2NAotIDAgMAo4MC4yNDIuMTA0LjEwNQowIDE0IDE0IDE2NTE0MyAxIDEyODA5NjUxMDkKLSAwIDAKMTk1LjgwLjExMy44MgowIDQgNCAyNzM2OSAxIDEyODA5MjM0MDAKLSAwIDAKNzcuMzcuMTgzLjE1MgowIDQgNCAyNzM2OSAxIDEyODEwMjI3ODMKLyAwIDAKNzYuMTI2LjE0Mi4xMTgKMCAyMCAyMCAxOTM1MjYgMSAxMjgxMTk0NTI2Ci9taXhlZHRlc3QuaHRtbCAwIDAKNjkuMTMwLjcuMTE0CjAgMTUgMTUgMzU3MDc3IDEgMTI4MTEzMjIzNwovaHRtbHRlc3QuaHRtbCAwIDAKNzQuMjAxLjExNy4yMjYKMCAxIDEgMTE1MzQgMSAxMjgwOTE3Mzk1Ci0gMCAwCjg2LjkwLjMuNgowIDI2IDI2IDQ3ODYwNSAxIDEyODA5NDY3MTgKLSAwIDAKODguMTYyLjM2LjE3OAowIDIgMSAxMTg1MyAxIDEyODA4Mzc1NjIKLSAwIDAKMTE5LjYzLjE5OC4xMDAKMCAxIDEgMzUzNCAxIDEyODEyMjQ3ODEKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTE5LjYzLjE5OC4xMDIKMCAxIDAgMCAxIDEyODEyMTc1NTkKLyAwIDAKMTMxLjIxMS44MC4xMjUKMCAxNiAxNiAxNzY0NjMgMSAxMjgxMDExMDg4Ci9jb250cmliL3NjaGVtZS8gMCAwCjIxMy4yMzEuMzEuMjMKMCA2IDQgMjgwMDkgMSAxMjgwODQxMzQxCi0gMCAwCjIwNi41NS4xODEuODcKMCAzIDMgNDE3ODUgMSAxMjgxMTk2NjY0Ci9zdG9yeS5odG1sIDAgMAoxMTkuNjMuMTk4LjEwNAowIDEgMSAxMzU2IDEgMTI4MTE2OTY0NgovY29udHJpYi9zcWwvIDAgMAoxMTkuNjMuMTk4LjEwNQowIDIgMiA0MDgyIDIgMTI4MTIzOTI1MAovY29udHJpYi9vbWV0YS8gMCAwCjIxNi4xNjUuMTMyLjI1MgowIDE5IDE4IDUyNzg0MiAxIDEyODA5NTc2NzIKLSAwIDAKMjA3LjE5NC43MC44OQowIDQgNCAyNzM2OSAxIDEyODEwNDkyMjMKLyAwIDAKMjEyLjE2MS4xMzEuMzYKMCA1IDUgMjg1MTkgMSAxMjgwOTI4MTk5Ci0gMCAwCjExOS42My4xOTguMTA5CjAgMiAxIDExNTM0IDIgMTI4MDk3NDYxOQotIDAgMAoxODguMTY1LjIxMS4yMDYKMCAxNSAxNSAxNzMwODggMTMgMTI4MTE0NjA3NQovIDAgMAo5My4yMjIuMjAyLjE4MwowIDUgNSAyODUxOSAxIDEyODEwNDMwNDQKLyAwIDAKNzcuMTc5LjE2Ny43NgowIDE2IDE2IDE3OTY1MSAxIDEyODExMTU4NzEKL2pzdGVzdC5odG1sIDAgMAo1OC4xNTIuOTguNTUKMCA0IDQgMjczNjkgMSAxMjgxMDczNDMzCi8gMCAwCjk0LjE3OS4xMjEuMTE0CjAgMjcgMjcgMzE4ODQ5IDMgMTI4MTIxMzU0MwovanN0ZXN0Lmh0bWwgMCAwCjY1LjUyLjE3LjE2MwowIDIgMiAyMzA2OCAyIDEyODA5NTg4OTIKLSAwIDAKODUuMTc4LjcyLjEzNwowIDE5IDE5IDIwNTcwMyAxIDEyODA4NjI2NzgKLSAwIDAKMTE5LjE3Mi4xNTMuNzIKMCAxIDEgMTE1MCAwIDAKLSAwIDAKODIuMjI0Ljg5LjE2NgowIDQgNCAyNzM2OSAxIDEyODEwMDQ3MDQKLSAwIDAKMTE5LjYzLjE5OC4xMTAKMCAxIDEgNDAwMzUgMSAxMjgxMTI1NTI3Ci9zdG9yeS5odG1sIDAgMAo2MS4yNDcuMjA5LjgxCjAgMSAxIDU2MyAwIDAKLSAwIDAKMTE5LjYzLjE5OC4xMTMKMCAxIDEgMTQxOCAxIDEyODEyNDY0NzcKL2NvbnRyaWIvbHVhLyAwIDAKMTc0LjEyNy4xMzIuMTQyCjAgMTAgMTAgNTYzMTEgMSAxMjgwOTQyNTA2Ci0gMCAwCjE3NC4xMjcuMTMyLjE0MwowIDggNSAyNDU4NyAxIDEyODA5NDQ3MTIKLSAwIDAKODUuMjUuMTI0LjEzMgowIDYzIDYwIDUwODIyOSAxIDEyODEwMzI4NjQKL2hpZ2hsaWdodC5odG1sIDAgMAoxMTkuNjMuMTk4LjExNgowIDEgMSAxNDE4IDEgMTI4MTI0NjQ3OAovY29udHJpYi9sdWEvIDAgMAoxMTkuNjMuMTk4LjExNwowIDEgMSAxMDQ4MCAxIDEyODEyMzU2MzIKL2NvbnRyaWIvcGhwLyAwIDAKMTE5LjYzLjE5OC4xMTgKMCAxIDEgMTQxOCAxIDEyODEwNDQ1NzAKL2NvbnRyaWIvbHVhLyAwIDAKNzIuMTQuMTkyLjY4CjAgNyA3IDExMjA2NyAxIDEyODA4NjgwNzAKLSAwIDAKMTE5LjYzLjE5OC4xMTkKMCAxIDEgMTE1NDcgMSAxMjgxMTAzMTA2Ci8gMCAwCjk0LjIxMi40Ni44OQowIDQgMiAzNTUzNCAxIDEyODA4Mzc0NTkKLSAwIDAKNjUuNTUuMzcuMTgxCjAgNTIgNDMgMzU5NTQ0IDEyIDEyODEyMjYyMzIKLSAwIDAKNzYuNjYuOTUuMTI0CjAgNCA0IDI3MzgyIDEgMTI4MTI0MDMyNAovIDAgMAo2OS43MC4xMDAuNTAKMCAxNCAxNCAxNjUwODggMSAxMjgwODY3MjM4Ci0gMCAwCjc2LjI1NC41Ny4zNgowIDE4IDE4IDM3ODY5MCAxIDEyODExMTE4NzMKL2NvbnRyaWIvcHl0aG9uLyAwIDAKODAuMTI3LjAuMTg2CjAgMTQgMTQgMTY1MTQzIDEgMTI4MDkyNTg4NQotIDAgMAo2Ni4yMjAuMTAzLjk3CjAgOCA4IDk5NTAzIDIgMTI4MTExNTYwMgovIDAgMAo3OS4xMzYuNTAuODMKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTEwMDQ0Ci9qc3Rlc3QuaHRtbCAwIDAKODEuMjQ0LjEzOC45OAowIDkgOCAyNjYyMzkgMSAxMjgwOTQ4MDA4Ci0gMCAwCjIxMi4xMzkuMjIzLjIwNgowIDM2IDM2IDMzNTcxNCAyIDEyODExMDI0MTEKL21peGVkdGVzdC5odG1sIDAgMAoxNTEuNDkuMjUwLjM3CjAgMyAzIDQxNzg1IDEgMTI4MTE5NDY1NAovc3RvcnkuaHRtbCAwIDAKNjUuMTI1LjI2LjI0MgowIDE4IDE0IDE2NTA4OCAxIDEyODA4NTU4NzYKLSAwIDAKMTgzLjYwLjIuMTYKMCAxIDEgMTE1NDcgMSAxMjgxMjAyMDgyCi8gMCAwCjk1LjguNC4yMTQKMCAyNSAyNSAyODgxMzkgMSAxMjgwOTQ2NjAzCi0gMCAwCjExOS42My4xOTguMTIyCjAgMSAxIDEwNTYgMSAxMjgxMTI5OTMwCi9zcGFycWx0ZXN0Lmh0bWwgMCAwCjgzLjI5LjQxLjcxCjAgMzYgMzYgMzI1Nzg5IDEgMTI4MTExNzAwMgovY29udHJpYi9zY2hlbWUvIDAgMAo3MC44Ni4yMzUuMTYyCjAgMTYgMTIgOTkzODQgMSAxMjgxMjI1ODk3Ci9jb250cmliL3BocC8gMCAwCjE4OC41Ny40NS4yMjYKMCA0IDQgMjczODIgMSAxMjgxMTQ1NDUyCi8gMCAwCjIxMi45NS41NC4xMjIKMCAyIDIgNTE1ODIgMSAxMjgxMDkzMTE5Ci9zdG9yeS5odG1sIDAgMAo2NS4xOS4xNTQuMTYzCjAgOCA4IDMzNDc4IDEgMTI4MDgzNzI1NgotIDAgMAoxMTkuNjMuMTk4LjEyNQowIDEgMSAyMjcwIDAgMAotIDAgMAoxMTkuNjMuMTk4LjEyNgowIDEgMCAwIDEgMTI4MDkxMjc4NwotIDAgMAoxNzQuMTIxLjE4Ni45OAowIDYgNiAxMjg3OTQgNCAxMjgwOTc2MzIwCi0gMCAwCjEyOC4yNDIuMjQxLjEzMwowIDIgMiAwIDIgMTI4MDk1ODg4OAotIDAgMAoyMDcuNDYuMTMuMTAxCjAgMiAyIDQ0MzQgMiAxMjgxMDA3NTY1Ci0gMCAwCjEyMi41NC4xNTAuMTAwCjAgMTYgMTYgMTc5NjM4IDEgMTI4MTAwNzMwMwotIDAgMAo3Ny4yNDguMjAxLjQxCjAgMyAzIDI2MjE5IDEgMTI4MDk1MDA5NwotIDAgMAoxODcuMTU4LjU3LjExNgowIDM5IDM5IDM2Njk0NCAxIDEyODExMjUxMzYKL2NvbnRyaWIvb21ldGEvIDAgMAo4NC40Mi4xMzAuNDgKMCA1MiAzMCA1MDU3ODkgMSAxMjgwODUxNzU2Ci0gMCAwCjE4Ni4xNi4xNDUuNDAKMCA0IDQgMjczNjkgMSAxMjgwODc4MzIzCi0gMCAwCjc1Ljc3LjQ4LjIxMAowIDM3IDMzIDU2NDYzNiAyIDEyODA5MzM4NjIKLSAwIDAKOTQuMTkuMjA4Ljg4CjAgMyAzIDUzMDA5IDAgMAotIDAgMAo4Mi4yNDQuMTM3LjIxCjAgMjYgMjUgMzIxMTcxIDEgMTI4MTEyNDkwMwovY29udHJpYi9waHAvIDAgMAo5Mi4zLjE2Mi44MQowIDEgMSAxMTUzNCAxIDEyODA5NTE5OTcKLSAwIDAKODYuMTc4LjYyLjIxNAowIDUgNSAyMTkzMDMgMSAxMjgxMTA2OTQ4Ci8gMCAwCjE0OS4yNTQuNDkuNDEKMCA0IDQgMjczNjkgMSAxMjgwODYyNDA4Ci0gMCAwCjgyLjQ1LjE4MC4xNjUKMCA0NiA0MyAzNTcyMzIgMSAxMjgwODQ2NTI1Ci0gMCAwCjIwNy43MC42MC4yMQowIDEgMSAxMTUzNCAxIDEyODEwNDIwNDEKLyAwIDAKMjQuMTI4LjE4OS4xNTkKMCA0IDQgMjczODIgMSAxMjgxMjQ4NTAzCi8gMCAwCjE4Ny4xMzQuNTAuOTcKMCAyIDIgMzU3NjcgMSAxMjgxMjE3MTk5Ci9tYW51YWwuaHRtbCAwIDAKMjA4LjY1LjczLjE0MQowIDUgNSA4MjQyMCAyIDEyODEwMzcxMzEKL3N0b3J5Lmh0bWwgMCAwCjkyLjY3LjM3LjE1NAowIDI3IDIxIDIzMjA1MyAxIDEyODA4Mzk0NjAKLSAwIDAKMTQzLjEwNy40NS4xNwowIDE0IDE0IDE2NTA4OCAxIDEyODA4NDg3OTgKLSAwIDAKMTk5LjY3LjEzMS4xNTMKMCA0IDQgMjczNjkgMSAxMjgxMDIzNDY5Ci8gMCAwCjg3LjE1My4yMjQuNDMKMCAxNyAxNSAyMDAzNDcgMiAxMjgxMDE0MDMyCi9tYW51YWwuaHRtbCAwIDAKODAuMTg3LjEwNy4xNQowIDQgNCAyNzM4MiAxIDEyODExMDE2MTQKLyAwIDAKMTgwLjE1LjQuMTg5CjAgNCA0IDI3MzY5IDEgMTI4MTA2MzYwNQovIDAgMAoxMi4yLjIzNS43CjAgMTQgMTQgMTY0MzEzIDEgMTI4MDk2MzQ4NwotIDAgMAo4NS4xNC44NC43NAowIDIzIDIwIDQyOTI3MyAzIDEyODEwODk2NDMKL21hbnVhbC5odG1sIDAgMAo5Ni41Ni4xNjIuMgowIDUgNSA2MjU3MyAxIDEyODA5MzM2MzkKLSAwIDAKNzguMTc2LjI4LjMKMCAxOSAxOSAxOTAxOTYgMSAxMjgxMDk0MDQ1Ci9odG1sdGVzdC5odG1sIDAgMAo3MS45My4xNDEuMTE3CjAgMTggMTggMTY3ODAyIDEgMTI4MDkxNzAyOAotIDAgMAoxNzAuMTQ5LjEwMC4xMAowIDMgMyAzNjkxNyAxIDEyODEwMzY2NDcKL21hbnVhbC5odG1sIDAgMAoyMTMuMjMxLjM1LjE4NgowIDQgNCAyNzM2OSAxIDEyODA5MDQ3OTYKLSAwIDAKMTIyLjExNi4xNC4xODgKMCA4IDYgMjMwODM3IDIgMTI4MTA4OTk5MgovIDAgMAoxNjEuMTY1LjE5Ni44NAowIDQgNCAyNzM2OSAxIDEyODA4NzU2MDAKLSAwIDAKMTkzLjkuMTMuMTM0CjAgNSA1IDM1Mjg1IDEgMTI4MTAyMzY5MAovY29tcHJlc3MuaHRtbCAwIDAKOTQuMTk1LjE5NS4xMDYKMCA1IDUgMjg1MzIgMSAxMjgxMTE5NDY0Ci8gMCAwCjY1LjE5Ni41MS4xMAowIDIwIDIwIDM4MjA0OSAxIDEyODA4NTQ1NTEKLSAwIDAKODIuMjE2LjY2LjI0CjAgMjMgMjMgMjg0MTU2IDEgMTI4MTE4OTczOQovY29udHJpYi9waHAvIDAgMAoxMTMuMjU1LjYuMjEzCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg1NDkzMgotIDAgMAo2NS4xNjUuMTQ0LjI1NAowIDI5IDI4IDUxNjkwOSAxIDEyODA5NDczMTYKLSAwIDAKNzcuMTg2Ljc1LjE3MQowIDcyIDcyIDk2Nzc4OCAxIDEyODA4NzY2OTIKLSAwIDAKMTIxLjEyLjI0OS4xMwowIDIxIDIxIDIwMzg2NyAxIDEyODA5MjY5ODgKLSAwIDAKMjAyLjIyOC4xMzkuMTY0CjAgMzIgMzIgNTA3NzE4IDEgMTI4MDk4OTk1OQotIDAgMAoyMDIuMTU1LjIwOS4yMDIKMCAxIDEgNTYzIDAgMAotIDAgMAo3OS4xNTYuMjAyLjE5NgowIDE0IDE0IDE2NTE0MyAxIDEyODA5NDExNTQKLSAwIDAKMTczLjEzLjE2Ny4xNjkKMCAzIDMgMzQ2MDIgMyAxMjgwOTc2MDgzCi0gMCAwCjcyLjUzLjExLjQ5CjAgNCA0IDI3MzY5IDEgMTI4MTA0MDA2NgovIDAgMAoyMDcuNDYuMTMuMTMyCjAgMSAxIDE2NzggMSAxMjgxMDcyMjQ3Ci9jb250cmliL2NzaGFycC8gMCAwCjc0LjEyNS41Ny42MAowIDE2IDE2IDE3OTYzOCAxIDEyODA5MzE2MzkKLSAwIDAKMjA3LjQ2LjE5NS4yMjQKMCA1IDIgMjQyNiAzIDEyODExNDMyNTYKL2NvbXByZXNzLmh0bWwgMCAwCjIwNy40Ni4xMy4xMzMKMCA1IDIgMTQ0NDIgMiAxMjgxMDY4Mzc1Ci9tYW51YWwuaHRtbCAwIDAKMjA3LjQ2LjE5NS4yMjUKMCAxIDEgNDAwMzUgMSAxMjgxMTEzMTY2Ci9zdG9yeS5odG1sIDAgMAoyMDcuNDYuMTMuMTM0CjAgMSAwIDAgMSAxMjgxMDUwNzA1Ci9zcGFycWx0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4xOTUuMjI2CjAgMiAwIDMxOSAxIDEyODExNTUzMTcKL2NvbnRyaWIvcGhwLyAwIDAKMjA3LjQ2LjEzLjEzNQowIDIgMSA0NzU2IDAgMAotIDAgMAoyMjAuMjQ4LjAuMTQ1CjAgNyA3IDIyMTU5MCAxIDEyODA5MTExMTgKLSAwIDAKMTc4LjQwLjU4LjIwMgowIDMyIDMxIDY4MTUxNCAxIDEyODExNzEzNzQKL2NvbnRyaWIvc3FsLyAwIDAKMjA3LjQ2LjEzLjEzNgowIDMgMSA4MjM1IDIgMTI4MTIxOTAxNQovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4xOTUuMjI4CjAgMSAxIDM1MzQgMSAxMjgxMjE5NTQ0Ci9jb250cmliL3B5dGhvbi8gMCAwCjgzLjI0Ny4xOC40OQowIDQgNCAyNzM4MiAxIDEyODExMzExOTMKLyAwIDAKMTA5LjIzOC40Ni4xMAowIDYgMiAxNTY4MSAwIDAKLSAwIDAKMjA3LjQ2LjEzLjEzOAowIDEgMSAzNTIwNCAxIDEyODEyMjAxMTcKL21hbnVhbC5odG1sIDAgMAoyMDcuNDYuMTMuMTM5CjAgMyAxIDIwNDYgMiAxMjgxMjQ3NzQ5Ci9zdG9yeS5odG1sIDAgMAoyMjIuNzkuNi4xNzAKMCAyMiAyMiAxOTYyMzQgMSAxMjgxMjAyMTY0Ci9jc3N0ZXN0Lmh0bWwgMCAwCjc5LjIzMi4zNS41NQowIDEgMSAxMTU0NyAxIDEyODExNjM2NjAKLyAwIDAKMTczLjEzLjE2Ny4xNzAKMCAzIDMgMzQ2MDIgMiAxMjgwOTY4NzgxCi0gMCAwCjg1LjE3OC4xOTUuMTQ5CjAgMTM0IDU5IDQ5NjMzMyAzIDEyODA4NTMyMjMKLSAwIDAKOTMuMTM5LjEyMi4yNDMKMCAyMyAyMyAyODQwODcgMSAxMjgwODU5MDc2Ci0gMCAwCjc5LjIzNC42Mi42NQowIDYwIDQyIDYyNzI2MCAxIDEyODEwOTQ4NjAKL2Nzc3Rlc3QuaHRtbCAwIDAKNjkuNjMuMTgwLjI0NwowIDEgMSAwIDEgMTI4MDk2Mjg4NQotIDAgMAo4OC4xODkuMjMyLjIxMwowIDU1IDU0IDgxOTI4NiAxIDEyODA5NDA4ODYKLSAwIDAKMTc0LjEyOS4yMTguMjI5CjAgMSAxIDAgMSAxMjgwOTU4OTAzCi0gMCAwCjIyMS4xMzAuMTcuMTgKMCAxIDEgMTE1NDcgMSAxMjgxMTk3MjE4Ci8gMCAwCjIyMS4xMzAuMTcuMTkKMCAxIDAgMzQxIDEgMTI4MTE5NzIxNgovIDAgMAo4OC45MC4yMTIuMTM5CjAgNCA0IDI3MzgyIDEgMTI4MTE4Mjk5MgovIDAgMAo3OC41Mi4xMjguNzAKMCAyMSAyMSAyNTg0ODcgMSAxMjgxMTk2MDQzCi9jb250cmliL3BocC8gMCAwCjIxMi4xNzUuMjIyLjk3CjAgNDIgNDEgMzYzMzgwIDEgMTI4MTEwODI3NAovY29udHJpYi9waHAvIDAgMAoyMTMuMjMxLjMxLjg0CjAgMjQgMjQgNDA0OTY2IDIgMTI4MTAzODc1MAovY3NzdGVzdC5odG1sIDAgMAo2Ni42OC4xMjguMTkyCjAgMzYgMzUgNTYzNTk5IDEgMTI4MDg3NjY1MgotIDAgMAoyMDAuMjAuMTUuNDQKMCAyMyAyMyAyODQxNDIgMSAxMjgwOTU2ODE2Ci0gMCAwCjgyLjEzMC4xOTUuMTUwCjAgNCA0IDI3MzY5IDEgMTI4MDkyOTgwOAotIDAgMAoyMDcuNDYuMTk1LjIzMAowIDIgMSAzNTUyMyAxIDEyODA5NTc2NTQKLSAwIDAKMjA3LjQ2LjEzLjE0MAowIDEgMSAzNTM0IDEgMTI4MTA1MDg4NgovY29udHJpYi9weXRob24vIDAgMAoyMDcuNDYuMTk1LjIzMgowIDEgMCAwIDEgMTI4MTIwOTgwMAovbWFudWFsLmh0bWwgMCAwCjIyMC4yNTUuNy4xODEKMCAxIDEgMTE1MzQgMSAxMjgwODY0MzczCi0gMCAwCjIwNy40Ni4xMy4xNDEKMCAxIDAgMCAxIDEyODA5OTI2MDUKLSAwIDAKMjA3LjQ2LjE5NS4yMzMKMCAxIDEgODUzMyAwIDAKLSAwIDAKODIuNTAuMTEyLjEzNwowIDQgNCAyNzM4MiAxIDEyODEwOTUyMDgKLyAwIDAKMjA3LjQ2LjEzLjE0MgowIDIgMiA0MzU2OSAyIDEyODEwMDAwNDUKLSAwIDAKMjA3LjQ2LjE5NS4yMzQKMCAxIDEgMTA0ODAgMSAxMjgxMDk4OTQ4Ci9jb250cmliL3BocC8gMCAwCjIwNy40Ni4xMy4xNDQKMCAyIDEgMTc3OCAxIDEyODExMDc3MDUKL21peGVkdGVzdC5odG1sIDAgMAoxNDkuNi4xNjQuMTUwCjAgMSAxIDE0MTIyIDAgMAotIDAgMAoyMDEuMTE2LjE0MC4yNDMKMCA0IDQgMjczNjkgMSAxMjgwOTU0OTQ1Ci0gMCAwCjEzMS42Mi4xMC4zNQowIDUgNSAyNzk0NSAxIDEyODExMjA1NDMKLyAwIDAKMjA3LjQ2LjEzLjE0NgowIDIgMSA5MTggMiAxMjgxMjI1MzA2Ci9zdG9yeS5odG1sIDAgMAo3OC45Ny4xNjIuNjEKMCA1IDUgMjg1MTkgMSAxMjgwOTQwNDEyCi0gMCAwCjIwNy40Ni4xOTUuMjM5CjAgMyAxIDcwODggMSAxMjgwOTE3MzY0Ci0gMCAwCjQxLjE3LjQ4LjUKMCA0IDQgMjczNjkgMSAxMjgxMDI0NDk4Ci8gMCAwCjU5LjE1Mi4xOTcuMTYyCjAgMSAxIDExNTM0IDEgMTI4MTAwMjU1MAotIDAgMAoxOTUuOTEuMjI0LjIyNQowIDIyIDIyIDIxNzcyNSAxIDEyODExODk0NjUKLyAwIDAKNjMuOTcuNTkuNzIKMCA0IDQgMjczNjkgMSAxMjgwOTQ4MDk4Ci0gMCAwCjE4NC43My4xMTcuNzkKMCAzIDMgMzQ2MTUgMyAxMjgxMjIwODcxCi8gMCAwCjgzLjkuMTAzLjE1MQowIDcgNyA0MDYxNiAxIDEyODA5MjM4NjAKLSAwIDAKNzkuMTguMTM5Ljk0CjAgNCA0IDI3MzgyIDEgMTI4MTExMDU4NAovIDAgMAoxODQuNzIuMy43NwowIDIgMiAxMjY4NCAxIDEyODA5NTkwMzMKLSAwIDAKNTguMTc5LjEzOC4xMjIKMCAzIDIgMzUyMTQgMSAxMjgwODM2NzMxCi0gMCAwCjIxNy45Mi4xOTUuMjM1CjAgMjMgMjMgMzkxODE5IDEgMTI4MTA4Mjc1MgovY29udHJpYi9zcWwvIDAgMAoxMDkuNDEuMTU0LjExOAowIDYgNiAyMjcyMTkgMSAxMjgxMjI3NzA5Ci9jb21wcmVzcy5odG1sIDAgMAo4Ny4xNi44NC40OQowIDEyIDEyIDEzODY1NyAxIDEyODExNjQ3MDgKL2NvbnRyaWIvc3FsLyAwIDAKODcuMjMwLjU1LjQyCjAgNiA2IDAgMSAxMjgwODM3MjE5Ci0gMCAwCjgxLjIxMC4xOTAuNgowIDYgNSA0MTAzODEgMSAxMjgwODQ1NzAwCi0gMCAwCjg5Ljk2LjE0MS44MwowIDE2IDE2IDE3OTYzOCAxIDEyODEwMDgxNDYKLSAwIDAKMjAyLjEyNC4xMDkuNjcKMCAzOCAyNSA0MjU1NjYgMiAxMjgxMjQ4MDQ5Ci9qc3Rlc3QuaHRtbCAwIDAKNDEuMTQxLjI1NS45OAowIDE5IDE5IDE4NTY3NiAxIDEyODA5NDYyNDgKLSAwIDAKMTkyLjExNy44LjQyCjAgNCA0IDI3MzY5IDEgMTI4MTAzMTYxOQovIDAgMAo3Ni45Ny4xODMuMTI0CjAgNSA1IDc3MjY2IDEgMTI4MDg1ODc3NAotIDAgMAoxOTUuMTguMTQuMTE4CjAgMyAzIDE1ODM1IDAgMAotIDAgMAoxMDkuOTAuMTI1LjIyMQowIDIgMiA0MDYzNSAxIDEyODA4NjIxMDgKLSAwIDAKMjE3LjE2Ni4xMy4xCjAgNCA0IDQyOTM1IDEgMTI4MTA5MjUxOQovc3RvcnkuaHRtbCAwIDAKMjE2LjIyMS42MC4yMjgKMCA2IDYgNDExMjExIDEgMTI4MTAxOTU4NAovIDAgMAoyNC4xMDMuMTg5Ljg0CjAgMTQgMTQgMTY0Mzg0IDEgMTI4MTIwODkzOAovY29udHJpYi9sdWEvIDAgMAoxOTQuMTM4LjEyLjE0NQowIDIgMiAxNTI3MiAwIDAKLSAwIDAKMTk0LjEzOC4xMi4xNDYKMCAyIDIgMTIwOTcgMSAxMjgwOTEwMTU2Ci0gMCAwCjIxMi45OS44My41OAowIDQgNCAyNzM2OSAxIDEyODA5NDE4NTcKLSAwIDAKMjQuMTMwLjYwLjEzMQowIDMgMyAzNjkxNyAxIDEyODEwMDE5MjAKLSAwIDAKOTIuMTA1LjE1MS4xMTYKMCA0IDQgMjczNjkgMSAxMjgxMDQ0NDQ0Ci8gMCAwCjY2LjI0OS42Ni4xMgowIDUyIDcgOTk2NDQgMjIgMTI4MTI1MDI2NgovIDAgMAo2NC4yMDEuMjQ2LjE5OAowIDEgMSAxMTUzNCAxIDEyODEwNDg0NDIKLyAwIDAKNjIuMTU5LjExNi4xMzAKMCAyNSAyNCAzOTc2MzMgMiAxMjgwOTE1MDQ1Ci0gMCAwCjg1LjE3OC4yMTEuMTU4CjAgMTYgMTAgMzMzNjAxIDEgMTI4MTAxMTE1MgovY29tcHJlc3MuaHRtbCAwIDAKMjA3LjQ3LjI1LjgyCjAgNSA1IDYyMjg3IDEgMTI4MDg4MzQwNgotIDAgMAo2Ny4xNDIuMTY1LjI4CjAgNSA1IDQxNDkxIDEgMTI4MDg2Mzc5NAotIDAgMAoxNzguOTQuODEuMTMzCjAgMjMgMjMgMjg0MDg3IDEgMTI4MDkwNzg2MgotIDAgMAo2Mi40NC44Mi4xNDIKMCAyMiAwIDcyMzMgMSAxMjgxMDYxMDExCi0gMCAwCjEwOS4xODguMTAuMjQ4CjAgMzEgMzEgMzMyODgyIDEgMTI4MTAyNjc3MAovaHRtbHRlc3QuaHRtbCAwIDAKNTguMjE4LjIwNC4xMTAKMCAxNCAwIDQ0NTIgMTQgMTI4MTIzNTY5NgotIDAgMAoxODguMTA4LjQ5LjEyMQowIDIzIDIzIDI4NDE0MiAxIDEyODEwMTkyODgKLyAwIDAKNzIuMTMuOTEuNDAKMCAxIDEgMTE1MzQgMSAxMjgwODM3MDkyCi0gMCAwCjY5LjI4LjE0OS4yOQowIDMxIDMxIDUyNTU0MSAxIDEyODA5NTgzMTYKLSAwIDAKODIuMS4xOTkuMTk0CjAgNyA0IDYxNTEwIDEgMTI4MDgzOTU3OQotIDAgMAoyMTMuMTkzLjk3LjI0NAowIDQxIDI0IDMzNDc4NCAzIDEyODEwOTI4ODMKL21peGVkdGVzdC5odG1sIDAgMAojIEVuZCBPZiBUYWJsZSAtIHNpdGVzIChtb250aGx5KQojIC1zaXRlcy0gKGRhaWx5KQo3MC4xNzMuMTEwLjk2CjAgNCA0IDI3MzgyIDEgMTI4MTI0NTc2NwovIDAgMAo5Mi4xMTkuNDQuNzQKMCAzMSAzMSAzMTAzOTggMSAxMjgxMjI3NDk1Ci9jb250cmliL3Bsc3FsLyAwIDAKMjEyLjQ1LjI5LjE4NwowIDQgMyAyNDg0NyAxIDEyODEyMjc2MzYKL2NvbnRyaWIvcGhwLyAwIDAKNzYuMTY3LjI1NC4yMDEKMCAyNCAyNCAyODU2MjYgMSAxMjgxMjQ2ODk2Ci9jb250cmliL3BocC8gMCAwCjkyLjI0My4xNy41NAowIDIgMSAxMTg2NiAxIDEyODEyNTAyODIKLyAwIDAKOTMuODguMjE0LjEyMAowIDQgNCAyNzM4MiAxIDEyODEyNDMzNDkKLyAwIDAKMTE5LjYzLjE5OC41OQowIDEgMCAzMTkgMCAwCi0gMCAwCjExOS42My4xOTguNjgKMCAxIDEgMTY3MSAxIDEyODEyMzIwMDkKL2NvbnRyaWIvcGhwL0xJQ0VOU0UgMCAwCjExOS42My4xOTguNzAKMCAxIDEgMzE2NCAxIDEyODEyMzkyNTEKL2NvbnRyaWIvb21ldGEvIDAgMAoxMTkuNjMuMTk4Ljc2CjAgMSAxIDIyNjIgMSAxMjgxMjI4Mzk1Ci9jb250cmliL3Bsc3FsLyAwIDAKNzQuMTY2LjM2LjIwNQowIDUgNSAyMTkzMDMgMSAxMjgxMjM2MjkwCi8gMCAwCjIwNy40Ni4xOTkuMzkKMCAxIDAgMCAxIDEyODEyNDY0MjkKL3NwYXJxbHRlc3QuaHRtbCAwIDAKODMuMjQ0LjEzNy4xNjIKMCAxIDAgMCAwIDAKLSAwIDAKMTE5LjYzLjE5OC45MQowIDEgMSAyMjYyIDEgMTI4MTIyODM5NgovY29udHJpYi9wbHNxbC8gMCAwCjExOS42My4xOTguOTQKMCAxIDEgMTE1NDcgMSAxMjgxMjUwMDkyCi8gMCAwCjEyLjM0LjI0Ni43MwowIDMgMyA0MTc4NSAxIDEyODEyMzk2NDkKL3N0b3J5Lmh0bWwgMCAwCjIwNy40Ni4xOTkuNDYKMCAxIDAgMCAxIDEyODEyMjY5NTgKL2NvbnRyaWIvc3FsLyAwIDAKOTMuMTg0LjM1LjQ1CjAgNCA0IDI3MzgyIDEgMTI4MTIzNDEwMAovIDAgMAoxMTkuNjMuMTk4Ljk4CjAgMSAxIDEwNDgwIDEgMTI4MTIzNTYzMwovY29udHJpYi9waHAvIDAgMAoyMTMuMTc5LjY4LjE5MAowIDMgMCAxMDA1IDEgMTI4MTI0NDk5OAotIDAgMAoxMDkuODYuMTQ1LjIwNAowIDE2IDEyIDk5Mzg4IDEgMTI4MTIyNjI4OQovY29udHJpYi9waHAvLyAwIDAKMTg5LjUwLjE1NC44NAowIDE4IDEyIDEwMDA1MCAxIDEyODEyMjkyNTEKL2NvbnRyaWIvcGhwLyAwIDAKMjQuNi4xNzkuMzcKMCAyNCAyNCA0MjMzNTkgMSAxMjgxMjQwNzg5Ci9tYW51YWwuaHRtbCAwIDAKNjcuMjAyLjE0LjI3CjAgMSAxIDEwNDgwIDEgMTI4MTIyODc4NQovY29udHJpYi9waHAvIDAgMAo2Ny4yMzUuMjQuMzkKMCAxNiAxNiAxODU3NjUgMSAxMjgxMjQ1NDA3Ci9jb250cmliL3B5dGhvbi8gMCAwCjExNC44MC45My43MQowIDIgMSAxMTg3MiAxIDEyODEyMzIxMTMKLyAwIDAKMjA3LjQ2LjIwNC4xNzgKMCAxIDAgMCAxIDEyODEyMzg5MDEKLyAwIDAKOTguMTEwLjE1My44MQowIDggOCA3MzkyMiAxIDEyODEyNDEwODUKL21hbnVhbC5odG1sIDAgMAo3NS44My4yMjguMTU3CjAgNTAgNTAgNDE1OTA2IDEgMTI4MTIzNDIwMwovY29udHJpYi9waHAvIDAgMAo3MS4xMTIuNTIuNzQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjQwMDY3Ci9qc3Rlc3QuaHRtbCAwIDAKNzguODYuMjM0LjE5MwowIDYgNiAyNTQ1MDcgMSAxMjgxMjMyMjE1Ci9tYW51YWwuaHRtbCAwIDAKODMuMTEyLjE2LjIzMQowIDI3IDkgMjQ3ODkgMyAxMjgxMjM1OTEyCi9jb250cmliL2x1YS8gMCAwCjgxLjE5LjIxNS4xMgowIDE2IDEyIDk5Mzg0IDEgMTI4MTIyNjE1MgovY29udHJpYi9waHAvLyAwIDAKMTIzLjEyNS42Ni4xOQowIDEgMCAzMTkgMCAwCi0gMCAwCjIxMi4xMTcuMTU4LjIyMgowIDQgMSAxMTU0NyAxIDEyODEyNDQxNzYKL21hbnVhbC5odG1sIDAgMAo5OS4yMjQuMTQxLjg0CjAgNTYgNTQgNDU0Njc4IDIgMTI4MTIzNzg3OQovY29udHJpYi9vbWV0YS8gMCAwCjY3LjE5NS4xMTIuMTc2CjAgOSA4IDc3MTY5IDMgMTI4MTIzNDMxOQovIDAgMAo2Ny4xODMuMjAuMzAKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjM4ODk2Ci9qc3Rlc3QuaHRtbCAwIDAKODguOTEuMS4xMTQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjM3NzI5Ci9qc3Rlc3QuaHRtbCAwIDAKNzQuMTI1LjE1NC44MQowIDEgMSAyMzcyIDAgMAotIDAgMAo3NC4xMjUuMTU0LjgyCjAgNSA1IDM1MTU5IDAgMAotIDAgMAo3NC4xMjUuMTU0LjgzCjAgMiAyIDE2MDYwIDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg0CjAgMSAxIDYyOTUgMCAwCi0gMCAwCjc0LjEyNS4xNTQuODUKMCAzIDMgMTk5NTcgMCAwCi0gMCAwCjc0LjEyNS4xNTQuODcKMCA0IDMgNTg0OTEgMCAwCi0gMCAwCjcyLjE0LjIxMi44MAowIDEgMSA1ODUwMyAwIDAKLSAwIDAKNzIuMTQuMjEyLjgxCjAgMiAxIDgwNjIgMCAwCi0gMCAwCjcyLjE0LjIxMi44NAowIDQgNCAyNzUyNSAwIDAKLSAwIDAKNzIuMTQuMjEyLjg2CjAgMiAyIDMwNDAxIDAgMAotIDAgMAo3Mi4xNC4yMTIuODcKMCAxIDEgNjEyMzcgMCAwCi0gMCAwCjIwNy40Ni4xMi4yNDEKMCAyIDAgNjYwIDEgMTI4MTI0NTE2OQovIDAgMAoyMDcuNDYuMTMuNTAKMCAxIDEgNDAwMzUgMSAxMjgxMjQ0OTkzCi9zdG9yeS5odG1sIDAgMAo4NS4yNS4xNDYuNDYKMCA0IDMgMjYyMzIgMSAxMjgxMjI2MTQwCi8gMCAwCjcwLjI0NC4yMzQuMjIyCjAgMjUgMjUgMjA3MzAzIDEgMTI4MTI0MDE4NwovY29udHJpYi9wbHNxbC8gMCAwCjExNS42NC4xMTAuOTYKMCAyMCAyMCAyMTE1ODkgMSAxMjgxMjI4MDU1Ci9jb250cmliL3B5dGhvbi8gMCAwCjIwNy40Ni4xMy44NAowIDEgMCAzMTAgMSAxMjgxMjQ0NjYwCi0gMCAwCjgwLjE3NC4xNTguOTYKMCAxNiAxNiAxNDA2NjggMSAxMjgxMjM3NzgwCi9tYW51YWwuaHRtbCAwIDAKOTguMjI5LjEwMi45NAowIDI1IDI1IDI4ODE1MyAxIDEyODEyMzI4OTQKL2NvbnRyaWIvcGhwLyAwIDAKMjAxLjE2MC4xMjMuMTQ5CjAgMjMgMjMgMjg0MTU2IDEgMTI4MTIzNTUzMAovY29udHJpYi9waHAvIDAgMAo4My4xMDkuMTE0LjEzNQowIDQgNCAyNzM4MiAxIDEyODEyMzI2OTgKLyAwIDAKODQuMjA4LjEzMi4yMTgKMCAyIDIgMzU3NjcgMSAxMjgxMjI5NTE2Ci9tYW51YWwuaHRtbCAwIDAKNzQuMTI1Ljc1LjE3CjAgMSAxIDExNTAgMCAwCi0gMCAwCjE3NC41Ni43Ni4yNQowIDUgNCAyNzcyMyAxIDEyODEyMzMxNzUKLyAwIDAKNzUuNDEuMTE1LjExOQowIDQgNCA0MjkzNSAxIDEyODEyNDYxNDQKL3N0b3J5Lmh0bWwgMCAwCjE5My40Ny44MC4zNgowIDIgMSAxMTg2NiAxIDEyODEyMzkxODQKLyAwIDAKMTI0LjExNS4xLjgKMCAyIDEgMTE4NzIgMSAxMjgxMjI1ODYzCi8gMCAwCjIwMy4xNTMuMjIyLjEzCjAgNCA0IDI3MzgyIDEgMTI4MTI0Mjc5NQovIDAgMAoyMDcuMTcwLjIzOC4xMzYKMCA3IDcgODUzODEgMiAxMjgxMjQ2MDI3Ci9tYW51YWwuaHRtbCAwIDAKMjIwLjE4MS43LjM1CjAgMSAxIDQwMDM1IDEgMTI4MTIzOTkxMwovc3RvcnkuaHRtbCAwIDAKMjIwLjE4MS43LjUzCjAgMSAxIDExNTQ3IDEgMTI4MTIzMjIzOQovIDAgMAo2OC4zNC4yMDYuNTAKMCAzOSAzOCA1Nzk1NjAgMiAxMjgxMjM5NjUzCi9tYW51YWwuaHRtbCAwIDAKNzAuOTguNzMuNDIKMCA1IDUgMjE5MzAzIDEgMTI4MTIzMDI0NAovIDAgMAoxMTkuNjMuMTk4LjEwNQowIDEgMSAzMTY0IDEgMTI4MTIzOTI1MAovY29udHJpYi9vbWV0YS8gMCAwCjExOS42My4xOTguMTEzCjAgMSAxIDE0MTggMSAxMjgxMjQ2NDc3Ci9jb250cmliL2x1YS8gMCAwCjExOS42My4xOTguMTE2CjAgMSAxIDE0MTggMSAxMjgxMjQ2NDc4Ci9jb250cmliL2x1YS8gMCAwCjExOS42My4xOTguMTE3CjAgMSAxIDEwNDgwIDEgMTI4MTIzNTYzMgovY29udHJpYi9waHAvIDAgMAo2NS41NS4zNy4xODEKMCA4IDcgNTUzNDYgMSAxMjgxMjI2MjMyCi0gMCAwCjc2LjY2Ljk1LjEyNAowIDQgNCAyNzM4MiAxIDEyODEyNDAzMjQKLyAwIDAKNzAuODYuMjM1LjE2MgowIDE2IDEyIDk5Mzg0IDEgMTI4MTIyNTg5NwovY29udHJpYi9waHAvIDAgMAoyNC4xMjguMTg5LjE1OQowIDQgNCAyNzM4MiAxIDEyODEyNDg1MDMKLyAwIDAKMjA3LjQ2LjEzLjEzMwowIDEgMSAyMjcwIDAgMAotIDAgMAoyMDcuNDYuMTMuMTM5CjAgMyAxIDIwNDYgMiAxMjgxMjQ3NzQ5Ci9zdG9yeS5odG1sIDAgMAoyMDcuNDYuMTk1LjIzMwowIDEgMSA4NTMzIDAgMAotIDAgMAoxMDkuNDEuMTU0LjExOAowIDYgNiAyMjcyMTkgMSAxMjgxMjI3NzA5Ci9jb21wcmVzcy5odG1sIDAgMAoyMDIuMTI0LjEwOS42NwowIDM4IDI1IDQyNTU2NiAyIDEyODEyNDgwNDkKL2pzdGVzdC5odG1sIDAgMAo2Ni4yNDkuNjYuMTIKMCAxNSAxIDEyMjkgNiAxMjgxMjUwMjY2Ci8gMCAwCjU4LjIxOC4yMDQuMTEwCjAgMSAwIDMxOCAxIDEyODEyMzU2OTYKLSAwIDAKIyBFbmQgT2YgVGFibGUgLSBzaXRlcyAoZGFpbHkpCiMgLXJlZmVycmVycy0gCmh0dHA6Ly9kZXYueHdpa2kub3JnL3h3aWtpL2Jpbi92aWV3L0Rlc2lnbi9YV2lraURldmVsb3BtZW50UGxhdGZvcm0KMCAyCmh0dHA6Ly9yeWFuLmlmdXBkb3duLmNvbS8yMDA4LzExLzI5L2NvZGVwcmVzcy1qYXZhc2NyaXB0LWJhc2VkLWNvZGUtZWRpdG9yLwowIDIKaHR0cDovL2NvZGVtaXJyb3IubmV0L2Nzcy8KMSA0Cmh0dHA6Ly93d3cuZ29vZ2xlLnBsL3NlYXJjaAowIDEKaHR0cDovL3d3dy5hdXRvbW5lLndzL3dlYi9mci8yMTctZm9uY3Rpb25uYWxpdGVzLWR1LWNtcy5waHAKMCAxCmh0dHA6Ly93d3cuYmVsbHJhaW5ndXR0ZXJzLmNvbS9hZG1pbmlzdHJhdG9yL2luZGV4LnBocAowIDEKLSAoRGlyZWN0IFJlcXVlc3QpCjEgODQ0MgpodHRwOi8vaG9zdGluZ2ZyZWVrcy5uZXQvdGVzdC9hZG1pbmlzdHJhdG9yL2luZGV4LnBocAowIDEKaHR0cDovL2ZvcnVtLnN5c21hbi5ydS9pbmRleC5waHAKMCAyCmh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3Mvd2ViZGV2LzIwNDY2LwowIDUKaHR0cDovL2Nrc291cmNlLmNvbS9mb3J1bXMvdmlld3RvcGljLnBocAowIDIKaHR0cDovL2ZvcnVtLmpxdWVyeS5jb20vdG9waWMvanF1ZXJ5LWRldGVjdGluZy1zZWxlY3RlZC10ZXh0CjAgMwpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9weXRob24vCjEgMTgKaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzdGVzdC5odG1sCjEgMTgyNwpodHRwOi8vY29kZW1pcnJvci5uZXQvY3NzdGVzdC5odG1sCjEgMzQyCmh0dHA6Ly93d3cuc2VuY2hhLmNvbS9mb3J1bS9zaG93dGhyZWFkLnBocAowIDYKaHR0cDovL21haWwuZ29vZ2xlLmNvbS9hL3R1bnp5LmNvbS8KMCAzCmh0dHA6Ly93d3cuZ29vZ2xlLmNvLnVrL3NlYXJjaAowIDIxCmh0dHA6Ly9oYWluZWF1bHQuY29tL2Jsb2cvMTI5LwowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jb250cmliL2x1YS9pbmRleC5odG1sCjAgMQpodHRwOi8vd29yZHByZXNzLm9yZy9leHRlbmQvcGx1Z2lucy9jb2RlLW1pcnJvci1mb3Itd29yZHByZXNzLwowIDMKaHR0cDovL3F1ZXJ5Ny5jb20vY29kZW1pcnJvci1qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHRpbmcKMCAxMwpodHRwOi8vc3RhY2twcmludGVyLmFwcHNwb3QuY29tL3RvcHZvdGVkCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2ZhcS5odG1sCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5uby9zZWFyY2gKMCAzCmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5hdS9zZWFyY2gKMCAxMApodHRwOi8vd3d3LnNvdXRoLWpvcmRhbi5lNHkuZnIvZmxhc2gvcHdtLnBocAowIDEKaHR0cDovL21zZXNlbnlhbmkuY28uemEvYWRtaW5pc3RyYXRvci9pbmRleC5waHAKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9zcGFycWx0ZXN0Lmh0bWwKMSA3OQpodHRwOi8vY29kZW1pcnJvci5uZXQvbWFudWFsLmh0bWwKMSAyNzQKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLwoxIDkwCmh0dHA6Ly9sZWdpb24uYXJpZWwtbmV0d29ya3MuY29tL3RpY2tldC8zMjU0MQowIDEKaHR0cDovL3d3dy5nb29nbGUuY29tLmhrL3NlYXJjaAowIDQKaHR0cDovL3N0Zy50cmFpbmluZy5zaGVyZG9nLmNvbS9hZG1pbmlzdHJhdG9yL2luZGV4LnBocAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L3N0b3J5Lmh0bWwKMSA2OQpodHRwOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20uaGsvdHJhbnNsYXRlCjAgOQpodHRwOi8vd3d3Lmdvb2dsZS5jby51ay91cmwKMCA2Cmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTIzMjc2NC9qcXVlcnktcGx1Z2luLWZvci1odG1sLWVkaXRvci13aXRoLXN5bnRheC1jb2xvcmluZwowIDEyCmh0dHA6Ly93d3cuZ29vZ2xlLmN6L3NlYXJjaAowIDIKaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3N5bnRheGhpZ2hsaWdodGVyL3dpa2kvT3ZlcnZpZXcKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvanN0ZXN0Lmh0bWwKMCAyMwpodHRwOi8vd3d3Lmdvb2dsZS5jb20vcmVhZGVyL3ZpZXcvdXNlci8tL3N0YXRlL2NvbS5nb29nbGUvcmVhZGluZy1saXN0CjAgMQpodHRwOi8vd3d3LnJlZGRpdC5jb20vci9wcm9ncmFtbWluZy9jb21tZW50cy9hOWdmaC9jb2RlcnVuX29ubGluZV9pZGUvCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoCjAgMTA5Cmh0dHA6Ly93d3cubXlncmVlay5pbmZvL2FkbWluL2FkbWluX21vZHVsZXMucGhwCjAgMQpodHRwOi8vZHJ1cGFsLm9yZy9wcm9qZWN0L2NvbG9yZXIKMCAxCmh0dHA6Ly9ibG9nLmdtYW5lLm9yZy9nbWFuZS5jb21wLndlYi5jb2RlbWlycm9yCjAgMgpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9wbHNxbC8KMSAyCmh0dHA6Ly93ZWJjYWNoZS5nb29nbGV1c2VyY29udGVudC5jb20vc2VhcmNoCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvY3NzLwoxIDMKaHR0cDovL2JlbnppbGxhLmdhbGJyYWl0aHMub3JnLzIwMDkvMDIvMTgvYmVzcGluLWFuZC1jYW52YXMtcGFydC0yLwowIDIKaHR0cDovL3d3dy5kYW5pd2ViLmNvbS9mb3J1bXMvdGhyZWFkMTk3NjIxLmh0bWwKMCAyCmh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvY29kZXByZXNzL2ZvcnVtcy9mb3J1bS82NTQ1MDcvdG9waWMvMzI0NTczOAowIDUKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvc2NoZW1lL2luZGV4Lmh0bWwKMSA5MgpodHRwOi8vZHJ1cGFsLm9yZy9wcm9qZWN0L21vZHVsZXMKMCAxCmh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvci9ibG9iLzMyZjUyMTVjNmI5OTdjYjRhYjg5MmMzNGY0MGQ3NjU4MDg5ZjAwZjgvaW5kZXguaHRtbAowIDEKaHR0cDovL3d3dy5nb29nbGUuY2gvc2VhcmNoCjAgMgpodHRwOi8vbXkub3BlcmEuY29tL2psYWtlL2Jsb2cvaW5kZXguZG1sL3RhZy9FZGl0b3IKMCAyCmh0dHA6Ly93d3cuY29udGFvLWNvbW11bml0eS5kZS9zaG93dGhyZWFkLnBocAowIDEKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjU5ODI2L2RyYWduZHJvcC1hbmQtcGFzdGUtZGV0ZWN0aW9uLXdpdGgtY29udGVudGVkaXRhYmxlLW9yLWRlc2lnbm1vZGUtZW5hYmxlZAowIDEKaHR0cDovL2VuLmF1dG9tbmUud3Mvd2ViL2VuLzI5NC1hdXRvbW5lLWZlYXR1cmVzLnBocAowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9tYW51YWwuaHRtbAowIDcKaHR0cDovL2Jsb2cucXVwbG8uY29tLzIwMTAvMDYvY29tbW9uLXNlbnNlLWNvZGUtY29tcGxldGlvbi8KMCAxCmh0dHA6Ly9zcGVja3lib3kuY29tLzIwMTAvMDcvMjUvdGhlLW1vc3QtcG93ZXJmdWwtYW5kLWZlYXR1cmUtcmljaC13ZWItYmFzZWQtY29kZS1lZGl0b3JzLWlkZXMvCjAgMTEKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NzU0NjAvcGhwLWxleGljYWwtYW5kLXN5bnRheC1hbmFseXplci13cml0dGVuLWluLWMtYwowIDEKaHR0cDovL21lZGlhLm4uZnJlZS5mci9wd20ucGhwCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY3NzL2RvY3MuY3NzCjEgMwpodHRwOi8vd3d3Lmdvb2dsZS5ydS9zZWFyY2gKMCA3Cmh0dHA6Ly93d3cuZ29vZ2xlLmRlL3NlYXJjaAowIDE0Cmh0dHA6Ly92ZWViaWFyZW5kdXMubXYud2Vycm8uZWUvYWRtaW5pc3RyYXRvci9pbmRleC5waHAKMCAxCmh0dHA6Ly9zdXBwb3J0LndlYnZhbnRhLmNvbS9hcnRpY2xlLzc2ODY3LXVzaW5nLXRoZS1jb2RlLWVkaXRvcgowIDEKaHR0cDovL3d3dy5nb29nbGUuY29tL3JlYWRlci92aWV3LwowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9MSUNFTlNFCjAgMQpodHRwOi8vd2ViYXBwcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNTMyL2lzLXRoZXJlLWEtd2ViLWFwcGxpY2F0aW9uLXRoYXQtY2FuLXJlcGxhY2UtYW4taWRlLWxpa2UtZWNsaXBzZQowIDEzCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL29tZXRhL2Nzcy8KMSAxCmh0dHA6Ly9iaXQubHkvOFo5dGllCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvYmlndGVzdC5odG1sCjEgMTEKaHR0cDovL3d3dy5nb29nbGUubmwvc2VhcmNoCjAgMwpodHRwOi8vdHdpdHRlci5jb20KMCAyCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTYxOTE2Ny90ZXh0YXJlYS10aGF0LWNhbi1kby1zeW50YXgtaGlnaGxpZ2h0aW5nLW9uLXRoZS1mbHkKMCAyMQpodHRwOi8vd3d3LnRlbGVyaWsuY29tL2NvbW11bml0eS9mb3J1bXMvYXNwbmV0LWFqYXgvZWRpdG9yL3VzZS1yYWRlZGl0b3ItYXMteG1sLWVkaXRvci5hc3B4CjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC8KMCAyMApodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2Nzcy9qc2NvbG9ycy5jc3MKMCAxCmh0dHA6Ly9ibG9ncy5ieXRlLWZvcmNlLmNvbS94b3IvYXJjaGl2ZS8yMDA4LzEyLzI0LzI3MTIuYXNweAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L3JvYm90cy50eHQKMSAxCmh0dHA6Ly9yZWRtaW5lLnJ1YnljaGFuLmRlL3Byb2plY3RzL2NvZGVyYXkvd2lraQowIDMKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGxzcWwvanMvCjEgMQpodHRwOi8vd3d3Lmdvb2dsZS5pdC8KMCAyCmh0dHA6Ly93d3cuZ29vZ2xlLmNvLmlkL3NlYXJjaAowIDIKaHR0cDovL3d3dy5nb29nbGUuY29tLnBoL3NlYXJjaAowIDIKaHR0cDovL3NhbmRib3guZWxtby5zdC9icm93c2UvaHZlcmdhcmEKMCAxCmh0dHA6Ly9ibG9ncy5zdWJidS53cy93cC1hZG1pbi9wbHVnaW4taW5zdGFsbC5waHAKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC8KMSAzNDkzCmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5zZy9zZWFyY2gKMCAxCmh0dHA6Ly9zaW1vbndpbGxpc29uLm5ldC90YWdzL2phdmFzY3JpcHQvCjAgMgpodHRwOi8vd3d3LmJpbmcuY29tL3NlYXJjaAowIDMKaHR0cDovL2FybnVtZXJhbC5mci9hcnRpY2xlcy9kcnVwYWwvY29kZW1pcnJvci1sZWRpdGV1ci1kZS1jb250ZW51LXVsdGltZQowIDEKaHR0cDovLzEyNy4wLjAuMS93ZWIvZGVtby81LWFjdHVhbGl0ZS5waHAKMCAxCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjM2NzA5OS9iZXN0LW9ubGluZS1jb2RlLWVkaXRvci13aXRoLWEtdGV4dGFyZWEKMCA2Cmh0dHA6Ly93d3cucmVkZGl0LmNvbS9yL3Byb2dyYW1taW5nL2NvbW1lbnRzLzdiNDh2L29ubGluZV9zeW50YXhfaGlnaGxpZ2h0aW5nLwowIDEKaHR0cDovL3d3dy5nb29nbGUuY29tLnRyL3VybAowIDEKaHR0cDovL2RydXBhbC5vcmcvcHJvamVjdC93eXNpd3lnX2NvZGVtaXJyb3IKMCA1Cmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhc2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMKMCA2Cmh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtYWpheC1hcGlzL2lzc3Vlcy9kZXRhaWwKMCAxCmh0dHA6Ly95YW5kZXgucnUveWFuZHNlYXJjaAowIDEKaHR0cDovL2JpbGxtaWxsLm9yZy9zdGF0aWMvY2FudmFzdHV0b3JpYWwvY29kYS5odG1sCjAgMTAKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvbHVhL2luZGV4Lmh0bWwKMSA5MApodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcGxzcWwvaW5kZXguaHRtbAowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jc3N0ZXN0Lmh0bWwKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldAoxIDMKaHR0cDovLzEyNy4wLjAuMS9jZ2kvc2VhcmNoL2luZGV4LnBsCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcGhwL2luZGV4Lmh0bWwKMCAzCmh0dHA6Ly9tb2R4Y21zLmNvbS9mb3J1bXMvaW5kZXgucGhwL3RvcGljLDUxMTA4Lm1zZzI5NzAxMC5odG1sCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5jby5pbi9zZWFyY2gKMCA1Cmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvCjAgMjcKaHR0cDovL3dlYm9zLWdvb2RpZXMuanAvYXJjaGl2ZXMvNTExNDc4ODEuaHRtbAowIDQKaHR0cDovL3UyZC5jb20vdHVydGxlX2pzL2luZGV4Lmh0bWwKMCAzCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9zcWwvTElDRU5TRQowIDEKaHR0cDovL3d3dy55bWFjcy5vcmcvCjAgMTgKaHR0cDovL2NvZGVtaXJyb3IubmV0L2luZGV4Lmh0bWwKMSA1Cmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS51YS9zZWFyY2gKMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5teC9zZWFyY2gKMCAyCmh0dHA6Ly9kZW1vLnNpbXBsYWNtcy5ydS9hZG1pbi9saWNlbnNlLmh0bWwKMCAxCmh0dHA6Ly93d3cuc2t1bHB0Lm9yZy8KMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmZpL3NlYXJjaAowIDEKaHR0cDovL2RlbGljaW91cy5jb20vcmVjZW50LwowIDEKaHR0cDovL2F1dG9tbmUudGVzdC93ZWIvZGVtby81LWFjdHVhbGl0ZS5waHAKMCAxCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjQwODE2Mi9ob21ld29yay1vbmxpbmUtcHJvZ3JhbW1pbmctZWRpdG9yCjAgMwpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2ODg2NjEvaHRtbC10ZXh0LWFyZWEtZWRpdG9yLWZvci1jb2RlLXRoYXQtdHJhcHMtdGFiLWtleQowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9zcGFycWx0ZXN0Lmh0bWwKMCAxCmh0dHA6Ly93b3JkcHJlc3Mub3JnL2V4dGVuZC9wbHVnaW5zL3Bvd2VyLWNvZGUtZWRpdG9yLwowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2hpZ2hsaWdodC5odG1sCjEgODYKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83NTk5NjEvcmljaC10ZXh0LWlkZQowIDEKaHR0cDovL3d3dy5waHBmcmVha3MuY29tL2ZvcnVtcy9pbmRleC5waHAvdG9waWMsMjYyOTcyLm1zZzEyMzk2MjEuaHRtbAowIDEKaHR0cDovL3RyYWMuc2FnZW1hdGgub3JnL3NhZ2VfdHJhYy90aWNrZXQvNzUwMQowIDEKaHR0cDovL2ZpeGJsb2cucnUvMjAxMC8wNC8xNC/Qv9C+0LTRgdCy0LXRgtC60LAt0YHQuNC90YLQsNC60YHQuNGB0LAvCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsCjAgMzEKaHR0cDovL3d3dy5nb29nbGUuY28uanAvc2VhcmNoCjAgNApodHRwOi8vd3d3Lmdvb2dsZS5odS9zZWFyY2gKMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmJlL3NlYXJjaAowIDIKaHR0cDovL3NjcmFwZXJ3aWtpLmNvbS9hYm91dC8KMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9mYXEuaHRtbAoxIDEyCmh0dHA6Ly9kZXYuY2tlZGl0b3IuY29tL3RpY2tldC8yNTMyCjAgNgpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI4MDk1MTYvY29kZW1pcnJvci1saXZlLXN5bnRheC1oaWdobGlnaHRpbmctZXh0ZW5kLWZvci10YWdzCjAgMQpodHRwOi8vZGVsaWNpb3VzLmNvbS9icm93c2ViYXIvdXNlci90aW1vdGh5YXJtc3Ryb25nCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvZ2l0LwoxIDIKaHR0cDovL3d3dy5uZXR2aWJlcy5jb20vcHJpdmF0ZXBhZ2UvMQowIDEKaHR0cDovL3R3aXR0ZXIuY29tL21hcmlqbmpoCjAgNwpodHRwOi8vd3d3Lmdvb2dsZS5kZS91cmwKMCA3Cmh0dHA6Ly90aW55bWNlLm1veGllY29kZS5jb20vcHVuYmIvdmlld3RvcGljLnBocAowIDEKaHR0cDovL3d3dy5nb29nbGUuYXQvCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvY3NoYXJwL2luZGV4Lmh0bWwKMCAxCmh0dHA6Ly90d2l0dGVyLmNvbS8KMCA1Cmh0dHA6Ly9zaXRlZnVzaW9uLm9yZy9leHRlbnNpb25zCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9jc2hhcnAvaW5kZXguaHRtbAoxIDIzOApodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9vbWV0YS9pbmRleC5odG1sCjEgNzQKaHR0cDovL3d3dy5nb29nbGUubm8vCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9jc2hhcnAvanMvCjEgMwpodHRwOi8vd3d3Lmdvb2dsZS5jby5rci9zZWFyY2gKMCAxCmh0dHA6Ly90d2l0dGVyLmNvbS9tcnRua2wKMCA1Cmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3Ivc3RvcnkuaHRtbAowIDIKaHR0cDovL2ZpZGRsZS5qc2hlbGwubmV0L0ZyYlc4LzMzL3Nob3cvbGlnaHQvCjAgMgpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zY2hlbWUvCjEgNDAKaHR0cDovL3R3aXR0ZXIuY29tL3JhaHVsCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvaHRtbHRlc3QuaHRtbAoxIDg1NQpodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ3d0LWNvZGVtaXJyb3IvCjAgNApodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcHl0aG9uL0xJQ0VOU0UKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy90b2tlbml6ZWphdmFzY3JpcHQuanMKMSAxCmh0dHA6Ly9uZXJkcHJlc3Mub3JnLzIwMTAvMDEvMTgvdGV4dGFyZWEtbWl0LWNvZGUtaGlnaGxpZ2h0aW5nLwowIDMKaHR0cDovL2ZvcnVtcy5mZW5nb2ZmaWNlLmNvbS9pbmRleC5waHAKMCA0Cmh0dHA6Ly9hamF4aWFuLmNvbS9hcmNoaXZlcy9pbXBsZW1lbnRpbmctYS1zeW50YXgtaGlnbGlnaHRpbmctamF2YXNjcmlwdC1lZGl0b3ItaW4tamF2YXNjcmlwdAowIDE3Cmh0dHA6Ly93d3cubW9vbmdpZnQuanAvMjAwOS8xMC9jb2RlbWlycm9yLwowIDQKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jb250cmliL3BocC9MSUNFTlNFCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvbWl4ZWR0ZXN0Lmh0bWwKMSAxMjAwCmh0dHA6Ly93d3cuZ29vZ2xlLmllL3NlYXJjaAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvb21ldGEvCjEgMQpodHRwOi8vdHdpdHRlci5jb20vc2xpbTQwNC9zdGF0dXMvMTc1MDA4MTYwNjgKMCAxCmh0dHA6Ly93d3cuY29kZXJjaHJpcy5jb20vcGhwL2FkdmFuY2VkLXN5bnRheC1oaWxpZ2h0aW5nLW9ubGluZS1jb2RlLWVkaXRvcnMtYS13b3JkcHJlc3MtaWRlLzIwMDgvMDcvMDIKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9zcWwvaW5kZXguaHRtbAowIDEKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzk1ODE5L2NvZGVtaXJyb3ItZ2V0Y29kZS1yZXR1cm5zLWVkaXRvci1pcy1ub3QtZGVmaW5lZAowIDMKaHR0cDovL3d3dy5nb29nbGUuZXMvc2VhcmNoCjAgOQpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE5ODI3MS9pcy10aGVyZS1hLWdvb2QtaW4tYnJvd3Nlci1jb2RlLWVkaXRvcgowIDgKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzM3MTkvaXMtaXQtcG9zc2libGUtdG8tcmVhZC10aGUtY2xpcGJvYXJkLWluLWZpcmVmb3gtc2FmYXJpLWFuZC1jaHJvbWUtdXNpbmctamF2YXNjcmkKMCAyCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL2NzaGFycC8KMSA1Cmh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9jb2RlbWlycm9yCjAgMTMKaHR0cDovL2RvY3MuZ29vZ2xlLmNvbS9hL2x5YWJhaC5jb20vRG9jCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5oci9zZWFyY2gKMCAyCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvaGlnaGxpZ2h0Lmh0bWwKMCAxCmh0dHA6Ly9iZW5ub2xhbmQuY29tLwowIDEKaHR0cDovL3d3dy5nb29nbGUuY28ubnovdXJsCjAgMQpodHRwOi8vbWFuYWdlLmFtYWRlc2EuY29tL3Byb2R1Y3Rpb24vY29kZU1pcnJvci5odG1sCjAgNApodHRwOi8vYmxvZy5xdXBsby5jb20vCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvaW5kZXguaHRtbAoxIDExMzQKaHR0cDovL3d3dy5saW5iLm5ldC8KMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmJnL3NlYXJjaAowIDIKaHR0cDovL2ZvcnVtLmh0bWxib29rLnJ1L2luZGV4LnBocAowIDMKaHR0cDovL2ZpcmVyYWluYm93LmJpbmFyeWFnZS5jb20vCjAgMwpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcHl0aG9uL2luZGV4Lmh0bWwKMCAyCmh0dHA6Ly93d3cuc3R1bWJsZXVwb24uY29tL3JlZmVyLnBocAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L3dlYmFsaXplci91c2FnZV8yMDEwMDguaHRtbAoxIDYKaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2d3dC1jb2RlbWlycm9yLXdpZGdldC8KMCA0Cmh0dHA6Ly93d3cuY29kZW1pcnJvci5jb20vCjEgNwpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvanMvCjEgNApodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zY2hlbWUvanMvCjEgMQpodHRwOi8vZC5oYXRlbmEubmUuanAvdGVyYW1ha28vMjAwODExMjUvcDEKMCA1Cmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY3NzL3NwYXJxbGNvbG9ycy5jc3MKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi9pbmRleC5odG1sCjEgMjM4Cmh0dHA6Ly92cmVtZW5uby5uZXQvanMvdGV4dGFyZWEtc3ludGF4LWhpZ2hsaWdodGluZy8KMCAyCmh0dHA6Ly93d3cuZ29vZ2xlLml0L3NlYXJjaAowIDUKaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzLwoxIDUKaHR0cDovL21ha2V0ZWNoZWFzaWVyLmNvbS81LW9ubGluZS1jb2RlLWVkaXRvcnMvMjAxMC8wMy8zMQowIDEKaHR0cDovL3d3dy55bWFjcy5vcmcvZGV2ZWxkb2NzLmh0bWwKMCAxCmh0dHA6Ly9naXRodWIuY29tL2hha3VuaW4vcnVieS1pbi1jb2RlbWlycm9yCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2Nzcy94bWxjb2xvcnMuY3NzCjAgMQpodHRwOi8vbG9nZW1lbnQtZGlyZWN0L3dlYi9lZGMvODYtYWN0dWFsaXRlcy5waHAKMCAxCmh0dHA6Ly93d3cuZGFzcHJvdmlzb3JpdW0uZGUvZm9ydW0vaW5kZXgucGhwCjAgMwpodHRwOi8vd3d3LmNvZGlnb2JpdC5pbmZvLzIwMTAvMDcvaWRlLWVudG9ybm9zLWRlLWRlc2Fycm9sbG8tb25saW5lLmh0bWwKMCAyCmh0dHA6Ly9naXRodWIuY29tL2Vua2kvQ29kZU1pcnJvci9ibG9iL21hc3Rlci9oaWdobGlnaHQuaHRtbAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0Ly5naXQvCjEgMgpodHRwOi8vYmxvZy5xdXBsby5jb20vMjAxMC8wNi9jc3MtY29kZS1jb21wbGV0aW9uLWluLXlvdXItYnJvd3Nlci8KMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3Bsc3FsL2luZGV4Lmh0bWwKMSAzOApodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYxNjU1L2FyZS10aGVyZS1hbnktamF2YXNjcmlwdC1saXZlLXN5bnRheC1oaWdobGlnaHRlcnMKMCAxCmh0dHA6Ly9lcmNhbi51cy9leHRlbnNpb25zL2NvZGVtaXJyb3IuaHRtbAowIDQKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvc3FsL0xJQ0VOU0UKMSAxCmh0dHA6Ly93d3cuZXllZ2lybC5jby5rci9iYnMvbGluay5waHAKMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLnNpL3NlYXJjaAowIDMKaHR0cDovL3dlZG9pc3QuY29tL3Byb2plY3QvMTA3MS9Jbmthcm5hdGUKMCAyCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjEzNTUzNy93aGF0LWlzLWEtZ29vZC1qYXZhc2NyaXB0LWVkaXRvci1mb3ItZWRpdGluZy1jdXN0b20tZHNsLWNvZGUvMzQyMzcwMAowIDEKaHR0cDovL3d3dy5tanRlbXBsYXRlLm9yZy8KMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jc3MvcGVvcGxlLmpwZwoxIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9taXhlZHRlc3QuaHRtbAowIDM0Cmh0dHA6Ly9mcy5wYWdpbmFzd3d3LmNvbS9yZGJhZG1pbi9tYWluLmh0bWwKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvaHRtbHRlc3QuaHRtbAowIDIyCmh0dHA6Ly90cmFuc2xhdGUuZ29vZ2xldXNlcmNvbnRlbnQuY29tL3RyYW5zbGF0ZV9jCjAgMjAKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDE5MDU2L2hvdy10by1mb3JtYXQtY29udGVudC1pbi1odG1sLXRleHRhcmVhLWFzLXhtbC1vbi10aGUtZmx5CjAgNQpodHRwOi8vd3d3LmJhaWR1LmNvbQowIDIKaHR0cDovL3Zjb21tLm5vLWlwLm9yZzoxMDAvYWFwU2VydmljZVJlcXVlc3QuaHRtbAowIDcKaHR0cDovL2RydXBhbC5vcmcvbm9kZS8yNzQ0MzEKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9wbHNxbC9MSUNFTlNFCjAgMQpodHRwOi8vZW4ubS53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMKMCAxCmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMKMCA4MApodHRwOi8vd3d3Lmdvb2dsZS5ubC91cmwKMCAzCmh0dHA6Ly93d3cuYml0cmVwb3NpdG9yeS5jb20vc3ludGF4LWhpZ2hsaWdodGVycy5odG1sCjAgNgpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2luZGV4Lmh0bWwKMCA2Cmh0dHA6Ly9ncm9vdnljb25zb2xlLmFwcHNwb3QuY29tLwowIDIKaHR0cDovL3plZi5tZS8xMzUwL3N5bnRheC1oaWdobGlnaHRpbmctZWRpdG9yLXdpdGhpbi1icm93c2VyCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5mci91cmwKMCAxCmh0dHA6Ly9jb3NpZXIud29yZHByZXNzLmNvbS8yMDA4LzAxLzA5L2luc2VydGluZy1odG1sLWF0LXRoZS1jdXJyZW50LWN1cnNvci1wb3NpdGlvbi1pbi1hbi1lZGl0YWJsZS1pZnJhbWUtZGVzaWdubW9kZS1vbi8KMCAyCmh0dHA6Ly9maW5ucnVkb2xwaC5kZS9TaG91dGJveC9BcmNoaXYvMjAxMAowIDEKaHR0cDovL2FiZWF1dGlmdWxzaXRlLm5ldC9ibG9nLzIwMTAvMDQvc3VycmVhbC1jbXMtZ2V0cy1nb29nbGUtYW5hbHl0aWNzLXN5bnRheC1oaWdobGlnaHRpbmcvCjAgMQpodHRwOi8vY29kZW1pcnJvci5jb20vCjEgNQpodHRwOi8vZ3BwY29uc29sZS5hcHBzcG90LmNvbS8KMCAxCmh0dHA6Ly9kZXYuMWMtYml0cml4LnJ1L2NvbW11bml0eS93ZWJkZXYvdXNlci80NzE2MS9ibG9nLzEzODQvCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5say9zZWFyY2gKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC93ZWJhbGl6ZXIvCjEgMwpodHRwOi8vY29kZW1pcnJvci5uZXQvY29tcHJlc3MuaHRtbAoxIDgKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvCjEgMjIKaHR0cDovL3d3dy5nb29nbGUuZnIvc2VhcmNoCjAgMwpodHRwOi8vd3d3LmJhc3RpYW4ubmFtZS8yMDA5LzEyL29ubGluZS1xdWVsbC1jb2RlLWVkaXRvci1mdXItcGhwLWNzcy1qYXZhc2NyaXB0Lmh0bWwKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9ncm9vdnkvaW5kZXguaHRtbAowIDEKaHR0cDovL2FybnVtZXJhbC5mci8KMCAyCmh0dHA6Ly92YWFkaW4uY29tL2RpcmVjdG9yeQowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvc3FsL2luZGV4Lmh0bWwKMSAyOTMKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNzkxODUvZnJlZS1zeW50YXgtaGlnaGxpZ2h0aW5nLWVkaXRvci1jb250cm9sLWluLWphdmFzY3JpcHQKMCA5Cmh0dHA6Ly93d3cuZ29vZ2xlLmNhL3NlYXJjaAowIDEwCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9sdWEvTElDRU5TRQowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvZ3Jvb3Z5L2luZGV4Lmh0bWwKMSA5MApodHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvNjAyCjAgNQpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1MTMxNTMvamF2YXNjcmlwdC1xdWlja2x5LWluc2VydC10ZXh0LWludG8tbG9uZy10ZXh0YXJlYQowIDMKaHR0cDovL3d3dy5yb2NrZXR0aGVtZS5jb20vZXh0ZW5zaW9ucy1qb29tbGEvcm9rcGFkCjAgMgpodHRwOi8vd3d3Lmdvb2dsZS5jb20udHcvc2VhcmNoCjAgMgpodHRwOi8vd3d3LmxpcmFudW5hLmNvbS8KMCAzCmh0dHA6Ly9rdXJhcG92Lm5hbWUvdGVjaG5vbG9neS91aS9qcy9qc19jb2RlX2VkaXRvcnMvCjAgMQpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyMjY1ODQvcmFpbHMtYnJvd3Nlci1zeW50YXgtaGlnaGxpZ2h0aW5nLXBsdWdpbgowIDIKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNzgyMDUvd2ViLXhtbC1lZGl0b3Itd2l0aC14bWwtc3ludGF4LWhpZ2hsaWdodGluZwowIDI4Cmh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvcgowIDEwCmh0dHA6Ly9kZWxpY2lvdXMuY29tL3NlYXJjaAowIDEKaHR0cDovL3d3dy5nb29nbGUuaXQvdXJsCjAgMgpodHRwOi8vaWNvbmZhY3RvcnkuY29tL3R3aXR0ZXJyaWZpYy8KMCAxCiMgRW5kIE9mIFRhYmxlIC0gcmVmZXJyZXJzCiMgLWFnZW50cy0gCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBFKQowIDUKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYKMCAzMQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC80LjA7IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IFNWMQowIDE3Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS8xMC4wNCAobHVjaWQpIEZpcmVmb3gvMy42LjgKMCAxMzQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAzMQpTYWZhcmkvNjUzMy4xNy44IENGTmV0d29yay80NTQuOS43IERhcndpbi8xMC40LjAgKGkzODYpIChNYWNCb29rUHJvMyUyQzEpCjAgNwpVc2VyLUFnZW50OiBEcnVwYWwgKCtodHRwOi8vZHJ1cGFsLm9yZy8pCjAgMgpQeXRob24tdXJsbGliLzIuNAowIDEKUHl0aG9uLXVybGxpYi8yLjUKMCAxClB5dGhvbi11cmxsaWIvMi42CjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGV0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7KQowIDMyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOS4xLjExKSBHZWNrby8yMDEwMDcwMSBGaXJlZm94LzMuNS4xMSAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEMpCjAgMjYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxOyBZUEMgMy4wLjA7IC5ORVQgQ0xSIDEuMC4zNzA1OyAuTkVUIENMUiAxLjEuNDMyMjsgTWVkaWEgQ2VudGVyIFBDIDQuMDsKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA2MApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBGaXJlZm94LzMuNi4zCjAgMTUKUG9zdFJhbmsvMi4wIChwb3N0cmFuay5jb207IDEgc3Vic2NyaWJlcnMpCjAgMgpPcGVyYS85LjgwIChXaW5kb3dzIE5UIDYuMTsgVTsgcGwpIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDI4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4wLjE5KSBHZWNrby8yMDEwMDMxNDIyIEZpcmVmb3gvMy4wLjE5ICggLk5FVCBDTFIgMy4wLjQ1MDYuMjE1MikKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjI7ICBTTENDMTsgIC5ORVQgQ0xSIDEuMS40MzI1OyAgLk5FVCBDTFIgMi4wLjUwNzI3OyAgLk5FVCBDTFIgMy4wLjMwNzI5KQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIG9yIEZpcmVmb3ggbXV0YW50OyBub3Qgb24gV2luZG93cyBzZXJ2ZXI7ICtodHRwOi8vd3MuZGF1bS5uZXQvYWJvdXRXZWJTZWFyY2guaHRtbCkgRGF1bW9hLzIuMAowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMwLjUgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMi4wLjE3Mi4zMSBTYWZhcmkvNTMwLjUKMCA0CkJhaWR1c3BpZGVyKygraHR0cDovL3d3dy5iYWlkdS5qcC9zcGlkZXIvKQowIDM5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuNzAgU2FmYXJpLzUzMy40CjAgMTA5Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tZ2IpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBBbnQuY29tIFRvb2xiYXIgMi4wLjEgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNQowIDg5Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4wOyBVOyBkZSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNgpNb3ppbGxhLzUuMCAoWDExOyBMaW51eCBpNjg2ICh4ODZfNjQpOyBydjoyLjBiMikgR2Vja28vMjAxMDA3MjAgRmlyZWZveC80LjBiMgowIDE5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTOyBydjoxLjkuMi43KSBHZWNrby8yMDEwMDcyMyBGZWRvcmEvMy42LjctMS5mYzEzIEZpcmVmb3gvMy42LjcKMCA1Cmx3cC10cml2aWFsLzUuODEwCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi40KSBHZWNrby8yMDEwMDYxMSBGaXJlZm94LzMuNi40CjAgMjAKT3BlcmEvOS44MCAoWDExOyBMaW51eCB4ODZfNjQ7IFU7IGVuKSBQcmVzdG8vMi42LjMwIFZlcnNpb24vMTAuNjAKMCA0ClNvZ291IHdlYiBzcGlkZXIvNC4wKCtodHRwOi8vd3d3LnNvZ291LmNvbS9kb2NzL2hlbHAvd2VibWFzdGVycy5odG0jMDcpCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMTIKQml6MzYwIHNwaWRlciAoYmxvZ3NtYW5hZ2VyQGJpejM2MC5jb207IGh0dHA6Ly93d3cuYml6MzYwLmNvbSkKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IHJ1OyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDMzMCBGZWRvcmEvMy41LjktMS5mYzExIEZpcmVmb3gvMy41LjkKMCAzMAppYV9hcmNoaXZlciAoK2h0dHA6Ly93d3cuYWxleGEuY29tL3NpdGUvaGVscC93ZWJtYXN0ZXJzOyBjcmF3bGVyQGFsZXhhLmNvbSkKMCAyCldnZXQvMS45K2N2cy1zdGFibGUgKFJlZCBIYXQgbW9kaWZpZWQpCjAgMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgU0ZJRUFVVEgxOyBNUy1SVEMgTE0gOCkKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgemgtVFc7IHJ2OjEuOS4yLjlwcmUpIEdlY2tvLzIwMTAwODA1IE5hbW9yb2thLzMuNi45cHJlCjAgMTgKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEdvb2dsZSBEZXNrdG9wLzUuOS4xMDA1LjEyMzM1OyBodHRwOi8vZGVza3RvcC5nb29nbGUuY29tLykKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44IFViaXF1aXR5LzAuMS40CjAgNQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMC4xOSkgR2Vja28vMjAxMDA2MjUxMCBJY2V3ZWFzZWwvMy4wLjYgKERlYmlhbi0zLjAuNi0zKQowIDQKTW96aWxsYS80LjA4IFtlbl0gKFdpbk5UOyBVKQowIDEKTW96aWxsYS81LjAgKGlQYWQ7IFU7IENQVSBPUyAzXzIgbGlrZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMS4yMS4xMCAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS83QjM2NyBTYWZhcmkvNTI4LjE2IE4KMCAzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgcHQtQlI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMjQKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IFlhbmRleEJvdC8zLjA7ICtodHRwOi8veWFuZGV4LmNvbS9ib3RzKQowIDMwCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxMzUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBpdDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAzNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA1LjA7IFdpbmRvd3MgOTg7IERpZ0V4dCkKMCA2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAzNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGZyOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEZpcmVUb3JyZW50LzIuMC4xICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1HQjsgcnY6MS45LjEuMTApIEdlY2tvLzIwMTAwNjIzIEljZXdlYXNlbC8zLjUuMTAgKGxpa2UgRmlyZWZveC8zLjUuMTApCjAgNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGphOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjExIEZpcmVmb3gvMy42LjQKMCAzMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNApBcHBFbmdpbmUtR29vZ2xlOyAoK2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBwZW5naW5lOyBhcHBpZDogbGlua3NhbHBoYSkKMCAxCnlhY3lib3QgKGkzODYgTGludXggMi42LjMyLTI0LWdlbmVyaWMtcGFlOyBqYXZhIDEuNi4wXzE4OyBFdXJvcGUvZXMpIGh0dHA6Ly95YWN5Lm5ldC9ib3QuaHRtbAowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBuYi1OTzsgcnY6MS44LjEuMjApIEdlY2tvLzIwMDgxMjE3IEZpcmVmb3gvMi4wLjAuMjAKMCAxNQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy40CjAgNDAzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOC4xLjIwKSBHZWNrby8yMDA4MTIxNyBGaXJlZm94LzIuMC4wLjIwCjAgMTYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjApLGd6aXAoZ2ZlKSAodmlhIHRyYW5zbGF0ZS5nb29nbGUuY29tKQowIDMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS45OSBTYWZhcmkvNTMzLjQKMCA4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkgRmlyZVBIUC8wLjQKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGRlOyBydjoxLjkuMC4xOSkgR2Vja28vMjAxMDAzMTQyMiBGaXJlZm94LzMuMC4xOQowIDE1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZGU7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0NgpNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfMF8xIGxpa2UgTWFjIE9TIFg7IGRlLWRlKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS84QTMwNgowIDMKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjgKMCAxMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4wIFNhZmFyaS81MzQuMwowIDI3CkphdmEvMS42LjBfMTgKMCAxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuCjAgMjQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNF8xMTsgZW4pIEFwcGxlV2ViS2l0LzUzMy4xNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4xIFNhZmFyaS81MzMuMTYKMCAzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsga287IHJ2OjEuOS4yLjcpIEdlY2tvLzIwMTAwNzEzIEZpcmVmb3gvMy42LjcKMCAxOApQeWNVUkwvNy4xOS41CjAgMwpCYWlkdXNwaWRlcisoK2h0dHA6Ly93d3cuYmFpZHUuY29tL3NlYXJjaC9zcGlkZXIuaHRtKQowIDE0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODcuMCBTYWZhcmkvNTM0LjUKMCAxMDAKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMTsgVHJpZGVudC80LjApCjAgNjAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjAuMTApIEdlY2tvLzIwMDkwNDIzMTYgRmlyZWZveC8zLjAuMTAKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVM7IHJ2OjEuOS4xLjYpIEdlY2tvLzIwMDkxMjAxIEZpcmVmb3gvMy41LjYKMCA1MApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC80LjA7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVCBDTAowIDE2NQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IG5sOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDI2Ck1vemlsbGEvNS4wIChpUGFkOyBVOyBDUFUgT1MgM18yIGxpa2UgTWFjIE9TIFg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzEuMjEuMTAgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvN0IzNjcKMCAzCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLVVTOyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDMxNSBGaXJlZm94LzMuNS45CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgOQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ1MS4wIFNhZmFyaS81MzQuMgowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE2IChLSFRNTCwgbGlrZSBHZWNrbykgU2FmYXJpCjAgMjIKSmF4aWZpZWQgQ3Jhd2xlciAoK2h0dHA6Ly93d3cuamF4aWZpZWQuY29tLykKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgcnU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIE1SQSA1LjYgKGJ1aWxkIDAzMjc4KSBGaXJlZm94LzMuNi44IEdUQjcuMQowIDIzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuNTUgU2FmYXJpLzUzMy40CjAgMjgKTW96aWxsYS81LjAgKGlQaG9uZTsgVTsgQ1BVIGlQaG9uZSBPUyA0XzBfMSBsaWtlIE1hYyBPUyBYOyBlbi11cykgQXBwbGVXZWJLaXQvNTMyLjkgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvOEEzMDYKMCAzCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBydSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHpoLVRXOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDE2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMjUgU2FmYXJpLzUzNC4zCjAgMjIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIzCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMzMKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxOyBHVEI2LjU7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTIKMCAxMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHBsOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNiAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEMpCjAgMTQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxOyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuNDUwNi4yMTUyOyAuTkVUIEMKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggR1RCNy4xCjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVzLUFSOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDE4Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsga28ta3IpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNzEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4zOCBTYWZhcmkvNTMzLjQgQ2hyb21lUGwKMCAyNApNb3ppbGxhLzUuMCAoV2luZG93czsgV2luZG93cyBOVCA1LjE7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBGaXJlZm94LzQuMGIyCjAgMjEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIpIEdlY2tvLzIwMTAwMTE5IE5hbW9yb2thLzMuNgowIDE4Cm5vb3BzaXMgU3BpZGVyL051dGNoLTEuMSAobm9vcHNpcyBjcmF3bGVyKQowIDIKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEZpcmVmb3ggY29tcGF0aWJsZTsgTVMgSUUgY29tcGF0aWJsZTsgbm90IG9uIFdpbmRvd3Mgc2VydmVyOyAraHR0cDovL2NzLmRhdW0ubmV0L2ZhcS9zaXRlLzE1Lmh0bWwpIEQKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjE7IEdUQjU7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgCjAgMTIxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA2LjA7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4zMDYxODsgLk5FVCBDTFIgMy41LjMwNzI5OyBJbmZvUGF0CjAgNQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuLXVzKQowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAyMzkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBTaGlyZXRva28vMy4xCjAgMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42CjAgNzgKQXBwRW5naW5lLUdvb2dsZTsgKCtodHRwOi8vY29kZS5nb29nbGUuY29tL2FwcGVuZ2luZTsgYXBwaWQ6IGNsb3N1cmUtY29tcGlsZXIpCjAgMTQ4ClZveWFnZXIvMS4wCjAgMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4wKQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjYKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA2NwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGZyLWJlKSBBcHBsZVdlYktpdC81MzEuMisgKEtIVE1MLCBsaWtlIEdlY2tvKSBTYWZhcmkvNTMxLjIrIERlYmlhbi9zcXVlZXplICgyLjMwLjItMykgRXBpcAowIDIwCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNDUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjQgRmlyZWZveC8zLjYKMCAyNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEdUQjcuMQowIDE4Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDc4LjAgU2FmYXJpLzUzNC40CjAgNTYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS8xMC4wNCAobHVjaWQpIEZpcmVmb3gvMy42LjgKMCAyMzYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIDk4KQowIDEyCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNS4xOyBVOyBwbCkgUHJlc3RvLzIuNS4yNCBWZXJzaW9uLzEwLjU0CjAgNTIKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMSkKMCAxMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMzQyCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBrbWt5LW5vdC1hLWJvdC8wLjI7IGh0dHA6Ly93d3cua2lsb21vbmtleS5jb20vbm90YWJvdC50eHQgKQowIDgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS43MCBTYWZhcmkvNTMzLjQKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZXMtRVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4yIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NDcuMCBTYWZhcmkvNTM0LjIKMCA1Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGVuLVVTOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42CjAgMjEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEMpCjAgMjIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy40CjAgNjE5Ckpha2FydGEgQ29tbW9ucy1IdHRwQ2xpZW50LzMuMQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlcy1FUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBBc2tUYk1ZQy8zLjguMC4xMjMwNCBGaXJlZm94LzMuNi44CjAgNApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgc2VleGllLmNvbV9ib3QvNC4xOyAraHR0cDovL3d3dy5zZWV4aWUuY29tKQowIDEKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuNzAgU2FmYXJpLzUzMy40CjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuMiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzQyLjkgU2FmYXJpLzUzMy4yIENocm9tZVBsdQowIDIxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyBNYXRoUGxheWVyIDIuMTBiOyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUCjAgMjIKRGFsdmlrLzEuMS4wIChMaW51eDsgVTsgQW5kcm9pZCAyLjEtdXBkYXRlMTsgSFRDIEhlcm8gQnVpbGQvRVJFMjcpCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wQykKMCA1Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNS4xOyBVOyBydSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMzMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHb29nbGVib3QgMi4xIEZpcmVmb3gvMy4wLjcgKCAuTkVUIEMKMCAxNgpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGZyOyBydjoxLjkuMi4yKSBHZWNrby8yMDEwMDMxNiBGaXJlZm94LzMuNi4yIEdUQjcuMQowIDQKeWFjeWJvdCAoYW1kNjQgTGludXggMi42LjE4LTE5NC4zLjEuZWw1OyBqYXZhIDEuNi4wXzE0OyBFdXJvcGUvZGUpIGh0dHA6Ly95YWN5Lm5ldC9ib3QuaHRtbAowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBlbi1HQjsgcnY6MS45LjIuMykgR2Vja28vMjAxMDA0MDEgRmlyZWZveC8zLjYuMwowIDIwCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMzsgZnItZnIpIEFwcGxlV2ViS2l0LzUzMS4yMi43IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAuNSBTYWZhcmkvNTMxLjIyCjAgMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzIuOCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80LjAuMzAyLjMgU2FmYXJpLzUzMi44CjAgNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEZpcmVQSFAvMC40CjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBuYi1OTzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDgKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4wIFNhZmFyaS81MzQuMwowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDE1Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQ7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAyLjAuNTA3Mjc7IFNMQ0MyOyAuTkVUIENMUiAzLjUuMzA3Mjk7IC5OCjAgMwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzM7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNwowIDE1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxMjgKRWNob2ZvbjEuMS4xIENGTmV0d29yay80MzguMTQgRGFyd2luLzkuOC4wIChpMzg2KSAoTWFjQm9vazIlMkMxKQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlcy1FUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEUpCjAgMjEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBydTsgcnY6MS44LjAuMTApIEdlY2tvLzIwMDcwMjE2IEZpcmVmb3gvMS41LjAuMTAKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMTQgU2FmYXJpLzUzNC4zCjAgNDYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgcnU7IHJ2OjEuOS4yLjlwcmUpIEdlY2tvLzIwMTAwODA2IFVidW50dS8xMC4wNCAobHVjaWQpIE5hbW9yb2thLzMuNi45cHJlCjAgMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVzLUVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvOS4xMCAoa2FybWljKSBGaXJlZm94LzMuNi44CjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEUpCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAxLjEuNDMxMSkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA2LjA7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IEluZm9QYXRoLjI7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAzLjUuMzA3CjAgMgpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjIyIFNhZmFyaS81MzQuMwowIDkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0NwpBcHBFbmdpbmUtR29vZ2xlOyAoK2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBwZW5naW5lOyBhcHBpZDogd2VidXNhZGxwNSkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjI7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgQ0xSIDMuCjAgNApNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfMF8xIGxpa2UgTWFjIE9TIFg7IG5sLW5sKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgTW9iaWxlLwowIDE1Cmhpc3RvcmlvdXMgYnJvd3NlcgowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS45OSBTYWZhcmkvNTMzLjQKMCAyMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA0LjAxOyBEaWdpdGFsIEFscGhhU2VydmVyIDEwMDBBIDQvMjMzOyBXaW5kb3dzIE5UOyBQb3dlcmVkIEJ5IDY0LUJpdCBBbHBoYSBQcm9jZXNzb3IpCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEdUQjcuMQowIDM4Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4wOyBVOyBlbi1HQikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCxnemlwKGdmZSkgKHZpYSB0cmFuc2xhdGUuZ29vZ2xlLmNvbSkKMCAxCkh1YXdlaVN5bWFudGVjIHNwaWRlciAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IHdhbmdkYW5mZW5nQGh1YXdlaXN5bWFudGVjLmNvbSkKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMjsgZW4tVVM7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDc4Ck1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCAyLjEtdXBkYXRlMTsgbmwtbmw7IEhUQyBIZXJvIEJ1aWxkL0VSRTI3KSBBcHBsZVdlYktpdC81MzAuMTcgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBNCjAgNApNb3ppbGxhLzUuMCAoaVBhZDsgVTsgQ1BVIE9TIDNfMiBsaWtlIE1hYyBPUyBYOyBlbi11cykgQXBwbGVXZWJLaXQvNTMxLjIxLjEwIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAuNCBNb2JpbGUvN0IzNjcgUwowIDIxCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIDkuMDsgV2luZG93cyBOVCA2LjE7IFdPVzY0OyBUcmlkZW50LzUuMCkKMCAxMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMS43KSBHZWNrby8yMDA5MTIyMSBGaXJlZm94LzMuNS43IE9uZVJpb3QvMS4wIChodHRwOi8vd3d3Lm9uZXJpb3QuY29tKQowIDYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjAuMikgR2Vja28vMjAwODA5MDUxNCBGaXJlZm94LzMuMC4yCjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzM7IGVzLWVzKSBBcHBsZVdlYktpdC81MzEuMjEuMTEgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC40IFNhZmFyaS81MzEuMgowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjEuNykgR2Vja28vMjAwOTEyMjEgRmlyZWZveC8zLjUuNwowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyB6aC1UVzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl8zOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS45OSBTYWZhcmkvNTMzLjQKMCA0Cm1zbmJvdC1tZWRpYS8xLjEgKCtodHRwOi8vc2VhcmNoLm1zbi5jb20vbXNuYm90Lmh0bSkKMCA1MgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGNzOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjE7IC5ORVQgQ0xSIDIuMC41MDcyNykKMCA2OApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCAxMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBGaXJlUEhQLzAuNAowIDY5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFNVU0UvMy42LjgtMC4xLjEgRmlyZWZveC8zLjYuOAowIDI0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgamE7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAzMjAKT3BlcmEvOS44MCAoWDExOyBMaW51eCBpNjg2OyBVOyBlbikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMjkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBydS1SVTsgcnY6MS45LjEuMykgR2Vja28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMyAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4yMiBTYWZhcmkvNTM0LjMKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGl0OyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNiBTVVNFLzMuNi42LTEuMiBGaXJlZm94LzMuNi42CjAgMjUKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMjsgLk5FVCBDTFIgMS4xLjQzMjIpCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF81Xzg7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjIyIFNhZmFyaS81MzQuMwowIDI5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZmktRkk7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS8xMC4wNCAobHVjaWQpIEZpcmVmb3gvMy42LjgKMCAyNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjI7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDEKYnV6enp5LmNvbQowIDU4Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvOS4xMCAoa2FybWljKSBGaXJlZm94LzMuNi44CjAgNjMKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4wNDUwNi4zMDsKMCAzMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQKMCA5OApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IG5sOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KSBGaXJlUEhQLzAuNAowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxOQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4yMiBTYWZhcmkvNTM0LjMKMCAyNwpFY2hvZm9uLzEuMS4xIENGTmV0d29yay80NTQuOS43IERhcndpbi8xMC40LjAgKGkzODYpIChNYWNCb29rUHJvNiUyQzIpCjAgMQpNb3ppbGxhLzUuMAowIDM2Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMi45IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zMDcuMTEgU2FmYXJpLzUzMi45CjAgMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAxLjAuMykKMCA1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxOQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNS4xOyBUcmlkZW50LzQuMCkKMCA3Ck1vemlsbGEvNS4wIChYMTE7IExpbnV4IGk2ODY7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBTVVNFLzQuMGItNi4yIEZpcmVmb3gvNC4wYjIKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODYuMCBTYWZhcmkvNTM0LjUKMCAxNApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4yOyBXT1c2NDsgU1YxOyAuTkVUIENMUiAyLjAuNTA3MjcpCjAgMQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2ICh4ODZfNjQpOyBlbi1VUzsgcnY6MS45LjEuMTApIEdlY2tvLzIwMTAwNTA2IFNVU0UvMy41LjEwLTAuNC4xIEZpcmVmb3gvMy41LjEwCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDMxNSBGaXJlZm94LzMuNS45ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjcKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjgKMCAxMjcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHB0LUJSOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjUgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ4Ny4wIFNhZmFyaS81MzQuNQowIDIwCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBHb29nbGVib3QvMi4xOyAraHR0cDovL3d3dy5nb29nbGUuY29tL2JvdC5odG1sKQowIDIyOApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA0LjAxOyBXaW5kb3dzIE5UOyBNUyBTZWFyY2ggNS4wIFJvYm90KQowIDEKTGlua1BhcnNlci8yLjAKMCAxMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBJbmZvUGF0aC4xOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDEuMS40MzIyOyBNUy1SVEMgTE0gODsgLk5FVCBDTFIgMwowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBZRkYzNSBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgOApPcGVyYS85LjgwIChXaW5kb3dzIE5UIDUuMTsgVTsgcGwpIFByZXN0by8yLjYuMzEgVmVyc2lvbi8xMC43MAowIDkwCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjE7IFRyaWRlbnQvNC4wOyBHVEI2LjU7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVCBDCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IG5sOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBGaXJlZm94LzMuNi4zCjAgNgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgNDQKTGluZ3VlZSBCb3QgKGh0dHA6Ly93d3cubGluZ3VlZS5jb20vYm90OyBib3RAbGluZ3VlZS5jb20pCjAgNjMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi11cykgQXBwbGVXZWJLaXQvNTMwLjE5LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC4yIFNhZmFyaS81MzAuMTkKMCA0NQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IHJ1OyBydjoxLjkuMC4xMSkgR2Vja28vMjAwOTA2MDIxNSBGaXJlZm94LzMuMC4xMSAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDUKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlcy1lcykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCA1NApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCA1Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjEpCjAgMTQxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLUdCOyBydjoxLjkuMC4xOCkgR2Vja28vMjAxMDAyMDIxOSBGaXJlZm94LzMuMC4xOAowIDUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUzsgcnY6MS45LjIuNCkgR2Vja28vMjAxMDA2MTEgU1VTRS8zLjYuNC02LjEgRmlyZWZveC8zLjYuNCBHVEI3LjEKMCA2NQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDY2LjAgU2FmYXJpLzUzNC4zCjAgMTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBwdC1CUjsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgMQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDE4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgcnU7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMKMCA0NwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBydjoyLjBiNHByZSkgR2Vja28vMjAxMDA4MDUgTWluZWZpZWxkLzQuMGI0cHJlCjAgMjUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBubDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHVEI3LjAgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMTkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuNykgR2Vja28vMjAxMDA3MTMgRmlyZWZveC8zLjYuNwowIDE4Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IFNWMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNykKMCA5Ck1vemlsbGEvNS4wIChpUGhvbmU7IFU7IENQVSBpUGhvbmUgT1MgM18xXzMgbGlrZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUyOC4xOCAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS83RTE4CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjEuOSkgR2Vja28vMjAxMDA0MDEgVWJ1bnR1LzkuMTAgKGthcm1pYykgRmlyZWZveC8zLjUuOQowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IEdUQjYuNTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuMDQ1MDYuNjQ4OyAuTkVUIENMUiAKMCAxMjMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBGaXJlUEhQLzAuNAowIDUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggR1RCNy4xCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA1LjU7IFdpbmRvd3MgOTUpCjAgMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMS4xMSkgR2Vja28vMjAxMDA3MTQgU1VTRS8zLjUuMTEtMC4xLjEgRmlyZWZveC8zLjUuMTEKMCA0MApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51IHggaTY4NjsgZW4tVVM7IHJ2OjEuOS4xLjYpIEdlY2tvLzIwMDkxMjE2IEljZXdlYXNlbC8zLjUuNiAobGlrZSBGaXJlZm94LzMuNS42OyBEZWJpYW4tMy41LjYtMSkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IFNWMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyOCkKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjI7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjI0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgNTkyCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBkZSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBpdDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDg1Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjE7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMS4xLjQzMjI7IEluZm9QYXRoLjEpCjAgMTQKTW96aWxsYS80LjcgKGNvbXBhdGlibGU7IE9mZkJ5T25lOyBXaW5kb3dzIDIwMDApIFdlYnN0ZXIgUHJvIFYzLjQKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3MjkpIENvbGRGaXJlLzEuNS4yCjAgMzYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDI0NQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjE0IFNhZmFyaS81MzQuMwowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgYWJieS8xLjA7ICtodHRwOi8vd3d3LmVsbGVyZGFsZS5jb20vY3Jhd2xlci5odG1sKQowIDYKTW96aWxsYS80Ljc2IFtydV0gKFgxMTsgVTsgU3VuT1MgNS43IHN1bjR1KQowIDYKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCA2CldvcmRQcmVzcy8zLjAuMTsgaHR0cDovL3R1dHM5LmNvbQowIDMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yKSBHZWNrby8yMDEwMDExNSBGaXJlZm94LzMuNiBmbGlwYm9hcmQuY29tL2NyYXdsZXIKMCAzCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGtvLUtSOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMjEKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjIyIEZlZG9yYS8zLjYuNC0xLmZjMTMgRmlyZWZveC8zLjYuNAowIDE0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGl0OyBydjoxLjkuMS4xMSkgR2Vja28vMjAxMDA3MDEgRmlyZWZveC8zLjUuMTEgR1RCNy4xCjAgNgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBGdW5XZWJQcm9kdWN0czsgLk5FVCBDTFIgMi4wLjUwNzI3OyBJRU1CMzsgSW5mb1BhdGguMTsgLk5FVCBDTFIgMy4wLjA0NTA2LgowIDEKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMTQgU2FmYXJpLzUzNC4zCjAgMjUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDE2Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuNSAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDg1LjAgU2FmYXJpLzUzNC41CjAgNApUd2l0dGVyYm90LzAuMQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjEuOCkgR2Vja28vMjAxMDAyMDIgRmlyZWZveC8zLjAuMTQgWUIvMy41LjEgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgOQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IE1TLU9DIDQuMC43MzQxLjA1MDgKMCA1CkxpbmtTYXZlci8yLjAKMCAxNQpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgS29ucXVlcm9yLzQuNDsgTGludXgpIEtIVE1MLzQuNC40IChsaWtlIEdlY2tvKSBTVVNFCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wQykKMCA0NQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNS4wOyBEaWdFeHQ7IC5ORVQgQ0xSIDEuMS40MzIyKQowIDcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgQW50LmNvbSBUb29sYmFyIDIuMC4xIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUKMCA1MwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGRlOyBydjoxLjkuMi43KSBHZWNrby8yMDEwMDcxMyBGaXJlZm94LzMuNi43ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDE0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuCjAgOApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyNCBGaXJlZm94LzMuNi44CjAgNTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjAuMTkpIEdlY2tvLzIwMTAwMzE0MjIgRmlyZWZveC8zLjAuMTkKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBDKQowIDQKYml0bHlib3QKMCAyCldnZXQvMS4xMC4yCjAgMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi4yKSBHZWNrby8yMDEwMDMxNiBGaXJlZm94LzMuNi4yICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNgpmaW5kbGlua3MvMS4xLjYtYmV0YTEgKCtodHRwOi8vd29ydHNjaGF0ei51bmktbGVpcHppZy5kZS9maW5kbGlua3MvKQowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgaXQ7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgcnU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0MQpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgU2NvdXRKZXQ7ICtodHRwOi8vd3d3LnNjb3V0amV0LmNvbS8pCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IHJ1OyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBNUkEgNS42IChidWlsZCAwMzI3OCkgRmlyZWZveC8zLjYuMwowIDE4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMzgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEUpCjAgMzgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDY4Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgQ0xSIDMuNS4zMDcyCjAgNjgKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgVHJpZGVudC80LjA7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4yMTAyMjsgLk5FVCBDTFIgMy41LjMKMCAxNApNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfMF8xIGxpa2UgTWFjIE9TIFg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgTW9iaWxlLwowIDEzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBXaW5kb3dzIE5UIDYuMTsgV09XNjQ7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBGaXJlZm94LzQuMGIyCjAgNDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjAuNykgR2Vja28vMjAwOTAyMTkxMCBGaXJlZm94LzMuMC43ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF81Xzg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNwowIDQ1Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgNDkKUnVieS8xLjguNwowIDIKV2dldC8xLjEwLjIgKFJlZCBIYXQgbW9kaWZpZWQpCjAgMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjIyIFNhZmFyaS81MzQuMwowIDY5Ck9wZXJhLzkuODAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFg7IFU7IGRlKSBQcmVzdG8vMi4yLjE1IFZlcnNpb24vMTAuMTAKMCA4MQpnaXQvMS43LjEKMCAxMzAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuMDQKMCA4CmdpdC8xLjcuMgowIDUzCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVzLUVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBjczsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDM5CnlhY3lib3QgKGFtZDY0IExpbnV4IDIuNi4yNi0yLWFtZDY0OyBqYXZhIDEuNi4wXzA7IEV1cm9wZS9lbikgaHR0cDovL3lhY3kubmV0L2JvdC5odG1sCjAgMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBUcmlkZW50LzQuMDsgV2ViTW9uZXkgQWR2aXNvcjsgTVJTUFVUTklLIDIsIDMsIDAsIDEwNDsgTVJBIDUuNiAoYnVpbGQgMDM0MAowIDI2Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBCdXR0ZXJmbHkvMS4wOyAraHR0cDovL2xhYnMudG9wc3kuY29tL2J1dHRlcmZseS8pIEdlY2tvLzIwMDkwMzI2MDggRmlyZWZveC8zLjAuOAowIDgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBubDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQ1Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTOyBydjoxLjkuMC4zKSBHZWNrby8yMDA4MTAxMzE1IFVidW50dS84LjEwIChpbnRyZXBpZCkgRmlyZWZveC8zLjAuMwowIDQKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEV4YWJvdC8zLjA7ICtodHRwOi8vd3d3LmV4YWJvdC5jb20vZ28vcm9ib3QpCjAgMgpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuKSBBcHBsZVdlYktpdC81MjMuMTIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzMuMC40IFNhZmFyaS81MjMuMTIKMCAxNgpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgQXNrIEplZXZlcy9UZW9tYTsgK2h0dHA6Ly9hYm91dC5hc2suY29tL2VuL2RvY3MvYWJvdXQvd2VibWFzdGVycy5zaHRtbCkKMCAzCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBlbikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNTMKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOAowIDEzNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGZyOyBydjoxLjkuMC4zKSBHZWNrby8yMDA4MDkyNDE3IEZpcmVmb3gvMy4wLjMKMCA1Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4wOyBVOyBwbCkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi40KSBHZWNrby8yMDEwMDYxMSBGaXJlZm94LzMuNi40CjAgOQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLUdCOyBydjoxLjkuMC40KSBHZWNrby8yMDA4MTAyOTIwIEZpcmVmb3gvMy4wLjQgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBkZSkgUHJlc3RvLzIuNS4yNCBWZXJzaW9uLzEwLjUzCjAgMTQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV82OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy4KMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMjsgZGU7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjExIEZpcmVmb3gvMy42LjQKMCA1CllldGkvMS4wIChOSE4gQ29ycC47IGh0dHA6Ly9oZWxwLm5hdmVyLmNvbS9yb2JvdHMvKQowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUzsgcnY6MS45LjIuNykgR2Vja28vMjAxMDA3MTYgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuNyBHVEI3LjEKMCAyNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGtvOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMzMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBjczsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4xLjEwKSBHZWNrby8yMDEwMDUwNCBGaXJlZm94LzMuNS4xMCBHVEI3LjEgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0Ck1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCAyLjEtdXBkYXRlMTsgZW4tdXM7IFNwcmludCBBUEE5MjkyS1QgQnVpbGQvRVJFMjcpIEFwcGxlV2ViS2l0LzUzMC4xNyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpCjAgMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAzLjAuMDQ1MDYuMzA7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMAowIDE3Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMC43KSBHZWNrby8yMDA5MDIxOTEwIEZpcmVmb3gvMy4wLjcKMCAxNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDM3NQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjU1IFNhZmFyaS81MzMuNAowIDExCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBteGJvdC8xLjA7ICtodHRwOi8vd3d3LmNoYWlubi5jb20vbXhib3QuaHRtbCkKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4wLjEzKSBHZWNrby8yMDA5MDgwMzE1IFVidW50dS85LjA0IChqYXVudHkpIEZpcmVmb3gvMy4wLjEzCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzI7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMisgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC40IFNhZmFyaS81MzEuMjEuMQowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuNCkgR2Vja28vMjAxMDA2MTEgRmlyZWZveC8zLjYuNCBHVEI3LjAKMCAyNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMC4xOSkgR2Vja28vMjAxMDAzMTQyMiBGaXJlZm94LzMuMC4xOSAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDE4Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzVfODsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgMTcKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMTsgV09XNjQ7IFRyaWRlbnQvNC4wOyBGdW5XZWJQcm9kdWN0czsgR1RCNi41OyBTTENDMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkUKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIFNhYmF5b24gQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgMzcKTW96aWxsYS81LjAgKGlQaG9uZTsgVTsgQ1BVIGlQaG9uZSBPUyA0XzBfMSBsaWtlIE1hYyBPUyBYOyBmci1mcikgQXBwbGVXZWJLaXQvNTMyLjkgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC41IE1vYmlsZS8KMCAyNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBubDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl8zOyBmci1mcikgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCA3NApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4yOyBXT1c2NDsgU1YxOyAuTkVUIENMUiAxLjEuNDMyMikKMCAzMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGphOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42CjAgMTcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBzdi1TRTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1Ljk5IFNhZmFyaS81MzMuNAowIDcxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4xLjEwKSBHZWNrby8yMDEwMDUwNCBGaXJlZm94LzMuNS4xMAowIDYKUHljVVJMLzcuMTguMgowIDMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDIwCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLVVTOyBydjoxLjkuMi44OyBmbGlwYm9hcmQuY29tL2NyYXdsZXIgcnY6MC4wLjUpIEdlY2tvIEZpcmVmb3gKMCAxClNvZ291LVRlc3QtU3BpZGVyLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA1LjU7IFdpbmRvd3MgOTgpCjAgMQpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgcGw7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjE7IGktTmF2Rm91ckY7IC5ORVQgQ0xSIDEuMS40MzIyOyBJbmZvUGF0aC4xOyAuTkVUIENMUiAxLjAuMzcwNTsgLk5FVCBDTAowIDIKV2dldC8xLjEyIChsaW51eC1nbnUpCjAgMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHJ1OyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42ICggKQowIDMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsga287IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCAyOApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgRnJpZW5kRmVlZEJvdC8wLjE7ICtIdHRwOi8vZnJpZW5kZmVlZC5jb20vYWJvdXQvYm90KQowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgVHJpZGVudC80LjA7IEdUQjYuNTsgTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YKMCAzMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGRlLURFKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNy44CjAgNApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4wOyB5aWU2X1NCQzsgWVBDIDMuMC4zKQowIDEKZG1vei8xLjAKMCAyCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNS4xOyBVOyBlbikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNjAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBGaXJlUEhQLzAuNAowIDIxClN1bnJpc2UgWFAvMi4wCjAgMQpQeXRob24tdXJsbGliLzEuMTcKMCAxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEdUQjcuMQowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCAxOTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBUcmlkZW50LzQuMDsgTVJBIDUuNiAoYnVpbGQgMDM0MDIpOyBTTENDMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLgowIDQKUG9zdFJhbmsvMi4wIChwb3N0cmFuay5jb20pCjAgMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuOSAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDAxLjEgU2FmYXJpLzUzMy45CjAgMTQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLzUzMy4xNgowIDM5ClNsdWdCdWcgU3BpZGVyLzAuMSBiZXRhIChTbHVnQnVnLmNvbSBzZWFyY2ggZW5naW5lOyBodHRwOi8vd3d3LnNsdWdidWcuY29tKQowIDMyCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjU1IFNhZmFyaS81MzMuNAowIDI2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgbmw7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBFKQowIDE4Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBZYWhvbyEgU2x1cnAvMy4wOyBodHRwOi8vaGVscC55YWhvby5jb20vaGVscC91cy95c2VhcmNoL3NsdXJwKQowIDI3NApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMzgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS43MCBTYWZhcmkvNTMzLjQKMCA0Ck1vemlsbGEvNS4wIChpUGhvbmU7IFU7IENQVSBpUGhvbmUgT1MgNF8wIGxpa2UgTWFjIE9TIFg7IGZyLWZyKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgTW9iaWxlLzhBCjAgMjYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ0Ny4wIFNhZmFyaS81MzQuMgowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlcy1FUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzkuMTAgKGthcm1pYykgRmlyZWZveC8zLjYuOAowIDc3Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQKMCAzNTQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyB0aC10aCkgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjA7IEtUWE4pCjAgMQpFY2hvZm9uLzEuMSBDRk5ldHdvcmsvNDU0LjkuNyBEYXJ3aW4vMTAuNC4wIChpMzg2KSAoTWFjQm9va1BybzUlMkM0KQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDYzCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMzsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuCjAgNDAKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTspCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyNyBGaXJlZm94LzMuNi44IChQYWxlbW9vbi8zLjYuOCkKMCAyNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjU1IFNhZmFyaS81MzMuNCBTdW5DaHJvbQowIDMxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuNDUwNi4yMTUyCjAgNDkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHVEI3LjEgKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBDKQowIDQ4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODIuMCBTYWZhcmkvNTM0LjUKMCAxOQpMaW5rZWRJbkJvdC8xLjAgKGNvbXBhdGlibGU7IE1vemlsbGEvNS4wOyBKYWthcnRhIENvbW1vbnMtSHR0cENsaWVudC8zLjEgK2h0dHA6Ly93d3cubGlua2VkaW4uY29tKQowIDE4Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjE7IEluZm9QYXRoLjI7IE1TLVJUQyBMTSA4OyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyBlbi1VUzsgcnY6MS45LjEuNCkgR2Vja28vMjAwOTEwMDcgRmlyZWZveC8zLjUuNAowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgTWF4dGhvbiAyKQowIDQ5Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZGU7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYKMCAyMjQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjAgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQwOC4xIFNhZmFyaS81MzQuMAowIDE2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4wLjYpIEdlY2tvLzIwMDkwMTE5MTMgRmlyZWZveC8zLjAuNgowIDY2Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzVfODsgZGUtZGUpIEFwcGxlV2ViS2l0LzUzMy4xNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNhZmFyaS81MzMuMTYKMCAxNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wRSkKMCA4OQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzA7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1Ljk5IFNhZmFyaS81MzMuNAowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjY0ODsgLk5FVCBDTFIgMy41LjIxMDIKMCA2MwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjEpCjAgMTAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ4MS4wIFNhZmFyaS81MzQuNAowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuODYgU2FmYXJpLzUzMy40CjAgMjQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yKSBHZWNrby8yMDEwMDExNSBGaXJlZm94LzMuNiAoK2h0dHA6Ly9mbGlwYm9hcmQuY29tL2NyYXdsZXIpCjAgOApVemJsIChXZWJLaXQgV2Via2l0IDIpIChbaTY4Nl0pIChDb21taXQgYWUxNWQyNTdhODU4ZmUyNzA5MGYzZTU3OTgzNTdhZWEyZjVhNzZkYSkgKEdlY2tvIGNvbXBhdGlibGUpIChOaXhPUyBMaW51eCBkaXN0cmlidXRpbwowIDIyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEFudC5jb20gVG9vbGJhciAyLjAuMSBGaXJlZm94LzMuMC43LCAoIC5ORVQgQ0xSIDMuCjAgMjQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBmci1mcikgQXBwbGVXZWJLaXQvNTMzLjE2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLzUzMy4xNgowIDI0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgOTcKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4wLjYpIEdlY2tvLzIwMDkwMTE5MTIgRmlyZWZveC8zLjAuNgowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjAuNSkgR2Vja28vMjAwODEyMDEyMiBGaXJlZm94LzMuMC41CjAgOApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNi4wKQowIDcKTW9yZmV1cyBGdWNraW5nIFNjYW5uZXIKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tR0I7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjAuMzA3Mjk7IC5ORVQ0LjBDKQowIDkKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4wLjUpIEdlY2tvLzIwMDgxMjAxMjEgRmlyZWZveC8zLjAuNQowIDIyCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBrbWJvdC02MmM1LzAuMDsgK2h0dHA6Ly9rbm93bW9yZS5jb20vYm90cykKMCA2Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNSjEyYm90L3YxLjMuMzsgaHR0cDovL3d3dy5tYWplc3RpYzEyLmNvLnVrL2JvdC5waHA/KykKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZXMtRVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMTcKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOAowIDUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgMTcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjIxMDIyKQowIDEyCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyBHVEI2LjU7IEluZm9QYXRoLjI7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5OCjAgMTkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDE0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOS4xLjEpIEdlY2tvLzIwMDkwNzE1IEZpcmVmb3gvMy41LjEgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjAuMTgpIEdlY2tvLzIwMTAwMjE1MDEgVWJ1bnR1LzkuMDQgKGphdW50eSkgRmlyZWZveC8zLjAuMTgKMCAxMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDUwMSBJY2V3ZWFzZWwvMy41LjkgKGxpa2UgRmlyZWZveC8zLjUuOSkKMCA0OApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGRlOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBGaXJlZm94LzMuNi4zCjAgMjEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgVHJpZGVudC80LjA7IEZ1bldlYlByb2R1Y3RzOyBHVEI2LjU7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IE1lZGlhIENlbnQKMCAxMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzIuMCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8zLjAuMTk1LjIxIFNhZmFyaS81MzIuMAowIDE3Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjlwcmUpIEdlY2tvLzIwMTAwNzI3IFVidW50dS85LjEwIChrYXJtaWMpIE5hbW9yb2thLzMuNi45cHJlCjAgMjYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNiAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuNCwgU3VyZkNvCjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzkuMTAgKGthcm1pYykgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCAxMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wRSkKMCAyMApNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDNfMV8yIGxpa2UgTWFjIE9TIFg7IGZyLWZyKSBBcHBsZVdlYktpdC81MjguMTggKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvN0QxMQowIDEzCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjY7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBGaXJlZm94LzQuMGIyCjAgNDIKU29zb3NwaWRlcisoK2h0dHA6Ly9oZWxwLnNvc28uY29tL3dlYnNwaWRlci5odG0pCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvNTMzLjE2CjAgMTE4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4wLjgpIEdlY2tvLzIwMDYxMDI1IEZpcmVmb3gvMS41LjAuOAowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMTsgVHJpZGVudC80LjA7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVCBDTFIgMy4wLjMKMCAxNDIKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMKMCAzMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgU1VTRS8zLjYuOC0wLjEuMSBGaXJlZm94LzMuNi44CjAgMjAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyBpdDsgcnY6MS45LjIuMykgR2Vja28vMjAxMDA0MDEgRmlyZWZveC8zLjYuMyAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDIxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODUuMCBTYWZhcmkvNTM0LjUKMCAyMApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgIFZhZ2Fib25kby80LjA7IGh0dHA6Ly93ZWJhZ2VudC53aXNlLWd1eXMubmwvKQowIDI1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMCBTYWZhcmkvNTM0LjMKMCA3MQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjAuMTYpIEdlY2tvLzIwMDkxMjE2MTAgSWNld2Vhc2VsLzMuMC42IChEZWJpYW4tMy4wLjYtMykKMCA1Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZGUtZGUpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgODMKVG9hdGEgZHJhZ29zdGVhIG1lYSBwZW50cnUgaUVkaQowIDMKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDYuMDsgR1RCNjsgU0xDQzE7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUIENMUiAzLjAuMzA2MTg7IEkKMCAxMAp5YWN5Ym90IChpMzg2IExpbnV4IDIuNi4zMi0yNC1nZW5lcmljOyBqYXZhIDEuNi4wXzE4OyBFdXJvcGUvZW4pIGh0dHA6Ly95YWN5Lm5ldC9ib3QuaHRtbAowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4yMiBTYWZhcmkvNTM0LjMKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgMzMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgR1RCNy4xCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMzkKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4wNDUwNi42NDgKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAxLjEuNDMyMjsgSW5mb1BhdGguMTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IG5iLW5vKSBBcHBsZVdlYktpdC81MzMuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvNTMzLjE2CjAgMTkKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBmci1mcikgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCAyNwpPcGVyYS85LjgwIChXaW5kb3dzIE5UIDYuMTsgVTsgaHUpIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBUcmlkZW50LzQuMDsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMy4wLjQ1MDYuMjE1MgowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgUFBDIE1hYyBPUyBYIDEwXzVfODsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3LjgKMCAyMwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGRlLWRlKSBBcHBsZVdlYktpdC81MzMuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvNTMzLjE2CjAgMzYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwOyBJbmZvUGF0aC4yOyAKMCAyMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjE7ICBodHRwOi8vd3d3LmNoYW5nZWRldGVjdGlvbi5jb20vYm90Lmh0bWwgKQowIDgKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgbmw7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjE7IFdPVzY0OyBUcmlkZW50LzUuMDsgLk5FVDQuMEU7IC5ORVQ0LjBDOyBNZWRpYSBDZW50ZXIgUEMgNi4wOyBJbmZvUGF0aC4zOyAuCjAgMTEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDIxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgcnU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxMDAKT3BlcmEvOS44MCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWDsgVTsgZW4pIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDM0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZXMtTVg7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMTQKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wYjsgV2luZG93cyBOVCA1LjApIEdlY2tvLzIwMDkwMTE5MTMgRmlyZWZveC8zLjAuNiBUd2VldG1lbWVCb3QKMCA3Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYOyBlbi1VUzsgcnY6MS44LjEuNykgR2Vja28vMjAwNzA5MTQgRmlyZWZveC8yLjAuMC43CjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBzazsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDMxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGVuLVVTOyBydjoxLjkuMC43KSBHZWNrby8yMDA5MDIxOTA2IEZpcmVmb3gvMy4wLjcKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggR1RCNy4xICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wRSkKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjA7IFRyaWRlbnQvNC4wOyBTTENDMTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQgQ0xSIDMuMC4zCjAgMzEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTIKMCA0CkFwcEVuZ2luZS1Hb29nbGU7ICgraHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcHBlbmdpbmU7IGFwcGlkOiBnZXRmYXZpY29uKQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KSBGaXJlUEhQLzAuNAowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFdpbmRvd3MgTlQgNS4xOyBydjoyLjBiMikgR2Vja28vMjAxMDA3MjAgRmlyZWZveC80LjBiMiAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxNgpTcGhpZGVyCjAgMTUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMTEgU2FmYXJpLzUzNC4zCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgQXNrVGJGWFRWNS8zLjguMC4xMjMwNCBGaXJlZm94LzMuNi44CjAgMTYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yKSBHZWNrby8yMDEwMDExNSBGaXJlZm94LzMuNgowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyB6aC1DTjsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzM7IGVuLXVzKSBBcHBsZVdlYktpdC81MzEuMjIuNyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgU2FmYXJpLzUzMS4yMgowIDExCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNDAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcuOAowIDMKTW96aWxsYS81LjAgKGVuLVVTKQowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgV09XNjQ7IFRyaWRlbnQvNC4wOyBTTENDMTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuMzA3Mjk7IC5ORVQgQ0wKMCAxNgpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgd29yaW9ib3Qgc3VwcG9ydCBbYXRdIHdvcmlvIFtkb3RdIGNvbSAraHR0cDovL3dvcmlvLmNvbSkKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgbmw7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjExIEZpcmVmb3gvMy42LjQKMCA3Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IHJ1OyBydjoxLjkuMS4yKSBHZWNrby8yMDA5MDcyOSBGaXJlZm94LzMuNS4yCjAgMTcKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwOyAuTkVUIENMUiAzLjAKMCAxMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4wNDUwNi42NDg7IC5ORVQgQ0xSIDMuNS4yMTAyMjsgQ0lCQTsgLk5FVAowIDE2Ck1vemlsbGEvNC4wCjAgMjYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCA2Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBTVVNFLzMuNi44LTEuMiBGaXJlZm94LzMuNi44IEZpcmVQSFAvMC40CjAgNQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBwbC1QTDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOAowIDEyCkxXUDo6U2ltcGxlLzUuODE0CjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF81Xzg7IGZyLWZyKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNwowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy4KMCA5NDUKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDYuMDsgV09XNjQ7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4zMDcyOTsgLk5FVCBDTFIgMy41LjIxMDIyOyAKMCAxMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IHBsOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGZpLUZJOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi4zIEdUQjcuMQowIDE0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMgpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgWWFob28hIFNsdXJwOyBodHRwOi8vaGVscC55YWhvby5jb20vaGVscC91cy95c2VhcmNoL3NsdXJwKQowIDIwCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgdWs7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAyMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgUG93ZXJtYXJrcy8zLjU7IFdpbmRvd3MgOTUvOTgvMjAwMC9OVCkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyBHVEIwLjA7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjQ1MDYuMjE1MjsgLk5FVCBDTFIgCjAgMjMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDI0OQpNT1pJTExBLzUuMCAoV0lORE9XUzsgVTsgV0lORE9XUyBOVCA1LjE7IEVOLVVTOyBSVjoxLjkuMC4zKSBHRUNLTy8yMDA4MDkyNDE3IEZJUkVGT1gvMy4wLjMKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS84LjA0IChoYXJkeSkgRmlyZWZveC8zLjYuOAowIDU3Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjgKMCAxOQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBqYS1KUC1tYWM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyNwpJRSA3IC0gTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwKQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBpdDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuNjtNRUdBVVBMT0FEIDEuMCBHVEI3LjEgKCAuTkVUIENMUiAzLjUuMzAKMCAzNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiAgRmlyZWZveEJ1aWxkLzEzLjAwMjU5ICA5ODY3MDY1MzQ5MDMgICggLk5FVCBDTFIgMwowIDEKbXNuYm90LzIuMGIgKCtodHRwOi8vc2VhcmNoLm1zbi5jb20vbXNuYm90Lmh0bSkKMCAxMjMKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEljb25vY2xhc20vMS4wOyAraHR0cDovL2dpdGh1Yi5jb20vc2FuZGVyNi9pY29ub2NsYXNtKQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBwdC1CUjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDYyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODYuMCBTYWZhcmkvNTM0LjUKMCAyMgpPcGVyYS85LjgwIChXaW5kb3dzIE5UIDUuMTsgVTsgamEpIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCAzNgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC80LjA7IEdUQjYuNTsgU0xDQzI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy41LjMwNzI5OwowIDIzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4xLjExKSBHZWNrby8yMDEwMDcwMSBGaXJlZm94LzMuNS4xMQowIDIyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAyMDcKbGlid3d3LXBlcmwvNS44MDUKMCA5Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgdHI7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNDIKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ0Ny4wIFNhZmFyaS81MzQuMgowIDE2Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzRfMTE7IGVuKSBBcHBsZVdlYktpdC81MzEuMjIuNyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgU2FmYXJpLzUzMS4yMi43CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjUgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ4Ny4wIFNhZmFyaS81MzQuNQowIDE2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYKMCA2NjcKbGlid3d3LXBlcmwvNS44MTMKMCA4CmxpYnd3dy1wZXJsLzUuODE0CjAgMTgKTW96aWxsYS81LjAgRmlyZWZveC8zLjAuNQowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgR1RCNTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwOyAuTkVUIEMKMCA0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLUdCOyBydjoxLjkuMS43KSBHZWNrby8yMDA5MTIyMSBGaXJlZm94LzMuNS43IEZpcmVUb3JyZW50LzIuMC4xIEdUQjcuMQowIDYwCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IHBsLVBMOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyOCBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi42CjAgNwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQyMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTOyBydjoxLjkuMi40KSBHZWNrby8yMDEwMDYxMSBGaXJlZm94LzMuNi40ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42IEdUQjcuMQowIDM2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMjsga287IHJ2OjEuOS4yLjMpIEdlY2tvIEZpcmVmb3gvMy42LjMgSVBNUy9DODE1MDgwQS0xNEJEMTU0RTZBNi0wMDAwMDAwNjA4NTUKMCAxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGVzLUVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMTYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDMxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMzQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy40CjAgOTM5Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIChDSy1lQ2lyY2xlKSBGaXJlZm94LzMuNi44CjAgMTcKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy4KMCA5NwpXZ2V0LzEuMTEuNAowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKQowIDMKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IHNwYm90LzIuMC40OyAraHR0cDovL3d3dy5zZW9wcm9maWxlci5jb20vYm90ICkKMCAzMApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgd29yaW9ib3QgK2h0dHA6Ly93b3Jpby5jb20pCjAgMQojIEVuZCBPZiBUYWJsZSAtIGFnZW50cwojIC1zZWFyY2ggc3RyaW5ncy0gCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9jc2hhcnAvCjIKY29kZW1pcnJvciBmcm9tdGV4dGFyZWEKMQpqYXZhc2NyaXB0IGNvZGUgZWRpdG9yCjEKamF2YXNjcmlwdCBvbmxpbmUgc3ludGF4IGhpZ2hsaWdodGluZwoxCmNvZGUgbWlycm9yCjE1CmNvZGUgbWlycm9zCjIKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9qc3Rlc3QuaHRtbAozCmNvZGVtaXJyb3IgdGFiCjEKY29kZW1pcnJvciBjb250aW51b3Vzc2Nhbm5pbmcKMQpicm93c2VyLWJhc2VkIHN5bnRheCBoaWdobGlnaHRpbmcKMQpqYXZhc2NyaXB0IGNvZGUgYnJvd3NlcnMKMQptaXJyb3IgY29kZQoxCmNvZGVtaXJyb3IgbGluZSBudW1iZXJzCjEKYnJvd3NlciBjb2RlIGVkaXRvcgoxCmNvZGVtaXJyb3IgbWFudWFsCjcKY29kZSBtaXJyaW9yCjEKaHR0cDovL2NvZGVtaXJyb3IubmV0Lwo2CmNvZGVtaXJyb3Igc3VibWl0CjEKY29kZW1pcnJvciBwYXJzZXJmaWxlCjEKc3ludGF4IGhpZ2hsaWdodCBlZGl0b3IgamF2YXNjcmlwdAoxCmphdmFzY3JpcHQgc3ludGF4IGhpZ2hsaWdodAoxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvCjQKY29kZW1pcnJvciBvbiBhIGZvcm0KMQpjb2RlbWlycm9yLmZyb210ZXh0YXJlYQoxCmphdmFzY3JpcHQgZWRpdG9yIGluIGJyb3dzZXIKMQpjb2RlbWlycm9yCjEwMwpjb2RlbWlycm9yIG1hdWFsCjIKb25saW5lIGNvZGUgZWRpdG9yIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZwoxCmJyb3dzZXIgc3ludGF4IGNvbG9yaW5nCjEKc3ludGF4IGhpZ2hsaWdodGVyIGVkaXRvciBqYXZhc2NyaXB0CjEKb25saW5lIGNvZGUgZWRpdG9yIHN5bnRheCBoaWdobGlnaHRpbmcKMQpjb2RlbWlyb3IKMQpqYXZhc2NyaXB0IGNvZGUgZm9yIGJyb3dzZQoxCmNvZGVtaXJyb3IgcGFzdGUKMQpjb2RlbWlycm9yIGRvY3VtZW50YXRpb24KMwpjb2RlbWlycm9yLWxpbmUtbnVtYmVycwoxCmNvZGVtaXJybyB0YWIKMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcHl0aG9uL2luZGV4Lmh0bWwKMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9weXRob24vaW5kZXguaHRtbAozCmNvZGUgZWRpdG9yIGJyb3dzZXIKMgpqYXZhc2NyaXB0IGJhc2VkIGNvZGUgZWRpdG9yCjEKanMgc3ludGF4IGhpZ2hsaWdodGVyIG9ubGluZQoxCm1hcmlqbiBoYXZlcmJla2UKMgppbiBicm93c2VyIGNvZGUgZWRpdG9yCjEKamF2YXNjcmlwdCBzb3VyY2UgY29kZSBicm93c2VyIGVkaXRvcgoxCmNvZGVtaXJyb3IgcG9zdCBhY3Rpb24KMQojIEVuZCBPZiBUYWJsZSAtIHNlYXJjaCBzdHJpbmdzCiMgLXVzZXJuYW1lcy0gCm1hcmlqbgowIDEwIDEwIDMzMzA4OSAxIDEyODEwMTAwNzcgMCAwCiMgRW5kIE9mIFRhYmxlIC0gdXNlcm5hbWVzCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/webalizer.hist</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[OCAyMDEwIDIwMjY2IDE3MDM3IDEyOTkgMjA3MjQ1IDMgOCA0OTg4IDE3OTcgMCAwCg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbImZyaWVuZGx5bmFtZSJdPSJDb2RlTWlycm9yIHN5bnRheGhpZ2hsaWdodGluZyBlZGl0b3IiOwoKJGxhbmdbInBvc3RpbnN0YWxsIl09IlRoZSBDb2RlTWlycm9yIG1vZHVsZSB3YXMgc3VjZXNzZnVsbHkgaW5zdGFsbGVkIjsKJGxhbmdbIm5lZWRwZXJtaXNzaW9uIl09IidZb3UgbmVlZCB0aGUgJyVzJyBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhhdCBmdW5jdGlvbi4iOwoKJGxhbmdbInNldHRpbmdzdGFiIl09IlNldHRpbmdzIjsKJGxhbmdbInNhdmVzZXR0aW5ncyJdPSJTYXZlIHNldHRpbmdzIjsKJGxhbmdbInNldHRpbmdzc2F2ZWQiXT0iU2V0dGluZ3Mgc2F2ZWQiOwoKJGxhbmdbImh0bWx0ZXN0Il09IkhUTUwgc3ludGF4IHRlc3QiOwokbGFuZ1siY3NzdGVzdCJdPSJDU1Mgc3ludGF4IHRlc3QiOwokbGFuZ1sicGhwdGVzdCJdPSJQSFAgc3ludGF4IHRlc3QiOwokbGFuZ1sianN0ZXN0Il09IkphdmFTY3JpcHQgc3ludGF4IHRlc3QiOwokbGFuZ1siZXhhbXBsZXN5bnRheCJdPSJTeW50YXggdG8gdGVzdCB3aXRoIjsKJGxhbmdbImNoYW5nZSJdPSJDaGFuZ2UuLi4iOwoKJGxhbmdbInNob3dsaW5lbnVtYmVycyJdPSJTaG93IGxpbmVudW1iZXJzIjsKJGxhbmdbInRleHR3cmFwcGluZyJdPSJXcmFwIGxvbmcgbGluZXMiOwokbGFuZ1siYXV0b21hdGNocGFyZW5zIl09IkF1dG9tYXRjaCBwYXJlbnRoZXNpcyI7CiRsYW5nWyJ0YWJoYW5kbGluZyJdPSJIb3cgdG8gaGFuZGxlIHByZXNzaW5nIHRoZSBUQUIga2V5IjsKJGxhbmdbInRhYmRlZmF1bHQiXT0iTGV0IHRoZSBicm93c2VyIGRlY2lkZSI7CiRsYW5nWyJ0YWJpbmRlbnQiXT0iRG8gaW5kZW50YXRpb24iOwokbGFuZ1sidGFic3BhY2VzIl09Ikluc2VydCBzcGFjZXMiOwokbGFuZ1sidGFic2hpZnQiXT0iU2hpZnQgdG8gdGhlIHJpZ2h0LCBzaGlmdC1UQUIgc2hpZnRzIHRvIGxlZnQiOwoKJGxhbmdbImhlbHAiXT0iPHN0cm9uZz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9zdHJvbmc+Cjxici8+ClRoZSBDb2RlTWlycm9yIG1vZHVsZSBhbGxvd3MgeW91IHRvIGVkaXQgY29udGVudCwgdGVtcGxhdGVzIGFuZCBzdHlsZXNoZWV0cyB1c2luZyBhIHN5bnRheGhpZ2hsaWdodGluZyBlZGl0b3IgaW5zaWRlIHlvdXIgYnJvd3Nlci4KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykKPGJyLz48YnIvPgo8c3Ryb25nPkhvdyBkbyBJIHVzZSB0aGlzIG1vZHVsZT88L3N0cm9uZz4KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuCnNlbGVjdCBDb2RlTWlycm9yIGJvdGggYXMgYSBXWVNJV1lHIGFuZCBhcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yLiI7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/da_DK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3IgLSBlbiBzeW50YWtzLWZyZW1oJmFlbGlnO3ZlbmRlIGVkaXRvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0NvZGVNaXJyb3IgbW9kdWxldCBibGV2IGtvcnJla3QgaW5zdGFsbGVyZXQnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICcmIzAzOTtZb3UgbmVlZCB0aGUgJiMwMzk7JXMmIzAzOTsgcGVybWlzc2lvbiB0byBwZXJmb3JtIHRoYXQgZnVuY3Rpb24uJzsKJGxhbmdbJ3NldHRpbmdzdGFiJ10gPSAnSW5kc3RpbGxpbmdlcic7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdHZW0gaW5kc3RpbGxpbmdlcic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSW5kc3RpbGxpbmdlcm5lIGJsZXYgZ2VtdCc7CiRsYW5nWydodG1sdGVzdCddID0gJ0hUTUwgc3ludGFrcyB0ZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1Mgc3ludGFrcyB0ZXN0JzsKJGxhbmdbJ3BocHRlc3QnXSA9ICdQSFAgc3ludGFrYSB0ZXN0JzsKJGxhbmdbJ2pzdGVzdCddID0gJ0phdmFTY3JpcHQgc3ludGFrcyB0ZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YWtzIGRlciBza2FsIHRlc3RlcyBtZWQnOwokbGFuZ1snY2hhbmdlJ10gPSAnU2tpZnQuLi4nOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnVmlzIGxpbmllbnVtcmUnOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnT21icnlkIGxhbmdlIGxpbmllcic7CiRsYW5nWydhdXRvbWF0Y2hwYXJlbnMnXSA9ICdWaXMgbWF0Y2hlbmRlIHBhcmVudGVzZXInOwokbGFuZ1snaGVscCddID0gJzxzdHJvbmc+SHZhZCBnJm9zbGFzaDtyIGRldHRlIG1vZHVsPzwvc3Ryb25nPg0KPGJyLz4NCkNvZGVNaXJyb3ItbW9kdWxlcyBnaXZlciBkaWcgbXVsaWdoZWQgZm9yIGF0IHJlZGlnZXJlIGluZGhvbGQsIHNrYWJlbG9uZXIgb2cgc3R5bGVzaGVldHMgdmVkIGhqJmFlbGlnO2xwIGFmIHN5bnRha3MtZnJlbWgmYWVsaWc7dmVuZGUgcmVkaWdlcmluZyBpIGRpbiBicm93c2VyLg0KPGJyLz48YnIvPg0KPHN0cm9uZz5Idm9yZGFuIGJydWdlciBqZWcgZGV0dGUgbW9kdWw/PC9zdHJvbmc+DQpEdSBpbnN0YWxsZXJlciBkZXQgb2cgdiZhZWxpZztsZ2VyIGRldCBpIGRpbmUgYnJ1Z2VyIGluZHN0aWxsaW5nZXIgZm9yIGFkbWluc2l0cmF0aW9uZW4uIEJlbSZhZWxpZztyayBhdCBkdSBrYW4gdiZhZWxpZztsZ2UgYXQgYmVueXR0ZSBkZXQgYiZhcmluZztkZSBzb20gc3ludGFrcyBmcmVtaCZhZWxpZzt2ZXIgb2cgV1lTSVdZRy4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yMDM5ODg2NTg1LjEyMzE3MTM2MTguMTI3OTEzNzA4MS4xMjc5NTU0OTUxLjEzNyc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNzc4MzQ0MTMuMTMxLjMwLnV0bWNzcj1mZWVkYnVybmVyfHV0bWNjbj1GZWVkOiBjbXNtYWRlc2ltcGxlL2Jsb2cgKENNUyBNYWRlIFNpbXBsZSl8dXRtY21kPWZlZWQnOwokbGFuZ1sncWNhJ10gPSAnMTIyOTYwMTc5MC04NTI0MzE5Ny00MzI2MDcxMyc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3IgU3ludGF4LUhpZ2hsaWdodGluZy1FZGl0b3IgJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnRGFzIENvZGVNaXJyb3ItTW9kdWwgd3VyZGUgZXJmb2xncmVpY2ggaW5zdGFsbGllcnQuJzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnU2llIGJlc2l0emVuIG5pY2h0ICBkaWUgJiMwMzk7JXMmIzAzOTstQmVyZWNodGlndW5nLCB1bSBkaWVzZSBGdW5rdGlvbiBhdXN6dWYmdXVtbDtocmVuLic7CiRsYW5nWydzZXR0aW5nc3RhYiddID0gJ0VpbnN0ZWxsdW5nZW4nOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnRWluc3RlbGx1bmdlbiBzcGVpY2hlcm4nOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0VpbnN0ZWxsdW5nZW4gZ2VzcGVpY2hlcnQnOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdIVE1MLVN5bnRheC1UZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1MtU3ludGF4LVRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUC1TeW50YXgtVGVzdCc7CiRsYW5nWydqc3Rlc3QnXSA9ICdKYXZhU2NyaXB0LVN5bnRheC1UZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YXggdGVzdGVuIG1pdCc7CiRsYW5nWydjaGFuZ2UnXSA9ICcmQXVtbDtuZGVyZSAuLi4nOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnWmVpbGVubnVtbWVybiBhbnplaWdlbic7CiRsYW5nWyd0ZXh0d3JhcHBpbmcnXSA9ICdMYW5nZSBaZWlsZW4gdW1icmVjaGVuJzsKJGxhbmdbJ2F1dG9tYXRjaHBhcmVucyddID0gJ0F1dG9tYXRpc2NoZSBLbGFtbWVyLUVya2VubnVuZyc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4NCjxwPkRhcyBDb2RlTWlycm9yLU1vZHVsZSBpc3QgZWluIEVkaXRvciBtaXQgU3ludGF4LUhpZ2hsaWdodGluZywgbWl0IGRlbSBTaWUgb25saW5lIEluaGFsdCwgVGVtcGxhdGVzIHVuZCBTdHlsZXNoZWV0cyBiZWFyYmVpdGVuIGsmb3VtbDtubmVuLiBEYXMgTW9kdWwga2FubiBzb3dvaGwgZGllIFdZU0lXWUctRWRpdG9yZW4gZXJzZXR6ZW4gYWxzIGF1Y2ggc2VwYXJhdCB6dW0gRWRpdGllcmVuIHZvbiBUZW1wbGF0ZXMgdW5kIFN0eWxlc2hlZXRzIHZlcndlbmRldCB3ZXJkZW4gKHVudGVyc3QmdXVtbDt0enQgYWIgQ01TbXMgVmVyc2lvbiAxLjEpLjwvcD4NCjxoMz5XaWUgd2lyZCBlcyBlaW5nZXNldHp0PzwvaDM+DQo8cD5JbnN0YWxsaWVyZW4gU2llIGRhcyBNb2R1bCB1bmQgYWt0aXZpZXJlbiBTaWUgZXMgYW5zY2hsaWUmc3psaWc7ZW5kIGluIGRlbiBiZW51dHplcnNwZXppZmlzY2hlbiBFaW5zdGVsbHVuZ2VuLjwvcD4NCjxwPkJlYWNodGVuIFNpZSwgZGFzcyBTaWUgYWIgQ01TbXMtVmVyc2lvbiAxLjEgdW5kIGgmb3VtbDtoZXIgPHN0cm9uZz5Db2RlTWlycm9yPC9zdHJvbmc+IHNvd29obCBhbHMgV1lTSVdZRy1FZGl0b3IgYWxzIGF1Y2ggYWxzIFN5bnRheC1IaWdobGlnaHRpbmctRWRpdG9yIGF1c3cmYXVtbDtobGVuIGsmb3VtbDtubmVuLjwvcD4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yNzAyNDU3MjIuMTI4NDkxMzQxOS4xMjg0OTEzNDE5LjEyODQ5NzY4NTIuMic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI4NDk3Njg1Mi4yLjIudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vaW5kZXgucGhwfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0VkaXRvciBkZSByZXNhbHRhZG8gZGUgc2ludGF4aXMgQ29kZU1pcnJvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0VsIG0mYW1wO29hY3V0ZTtkdWxvIENvZGVNaXJyb3IgZnVlIHNhdGlzZmFjdG9yaWFtZW50ZSBpbnN0YWxhZG8nOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICcmIzAzOTtTZSBuZWNlc2l0YSBlbCBwZXJtaXNvIGRlICYjMDM5OyVzJiMwMzk7IHBhcmEgcmVhbGl6YXIgZXN0YSBmdW5jaSZhbXA7b2FjdXRlO24uJzsKJGxhbmdbJ3NldHRpbmdzdGFiJ10gPSAnQWp1c3Rlcyc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYWx2YXIgYWp1c3Rlcyc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnQWp1c3RlcyBndWFyZGFkb3MnOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdQcnVlYmEgZGUgc2ludGF4aXMgSFRNTCc7CiRsYW5nWydjc3N0ZXN0J10gPSAnUHJ1ZWJhIGRlIHNpbnRheGlzIENTUyc7CiRsYW5nWydwaHB0ZXN0J10gPSAnUHJ1ZWJhIGRlIHNpbnRheGlzIFBIUCc7CiRsYW5nWydleGFtcGxlc3ludGF4J10gPSAnU3ludGF4aXMgdXNhZGEgcGFyYSBwcm9iYXInOwokbGFuZ1snY2hhbmdlJ10gPSAnQ2FtYmlhci4uLic7CiRsYW5nWydzaG93bGluZW51bWJlcnMnXSA9ICdNb3N0YXIgZWwgbiZhbXA7dWFjdXRlO21lcm8gZGUgbCZhbXA7aWFjdXRlO25lYXMnOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnQXV0by1hanVzdGFyIGxpbmVhcyBsYXJnYXMnOwokbGFuZ1snaGVscCddID0gJzxzdHJvbmc+UXUmYW1wO2VhY3V0ZTsgaGFjZSBlc3RlIG0mYW1wO29hY3V0ZTtkdWxvPzwvc3Ryb25nPg0KPGJyLz4NCkVsIG0mYW1wO29hY3V0ZTtkdWxvIENvZGVNaXJyb3IgbGUgcGVybWl0ZSBlZGl0YXIgY29udGVuaWRvLCBwbGFudGlsbGFzIHkgaG9qYXMgZGUgZXN0aWxvIHVzYW5kbyB1biBlZGl0b3IgZGUgcmVzYWx0YWRvIGRlIHNpbnRheGlzIGRlbnRybyBkZSBzdSBuYXZlZ2Fkb3IuDQpFc3RlIHRhbWJpdSZhbXA7ZWFjdXRlO24gcHVlZGUgIHJlZW1wbGF6YXIgZWwgbSZhbXA7b2FjdXRlO2R1bG8gZGUgd3lzaXd5ZywgeSBhY3R1YXIgc29sbyBwYXJhIGVkaWNpJmFtcDtvYWN1dGU7biBkZSBwbGFudGlsbGFzL2hvamFzIGRlIGVzdGlsbyB0ZW1wbGF0ZS9zdHlsZXNoZWV0ICAoc29sbyBzb3BvcnRhZG8gZW4gQ01TbXMgMS4xKykNCjxici8+PGJyLz4NCjxzdHJvbmc+QyZhbXA7b2FjdXRlO21vIHVzbyBlc3RlIG0mYW1wO29hY3V0ZTtkdWxvPzwvc3Ryb25nPg0KVXN0ZWQgc2ltcGxlbWVudGUgbG8gaW5zdGFsYSwgeSBsbyBzZWxlY2Npb25hIGVuIGxhcyBwcmVmZXJlY2lhcyBkZSBsYSBhZG1pbmlzdHJhY2kmYW1wO29hY3V0ZTtuLiBOb3RlIHF1ZSwgc2kgdXN0ZWQgdXNhIENNU21zIDEuMSBvIHN1cGVyaW9yIGEgZXN0ZSB1c3RlZCBwdWVkZSBzZWxlY2Npb25hciBDb2RlTWlycm9yIGp1bnRvIGNvbiBXWVNJV1lHIHBhcmEgZWwgcmVzYWx0YWRvIGRlIHNpbnRheGlzLic7CiRsYW5nWydxY2EnXSA9ICdQMC0yMDk2MDU0MzcwLTEyNTk4MDM2MTU5MzknOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yMzg2MDY4NTQuMTI1OTgwNDM2OC4xMjY3NjUyNDU5LjEyNjc2NTk3NzMuNTcnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjY3NjUyNDU5LjU2LjI4LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC90b3BpYywxOTkyOS4wLmh0bWx8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0VkaXRldXIgZGUgc3ludGF4ZSBjb2xvciZlYWN1dGU7IENvZGVNaXJyb3InOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdMZSBtb2R1bGUgQ29kZU1pcnJvciBhICZlYWN1dGU7dCZlYWN1dGU7IGluc3RhbGwmZWFjdXRlOyBhdmVjIHN1Y2MmZWdyYXZlO3MnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICcmIzAzOTtWb3VzIGF2ZXogYmVzb2luIGRlIGwmIzAzOTthdXRvcmlzYXRpb24gJiMwMzk7JXMmIzAzOTsgIHBvdXIgY2V0dGUgZm9uY3Rpb24nOwokbGFuZ1snc2V0dGluZ3N0YWInXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYXV2ZWdhcmRlciBsZXMgcGFyYW0mZWdyYXZlO3RyZXMnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1BhcmFtJmVncmF2ZTt0cmVzIHNhdXZlZ2FyZCZlYWN1dGU7cyc7CiRsYW5nWydodG1sdGVzdCddID0gJ1Rlc3QgZGUgc3ludGF4ZSBIVE1MICc7CiRsYW5nWydjc3N0ZXN0J10gPSAnVGVzdCBkZSBzeW50YXhlIENTUyAnOwokbGFuZ1sncGhwdGVzdCddID0gJ1Rlc3QgZGUgc3ludGF4ZSBQSFAnOwokbGFuZ1snanN0ZXN0J10gPSAnVGVzdCBkZSBzeW50YXhlIEphdmFTY3JpcHQnOwokbGFuZ1snZXhhbXBsZXN5bnRheCddID0gJ1N5bnRheGUgcG91ciB0ZXN0ZXIgYXZlYyZuYnNwOyc7CiRsYW5nWydjaGFuZ2UnXSA9ICdDaGFuZ2VyIC4uLic7CiRsYW5nWydzaG93bGluZW51bWJlcnMnXSA9ICdBZmZpY2hlciBsZSBub21icmUgZGUgbGlnbmVzJzsKJGxhbmdbJ3RleHR3cmFwcGluZyddID0gJ1JldG91ciAmYWdyYXZlOyBsYSBsaWduZSBhdXRvbWF0aXF1ZSc7CiRsYW5nWydhdXRvbWF0Y2hwYXJlbnMnXSA9ICdBZmZpY2hlciBsZXMgY29ycmVzcG9uZGFuY2VzIGRlIHBhcmVudGgmZWdyYXZlO3Nlcyc7CiRsYW5nWydoZWxwJ10gPSAnPHN0cm9uZz5RdWUgZmFpdCBjZSBtb2R1bGUmbmJzcDs/PC9zdHJvbmc+DQo8YnIvPg0KTGUgbW9kdWxlIENvZGVNaXJyb3Igdm91cyBwZXJtZXQgZGUgbW9kaWZpZXIgbGUgY29udGVudSwgbGVzIGdhYmFyaXRzIGV0IGxlcyBmZXVpbGxlcyBkZSBzdHlsZSBlbiB1dGlsaXNhbnQgdW4gJmVhY3V0ZTtkaXRldXIgZGUgc3ludGF4ZSBjb2xvciZlYWN1dGU7IGwmIzAzOTtpbnQmZWFjdXRlO3JpZXVyIGRlIHZvdHJlIG5hdmlnYXRldXIuIA0KSWwgcGV1dCBhdXNzaSBiaWVuIHJlbXBsYWNlciBsJiMwMzk7JmVhY3V0ZTtkaXRldXIgV1lTSVdZRywgZXQgcGVybWV0dHJlIGRlIHZpc3VhbGlzZXItJmVhY3V0ZTtkaXRlciBsZXMgZ2FiYXJpdHMsIGZldWlsbGVzIGRlIHN0eWxlLiAoVW5pcXVlbWVudCBwb3VyIHZlcnNpb24gQ01TTVMgMS4xIG91IHBsdXMpDQo8YnIvPjxici8+DQo8c3Ryb25nPkNvbW1lbnQgbCYjMDM5O3V0aWxpc2VyJm5ic3A7Pzwvc3Ryb25nPjxici8+DQpJbCB2b3VzIHN1ZmZpdCBkZSBsJiMwMzk7aW5zdGFsbGVyLCBldCBkYW5zICZxdW90O01lcyBwciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIC8gUHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcyBkZSBsJiMwMzk7dXRpbGlzYXRldXImcXVvdDsgY2hvaXNpciBhdmVjIGxlIG1lbnUgZCZlYWN1dGU7cm91bGFudCBDb2RlTWlycm9yIGRhbnMgJnF1b3Q7UyZlYWN1dGU7bGVjdGlvbm5lciBsYSBzeW50YXhlIHN1cmxpZ24mZWFjdXRlO2UmcXVvdDsgZXQvb3UgJmVhY3V0ZTt2ZW50dWVsbGVtZW50IGRhbnMgJnF1b3Q7UyZlYWN1dGU7bGVjdGlvbiBkdSBXWVNJV1lHICZhZ3JhdmU7IHV0aWxpc2VyJnF1b3Q7Lg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuOTU3MzEyMTM2LjEyNzk5NTcyNzEuMTI4MjU2MjQ1NS4xMjgyNjAyODA4LjE3JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI4MjYwMjgwOC4xNy4xNC51dG1jY249KG9yZ2FuaWMpfHV0bWNzcj1nb29nbGV8dXRtY3RyPXRyYW5zbGF0aW9uIGNtc21zfHV0bWNtZD1vcmdhbmljJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE0NjYwNTQ1OTMtMTI3OTk1NzI3MjU5Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3Igc3ludGFrc2ZyZW1oZXZpbmdzcmVkaWdlcmVyJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQ29kZU1pcnJvciBtb2R1bGVuIGJsZSBpbnN0YWxsZXJ0JzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnRHUgdHJlbmdlciAmIzAzOTslcyYjMDM5OyB0aWxsYXRlbHNlIGZvciAmYXJpbmc7IHV0ZiZvc2xhc2g7cmUgZGVubmUgZnVua3Nqb25lbi4nOwokbGFuZ1snc2V0dGluZ3N0YWInXSA9ICdJbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ0xhZ3JlIGlubnN0aWxsaW5nZXInOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0lubnN0aWxsaW5nZXIgbGFncmV0JzsKJGxhbmdbJ2h0bWx0ZXN0J10gPSAnSFRNTCBzeW50YWtzIHRlc3QnOwokbGFuZ1snY3NzdGVzdCddID0gJ0NTUyBzeW50YWtzIHRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUCBzeW50YWtzIHRlc3QnOwokbGFuZ1snanN0ZXN0J10gPSAnSmF2YVNjcmlwdCBzeW50YWtzdGVzdCc7CiRsYW5nWydleGFtcGxlc3ludGF4J10gPSAnU3ludGFrcyAmYXJpbmc7IHRlc3RlIG1lZCc7CiRsYW5nWydjaGFuZ2UnXSA9ICdFbmRyZS4uLic7CiRsYW5nWydzaG93bGluZW51bWJlcnMnXSA9ICdWaXMgbGluamVudW1tZXInOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnQnJ5dCBsYW5nZSBsaW5qZXInOwokbGFuZ1snYXV0b21hdGNocGFyZW5zJ10gPSAnQXV0b21hdGlza2UgcGFyYW50ZXNlcic7CiRsYW5nWydoZWxwJ10gPSAnPHN0cm9uZz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9zdHJvbmc+DQo8YnIvPg0KVGhlIENvZGVNaXJyb3IgbW9kdWxlIGFsbG93cyB5b3UgdG8gZWRpdCBjb250ZW50LCB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzIHVzaW5nIGEgc3ludGF4aGlnaGxpZ2h0aW5nIGVkaXRvciBpbnNpZGUgeW91ciBicm93c2VyLg0KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykNCjxici8+PGJyLz4NCjxzdHJvbmc+SG93IGRvIEkgdXNlIHRoaXMgbW9kdWxlPzwvc3Ryb25nPg0KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuDQpzZWxlY3QgQ29kZUFyZWEgYm90aCBhcyBhIFdZU0lXWUcgYW5kIGFzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IuJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI3OTkyMjI4Mi4zMDM5LjcwLnV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9pbmRleC5waHAnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNzkwNTI2MjMwODQxMTAxMDAuMTIxMDQyMzU3Ny4xMjgwNDQwOTM5LjEyODA0NDI5MDEuMzA3Mic7CiRsYW5nWydxY2EnXSA9ICcxMjEwOTcxNjkwLTI3MzA4MDczLTgxOTUyODMyJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMi4xMC4xMjgwNDQyOTAxJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3IgU3ludGF4aGlnaGxpZ2h0aW5nIEVkaXRvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0RlIENvZGVNaXJyb3IgTW9kdWxlIGlzIGdlJml1bWw7bnN0YWxsZWVyZCc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ1UgaGVlZnQgJiMwMzk7JXMmIzAzOTsgcmVjaHRlbiBub2RpZyBvbSBkZXplIGZ1bmN0aWUgdGUgZ2VicnVpa2VuLic7CiRsYW5nWydzZXR0aW5nc3RhYiddID0gJ0luc3RlbGxpbmdlbic7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdJbnN0ZWxsaW5nZW4gb3BzbGFhbic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSW5zdGVsbGluZ2VuIG9wZ2VzbGFnZW4nOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdIVE1MIFN5bnRheCBUZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1MgU3ludGF4IFRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUCBTeW50YXggVGVzdCc7CiRsYW5nWydqc3Rlc3QnXSA9ICdKYXZhU2NyaXB0IFN5bnRheCBUZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YXggb20gbWVlIHRlIHRlc3Rlbic7CiRsYW5nWydjaGFuZ2UnXSA9ICdXaWp6aWcuLi4nOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnUmVnZWxudW1tZXJzIHRvbmVuJzsKJGxhbmdbJ3RleHR3cmFwcGluZyddID0gJ0JyZWVrIGxhbmdlIHJlZ2VscyBhZic7CiRsYW5nWydhdXRvbWF0Y2hwYXJlbnMnXSA9ICdBdXRvbWF0aXNjaCBiaWogZWxrYWFyIGhvcmVuZGUgdGFncyBrbGV1cmVuJzsKJGxhbmdbJ2hlbHAnXSA9ICc8c3Ryb25nPldoYXQgZG9lcyB0aGlzIG1vZHVsZSBkbz8gPC9zdHJvbmc+DQo8YnIvPg0KVGhlIENvZGVNaXJyb3IgbW9kdWxlIGFsbG93cyB5b3UgdG8gZWRpdCBjb250ZW50LCB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzIHVzaW5nIGEgc3ludGF4aGlnaGxpZ2h0aW5nIGVkaXRvciBpbnNpZGUgeW91ciBicm93c2VyLg0KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykNCjxici8+PGJyLz4NCjxzdHJvbmc+SG93IGRvIEkgdXNlIHRoaXMgbW9kdWxlPzwvc3Ryb25nPg0KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuDQpzZWxlY3QgQ29kZUFyZWEgYm90aCBhcyBhIFdZU0lXWUcgYW5kIGFzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IuJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTczODg5NjAzOS4xMjc4ODQwMDAwLjEyODA4NDI0ODguMTI4MDg1OTMxMi44Nic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODA3ODMzNDMuODEuMTYudXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjbj0ocmVmZXJyYWwpfHV0bWNtZD1yZWZlcnJhbHx1dG1jY3Q9L2luZGV4LnBocCc7CiRsYW5nWydxY2EnXSA9ICdQMC04NTQzODcwNDMtMTI3ODg0MDAwMDkxNyc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjIuMTAuMTI4MDg1OTMxMic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0VkaXRvcnVsIENvZGVNaXJyb3IgY3UgZXZpZGVudGlhdG9yIGRlIHNpbnRheGEnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bHVsIENvZGVNaXJyb3IgYSBmb3N0IGluc3RhbGF0IGN1IHN1Y2Nlcyc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ0F2ZXRpIG5ldm9pZSBkZSBwZXJtaXNpdW5lYSAmIzAzOTslcyYjMDM5OyBwZW50cnUgYWNlYXN0YSBmdW5jdGllLic7CiRsYW5nWydzZXR0aW5nc3RhYiddID0gJ1NldGFyaSc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYWx2YXJlIHNldGFyaSc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnU2V0YXJpbGUgYXUgZm9zdCBzYWx2YXRlJzsKJGxhbmdbJ2h0bWx0ZXN0J10gPSAndGVzdCBzaW50YXhhIEhUTUwnOwokbGFuZ1snY3NzdGVzdCddID0gJ3Rlc3Qgc2ludGF4YSBDU1MnOwokbGFuZ1sncGhwdGVzdCddID0gJ3Rlc3Qgc2ludGF4YSBQSFAnOwokbGFuZ1snanN0ZXN0J10gPSAndGVzdCBzaW50YXhhIEphdmFTY3JpcHQnOwokbGFuZ1snZXhhbXBsZXN5bnRheCddID0gJ1N5bnRheCB0byB0ZXN0IGN1JzsKJGxhbmdbJ2NoYW5nZSddID0gJ1NjaGltYmEnOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnQWZpc2FyZSBudW1lcmUgZGUgbGluaWUnOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnU3RyYW5nZSBsaW5paWxlIGx1bmdpJzsKJGxhbmdbJ2F1dG9tYXRjaHBhcmVucyddID0gJ0F1dG9wb3RyaXZpcmUgcGFyYW50ZXplJzsKJGxhbmdbJ2hlbHAnXSA9ICc8c3Ryb25nPkNlIGZhY2UgYWNlc3QgbW9kdWw/PC9zdHJvbmc+DQo8YnIvPg0KTW9kdWx1bCBDb2RlTWlycm9yIHZhIHBlcm1pdGUgc2EgZWRpdGF0aSBjb250aW51dCwgdGVtcGxhdGUtdXJpIHNpIHN0eWxlc2hlZXQtdXJpIGZvbG9zaW5kIHVuIGVkaXRvciBjdSBldmlkZW50aWF0b3IgZGUgc2ludGF4YSBkaW4gYnJvd3Nlci4NClBvYXRlIGlubG9jdWkgYXRhdCB1biBtb2R1bCB3eXNpd3lnLCBzaSBzYSBmdW5jdGlvbmV6ZSBkZSBzaW5lIHN0YXRhdG9yIHBlbnRydSBlZGl0YXJlIGRlIHRlbXBsYXRlL3N0eWxlc2hlZXQuDQo8YnIvPjxici8+DQo8c3Ryb25nPkN1bSBzZSBmb2xvc2VzZSBhY2VzdCBtb2R1bD88L3N0cm9uZz4NCkluc3RhbGF0aS1sLCBzaSBhbGVnZXRpLWwgaW4gcHJlZmVyaW50ZWxlIGRlIHV0aWxpemF0b3IgZGluIGFkbWluLic7CiRsYW5nWydxY2EnXSA9ICdQMC0xODM4MjE1MDQzLTEyODI4MDc1MzM5MzQnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjgyODA3OTcyLjEuMi51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtc21zJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTE5MTg3MzgxNy4xMjgyODA3NTM0LjEyODI4MDc1MzQuMTI4MjgwNzUzNC4xJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4xMi45LjEyODI4MDc2MTUzNjgnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3Igc3ludGF4aGlnaGxpZ2h0aW5nIGVkaXRvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0NvZGVNaXJyb3ItbW9kdWxlbiBpbnN0YWxsZXJhZGVzIHV0YW4gbiZhcmluZztncmEgcHJvYmxlbSc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJyYjMDM5O1lvdSBuZWVkIHRoZSAmIzAzOTslcyYjMDM5OyBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhhdCBmdW5jdGlvbi4nOwokbGFuZ1snc2V0dGluZ3N0YWInXSA9ICdJbnN0JmF1bWw7bGxuaW5nYXInOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnU3BhcmEgaW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdJbnN0JmF1bWw7bGxuaW5nYXIgc3BhcmFkZXMnOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdIVE1MIHN5bnRheCB0ZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1Mgc3ludGF4IHRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUCBzeW50YXggdGVzdCc7CiRsYW5nWydqc3Rlc3QnXSA9ICdKYXZhU2NyaXB0IHN5bnRheCB0ZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YXggYXR0IHRlc3RhIG1lZCc7CiRsYW5nWydjaGFuZ2UnXSA9ICcmQXVtbDtuZHJhLi4uJzsKJGxhbmdbJ3Nob3dsaW5lbnVtYmVycyddID0gJ1Zpc2EgcmFkbnVtbWVyJzsKJGxhbmdbJ3RleHR3cmFwcGluZyddID0gJ1dyYXAgbG9uZyBsaW5lcyc7CiRsYW5nWydoZWxwJ10gPSAnPHN0cm9uZz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9zdHJvbmc+DQo8YnIvPg0KVGhlIENvZGVNaXJyb3IgbW9kdWxlIGFsbG93cyB5b3UgdG8gZWRpdCBjb250ZW50LCB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzIHVzaW5nIGEgc3ludGF4aGlnaGxpZ2h0aW5nIGVkaXRvciBpbnNpZGUgeW91ciBicm93c2VyLg0KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykNCjxici8+PGJyLz4NCjxzdHJvbmc+SG93IGRvIEkgdXNlIHRoaXMgbW9kdWxlPzwvc3Ryb25nPg0KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuDQpzZWxlY3QgQ29kZUFyZWEgYm90aCBhcyBhIFdZU0lXWUcgYW5kIGFzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IuJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTEyMzE4NzIzMjUtMTI2OTM1OTMyMTE5NSc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEyNjk3Nzc2MDMuMTI2OTM1OTM0Mi4xMjY5MzU5MzQyLjEyNjkzNTkzNDIuMSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI2OTM1OTM0Mic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI2OTM1OTM0Mi4xLjEudXRtY3NyPWdvb2dsZXx1dG1jY249KG9yZ2FuaWMpfHV0bWNtZD1vcmdhbmljfHV0bWN0cj1jbXNtcyc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgic2hvd2xpbmVudW1iZXJzIiwxKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgidXNlYXV0b2NvbXBsZXRlIiwxKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgiYXV0b21hdGNocGFyZW5zIiwwKQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAvL1JlbW92ZSBvbGQgc3BlY2lmaWsgcGVybWlzc2lvbgogICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCJtb2RpZnllZGl0YXJlYXNldHRpbmdzIik7Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT4wLjEuOCAtIFVwZGF0ZWQgdG8gQ00gMC45LCBhZGRlZCBvcHRpb24gb24gaG93IHRvIGhhbmRsZSBUQUI8L2xpPgogIDxsaT4wLjEuNyAtIFVwZGF0ZWQgdG8gQ00gMC44MDwvbGk+CiAgPGxpPjAuMS42IC0gVXBkYXRlZCB0byBDTSAwLjcwLCBBZGRlZCBvcHRpb24gdG8gbWF0Y2ggcGFyZW50aGVzaXM8L2xpPgogIDxsaT4wLjEuNSAtIFVwZGF0ZWQgdG8gQ00gMC42NiwgcmVtb3ZlZCBhIHN0cmFuZ2UgXG4gY2hhciBmcm9tIGhlYWRlcm91dHB1dCwgbWFkZSB0YWJiaW5nIHdvcms8L2xpPgogIDxsaT4wLjEuNCAtIEZpeGVkIENQVSBob2dnaW5nIHByb2JsZW1zIGJ5IHJld3JpdGluZyB0ZXN0YXJlYS1jb2RlPC9saT4KICA8bGk+MC4xLjMgLSBVcGRhdGVkIHRvIENNIDAuNjUsIGFkZGVkIG9wdGlvbiB0byB0b2dnbGUgd29yZHdyYXA8L2xpPgogIDxsaT4wLjEuMiAtIFVwZGF0ZWQgdG8gQ00gMC42MzwvbGk+CiAgPGxpPjAuMS4xIC0gVXBkYXRlZCB0byBDTSAwLjYyLCBmaXhlZCBleGFtcGxlcyBhbmQgcHJvYmFibHkgZnVuY3Rpb25hbGl0eSBhcyB3ZWxsPC9saT4KICA8bGk+MC4xLjAgLSBJbml0aWFsIHJlbGVhc2UgPC9saT4KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/codemirrorarea.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCBibGFjazsiPgo8dGV4dGFyZWEgaWQ9InskdGV4dGFyZWFpZH0iIG5hbWU9InskdGV4dGFyZWFuYW1lfSI+eyRjb250ZW50fTwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3J7JGlkfSA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCd7JHRleHRhcmVhaWR9Jywge2xpdGVyYWx9e3svbGl0ZXJhbH0KICAgIHtpZiAkaGVpZ2h0IT0nJ31oZWlnaHQ6ICJ7JGhlaWdodH0iLAogICAgey9pZn0KICAgIGhlaWdodDogIjM1MHB4IiwKICAgIHBhcnNlcmZpbGU6IHskcGFyc2VyZmlsZX0sCiAgICBzdHlsZXNoZWV0OiB7JGNzc2ZpbGV9LAogICAgbGluZU51bWJlcnM6IHskbGluZW51bWJlcnN9LAogICAgdGV4dFdyYXBwaW5nOiB7JHRleHR3cmFwcGluZ30sCiAgICB0YWJNb2RlIDogInskdGFiaGFuZGxpbmd9IiwKICAgIGluZGVudFVuaXQgOiAyLAogICAgYXV0b01hdGNoUGFyZW5zIDogeyRhdXRvbWF0Y2hwYXJlbnN9LAogICAgcGF0aDogInskcm9vdF91cmx9L21vZHVsZXMvQ29kZU1pcnJvci9jb2RlbWlycm9yL2pzLyIKCiAge2xpdGVyYWx9fSk7ey9saXRlcmFsfQo8L3NjcmlwdD4K]]></data>
	</file>
	<file>
	  <filename>/templates/settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHNob3dsaW5lbnVtYmVyc3RleHR9PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2hvd2xpbmVudW1iZXJzaW5wdXR9PC9wPgoJPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRleHR3cmFwcGluZ3RleHR9PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGV4dHdyYXBwaW5naW5wdXR9PC9wPgoJPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskYXV0b21hdGNocGFyZW5zdGV4dH08L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRhdXRvbWF0Y2hwYXJlbnNpbnB1dH08L3A+Cgk8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGFiaGFuZGxpbmd0ZXh0fTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRhYmhhbmRsaW5naW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
</module>
